Disposición de la Interfaz de Wireshark

Body

Una funcionalidad muy útil algunas veces obviadas por un profesional forense, es cambiar la vista de los paneles para estar más confortables en requerimientos específicos. Esto frecuentemente es útil si la pantalla de un sistema tiene un tamaño reducido, o si si se está mostrando algo sobre una pantalla muy grande comparado con una estación de trabajo de único usuario. El profesional puede seleccionar cualquiera de las seis disposiciones para los paneles, como también cual información será mostrada en cada panel. Aunque es un ajuste puramente cosmético, este es un retoque fácil puede frecuentemente proporciona un impulso masivo en la usabilidad.

Asegurarse de al menos se tenga un panel configurado para contener la “Lista de Paquetes”. Tres paneles pueden estar activos al mismo tiempo, y puede distribuir como se muestra en la capa superior. Los tamaños exactos de estos paneles se pueden cambiar según sea necesario una vez se abre un archivo de captura.

Seleccionar “Mostrar Separador de Lista de Paquetes”, causa las entradas de lista de paquetes se separen ligeramente, lo cual puede mejorar la legibilidad a costo de la cantidad de paquetes mostrados en la lista de paquetes.

Seleccionar “Mostrar Definición de Columna” en el menú contextual de columna, el menú contextual de columna se amplía para mostrar el tipo de campo configurado actualmente para la columna. Esto puede ayudar a identificar la columna a seleccionar o modificar.

Seleccionar “Permitir Ordenar la Lista” habilita el operador de orden en todas las columnas. Esto puede evitar se active inadvertidamente un orden, lo cual puede tomar un tiempo considerable para archivos de captura de mayor tamaño.

Seleccionar “Habilitar Coloración al pasar el Mouse” habilita el resaltado del paquete actualmente apuntado en la lista de paquetes. El paquete seleccionado actualmente siempre está resaltado.

Seleccionar “Mostrar Número de Paquete Seleccionado” agrega el número de paquete seleccionado hacia los detalles del archivo de captura en la barra de estado, ocupando algo de espacio en la barra de estado.

Seleccionar “Mostrar Tiempo de Carga del Archivo” agrega el tiempo el cual tomó cargar el archivo de captura en la barra de estado, ocupando algo de espacio en la barra de estado.

Fuentes:

https://www.wireshark.org
https://www.wireshark.org/docs/wsug_html_chunked/ChCustPreferencesSecti…

Ejemplos de Tcpdump para Forense de Redes

Body

A continuación se presentan cuatro ejemplos separados sobre la utilización de Tcpdump.

El primer comando vigila la interfaz de red identificada como “enp0s17”, y muestra el contenido de los primeros 1,000 paquetes hacia la consola. El comando utiliza las siguientes opciones:

$ sudo tcpdump -n -s 100 -A -i enp0s17 -c 1000

-n No resuelve las direcciones IP hacia nombres de hosts o puertos hacia protocolos. Esta opción acelera significativamente tcpdump.
-s 100 Captura los primeros 100 bytes de cada paquete.
-A Envía el contenido de los paquetes (datos de aplicación) hacia la consola en adición hacia los metadatos estándar de los paquetes.
-i enp0s17 Utiliza “enp0s17” como la interfaz de red para captura.
-c 1000 Captura los primeros 1,000 paquetes desde la interfaz de red.

El segundo ejemplo toma el tráfico desde un archivo de entrada y filtra por una dirección IP específica hacia un archivo de salida de nombre “salida.pcap”. Este comando utiliza las siguientes opciones.

$ sudo tcpdump -n -r /tmp/captura.pcap -w /tmp/salida.pcap ‘host 192.168.0.96’

-n No resuelve las direcciones IP hacia nombres de hosts o puertos hacia protocolos. Esta opción acelera significativamente tcpdump.
-r Utiliza el archivo de captura de nombre “captura.pcap” como entrada.
-w Guarda el tráfico filtrado hacia el archivo “salida.pcap”.
‘host 192.168.0.96’ Este es el BPF utilizado por tcpdump para reducir paquetes a aquellos hacia o desde la dirección IP especificada.

El tercer comando captura 14 días de tráfico DNS, y luego finaliza. Cada periodo de 24 horas tiene un archivo separado (24 horas * 60 minutos * 60 segundos = 86400 segundos). BPFs limita la salida a solo tráfico TCP y UDP sobre el puerto 53.

$ sudo tcpdump -n -i enp0s17 -w /tmp/dns-%F.%T,pcap -G 86400 -W 14 ‘(tcp or udp) and port 53’

-n No resuelve las direcciones IP hacia nombres de hosts o puertos hacia protocolos. Esta opción acelera significativamente tcpdump.
-i enp0s17 Utiliza “enp0s17” como la interfaz de red para captura.
-w dns-%F.%T.pcap Guarda el trafico filtrado hacia archivos nombrados con la fecha y hora con la cual inicia.
-G Rota los archivos de salida después de 86,400 segundos.
-W Crea 14 archivos de salida y luego finaliza.
‘(tcp or udp) and port 53’ BPF limita la recolección hacia el puerto 53, sobre ya sea TCP o UDP.

El comando final crea un número infinito de archivos de 100MB cada uno. Estos archivos contiene tráfico desde o hacia una dirección IP particular de interés.

$ sudo tcpdump -n -i enp0s17 -w /tmp/atacante.pcap -C 100 ‘host 192.168.0.96’

-n No resuelve las direcciones IP hacia nombres de hosts o puertos hacia protocolos. Esta opción acelera significativamente tcpdump.
-i enp0s17 Utiliza “enp0s17” como la interfaz de red para captura.
-w Guarda el archivo filtrado hacia el archivo “atacante.pcap”
-C 100 Rota los archivos de salida después de 100MB
‘host 192.168.0.96’ BPF limita la recolección hacia un personaje particularmente turbio.

Fuentes:

https://www.tcpdump.org/
https://www.tcpdump.org/bpfexam/

Opciones útiles de Tcpdump para Forense de Redes

Body

Tcpdump es un poderoso analizador de paquete en linea de comando; y libpcap una librería portable C/C++ para realizar captura de tráfico de red. Tcpdump imprime una descripción del contenido de los paquetes en una interfaz de red, coincidentes con una expresión Booleana.

Aunque el número de trucos con Tcpdump resultaría ingente y demandaría muchas publicaciones, existen algunas opciones las cuales pueden ser particularmente útiles en apoyo al proceso forense de redes y de investigación.

-r Lee paquetes de datos desde un archivo pcap existente, en lugar de una interfaz de red en vivo.

-w Escribe paquetes coincidentes con un BPF proporcionado hacia un archivo pcap en lugar de la pantalla.

-i Especifica la interfaz desde el cual capturar tráfico. Puede ser el nombre especifico de una interfaz como “venet0”, “enp0s3”, o “en1”, o la pseudo interfaz “any” para de manera simultanea capturar desde todas las interfaces disponibles en plataformas soportándola.

-n Previene cualquier resolución DNS. Sin esto, Tcpdump podría realizar una consulta DNS para cada dirección IP observada. Esto es indeseable por muchas razones. Esto añade una significativa cantidad de tráfico de red en el entorno, causando retrasos en el procesamiento y almacenamiento de paquetes. También se tiene el riesgo de alertar un ciberatacantes bajo investigación (o al menos capturar) su tráfico, un suceso preocupante. La opción “-n” es automática cuando se utiliza Tcpdump.

-C Cuando se utiliza con la opción “-w” para escribir paquetes de datos hacia un archivo en lugar de mostrar datos en la consola, esta opción crea un archivo pcap después de alcanzar un tamaño especifico (en megabytes).

-G Similar a la opción “-C”, pero rota el archivo después de un número especifico de segundos; por ejemplo “-G 86400” podría rotar diariamente. Sin embargo esta opción requiere un nombre de archivo especialmente formateado, utilizando marcadores para posición de cadena de formato compatibles con strftime(3). Por ejemplo un nombre de de archivo de salida “output_%F.%T.pcap” resultará en nombres de archivo como “outfile_2024-07-22.12:27:34.pcap”, con el tiempo representando el tiempo de inicio para cada archivo creado. Precaución. Utilizar un nombre de archivo sin cadena de formato resultará en un archivo de salida continuamente siendo sobrescrito.

-W Cuando es utilizado con “-w” y ya sea “-C” o -G“, únicamente el número especifico de archivo serán mantenidas. Con “-C” esto resultará en una secuencia rotativa de un número de archivos solicitado. Con “-G”, tcpdump creará el número solicitado de archivos y luego finalizará.

-F En lugar de especificar el BPF en linea de comando, se carga desde un archivo. Particularmente útil cuando se trabaja con BPFs complejos o comparte BPFs entre un equipo. Por ejemplo es posible se desee conservar el BPF preferido del equipo en un repositorio git para asegurarse todos estén usando los correctos.

Fuentes:

https://www.tcpdump.org/
https://www.tcpdump.org/manpages/tcpdump.1.html

Reducción de Datos con Tcpdump

Body

Otro uso clave de tcpdump es reducir los datos en un archivo pcap existente, a través del uso de un filtro BPF. Esto permitirá mantener la fuente de datos original mientras se obtiene aquello lo cual es relevante, o eliminando aquello lo cual no es relevante.

Si el profesional forense planea cargar datos en Wireshark, la minimización es incluso más importante. Frecuentemente resulta lento cargar grandes archivos en formato pcap utilizando Wireshark, consecuentemente cualquier porción de datos factible de ser eliminado desde un archivo de entrada será de ayuda para disminuir el tiempo de carga. Debido al hecho de no estar modificando el archivo original, siempre será se puede volver a revisar datos adicionales, en caso sea requerido.

$ ls -l /tmp/captura.pcap
$ sudo tcpdump -n -r /tmp/captura.pcap -w /tmp/captura_filtro.pcap ‘not port 443 and not net 192.0.0.0/4 and not port 53’
$ ls -l /tmp/captura_filtro.pcap
$ sudo tcpdump -n -r /tmp/captura.pcap | wc -l
$ sudo tcpdump -n -r /tmp/captura_filtro.pcap | wc -l

En este ejemplo presentado, se elimina tráfico el cual podría no ser útil en Wireshark, puerto TCP 443; probablemente HTTPS, todo el bloque de red 192.0.0.0/24, y el puerto 53; probablemente DNS. Esto reduce el tráfico del archivo pcap original, a únicamente el cual se requiere para el análisis, en aproximadamente el 2%.

Fuentes:

https://www.tcpdump.org/
https://www.tcpdump.org/bpfexam/

Uso Fundamental de tcpdump

Body

Es importante conocer como se utiliza tcpdump para capturar paquetes desde una red. Tcpdump es una analizador de paquetes en linea de comandos, siendo libpcap una librería portable para la captura del tráfico de red. Imprimirá una descripción sobre el contenido de los paquetes sobre una interfaz de red. Lo mostrado será precedido por una marca de tiempo, impreso por defecto en horas minutos, segundos, y fracciones de segundos desde la media noche.

Se procede a ejecutar tcpdump.

$ sudo tcpdump -i enp0s17 -n -s -0

La opción “-n” no consulta DNS o nombres del protocolo. Esto es importante para minimizar la generación de tráfico de red y evitar problemas OPSEC.

La opción “-s 0” captura todos los bytes desde los paquetes. Anotar el “snaplen” por defecto difiere entre las versiones de tcpdump y las plataformas de sistemas operativos.

La opción “-i enp0s17” captura desde el dispositivo “enp0s17”.

Nuevamente se ejecuta tcpdump aplicando un filtro.

$ sudo tcpdump -i enp0s17 -n -s -0 ‘host 2a02:c204:2180:7697::1 and port 443’

‘host 2a02:c204:2180:7697::1 and port 443’ tiene la sintaxis BPF para la especificación de la dirección del host en capa 3 y puerto en capa 4.

Para escribir los datos hacia un archivo local de nombre “captura.pcap”, en lugar de mostrar detalles en la terminar se utiliza la opción “-w”

$ sudo tcpdump -i enp0s17 -n -s -0 ‘host 2a02:c204:2180:7697::1 and port 443’ -w captura.pcap

Anotar aunque este comando especifica la longitud “snapshot” de cero, existen diversas situaciones en las cuales esto pueden conducir hacia una pérdida parcial o completa de algunos paquetes. El CPU y almacenamiento del sistema son los más grandes contribuyentes aquí. Una saturación en el CPU del sistema de captura simplemente descartará tráfico si no puede seguir el ritmo. De manera similar, si la escritura de paquetes es menor comparado con el dispositivo de almacenamiento, el tráfico de red podría exceder la velocidad a la cual los datos de red pueden ser escritos. Asegurarse de probar cualquier solución de captura, en lo referente a velocidad y escala antes de confiar en este para adquisiciones operacionales.

Recordar también para ejecutar tcpdump en modo promiscuo, se requiere privilegios de root o administrativos. El modo promiscuo permite el dispositivo interfaz de red adquirir paquetes no destinados hacia una de sus propias direcciones hardware.

Fuentes:

https://www.tcpdump.org

Formatos pcap Versus pcapng

Body

Debido al formato de archivo “pcap” tiene sus desventajas, la IETF ideó un formato sucesor de nombre “pcapng”, una denominación corta para “pcap next generation”. El formato es completamente diferente comparado con el formato legado, construido alrededor de una estructura ampliable y basada en etiquetas. Los principales beneficios promocionados incluyen:

  • Capacidad de almacenar capturas desde múltiples interfaces (y tipos de interfaces) en el mismo archivo
  • Mejores opciones para la resolución de marcas de tiempo
  • Campos de metadatos expandido incluyendo comentarios, estadísticas, actividad DNS, y más

La opción “-F” del comando “editcap” define el archivo de archivo para el archivo resultante de una captura. Editcap puede escribir el archivo en diversos formatos. El formato por defecto es pcapng.

$ file http_redirects.pcapng
$ editcap -F pcap http_redirects.pcapng http_redirects.pcap
$ file http_redirects.pcap

El nuevo formato de archivo pcapng es utilizado en numerosas herramientas, pero el soporte no es universal. Incluso muchas implementaciones de tcpdump no pueden completamente utilizar el nuevo formato, y los mensajes de error son inútiles para rastrear el problema.

En cambio, es fuertemente recomendado convertir cualquier archivo pcapng hacia el formato legado pcap, antes de manejarlos con una herramienta o proceso no probado. Diversos recursos pueden realizar esto, pero el más fácil está integrado dentro de la utilidad “editcap”, el cual es un componente en línea de comando de la suite Wireshark.

Fuentes:

https://github.com/the-tcpdump-group/libpcap
https://pcapng.com/
https://www.wireshark.org/
https://www.wireshark.org/docs/man-pages/editcap.html

Convertir muchas Marcas de Tiempo UNIX (Unix Epoch)

Body

Convertir marcas de tiempo una por una es totalmente factible, pero esto puede ser realizado más rápido utilizando el comando “awk”, permitiendo convertir todas las marcas de tiempo a la vez.

La función básica de awk es buscar archivos por lineas u otras unidades de texto, conteniendo ciertos patrones. Cuando una linea coincide con uno de los patrones, awk realiza las acciones especificadas sobre la linea. awk continúa procesando las líneas de entrada de esta manera hasta alcanzar el final de los archivos de entrada.

El propósito del comando a continuación detallado, es de manera rápida y eficiente convertir las marcas de tiempo UNIX epoch hacia un formato comprendido por los seres humanos en UTC, dejando el resto de la línea intacta. Se sugiere explorar la sintaxis de “awk” para cambiar el formato de la fecha a la cual sea requerida. El formato presentado permitirá un ordenamiento cronológico debido a la estructura “big endian”.

$ cat access.log | awk ‘{$1=strftime(“%F %T”, $1, 1); print $0}’

Lo interesante de este método es la posibilidad de ser utilizado con el comando “grep”, u otro comando para manipulación de texto utilizado con el propósito de buscar datos en un archivo log de Squid.

$ grep (Direccion IP) access.log | awk ‘{$1=strftime(“%F %T”, $1, 1); print $0}’

Fuentes:

https://wiki.squid-cache.org/SquidFaq/SquidLogs
https://www.gnu.org/software/gawk/manual/gawk.html
https://en.wikipedia.org/wiki/Unix_time

Convertir Tiempo UNIX (UNIX epoch)

Body

El formato del archivo log de Squid incluye marcas de tiempo en un formato no muy amigable de ser leído por los seres humanos; UNIX epoch. Esto contabiliza el tiempo transcurrido desde el 1ero de enero del año 1970 a las 00:00:00 UTC.

Al trabajar con la shell de comandos es factible manipular los archivos log de Squid para propósitos forenses. De esta manera se puede realizar la conversión desde UNIX epoch hacia un formato comprensible por los seres humanos, utilizando el comando “date”.

Para realizar la conversión se precede cualquier marca de tiempo UNIX con el símbolo @. Por defecto el comando mostrará un valor comprensible para los seres humanos correspondiente a la zona del tiempo local.

$ date -d @1125216662.729
$ date -d @1125216698.496

Si se añade la opción “-u” al comando “date”, se mostrará el tiempo en UTC.

$ date -u -d @1125216662.729
$ date -u -d @1125216698.496

Anotación: En algunas versiones del comando “date”, no se comporta de esta manera. Sin embargo la versión incluida en SIFT y otros distribuciones Linux modernas soportan esta sintaxis y caso de uso. Para realizar esto en Apple MacOS por ejemplo, la sintaxis es similar, pero notar los valores de segundos necesita ser truncado hacia un entero.

Fuentes:

https://wiki.squid-cache.org/SquidFaq/SquidLogs
https://en.wikipedia.org/wiki/Unix_time

Servidores Proxy Web para Forense de Redes

Body

Un servidor proxy como su nombre implica, es un servidor el cual está configurado para romper el tráfico de red entre un sistema cliente y un sistema servidor. Aunque los proxys pueden ser utilizados casi con cualquier protocolo o servicio de red, actualmente casi siempre se les identifica asociándolos con tráfico web utilizando los protocolos HTTP y HTTPS.

Originalmente los proxys fueron desarrollados para conservar ancho de banda sobre enlaces de red con baja velocidad. Por ejemplo: Un servidor proxy podría ser desplegado en el frente de cientos de clientes compartiendo una conexión de alta velocidad. En este caso el proxy podría recibir peticiones de los clientes por contenido web desde los sistemas residiendo fuera de la red, luego solicita tal contenido desde el servidor responsable de la URL, y proporciona lo solicitado hacia el sistema cliente. Por lo tanto el proxy podría mantener también una copia del contenido. Luego si otro cliente realiza la misma petición hacia la misma página poco tiempo después, el proxy podría simplemente proporcionar el contenido desde caché, sin solicitar nuevamente la página web utilizando la misma conexión de alta velocidad.

Los servidores proxy pueden también funcionan como “proxys reversos”. En este modelo los servidores proxy generalmente rompen la petición desde un gran número de sistemas cliente hacia un pequeño número de servidores. Frecuentemente un servidor proxy proporcionará balanceo de cargar, compresión, y otras funcionalidades para mejorar el desempeño.

La razón por la cual es importante abarcar los proxys, es a razón de proporcionan una visión muy útil sobre las actividades de red correspondientes a los usuarios y sistemas, con relación a ciertos protocolos como HTTP. Demostrar el uso de un proxy en un escenario típico de investigación, abarca diferentes disciplinas y tópicos sobre forense de redes.

Como con muchos dispositivos de infraestructura, el movimiento de seguridad también identifica valor en los datos residiendo en un servidor proxy. Los administradores de red pueden configurar los servidores proxy para bloquear contenido indeseable , previniendo los sistemas clientes accedan a contenido prohibido. Adicionalmente la naturaleza “portero” de los servidores proxy proporciona dos recursos vitales para los profesionales en seguridad de la información: Contenido de los logs con transacciones, y datos en caché.

Los Logs creados por un servidor proxy web son invaluables para determinar cuales URLs fueron solicitados por los clientes. Esto puede (rápidamente) responder la pregunta: ¿Cuales sistemas internos intentaron acceder hacia sitios conocidos como maliciosos o descargas?. Ya sea se investigue un incidente de phishing o una botnet utilizando HTTP para comando y control, los logs del proxy pueden establecer el alcance de un incidente mucho más rápido, comparado con aquello lo cual un análisis sistema por sistema podría alguna vez hacer.

Además el propósito de un servidor proxy cache es mantener copias de recursos obtenidos por sistemas clientes, significando los equipos de seguridad pueden obtener estos objetos desde cache para un análisis posterior, sin incluso deber poner los dedos en el teclado de un sistema cliente infectado. Si alguna vez se debió examinar un sistema comprometido el cual no contiene una pieza del malware descargado, se apreciará la belleza de esta opción.

La naturaleza proactiva de un servidor proxy, puede también ayudar durante el proceso para respuesta ante incidentes. Un administrador puede reconfigurar una red adecuadamente implementada y un servidor proxy para bloquear tráfico HTTP malicioso. Esta puede ser alcanzado casi instantáneamente desde un punto central para toda la empresa. En una situación donde la velocidad y la decisión es crítica, un servidor proxy proporciona un valor inconmensurable para el proceso de respuesta ante incidentes.

Fuentes:

https://forensics.wiki/proxy_server/

Los más Grandes Retos para un Remedio Efectivo

Body

El equipo para respuesta de incidentes está listo para entrar en acción, pero existen algunos retos para su eficacia. El vagos ímpetu para la investigación; como el hecho de se hayan sucitados cortes en algunos servidores, no es una pista muy específica a seguir por sí misma.

En muchas organizaciones, los equipos para respuesta de incidentes experimentan los más grandes retos son el tiempo, alcance, y escala. Aunque casi siempre se está bajo la obligación del tiempo para cumplir las tareas, esto es agravado por un necesidad fundamental de la precisión, algunas veces hasta un nivel pedante. La práctica de forense digital y respuesta ante incidentes después de to, no es algo lo cual permita adivinar o realizar afirmaciones infundadas.

Sin embargo, el gran tamaño de muchos entornos presenta un reto significativo también. Definir el alcance de un compromiso u otro incidente a solo 10 o 15 sistemas involucrados es crítico, pero inconfundiblemente difícil cuando el entorno varia con rangos de cientos o miles de sistemas y usuarios. Incluso con un perfecto conocimiento del entorno y herramientas confiables, completar la definición del alcance puede tomar días o semanas, sí no más. Complica este factor el hecho de muchas herramientas simplemente no pueden operar a gran escala, requiriendo el equipo para respuesta de incidentes segmente sus operaciones hacia un tamaño manejable, lo cual linealmente incrementa la complejidad de las operación del equipo para respuesta de incidentes.

Afortunadamente los datos comúnmente proporcionados por una red pueden ser un beneficio significativo para las tareas de respuesta ante incidentes. Entonces se necesita realizar una captura completa de paquetes, Wireshark y otros resúmenes de tráfico basados en flujos, además de evidencia desde registros de eventos generados por los dispositivos de la infraestructura, como servidores Proxy, así también desde los endpoints, para ayudar a aliviar las presiones disminuyendo el tiempo e incrementando el alcance y escala introducido en el flujo de trabajo.

Iniciar con la evidencia disponible de inmediato puede contribuir para el equipo de respuesta ante incidentes sea más eficiente, eficaz y, en última instancia, exitoso. La mejor habilidad de un profesional forense es conocer como adaptarse mientras se mantiene el cumplimiento adecuado de los procesos y políticas establecidos.

Fuentes:

https://forensics.wiki/network_forensics/