martes, 8 de noviembre de 2022

Azure Key Vault para tus scripts en Powershell: No more hardcored passwords...

 Estimados amigos de Inseguros !!!

En el post de hoy vamos a trabajar con algunas ideas para fortificar usuario/contraseña dentro de nuestros scripts.

Cuantos de vosotros tenéis claves a fuego en scripts?. La idea es guardarlos en un repositorio centralizado en Azure Key Vault, que nos permite más control sobre ellos.



Imagina que tu clave del usuario que hace algo en un script es mimamamemima.

La quieres cambiar cada 3 meses. En vez de cambiarla en el fichero del scrtip, yo hago una llamada el KeyVault, y me devuelve la clave.

Si la quiero cambiar, la cambio en KeyVault, pero en el script no hace falta, seguirá usando la llamada para recuperar la nueva clave. El concepto es ese más o menos.

Como siempre, voy a intentar explicaros mejor el concepto con el ejemplo. Lo primero, crear en Azure un almacen de claves e instalar el módulo de Azure en Powershell, si no lo tienes aún.


Install-Module -Name Az -Scope CurrentUser -Repository PSGallery -Force

Connect-AzAccount

Ahora damos de alta un SPN, un service principal name, que en Azure es una aplicación que tiene una identidad concreta, y le vamos a dar una autenticación. Esta identidad será la que tenga permisos sobre el KeyVault para leer nuestra clave. 


Una vez tenemos creado el SPN, le asociamos un secreto. 


Nos vamos al almacen de claves, y le decimos que a ese SPN, le de X permisos. En este caso solo "get".
Es decir, cuando usemos nuestro script que hace "lo que sea" le pasaremos el ID y la key del paso anterior, y solo podrá recuperar secretos del KeyVault. No podrá cambiar, por ejemplo.




Ahora creamos nuestra clave, la que queremos usar en el script: mimamamemima




Como es normal, esto nos lo da porque estamos logueados en Azure. Si lo direccionamos a una variable $laclave= "chorizo" pues ya podemos usarlo.

Si no estuvieramos logueado, tendríamos que hacer algo así?


Una vez llegados a este punto, coincidireis conmigo que antes teníamos scripts con las claves, y ahora tenemos script con un secreto, que me da acceso a la clave xD xD xD. Cual es la diferencia?

Bueno, en primer lugar, hemos adquirido la buena costumbre de crearnos un usuario/clave para cada script, y un secreto en keyvault distinto. Esto ya es mucho, porque tenemos glanularidad en control de accesos, auditoria, etc, pero hablaremos en otro momento de ello. Tenemos la posibilidad de rotar estas claves, no todas, de poco en poco. También tenemos Defender for KeyVault...

Luego existe la posibilidad, de que hayamos accedido al contenido de este script, no porque tengamos una shell local con acceso al fichero, sino que hubieramos accedidor por una RFI/LFI en un server web, por lo que podríamos ver el fichero con el secreto, pero no podríamos ejecutarlo.

En el caso de máquinas en Azure, podemos establecer la IP del equipo que realiza la petición al keyvault, para no está disponible, o no se me ocurre este control, para IP on-premise.

Entonces, volvemos al asunto que nos requiere. Ahora lo que vamos a hacer es guardar el secreto que nos permite acceder al keyvault y recuperar la clave, pero lo vamos a cifrar con DPAPI. Como sabes, esto nos ayuda en el sentido de que para descifrar esa clave, debes ser el usuario que la cifro, y el sistema operativo.
Es decir, imagina el usuario kinomakino que cifra el secreto de acceso al keyvault. Para descifrarlo, tienes que ser kinomakino y estar en ese servidor. Si ejecutamos el script en ese contexto, podemos hacerlo. Si entras al servidor con otro usuario, por ejemplo administrador, no "podras" descifrar el secreto, por lo que tendrá sentido el fichero que indicamos. 

Por supuesto, este usuario que corre el script, no deberá tener permisos de login local, login interactivo, Rdp, acceso a disco ( solo a la carpeta indicada) etc... lo normal de cuando creamos un usuario para un servicio verdad? 

Con la base del script anterior, vamos a guardar en un fichero el contenido del secreto del acceso al keyvault, cifrado con dpapi:

 #$spnsecret = "Ame8Q~dAZB13s262sRzUo5k3Ipm1T5TjOJrIubFq"

#$spnsecret |  ConvertTo-Securestring -AsPlainText -Force | ConvertFrom-SecureString | Out-File "C:\sysmon_config\license.txt" 


Y ahora le decimos al script que lea de ese fichero.

 $tenant = "5790'¡0'¡90'¡90¡3d9d976e"

$spnid = "793e90'¡90'¡9bffaeadf7"

$secreto_des = Get-content "C:\sysmon_config\license.txt" | ConvertTo-SecureString

$credenciales = New-Object System.Management.Automation.PSCredential ($spnid,$secreto_des)

Connect-AzAccount -ServicePrincipal -Credential $credenciales -Tenant $tenant

$clave = Get-AzKeyVaultSecret -VaultName "formacion" -Name "miclavedescripts1" -AsPlainText

echo $clave 


Espero que haya quedada clara la idea. Usar Keyvault y sus ventajas, mediante DPAPI.

Podríamos haber usado solo DPAPI, es decir, en el script inicial, en el que "hace cosas" hacer una llamada al fichero donde tenemos cifrada , en este caso, en vez el secreto del keyvault, la propia clave, SI. Pero Keyvault aporta una capa más. Sin entrar en detalles, de esta manera, podríamos rotar la clave en Azure, y no estar volviendo a generar el fichero, por decir alguna más...

Espero que te haya ayudado, y sobre todo, aprendas de los conceptos que vamos manejando.

También podríamos hacer esto, en vez de con KeyVault, con Keep pass, como vimos aquí hace 5 años !!!

Como siempre, gracias por leerme !!!



Y si te gusta este contenido, te animo a que te registre para estar al día de nuevos post, cursos, webinars, eventos etc. 

lunes, 24 de octubre de 2022

Workbook para detectar recursos huérfanos en Azure

 Estimados amigos de Inseguros !!!

Los que trabajamos con Azure sabemos lo fácil que es adquirir servicios, que muchas veces no sabemos muy bien quien los paga :-) pero siempre los paga alguien :-)

No en serio, cuando creas una máquina virtual, muchas veces metes una ip pública, un storage adicional, o una logic app que hiciste para no se qué... y luego borras la máquina y se quedan recursos que pueden engrosar la factura mensual.



En este WorkBook, siguiendo las instrucciones, podemos controlar alguno de los recursos más habituales que suelen quedar huérfanos, sin uso, en nuestros grupos de rucursos.

Muy interesante para para la escoba de vez en cuando y mantener la casa limpia.

Espero que os guste, gran trabajo del autor 

Y si te gusta este contenido, te animo a que te registre para estar al día de nuevos post, cursos, webinars, eventos etc. 

martes, 18 de octubre de 2022

De TTP Mitre a GPO usable con unos clicks: Eventlist Tool

 Estimados amigos de Inseguros !!!

Al que pregunte por Mitre lo mandamos al pasillo 15 días !! :-) 

Conocer los TTP´s Mitre es muy interesante, como siempre decimos, para conocer las "virtudes" de los atacantes y conocer como debemos defendernos los buenos. Por el camino tenemos la detección.

Como sabéis, en los entornos Microsoft hay que lidar con una buena configuración de eventos. En Linux también... Si no activamos las opciones de auditoría avanzada en las GPO´s no registraremos eventos de valor que a posteriori, puedan ser consultados.


Lo que siempre digo, primero instala las cámaras de video para poder consultar las cintas... 

En esta ocasión os traigo un proyecto que puede serviros para vuestros inicios, o si estáis haciendo simulación de adversarios, o si estáis intentanto ahorrar costes en el SIEM con eventos de mucho valor.

La herramienta se llama Eventlist. Aplausos para Miriam Xyra 

Es un conjunto de scripts en Powershell, con una interface gráfica, que nos permite hacer cosas tan jugosas como seleccionar uno o varios TTP´s, generarnos una liasta de id de eventos que necesitamos para detectar el TTP´s. También nos genera un fichero donde usar la conversión de reglas Sigma a nuestro SIEM. También nos ayuda con el forwarder Splunk para delimitar que eventos quiero ingestar, y no meterle un "select * " de todos los logs que si, nos dará mucha visibilidad, pero aumentará la tarifa de EPS...

Pero lo que más me gusta así para comenzar, es que nos genera una GPO con las opciones necesarias para habiltar los eventos necesarios para la detección.


Súper simpático. Os aconsejo que le déis un vistazo, seguro que le encontráis utilidades interesantes.

Como siempre, espero que os guste y gracias por leerme !!!

Y si te gusta este contenido, te animo a que te registre para estar al día de nuevos post, cursos, webinars, eventos etc. 

jueves, 13 de octubre de 2022

Posters y gráficos para apoyar la comunicación de seguridad a tus usuarios...by Microsoft

 Estimados amigos de Inseguros !!!

Seguro que andas arreglando las contraseñas, o vas a poner el MFA a todos, o quizás un portal de restablecimiento de contraseña Cloud. Cualquier política o cambio que se hace en la organización suele llevar apareado la difícil tarea de comunicarlo a los empleados. 

Mucho más constoso si tiene implicaciones en procesos críticos, o legales, donde tenemos que certificar que la comunicación ha sido exitosa ( TCP vs UDP xD).

En este post os traemos un enlace de Microsoft con cartéles, posters, mensajes de correo, etc para ayudarnos con los cambios más habituales del momento en cuestiones de seguridad.

Espero que os guste y que los uséis a vuestra necesidad. 

Gracias por leerme !!!





Y si te gusta este contenido, te animo a que te registre para estar al día de nuevos post, cursos, webinars, eventos etc. 

lunes, 10 de octubre de 2022

Tengo una clave de Azure: y ahora qué? Situational Awareness

 Estimados amigos de Inseguros!!!

Como es normal, la experiencia es un grado,  y el continuo aprendizaje nos hace mejorar, y en esto de la ciber ni te cuento.

Cuando uno empieza con el hacking, quiere "romper" cosas... "acceder" a sistemas, pero cuando estás trabajando sabes que hay que conseguir unos objetivos, por ejemplo, en el de un pentester o hacking ético es ayudar al cliente a encontrar sus fallos y proponer mejoras.  Cuando accedes a una web y obtiene una SQLi no te limitas con eso, intentas seguir los distintos pasos dentro de una cadena de ataque, como podría ser persistencia, borrado de huellas, reconocimiento interno, etc.

Por el lado defensor, lamentablemente siempre se ha hecho esfuerzo en que esto no suceda, en el que el vector de entrada no exista... y nos encontramos con que las empresas no están preparadas a un ataque, ni por carencia de vulnerabilidades, ni por carencia de medios de detección y contención.

Bueno que me salgo... En esta ocasión vamos a dar algunos consejos para ese momento de compromiso inicial en el que te haces con unas credenciales de un Azure AD. Porque has hecho phishing, porque estás auditando, porque quieres simular un ataque, por lo que sea, pero te encuentras en esa situación.

Empezamos a hacer ruido y tirar herramientas? qué queremos conseguir? paso a paso.

Conciencia situacional sería en inglés sobre lo que vamos a hablar creo...

Yo empezaría a hacerme preguntas e intentar conocer las respuestas o a intuirlas. Qué usuario tengo? quien soy? Qué roles tengo? Está activado el MFA a nivel global? A qué servicios puedo acceder. Quienes son los usuarios con roles de admin. Qué seguridad, productos o servicios tiene el tenant?

Conocer un poco de esto te ayudará a saber quien eres y donde estás.

Nos vamos a conectar con nuestro az-connect y vamos a usar la suite PowerZure para realizar un análisis inicial


Como te decía antes, si la empresa tiene Defender y tiene sistemas de antivirus... se va a dar cuenta xD XD xD


En este caso es que he sido muy burro he instalado PowerZure en el propio DC de la empresa xD xD pero bueno, me gusta Defender con y sin acento.

Con esto Invoke-Powerzure -h tenemos una tabla con todos los cmdlets disponibles para nuestra enumeración, por si no te acuerdas siempre.


El propósito del post no es dar una lección de enumeración de Azure. Ya tienes estos comandos y lo que hacen, MUY descriptivos, y artículos de Powerzure creo que hay unos cuantos. Lo mismo algún día subo alguno,  pero el propósito del post es invitaros a que tengais una lógica de actuación, que paréis y penséis los pasos, e intentar hacer algo más que sacar herramientas :-)

Espero que os guste, gracias por leerme !!!


jueves, 6 de octubre de 2022

Hardening Kitty: Fortifica tu entorno a golpe de click...por ejemplo contra el CIS

 Estimados amigos de Inseguros !!!

Que me gustan los gatos no es nada nuevo... que me gustan los entornos Microsoft mucho menos... buscando cosas por la internete, encontré esta preciosa herramienta :-)

HardeningKitty es un script que hace unas comprobaciones sobre algunos settings de seguridad "comunes" y nos permite realizar varias acciones de fortificación. El autor es el señor Michaele Schneider https://twitter.com/0x6d69636b

Lo primero en estos casos que os recomiendo es emplear la opción de auditoria que tiene. 

Nos muestra en un bonito csv los datos del estado de nuestras instalación. En estos procesos de fortificación es IMPORTANTE no, lo siguiente, conocer muy mucho qué está haciendo la tool, que cambios nos propone, que implicación tiene en nuestro entorno estos cambios, en nuestros procesos...

No vayas a poner un sistema de huella dactilar en una empresa si tienes usuarios mancos...o como hizo un amigo que le vendió un coche a un parapléjico, que estaba IMPLICITO que debía llevar un sistema de marchas específico en el volante, y a mi se le pasó.... El tipo espero 3 meses y le llego ... en fin... Seguimos xD

Cuando ofrecemos estos servicios a los clientes, hacemos mucho hincapié en que no podemos darle este servicio llave en mano. Es un trabajo conjunto, con un proceso concreto, y no simplemente una ejecución de herramientas.

Las teclas del piano son sencillas, importamos el módulo e invocamos la magia:

Import-Module .\Invoke-HardeningKitty.ps1
Invoke-HardeningKitty -Mode Audit -Log -Report

Esto es un server 2019 con un dc dejado caer como va en la caja. Mis resultados lo corroboran :-)

Your HardeningKitty score is: 3.29. HardeningKitty Statistics: Total checks: 329 - Passed: 75, Low: 51, Medium: 201, High: 2.

Unas de las opciones que nos indica el autori es la posibilidad de ejecutar un backup de los datos que ha comprbado, para que cuando hagamos el proceso de "liarla" xD podemos hacer una marcha atrás.

Invoke-HardeningKitty -Mode Config -Backup

Me genera un csv con las claves del registro que me propone cambiar.

Otra de las cosas interesantes que nos ofrece es mapear los controles por ejemplo del CIS en nuestra auditoria. Podemos usar una de listas que nos propone el autor y ver el score asociado.

Invoke-HardeningKitty -Mode Config -Backup -FileFindingList .\lists\finding_list_cis_microsoft_windows_server_2019_1809_1.1.0_machine.csv

Si lo que queremos hacer es aplicar los findings, usamos -Mode HailMary con el nombre de la lista.

Agunas configuraciones que nos muestran son muy evidentes, pero repasa cada una, o mejor aún, úsalo como checklist y ve manualmente cambiando valores, porque puedes liarla mucho xD

Si quieres conocer de primera mano cada valor, ya sabes que soy profesor de un Master muy potente de ciberseguridad Microsoft. Contacta conmigo si quieres más información.

Gracias por leerme !!!


Y si te gusta este contenido, te animo a que te registre para estar al día de nuevos post, cursos, webinars, eventos etc. 

viernes, 30 de septiembre de 2022

Cual es tu frecuencia de gestión/respuesta a correos?

 Estimados amigos de Inseguros!!!

Hoy voy a reflexionar y pedir vuestra opinión sobre el tema del correo en el mundo empresarial, las comunicaciones, la velocidad de respuesta y todo esto.

Los que me conocéis y trabajáis conmigo, creo que coincidís con lo que opino de mi, que suelo ser ágil con los correos. Esto lo aprendí en mi primer trabajo. NUNCA seguí la línea de correo que entra, correo que gestione, y así en "hilera".

Pronto aprendí a que un correo de mi jefe era más importante que otro. O que si era del DUEÑO, era aún más. Y si el mensaje era de la mujer del dueño o su hermano, eso pasaba a ser de vida o muerte, ya que estaba en juego mi trabajo, y el del dueño ante su familiar xD

Muchas veces tenemos correos que requieren de 1 hora de trabajo, otros requieren de 2 minutos. Otros requieren de paciencia. Otros no hacemos nada con ellos. Algunos se van quedando atrás hasta que una vez al año los borramos.

Cuando hablo de correos, suelo asociarlo a "tareas". Para mi un correo marcado sin leer es "algo" que tengo que hacer. Si leo un correo y no lo puedo atender, lo vuelvo a dejar sin leer, para que mi frágil mente tenga pendiente que tengo que hacer algo.

Cada uno nos organizamos como podemos. 

El propósito de este post, es exponer algunos comportamientos de colegas/clientes/amigos que son tan radicalmente opuestos a los míos, que me rechinan.

Por ejemplo, estás inmerso en una tarea con alguien importante. Le mandas un mail al tipo a las 18:05 y como sale a las 18:00, ese correo muere hasta el día siguiente...

Yo no soy quien para decirle a la gente cómo usar su tiempo libre, pero yo cuando termino de trabajar sigo usando el móvil. A veces estoy en el gimnasio en la bici a las 19:32 y si me entra un correo de alguien, y puedo "quitarme" esa tarea, le respondo. Por supuesto que si requiere de trabajo o esfuerzo no pueda, y NO ESTOY DICIENDO que tengas que hacer esto, pero yo si puedo desastacar algo, que me cuesta 1 minuto, y quizás a mi contacto le de "alas" para seguir...lo hago. Hay gente con la que NO, y no es factible, pero NUNCA?

Tengo compañeros que responde correos a las 6 de la mañana en un avión, a las 21:45 viendo las noticias, en el postre en la comida... NO te digo que seas así, cada uno modula la intensidad y dedicación de su vida laboral, pero esto debería aportar algo por ejemplo a la hora de las remuneraciones? es lo mismo alguien que corta a las 18:00 en punto, a uno que, no trabaja 24 horas, pero si que revisa al menos el asunto del correo de vez en cuando?

Luego hay otros que se les olvida, con estos lo flipo. Gente que ve el correo, está ocupado, le entran 4 cosas más y ya tu correo muere. De verdad? es como cuando alguien te dice que "no le llegó el correo" amigo... en los 2000 si, pero en 2022 POCOS correos se pierden, eres un desastre !!!

Seguimos con el ordenado. Lee el asunto !!! Imagina un cocinero que va haciendo receta por receta, plato por plato conforme le entran. No comeríamos en 10 vídas !!! El cocinero está haciendo un plato. Escucha que llega una comando de un ... yo que se... cerdo asado... si sabe que el cerdo tarda 20 minutos en descongelarse, mientras que está haciendo una lubina, para 10 segundos para sacar el cerdo del congelador, para que cuando le toque al turno del plato, ya esté descongelado. Es sencillo...MULTITAREA.

Hay compañeros/clientes/amigos que NO. No lo hacen. Son como un robot. No le pidas hacer una cosa, cuando están haciendo otra. Aunque eso implique dejar parado a un equipo. A estos no los soporto.

Con el Covid, la digitalización y los "slots libres" han crecido este número. No le pidas nada, pídele una cita para verlo... necesitas 5 minutos de él o ella, pero te emplaza para dentro de 14 días...

Tengo algún cliente, que le pides una cosa: dame de alta un usuario. Y tarda 10 días, REAL. A ver, imagino que el hombre estará súper liado, pero como decíamos del cocinero. Dame el usuario en 5 minutos y no me tengas parado a mi...Se llama falta de consideración?

Otra cosa que me llama la atención, es que si la gente está acostumbrada a que respondas rápido, si un día lo haces lento se quejan. Sin embargo, aceptamos a esa persona que sabemos que va a tardar...no?

QUE SIIIII, que estoy tocando temas delicados, como la jornada laboral, el derecho al descanso, desconexión, etc, pero lo estoy viendo desde el punto de vista de la eficacia. 

NO digo que trabajes en vacaciones, ni los sábados, ni que vivas pendiente como yo del móvil, pero hay escenarios en los que este NO, se podría "modular".

Quizás este enganchado al trabajo? seguro, pero por otro lado, los que me conocéis, saco tiempo para el trabajo, para mis proyectos personales, para formarme, para contaros cosas, y me da tiempo para llevar una vida rica de actividades. Que no trabajo de 8 de la mañana a 10 de la noche, ya te digo yo que no, pero lo que es cierto son dos cosas, que siempre estoy pendiente, y que cuando trabajo, rindo como un cabrón.

No entiendo eso de estar trabajando " a medio gas". Si estoy estoy. Que son las 13:30 del viernes, seguramente estaré lejos de un pc, pero si estoy, estoy para lo que venga, como el héroe de juego manga...

Acabando ya el consultorio hater de kinomakino xD, qué tipo de trabajador eres tú?

Gracias por leerme.


lunes, 26 de septiembre de 2022

A qué me dedico profesionamente...

 Estimados amigos de Inseguros !!!

Algunos me consta que me seguís en cada aventura, y otros muchos llegáis en google buscando cosas como "hackers guapos de Murcia" y cosas así :-)

El otro día hablando con mi amigo el JaBato, hablando de nuestro día a día no parecía saber muy bien a lo que me dedicaba. Y esto no es todo lo bueno que cabe esperar para mi, ya que yo vendo mis servicios de ciberseguridad a empresas, por eso, he decidido contaros un poco más en detalle qué suelo hacer en mi día a día, o qué proyectos suelo acometer, para que lo tengas en el radar, para que me conozcas más, y como siempre, para que me tengas a tu disposición.

Principalmente mi trabajo está relacionado con la auditoría, consultoría y formación. Actualmente trabajo para la empresa Verne Tech.

Hago auditorías de seguridad, pentesting, hacking ético, red team... Como quieras llamar a las acciones ofensivas. Estoy muy orgulloso de mis resultados, ya que tengo conocimientos transversales, desde hacking web, a lo que más o menos sabes, que es el hacking Windows, Microsoft...Azure y estas cosas.

Lo bueno de mis auditorías es que suelo encontrar muchos fallos, entrar hasta la cocina,etc pero siempre he cuidado muchos las acciones de mejora. Las medidas recomendadas para solventar deficiencias. 

Soy un fiel defensor de que para saber atacar hay que saber defender, y no me vale que me "saques" 4 fallos, y que no me des una solución. O que me des una solución basada en un fabricante concreto, o una solución que no esté alineada con la empresa, o con el presupuesto económico... No todas las empresas pueden tirar lso W2008 a la basura... ni despedir empleados con pocos conocimientos técnicos.

Mis 30 años de experiencia en la informática creo que me posicionan bien en este sentido.


Si empezamos con auditoría, seguimos con la consultoría. No soy amigo de coger tu Active Directory y fortificarlo a base de GPO´s, y que el sysadmin no sepa qué hemos hechos. Soy amigo de acompañaro, de decirle qué y cómo tiene que hacerlo, de hacerlo junto a él, de darle soporte, pero creo que hay partes de los sistemas que la mejor persona o personas para acometer los cambios deben de ser desde dentro.

Y siguienteo esta línea, de consultoría, está la formación. No solo contarte los clicks que tienes que hacer, sino mostrarte lo que hay detrás, el por qué de las cosas. Cómo están los malos rompiendo algo. Cómo debemos los buenos de arreglar algo. 

Las formaciones son muy enriquecedoras para los clientes y disfrutamos mucho.

Como te he dicho, mi área de conocimiento es transversal, pero si que es cierto que me manejo con Microsoft, Windows, Azure, O365, Azure Sentinel, Defender y por supuesto linux, mucho linux.

Como mi perfil es transversal, muchas veces hay que hacer misión comercia, ayudar a los compañeros con la redacción de algunos items de una preventa... esta parte también la manejo y me gusta.

Y por último, ayudar en lo que puedo. Si aparece un caso de DFIR complejo, con mucha presencia "Microsoft" pues suelo echar un cable. O en el SOC, si hay que trabajar algunos TTp´s tanto en defensa como en detección.

Al final como sabes, me defino como un apasionado de la ciberseguridad. Podría instalar un Vmware y una 3700, pero prefiero centrarme en lo otro que no es poco.

Espero que te haya servido un poco para saber qué hago, cómo te puedo ayudar, y si te sirve para orientarte un poco en este mundillo de la ciber.

Como siempre, gracias por leerme !!!

lunes, 19 de septiembre de 2022

Tips&Tricks AzureAd: Crear una alerta sin meten a un usuario a un grupo admin... sin usar SIEM

 Estimados amigos de Inseguros!!!

Los que leeís el blog estaís acostumbrados a leer SIEM. Empezamos hace muchos años con AlienVault, ahora más con Microsoft Sentinel, pero no es algo nuevo.

Lo que no es nuevo es que estos sistemas son costosos, y que no todas las empresas han empezado con dicha andadura. O bien por costes, o por personal que les gestione las alertas, pero no lo encuentro en gran parte de mis clientes.

En el post de hoy vamos a mejorar la monitorización de eventos en nuestro Azure AD con herramientas "del sistema" para hacerlo más fácil y económico.

Pongamos por ejemplo que en un ataque, un maloso añade un usuario a un grupo administrador... deberíamos ser capaces de tener un correito con dicha alerta no?

Vamos a crear un Log Analytics Space, lo que sería un repositorio de almacenamiento donde irán los logs.

Los que usais Sentinel sabéis que logs se guardan en un spacio así, y se monta Sentinel por "encima" como softwara de ciberseguridad. Pero en esos Log Analytics podemos guardar casi cualquier cosa...

Es importante contar con que estos registros tiene un coste. Ponle 2 euros por gb... pero para este caso, una alerta de este tipo, nos va a consumir "céntimos". Podemos ver los precios aquí.


Entramos en Azure AAD, en Supervisión, Configuración de Diagnóstico... donde sino xD


Ahora agregamos una configuración, y activamos que eventos queremos guardar, y donde enviarlos. 

En esta ocasión voy a ser generoso y voy a activar que guarde todos los logs relacionado con "login".


Ahora que tenemos los eventos, vamos a Azure Monitor y creamos una regla de alerta.


Ahora delimitamos, que para la suscripción que queremos, para el grupo de recursos que queremos, el log analytics que hemos creado.


En condición, le decimos que queremos una condición Búsqueda de registros personaliza... y aquí haremos la magía del KQL xD xD xD


Le decimos por ejemplo algo así: 

AuditLogs | where OperationName contains "Add member to role" 

Y en los umbrales, le decimos que mayo que 0 cada 5 minutos.

Por último añadimos una acción, como vimos en el artículo anterior, y hacemos una prueba.


Espero que os sirva de ayuda este pequeño gran consejo.

Gracias por leerme !!!



viernes, 16 de septiembre de 2022

Mecanismos de persistencia en Azure AD mediante Runbooks, automatización y webhooks. y Detección !!!

 Estimados amigos de Inseguros !!!

En el post de hoy vamos a hablar de una de las fases que menos interesan a los blue team de primeras, a los red team así así, pero a los de respuesta a incidentes les trae de cabeza. Hablo sin duda de la persistencia.

En algún curso lo he preguntado los primeros días y confunden persistencia con tenacidad xD intentarlo muchas veces... no. Nos referimos a garantizar el acceso después de comprometer un equipo.

Por ejemplo, si pillas las claves de administrador, crear un usuario con esos permisos por si cambian las claves del usuario administrador, no quedarte sin nada...


El "rojo" quiere entrar como sea... el azúl que no le entren, pero cuando estás jodido, hay que ver por donde, y esto es muy dificil de detectar en un entorno Cloud en donde los logs no están tan a la vista, y todo es más "software" aún si cabe...

Vamos a trabajar con los Runbooks, los servicios de automatización de Azure. Si leiste el artículo de cómo identificarlos seguro que te suena algo más.

La idea es que después de comprometer un equipo, creemos una automatización que contenga un script, que cree un usuario con permisos. Crearemos una invocación. 

Si después de nuestro ataque revocan accesos que teníamos, realizaremos la invocación de un webhook que activará el script que creará un usuario y password. El concepto es sencillo.

Vamos a crear lo primero la cuenta de automatización.


Asignamos a la identidad de la cuenta que hemos creado para la cuenta de automatización los permisos de administrador de usuarios y de permisos.


Ahora nos vamos a la suscripción que queramos, al grupo de recursos, y añadimos el rol de Owner a la cuenta de automatización que hemos creado...


Se masca la tragedia? xDDDDD

Ahora volvemos a la cuenta de automatización y nos vamos a Módulos.


Y en examinar galeria, importamos az.accounts y az.resources


Una vez que tenemos "a nuestro alcance" los módulos, vamos a la cuenta de automatización, runbooks y le decimos importar. Ahora subiremos nuestro script de la muerte con la persistencia que queremos !!!

El script que ha funcionado es este:

Import-Module Az.Accounts
Import-Module Az.Resources
$user = "maloso@****.onmicrosoft.com"
$pass = "***”
$Nickname = "BackupsVc"
$DisplayName = "backup_service"
Connect-AzAccount -CertificateThumbprint "CBD27*****31AAA1" -TenantId "57****abf6-3f963d9d976e" -ApplicationId "f8916*****f6fda9" -ServicePrincipal
$SecureStringPassword = ConvertTo-SecureString -String $pass -AsPlainText -Force
New-AzADUser -DisplayName $DisplayName -UserPrincipalName $user -Password $SecureStringPassword -MailNickname $Nickname
New-AzRoleAssignment -SignInName $user -RoleDefinitionName "Owner"

Te aconsejo que primero vayas probando desde ahí mismo para ver los errores, en una consola o desde la creación del runbook.

Cuando importamos, fijaros en los nombres de los runbooks previos, veis que tenemos alguno de tutorial, lo suyo es usar una nomenclatura como esa.


Ahora añadimos lo que será nuestra puerta de entrada, el webhook que llamará al automatismo para recuperar nuestra persistencia.


Una vez tenemos la llamada, procedemos a invocarlos y bingo, se nos crea el usuario...


Para rellenar el script con vuestros datos, creo que lo tenéis todo aquí:


La idea de usar las cuentas de automatismos no es ni nueva ni mía. Hace dos o tres años que se viene apareciendo este TTP y ya se ha hablado de ella en varios blogs, pero me gusta aportar mi granito de arena, y sobre todo, que a día de hoy, los scripts de las webs existentes no funcionan. Ya sabéis que actualizan las versiones de los módulos de Powershell, y algunos Cmdlets cambian.

Al final, es importante conocer estas técnicas tanto si atacas, como si defiendes, y que consolides y aprendas de los todo el mundo Azure. Como decía un haters, que es como el ordenador de otro...si si...

Lo que es más importante es ser capaces de detectar estos movimientos. Por ejemplo, en este ejercicio hemos creado automatismos, usuarios, hemos metido usuarios a grupos... todo esto te lo debería cantar un SIEM. Pero quien tiene un SIEM hoy en día? xD xD xD

Vamos a ver un sistema de detección más sencillo. Vamos a empezar al revés, por crear los eventos. Es decir, si sigues este artículo, tendrás estos eventos.

Ahora nos vamos a una suscripción, donde hemos creado la cuenta de automatización y vemos los registros de actividad.


Con el evento que más nos gsute, le damos a Nueva Regla de Alertas. Por ejemplo en creación de Automation job.


Aquí deberías cambiar Evento iniciado por, y dejar TODOS...

Seguimos con más detalles... 


A continuación seleccionamos Acciones, crear. Y vamos a crear notificaciones a kino xD


Con esto y poco más, tendremos una alerta cuando se produzca un evento de este tipo...



Existen otras vías para configurar estas acciones, en otro post los veremos.

Espero que os guste, gracias por leerme !!!

Y si te gusta este contenido, te animo a que te registre para estar al día de nuevos post, cursos, webinars, eventos etc.