martes, 19 de enero de 2021

Reto Forense - HTB: No Place To Hide o ¡Logs en RDP!, ¿estas seguro?

 

Pepito: Logs de RDP, ¡que Dios nos pille confesados!

Juanito:Que si, te vuelvo a repetir

Pepito: Y después de esto…

Juanito:Después de esto, encontré un reto en HTB que trataba precisamente de esto.

Pepito: ¿Cómo lo resolviste?

 

Juanito:Lo resolví gracias a la herramienta denominada: bmc-tools.py.

Pepito: ¿Pero cómo llegaste hasta dicha herramienta?

 

Juanito:Gracias a la búsqueda del magic number del archivo, que por cierto es: rdp8bmp.

Simplemente con poner el magic number en San Google podrás encuentrar en una de las entradas referencia al proyecto de Github.

Pepito: Pero, ¿logs de RDP?

 

Juanito:Pues sí, desde la versión 5.0 de RDP, Microsoft introdujo un mecanismo de caché para mapas de bits.

 

El objetivo era fue reducir la latencia de las comunicaciones entre el servidor RDP y el cliente RDP, por lo que las imágenes eran trasferidas al disco duro del cliente RDP y luego este la mostraba por pantalla.

 

Desde Windows 7, los archivos cacheados se encuentran ubicados en: "% USERPROFILE% \ AppData \ Local \ Microsoft \ Terminal Server Client \ Cache \".

 

En dicha ubicación nos podemos encontrar archivos de tipo “binario”, con la siguiente nomenclatura: cache{dddd}.bin (dddd = cuatro dígitos incrementales que comienzan desde 0000). Estos archivos pueden llegar a pesar cada uno: 100MB

 

En cuanto a la estructura de estos archivos, estos  tienen un encabezado fijo que es claramente identificable gracias al magic number: RDP8bmp, como ya hemos visto al hacer el reto. Tras el magic number, veremos un carácter nulo seguido de cuatro bytes correspondientes a una versión, es decir, el encabezado tiene doce bytes.

 

Cada elemento gráfico tiene un encabezado de tamaño reducido en comparación con los archivos con extensión ".bmc"ver NOTA:

 

·         un hash del elemento gráfico almacenado en ocho bytes

·         el ancho del elemento gráfico almacenado en dos bytes

·         la altura del elemento gráfico almacenado en dos bytes

 

Los datos subyacentes a cada elemento gráfico están en formato de 32 bpp.

----------------------------------------------------------------------------------------------------------------------------------------------------------- 

 

 

 

 

 

 

 

 

 

 

 

 

NOTA: Hasta Windows XP, la caché se encontraba en: "%USERPROFILE%\Local Settings\Application Data\Microsoft\Terminal Server Client\Cache\".

 

En dicha ubicación, se podían encontrar los siguientes archivos, que podían alcanzar hasta 10 MB de peso.

 

·         "Bcache2.bmc" que contiene los elementos gráficos en calidad de 8 bpp,

·         "Bcache22.bmc" que contiene los elementos gráficos en calidad de 16 bpp,

·         "Bcache24.bmc" que contiene los elementos gráficos en calidad de 32 bpp;

 

Estos archivos ".bmc" no tienen ningún encabezado fijo que permita su identificación inmediata, pero cada elemento gráfico en su interior tiene un encabezado de veinte bytes estructurado de la siguiente manera:

 

·         un hash del elemento gráfico almacenado en ocho bytes

·         el ancho del elemento gráfico almacenado en dos bytes

·         la altura del elemento gráfico almacenado en dos bytes

·         el tamaño en bytes de los datos que siguen al encabezado y que corresponden a la imagen almacenada en cuatro bytes

·         los parámetros específicos para el elemento gráfico almacenados en cuatro bytes. Uno de ellos define si el contenido de la imagen está comprimido o no, aunque se desconoce el algoritmo de compresión, por lo que ante una imagen comprimida no es posible recuperar los datos.

 

Si quieres más información, e incluso desarrollar tu propia herramienta en powershell, puedes ver las siguientes URL:

 

https://www.cert.ssi.gouv.fr/actualite/CERTFR-2016-ACT-017/

https://cbtgeeks.com/2018/05/22/digital-forensics-on-rdp-cache/

 

-----------------------------------------------------------------------------------------------------------------------------------------------------------

Pepito: Y el reto, ¿cómo fue?

Juanito: Pues ya te digo, aplique la herramienta y obtuve está foto que tengo en el móvil. Mira, mira…


                Y mira esta:

En cualquier caso

Lo que hagas con la información es cosa tuya, no mía... pero ten conciencia


lunes, 11 de enero de 2021

Reto Forense - HTB: Persistence

 

En este reto de HTB, lo primero que nos encontramos es un archivo con magic number: regf, es decir, un archivo de registro de Windows incompleto. Por lo tanto, ni podemos leerlo abiertamente con un editor hexadecimal ni con un intérprete ni mucho menos podremos leerlo directamente abriéndolo con el registro de Windows.


Pero eso no es problema, buscando en Internet no sólo encontramos la estructura de este tipo de archivo: https://www.taksati.org/regf/, sino también un parser de dicho archivos, así como ayuda para su uso:

·         https://cyberforensicator.com/2018/01/13/carving-fragmented-registry-files/

·         https://dfir.ru/tools/

·         https://github.com/msuhanov/yarp

 

Así que, instalamos la herramienta: yarp, y lanzamos el comando: yarp-print, para poder leer el contenido del archivo.


Para una mejor inspección, salvamos el contenido en un archivo mediante el comando: yarp-print <fichero> >> <fichero a almacenar>

Una vez obtenido lo que buscamos, y sabiendo que las flag de HTB son del estilo: HTB{….}, y que a la gente que pone los retos le gusta sobremanera la codificación en base64, buscamos dentro del archivo las cadenas en base64 que comiencen por: SFRC = HTB.

Al hacerlo encontramos una cadena:


DE INTERES: la cadena pertenece al nombre de un archivo, que será ejecutado siempre que el sistema se inicie, por estar dentro de: Software\Microsoft\Windows\CurrentVersion\Run

Si decodificamos dicha cadena obtenemos:


Parece que la intuición no ha fallado.

 

En cualquier caso…

Lo que hagas con la información es cosa tuya, no mía... pero ten conciencia.

jueves, 24 de diciembre de 2020

Reto Forense - HTB: Lure

 

El otro día realice un reto de HTB, fácil pero muy divertido e instructivo ya que te permite entrenar las habilidades para analizar un archivo de tipo ofimático.

Para lo cual “levante” la máquina virtual donde realizo los análisis de malware, y por tal motivo tiene herramientas para tales trabajos y, por supuesto, no tiene salida a Internet. 

Tras arrancar la máquina virtual y transferir el fichero, lo primero que hice fue abrir el documento “doc” con winrar, ya que dichos documentos se encuentran estructurados en formato XML. Tras abrir el documento, abrí el documento: [Content_Type].xml, que viene a ser un índice del contenido del documento ofimático 

En el contenido encontrado, lo que llamó mi interés fueron los documentos: e2oDoc.xml y downrev.xml, los cuales se encontrabann dentro del directorio: /Drs/


 

Tras detectar el contenido mencionado anteriormente, pasé a revisar ambos documentos con más atención.

En: Downrev.xml, sólo encontré una cadena en base64 que tras decodificarla determiné que no es lo que estaba buscando y en: e2oDoc.xml, tampoco encontré algo sugerente.

Así que, ¡¡try harder!!

El siguiente paso fue abrir el documento.Al abrirlo vi la advertencia de seguridad relacionada con la ejecución de macros, pues fui a ojearlas

 Al intentar modificarla, la contraseña me lo impidio.

Pero no pasa nada, pasé a utilizar la herramienta de nuestro querido amigo Didier Stevens: oledump.

Tras ejecutarla vi dos macros, detrás de los objetos con los caracteres: M y m

Visite el elemento 7.


Encontré un comando de poweshell encriptado, pues ni corto y perezoso, lo ejecute

 

Obtuve un error, pero también obtuve el comando en texto claro.

Al analizarlo vislumbre que tenemos un texto partido en múltiples partes y que debemos ordenarlo según la secuencia:

{5}{25}{8}{7}{0}{14}{3}{21}{2}{22}{15}{16}{31}{28}{11}{26}{17}{23}{27}{29}{10}{1}{6}{24}{30}{18}{13}{19}{12}{9}{20}{4}

Pues nada, empecé ordenando y numerando las distintas cadenas a ordenar según la secuencia anterior.


Al final, obtuve la siguiente cadena:


Tras sustituir los valores en hexadecimal por valores ascii, obtuve lo que andaba buscando:


En cualquier caso…

Lo que hagas con la información es cosa tuya, no mía... pero ten conciencia.


 

 

 

martes, 22 de diciembre de 2020

Proyecto: MiShodan

 Buenas

Quiero en esta entrada liberar mi trabajo fin de master por si a alguien le puede llegar a interesar.

Sin más os presento el resumen del trabajo y el enlace a mi github donde reside, y no por ese orden.

El enlace es este  y el RESUMEN es:

Siempre que una empresa contrata a un auditor en su plantilla con el objetivo de mantener sus sistemas tanto externos como internos seguros, el auditor solicitara una relación de activos y su criticidad para la empresa, así como la infraestructura de red en donde aparezcan todos los sistemas, ya sean servicios web, bases de datos, sistemas de seguridad, etc.

El problema empieza cuando la empresa no sabe dar respuesta a esa pregunta, ya que a partir de ahí el auditor tendrá que encontrarlos, principalmente entrevistando a los distintos miembros de la empresa. Esta tarea puede llegar a ser un ejercicio sencillo, arduo o extenuante dependiendo de la empresa en donde se desarrolle la actividad.

Pero, si a ese enfoque se le añade una labor de caja negra de localización de direcciones IP activas dentro de la empresa, teniendo en cuenta que cada IP se corresponde con un activo de la empresa, el tiempo de investigación se reduciría.

En la búsqueda de esas IPs, el auditor empezarán sus pesquisas desde el equipo que se le haya asignado dentro de la empresa mirando la IP de su equipo y las IPs de los servidores DNS para hacerse una idea del los rangos de IPs manejados por la empresa. A partir de ahí, empezará a trabajar con distintas herramientas para el descubrimiento de activos, una de esas herramientas puede ser la archiconocida: nmap.

Sin embargo esa tarea necesita un tiempo que el auditor puede no tener debido a la cantidad de entrevistas a realizar.

Por dicho motivo, sería necesario automatizar dicho proceso, lo que implicaría una reducción del tiempo de investigación que el auditor emplearía.

Ese proceso de automatización es lo que se describe en este documento que está usted leyendo.

Espero que sea de su agrado.

OVERVIEW

When one company hires a auditor inside its staff with the objective to keep theirs computer systems such internal as external safe, the auditor asks for the assets relationship and their criticality for the company, just like the network structure where every systems are, such as web service, data base, security system, etc.

The problem starts when the company doesn’t know to response that question, since there the auditor will have to find it mainly interviewing all of the members of the staff. This task could became a easy,a difficult or exhausting task, depending the company where the auditor is.

But if to the previous point of view we adds a black box task of localization the IP directions inside the company, considering that each IP is a asset of the company, the investigation time will be less

For the search of those IPs, the auditor will start her/his search from the computer inside the company, seeing her/his IP and the IPs of the DNS servers. With these data the auditor could know the ranges of IPs of the company. From there, the auditor will start to work with several tools for descovering the assets, one of these tools can be: nmap

However, that task needs a time what the auditor couldn’t have due to the number of interviews to be conducted

That’s why, it will be neccesary to automative this task, this will get to have less time of investigation by auditor

That task of automation is described in this document.

I hope it’s to your liking

FIN

 

Por último y en cualquier caso…  

Lo que hagas con la información es cosa tuya, no mía... pero ten conciencia.