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

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

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

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

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

Категории

Все категории
Loading categories
Инструменты/GitHubGitHub/anvilsecure/dawgmon
Оборонительные ИнструментыАнализ уязвимостейАудит конфигурацииРеагирование на Инциденты
GitHubanvilsecure/dawgmon

dawgmon

dawg - монитор коридора - отслеживает изменения в операционной системе и анализирует внедряемую поверхность атак при установке программного обеспечения

Репозиторий
558496 лет назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Сайт
Поделиться

dawgmon — Dawg the Hallway Monitor

КРАТКОЕ ОПИСАНИЕ

Название этого инструмента основано на эпизоде (10 сезон, 10 серия) мультсериала «Южный Парк», в котором Картман в роли Доуга — надзирателя коридора — патрулирует коридоры своей школы. Это инструмент, который помогает отслеживать изменения, произошедшие в системе на базе Linux с момента предыдущего запуска.

Один из способов использования — запускать dawgmon через регулярные промежутки времени, например, с помощью прилагаемого примера cronjob, и отправлять результаты системному администратору по электронной почте. Это может помочь выявить машины, на которых происходят нежелательные действия, и отслеживать, кто что и куда устанавливает. Учтите, что серьёзный бэкдор уровня ядра легко сможет скрыться от этого инструмента, поэтому он является лишь одним из дополнительных средств в арсенале и не должен рассматриваться как полноценное средство мониторинга безопасности Linux-машин. Это лишь ещё один вариант в вашем наборе инструментов.

Другой полезный сценарий — создание базового среза перед установкой программного обеспечения, а затем повторный запуск инструмента после установки, чтобы легко увидеть, какие изменения были внесены в систему. Например, после создания базового среза и установки virtualbox на машине результат может выглядеть так:

root@kitploit:~
# ./dawgmon -gfA
1 change detected (0 warnings)            
+ systemd property NNames changed from 259 to 261
# apt install virtualbox-5.1
[...]
# ./dawgmon -gfA
33 changes detected (0 warnings)          
+ size of file /etc/group changed from 937 to 954
+ file /etc/group got modified on 2017-09-14 19:29:51.804811 +0200
+ size of file /etc/group- changed from 934 to 937
+ file /etc/group- got modified on 2017-09-14 19:29:14.000000 +0200
+ file /etc/gshadow got modified on 2017-09-14 19:29:51.812811 +0200
+ size of file /etc/gshadow- changed from 777 to 794
+ size of file /etc/mailcap changed from 40777 to 41063
+ file /etc/mailcap got modified on 2017-09-14 19:29:51.632812 +0200
+ file /etc/systemd/system/multi-user.target.wants/vboxautostart-service.service got created (owner=root, group=root, perm=lrwxrwxrwx, size=49)
+ file /etc/systemd/system/multi-user.target.wants/vboxballoonctrl-service.service got created (owner=root, group=root, perm=lrwxrwxrwx, size=51)
+ file /etc/systemd/system/multi-user.target.wants/vboxdrv.service got created (owner=root, group=root, perm=lrwxrwxrwx, size=35)
+ file /etc/systemd/system/multi-user.target.wants/vboxweb-service.service got created (owner=root, group=root, perm=lrwxrwxrwx, size=43)
+ file /etc/udev/rules.d/60-vboxdrv.rules got created (owner=root, group=root, perm=-rw-r--r--, size=747)
+ group vboxusers added
+ package virtualbox-5.1 is to be installed
+ suid binary /usr/lib/virtualbox/VBoxHeadless got created (owner=root, group=root, perm=-r-s--x--x, size=158304)
+ suid binary /usr/lib/virtualbox/VBoxNetAdpCtl got created (owner=root, group=root, perm=-r-s--x--x, size=23144)
+ suid binary /usr/lib/virtualbox/VBoxNetDHCP got created (owner=root, group=root, perm=-r-s--x--x, size=158304)
+ suid binary /usr/lib/virtualbox/VBoxNetNAT got created (owner=root, group=root, perm=-r-s--x--x, size=158304)
+ suid binary /usr/lib/virtualbox/VBoxSDL got created (owner=root, group=root, perm=-r-s--x--x, size=158296)
+ suid binary /usr/lib/virtualbox/VBoxVolInfo got created (owner=root, group=root, perm=-r-s--x--x, size=10472)
+ suid binary /usr/lib/virtualbox/VirtualBox got created (owner=root, group=root, perm=-r-s--x--x, size=158304)
+ i-node for listening UNIX socket /run/systemd/private changed from 3428734 to 3452848
+ systemd property NInstalledJobs changed from 8392199 to 3238035463
+ systemd property NNames changed from 261 to 263
+ systemd unit file vboxautostart-service.service added
+ systemd unit file vboxballoonctrl-service.service added
+ systemd unit file vboxdrv.service added
+ systemd unit file vboxweb-service.service added
+ systemd unit 'vboxautostart-service.service' added
+ systemd unit 'vboxballoonctrl-service.service' added
+ systemd unit 'vboxdrv.service' added
+ systemd unit 'vboxweb-service.service' added

Приведённый выше вывод помогает провести тщательный анализ безопасности virtualbox. Установленные suid-двоичные файлы являются очевидными точками входа, а запущенные службы представляют интерес.

Ещё один пример запуска, который корректно обнаруживает открытие и закрытие TCP-портов:

root@kitploit:~
# ./dawgmon -gfA
0 changes detected (0 warnings)           
# nc -l -p 4455 &
[1] 12489
# ./dawgmon -gfA
1 change detected (0 warnings)            
+ port 4455 tcp opened
# fg
nc -l -p 4455
^C
# ./dawgmon -gfA
1 change detected (0 warnings)            
+ port 4455 tcp closed
# 

Инструмент не претендует на абсолютную точность. Обычно настоятельно рекомендуется не полагаться на вывод таких утилит из набора GNU coreutils, как ls, для ввода инструментов. Иными словами, редко стоит создавать инструменты, которые разбирают и полагаются на вывод такого типа, поскольку он может постоянно меняться. На практике вывод этих утилит относительно стабилен, так как многие люди и автоматические инструменты уже используют их вывод для самых разных целей.

Однако компромисс для dawgmon заключается в следующем: нам пришлось бы реализовать много логики для самостоятельного мониторинга файловой системы, создавать сложные двоичные файлы, включающие библиотеки для разбора и мониторинга блочных устройств, сетевых интерфейсов и так далее. Это сделало бы инструмент гораздо более сложным и менее поддерживаемым. В текущих проектах можно добавить новую команду вместе с обнаружением изменений за очень короткое время, поскольку основной инструмент dawgmon уже заботится о кэшировании, выполнении команды и последующем предоставлении предыдущего и текущего вывода при выполнении сравнения с реализацией команды. Это означает, что в проектах с ограниченным временем можно очень быстро добавить новую команду и проводить анализ, включающий эти новые команды.

Команду можно добавить, просто унаследовав класс Command. Этот класс определён в commands/__init__.py. Тот же файл содержит основной список команд (и порядок их выполнения при полном анализе). Затем необходимо задать такие свойства, как name, shell, command и desc, и реализовать два метода: parse() и compare(). В комплект включено достаточно команд, чтобы получить хорошее представление о том, как реализовать и добавлять новые.

ИСПОЛЬЗОВАНИЕ

Для наилучших результатов запускайте инструмент от root. Для справки используйте -h/--help, для информации о версии — -v/--version.

Всегда необходимо указывать основное действие. Эти действия:

  • -A: анализ системы
  • -C: сравнение записей кэша
  • -E: вывод списка доступных команд
  • -L: вывод списка записей кэша
root@kitploit:~
# запуск анализа
dawgmon -A

# запуск анализа только с несколькими командами
dawgmon -A -e list_suids -e list_tcpudp_ports

# вывод списка доступных команд
dawgmon -E

# вывод доступных записей кэша для сравнения
dawgmon -L

# сравнение старой записи кэша 3 с новой записью кэша 5
dawgmon -C 3 5

Дополнительные параметры, помогающие при анализе:

  • -d: вывод отладочной информации
  • -e: выполнение конкретной команды (может использоваться несколько раз)
  • -f: принудительный запуск без предупреждения о запуске от root
  • -g: раскрашивать вывод
  • -l: путь к используемой базе данных кэша
  • -m: максимальное количество записей кэша, разрешённое в кэше (если в кэше больше записей, чем это значение, база данных будет усечена)
  • -t: не выводить временные метки для каждого обнаруженного аномального события.

Для получения дополнительной информации об использовании запустите инструмент с параметром -h.

ОГРАНИЧЕНИЯ

Инструмент разбирает вывод утилит командной строки и полагается на определённые опции GNU coreutils. Нет особых причин, по которым этот инструмент и реализации команд не могут быть быстро перенесены на другие операционные системы, такие как BSD, но в настоящее время не производится ни обнаружение операционной системы, ни классификация команд на основе поддержки операционной системы. Это необходимо будет реализовать в первую очередь.

Что касается поиска каналов, UNIX-сокетов, файлов в /boot, /etc и других — следует отметить, что использование -xdev, переданного find, означает, что не все файловые системы, смонтированные в начальном каталоге, будут обойдены. Например, /boot будет корректно просканирован, но /boot/efi — возможно, нет. В будущем здесь необходимо будет применить более сообразительный подход.

Временные метки при текущем анализе могут несколько сбивать с толку. По умолчанию временная метка для предупреждения, нормального или отладочного аномального сообщения — это время его генерации (как показано в commands/__init__.py). Аномалии генерируются после завершения полного сканирования командной строки. Таким образом, вывод, на котором основано это обнаружение, был создан ранее, и, следовательно, временные метки для отдельных аномалий показывают время после момента сканирования. При сравнении записей кэша используется временная метка сканирования для вывода времени, когда произошло обнаружение, так как это логически более осмысленно.

О ПРОЕКТЕ

Все права защищены. Copyright (C) 2017-2019 by Anvil Ventures Inc. Информацию о лицензировании см. в файле LICENSE. Для получения дополнительной информации свяжитесь с Vincent Berg: [email protected]

Обновлённый исходный код или возможность отправить исправления доступны по следующему адресу: https://github.com/anvilventures/dawgmon/

Скачать инструмент