ps와 top 명령의 프로세스를 숨길 수 있는 커널 모듈을 구축하는 방법을 찾고 있습니다. 내가 사용하는 커널은3.13.0. 어떤 커널 데이터 구조를 다루어야 할지 잘 모르겠습니다. 나는 완벽하게 작동하고 추적할 수 없거나 감지하기 어려운 루트킷을 찾는 것이 아닙니다. 단지 하드코딩한 프로세스를 숨기기 시작하고 싶지만 결국에는 그동안 생성된 모든 프로세스를 공격하는 루트킷을 구축할 수 있기를 원합니다. 로드된 모듈.
나는 ps 명령을 추적하기 시작했고 내가 숨기려고 했던 프로세스가 다음과 같다는 것을 발견했습니다.
stat64("/proc/11914", {st_mode=S_IFDIR|0555, st_size=0, ...}) = 0
open("/proc/11914/stat", O_RDONLY) = 6
read(6, "11914 (dummy) S 3184 11914 3184 "..., 1024) = 279
close(6) = 0
open("/proc/11914/status", O_RDONLY) = 6
read(6, "Name:\tdummy\nState:\tS (sleeping)\n"..., 1024) = 807
close(6)
열려고하는 것을보고 폴더를 /proc
숨겨 보았습니다 . 이 폴더를 표시하지 않기 위해 시스템 호출을 /proc/<pid>
하이재킹했지만 분명히 작동하지 않습니다.ls
다음에 무슨 일이 일어날지 잘 모르겠습니다. open()
문자열 일치를 위해 프로세스를 필터링하려고 시도한 경우 syscall이 발견되었는데 이는 정말 나쁜 접근 방식입니다.
어쩌면 내 커널 버전에는 다루기 더 쉬운 구조가 있을 수도 있습니다. 최신 커널이기 때문에 커널 이 task_struct
없고 웹페이지에서 이 작업을 "아주 쉽게" 수행할 수 있다는 내용을 읽었습니다.next_task
prev_task
어떤 제안이 있으십니까?