Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
AgentSmith-HIDS — Kprobe 기술에 의한 오픈 소스 호스트 기반 침입 탐지 시스템(HIDS), E_Bwill 제공. | Kitploit
도구/GitHubGitHub/ebwi11/agentsmith-hids
Privilege EscalationReconnaissanceContainer SecurityThreat IntelligenceIntrusion DetectionIncident ResponseDNS AnalysisArchived
GitHubebwi11/agentsmith-hids

AgentSmith-HIDS

Kprobe 기술에 의한 오픈 소스 호스트 기반 침입 탐지 시스템(HIDS), E_Bwill 제공.

저장소 보기
60216375년 전Kitploit 검토 완료

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

AgentSmith-HIDS

                        --이 프로젝트의 이름은 영화 매트릭스에서 영감을 받았습니다.

License Project Status: Active – The project has reached a stable, usable state and is being actively developed.

English | 简体中文

이 저장소는 오래되었습니다

릴리스 버전: https://github.com/bytedance/Elkeid

AgentSmith-HIDS 소개

기술적으로 AgentSmith-HIDS는 규칙 엔진 및 탐지 기능이 부족하기 때문에 호스트 기반 침입 탐지 시스템(HIDS)이 아닙니다. 그러나 자체 HIDS 솔루션의 일부로 고성능 '호스트 정보 수집 에이전트'로 사용될 수 있습니다. 이 에이전트가 수집할 수 있는 정보의 포괄성은 이 프로젝트를 개발하는 동안 가장 중요한 지표 중 하나였으므로 커널 스택에서 작동하도록 구축되었으며 사용자 스택에서 작동하는 것과 비교하여 다음과 같은 큰 이점을 얻었습니다:

  • 더 나은 성능 - 필요한 정보가 커널 스택에서 수집되어 '/proc' 탐색과 같은 추가 보충 작업을 피하고, 데이터 전송 성능을 향상시키기 위해 수집된 데이터는 netlink 대신 공유 RAM을 통해 전송됩니다.
  • 우회가 어려움 - 정보 수집은 특별히 설계된 커널 드라이브에 의해 이루어지므로, 의도적으로 숨길 수 있는 rootkit과 같은 악성 소프트웨어에 대한 탐지를 우회하는 것이 거의 불가능합니다.
  • 통합이 용이함 - AgentSmith-HIDS는 다른 애플리케이션과 통합될 수 있도록 구축되었으며, 보안 도구뿐만 아니라 좋은 모니터링 도구, 심지어 자산 탐지기로도 사용할 수 있습니다. 에이전트는 사용자, 파일, 프로세스 및 인터넷 연결을 수집할 수 있습니다. CMDB와 통합하면 네트워크, 호스트, 컨테이너 및 비즈니스(심지어 종속성)로 구성된 포괄적인 지도를 얻을 수 있습니다. 또한 데이터베이스 감사 도구가 있다면 DB, DB 사용자, 테이블, 필드, 애플리케이션, 네트워크, 호스트 및 컨테이너 등 간의 관계를 포함하도록 지도를 확장할 수 있습니다. 네트워크 침입 탐지 시스템 및/또는 위협 인텔리전스 등과의 통합 가능성을 고려하면 더 높은 추적성도 달성할 수 있습니다. 결코 시대에 뒤떨어지지 않습니다.
  • 커널 스택 + 사용자 스택 - AgentSmith-HIDS는 사용자 스택 모듈도 제공하여 커널 스택 모듈과 함께 작업할 때 기능을 더욱 확장할 수 있습니다.

AgentSmith-HIDS의 주요 기능:

  • 커널 스택 모듈은 Kprobe를 통해 execve, connect, process inject, create file, DNS query, load LKM 동작을 후킹하며, Linux namespace와 호환되어 컨테이너 모니터링도 가능합니다.
  • 사용자 스택 모듈은 사용자 목록, 리스닝 포트 목록, 시스템 RPM 목록, 예약 작업 등의 쿼리를 포함한 내장 탐지 기능을 활용합니다.
  • AntiRootkit - 출처: Tyton , 현재 PROC_FILE_HOOK, SYSCALL_HOOK, LKM_HIDDEN, INTERRUPTS_HOOK 기능을 추가했으며, Kernel > 3.10에서만 작동합니다.
  • Cred 변경 모니터링 (sudo/su/sshd 제외)
  • 사용자 로그인 모니터링

AgentSmith-HIDS 사용 시나리오/방법 (추가 예정)

  • AgentSmith HIDS로 리버스 쉘 탐지 방법

커널 버전 호환성

  • Kernel > 2.6.25
  • AntiRootKit > 3.10

컨테이너 호환성

출처노드 이름
호스트hostname
Docker컨테이너 이름
k8spod 이름

AgentSmith-HIDS 구성

  • 커널 스택 모듈 (LKM) Kprobe를 통해 주요 함수를 후킹하여 필요한 정보를 캡처합니다.
  • 사용자 스택 모듈 커널 스택 모듈이 캡처한 데이터를 수집하고, 필요한 처리를 수행하여 Kafka로 전송합니다. 프로세스 무결성을 식별할 수 있도록 서버에 하트비트 패킷을 지속적으로 전송합니다. 서버로부터 수신한 명령을 실행합니다.
  • Agent 서버(선택 사항) 사용자 스택 모듈에 명령을 보내고 사용자 스택 모듈의 상태를 모니터링합니다.

Execve Hook

sys_execve()/sys_execveat()/compat_sys_execve()/compat_sys_execveat() 를 후킹하여 구현됨, 예:

root@kitploit:~
{
    "uid":"0",
    "data_type":"59",
    "run_path":"/tmp",
    "exe":"/opt/ltp/testcases/bin/growfiles",
    "argv":"growfiles -W gf26 -D 0 -b -i 0 -L 60 -u -B 1000b -e 1 -r 128-32768:128 -R 512-64000 -T 4 -f gfsmallio-35861 -d /tmp/ltp-Ujxl8kKsKY ",
    "pid":"35861",
    "ppid":"35711",
    "pgid":"35861",
    "tgid":"35861",
    "comm":"growfiles",
    "nodename":"test",
    "stdin":"/dev/pts/1",
    "stdout":"/dev/pts/1",
    "sessionid":"3",
    "sip":"192.168.165.1",
    "sport":"61726",
    "dip":"192.168.165.128",
    "dport":"22",
    "sa_family":"1",
    "pid_tree":"1(systemd)->1384(sshd)->2175(sshd)->2177(bash)->2193(fish)->35552(runltp)->35711(ltp-pan)->35861(growfiles)",
    "tty_name":"pts1",
    "socket_process_pid":"2175",
    "socket_process_exe":"/usr/sbin/sshd",
    "SSH_CONNECTION":"192.168.165.1 61726 192.168.165.128 22",
    "LD_PRELOAD":"/root/ldpreload/test.so",
    "user":"root",
    "time":"1579575429143",
    "local_ip":"192.168.165.128",
    "hostname":"test",
    "exe_md5":"01272152d4901fd3c2efacab5c0e38e5",
    "socket_process_exe_md5":"686cd72b4339da33bfb6fe8fb94a301f"
}

Bind Hook

sys_bind() 를 후킹하여 구현됨, 예:

root@kitploit:~
{
    "uid":"0",
    "data_type":"49",
    "sa_family":"2",
    "exe":"/usr/bin/python2.7",
    "pid":"109640",
    "ppid":"215496",
    "pgid":"109640",
    "tgid":"109640",
    "comm":"python",
    "nodename":"n225-117-018",
    "sip":"0.0.0.0",
    "sport":"8000",
    "res":"0",
    "sessionid":"30",
    "user":"root",
    "time":"1587540231936",
    "local_ip_str":"10.225.117.18",
    "hostname_str":"n225-117-018",
    "exe_md5":"4f458165a2129ba549f1b6605ee87e74"
}

Connect Hook

tcp_v4_connect()/tcp_v6_connect()/ip4_datagram_connect()/ip6_datagram_connect() 를 후킹하여 구현됨, 예:

root@kitploit:~
{
    "uid":"0",
    "data_type":"42",
    "sa_family":"2",
    "connect_type":"4",
    "dport":"1025",
    "dip":"180.101.49.11",
    "exe":"/usr/bin/ping",
    "pid":"6294",
    "ppid":"1941",
    "pgid":"6294",
    "tgid":"6294",
    "comm":"ping",
    "nodename":"test",
    "sip":"192.168.165.153",
    "sport":"45524",
    "res":"0",
    "sessionid":"1",
    "user":"root",
    "time":"1575721921240",
    "local_ip":"192.168.165.153",
    "hostname":"test",
    "exe_md5":"735ae70b4ceb8707acc40bc5a3d06e04"
}

DNS Query Hook

udp_recvmsg()/udpv6_recvmsg() 를 후킹하여 구현됨, 예:

root@kitploit:~
{
    "uid":"0",
    "data_type":"601",
    "sa_family":"2",
    "dport":"53",
    "dip":"192.168.165.2",
    "exe":"/usr/bin/ping",
    "pid":"6294",
    "ppid":"1941",
    "pgid":"6294",
    "tgid":"6294",
    "comm":"ping",
    "nodename":"test",
    "sip":"192.168.165.153",
    "sport":"53178",
    "qr":"1",
    "opcode":"0",
    "rcode":"0",
    "query":"www.baidu.com",
    "sessionid":"1",
    "user":"root",
    "time":"1575721921240",
    "local_ip":"192.168.165.153",
    "hostname":"test",
    "exe_md5":"39c45487a85e26ce5755a893f7e88293"
}

Create File Hook

security_inode_create() 를 후킹하여 구현됨, 예:

root@kitploit:~
{
    "uid":"0",
    "data_type":"602",
    "exe":"/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.232.b09-0.el7_7.x86_64/jre/bin/java",
    "file_path":"/tmp/kafka-logs/replication-offset-checkpoint.tmp",
    "pid":"3341",
    "ppid":"1",
    "pgid":"2657",
    "tgid":"2659",
    "comm":"kafka-scheduler",
    "nodename":"test",
    "sessionid":"3",
    "user":"root",
    "time":"1575721984257",
    "local_ip":"192.168.165.153",
    "hostname":"test",
    "exe_md5":"215be70a38c3a2e14e09d637c85d5311",
    "create_file_md5":"d41d8cd98f00b204e9800998ecf8427e"
}

Process Inject Hook

sys_ptrace() 를 후킹하여 구현됨, 예:

root@kitploit:~
{
    "uid":"0",
    "data_type":"101",
    "ptrace_request":"4",
    "target_pid":"7402",
    "addr":"00007ffe13011ee6",
    "data":"-a",
    "exe":"/root/ptrace/ptrace",
    "pid":"7401",
    "ppid":"1941",
    "pgid":"7401",
    "tgid":"7401",
    "comm":"ptrace",
    "nodename":"test",
    "sessionid":"1",
    "user":"root",
    "time":"1575722717065",
    "local_ip":"192.168.165.153",
    "hostname":"test",
    "exe_md5":"863293f9fcf1af7afe5797a4b6b7aa0a"
}

Load LKM File Hook

load_module() 를 후킹하여 구현됨, 예:

root@kitploit:~
{
    "uid":"0",
    "data_type":"603",
    "exe":"/usr/bin/kmod",
    "lkm_file":"/root/ptrace/ptrace",
    "pid":"29461",
    "ppid":"9766",
    "pgid":"29461",
    "tgid":"29461",
    "comm":"insmod",
    "nodename":"test",
    "sessionid":"13",
    "user":"root",
    "time":"1577212873791",
    "local_ip":"192.168.165.152",
    "hostname":"test",
    "exe_md5":"0010433ab9105d666b044779f36d6d1e",
    "load_file_md5":"863293f9fcf1af7afe5797a4b6b7aa0a"
}

Cred Change Hook

commit_creds() 를 후킹하여 구현됨, 예:

root@kitploit:~
{
    "uid":"0",
    "data_type":"604",
    "exe":"/tmp/tt",
    "pid":"27737",
    "ppid":"26865",
    "pgid":"27737",
    "tgid":"27737",
    "comm":"tt",
    "old_uid":"1000",
    "nodename":"test",
    "sessionid":"42",
    "user":"root",
    "time":"1578396197131",
    "local_ip":"192.168.165.152",
    "hostname":"test",
    "exe_md5":"d99a695d2dc4b5099383f30964689c55"
}

사용자 로그인 알림

root@kitploit:~
{
    "data_type":"1001",
    "status":"Failed",
    "type":"password",
    "user_exsit":"false",
    "user":"sad",
    "from_ip":"192.168.165.1",
    "port":"63089",
    "processor":"ssh2",
    "time":"1578405483119",
    "local_ip":"192.168.165.128",
    "hostname":"localhost.localdomain"
}

PROC 파일 후크 알림

root@kitploit:~
{
    "uid":"-1",
    "data_type":"700",
    "module_name":"autoipv6",
    "hidden":"0",
    "time":"1578384987766",
    "local_ip":"192.168.165.152",
    "hostname":"test"
}

Syscall 후크 알림

root@kitploit:~
{
    "uid":"-1",
    "data_type":"701",
    "module_name":"diamorphine",
    "hidden":"1",
    "syscall_number":"78",
    "time":"1578384927606",
    "local_ip":"192.168.165.152",
    "hostname":"test"
}

LKM 숨김 알림

root@kitploit:~
{
    "uid":"-1",
    "data_type":"702",
    "module_name":"diamorphine",
    "hidden":"1",
    "time":"1578384927606",
    "local_ip":"192.168.165.152",
    "hostname":"test"
}

인터럽트 후크 알림

root@kitploit:~
{
    "uid":"-1",
    "data_type":"703",
    "module_name":"syshook",
    "hidden":"1",
    "interrupt_number":"2",
    "time":"1578384927606",
    "local_ip":"192.168.165.152",
    "hostname":"test"
}

AgentSmith-HIDS 성능 정보

테스트 환경(VM):

CPUIntel(R) Xeon(R) Platinum 8260 CPU @ 2.40GHz 4Core
RAM8GB
OS/커널Debian9 / 4.14.81.bm.19-amd64

테스트 부하:

ltp -f syscalls

테스트 결과(1분):

원본 테스트 데이터:

Benchmark Data

cyclictest 테스트

cyclictest -p 90 - m -c 0 -i 200 -n -h 100 -q -l 1000000

Smith 제거:

root@kitploit:~
# Total: 000999485
# Min Latencies: 00002
# Avg Latencies: 00007
# Max Latencies: 13905
# Histogram Overflows: 00515

Smith 설치:

root@kitploit:~
# Total: 000999519
# Min Latencies: 00002
# Avg Latencies: 00007
# Max Latencies: 15216
# Histogram Overflows: 00481

time -v /opt/ltp/testcases/bin/execve05 -n 30000

10회

Smith 설치:

평균 사용자 시간(초)평균 시스템 시간(초)
22.32914.885

Smith 제거:

평균 사용자 시간(초)평균 시스템 시간(초)
22.27114.395

배포 및 테스트 문서:

Quick Start

특별 감사(순서 없음)

yuzunzhi

hapood

HF-Daniel

smcdef

개발자 위챗

'灾难控制局' 위챗 채널

이 채널을 통해 AgentSmith-HIDS의 기능에 대한 정보를 지속적으로 제공할 예정이며, 최신 소식을 받을 수 있는 좋은 장소입니다:)

License

AgentSmith-HIDS 커널 모듈은 GNU GPLv2 라이선스 하에 배포됩니다.

도구 다운로드
후크 핸들러평균 지연(us)TP99(us)TP95(us)TP90(us)
connect_entry_handler0.29146.76270.3550.3012
connect_handler2.140618.380112.1027.832
execve_entry_handler5.932013.70349.9088.334
execve_handler6.882626.058415.997612.6260
security_inode_create_entry_handler1.99639.30426.77304.6816
security_inode_create_handler4.211413.21658.837756.534