viernes, julio 15, 2016

Mimikittenz: Dumpea passwords de la RAM "like a boss" #PowerShell #Pentest #Hacking

En los últimos meses hemos hablado bastante sobre debilidades en la memoria RAM y la información que podemos encontrar en ella. Echando la vista atrás podemos encontrar “Cómo sacar la contraseña de Gmail de la memoria del proceso de Firefox utilizando Metasploit”, “Cómo proteger tu password cuando está en memoria RAM” o “Cómo volcar credenciales del proceso KeePass con Meterpreter”. Esta serie de artículos nos dio para poner de relevancia que la memoria RAM es un entorno muy volátil, pero a la par bastante inseguro por naturaleza y con información sensible, por lo que hay que proteger cualquier volcado que se haga de ella como si fueran datos de una aplicación. La fase de post-explotación, a día de hoy, tiene un punto marcado a fuego dónde debemos verificar que no podemos extraer identidades digitales de la memoria RAM.

Figura 1: Mimikittenz. Dumpea passwords de la RAM "like a boss"

Hace no más de una semana se ha liberado una herramienta llamada Mimikittez, la cual es un script de Powershell para pentesters, que se encarga de leer diferentes procesos, que podemos definir, y lanzar expresiones regulares en busca de leaks con contraseñas y usuarios. El script es potente, ya que podríamos utilizarlo a través de una sesión de Metasploit con el payload de Powershell, y poder aprovecharnos en remoto de esta característica. No hay que olvidar a Netripper que también nos permite, a través de Powershell, hookear procesos e interceptar, antes de que sea cifrado, el contenido de la comunicación.

Mimikittenz es una herramienta de post-explotación dónde se utiliza la función ReadProcessMemory() para extraer las credenciales en texto plano de varios procesos. La herramienta también puede extraer otro tipo de información definida como jugosa de otros procesos. Además, la herramienta no está atada a ser ejecutada con privilegios de administrador, se puede utilizar desde un contexto de usuario, siempre y cuando los procesos sean del usuario en cuestión.

Figura 2: Mimikittenz en GitHub

Mimikittenz presenta una estructura interesante y extensible gracias a dos funciones: AddRegex e InspectManyProcs. La primera permite que, con un poco de maña, manipulemos el script con el objetivo de añadir expresiones regulares con las que comparar información en el análisis del proceso. Viendo el código encontramos esta función:

 [mimikittenz.MemProcInspector]::AddRegex("<NameOfTarget>","<regex_here>") 

De forma sencilla podemos añadir expresiones regulares para realizar las búsquedas en los procesos. Si observamos el código de Powershell que presenta el script encontramos lo siguiente:
[mimikittenz.MemProcInspector]::InspectManyProcs("iexplore","chrome","firefox")
Es realmente sencillo añadir procesos que deben ser inspeccionados en busca de las expresiones regulares que configuremos.

Echando un ojo a la ejecución de Mimikittenz vemos como se mostraría la información tras una ejecución del script en la máquina. Mimikittenz va abriendo los diferentes procesos indicados anteriormente y leyendo de ellos el contenido en memoria RAM. En ese momento se van pasando las diferentes expresiones regulares en busca de coincidencias. En el caso de encontrar una coincidencia se almacena el valor para ser, posteriormente, mostrado.

Figura 3: Patrones coincidentes

Es una herramienta de post-explotación bastante interesante y que automatiza el proceso de mirar dentro de la memoria en busca de leaks de información sensible por parte de las aplicaciones. Para el caso del gestor KeePass se podría realizar una serie de expresiones regulares con la intención de obtener la información sensible de la memoria.

A modo de ejemplo, se añade una nueva expresión regular en el script de Mimikittenz. Como se puede ver es muy sencillo de añadir. La expresión regular funcionaría para el sitio web de “El Otro Lado”, pero también para otros muchos dónde se encontrara un parámetro denominado password seguido del signo “=” y con diversos caracteres después. En la siguiente imagen se puede ver cómo queda el código.

Figura 4: Añadir regexp

Actualmente, ya comenté que lleva apenas diez días en Github, la herramienta permite extraer credenciales de memoria RAM de diferentes servicios. La herramienta los agrupa por categorías, las cuales enumero a continuación:
Webmail: Encontramos expresiones regulares para extraer credenciales de Gmail, Office 365 u Outlook Web.
Accounting: Xero y MYOB.
Acceso remoto: Tenemos disponibles expresiones regulares para Juniper SSL-VPN, Citrix NetScaler o Remote Desktop Web Access 2012.
Desarrollo y seguimiento: Expresiones regulares para Jira, Github, Bugzilla, Zendesk o Cpanel.
Miscelánea: Aquí nos encontramos con expresiones regulares para Malwr, VirusTotal, AnubisLabs, Dropbox, Microsoft Onedrive, AWS Web Services, Slack, Twitter o Facebook.
En el caso de la expresión regular añadida para "El Otro Lado" podemos ver como en la siguiente captura del navegador nos la encontramos. Otra variación sencilla de la herramienta es que permita leer capturas ya realizadas y sacar el máximo provecho al análisis forense de la memoria RAM, por lo que es una posibilidad muy interesante.

Figura 5: Búsqueda de contraseñas del volcado de memoria.

El potencial del script es alto, y lo que más me ha gustado es que es muy personalizable y de forma muy sencilla. Herramienta necesaria para nuestra mochila en la fase de post-explotación de sistemas Windows por dónde vayamos accediendo en la auditoria. Veremos a muchos pentesters llevando a Mimikittenz en su mochila alineada con nuestro Meterpreter para sacar el máximo provecho al “lateral movement”.

Autor: Pablo González Pérez (@pablogonzalezpe)
Escritor de los libros "Metasploit para Pentesters", "Ethical Hacking", "Got Root" y “Pentesting con Powershell

1 comentario: