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

서버에서 chkrootkit, rkhunter, Auditd, AIDE 및 행동 모니터링을 사용하여 Linux 루트킷을 탐지하고 방지하는 방법.
Linux 루트킷 탐지: 서버 보안을 위한 도구와 기법
루트킷은 공격자에게 Linux 시스템에 대한 지속적이고 숨겨진 액세스를 제공합니다. 루트킷은 커널 작업을 조작하고 파일과 프로세스를 숨기며 표준 보안 도구를 회피합니다. 일부는 수년 동안 탐지되지 않았습니다. 단일 도구로는 모든 것을 탐지할 수 없으므로 이를 탐지하려면 계층화된 접근 방식이 필요합니다.
이 게시물에서는 Linux 루트킷의 주요 유형과 이를 검사하는 방법, 기본 스캐너가 놓치는 것을 잡아내는 고급 모니터링 기법에 대해 설명합니다.
Linux 루트킷의 유형
루트킷은 다양한 권한 수준에서 작동하며, 더 깊숙이 숨어 있을수록 찾기가 더 어렵습니다.
사용자 모드 루트킷은 애플리케이션 수준(링 3)에서 실행됩니다. LD_PRELOAD를 사용하여 동적 연결을 탈취하여 악성 라이브러리를 삽입하여 readdir 또는 fopen과 같은 표준 C 라이브러리 함수를 가로채고 사용자 도구에서 파일과 프로세스를 숨깁니다.
커널 모드 루트킷은 LKM(로드 가능한 커널 모듈)으로 로드하여 링 0에서 실행됩니다. 시스템 호출을 가로채고 커널 메모리를 조작하며 자신의 존재를 숨깁니다. 특정 커널 버전에 묶여 있기 때문에 잘못 구성하면 커널 패닉을 일으킬 수 있으며, 아이러니하게도 커널 패닉에 노출될 수 있습니다.
eBPF 기반 루트킷은 확장 버클리 패킷 필터 하위 시스템을 악용하여 기존 모듈을 로드하지 않고 커널 공간에서 실행됩니다. 시스템 호출 후크, 트레이스포인트 또는 LSM 이벤트에 부착됩니다. 표준 LKM 스캐너는 이를 인식하지 못합니다. Boopkit은 이 접근 방식을 사용하여 은밀한 C2 채널을 생성하는 잘 알려진 개념 증명입니다.
io_uring 기반루트킷은 최신 변종입니다. Io_uring 비동기 I/O 인터페이스를 사용하여 작업을 일괄 처리하므로 관찰 가능한 시스템 호출 이벤트가 더 적게 생성됩니다. 실험용 루트킷인 RingReaper는 읽기, 쓰기, 연결과 같은 호출을 조용히 대체하면서 EDR 도구를 회피하는 방법을 보여주었습니다.
| 루트킷 유형 | 권한 수준 | 후킹 방법 | 탐지 난이도 |
|---|---|---|---|
| 사용자 모드 | 링 3(사용자) | LD_PRELOAD, 라이브러리 하이재킹 | 보통 |
| 커널 모드 | 링 0(커널) | 시스콜 테이블, LKM, 인라인 후킹 | 높음 |
| eBPF 기반 | 링 0(커널) | eBPF 프로그램 첨부 | 매우 높음 |
| io_uring 기반 | 사용자/커널 | 비동기 I/O 배칭 | 매우 높음 |
Chkrootkit 및 rkhunter로 스캔하기
Linux 서버에서 루트킷 탐지의 기준이 되는 두 가지 도구는 빠른 스캔을 위한 chkrootkit과 심층 검사를 위한 rkhunter입니다.
chkrootkit
chkrootkit은 중요한 시스템 바이너리(ls, ps, netstat, sshd, ifconfig)에 변조 징후가 있는지 검사하는 셸 스크립트입니다. 또한 무분별한 네트워크 인터페이스와 삭제된 로그도 탐지합니다. 버전 0.59(2026년 1월) 기준, Linux BPFDoor, Syslogk 및 XZ 백도어와 같은 최신 위협을 포함하여 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
자동화된 일일 스캔의 경우, /etc/rkhunter.conf에서 CRON_DAILY_RUN="true"를 설정하고 --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년 실험에서 루트킷 바이너리에 기능에 영향을 미치지 않는 단일 널 바이트만 추가해도 탐지율이 급격히 감소했습니다. 디아모르핀은 심볼 테이블을 제거하는 것만으로 탐지율이 33/66에서 8/64로 떨어졌습니다. 시그니처에만 의존하는 것만으로는 충분하지 않습니다.
행동 분석
행동 분석은 "이 파일이 알려진 루트킷과 일치하는가?"라고 묻는 대신 "이 프로세스가 비정상적인 작업을 수행하고 있는가?"라고 묻습니다 이러한 신호를 모니터링하세요:
- 메서드에 관계없이 커널 모듈을 로드하는
init_module()및finit_module()시스템 호출을 감시하려면 Auditd를 사용하세요. - 은밀한 루트킷 통신을 나타낼 수 있는 31 이상의 신호가 있는
kill()호출을 모니터링하세요. Proc/sys/kernel/tainted에서승인되지 않은 커널 모듈 활동을 확인합니다.Tmp또는/dev/shm에예기치 않은.so파일이 있는지 살펴보세요.- EBPF 활동, 특히
bpf_probe_write_user호출을 추적하세요. BCC와 같은 도구는sys_enter_io_uring_enter와같은 추적 지점을 통해 io_uring 작업을 추적할 수 있습니다.
특히 eBPF 및 io_uring 루트킷의 경우, Tetragon, Falco, Tracee와 같은 런타임 모니터링 도구로 커널 내 활동을 실시간으로 관찰할 수 있습니다.
파일 무결성 모니터링
AIDE (고급 침입 탐지 환경)는 신뢰할 수 있는 시스템 파일의 기준선을 생성하고 변경 사항을 확인합니다. Aide --init으로 초기화한 다음 cron을 통해 aide --check를 예약합니다. 이 도구는 /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 환경이 더 강력한 보안 태세를 제공하는 이유 중 하나입니다.
네트워크를 세분화하세요. 인프라의 일부를 분리하면 한 컴퓨터가 손상된 경우 측면 이동이 제한됩니다.
정기적으로 감사하세요. Lynis와 같은 도구는 공격자가 이를 악용하기 전에 권한 오류 및 잘못된 구성을 식별할 수 있습니다.
결론
루트킷은 눈에 잘 띄지 않게 숨어 있습니다. 증상이 나타났을 때는 이미 시스템이 쉽게 복구할 수 없을 정도로 손상되었을 수 있습니다. 단일 스캐너로 모든 것을 탐지할 수는 없으며 기본적인 시그니처 기반 탐지도 회피하기 쉽습니다.
실질적인 방어는 여러 계층을 결합하는 것입니다:
- 알려진 위협에 대해 chkrootkit 및 rkhunter를 사용한 정기 스캔
- 의심스러운 커널 활동에 대한 감사 규칙 및 행동 모니터링
- AIDE로 파일 무결성을 모니터링하여 무단 변경을 포착합니다
- EBPF 및 io_uring 위협을 위한 Tetragon 또는 Falco와 같은 런타임 도구
- 공격 표면을 줄이기 위한 강화된 액세스 제어, 패치 적용, 네트워크 세분화
가능한 것은 자동화하고, 기준선을 최신으로 유지하며, 신뢰할 수 있는 깨끗한 OS 설치에서 시작하세요.
FDC 서버는 전체 루트 액세스 및 사용자 정의 가능한 커널 구성을 갖춘 전용 및 VPS 호스팅을 제공합니다. 전용 서버 옵션을 살펴보고 강화된 Linux 환경을 구축하세요.

느린 배포나 대역폭 제한에 지치셨나요? FDC 서버는 즉각적인 전용 전원, 글로벌 범위, 모든 규모에 맞게 구축된 유연한 요금제를 제공합니다.
지금 업그레이드하기
Linux 서버 강화 체크리스트
Linux 서버를 강화하기 위한 단계별 체크리스트. SSH, 방화벽, 패치, 파일 권한, SELinux/AppArmor 및 감사 로깅을 다룹니다
15분 소요 - 2026년 5월 8일
iperf3 튜토리얼: Linux 및 Windows에서 네트워크 속도 테스트하기
10분 소요 - 2026년 5월 7일

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