EagleEye - sistema IDS basado en host y de monitoreo de red
Este proyecto necesita mucho trabajo para estar listo para usarse, ya que es mi proyecto de graduación, por lo que no es amigable para el usuario, solo para usuarios experimentados, versión beta, y lo publiqué/lo hice solo con fines educativos.
EagleEye consta de dos partes:
Cliente(Escrito en Golang)
Propósito: Capturar cada paquete en el dispositivo y extraer detalles importantes de protocolos conocidos para finalmente enviar todos los datos recopilados al maestro si está en línea.
Uso: Debe instalarse en cada dispositivo que desee monitorear (ej: dispositivos de empleados para empresas).
Maestro: (Escrito en Python y Bootstrap)
Propósito: Recibir cada paquete enviado por los clientes, mostrarlo organizado en la tabla de monitoreo de la GUI, mostrar información de los dispositivos conectados como el usuario actual del sistema/información del sistema, comparar los datos capturados con los modelos de amenazas ya escritos anteriormente, y finalmente alertar al usuario maestro sobre posibles amenazas de seguridad en la red, como lo haría un sistema IDS típico.
Uso: Debe ejecutarse en un servidor en la misma red que los clientes (ej: un servidor administrado por el departamento de TI o el equipo de hacking azul de la empresa, quizás).
Para más información, necesitará leer sobre los (S)istemas de (D)etección de (I)ntrusiones y sus tipos. Recomiendo la guía de NIST.
Capturas de pantalla
GUI principal
Tabla de monitoreo
Observe que los botones en la tabla le dan la capacidad de exportar la tabla como (CSV, Excel, PDF), copiar los datos de la tabla al portapapeles e imprimir los datos de la tabla si lo desea.
Búsqueda en la tabla de monitoreo
Búsqueda simple
Búsqueda detallada
Como puede ver, la búsqueda aquí le da la capacidad de buscar cualquier cosa representada en la tabla.
Tabla de dispositivos conectados
Cuando un nuevo cliente se conecta al cliente
Información sobre cada cliente
Observe que la tabla se actualiza automáticamente cada 5 segundos o al actualizar la página.
Tabla de amenazas
Cuando se detecta una amenaza
Detalles sobre cualquier amenaza posible detectada + referencia al hacer clic
Notificación de escritorio para amenazas
Observe que la tabla se actualiza automáticamente cada 5 segundos o al actualizar la página.
Instrucciones de instalación
El Cliente
Requisitos
Actualmente solo es compatible con sistemas Windows (Debido a los datos obtenidos del registro, hay que cambiar eso).
Las siguientes instrucciones
Instrucciones de instalación
Asegúrese de tener Golang instalado.
Instale la librería gopacket usando este comando:
go get github.com/google/gopacket
Cambie las siguientes variables en el código según sus necesidades:
Línea57: Cambie la variable url a la URL actual de su Maestro
Línea59: Cambie la variable device a la interfaz de red que desea escuchar, para Windows necesitará este artículo.
Línea66: Cambie la variable filter al filtro que desee para capturar paquetes de red o déjela vacía como está (si desea capturar todos los paquetes). La sintaxis del filtro es bpf, la misma que se usa en la búsqueda de Wireshark; puede aprenderla en esta guía. También dejé algunos ejemplos en los comentarios, por si alguien quiere usarlos.
En CMD, navegue al directorio del cliente, por supuesto.
Ahora puede ejecutar el cliente como un script con este comando: go run main.go
Para compilarlo/construirlo, puede usar el siguiente comando: go build -o client.exe main.go, quizás necesite esta guía.
Si hizo todo esto, salga a vivir, amigo 😆 (Es broma)
El Maestro
Requisitos
Cualquier sistema operativo.
Las siguientes instrucciones, es mucho más fácil que el cliente, no se preocupe ¡LOL!
Instrucciones de instalación
Asegúrese de tener Python 3 instalado (Versión 3.5 y superior) y pip.
En CMD, navegue a la carpeta del maestro y luego instale los requisitos usando este comando: pip install -r requirements.txt o python -m pip install -r requirements.txt
Si está en Windows y la impresión de colores en CMD le importa, ejecute este comando: pip install -r coloring-requirements.txt o python -m pip install -r coloring-requirements.txt
Ahora algunas variables a cambiar según sus necesidades 😆
Línea21: Cambie la variable host_port al puerto en el que desea servir (Predeterminado: 8000)
Línea23: Cambie la variable serve_localhost a True si desea ejecutar el maestro solo en localhost (Predeterminado: True)
Línea24: Cambie la variable view_browser a True si desea que el maestro abra automáticamente la URL de servicio en el navegador (Predeterminado: True)
Ahora puede ejecutar el maestro con python interface.py
Diviértase :)
Lista de tareas pendientes (TODO)
Expandir la GUI (inicio de sesión de usuario, configuraciones...)
Agregar notificaciones por correo y SMS.
Optimizar el uso de la red
Agregar más modelos de amenazas, especialmente los más complicados como los ataques basados en ARP-spoofing.
Agregar informes detallados para la tabla de amenazas de seguridad.
Agregar la capacidad de verificar el estado de cada cliente y cambiarlo si el dispositivo no está activo y no está en línea, digamos, durante 1 hora.
Hacer que el cliente funcione en más plataformas.
Hacer una GUI de configuración para el cliente (Más amigable para el usuario)