
Herramienta de Análisis de Red

BruteShark es una herramienta de análisis forense de redes (NFAT) que realiza un procesamiento profundo e inspección del tráfico de red (principalmente archivos PCAP, pero también es capaz de capturar en vivo directamente desde una interfaz de red). Incluye: extracción de contraseñas, construcción de un mapa de red, reconstrucción de sesiones TCP, extracción de hashes de contraseñas cifradas e incluso su conversión a un formato de Hashcat para realizar un ataque de fuerza bruta offline.
El objetivo principal del proyecto es proporcionar una solución a los investigadores de seguridad y administradores de red en la tarea de analizar el tráfico de red mientras intentan identificar debilidades que un atacante potencial podría utilizar para obtener acceso a puntos críticos de la red.
Hay dos versiones de BruteShark disponibles, una aplicación basada en GUI (Windows) y una herramienta de línea de comandos (Windows y Linux).
Los diversos proyectos de la solución también se pueden usar de forma independiente como infraestructura para analizar tráfico de red en máquinas Linux o Windows. Para más detalles, consulte la sección de Arquitectura.
El proyecto fue desarrollado en mi tiempo libre para abordar dos de mis principales pasiones: la arquitectura de software y el análisis de datos de red.
¡Me encanta recibir comentarios de los usuarios de BruteShark, tu opinión es importante para mí! No dudes en contactarme en [email protected] o crear un nuevo issue.
¡Por favor, ⭐️ este repositorio si este proyecto te ayudó!
wget https://github.com/odedshimon/BruteShark/releases/latest/download/BruteSharkCli
./BruteSharkCli
Construcción de un mapa de red
https://user-images.githubusercontent.com/18364847/131922221-5714f351-85f7-4490-bec9-8da4339b66b3.mp4
Ejemplo de uso de BruteSharkCli - Extraer múltiples contraseñas y hashes (también disponible en youtube)
https://user-images.githubusercontent.com/18364847/131924013-8b2aa18b-0941-456e-a09d-799902554166.mp4





En general, se recomienda cargar, ejecutar y explorar los resultados.
Se pueden descargar archivos PCAP de ejemplo que contienen escenarios que demuestran todas las capacidades de BruteShark desde aquí.
Ten en cuenta que analizar el tráfico de red es una operación que consume tiempo y recursos, por lo que se recomienda seleccionar solo los módulos necesarios cuando se carguen archivos grandes.
Se debe prestar especial atención a las opciones "Build TCP Sessions" / "Build UDP Sessions".
La GUI es bastante autoexplicativa, simplemente carga los archivos deseados, configura los módulos deseados y presiona el botón de ejecutar.
BruteSharkCli es la versión CLI de BruteShark para usuarios de Linux y Windows. Tiene todas las características de BruteSharkDesktop y está diseñada para operar desde un shell. Como herramienta CLI clásica, funciona obteniendo todos los parámetros relevantes para el procesamiento y luego imprimiendo los resultados en stdout o archivos.
Imprime el menú de ayuda:
BruteSharkCli --help
Obtén credenciales de todos los archivos en un directorio (las contraseñas y hashes se imprimirán en stdout):
BruteSharkCli -m Credentials -d "C:\Users\King\Desktop\Pcap Files"
Obtén credenciales de todos los archivos en un directorio y también exporta los hashes extraídos (si se encuentran) a archivos de entrada de Hashcat.
BruteSharkCli -m Credentials -d C:\Users\King\Desktop\Pcap_Examples -o C:\Users\King\Desktop\Results
Ejecuta múltiples módulos en todos los archivos de un directorio y también exporta todos los resultados.
BruteSharkCli -m Credentials,NetworkMap,FileExtracting -d C:\Users\King\Desktop\Pcap_Examples -o C:\Users\King\Desktop\Results
Captura una interfaz llamada "Wi-Fi", ejecuta múltiples módulos y también exporta todos los resultados a un directorio (los resultados se exportarán solo al detener el sniffer presionando CTRL + C).
BruteSharkCli -l Wi-Fi -m Credentials,NetworkMap,FileExtracting,DNS -o C:\Users\King\Desktop\Test Export
BruteShark es una herramienta modular, diseñada para ser ampliable.
Este módulo es responsable de extraer y codificar nombres de usuario y contraseñas, así como hashes de autenticación. De hecho, este módulo se encarga de actualizar dos tablas de visualización, la tabla de contraseñas y la tabla de hashes. Mientras que los nombres de usuario y contraseñas son de uso directo, los hashes se utilizan con mayor frecuencia en ataques más complejos como pass-the-hash o mediante fuerza bruta para obtener la contraseña. BruteShark está integrado con Hashcat por lo que todos los hashes extraídos se pueden convertir a un archivo de entrada de Hashcat.
| Protocolo | Tipo de Hash | Modo Hascat (-m) |
|---|---|---|
| HTTP | HTTP-Digest | 11400 |
| SMTP\IMAP | CRAM-MD5 | 16400 |
| NTLM (por ej. SMB) | NTLMv1 | 5500 |
| NTLM (por ej. SMB) | NTLMv2 | 5600 |
| Kerberos | AS-REQ etype 23 | 7500 |
| Kerberos | AS-REP etype 23 | 18200 |
| Kerberos | TGS-REP etype 23 | 13100 |
| Kerberos (AES128) | TGS-REP etype 17 | 19600 |
| Kerberos (AES256) | TGS-REP etype 18 | 19700 |
Este módulo es responsable de construir el mapa de red identificando componentes en la red y las conexiones entre ellos. El mapa de red se puede exportar a dos archivos JSON, un archivo contiene todas las conexiones en la red y el otro contiene todos los endpoints y la información relacionada con ellos (como puertos abiertos, asignaciones DNS, etc.). Estos archivos se pueden usar para análisis con herramientas externas como Neo4j.

Este módulo intenta extraer archivos de sesiones UDP / TCP (Por lo tanto, ten en cuenta que para que este módulo sea efectivo, las opciones "Build TCP Sessions" / "Build UDP Sessions" deben estar activadas). Actualmente, este módulo admite técnicas clásicas de forense de file carving mediante el algoritmo "Header-Footer", que es efectivo para archivos con cabecera y pie de archivo conocidos como JPG, PNG, PDF.
Este módulo extrae llamadas VoIP de los protocolos SIP y RTP. Las llamadas extraídas se pueden exportar como archivos de audio sin procesar y se pueden reproducir usando un reproductor de audio adecuado (como Audacity)
Todos los proyectos de BruteShark están implementados usando .Net Core y .Net Standard para soporte moderno y multiplataforma.
La solución está diseñada con una arquitectura de tres capas, que incluye uno o más proyectos en cada capa: DAL, BLL y PL.
La separación entre capas se logra por el hecho de que cada proyecto solo hace referencia a sus propios objetos.
Como capa de acceso a datos, este proyecto es responsable de leer archivos PCAP sin procesar utilizando los controladores adecuados (WinPcap, libpcap) y la increíble biblioteca contenedora SharpPcap de Chris Morgan. Puede analizar una lista de archivos a la vez y proporciona características adicionales como la reconstrucción de todas las sesiones TCP (usando el increíble proyecto TcpRecon).
La capa de lógica de negocio, responsable de analizar la información de la red (paquete, sesión TCP, etc.), implementa un mecanismo conectable. Cada plugin es básicamente una clase que implementa la interfaz IModule. Todos los plugins se cargan mediante reflexión:
private void _initilyzeModulesList()
{
// Crea una instancia para cualquier módulo disponible buscando cada clase que
// implementa IModule.
this._modules = AppDomain.CurrentDomain.GetAssemblies()
.SelectMany(s => s.GetTypes())
.Where(p => typeof(IModule).IsAssignableFrom(p) && !p.IsInterface)
.Select(t => (IModule)Activator.CreateInstance(t))
.ToList();
// Se registra en cada evento del módulo.
foreach(var m in _modules)
{
m.ParsedItemDetected += (s, e) => this.ParsedItemDetected(s, e);
}
}
Aplicación de escritorio para Windows basada en WinForms. Utiliza un proyecto transversal en el sentido de que hace referencia tanto a la capa DAL como a la BLL. Esto se logra componiendo cada una de las capas, registrándose en sus eventos, y cuando se dispara un evento, se convierte el objeto del evento al objeto equivalente de la siguiente capa y se envía a la siguiente capa.
public MainForm()
{
InitializeComponent();
_files = new HashSet<string>();
// Crea los objetos DAL y BLL.
_processor = new PcapProcessor.Processor();
_analyzer = new PcapAnalyzer.Analyzer();
_processor.BuildTcpSessions = true;
// Crea los controles de usuario.
_networkMapUserControl = new NetworkMapUserControl();
_networkMapUserControl.Dock = DockStyle.Fill;
_sessionsExplorerUserControl = new SessionsExplorerUserControl();
_sessionsExplorerUserControl.Dock = DockStyle.Fill;
_hashesUserControl = new HashesUserControl();
_hashesUserControl.Dock = DockStyle.Fill;
_passwordsUserControl = new GenericTableUserControl();
_passwordsUserControl.Dock = DockStyle.Fill;
// Contrata los eventos.
_processor.TcpPacketArived += (s, e) => _analyzer.Analyze(Casting.CastProcessorTcpPacketToAnalyzerTcpPacket(e.Packet));
_processor.TcpSessionArived += (s, e) => _analyzer.Analyze(Casting.CastProcessorTcpSessionToAnalyzerTcpSession(e.TcpSession));
_processor.FileProcessingStarted += (s, e) => SwitchToMainThreadContext(() => OnFileProcessStart(s, e));
_processor.FileProcessingEnded += (s, e) => SwitchToMainThreadContext(() => OnFileProcessEnd(s, e));
_processor.ProcessingPrecentsChanged += (s, e) => SwitchToMainThreadContext(() => OnProcessingPrecentsChanged(s, e));
_analyzer.ParsedItemDetected += (s, e) => SwitchToMainThreadContext(() => OnParsedItemDetected(s, e));
_processor.TcpSessionArived += (s, e) => SwitchToMainThreadContext(() => OnSessionArived(Casting.CastProcessorTcpSessionToBruteSharkDesktopTcpSession(e.TcpSession)));
_processor.ProcessingFinished += (s, e) => SwitchToMainThreadContext(() => OnProcessingFinished(s, e));
InitilizeFilesIconsList();
this.modulesTreeView.ExpandAll();
}
En primer lugar, ¡gracias por tomarte el tiempo de contribuir! BruteShark agradece las contribuciones de todos.
Al contribuir a este repositorio, por favor discute primero el cambio que deseas realizar a través de un issue o un correo electrónico antes de hacer el cambio.