Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
Herramientas/GitHubGitHub/anvilsecure/dawgmon
Herramientas DefensivasAnálisis de VulnerabilidadesAuditoría de ConfiguraciónRespuesta a Incidentes
GitHubanvilsecure/dawgmon

dawgmon

dawg the hallway monitor - monitorea los cambios del sistema operativo y analiza la superficie de ataque introducida al instalar software

Ver Repositorio
55849hace 6 añosRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Sitio web
Compartir

dawgmon - Dawg the Hallway Monitor

RESUMEN

El nombre de esta herramienta está basado en un episodio (temporada 10, episodio 10) de South Park en el que Cartman es Dawg the Hallway Monitor patrullando los pasillos de su escuela. Es una herramienta que ayuda a monitorear los cambios que han ocurrido en un sistema basado en Linux desde la última vez que se ejecutó la herramienta.

Una forma de usarla es mediante algo como el cronjob de ejemplo incluido para ejecutar dawgmon en un intervalo regular y enviar los resultados por correo electrónico al administrador del sistema. Esto puede ayudar a identificar máquinas en las que están ocurriendo cosas nefarias y monitorear quién instala qué y dónde. Tenga en cuenta que cualquier backdoor serio del kernel podrá ocultarse fácilmente de esta herramienta y, como tal, es solo una herramienta más en el arsenal, pero no debe depender de ella para la monitorización completa de seguridad de máquinas Linux. Es solo una opción adicional en la caja de herramientas.

La otra forma en que es útil es generando una línea base antes de instalar un software. Luego, después de instalar dicho software, se ejecuta la herramienta nuevamente y es fácil ver qué cambios se realizaron en el sistema. Un ejemplo después de establecer una línea base y luego instalar virtualbox en una máquina podría dar algo como esto:

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

Lo anterior ayuda ahora a realizar una revisión de seguridad exhaustiva de virtualbox. Los binarios suid instalados son puntos de entrada obvios y los servicios en ejecución son interesantes.

Otro ejemplo de ejecución que detecta correctamente la apertura y cierre de puertos 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
# 

La herramienta no está diseñada para una precisión absoluta. Hay recomendaciones muy serias de no confiar en la salida de GNU core-utils como ls para la entrada de herramientas. En otras palabras; raramente se deberían construir herramientas para analizar y depender de este tipo de salida, ya que puede cambiar en cualquier momento. Realísticamente, la salida de estas herramientas es relativamente estable ya que muchas personas y herramientas automáticas ya dependen de sus salidas para todo tipo de propósitos.

Sin embargo, la compensación para dawgmon es la siguiente; necesitaríamos implementar mucha lógica para hacer la monitorización del sistema de archivos por nuestra cuenta, construir binarios complejos que incluyan bibliotecas para analizar y monitorear dispositivos de bloque, las interfaces de red y demás. Esto también haría que la herramienta sea mucho más compleja y menos mantenible. En proyectos actuales se puede agregar un nuevo comando incluyendo detección de cambios en muy poco tiempo, ya que la herramienta principal dawgmon ya se encarga del almacenamiento en caché, la ejecución del comando y luego suministra la salida anterior y actual al ejecutar una comparación con una implementación de comando. Esto significa que en proyectos con limitaciones de tiempo se puede agregar muy rápidamente un nuevo comando y ejecutar análisis que incluyan esos nuevos comandos.

Se puede agregar un comando simplemente heredando de la clase Command. Esta clase está definida en commands/__init__.py. Ese archivo también contiene la lista maestra de comandos (y el orden en que se ejecutan al hacer un análisis completo). Luego, las propiedades como name, shell, command y desc deberán establecerse y se deberán implementar dos métodos: parse() y compare(). Se incluyen suficientes comandos para tener una buena idea de cómo implementar y agregar nuevos.

USO

Para mejores resultados ejecute la herramienta como root. Para ayuda escriba -h/--help y para información de versión escriba -v/--version.

Siempre se debe especificar una acción principal. Estas acciones son:

  • -A: analizar el sistema
  • -C: comparar entradas de caché
  • -E: listar comandos disponibles
  • -L: listar entradas de caché
root@kitploit:~
# ejecuta un análisis
dawgmon -A

# ejecuta un análisis pero solo con unos pocos comandos
dawgmon -A -e list_suids -e list_tcpudp_ports

# muestra la lista de comandos disponibles
dawgmon -E

# muestra las entradas de caché disponibles para comparación
dawgmon -L

# comparar la entrada de caché antigua 3 con la nueva entrada de caché 5
dawgmon -C 3 5

Opciones adicionales para ayudar con el análisis son:

  • -d: mostrar salida de depuración
  • -e: ejecutar un comando específico (se puede usar múltiples veces)
  • -f: forzar la ejecución sin advertencia sobre ejecución como root
  • -g: colorear la salida
  • -l: ubicación de la base de datos de caché a usar
  • -m: cantidad máxima de entradas de caché permitidas en la caché (si la caché tiene más entradas que esta cantidad, truncará la base de datos)
  • -t: no mostrar información de marca de tiempo por anomalía detectada.

Para más información de uso ejecute la herramienta con -h.

LIMITACIONES

La herramienta analiza la salida de herramientas de línea de comandos y depende de opciones específicas de GNU core-utils para parte de ello. No hay una razón específica por la que esta herramienta y las implementaciones de comandos no puedan ser portadas rápidamente a otros sistemas operativos como los BSD, pero actualmente no se realiza detección del sistema operativo ni se clasifican los comandos según el soporte del sistema operativo. Eso tendría que implementarse primero.

En cuanto a la búsqueda de pipes, sockets UNIX, archivos en /boot, /etc y más, se debe tener en cuenta que el uso de -xdev pasado a find significa que no se recorrerán todos los sistemas de archivos montados bajo el directorio de inicio. Esto significa que, por ejemplo, /boot se escaneará correctamente pero /boot/efi podría no serlo. Se deberá utilizar un enfoque más inteligente en el futuro.

Las marcas de tiempo al realizar un análisis actual pueden ser un poco confusas. Por defecto, una marca de tiempo para un mensaje de anomalía de advertencia, normal o de depuración será la marca de tiempo de su momento de generación (como se puede ver en commands/__init__.py). Las anomalías se generan después de que se haya realizado un escaneo completo de la línea de comandos. Por lo tanto, la salida sobre la que funciona esta detección se generó antes y, posteriormente, las marcas de tiempo para anomalías individuales muestran una hora posterior a la hora del escaneo. Al comparar entradas de caché, se utiliza la marca de tiempo del escaneo para mostrar la hora en que ocurrió la detección, ya que eso tiene lógicamente más sentido.

ACERCA DE

Todos los derechos reservados. Copyright (C) 2017-2019 por Anvil Ventures Inc. Para información de licencia, consulte LICENSE. Para más información, contacte a Vincent Berg [email protected]

Para encontrar el código fuente actualizado o contribuir con parches, visite la siguiente URL: https://github.com/anvilventures/dawgmon/

Descargar herramienta