DFIR - HUNTING

.

KILL CHAIN, DIAMOND, RESILIENCE, DETECT...

Normas, métodos, buenas prácticas.

SONDAS, AMENAZAS, INCIDENTES, ANALISIS

Productos, configuraciones y análisis.

CYBERWARFARE, GOBIERNOS, APT AVANZADO

Los mejores casos en Conexión Inversa.

CIBERGUERRA, MALWARE

Te contamos como se diseñan y como se aplican.

ATAQUES EN RED, INTRUSIONES, MALWARE Y APTs

Todo lo necesario para minimizar el impacto.

viernes, 30 de agosto de 2013

(II) Forensics con SPLUNK: Gestionando alertas en SNORT y eventos de Windows



Hola lectores,

En el pasado post estuvimos hablando de como solucionamos la gestión y presentación de un volumen muy grande de datos utilizando un gestor 'Big data' como es Splunk. Hicimos un 'timeline' y realizamos minería de datos con objeto de realizar un análisis forense.

En este post y a modo de recordatorio otro cliente me preguntaba como disponer y explotar muchas de las herramientas de seguridad perimetral que dispone. En ese punto me dispuse tras la experiencia adoptada volver a utilizar SPLUNK.

Tras diversas reuniones al final conseguimos desarrollar un bonito proyecto de integración, gestión, correlación, explotación y alertas de los eventos perimetrales y de servidores Windows y Linux de esta empresa. Como la explicación sobrepasa el cometido de este post, me voy a centrar en el detector de intrusos de SNORT y los registros de Windows Server a modo de ejemplo de integración.

INTEGRANDO SNORT

Esta empresa dispone de cuatro sensores de Snort basados en sistema operativo Linux en diferentes VLAN's de la red. Para enviar los datos al servidor de Splunk editamos el fichero 'snort.conf' y añadimos la siguiente línea:

output alert_syslog: host=192.168.1.30:514, LOG_LOCAL7 LOG_ALERT LOG_CONS LOG_PID

Luego ejecutamos Snort

snort -i3 -A console -dev -l C:\Snort\log -h 192.168.101.240/24 -c C:\Snort\etc\snort.conf -s

Donde:

-s activamos el envío al servicio syslog 
192.168.1.30 máquina donde corre el syslog
514 puerto UDP donde escucha el servicio simulado de syslog en Splunk.

Otra forma es utilizar el software cliente llamado 'universal forwarder' que dispone Splunk y que permite enviar ficheros y directorios a ubicaciones remotas, cosa que en nuestro caso no hizo falta.

CONFIGURANDO SPLUNK

Damos por bueno que hemos instalado Splunk y que accedemos a la aplicación con el usuario y contraseña. Una vez realizado este paso nos crearemos un fichero contenedor de los datos o índice donde almacenar los eventos enviados por las sondas snort en:

Manager  » Indexes  » New

En mi caso le puse de nombre 'snortsyslog'


A continuación creamos el fichero recolector de datos o fichero que explota Splunk en:

Manager » Data inputs » Files & directories, una vez hemos concluido esta parte, damos por finalizado la configuración que necesitamos para el uso y funcionamiento. Así de sencillo.

¿QUIEN DIJO QUE SNORT NO TENÍA ENTORNO GRÁFICO?

Lo bueno que tiene Snort (aparte de su impresionante motor) es que es muy fácil de parametrizar y configurar, ya que se basa en un fichero de texto, al igual que la gestión de reglas, en cambio una de las quejas que coinciden los responsables de departamentos de IT es que hay que utilizar muchos programas específicos para tener una visión ejecutiva de lo que está pasando, así mismo aunque existen entornos gráficos, estos son difíciles de adaptar cuando se les pide una información o informe algo más complejo.

Veamos como lo soluciona Splunk.

Una vez realizados los pasos anteriores, nos vamos a Apps  » Search y en el cuadro de búsqueda ponemos:

index="snort" 

Donde nos saldrá todos los datos recibidos hasta el momento.

Eventos recibidos por Snort

Una vez aquí (imaginación al poder) podremos hacer cualquier cosa que se nos apetezca como por ejemplo:

1.-  Mostrar las ip's más activas



2.- Mostrar ataques agrupados por su clasificación 




 3.- Búsqueda de un determinado ataque y sus horas de actividad




4.-Búsqueda de diversos tipos de ataques




5.- Estadísticas por ataques




6.- Cuadro de mandos con los tipos de ataques y actividades


Simplemente sencillo. Ya tenemos integrado los sensores de Snort en una instancia de Splunk.

WINDOWS SECURITY OPERATION CENTER

Otra de las utilidades gratuitas y curiosas que pudimos poner al cliente es una herramienta desarrollada íntegramente por la empresa INFIGO, que de forma sencilla y útil integra la gestión de eventos y registros de servidores Windows de forma que podemos ver entre otras cosas y en tiempo real las sesiones RDP fallidas o los diez inicios de sesiones incorrectos en servidores con Active Directory.

Este producto desarrollado para Splunk es compatible con Windows 2003, 2008 y Windows 2012, incluso en entornos mixtos. La aplicación ofrece además cuadros de mando que muestra las actividades de los cortafuegos basadas en host de Windows. También están disponibles, el seguimiento de las instalaciones de software y el acceso y modificación de servicios de directorio.

INSTALANDO LOS CLIENTES

Se requieren privilegios administrativos para el acceso por WMI a los puestos clientes, es decir desde el puesto donde estemos trabajando necesitaremos el usuario y contraseña del dominio. Procedemos a configurar en Splunk el acceso al registro de Windows de la siguiente manera.

Especificamos las IP's de los servidores que queremos recolectar los registros de Windows, en este caso ponemos localhost ya que nos interesa la propia máquina y las IP's de otros servidores. En el cuadro intermedio indicamos los registros a obtener, entre ellos el registro de Aplicación, Seguridad, Sistema, Hardware e Internet Explorer



Una vez realizado este paso nos proponemos a configurar la aplicación.

INSTALANDO LA APLICACIÓN

La instalación es muy sencilla. Primero y al igual que en Snort, nos creamos un fichero índice que contenga los datos. En nuestro ejemplo lo hemos llamado SOC_Windows.



Seguidamente nos descargamos la aplicación desde el repositorio de aplicaciones de splunk. Este paso nos descarga el siguiente fichero 'infigo_windows_soc.spl' el cual hay que abrir desde el menú  Manager  » Apps tal y como muestra la siguiente figura.


La aplicación nos pedirá que introduzcamos el fichero de índice el cual nosotros hemos creado anteriormente.


A continuación reiniciamos splunk desde el menú principal y accedemos al menú de Apps y desde allí al Windows Security Operations Center.



Una vez realizado este paso ya dispondremos de un cuadro de mando con los eventos como muestra la figura siguiente.


También disponemos de un extenso menú donde podremos ver:

Inicios de sesión incorrectos

Control de usuarios


Actividad 

 Cortafuegos


 Búsqueda de datos en Active Directory

De esta forma hemos conseguido integrar los registros de Windows dentro de una aplicación para Splunk. De un vistazo nos permite a través de su cuadro de mandos, tener una visión gráfica del estado de la seguridad, según indica el visor de eventos.

¿Y MIS OTRAS APLICACIONES DE SEGURIDAD?

Llegados a este punto nos queda integrar otras herramientas dentro de Splunk, ya que el cliente tiene un cortafuegos F5 y antivirus de Symantec.

Mirando por la documentación y la web de Splunk nos encontramos con la siguiente web: http://apps.splunk.com/ la cual os recomiendo visitar ya que dispone de cientos de aplicaciones que seguro que coinciden con alguna que tendréis.

Desde esta web nos permitió descargar y ejecutar las aplicaciones que el cliente necesitaba en ese momento, disponiendo de un cuadro de mando para la gestión de eventos de seguridad. 



CONCLUSIONES

Cada vez nuestros dispositivos de seguridad y aplicaciones generan una gran cantidad de eventos y registros de forma que cuando hay un incidente, este se hace muy complejo de tratar por su volumen de datos. Por otro lado muchas empresas crean 'saco de discos' donde tirar todos esos registros haciendo muy compleja la indexación y búsqueda de un parámetro o incidente.

Splunk tiene la facilidad de tratar con datos gigantes indexando la información para con un lenguaje natural permitir la búsqueda y explotación de de estos. Hay que tener en cuenta que este producto está pensado en su modo 'gratuito' para pequeñas empresas, ya que conforme añadamos logs y registros de dispositivos superaremos fácilmente ese umbral de 500 MB. teniendo que adquirir una licencia corporativa.

Por otro lado la poca y escasa documentación al respecto (hay mucha pero muy genérica) hace que el analista tenga que investigar el producto a integrar. Una vez incluido en Splunk, el manejo y estadísticas de datos es simple, sencillo y potente.

miércoles, 7 de agosto de 2013

(I) Forensics con SPLUNK: Visualizando un SuperTimeline


Hace unos días estuve en un juicio en el que dos empresas no se ponían de acuerdo en los datos mostrados sobre un informe pericial realizado por una tercera empresa que fue asignada por el Juzgado.

Los hechos se remontan en lo que llevamos de año 2013, en el que de forma reiterada y según el auto judicial se produce una eliminación masiva de datos por parte de un proveedor que gestionaba la microinformática de una conocida entidad financiera (que después del ‘gazpacho de fusiones’, se ha diluido en otras entidades). La cuestión es que la entidad responsabiliza de la perdida de datos al proveedor y le pide una cuantía económica por incumplimiento de SLA. Estos a su vez declinan la acusación indicando que es un problema de un troyano que tiene la entidad financiera. El lío está servido.

Después de este incidente y tras la mala experiencia en la presentación del informe y resultados,  la empresa del juzgado me solicita ayuda para intentar clarificar el volumen de datos que dispone, una vez obtenidas las evidencias.

Lo más importante en este caso, es mostrar al Juez y a las partes una visión amplia de lo sucedido y a ser posible de 360º. Para ello vamos a establecer una línea de tiempo con objeto de ver las incidencias en un mapa temporal.

Otro de los problemas que nos surgen, es la cantidad de datos a explotar, ya que son unos dos terabytes, por lo tanto la cuestión es donde almacenar esa cantidad  impresionante de datos y la posibilidad de explotarlos de una forma sencilla, para ello hablamos con diversos fabricantes (Oracle, IBM, etc.) y miramos alguna alternativa Open como NOSQL o HADOOP,  pero tanto por precio como por complejidad en la instalación y falta de tiempo nos decidimos por SPLUNK tras las buenas condiciones que nos propusieron.

SPLUNK

SPLUNK Es un software para buscar, monitorizar y analizar datos de aplicaciones, sistemas e infraestructura IT. Permite la captura, indexación y correlación en tiempo real, almacenándolo todo en un repositorio donde permite generar un panel o cuadro de mandos en formato gráfico.

Splunk dispone de dos versiones una de comercial (Enterprise License) diseñada para empresas, y una gratuita "Free License" para uso personal. La versión freeware está limitada a 500 MB de datos al día, y carece de algunas de las funcionalidades de la versión licenciada Enterprise.

OBTENIENDO UNA LINEA DE TIEMPO

Aunque disponía de los datos, quiero explicar una forma de obtenerlos:

Lo primero es establecer la línea de tiempo con las adquisiciones para ello utilizamos fls:

fls -m "" –r discoduro.dd > fls.body

A continuación humanizamos la salida del fichero fls.body, (esto hay que hacerlo por cada disco) y lo haremos con mactime.

mactime –b fls.body –d > fls.csv

Realizamos el montaje de los discos y utilizamos log2timeline para extraer datos relevantes.

log2timeline -f exif,pdf,mft -o mactime –r -w log2timeline.body /mnt/discomontado

Volvemos a humanizar el resultado

mactime –b log2timeline.body –d > log2timeline.csv

Otra forma de hacerlo es utilizando el ya mencionado NTFSWALK o Windows Journal Parser. El objetivo es disponer de los ficheros que nos interesa aplicar a SPLUNK para tener una visión global.

Veamos como es el procedimiento en splunk, una vez que disponemos de los ficheros:

CREANDO EL SUPERTIMELINE EN SPLUNK

1.- Tras iniciar sesión en Splunk creamos un índice donde almacenaremos los datos especificando las propiedades de importación.

Creación del índice

Lista de índices

 2.- Creamos la entrada de datos, seleccionando 'Files & directories'. Seleccionamos la ruta de acceso al fichero y configuraciones de los datos a importar, así como la estructura de ficheros (Mactime, CSV, etc.)


Files & directories

Ruta del fichero a mostrar

Parámetros de importación

Lista de ficheros para la obtención de datos

3.- Nos vamos al menú de aplicaciones y le indicamos mostrar los datos, obteniendo el siguiente resultado:

Menú de resumen

4.- Aplicamos un filtro para ver los elementos eliminados y este los muestra en modo registro.

Elementos eliminados


A continuación pulsamos en mostrar los datos y obtendremos un inmenso listado como el siguiente, pero con la particularidad de tener  360º y el mapa de los elementos eliminados en el tiempo. Si seleccionamos una barra de la gráfica, esta te permite realizar 'zoom' mostrando los datos que contiene.

Por años

Semanas
Días

Horas


CREANDO ESTADÍSTICAS

Otra de las múltiples funciones de SPLUNK es la generación de estadísticas o valores partiendo de los campos importados. Para ello se puede realizar desde la opción rejilla o gráfico.


También se puede realizar desde el editor de expresiones regulares definiendo los campos a contabilizar. En este caso se aplican los atributos de creación, acceso, eliminación y modificación, obteniendo una tabla de resultados porcentual

Editor

Resultados en formato tabla porcentual

Para verlo en otro tipo de formato más visual para el usuario y en nuestro caso los abogados de la defensa y acusación pulsamos el modo 'chart', el cual nos permite la selección de diferentes tipos de vistas.

Resultados en modo pastel

Resultados en modo barras

¿QUE MAS PUEDO BUSCAR?

Realmente depende de la creatividad y de los datos que tengamos

Por ejemplo:

Utilización de los campos de fecha para restringir los resultados de este año:

index=case date_year=2013

O hasta un cierto mes:

index=case date_year=2013 date_month=June

Hay que tener en cuenta que los términos de búsqueda no distinguen entre mayúsculas y minúsculas, pero se tratan como texto.

Tal vez queremos ver los tiempos de creación de todos los directorios, ordenados por su nombre


index=case mode=”r*” meta=”*b” | sort file

O invertir el orden:


index=case mode=”r*” meta=”*b” | sort file desc

O tal vez queremos analizar el acceso de un usuario a un determinado tipo de documento, por orden de tiempo descendente:


index=case file=”*Luis Ribera*” file=”*.docx*” | sort _time desc

CONCLUSIONES

Utilizando SPLUNK nos ha permitido ver y disponer de una visión gráfica y total de los elementos eliminados de una forma económica, sencilla, útil y sobre todo muy rápida a la hora de mostrar los datos. Si le añadimos las búsquedas y generación de estadísticas se convierte en una poderosa herramienta para la explotación de datos.

Análisis Forense en profundidad 2.0 - Nuevo Curso -

Buenas lectores, De nuevo y de la mano de @securizame llega una nueva entrega del curso "Análisis Forense en profundidad 2.0" ...