Investiga inicios de sesión maliciosos en el DA con LogonTracer

LogonTracer es una herramienta para investigar inicios de sesión maliciosos al visualizar y analizar los registros de eventos del directorio activo de Windows.

Esta herramienta utiliza PageRank y ChangeFinder para detectar hosts y cuentas maliciosas en los logs de eventos de Windows, y visualiza los siguientes identificadores de eventos relacionados con el inicio de sesión de Windows basados en nuestra investigación previa.

- 4624: inicio de sesión exitoso
-  4625: error de inicio de sesión
- 4768: Autenticación de Kerberos (solicitud de TGT)
- 4769: Ticket de servicio de Kerberos (Solicitud de ST)
- 4776: Autenticación NTLM
- 4672: asignar privilegios especiales

Tenéis más detalle en los siguientes enlaces:   


En mi caso voy a instalarlo y usarlo en Linux, pero lo tenéis también funcional en OSX e incluso en un contenedor Docker.

Instalación

Tendremos que tener java 8 instalado, y luego instalar y/o configurar Neo4j, el soft de base de datos orientada a grafos.
Cambiar la configuración de Neo4j para permitir acceso remoto

$ cd [NEO4J_HOME]
$ vi conf/neo4j.conf

Ve a la sección 'Bolt connector' en el fichero de configuración y actívala para escuchar en todos los interfaces:

# Bolt connector
dbms.connector.bolt.enabled=true
#dbms.connector.bolt.tls_level=OPTIONAL
#dbms.connector.bolt.listen_address=:7687 <-- aquí

Y modifica la siguiente línea:

dbms.connector.bolt.listen_address=0.0.0.0:7687 <-- quita la # e inserta 0.0.0.0 antes de los dos puntos

Ve a la sección 'HTTP Connector' y actívalo para escuchar en todos los interfaces

# HTTP Connector. There must be exactly one HTTP connector.
dbms.connector.http.enabled=true
#dbms.connector.http.listen_address=:7474 <-- esta línea

Modifica la última línea como a continuación:

dbms.connector.http.listen_address=0.0.0.0:7474 <-- igual que antes, quita la # e inserta 0.0.0.0 antes de los dos puntos

Reinicia Neo4j

$ ./bin/neo4j console &

Clona el repo de LogonTracer

$ git clone https://github.com/JPCERTCC/LogonTracer.git

Instala los requisitos de Python3

$ pip3 install -r LogonTracer/requirements.txt

Uso

Usa -h para ver la ayuda:

$ python3 logontracer.py -r -o [PORT] -u [USERNAME] -p [PASSWORD] -s [IP Address]

    -r: Launch web server
    -o: Port number where the web server operates (ex: 8080)
    -u: Neo4j username (“neo4j” by default)
    -p: Neo4j password
    -s: Address where the web server operates (ex: localhost)

Iniciamos LogonTracer con el parámetro -r.

# python3 logontracer.py -r -o 8081 -u neo4j -p BloodHound -s localhost
[*] Script start. 2018/07/06 11:27:01
 * Serving Flask app "logontracer" (lazy loading)
 * Environment: production
   WARNING: Do not use the development server in a production environment.
   Use a production WSGI server instead.
 * Debug mode: off
 * Running on http://0.0.0.0:8081/ (Press CTRL+C to quit)
127.0.0.1 - - [06/Jul/2018 06:27:14] "GET / HTTP/1.1" 200 -


http://localhost:8081

Una vez arrancado procederemos a cargar el evtx y para ello tendremos dos opciones:

- mediante el script logontracer.py

$ python3 logontracer.py -e [EVTX File] -z [TIME Zone] -u [USERNAME] -p [PASSWORD] -s [IP Address]

    -e: EVTX filename to import
    -z: Time zone (ex: +9, -5)

Si se importa con éxito obtendrás un mensaje similar al siguiente:

$ python3 logontracer.py -e Security.evtx -z -3 -u neo4j -p password -s localhost
/usr/local/lib/python3.5/dist-packages/statsmodels/compat/pandas.py:56: FutureWarning: The pandas.core.datetools module is deprecated and will be removed in a future version. Please use the pandas.tseries module instead.
from pandas.core import datetools
[*] Script start. 2017/12/17 22:02:27
[*] Delete all nodes and relationships from this Neo4j database.
[*] Parse the EVTX file Security.evtx.
[*] Next recode number is 62032.
[*] Time zone is -3.
[*] Start parsing the EVTX file.
[*] Now loading 62000 records.
[*] Load finished.
[*] Total Event log is 62031.
[*] Calculate PageRank.
[*] Calculate ChangeFinder.
[*] Creating a graph data.
[*] Creation of a graph data finished.
[*] Script end. 2017/12/17 22:15:04

- o simplemente mediante el GUI:

Buscar y visualizar el event log

Usa la barra de navegación para buscar el nombre de la cuenta, el nombre del host, la dirección IP, la identificación del evento y el recuento de eventos. También se puede descargar los datos de gráficos en CSV, JPG, PNG y JSON mediante el botón Exportar.


Use el menú desplegable para buscar nombres de cuentas que coincidan con criterios específicos.
- All users: visualización de todos los usuarios y hosts.
- SYSTEM privileges: visualización de usuarios con privilegios del sistema.
- RDP logon: visualización de usuarios y hosts de inicio de sesión de RDP (tipo de inicio de sesión: 10).
- Network logon: visualización de usuarios y hosts de inicio de sesión desde una red remota (tipo de inicio de sesión: 3).
- Bath logon: visualización del inicio de sesión del servidor por lotes (tipo de inicio de sesión: 4).
- Service logon: Visualizar el inicio de sesión del Administrador de control de servicios (Tipo de inicio de sesión: 5).
- Error ms14-068 exploit: visualización del registro de errores que falló el exploit ms14-068.
- Error de inicio de sesión: visualización del inicio de sesión fallido.

Detalles del nodo
  • Node Red cuenta con privilegios de SYSTEM
  • Node Blue cuenta de usuario estándar
  • Node Green dirección IP y host

Ranking de importancia de cuentas y hosts

LogonTracer puede proporcionar cuentas/hosts ordenados por clasificación. LogonTracer realiza un análisis de red mediante el gráfico de registro de eventos y crea una clasificación basada en la "centralidad" de cada nodo. Centrality es un índice que indica la proximidad de cada nodo al centro en una red. Para el cálculo de la centralidad, se aplica PageRank. PageRank es un algoritmo para verificar la importancia de las páginas web. LogonTracer utiliza PageRank para examinar la importancia de las cuentas y los hosts en una red de dominio. Una cuenta con un PageRank alto se conecta a muchos hosts y puede ser utilizada por los atancantes para movimientos laterales.


Timeline
El botón de la línea de tiempo o timeline muestra recuentos de registro de eventos por hora en series de tiempo. Se resaltan los hosts con cambios drásticos. Para detectar el aumento del recuento, se puede usar 'Change Finder' como un método de detección de anomalías. Para descargar el resumen de la línea de tiempo y los datos CSV detallados, haz clic en "Descargar".

 
Repositoriohttps://github.com/JPCERTCC/LogonTracer/

Comentarios