
Par la technologie Kprobe Système de détection d'intrusion basé sur l'hôte Open Source (HIDS), de E_Bwill.
--Le nom de ce projet a été inspiré par le film - The Matrix
Anglais | 简体中文
Techniquement, AgentSmith-HIDS n'est pas un système de détection d'intrusion basé sur l'hôte (HIDS) en raison de l'absence de moteur de règles et de fonction de détection. Cependant, il peut être utilisé comme un « Agent de collecte d'informations sur l'hôte » haute performance dans le cadre de votre propre solution HIDS. L'exhaustivité des informations pouvant être collectées par cet agent a été l'un des critères les plus importants lors du développement de ce projet. C'est pourquoi il a été conçu pour fonctionner dans la pile noyau et offre un avantage considérable par rapport à ceux qui fonctionnent dans la pile utilisateur, comme :
| Source | Nœud |
|---|---|
| Hôte | nom d'hôte |
| Docker | nom du conteneur |
| k8s | nom du pod |
Réalisé en accrochant sys_execve()/sys_execveat()/compat_sys_execve()/compat_sys_execveat(), exemple :
{
"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"
}
Réalisé en accrochant sys_bind(), exemple :
{
"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"
}
Réalisé en accrochant tcp_v4_connect()/tcp_v6_connect()/ip4_datagram_connect()/ip6_datagram_connect(), exemple :
{
"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"
}
Réalisé en accrochant udp_recvmsg()/udpv6_recvmsg(), exemple :