Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
AgentSmith-HIDS — Par la technologie Kprobe Système de détection d'intrusion basé sur l'hôte Open Source (HIDS), de E_Bwill. | Kitploit
Outils/GitHubGitHub/ebwi11/agentsmith-hids
Escalade de PrivilègesReconnaissanceSécurité des ConteneursRenseignement sur les MenacesDétection d'IntrusionRéponse aux IncidentsAnalyse DNSArchived
GitHubebwi11/agentsmith-hids

AgentSmith-HIDS

Par la technologie Kprobe Système de détection d'intrusion basé sur l'hôte Open Source (HIDS), de E_Bwill.

Voir le dépôt
602163il y a 5 ansVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

AgentSmith-HIDS

                        --Le nom de ce projet a été inspiré par le film - The Matrix

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

Anglais | 简体中文

CE DÉPÔT EST ANCIEN

VERSION DE PUBLICATION : https://github.com/bytedance/Elkeid

À propos d'AgentSmith-HIDS

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 :

  • Meilleures performances : Les informations nécessaires sont collectées dans la pile noyau pour éviter des actions supplémentaires comme le parcours de '/proc' ; et pour améliorer les performances du transport des données, les données collectées sont transférées via une mémoire partagée au lieu de netlink.
  • Difficile à contourner : La collecte d'informations est assurée par un pilote noyau spécialement conçu, ce qui rend presque impossible le contournement de la détection pour les logiciels malveillants comme les rootkits, qui peuvent délibérément se cacher.
  • Facile à intégrer : AgentSmith-HIDS a été conçu pour s'intégrer à d'autres applications et peut être utilisé non seulement comme outil de sécurité, mais aussi comme bon outil de surveillance, voire comme un bon détecteur de vos actifs. L'agent est capable de collecter les utilisateurs, les fichiers, les processus et les connexions internet pour vous. Imaginez donc lorsque vous l'intégrez à votre CMDB, vous pourriez obtenir une carte complète composée de votre réseau, de vos hôtes, de vos conteneurs et de votre métier (voire des dépendances). Et si vous aviez également un outil d'audit de base de données à portée de main ? La carte pourrait être étendue pour contenir la relation entre votre BD, utilisateur BD, tables, champs, applications, réseau, hôte et conteneurs, etc. En pensant à la possibilité d'intégration avec un système de détection d'intrusion réseau et/ou du renseignement sur les menaces, etc., une traçabilité plus élevée pourrait également être atteinte. Cela ne devient jamais obsolète.
  • Pile noyau + Pile utilisateur : AgentSmith-HIDS fournit également un module de pile utilisateur pour étendre davantage les fonctionnalités lorsqu'il travaille avec le module de pile noyau.

Capacités principales d'AgentSmith-HIDS :

  • Le module de pile noyau accroche les comportements execve, connect, injection de processus, création de fichier, requête DNS, chargement LKM via Kprobe, et est également capable de surveiller les conteneurs en étant compatible avec les espaces de noms Linux.
  • Le module de pile utilisateur utilise des fonctions de détection intégrées incluant les requêtes de Liste des utilisateurs, Liste des ports d'écoute, Liste des RPM système, Tâches planifiées
  • AntiRootkit, De : Tyton, pour l'instant ajoute les fonctionnalités PROC_FILE_HOOK, SYSCALL_HOOK, LKM_HIDDEN, INTERRUPTS_HOOK, mais ne fonctionne que sur Kernel > 3.10.
  • Surveillance des changements de cred (sauf sudo/su/sshd)
  • Surveillance des connexions utilisateur

Scénarios/méthodes d'utilisation d'AgentSmith-HIDS (à ajouter)

  • Comment détecter un reverse shell avec AgentSmith HIDS

À propos de la compatibilité avec la version du noyau

  • Kernel > 2.6.25
  • AntiRootKit > 3.10

À propos de la compatibilité avec les conteneurs

SourceNœud
Hôtenom d'hôte
Dockernom du conteneur
k8snom du pod

Composition d'AgentSmith-HIDS

  • Module du noyau (LKM) Accroche les fonctions clés via Kprobe pour capturer les informations nécessaires.
  • Module utilisateur Collecte les données capturées par le module du noyau, effectue le traitement nécessaire et les envoie à Kafka ; Continue d'envoyer des paquets heartbeat au serveur afin que l'intégrité du processus puisse être identifiée ; Exécute les commandes reçues du serveur.
  • Serveur Agent(Optionnel) Envoie des commandes au module utilisateur et surveille l'état du module utilisateur.

Execve Hook

Réalisé en accrochant sys_execve()/sys_execveat()/compat_sys_execve()/compat_sys_execveat(), exemple :

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

Réalisé en accrochant sys_bind(), exemple :

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

Réalisé en accrochant tcp_v4_connect()/tcp_v6_connect()/ip4_datagram_connect()/ip6_datagram_connect(), exemple :

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

Réalisé en accrochant udp_recvmsg()/udpv6_recvmsg(), exemple :

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

Réalisé en accrochant security_inode_create(), exemple :

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

Réalisé en accrochant sys_ptrace(), exemple :

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

Réalisé en accrochant load_module(), exemple :

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

Réalisé en accrochant commit_creds(),exemple :

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"
}

Alerte de connexion utilisateur

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"
}

Alerte d'accrochage de fichier PROC

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

Alerte d'accrochage d'appel système

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"
}

Alerte LKM caché

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

Alerte d'accrochage d'interruptions

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"
}

À propos des performances d'AgentSmith-HIDS

Environnement de test (VM) :

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

Charge de test :

ltp -f syscalls

Résultat du test (1 min) :

Données de test originales :

Benchmark Data

Test cyclictest

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

Désinstaller Smith :

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

Installer 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 fois

Installer Smith :

Temps utilisateur moyen (s)Temps système moyen (s)
22.32914.885

Désinstaller Smith :

Temps utilisateur moyen (s)Temps système moyen (s)
22.27114.395

Documents pour le déploiement et les tests :

Quick Start

Remerciements spéciaux (sans ordre particulier)

yuzunzhi

hapood

HF-Daniel

smcdef

WeChat du développeur

Chaîne WeChat de '灾难控制局'

Nous fournirons constamment des informations sur les fonctionnalités d'AgentSmith-HIDS via cette chaîne, un bon endroit pour recevoir les dernières nouvelles :)

License

Le module noyau d'AgentSmith-HIDS est distribué sous la licence GNU GPLv2.

Télécharger l’outil
Hook HandlerDélai moyen (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