
시스템 콜 후킹 탐지를 위한 리눅스 커널 무결성 모니터
ksentinel은 중요 커널 함수와 시스템 콜 테이블의 무단 수정을 모니터링합니다. ftrace 훅, kprobes, 시스템 콜 테이블 하이재킹 등 대부분의 루트킷이 표적으로 삼는 일반적인 시스템 콜을 탐지합니다.
참고: ksentinel은 초기 버전입니다. 향후 커밋에서 더 많은 개선이 이루어질 예정입니다.
VFS 계층:
네트워크 스택:
자격 증명:
모듈 시스템:
추적 인프라:
접두사 매칭을 통해 500개 이상의 추가 시스템 콜 래퍼 포함.
make
컴파일 중에 임의의 32자 잠금 해제 키가 생성되어 표시됩니다. 즉시 기록해 두십시오. 이 키는 컴파일된 모듈에 내장되며 외부에 저장되지 않습니다.
언로드 방지 보호가 활성화된 경우 안전하게 보관하십시오.
sudo make install
모듈은 lsmod에서 숨김 상태로 로드되며 기본적으로 언로드 방지 보호가 활성화됩니다.
sudo insmod ksentinel.ko
sudo ./ksentinel-manager.sh load # 모듈 로드
sudo ./ksentinel-manager.sh status # 상태 확인
sudo ./ksentinel-manager.sh watch # 실시간 모니터링
sudo ./ksentinel-manager.sh violations # 알림 확인
dmesg -wT | grep ksentinel
언로드 방지가 활성화된 경우 제거 전에 모듈을 잠금 해제해야 합니다:
echo "your_32char_key" > /proc/.ksctl
또는 관리자 사용:
sudo ./ksentinel-manager.sh unlock
sudo rmmod ksentinel
사용자 정의 파라미터 예시:
sudo insmod ksentinel.ko period_ms=5000 anti_unload=false
ksentinel은 period_ms 파라미터에 따라 주기적으로 무결성 검사를 수행합니다.
간격이 짧을수록 탐지 속도는 빨라지지만 CPU 사용량이 증가합니다. 기본 간격(2000ms)은 최신 시스템에 미치는 영향이 미미합니다.
ksentinel: [CHANGE - HOOK PATTERN] sys_getdents64 @ 0xffffffff81234567
baseline=1234567890abcdef current=fedcba0987654321
bytes: e9 ab cd ef 12 90 90 90 ...
flags: JMP/CALL_DETECTED ENDBR64_PREFIX
ksentinel: [SCT HOOK] syscall[78] expected=0xffffffff81111111 got=0xffffffffa0222222 (fake_getdents+0x0)
ksentinel: [LSTAR TAMPERED] baseline=0xffffffff81800000 now=0xffffffffa0300000 (evil_syscall_entry+0x0)
ksentinel은 다음이 수행한 수정을 탐지할 수 있습니다:
탐지는 루트킷보다 먼저 ksentinel을 로드했는지에 따라 달라집니다.
커널 설정:
지원되는 커널:
커널 설정 확인:
grep -E "KALLSYMS|KPROBES" /boot/config-$(uname -r)
모듈이 언로드 방지 보호와 함께 숨겨져 있습니다. 먼저 잠금 해제하십시오:
sudo ./ksentinel-manager.sh unlock
make clean # 빌드 아티팩트 정리
make # 모듈 컴파일
make install # 모듈 로드
make uninstall # 모듈 언로드
기여를 환영합니다. 코드 스타일을 유지하고 새로운 기능에 대한 테스트를 추가해주세요.
GPL-2.0-only
이 프로그램은 GPL 버전 2.0에 따라 라이선스가 부여된 자유 소프트웨어입니다. 모든 수정 사항은 원저작자에 대한 표시를 유지하고 동일한 라이선스로 배포되어야 합니다.
전체 조건은 LICENSE 파일을 참조하십시오.
MatheuZSecurity
루트킷 연구자 커뮤니티: https://discord.gg/66N5ZQppU7
이 도구는 보안 연구 및 시스템 관리를 위한 것입니다. 책임감 있게 사용하십시오. 저자는 이 소프트웨어의 오용이나 손해에 대해 책임을 지지 않습니다.
| 파라미터 | 타입 | 기본값 | 설명 |
|---|
| period_ms | uint | 2000 | 무결성 검사 간격 (밀리초) |
| sym_prefixes | string | "sys_,x64_sys,do_sys,ksys_" | 모니터링할 심볼 접두사 (쉼표로 구분) |
| extra_syms | string | "" | 추가로 감시할 특정 심볼 |
| anti_unload | bool | true | 언로드 방지 보호 활성화 |