Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
AgentSmith-HIDS — Система обнаружения вторжений на уровне хоста (HIDS) с открытым исходным кодом на технологии Kprobe от E_Bwill. | Kitploit
Инструменты/GitHubGitHub/ebwi11/agentsmith-hids
Повышение привилегийРазведкаБезопасность контейнеровРазведка угрозОбнаружение ВторженийРеагирование на ИнцидентыАнализ DNSArchived
GitHubebwi11/agentsmith-hids

AgentSmith-HIDS

Система обнаружения вторжений на уровне хоста (HIDS) с открытым исходным кодом на технологии Kprobe от E_Bwill.

Репозиторий
6021635 лет назадПроверено 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.
  • Сложность обхода — сбор информации осуществляется с помощью специально разработанного драйвера ядра, что делает практически невозможным обход обнаружения для вредоносного ПО, такого как руткиты, которые могут намеренно скрывать себя.
  • Лёгкая интеграция — AgentSmith-HIDS создан для интеграции с другими приложениями и может использоваться не только как инструмент безопасности, но и как хороший инструмент мониторинга или даже как детектор ваших активов. Агент способен собирать для вас информацию о пользователях, файлах, процессах и сетевых подключениях. Представьте, что при интеграции с CMDB вы получите комплексную карту вашей сети, хостов, контейнеров и бизнеса (даже зависимостей). А что, если у вас ещё есть инструмент аудита баз данных? Карту можно расширить, включив в неё взаимосвязи между вашими БД, пользователями БД, таблицами, полями, приложениями, сетью, хостами и контейнерами и т. д. Если подумать о возможности интеграции с системой обнаружения сетевых вторжений и/или Threat Intelligence, можно добиться ещё более высокой трассируемости. Это никогда не устаревает.
  • Стек ядра + пользовательский стек — AgentSmith-HIDS также предоставляет модуль пользовательского стека для дальнейшего расширения функциональности при совместной работе с модулем стека ядра.

Основные возможности AgentSmith-HIDS:

  • Модуль стека ядра перехватывает поведение execve, connect, внедрение процесса, создание файла, DNS-запрос, загрузку LKM через Kprobe, а также способен отслеживать контейнеры благодаря совместимости с пространством имён Linux.
  • Модуль пользовательского стека использует встроенные функции обнаружения, включая запросы списка пользователей, списка прослушиваемых портов, списка RPM-пакетов системы, заданий по расписанию.
  • AntiRootkit — из Tyton , на данный момент добавлены функции PROC_FILE_HOOK, SYSCALL_HOOK, LKM_HIDDEN, INTERRUPTS_HOOK, но работают только на ядре > 3.10.
  • Мониторинг смены учётных данных (кроме sudo/su/sshd)
  • Мониторинг входа пользователей

Сценарии/методы использования AgentSmith-HIDS (будут добавлены)

  • Как обнаружить реверс-шелл с помощью AgentSmith HIDS

О совместимости с версиями ядра

  • Ядро > 2.6.25
  • AntiRootKit > 3.10

О совместимости с контейнерами

ИсточникИмя узла
Хостhostname
Dockerимя контейнера
k8sимя пода

Состав AgentSmith-HIDS

  • Модуль стека ядра (LKM) Перехватывает ключевые функции через Kprobe для захвата необходимой информации.
  • Модуль пользовательского стека Собирает данные, захваченные модулем стека ядра, выполняет необходимую обработку и отправляет их в Kafka; Постоянно отправляет пакеты heartbeat на сервер для идентификации целостности процесса; Выполняет команды, полученные от сервера.
  • Сервер агента (опционально) Отправляет команды модулю пользовательского стека и отслеживает состояние модуля пользовательского стека.

Хук Execve

Реализован перехватом 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

Реализован перехватом 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

Реализован перехватом 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-запроса

Реализован перехватом 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"
}

Хук создания файла

Реализован перехватом 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"
}

Хук внедрения процесса

Реализован перехватом 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"
}

Хук загрузки LKM-модуля

Реализован перехватом 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"
}

Хук смены учётных данных

Реализован перехватом 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"
}

Оповещение о хуке системного вызова

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

Среда тестирования (ВМ):

CPUIntel(R) Xeon(R) Platinum 8260 CPU @ 2.40GHz 4Core
RAM8GB
ОС/ЯдроDebian9 / 4.14.81.bm.19-amd64

Нагрузка тестирования:

ltp -f syscalls

Результат тестирования (1 мин):

Исходные данные тестирования:

Бенчмарк-данные

Тестирование 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

Документы для развёртывания и тестирования:

Быстрый старт

Особая благодарность (без определённого порядка)

yuzunzhi

hapood

HF-Daniel

smcdef

WeChat разработчика

WeChat-канал «Управление катастрофами»

Мы будем постоянно предоставлять информацию о функциях AgentSmith-HIDS через этот канал — отличное место для получения самых свежих новостей :)

Лицензия

Модуль ядра AgentSmith-HIDS распространяется под лицензией GNU GPLv2.

Скачать инструмент
Обработчик хукаСредняя задержка (мкс)TP99 (мкс)TP95 (мкс)TP90 (мкс)
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