SigmaShooter (III): Desplegando SigmaShooter


En esta entrega se describen los primeros pasos con la herramienta SigmaShooter, desde que tenemos el código fuente hasta la ejecución de nuestra primera firma Sigma contra el SIEM Graylog. La aplicación se desplegará en un servidor Linux Debian 9.

A continuación, se enumeran lo pasos a seguir:

1. Clonamos el código de SigmaShooter desde su Github:

$ git clone https://github.com/ppll0p1s/SigmaShooter.git 
# Y nos colocamos en la carpeta del proyecto
$ cd SigmaShooter/

2. Creamos los certificados necesarios para desplegar el servidor web sobre el protocolo HTTPS y que las peticiones HTTP contra la aplicación se envíen de manera cifrada:

# Creamos nuestra clave privada
$ openssl genrsa -out server.key 2048
# Y a partir de la clave privada, creamos el certificado 
$ openssl req -new -x509 -sha256 -key server.key -out server.crt -days 3650

Y añadimos estos certificados en la línea 91 del fichero “router.go”, del paquete web:

Función ListenAndServeTLS de router.go

3. Compilamos SigmaShooter con el binario de GO:

$ go build sigmaShooter.go

NOTA: Para descargar e instalar GO puede seguirse la siguiente guía oficial:

https://golang.org/doc/install

4. Configuramos las variables de la aplicación desde el fichero “sigmaShooter.conf”. En nuestro caso, no elegimos el modo repositorio, ya que ejecutaremos las firmas SIGMA contra Graylog. A continuación, se muestra nuestro fichero de configuración final:

#--------------------------------------------------
#    SigmaShooter: Shooter of Sigma rules
#    sigmaShooter.conf: Config File sigmaShooter.conf
#    
#    Author: ppll0p1s
#    For more information:
#    https://github.com/ppll0p1s/SigmaShooter
#
#    Version - v0.01 - 28/03/2020
#
#--------------------------------------------------

##################################################
# This file contains a sample SigmaShooter configuration
# You should take the following steps to create your own custom configuration:
#
# 1) Set IP address and port variables and repository mode only
# 2) Set the rules path name and rules backup path name
# 3) Set log file path
# 4) Select SIEM variable and complete the values necessary 
#    to connect it
###################################################

###################################################
# Step 1): Set IP address and port variables of the server where
#          SigmaShooter will run
###################################################

# IP address
addr=192.168.37.129

# Port
port=8443

# Write "true" in repo var to run the app only as repository of Sigma rules,
# without SIEM functionality: e.g. repo=true
repo=

###################################################
# Step 2): Set the rules and rules backup path name variables. 
# The rules backup path will be used to backup rules any time new 
# set of rules be uploaded
#
# NOTE: Do not forget write slash at the end
###################################################
# Rules Path
rulePath=rules/

# Rules Backup Path
ruleBakPath=rulesBackup/

###################################################
# Step 3): Set log file path
###################################################
# Logs will be saved in
logDir=logs/sigmaShooter.log

###################################################
# Step 4): Uncomment and complet the SIEM variables in 
# which you store your data to search Sigma queries 
###################################################
# Graylog
# NOTE: siem value must match with sigmac options availables
siem=graylog
siemAddr=192.168.37.130
siemPortApi=9000

# NOTE: write siemUrlApi ended with slash. e.g. 
siemUrlApi=/api/
siemPortInput=12202
siemToken=1ndihcnu821mqihafbrv2rmbd3r8cfh5XXXXXXXXXXXXXXXXXXXX

# TODO: add more SIEMs
# In v0.01 only Graylog option is available

NOTA: Para la generación del token de usuario en el SIEM Graylog puede seguirse el siguiente procedimiento del repositorio oficial:

https://docs.graylog.org/en/3.2/pages/configuration/rest_api.html#creating-and-using-access-token

5. Una vez rellenado el fichero de configuración con los valores requeridos, ejecutamos la aplicación compilada previamente:

$ ./sigmaShooter

Si todo va bien, en el fichero de log del servidor web configurado se mostrarán las siguientes líneas:

$ tailf logs/sigmaShooter.log
[●] 2020/04/10 20:19:27.841299 Starting SigmaShooter server v0.01
[●] 2020/04/10 20:19:27.841450 checkRequirements: checking reqs...
[●] 2020/04/10 20:19:27.907506 checkRequirements: checking reqs... OK 
[●] 2020/04/10 20:19:27.907871 Listening on: https://192.168.37.129:8443

6. Una vez iniciada la herramienta, accedemos desde el navegador web a la dirección anterior, y a partir de aquí ya podemos empezar a trabajar directamente desde la interfaz gráfica de SigmaShooter:

Ventana web principal de SigmaShooter

También podemos acceder a la ventana de subida de registros desde el botón “Upload Logs”, en la parte derecha superior, la cual permite la subida de registros de los sistemas al SIEM y posterior ejecución de firmas SIGMA sobre ellos, generando alertas en caso de detectar actividad maliciosa:

Ventana de subida de registros de SigmaShooter

Cabe destacar que en esta primera versión de la herramienta sólo está disponible la subida de eventos de Windows para su análisis.

7. La siguiente acción que podemos realizar es comprobar la conectividad contra el SIEM Graylog configurado desde el botón “Check Connectivity”:

Utilidad Check Connectivity de SigmaShooter

Si la conectividad es correcta, la aplicación mostrará un tic verde en la parte derecha, como se muestra en la captura anterior. En caso contrario, se mostraría una cruz roja en forma de X.

8. Comprobado que la conectividad contra el SIEM es correcta, y para finalizar esta primera prueba, se subirá la firma SIGMA creada en la entrega anterior. Para subir una firma, desde la interfaz, pulsamos sobre “Upload rule” y seleccionamos el fichero de regla:

Utilidad Upload rule de SigmaShooter

Para finalizar la subida, pulsamos en “Submit” y seguidamente se cargará en la aplicación:

Ventana web principal de SigmaShooter con una firma cargada

Haciendo doble clic en la firma, o desde el icono de editar en la parte derecha de la regla, podemos comprobar el contenido de la firma, y editarlo en el caso de que fuera necesario:

Edición de firma Sigma desde SigmaShooter

9. Para finalizar, ejecutamos la firma contra el SIEM eligiendo los últimos 14 días y pulsando sobre el botón “Run all Sigma rules”:

Utilidad Run all Sigma rules de SigmaShooter

Cuando finalice la ejecución, la aplicación mostrará en la parte derecha superior ventanas de alerta dependiendo de si la firma SIGMA no es soportada por el SIEM y si ha encontrado resultados o no. En este caso, se muestra lo siguiente:

Alerta “No rule matched” de SigmaShooter

Las firmas ejecutadas en el último día se pueden ver en la ventana “Executions last day”, como se muestra a continuación:

Ventana Executions last day de la ventana principal de SigmaShooter

En este caso, parece que estamos a salvo, ningún usuario ha ejecutado Powershell desde un documento Word.

En las siguientes entregas se probará la herramienta SigmaShooter simulando posibles escenarios reales.