Powershell_> Leer json de suricata con PS, challenge accepted

Hola a todos, como dice el título del post, CHALLENGE ACCEPTED Mr. Alfon aka @seguridadyredes , desde hace algún tiempo estoy aprendiendo Powershell y voy intentando explicar lo que aprendo a todos nuestros lectores, hoy voy a intentar obtener los mismos resultados que ha obtenido Mr. Alfon pero desde PS.

Para ello, he recibido un eve.json por parte de Alfon y he empezado a trabajar con el…..

Consideraciones previas:

  • Ejecutar el comando en powershell como administrador, para poder agregar las reglas al fw.
  • El contenido del script lo dejamos en nuestro github.
  • Lo prmiero que hacemos es ver como es el json y que es lo que necesitamos buscar, para ello abrimos el archivo en mi caso con notepad++ (tengo debilidad por este editor), y vemos las key que debemos obtener….. ejemplo:

Una vez que tenemos las key y los valores que queremos buscar vamos al tajo:

# leemos del json y lo convertimos a objeto.
$SourceJson = Get-Content eve.json | ConvertFrom-Json

Bien, ya tenemos todo el contenido del Json en $SourceJson, gracias cmdlet ConvertFrom-Json a partir de aqui, ya és más fácil trabajar. Seguimos:

$SourceJson | Where-Object -FilterScript { ($_.event_type -eq 'alert') `
 -and ($_.app_proto -eq 'http') `
 -and ($_.alert.signature -Like '*EXE*')} | 
 Select-Object -ExpandProperty src_ip -unique| 
 out-file -FilePath out3.txt -Encoding utf8

Pasamos el $SourceJson y “filtramos” por lo que nos interesa, event_type, app_proto, alert.signature  y seleccionamos el src_ip que será lo que se nos guarde en out3.txt, el parámetro –unique nos evita tener duplicadas las ips resultantes en out3.txt. Y ahora sólo nos falta la última parte….. crear las reglas en el FW….

#Para cada elemento de out3.txt ($ip) crea una regla en el FW de windows con el parámetro de $IP. 
foreach ($ip in (get-content out3.txt)) {
 netsh advfirewall firewall add rule name="Bloquea_IP" protocol=any dir=in action=block remoteip=$ip }

Y aquí está, un foreach del archivo resultante out3.txt y creamos las reglas en el FW.

 

BONUS: todo en una línea….

(get-content .\eve.json | ConvertFrom-Json) | Where-object -FilterScript { ($_.event_type -eq 'alert') -and ($_.app_proto -eq 'http') -and ($_.alert.signature -Like '*EXE*')}|Select-Object -ExpandProperty src_ip -unique| out-file -FilePath out3.txt -Encoding utf8 ; foreach ($ip in (get-content out3.txt)) {netsh advfirewall firewall add rule name="Bloquea_IP" protocol=any dir=in action=block remoteip=$ip}

Agradezco a mi amigo Iñaki por echarme una mano con la salida del out3.txt, menos mal que eres un crack. También agradecer a Alfon por este mini-reto, ¿lo hemos conseguido? XD

Espero que os sirva de ayuda, y como este post será el último de 2017 os deseamos una feliz salida y entrada de año a todos.

2 opiniones en “Powershell_> Leer json de suricata con PS, challenge accepted”

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *