Ⅰ. 리눅스 루트킷(Linux Rootkit) 이란?
단순한 악성코드가 아니라, 공격자가 최고 관리자(root) 권한을 지속적이고 은밀하게 유지하기 위해 사용하는 '은폐 도구 모음(Kit)'입니다. 일반적인 바이러스나 웜이 확산에 목적을 둔다면, 루트킷의 핵심은 '흔적 지우기'와 '제어권 유지'에 있습니다.
이들은 커널 모듈(LKM), 시스템 라이브러리(libc), 또는 바이너리(/bin/ls, /bin/ps)를 변조하여 운영체제의 눈과 귀를 속입니다. 예를 들어, 공격자가 특정 포트를 열어두어도 netstat 명령어가 이를 출력하지 않도록 시스템 콜(System Call) 결과를 가로채기(Hooking) 때문에, 관리자가 일반적인 모니터링 도구로는 침해 사실을 인지하기 어렵습니다. 이는 시스템이 공격자에게 장악된 상태에서도 겉으로는 정상적으로 보이게 만드는 치명적인 위협입니다.
Ⅱ. 리눅스 루트킷(Linux Rootkit) 검사 목적
"시스템이 나에게 거짓말을 하고 있지 않은가?"를 검증하는 과정입니다. 이는 단순한 바이러스 탐지를 넘어 운영체제 신뢰기반(Trusted Computing Base)의 무결성을 확인하는 절차입니다.
지속적 침투의 고리 차단: 루트킷은 백도어의 '경비원' 역할을 합니다. 이를 찾아내지 못하면 취약점을 패치해도 공격자가 숨겨둔 우회로를 통해 언제든 다시 침입할 수 있습니다.
ⅰ. 인프라 신뢰성 보증: 금융, 공공, 엔터프라이즈 환경에서 서버의 무결성은 서비스의 신뢰도와 직결됩니다. 변조된 시스템에서의 데이터 처리는 그 자체로 무결성을 상실한 것과 같습니다.
ⅱ. 컴플라이언스 및 감사 대응: ISMS, ISO 27001 등 주요 보안 인증은 주기적인 시스템 무결성 점검을 요구하며, 루트킷 검사는 이에 대한 기술적 증빙이 됩니다.
Ⅲ. 리눅스 루트킷(Linux Rootkit) 기술적 목표
루트킷 검사는 단순히 '감염 여부(O/X)'를 판단하는 것을 넘어, 구체적으로 다음 항목들을 식별하는 것을 목표로 합니다.
ⅰ. 은닉 프로세스 및 커널 모듈 식별: ps 명령어로 보이지 않으나 실제 메모리에 상주하는 프로세스(/proc 파일시스템 대조) 탐지.
ⅱ. 바이너리 무결성 검증: ls, ps, top, netstat 등 주요 시스템 명령어가 트로이 목마로 교체되었는지 해시(Hash) 비교를 통해 확인.
ⅲ. 시스템 콜 후킹(Syscall Hooking) 탐지: 커널 레벨에서 입출력 제어가 조작되고 있는지 분석.
ⅳ. 비정상 네트워크 포트 및 인터페이스 감지: 스니핑(Sniffing)을 위해 무차별 모드(Promiscuous mode)로 설정된 네트워크 인터페이스 식별.
Ⅳ. 리눅스 루트킷(Linux Rootkit) 주요 점검 도구
| 도구명 | 특징 및 주요 기능 | 적합한 환경 |
| chkrootkit | 신속성 중심. /proc 파일시스템과 ps 명령어의 출력 차이를 비교하여 숨겨진 프로세스를 찾고, 알려진 루트킷 시그니처를 스캔합니다. | 초기 신속 점검, 가벼운 정기 점검 |
| rkhunter (Rootkit Hunter) | 정밀성 중심. 파일의 해시(MD5/SHA) 변경 여부, 루트킷 시그니처, 숨겨진 파일, 의심스러운 문자열, 커널 모듈 등을 포괄적으로 검사합니다. | 정기적인 정밀 보안 감사, 운영 서버 |
| Lynis | 종합 감사 도구. 루트킷 탐지뿐만 아니라 커널 파라미터, 방화벽 설정, 계정 보안 등 시스템 전반의 취약점을 스코어링하여 보여줍니다. | 서버 하드닝(Hardening), 보안 감사 보고서 작성 |
Ⅴ. 리눅스 루트킷(Linux Rootkit) 점검 도구 사용법
ⅰ. rkhunter (Rootkit Hunter)
1) rkhunter (Rootkit Hunter) 이란?
: 가장 널리 쓰이는 정밀 점검 도구입니다. 데이터베이스 갱신을 통해 최신 위협에 대응합니다.
2) rkhunter (Rootkit Hunter) 설치 방법
(RHEL/CentOS) yum install rkhunter
(Ubuntu/Debian) apt install rkhunter
3) DB 업데이트: rkhunter --update (최신 취약점 DB 동기화)
4) 기준 정보 생성: rkhunter --propupd
(현재 시스템 파일들의 해시값을 '정상' 기준점으로 저장. 중요: 설치 직후 또는 패치 직후 실행)
5) 검사 수행: rkhunter --check (상세 로그는 /var/log/rkhunter.log에 기록됨)
ⅱ. chkrootkit
1) chkrootkit 이란?
: 사용이 간편하며, 바이너리 변조 여부를 빠르게 훑어볼 때 유용합니다.
2) chkrootkit 설치 및 실행
| [root@localhost ~] # wget ftp://ftp.pangeia.com.br/pub/seg/pac/chkrootkit.tar.gz [root@localhost ~] # tar xvf chkrootkit.tar.gz [root@localhost ~] # cd chkrootkit-* [root@localhost ~] # make sense [root@localhost ~] # ./chkrootkit |
3) 주요 확인사항: 출력 결과 중 INFECTED 문구가 있는지 중점적으로 확인합니다.
ⅲ. Lynis
1) Lynis 이란?
: 보안 설정 강화를 위한 조언(Suggestion)을 함께 얻을 수 있습니다.
2) 실행: lynis audit system
3) 결과: 시스템의 'Hardening Index(보안 지수)'와 함께 루트킷 의심 항목을 리포트합니다.
Ⅵ. 리눅스 루트킷(Linux Rootkit) 검사 결과 해석 및 대응 시나리오
점검 도구의 경고(Warning)가 모두 해킹을 의미하지는 않습니다. 전문가의 판단이 필요한 단계입니다.
ⅰ. 오탐(False Positive) 배제: 패키지 업데이트로 인해 /bin/ls 등의 해시값이 바뀌면 rkhunter는 경고를 보냅니다. 최근에 yum update나 apt upgrade를 수행했다면 rkhunter --propupd로 기준값을 갱신해야 합니다.
ⅱ. 교차 검증: chkrootkit에서 탐지된 항목이 rkhunter에서는 나오지 않을 수 있습니다. 2개 이상의 도구로 교차 검증하고, unhide, lsof 등의 명령어로 수동 점검을 병행하십시오.
ⅲ. 침해 사고 대응
1) 즉시 격리: 명백한 루트킷(예: 커널 모듈 변조, 숨겨진 백도어 프로세스) 발견 시, 랜선 제거 등으로 네트워크를 즉시 차단 필요
2) 신뢰 불가 원칙: 루트킷에 감염된 시스템의 명령어(ls, ps 등)는 결과를 조작할 수 있습니다. 반드시 정상적인 외부 미디어(USB 부팅 등)로 부팅하여 포렌식을 수행하거나, 가상머신이라면 스냅샷을 통해 분석해야 합니다.
3) 재설치 권장: 커널 레벨 루트킷은 완벽한 제거가 매우 어렵습니다. 데이터 백업 후 OS를 재설치(Wipe & Reinstall)하는 것이 가장 안전한 복구 방법입니다
'시스템(Linux)' 카테고리의 다른 글
| blkid 명령어에 대해 알아보겠습니다. (0) | 2025.12.18 |
|---|---|
| chattr (change attribute) & lsattr (list attribute)명령어에 대해 알아보겠습니다. (0) | 2025.12.15 |
| 리눅스에서 사용되는 SWAP 메모리 추가하는 방법에 대해 알아보겠습니다. (0) | 2025.11.24 |
| Syslog에 대해 알아보겠습니다. (0) | 2025.10.17 |
| 리눅스 시스템에서 파일을 안전하게 삭제하고 복구할 수 있는 도구인 trash-cli 에 대해 알아보겠습니다. (1) | 2025.08.20 |