Disco forense, memoria forense y registro forense. Marco de volatilidad y autopsia. Resolución de problemas con r0ot-mi. Parte 1

imagen

Este artículo contiene soluciones a tareas dirigidas a los análisis forenses de memoria, RAM y registros del servidor web. Además de ejemplos del uso de Volatility Framework y los programas de autopsia.

Información organizacional
Especialmente para aquellos que desean aprender algo nuevo y desarrollarse en cualquiera de las áreas de información y seguridad informática, escribiré y hablaré sobre las siguientes categorías:

  • PWN;
  • criptografía (criptografía);
  • tecnologías de red (Red);
  • inversa (ingeniería inversa);
  • esteganografía (Stegano);
  • búsqueda y explotación de vulnerabilidades WEB.

Además de esto, compartiré mi experiencia en informática forense, análisis de malware y firmware, ataques a redes inalámbricas y redes de área local, realización de pentests y escritura de exploits.

Para que pueda conocer nuevos artículos, software y otra información, creé un canal en Telegram y un grupo para discutir cualquier problema en el campo de ICD. Además, consideraré personalmente sus solicitudes personales, preguntas, sugerencias y recomendaciones personalmente y responderé a todos .

Toda la información se proporciona solo con fines educativos. El autor de este documento no tiene ninguna responsabilidad por los daños causados ​​a alguien como resultado del uso de los conocimientos y métodos obtenidos como resultado de estudiar este documento.

Memoria forense - nivel 2


imagen

En esta tarea, se nos da una imagen de RAM y se nos pide que busquemos el nombre de la máquina. Para resolver este tipo de tareas usaremos el Marco de volatilidad. Cargamos la imagen con el siguiente comando, especificando la ruta a la imagen como parámetro. Primero encontramos información sobre la imagen.

volatility -f ch2.dmp imageinfo 

imagen

Por lo tanto, aprendemos que esta es una imagen de memoria del sistema operativo Windows. Es decir, podemos encontrar el nombre de la máquina en el registro. Ahora debemos especificar el perfil como parámetro. El valor clave en el registro se puede mostrar de la siguiente manera.

 volatility -f ch2.dmp --profile=Win7SP1x86_23418 printkey -K "ControlSet001\Control\ComputerName" 

imagen

Y ahora descubrimos el nombre de la computadora.

 volatility -f ch2.dmp --profile=Win7SP1x86_23418 printkey -K "ControlSet001\Control\ComputerName\ActiveComputerName" 

imagen

Vemos el nombre de la computadora. Entregar, obtener puntos.

imagen

Registro forense - ataque web


imagen

En esta tarea, nos dan un registro del servidor web y dicen que se realizó un ataque, necesitamos entender qué datos aprendió el atacante. Abramos el registro.

imagen

Vemos los datos codificados en base64 como un parámetro de orden. Escribiremos un código para decodificarlos.

 from re import * from base64 import * f = open('ch13.txt') log = f.read() f.close() k = findall("action=membres&order=(.*?) HTTP", log) [print(str(b64decode(i.replace("%3D", "=")), "utf-8")) for i in k] 

imagen

Convierte un poco a comprensible.

imagen

Por lo tanto, comparamos los dos primeros bits de la primera letra de la contraseña con 00, 01, 10, 11 y hacemos una pausa correspondiente: 0, 2, 4 y 6 segundos. También sucede con el segundo y tercer bit. Después de eso, se comprueba el séptimo bit y, dependiendo de la igualdad de 0 o 1, se realiza una pausa de 2 y 4 segundos.

Por lo tanto, por el retraso podemos determinar qué bits devuelve el servidor.

imagen

Por ejemplo: la diferencia de tiempo entre las primeras solicitudes es de 6 segundos, es decir, estos son bits 11, etc. Automatiza este proceso.

 from re import * from base64 import * import binascii f = open('ch13.txt') log = f.read() f.close() k = findall("action=membres&order=(.*?) HTTP", log) dec_k = [str(b64decode(i.replace("%3D", "=")), "utf-8") for i in k] t = findall("2015:12:1(.*?) \+0200]", log) tim = [int(i.split(':')[0])*60 + int(i.split(':')[1]) for i in t] tim = [tim[i+1] - tim[i] for i in range(len(tim)-1)] + [0] password = "" for i in range(0, len(tim), 4): c = '' for sec in tim[i:i+3]: if sec == 0: c += '00' elif sec == 2: c += '01' elif sec == 4: c += '10' elif sec == 6: c += '11' if tim[i+3] == 2: c += '0' elif tim[i+3] == 4: c += '1' password += chr(int(c,2)) print(password) 

Le damos la contraseña.

imagen

Memoria forense - nivel 5


imagen

Se nos pide que encontremos la contraseña de John y proporcionemos un volcado de RAM. Como la última vez, descubrimos qué sistema operativo se utiliza.

imagen

Esto es Windows La volatilidad tiene una opción de hashdump.

imagen

Ahora encontramos la contraseña de usuario.

imagen

Enviamos la contraseña y obtenemos puntos.

imagen

Disco forense - encuentra el gato


imagen

Nos dan una imagen de disco y nos piden que encontremos el lugar donde está el gato. Para tales tareas, puede usar FTK Imager. Lo resolveré usando AutoPsy . Ejecute el programa

imagen

Se nos dice que abramos la página en un navegador. Abrimos Ahora cree un nuevo caso y agregue un host. A continuación, debe agregar una imagen.

Imágenes
imagen

imagen

imagen

imagen

imagen

imagen

imagen

Después de crear el entorno, tenemos lo siguiente.

imagen "

Seleccione la opción de análisis.

imagen

Mostramos la siguiente estructura de sección. No hay nada interesante en la carpeta Documentaciones. Vamos a los archivos.

imagen

Hay un archivo impar interesante. Lo seleccionamos

imagen

El contenido se muestra a continuación: hay algún tipo de imagen. Seleccione extraer para extraer el archivo. Del archivo descargado extraemos la imagen.

imagen

Lo más probable es que este sea el gato que necesitamos encontrar. Veamos información exif.

imagen

Genial, hay coordenadas de ubicación. Lo encontramos en las cartas.

imagen

Enviamos la respuesta y obtenemos puntos.

imagen

Más y más complicado ... Puedes unirte a nosotros en Telegram . Allí puede proponer sus propios temas y votar sobre la elección de los temas para los siguientes artículos.

Source: https://habr.com/ru/post/469577/


All Articles