Mostrando entradas con la etiqueta simulacion_adversarios. Mostrar todas las entradas
Mostrando entradas con la etiqueta simulacion_adversarios. Mostrar todas las entradas

martes, 8 de octubre de 2019

Blue Team Training Toolkit... simulación de adversarios

Estimados amigos de Inseguros!!!

Seguimos poniendo a prueba nuestros sistemas con la simulación de adversarios. Este artículo pertenece a una serie más completa con distintas aproximaciones y ejemplos, así como herramientas y soluciones completas. Puedes leer el artículo de Caldera, de Uber, Flight Simulator...

En el turno de hoy, vamos con una herramienta denominada Blue Team Training Toolkit, muy descriptivo el nombre.



El software tiene una estructura de menús muy parecida a metasploit, en la que podemos hacer show modules, show options, set valor y cosas así, muy intuitivos.

Tiene 3 funciones claras, simulación de peticiones de malware a C&C, retransmisión de capturas de red y uso de ficheros sospechosos por imitación de MD5. Vamos a ir instalando y usando la aplicación para ver las funciones en detalle.

Una vez solventado algún pequeño problema con el instalador y python tenemos acceso al framework.


Empezamos como es menester pidiendo ayuda a la aplicación, no al vecino. Un Help nos posiciona correctamente ante el problema.


Voy a optar por la opción de generar un nuevo token con apisignup para la API. El servicio es gratuito, pero tiene distintas opciones de subscripción para comercializar el producto. Voy a optar por registrarme para la versión community, que si bien no es la más completa, si es gratis.

Al más puro estilo Metasploit, voy navegando por los módulos para ver que me ofrece la herramienta. Show Modules está bien.

Para esta primera prueba vamos a usar Maligno, una estructura cliente servidor para emular las conexiones que hace el malware hacia un C2, reproduciendo metadatos conocidos para testear nuestra capacidad de detección, que es de lo que se trata...



Seteamos el servidor que hará de C2 con la ip indicada y hacemos un show profiles. Veremos la lista de perfiles de imitación que tenemos disponibles, con la salvedad de que algunos son de pago, 1$ creo recordar que cuestan, pero vamos a elegir uno gratuito, que es gratis xD.


Hacemos un download nuclear, luego un set profile nuclear y luego hacemos un genclient para generar el cliente que realizará las conexiones contra nuestro Command And Control.

Si nos vamos a la carpeta profiles podremos ver el código en python de la actividad que vamos a recrear relacionada en este caso con nuclear.


También es interesante ver el fichero que crea cliente.

Ahora es el turno de irnos a nuestra máquina "cliente" y ejecutar el python.

Hemos probado varias simulaciones y hemos puesto un snort en la máquina para ver la detección.



Depende del conjunto de reglas que tengas tendrás unas detecciones u otras, pero al final, el concepto es simular la comunicación con el C2.

Vamos a probar otra opción interesante de la herramienta, la posibilidad de gestionar la retransmisión de ficheros pcap, cambiando muy fácilmente las direcciones ip y mac.



Y ahora vamos a indicar que 192.168.1.3 se convierta en 172.16.1.3



Lo bueno de esta funcionalidad es que podemos usar cualquier pcap que nos apetezca, de los muchos que hay disponibles para su estudio.

Otra de las opciones que implementa esta herramienta es la de usar las colisiones matemáticas del algoritmo MD5 para generar hashes, o mejor dicho, ficheros con el mismo hash que muestra clasificadas como maliciosas, como pueda ser una shell inversa con netcat, mimikatz, etc.


Con este módulo solo podemos bajar el fichero , no tiene ninguna interacción más.

Me parece un framework muy potente y que funciona bien, si bien es un poco más complejo de extender que los demás de la serie, pero cualquier persona con conocimientos de python podrá simular las típicas cabeceras usadas en ataques web y recrear ataques de este tipo.

Espero que os haya gustado y próximamente seguimos con otro capítulo !!!

Gracias por leerme.

En especial, este capítulo se lo dedico a Sergio, para saber si me lee el mamón y me lo dice xD



miércoles, 2 de octubre de 2019

Simulación de adversarios... FlightSIM 3/n

Estimados amigos de Inseguros !!!

En este tercer episodio de la simulación de adversarios, voy a comentar la herramienta FlightSim, que no es un simulador de vuelo... es una herramienta de generación de "ruido" esta vez de tráfico de red para comprobar nuestras capacidades de detección.


Como vimos con Caldera, Infection Monkey hace unos años o recientemente Uber Metta, Flightsim genera distintos tipos de eventos, bueno eventos no, genera las actuaciones que deben generar eventos en nuestros sistemas. Algunos de los módulos que tienen, y que por el nombre describen muy bien el trabajo que hacen son:

ModuleDescription
c2Generates a list of C2 destinations and generates DNS and IP traffic to each
dgaSimulates DGA traffic using random labels and top-level domains
scanPerforms a port scan to random RFC 5737 addresses using common ports
sinkConnects to random sinkholed destinations run by security providers
spambotResolves and connects to random Internet SMTP servers to simulate a spam bot
tunnelGenerates DNS tunneling requests to *.sandbox.alphasoc.xyz

La instalación es muy sencilla, podemos hacerlo por github o usando las comodidades de GO.

Los comandos son muy sencillos y podemos usar la opción -dry para que genere los datos sin realizar el tráfico de red. No vayas a probarlo sin avisar y le des el fin de semana al SOC.

Yo por si acaso activo las capturas de red a ver que hace el simulador...




Una herramienta muy sencilla. Por poco que puedas leer el lenguaje GO y puedas ver los módulos, podrás adoptar la ejecución a los parámetros que te interesen.

Por cierto, échale un vistazo al código, porque para algunas cosas se va contra la API de los programadores... y lo mismo estamos siendo hackeados nosotros.

Espero que te guste y lo uses !!!


lunes, 30 de septiembre de 2019

Uber Metta...Simulación de adversarios 2/n

Estimados amigos de Inseguros !!!

En otro artículo de la serie introducimos el concepto de simulación de adversarios con el software Caldera. Te refresco, lanzar ataques de manera controlada sobre un sistema para evaluar sus capacidades de detección.


Al más puro estilo caldera, con línea de comandos, hoy presentamos Uber Metta.

El sistema Metta trabaja con Vagrants, lo que son un conjunto de configuraciones para desplegar imágenes virtualbox con un setting concreto. Lo que podría ser un contenedor basado en VirtualBox.

La parte de instalación de muy sencilla, podemos seguir el tutorial del autor. 

Para este prueba, vamos a usar un Vagrant con Windows 10, en concreto el siguiente que os acompaño y que usamos para algunas cosas. 

Uses el que uses, como indica el autor, habilita la comunicación hacia él mediante WINRM, al menos, para poder operar con las pruebas que trae por defecto Metta.


https://github.com/uber-common/metta/wiki/Vagrants
vagrant init StefanScherer/windows_10
vagrant up

Al final, el autor de la herramienta "evita" la parte de RAT de Caldera con el despliegue de una máquina Windows 10 con Sysmon para probar las detecciones. No es lo más elegante ni funcional, ya que tienes tu que acceder al Windows virtualizado para ver a mano los logs, los eventos que han aparecido, pero bueno, demasiado ha hecho y agradecidos estamos !!!

El placer de las cosas bien hechas aparece:


Lo que realmente estamos lanzando son las acciones descritas en el yaml.

enabled: true
meta:
author: cg
created: 2017-06-01
decorations:
- Purple Team
description: On Target Recon Atack Simulation.
link: https://carnal0wnage.attackresearch.com
mitre_attack_phase: Discovery
mitre_attack_technique: Account Discovery
purple_actions:
1: cmd.exe /c net user
2: cmd.exe /c net user /domain
3: cmd.exe /c net localgroup administrators
4: cmd.exe /c net view
5: cmd.exe /c net view /domain
6: cmd.exe /c net groups \"Domain Admins\" /domain
7: cmd.exe /c net use
8: cmd.exe /c net share
9: cmd.exe /c ipconfig /all
10: cmd.exe /c tasklist /v
11: cmd.exe /c gpresult /z
12: cmd.exe /c nltest /dclist:corp
os: windows
name: On-target Recon Simulation
uuid: 017df153-470e-43d6-8e91-24c6b7cf62c4
En este caso, muy sencillitas, y tiene algún repositorio con algunas cosas graciosas.

Al final, no deja de ser una manera de ejecutar los comandos, lo que denomina las Purple Actions.

Habrá que ver como evoluciona el proyecto.

martes, 24 de septiembre de 2019

Caldera... Simulación de adversarios a golpe de click 1/n

Estimados amigos de Inseguros !!!

Vamos a empezar con el concepto de simulación de adversarios para adentrarnos un poquito más en este mundo con una herramienta concreta, en esta caso, Mitre Caldera.

El concepto es muy sencillo y lo que estamos en los equipos "defensivos" o delante de un SIEM o similar estamos acostumbrados. Los famosos Use case, el ruido !!!

Si tu tienes una alerta en el SIEM que detecta un ataque de fuerza bruta horizontal... tendrás que probarlo? nosotros lo llamamos "hacer ruido", generar los eventos, reproducir el ataque de una manera controlada para comprobar si realmente estamos detectando o no. Mejorar la detección, el ataque, al final es parte del ciclo de mejora de la defensa.


Con los ejercicios de simulación conseguimos esto, preparar y entrenar no solo los sistemas sino al personal ante eventos conocidos.

Al final, estás haciendo ese Purple Team o escenarios mixtos ataques/defensas.

Como ya he comentado en alguna charla, muchas veces la información que nos deja un Red Team o servicio ofensivo es de alto valor, pero puestos a trabaja la información, necesitamos correlar mucha información, sobre cómo ha funcionado el sistema defensivo, que rastros ha dejado, que medidas se han tenido que evadir con el Red Team, como se van a implementar medidas que corrijan los hallazgos, pero no solo los encontrados, sino en el tiempo, los futuros fallos de similar índole...

El uso de esta herramienta, Mitre Caldera nos gusta mucho porque es muy sencilla de desarrollar y se ciñe a nuestros propósitos.

Básicamente es una interface web para controlar un RAT, una herramienta de administración remota, un backdoor !!! con el que pasarle comandos al sistema.

Mediante comandos del sistema, bien sean bash, shell de Windows/Mac, powershell podemos replicar ataques conocidos, y ejecutarlos de manera controlada, añadiendo fases, recogiendo información útil para ser usada a posteriori...

El framework viene con una serie de TTP definidos, con el standard del MITRE, lo que nos "anima" a seguir con esta nomenclatura, o no...

Vamos a crear un pequeño ejemplo práctico y así puedes ver como va

A mi personalmente me gusta realizar la instalación de la máquina a "mano", sin docker, cosas de mi inexperiencia, pero si ya tengo una máquina virtual en dos clicks gracias a Azure, me de lo mismo liarme 5 minutos a instalar cositas, y así aprendo de paso.

Siguiendo los rigurosos pasos del documento de instalación me hago con el componente servidor.


La instalación me ha costado unas pocas gestiones, porque es un proyecto que está en cambio constante, que usa versiones 3 de python, y que no soy muy experto en estos menesteres.

La pantalla inicial me produce tal satisfacción que me remito a ella:



Siguiendo los preceptos de la aplicación, tenemos dos vías de "infectar" nuestras máquinas o sistemas a testear. Mediante un comando "del sistema" tipo ssh o powershell, o accediendo simplemente a la url con el binario. Muestro la opción del powershell.



Realizo alguna infección más y procedo con el panel de control a ver las distintas opciones.

Al final, esta parte es muy importante porque es el componente RAT el que va a ejecutar los trabajos.

Vamos a simular una técnica de persistencia basada en la técnica Mitre T1031 de modificar un servicio existente.


El sistema nos muestra el comando que subyace con esta técnica:

- id: 52771610-2322-44cf-816b-a7df42b4c086
  name: Replace a service binary with alternate binary
  description: |
    This is an example technique. snmptrap.exe should be changed in the command
    below with the new desired service binary. Depending on the value of
    host.service.modifiable this ability can damage the target system.
  tactic: persistence
  technique:
    attack_id: T1031
    name: Modify Existing Service
  platforms:
    windows:
      psh:
        command: |
          $s = Get-Service -Name #{host.service.modifiable};
          if ($s.status -ne 'Stopped') { Stop-Service $s };
          $exe = (Get-ItemProperty -Path "HKLM:\System\CurrentControlSet\Services\#{host.service.modifiable}").ImagePath.split()[0];
          $path = (Resolve-Path $exe).Path;
          Copy-Item -Path $path -Destination ($path + ".saved");
          Copy-Item -Path "C:\Windows\System32\snmptrap.exe" -Destination $path
        cleanup: |
          $exe = (Get-ItemProperty -Path "HKLM:\System\CurrentControlSet\Services\#{host.service.modifiable}").ImagePath.split()[0];
          $path = (Resolve-Path $exe).Path;
          If (Test-Path ($path + ".saved")) {
            Remove-Item $path;
            Move-Item -Path ($path + ".saved") -Destination $path
          }

Ahora creo un Adversary para ir añadiendo distintas TTP al ataque. Siguiendo el ejemplo, vamos a configurar la técnica 1031 que habíamos visto anteriormente.


Ahora realizamos la operación a simular, es decir, con la definición o uso de nuestra técnica y las fases, vamos a establecer el grupo de objetivos y a lanzar la operación.


Con el resultado de la operación tenemos un informe en formato gráfico y json, donde podemos ver que no se ha podido realizar la técnica, debido a que los dos equipos no tenían ningún servicio vulnerable para modificar con los permisos que se estaba ejecutando el RAT.


Ahora vamos a lanzar una operación con un conjunto de TTP´s más "cantosos".


Como puedes ver, en esta operación vamos a parar la recolección de logs, conseguir información del sistema, buscar entornos wifi, apaga el adaptador... y un conjunto de técnicas a las que engloba como "noisy neighbor" :-)

Después de un rato, me doy cuenta que efectivamente en mi mac me había desactivado el wifi xDDDDD

platforms:
    darwin:
      sh:
        command: |
          ./wifi.sh off
        cleanup: |
          ./wifi.sh on
        payload: wifi.sh
    linux:
      sh:
        command: |
          ./wifi.sh off
        cleanup: |
          ./wifi.sh on
        payload: wifi.sh
    windows:
      psh:
        command: |
          .\wifi.ps1 -Off
        cleanup: |
          .\wifi.ps1 -On
        payload: wifi.ps1


Fíjate en esta descripción de técnica como implementa un comando que requiere de un fichero, se denomina payload y debemos de especificarlo. Es muy sencillo subirlo al server y que el agente lo descargue en la ubicación por defecto que decidamos.

El resultado de la operación, aparte de tirarme el wifi :-) es el siguiente:


Aunque tengamos el report gráfico, la recolección de lo que llama facts o hechos la tenemos en detalle en el fichero de reporte json.


Siguiendo el propósito de nuestro test, vemos si nuestras herramientas de recolección de información están obteniendo la información que deseamos, y si vemos en nuestro SIEM las esperadas alertas a la detección de los ataques realizados.

Si todo ha ido bien, nuestro equipo blue team habrá podido ver/analizar que pasa, y si no, no nos habremos enterado de nada :-)


Al final, una herramienta muy versátil y que dota a los equipos de test muchas facilidades a la hora de realizar las pruebas.

Espero que os guste, que la trabajéis. Haremos más cositas seguramente en otras entradas.

Gracias por leerme.

lunes, 30 de enero de 2017

Infection Monkey: Suelta el mono y a ver hasta donde infecta. Sencillo

Estimados amigos de Inseguros!!!


Hoy os traigo una maravillosa herramienta para jugar con nuestras infraestructuras, y por qué no?, incorporarlo en nuestros procesos de auditoria interna o pentesting... La herramienta se llama Infection Monkey y el concepto es sencillo: Suelta un "virus" controlado, el mono, en una isla, déjalo que escanee la red y a ver hasta donde llega con clásicos exploits y "misconfigurations" o malas configuraciones. Te gusta?.

El funcionamiento es muy sencillo. Basta con descargar el binario (Debian funciona bien) solventar sobre la marcha alguna dependencia de Pyhton y poco más. Ejecutas la aplicación.



Ahora despliego un Monkey por la red para ver hasta donde llega con sus "maldades".





Se le pueden añadir algunas configuraciones por fichero o por la opción de json del menú gráfico, como la ip del C&C, el usuario del dominio, el nombre, la lista de password que va a atacar.

Como es normal, en un entorno minimamente securizado y aislado no debe encontrar nada, pero nos puede servir para ver alguna mala configuración vigente o vaya usted a saber,

Espero que os sirva de ayuda y que el proyecto crezca con nuevos módulos y exploits, y sobre todo GPLv3 xD

Gracias por leerme !!!