Scan lkm Trojan with chkrootkit on AnNyung
Deprecated! 이 문서는 안녕 리눅스 1.x에 관련된 내용 입니다.
-----------------------------------------------------------
안녕에서 chkrootkit 0.42b 버전으로 체크를 할 경우, lkm trojan 이 설치 되어 있을 수 있다
는 메세지가 나오게 됩니다.
이는 procps 버전이 3.1.14 에서 부터인지는 모르겠지만, thread 에 관련된 부분을 PID 로 취
급을 하지 않아서 발생하는 문제입니다. pthread 상에서는 PID 를 가지고 있는데 3.1.14 에서
는 thread 라서 PID 0 에 종속 시킨 것으로 보여주고 있어서 그런 듯 싶습니다.
아마도 버전 3.1.13 의 changelog 에
Version 3.1.13
ps: can display NPTL threads w/ kernel patch
no seLinux for now (new kernel interface)
라는 내용이 있는데, 이것 때문인 듯 싶습니다. procps 3.1.14 업데이트 이유는 커널 2.6 을
준비하기 위해서 인데, 커널 2.6 에 들어가는 중요한 변화가 바로 native thread 즉, kernel
level 의 thread 지원 때문입니다. 그래서 ntpl 패치가 되어 있는 redhat 9 에서는 bind 9 의
process 가 1개 밖에 보이지 않는 반면에 다른 2.4 배포본들에는 process 가 4개 정도가 보이
게 되는 것 입니다.
실제로, chkrootkit 소스에서 make 를 하신 후에 생성이 되는 chkproc 를 실행 해 보시면 체
크가 가능합니다. 예를 들면,
[root@test chkrootkit-0.42b]# ./chkproc -v
PID 3: not in ps output
PID 4: not in ps output
PID 5: not in ps output
PID 6: not in ps output
PID 7: not in ps output
PID 8: not in ps output
PID 9: not in ps output
PID 10: not in ps output
You have 8 process hidden for ps command
와 같이 결과가 나오고, lsof 로서 체크해 본 결과 PID 3~10 은
ksoftirqd 3 root cwd DIR 8,2 4096 2 /
ksoftirqd 4 root cwd DIR 8,2 4096 2 /
ksoftirqd 5 root cwd DIR 8,2 4096 2 /
ksoftirqd 6 root cwd DIR 8,2 4096 2 /
kswapd 7 root cwd DIR 8,2 4096 2 /
kscand 8 root cwd DIR 8,2 4096 2 /
bdflush 9 root cwd DIR 8,2 4096 2 /
kupdated 10 root cwd DIR 8,2 4096 2 /
과 같습니다. 또한 ps 에서 보면 해당 프로세스들은
root 0 0.0 0.0 0 0 ? SWN Oct17 0:00 [ksoftirqd_CPU0]
root 0 0.0 0.0 0 0 ? SWN Oct17 0:00 [ksoftirqd_CPU1]
root 0 0.0 0.0 0 0 ? SWN Oct17 0:00 [ksoftirqd_CPU2]
root 0 0.0 0.0 0 0 ? SWN Oct17 0:00 [ksoftirqd_CPU3]
root 0 0.0 0.0 0 0 ? SW Oct17 0:05 [kswapd]
root 0 0.3 0.0 0 0 ? SW Oct17 120:37 [kscand]
root 0 0.0 0.0 0 0 ? SW Oct17 0:00 [bdflush]
root 0 0.0 0.0 0 0 ? SW Oct17 0:11 [kupdated]
와 같이 나옵니다. 즉, PID 0 의 init 의 thread 들이 PID 가 0 으로 나와 LKM 으로
의심한다는 메세지가 나온 것입니다.
의심이 가는 시스템은 위의 과정과 같이 테스트를 해 보시면 됩니다.
|