Incident Response, Security and Forensics"

.

viernes, 9 de enero de 2009

El fontanero su mujer y otras cosas de meter

Pues eso, que de 'meter' se trata hoy.

Tenemos un equipo presumiblemente infectado, del cual hay que analizarlo y del que no sabemos nada, entendamos nada en cuanto a la infección y contraseñas del administrador y usuarios.

El portátil es una máquina con sistema operativo Windows XP del que hemos procedido a clonarlo en formato RAW y al que posteriormente accederemos realizando un montaje con el comando MOUNT de Linux (mount -o loop winxp.img loop). Tras diversos análisis y pruebas con diversas utilidades llegamos a la conclusión de que tiene un 'bicho' en su interior.

Para ver como actúa en tiempo real nos surge un problema (mejor dicho un reto) no podemos iniciar la máquina, ya que desconocemos las contraseñas de los usuarios y administrador.

Aunque existen muchas utilidades como ophcrack, Win recover,etc en formato de arranque por CD's, DVD's y programas para extraer los hash de las cuentas de los usuarios y 'parsearlas' por alguna utilidad (como CAIN) para averiguar la contraseña, hemos decidido 'ir por la vía rápida' ya que utilizar la fuerza bruta no es recomendable si principalmente no disponemos de tiempo.

Una solución que tenemos en nuestro sistema es: CHNTPW disponible desde esta url

CHNTPW es una herramienta famosa por su capacidad para modificar las entradas de la SAM en Windows 2000/XP/Vista, y que permite al usuario de manera efectiva inicializar o poner una contraseña de administrador para recuperar el acceso a un equipo. Esta herramienta junto con un disco de arranque de Linux es excepcionalmente eficaz, y considero que debe de ser parte de un analista o auditor.

En contraste con su uso típico, vamos a hacer uso de la función menos utilizada de edición del registro. En nuestra prueba de concepto, usamos CHNTPW para cargar un archivo de registro y navegar por la estructura. CHNTPW en modo de edición de registro es muy parecida a la línea de comandos estándar de Unix, ls mostrará la lista de los contenidos, y permitirá visualizarlo por la pantalla.

Por lo tanto como disponemos de la máquina montada como sistema de ficheros en NTFS (y gracias a que no está encriptado) nos centraremos en los siguientes ficheros del sistema donde se almacena la seguridad de Windows y de los que ya comente anteriormente su funcionamiento e importancia en este post

WINDOWS\SYSTEM32\CONFIG\SAM
WINDOWS\SYSTEM32\CONFIG\SOFTWARE (HKEY_LOCAL_MACHINE\SOFTWARE)
WINDOWS\SYSTEM32\CONFIG\SYSTEM (HKEY_LOCAL_MACHINE\System)
DOCUMENTS AND SETTINGS\PROFILES\%USERNAME%\NTUSER.DAT (HKEY_CURRENT_USER\{S-1-xxx...})
DOCUMENTS AND SETTINGS\PROFILES\%USERNAME%\NTUSER.MAN (HKEY_CURRENT_USER\{S-1-xxx...}



Si no tenemos montado el disco, también podemos acceder a los archivos anteriores utilizando una de las herramientas forenses como, Sleuthkit, Helix3 o SANS SIFT. Una vez que el archivo del registro se ha extraído o copiado, vamos a utilizar la herramienta.

Esto es el resultado y ejemplo de lo que hemos ido haciendo

Inicialización de contraseña

tstat01@wk16031:~$/.chntpw SAM
chntpw version 0.99.2 040105, (c) Petter N Hagen
openHive(sam) failed: Read-only file system, trying read-only
Hive's name (from header):
ROOT KEY at offset: 0x001020
...output supressed...
* = blank the password (This may work better than setting a new password!)
Enter nothing to leave it unchanged
Please enter new password: *


Selección de usuarios

tstat01@wk16031:~$ /chntpw -l SAM
chntpw version 0.99.2 040105, (c) Petter N Hagen
Hive's name (from header):
ROOT KEY at offset: 0x001020
Page at 0x6000 is not 'hbin', assuming file contains garbage at end
File size 262144 [40000] bytes, containing 5 pages (+ 1 headerpage)
Used for data: 218/16928 blocks/bytes, unused: 4/3392 blocks/bytes.
* SAM policy limits:
Failed logins before lockout is: 0
Minimum password length : 0
Password history count : 0
RID: 01f3, Username: , *BLANK password*
RID: 01f4, Username: , *BLANK password*
RID: 01f5, Username: , *disabled or locked*
RID: 03e8, Username:
RID: 03ea, Username: , *disabled or locked*
Hives that have changed:
# Name
None!


Navegación por la estructura del registro.

tstat01@wk16031:~$ ./chntpw -e NTUSER.DAT
chntpw version 0.99.2 040105, (c) Petter N Hagen
Hive's name (from header): admin.dominio1\ntuser.dat
ROOT KEY at offset: 0x001020
Page at 0x2f3000 is not 'hbin', assuming file contains garbage at end File size 3145728 [300000] bytes, containing 438
pages (+ 1 headerpage) Used for data: 32070/2356192 blocks/bytes, unused: 3517/718176 blocks/bytes.
Simple registry editor. ? for help.

[1020] > ls
ls of node at offset 0x1024
Node has 11 subkeys and 0 values
offs key name
[ 11b8] AppEvents
[ 70a8] Console
[ 7620] Control Panel
[ 13d20] Environment
[ 13e60] Identities
[ 14060] Keyboard Layout
[ 33c00] Network
[ 141a0] Printers
[ 14258] Software
[ 38878] UNICODE Program Groups

[1020] > cd Network

[33c00] \Network> ls
ls of node at offset 0x33c04
Node has 5 subkeys and 0 values
offs key name
[ 9bd00] M
[ 76230] Q
[ b6258] s
[ 81d40] T
[ b6ae0] x

[33c00] \Network> cd x

[9bd00] \Network\x> ls
ls of node at offset 0x9bd04
Node has 0 subkeys and 6 values
offs size type value name [value if type DWORD]
[ 75e4c] 34 REG_SZ RemotePath
[ 9bc2c] 32 REG_SZ UserName
[ a271c] 52 REG_SZ ProviderName
[ 9e61c] 4 REG_DWORD ProviderType 131072 [0x20000]
[ 9e32c] 4 REG_DWORD ConnectionType 1 [0x1]
[ a16ec] 4 REG_DWORD DeferFlags 4 [0x4]

[9bd00] \Network\x> cat RemotePath
Value RemotePath of type REG_SZ, data length 34 [0x22]
\\servidor1\agenda

[9bd00] \Network\x> cat UserName
Value UserName of type REG_SZ, data length 32 [0x20]
servidor1\jdiez

[9bd00] \Network\x> q

Hives that have changed:
# Name
None!


Como veís esta es otra forma de utilizar herramientas de ayuda para el análisis forense

Una vez realizado los pertinentes cambios podemos iniciar la máquina desde un VMware y analizar desde otra perspectiva el Aliens que lleva dentro, pero como esto es de otra película lo dejaremos para otra ocasión

0 comentarios: