Linux 루트킷 탐지: 도구 및 기법
10분 소요 - 2026년 5월 16일

서버에서 chkrootkit, rkhunter, Auditd, AIDE 및 행동 모니터링을 사용하여 Linux 루트킷을 탐지하고 방지하는 방법.
리눅스 루트킷 탐지: 서버 보안을 위한 도구와 기법
루트킷은 공격자에게 리눅스 시스템에 대한 지속적이고 은밀한 접근 권한을 제공합니다. 루트킷은 커널 작동을 조작하고, 파일과 프로세스를 숨기며, 표준 보안 도구를 회피합니다. 일부는 수년 동안 탐지되지 않은 채 남아 있기도 합니다. 단일 도구로는 모든 것을 포착할 수 없기 때문에, 이를 탐지하려면 다층적인 접근 방식이 필요합니다.
이 글에서는 주요 리눅스 루트킷 유형, 탐지 방법, 그리고 기본 스캐너가 놓치는 부분을 포착하는 고급 모니터링 기법에 대해 다룹니다.
리눅스 루트킷의 종류
루트킷은 다양한 권한 수준에서 작동하며, 시스템 깊숙이 자리 잡을수록 탐지하기 어려워집니다.
사용자 모드 루트킷은 애플리케이션 수준(Ring 3)에서 실행됩니다. 이들은 LD_PRELOAD 를 사용하여 표준 C 라이브러리 함수(예: readdir 또는 fopen와 같은 표준 C 라이브러리 함수를 가로채어 사용자 공간 도구에서 파일과 프로세스를 숨깁니다.
커널 모드 루트킷은 로드 가능한 커널 모듈(LKM)로 로드되어 Ring 0에서 실행됩니다. 이들은 시스템 호출을 가로채고, 커널 메모리를 조작하며, 자신의 존재를 숨깁니다. 특정 커널 버전에 종속되어 있기 때문에, 잘못 구성된 루트킷은 커널 패닉을 유발할 수 있으며, 아이러니하게도 이로 인해 루트킷의 존재가 드러나게 됩니다.
eBPF 기반 루트킷은 확장 버클리 패킷 필터(Extended Berkeley Packet Filter) 하위 시스템을 악용하여 기존 모듈을 로드하지 않고 커널 공간에서 실행됩니다. 이들은 시스템 호출 후크, 트레이스포인트 또는 LSM 이벤트에 연결됩니다. 표준 LKM 스캐너로는 이를 탐지할 수 없습니다. Boopkit은 이러한 방식을 사용하여 은밀한 C2 채널을 생성하는 잘 알려진 개념 증명(PoC)입니다.
io_uring 기반 루트킷은 가장 최신의 변종입니다. 이들은 io_uring 비동기 I/O 인터페이스를 사용하여 작업을 일괄 처리함으로써, 감지 가능한 시스템 호출 이벤트를 최소화합니다. 실험용 루트킷인 RingReaper는 이 방식이 다음과 같은 호출을 감지되지 않게 대체할 수 있음을 보여주었습니다 read, write와 같은 호출을 은밀하게 대체하고 connect 와 같은 호출을 은밀하게 대체하면서 EDR 도구를 회피하는 방법을 보여주었습니다.
| 루트킷 유형 | 권한 수준 | 후킹 방법 | 탐지 난이도 |
|---|---|---|---|
| 사용자 모드 | 링 3 (사용자) | LD_PRELOAD, 라이브러리 하이재킹 | 보통 |
| 커널 모드 | 링 0 (커널) | 시스템 호출 테이블, LKM, 인라인 후킹 | 높음 |
| eBPF 기반 | 링 0 (커널) | eBPF 프로그램 연결 | 매우 높음 |
| io_uring 기반 | 사용자/커널 | 비동기 I/O 배치 | 매우 높음 |
chkrootkit 및 rkhunter를 이용한 스캔
리눅스 서버에서 루트킷 탐지의 기본 도구는 두 가지입니다. 빠른 검사를 위한 chkrootkit과 심층 검사를 위한 rkhunter입니다.
chkrootkit
chkrootkit 은 셸 스크립트로, 중요한 시스템 바이너리(ls, ps, netstat, sshd, ifconfig)의 변조 흔적을 검사하는 셸 스크립트입니다. 또한 무차별 수신 모드의 네트워크 인터페이스와 삭제된 로그도 탐지합니다. 버전 0.59(2026년 1월) 기준, Linux BPFDoor, Syslogk, XZ Backdoor와 같은 최신 위협을 포함하여 75개 이상의 루트킷, 웜, LKM을 식별할 수 있습니다.
의심스러운 활동이 발생한 후에는 이 스크립트를 실행하십시오. ifpromisc 구성 요소의 경고와 삭제된 lastlog 또는 wtmp 파일에 대한 경보에 주의를 기울이십시오.
rkhunter
rkhunter 는 더 나아가 시스템 바이너리의 SHA-1 해시를 정상으로 확인된 값과 비교하고, 파일 권한과 숨겨진 파일을 모니터링하며, 시작 구성을 확인하고, 커널 및 네트워크 분석을 수행합니다.
처음부터 올바르게 설정하세요:
# Establish a baseline after a clean install or update
rkhunter --propupd
# Update rootkit definitions
rkhunter --update
# Run a full scan (use --novl on production servers to reduce I/O)
rkhunter --check --enable all
매일 자동으로 스캔을 수행하려면 CRON_DAILY_RUN="true" 다음과 같이 설정하십시오 /etc/rkhunter.conf 를 설정하고 --skip-keypress 와 --report-warnings-only 를 사용하여 깨끗한 출력을 얻으세요. /var/log/rkhunter.log 에서 로그를 검토하고 확인된 오탐을 화이트리스트에 추가하십시오.
LKM 루트킷 탐지
LKM 루트킷은 커널 확장으로 작동하여 시스템 호출을 가로채고 커널 수준에서 프로세스를 숨기기 때문에 특히 위험합니다. lsmod 와 같은 표준 도구로는 이를 탐지할 수 없지만, 이를 찾아낼 수 있는 방법이 있습니다.
출력 결과를 lsmod 출력을 /sys/module/ 목록과 비교해 보십시오. 시스템 로그에서 의심스러운 커널 메시지를 확인하십시오:
# Look for out-of-tree module warnings
sudo dmesg | grep "loading out-of-tree module taints kernel"
# Check for module verification failures
grep "module verification failed" /var/log/syslog
# Run chkrootkit's LKM-specific check
sudo chkrootkit lkm
심지어 lsmod (다이아모르핀과 같은) /proc/modules (예: Diamorphine)을 통해 감지되지 않는 루트킷도 /sys/module/diamorphine/coresize 또는 syslog 경고를 검토함으로써 발견할 수 있습니다.
고급 탐지: 행동 모니터링 및 무결성 검사
정적 스캐너에는 근본적인 약점이 있습니다. 2026년에 진행된 한 실험에서, 기능에는 영향을 미치지 않는 단일 null 바이트를 루트킷 바이너리에 추가하는 것만으로도 탐지율이 급격히 떨어졌습니다. Diamorphine의 탐지율은 심볼 테이블을 제거하는 것만으로 66개 중 33개에서 64개 중 8개로 감소했습니다. 시그니처에만 의존하는 것은 충분하지 않습니다.
행동 분석
"이 파일이 알려진 루트킷과 일치하는가?"라고 묻는 대신, 행동 분석은 "이 프로세스가 비정상적인 행동을 하고 있는가?"라고 묻습니다. 다음 신호들을 모니터링하십시오:
- Auditd를 사용하여 다음을 감시하십시오
init_module()및finit_module()시스템 호출을 모니터링하십시오. 시스템 호출은 방식에 관계없이 커널 모듈을 로드합니다. - 신호가 31을 초과하는
kill()31보다 큰 신호를 가진 호출을 모니터링하십시오. 이는 은밀한 루트킷 통신을 나타낼 수 있습니다. - 무단 커널 모듈 활동 여부를
/proc/sys/kernel/tainted. - 예상치 못한
.so파일이 있는지/tmp또는/dev/shm. - eBPF 활동, 특히
bpf_probe_write_user호출을 주의 깊게 관찰하십시오. BCC와 같은 도구는sys_enter_io_uring_enter.
특히 eBPF 및 io_uring 루트킷의 경우, Tetragon, Falco, Tracee와 같은 런타임 모니터링 도구를 사용하여 커널 내 활동을 실시간으로 관찰할 수 있습니다.
파일 무결성 모니터링
AIDE(Advanced Intrusion Detection Environment)는 신뢰할 수 있는 시스템 파일의 기준선을 생성하고 변경 사항을 확인합니다. 다음을 사용하여 초기화하십시오 aide --init로 초기화한 후 aide --check cron을 통해 예약합니다. 이 도구는 다음과 같은 중요한 바이너리의 체크섬, 권한, 소유권 및 타임스탬프를 추적합니다. /bin/login 및 /usr/bin/sshd.
패키지 수준 검증을 위해서는 debsums (Debian/Ubuntu) 또는 rpm -Va (RHEL/CentOS)를 사용하여 시스템 파일 무결성을 확인할 수 있습니다. 가장 신뢰할 수 있는 결과를 얻으려면, 루트킷이 실행 중인 커널의 보고 내용을 조작할 수 있으므로 신뢰할 수 있는 복구 미디어로 부팅하여 오프라인 상태에서 파일 시스템을 검사하십시오.
또한 지속성 메커니즘도 모니터링해야 합니다. 루트킷은 종종 /etc/ld.so.preload 를 수정하여 공유 객체를 삽입하거나, .bashrc 및 .profile를 변경합니다. 이러한 파일에 대한 정상적인 변경은 드물기 때문에, 여기서 발생하는 경고는 신호 대 잡음 비율이 높습니다.
Auditd를 이용한 자동 모니터링
다음 규칙을 /etc/audit/rules.d/rootkit.rules 의 의심스러운 커널 활동을 실시간으로 탐지하려면 다음 규칙을 추가하십시오:
# Detect unauthorized kernel module loading
-a always,exit -F arch=b64 -S finit_module -S init_module
# Catch unusual high-range kill signals
-a always,exit -F arch=b64 -S kill -F a1>=32
이를 rkhunter의 자동 업데이트와 결합하십시오. UPDATE_MIRRORS=1 와 MIRRORS_MODE=0 를 설정하고, rkhunter --propupd 를 실행하여 기준선을 새로 고치십시오.
루트킷으로부터 서버 강화하기
탐지도 중요하지만 예방이 더 효과적입니다. 대부분의 루트킷은 설치 시 높은 권한이 필요하므로, 공격 표면을 줄이는 것이 실질적인 차이를 만듭니다.
커널과 패키지를 최신 상태로 유지하십시오. 공격자는 패치되지 않은 취약점을 악용하여 권한을 상승시키고 LKM 또는 eBPF 기반 루트킷을 배포합니다. 패치 적용 후에는 다음을 통해 탐지 기준을 업데이트하십시오. rkhunter --propupd.
최소 권한 원칙을 적용하십시오. 사용자나 프로세스에 필요한 것 이상의 접근 권한을 부여하지 마십시오. SELinux나 AppArmor를 사용하여, 프로세스가 침해된 경우에도 무단 작업을 차단하는 강제 접근 제어를 구현하십시오.
부팅 후 커널 모듈 로딩을 비활성화하십시오. 전용 서버에서는 시스템 시작 후 모듈 로딩을 차단함으로써 LKM 루트킷을 완전히 방지할 수 있습니다. 이는 공유 호스팅에서는 불가능하며, 이것이 바로 전용 서버나 VPS 환경이 더 강력한 보안 태세를 제공하는 이유 중 하나입니다.
네트워크를 세분화하십시오. 인프라의 일부를 격리하면 한 대의 시스템이 침해당하더라도 수평 이동(lateral movement)을 제한할 수 있습니다.
정기적으로 감사하십시오. Lynis와 같은 도구를 사용하면 공격자가 이를 악용하기 전에 권한 오류 및 잘못된 구성을 식별할 수 있습니다.
결론
루트킷은 눈에 띄지 않게 숨어 있도록 설계되었습니다. 증상이 나타날 때쯤이면 시스템은 이미 쉽게 복구할 수 없을 정도로 침해되었을 수 있습니다. 모든 것을 탐지하는 단일 스캐너는 없으며, 기본적인 시그니처 기반 탐지는 쉽게 회피할 수 있습니다.
실질적인 방어는 여러 계층을 결합해야 합니다:
- 알려진 위협에 대한 chkrootkit 및 rkhunter를 이용한 정기적인 스캔
- 의심스러운 커널 활동을 감지하기 위한 auditd 규칙 및 행동 모니터링
- AIDE를 이용한 파일 무결성 모니터링을 통해 무단 변경 감지
- eBPF 및 io_uring 위협을 위한 Tetragon 또는 Falco와 같은 런타임 도구
- 공격 표면을 줄이기 위한 강화된 접근 제어, 패치 적용 및 네트워크 분할
가능한 작업은 자동화하고, 기준선을 최신 상태로 유지하며, 신뢰할 수 있는 깨끗한 OS 설치본으로 시작하십시오.
FDC Servers는 완전한 루트 권한과 사용자 정의 가능한 커널 구성을 제공하는 전용 서버 및 VPS 호스팅 서비스를 제공합니다. 강화된 Linux 환경을 구축하기 위해 전용 서버 옵션을 확인해 보세요.

느린 배포나 대역폭 제한에 지치셨나요? FDC 서버는 즉각적인 전용 전원, 글로벌 범위, 모든 규모에 맞게 구축된 유연한 요금제를 제공합니다.
지금 업그레이드하기
Linux 트래픽 제어(tc): 실무 가이드
Tc로 Linux에서 대역폭을 제어하고, 트래픽 우선 순위를 지정하고, 수신 및 발신 형식을 지정하세요. 실제 서버에 대한 HTB, IFB, DSCP 및 fq_codel 구성 작업.
12분 소요 - 2026년 6월 5일
강력하고 계량되지 않는 VPS가 중요한 이유
7분 소요 - 2025년 5월 9일

질문이 있거나 맞춤형 솔루션이 필요하신가요?
유연한 옵션
글로벌 도달 범위
즉시 배포
유연한 옵션
글로벌 도달 범위
즉시 배포