Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Realizando un anlisis forense nos permitir, entre otras cosas, recuperarnos del
incidente de una manera ms segura y evitaremos en la medida de lo posible que se
repita la misma situacin en cualquiera de nuestras mquinas.
Un buen anlisis forense debe dar respuestas a varias cuestiones, entre las que se
encuentran las siguientes:
Si una vez realizado el anlisis forense no conocemos con exactitud las respuestas a
estas preguntas, no tendremos un anlisis funcional. Esto puede derivar en futuros
ataques, bien por la misma persona, o bien por diferentes medios de intrusin que
desconozcamos.
Evidencia digital
Uno de los pasos a tener en cuenta en toda investigacin, sea la que sea, consiste en la
captura de la/s evidencia/s. Por evidencia entendemos toda informacin que
podamos procesar en un anlisis. Por supuesto que el nico fin del anlisis de la/s
evidencia/s es saber con la mayor exactitud qu fue lo que ocurri.
Bueno, y qu entendemos por evidencia digital? Podemos entender evidencia como:
Algunos de los principios que rige el documento para la recoleccin de evidencias son:
Registros, Cache
Tabla de ruta. ARP Cache, Tabla de Proceso, Ncleo de estadsticas, memoria
Sistema de Archivo temporales
Disco
Datos de monitoreo y Log's remotos relativos al caso
Configuracin fsica, topologa de red
Medio de Archivos
*Nota.- A diferencia de los dems, este es el nico dato que no podemos especificar
manualmente
El perfil de usuario contiene las preferencias y las opciones de configuracin de cada
usuario. En la tabla siguiente se puede ver un ejemplo de la configuracin que contienen
los perfiles de usuario.
SECURITY
SOFTWARE
SYSTEM
SAM
DEFAULT
Cada seccin del Registro est asociada a un conjunto de archivos estndar. En la tabla
siguiente se muestran las secciones y archivos asociados a estas secciones:
Otro ejemplo de suceso, sera el relativo al inicio de sesin. Windows almacena este
suceso con el identificador 528.
Son dos tcnicas muy sencillas y que cualquier persona sin amplios conocimientos
sobre informtica puede realizar.
Desde lnea de comandos
Si quisisemos visualizar que tenemos en nuestro Index.dat desde lnea de comandos y
sin aplicacin de terceros podramos utilizar este comando:
C:\Documents and Settings\tu_user_name\Configuracin
local\Historial\History.IE5> find /i "http://" index.dat | sort > C:\history.txt
Explicacin: Nos situaremos en el directorio en donde se encuentra el archivo Index.dat
de nuestra carpeta Historial, y una vez dentro utilizaremos el comando find para buscar
cadenas dentro del archivo que empiecen por http://. La opcin /i indica que no distinga
entre maysculas y minsculas y el comando sort lo utilizaremos para ordenar la salida.
Desde lnea de comandos con Herramientas de terceros
La segunda opcin que podemos utilizar para visualizar este archivo sera con
aplicaciones de terceros. Por ejemplo Pasco. Esta aplicacin reporta la salida en un
fichero con texto delimitado. Nuestra vista lo agradecer, ya que podremos visualizar
este archivo en cualquier hoja de clculo como Excel, y nos facilitar mucho la tarea a
la hora de husmear. Otra cosa interesante que nos brinda este programa es la opcin
undelete. El modo undelete hace caso omiso a la informacin que hay en la tabla HASH
y reconstruye cualquier dato vlido de actividad. Gracias a esto podremos recuperar
informacin que con otra aplicacin no podramos.
La lnea de comandos que utiliza Pasco es muy sencilla:
Podemos utilizar varias herramientas para analizar el registro. Algunas de ellas son:
Una vez abierto estos archivos de sistema que referencian al registro de Windows
(SECURITY, SYSTEM, SOFTWARE, SAM, DEFAULT) con alguna de estas
aplicaciones, podremos movernos por sus distintas ramas, y poder as analizar los datos
que contienen estos ficheros.
Ejemplo prctico: Por ejemplo podramos averiguar los criterios de bsqueda de un
usuario en particular, buscando en el registro del perfil de usuario (ntuser.dat) la clave
JavaScript:alert(document.cookie);
Acto seguido nos saldr un cuadro de alerta, con el contenido de la cookie que nos pide
el servidor.
Limitaciones de las Cookies
Esto lo podemos hacer con varias herramientas, de las cuales vamos a describir dos.
SystemInfo (Nativa de Windows)
Aplicacin nativa de Windows que nos muestra informacin acerca de la configuracin
del sistema y el tipo y versin del sistema operativo. Tambin nos muestra informacin
relevante a seguridad, propiedades del Hardware, memoria RAM, espacio total del disco
e informacin sobre las tarjetas de red.
Su sintaxis es la siguiente:
Systeminfo [/s equipo [/u dominio\nombreUsuario [/p contrasea]]] [/fo {TABLE |
LIST | CSV}] [/nh]
Podramos redireccionar la salida del comando a un fichero de texto y fechado, para
saber con exactitud cundo se tom la evidencia. El comando que podramos poner sera
el siguiente:
Systeminfo /FO list >SystemInfo.txt &date /t >>SystemInfo.txt &time /t
>>SystemInfo.txt
PsInfo (SysInternals)
Esta herramienta es similar a la nativa de Windows, y podremos conseguir
prcticamente los mismos resultados. Ambas herramientas permiten su uso tanto en
local como en remoto. Su sintaxis es la siguiente:
psinfo [[\\computer [, computer [,..] | @file [-u user [-p psswd]]] [-h] [-s] [-d] [-c [-t
delimiter]] [filter]
No necesita ms explicacin.
El segundo paso que vamos a realizar ser recopilar informacin acerca de los servicios
que hay corriendo en la mquina con sus estadsticas. En este punto voy a utilizar el
comando nativo de Windows net y el comando SC.
Con el comando net statistics vamos a recabar informacin acerca de los bytes
recibidos por el sistema, el nmero de inicios de sesin fallidos, las cuentas de uso
fallidas, etc Toda esta informacin la almacenaremos en un archivo de texto con
fecha y hora incluida para su posterior anlisis. El comando resultante podra ser el
siguiente:
Net statistics Workstation >Estadisticas.txt &date /t >>Estadisticas.txt &time /t
>>Estadisticas.txt
El comando SC me va a permitir conseguir una lista de los servicios que actualmente
estn corriendo en la mquina. Aunque SC posee muchos comandos para poder regular
su salida, un comando resultante vlido podra ser el siguiente:
SC query >ServiceOpen.txt &date /t >>ServiceOpen.txt &time /t
>>ServiceOpen.txt
Tambin podramos recabar informacin sobre los mdulos que cargan estos procesos.
Podemos averiguar por ejemplo qu DLL estn asociadas a un determinado proceso.
As tendremos un control ms exhaustivo sobre los procesos. Para recabar esta
informacin podemos utilizar la herramienta de sysinternals ListDLLS.exe.
Por ejemplo, si quisisemos averiguar qu DLL dependen del proceso con PID 1548
utilizaramos la siguiente sintaxis:
ListDLLS.exe 1548 >DLL1548.txt &date /t >>DLL1548.txt &time
/t>>DLL1548.txt
El cuarto paso que vamos a realizar ser una recopilacin de los ltimos accesos a
ficheros, clasificados por fechas. Esta lista nos servir de referencia a la hora de realizar
el anlisis, y podremos comprobar qu ficheros se modificaron en el da o los das en los
que el sistema estuvo comprometido.
Podremos utilizar varias herramientas destinadas a tal fin, pero vamos utilizar slo dos.
En una primera instancia podremos utilizar el comando nativo de Windows DIR, con
algunas reglas para que nos muestre los ficheros modificados conforme a la fecha.
Podramos utilizar el siguiente comando:
DIR /t: a /a /s /o: d c:\ >Directory.txt &date /t >>Directory.txt &time /t
>>Directory.txt
Como siempre ponindole la fecha al final para saber cundo tomamos esa prueba.
En varias ocasiones esta lista puede ser largusima y el fichero puede ocuparnos unos
cuantos megas. La herramienta que vamos a describir a continuacin puede ayudarnos a
buscar archivos en fechas concretas. La herramienta en s se llama MacMatch.exe. sta
herramienta bsicamente buscar ficheros modificados en un intervalo de tiempo, que
lgicamente se lo daremos nosotros.
Una captura de imagen con la sintaxis:
Para utilizar estas herramientas es necesario verificar que estn activados los controles
de auditoria.
Para realizar estas operaciones vamos a utilizar tres aplicaciones. Una aplicacin
llamada netusers, otra llamada ntlast y una aplicacin llamada psloggedon.
Con netusers podremos comprobar los usuarios que estn conectados actualmente a una
mquina remota o local. Su sintaxis es la siguiente:
Para ver los usuarios que actualmente estn conectados a la mquina local tan solo
tendramos que poner el comando:
netusers >usuarios.txt &date /t >>usuarios.txt &time /t>>usuarios.txt
Si queremos que nos muestre un histrico de usuarios que se han logueado
anteriormente, pondramos:
netusers /history >UsersHistory.txt &date /t >>UsersHistory.txt &time /t
>>UsersHistory.txt.
Otra aplicacin que nos sirve para el mismo propsito es PsLoggedOn. Esta herramienta
la podemos utilizar tanto en local como en remoto, y la salida que nos muestra por
defecto es la siguiente:
Como podris ver en la imagen, hemos configurado nuestro Windows de prueba, para
que NO reinicie cuando muestre una pantalla de STOP, as podremos ver la pantalla
azul en todo su esplendor, y aparte le decimos que cuando muestre una pantalla de error,
nos vuelque el contenido completo de la memoria, para que podamos debugearlo, y as
practicar!
Y para poder practicar, qu mejor que una maquina virtual no? Podemos instalar una
mquina virtual desde 0, o descargarnos una de las muchas imgenes para Virtual PC
que podemos encontrar en Microsoft. En cuestin yo utilizar esta:
http://www.microsoft.com/downloads/details.aspx?FamilyId=21EABB90-958F-4B64B5F1-73D0A413C8EF&displaylang=en
En este blog tambin hay puestas algunas imgenes en descarga directa con algunas
plataformas servidoras, por si queris descargarlas tambin. Y gratis!!
http://windowstips.wordpress.com/2007/01/18/practica-practica/
Bien. Ya tenemos nuestra mquina virtual funcionando. Hemos configurado nuestro
sistema para que nos haga un volcado de memoria completo. Qu hacemos ahora?
Esperar? Instalar drivers y aplicaciones hasta que pete por algn lado?
Como no queremos esperar a tener un BSOD para practicar, Mr. Mark Russinovich,
Esta herramienta nos ayudar a crear los tpicos escenarios que nos podemos encontrar
en nuestro trabajo. Esta herramienta carga un driver llamado MyFault.sys, y este es el
que va a implementar las diferentes BSOD que nos podemos encontrar.
La herramienta en cuestin la podis descargar de la siguiente direccin:
http://download.sysinternals.com/Files/Notmyfault.zip
Tambin necesitaremos un debuggeador, para poder analizar los volcados de memoria.
Utilizaremos el debugeador de Microsoft WinDbg, el cual lo podemos descargar de:
http://www.microsoft.com/whdc/devtools/debugging/installx86.mspx
Jos Manuel Tella Llop, MVP de Windows, escribi un artculo en su da sobre cmo
debamos comportarnos ante una pantalla azul. El artculo original lo podis encontrar
aqu y nos servir de gua en todo momento:
http://multingles.net/docs/jmt/bsod.htm
En el artculo de Tella viene cmo instalar tanto las herramientas de debugeo como los
smbolos necesarios para poder analizar un volcado de memoria, as como un casque
real, a modo de ejemplo, en el que nos muestra la sencillez con la que se saca un error.
A partir de aqu asumiremos que tienes instalado WinDbg y tienes configurado
correctamente el path de smbolos.
El debugeador nos dice que casi con toda seguridad es una corrupcin de memoria. El
cdigo del BugCheck es D1 (DRIVER_IRQL_..)
Microsoft tiene registrado ms de 150 posibles cdigos de error. Todos ellos podemos
encontrarlo en la ayuda de la misma aplicacin. Ms concretamente en:Debuggin tools
for Windows-->Debuggin Techniques-->Blue Screen-->Bug Check Code Reference
Tambin nos pone que si queremos un anlisis ms exhaustivo podemos escribir el
comando !analyze v. As que escribimos en kd> el mencionado comando, con lo que
obtendremos una respuesta parecida a esta:
Vaya. Nos da el cdigo exacto de la pantalla azul, el bugcheck reference (D1), los 4
argumentos restantes de la pantalla azul y nos dice que el proceso que casc es el
proceso NotMyfault.exe. Ya tenemos a nuestro culpable, pero no nos dice nada del
driver (MyFault.sys) que provoca el casque real.
Cuando el debugeador no nos dice realmente quin es el culpable, y queremos averiguar
ms sobre dicho casque, podemos hacer varias cosas:
Ejecutar el comando !Thread
Con el comando !Thread conseguimos que nos muestre qu llamadas hizo el
subproceso en el sistema.
Llamando al comando !Thread, el debugeador nos muestra las siguientes lneas:
kd> !threadTHREAD 842f6600 Cid 049c.04ac Teb: 7ffdf000 Win32Thread:
e1a99168 RUNNING on processor 0 IRP List: 8428cc98: (0006,0094) Flags:
00000000 Mdl: 00000000 WARNING: Stack unwind information not
available. Following frames may be wrong.f3eb4c58 80579a8a 841d8f18
8428cc98 842b6ad0 myfault+0403
El proceso NotMyFault.exe hace una serie de llamadas, hasta que una pone en peligro la
estabilidad del sistema. En nuestro caso es:
Sabemos por la misma ayuda que nos brinda el debuggeador, que el cdigo de STOP
(0X0000008E) se corresponde al error
KERNEL_MODE_EXCEPTION_NOT_HANDLED, y que la primera direccin que
nos muestra el error (0XC0000005), se corresponde a
STATUS_ACCESS_VIOLATION. La misma ayuda nos dice que ha habido una
violacin en el acceso a memoria. Y todo esto con slo mirar la ayuda!
Cargando el CrashDump en el debugeador, vemos que este no nos muestra nada a
simple vista:
BugCheck 8E, {c0000005, 0, f3c61b8c, 0} *** WARNING: Unable to verify
checksum for NotMyfault.exe*** ERROR: Module load completed but
symbols could not be loaded for NotMyfault.exeProbably caused by :
memory_corruption Followup: memory_corruption
Nos dice que es un error de tipo 8E y que la causa probable es una corrupcin de
memoria. Toca analizar con el comando !analyze v
Analizando con este comando, vemos que la salida ya nos va mostrando otras cositas
interesantes:
Nos dice que la causa del cuelgue se podra dar por haber utilizado la aplicacin
NotMyFault.exe. Pero nuevamente tampoco nos dice nada del driver. Podemos utilizar
el comando !thread, para que nos muestre el subproceso que logr colgar a nuestro
sistema. Llamando a este comando conseguimos ms informacin, como por ejemplo
las llamadas que realiz la aplicacin al sistema, as como tambin nos muestra la IRP:
THREAD 842f3610 Cid 0118.0328 Teb: 7ffde000 Win32Thread: e1b11968
RUNNING on processor 0IRP List: 841c53b0: (0006,0094) Flags: 00000000
Mdl: 00000000Not impersonatingDeviceMap e183ac28Owning Process
842f2608 Image: NotMyfault.exeWait Start TickCount 12895 Ticks:
0Context Switch Count 557 LargeStack UserTime 00:00:00.0050 KernelTime
00:00:00.0140 Win32 Start Address NotMyfault (000401ccb)
Llamando al comando !irp <IRP>, este nos muestra el driver que nos faltaba por
descubrir:
kd> !irp 841c53b0Irp is active with 1 stacks 1 is current (=
0841c5420) No Mdl: No System Buffer: Thread 842f3610: Irp stack
trace. cmd flg cl Device File Completion-Context>[ e, 0] 5 0 842f76a8
84153028 00000000-00000000 *** ERROR: Module load completed but
symbols could not be loaded for myfault.sys \Driver\MYFAULT Args:
00000000 00000000 83360010 00000000kd> !irp 841c53b0Irp is active with
1 stacks 1 is current (= 0841c5420) No Mdl: No System Buffer: Thread
842f3610: Irp stack trace. cmd flg cl Device File Completion-Context
>[ e, 0] 5 0 842f76a8 84153028 00000000-00000000 \Driver\MYFAULT Args:
00000000 00000000 83360010 00000000
!peb.- Vlido para comprobar por ejemplo el nombre de equipo, path de instalacin,
nmero de procesadores, ruta de instalacin, etc
!token.- Muestra informacin sobre los objetos de seguridad
.cls.- Igual que la shell de Windows. Limpia la pantalla
Tienes las herramientas para poder hacerlo, y ya sabes cmo enfocar un problema de
estas caractersticas. Lo nico que te queda es practicar!
Aunque muchos piensen que es una falla o Bug del sistema, lo cierto es que ADS no es
ms que un feature (caracterstica) del sistema, y generalmente se usa para mantener
informacin asociada a un fichero.
Microsoft tiene amplia documentacin sobre ADS, en el que se incluye tutoriales,
scripts para creacin de ADS, etc..
Limitaciones de un ADS
Por defecto cualquier usuario del sistema puede usar esta caracterstica. Tan slo se
limita a aquellos ficheros en los que tengamos permiso de escritura. Es decir, un
Administrador, podr aadir un ADS en prcticamente todos los ficheros del sistema,
mientras que un usuario se limitar slo a los ficheros y directorios en donde tenga
acceso de escritura (Por defecto su perfil).
Por defecto ADS slo est limitado a volmenes NTFS como hemos visto. A travs de
red local (LAN) podremos mandar ficheros con ADS, siempre y cuando los volmenes
intermedios tengan el sistema de archivos NTFS.
La limitacin terica es mandar un ADS a travs de Internet. Tericamente no podemos
mandar un fichero con ADS (sea malicioso o no), ya que nuestro cliente de correo, el
medio (Internet) y el destinatario, slo mandara el stream con los datos, sin procesar los
dems. A lo largo de este documento podremos ver que en la prctica y bajo una serie
de factores, se podra mandar ADS ocultos en un fichero.
No vamos a hablar sobre creacin, modificacin y eliminacin de ADS, porque es una
caracterstica ampliamente documentada en la red. Al final de este documento se
proporcionarn enlaces a investigaciones pasadas sobre ste tema en concreto.
Microsoft no tiene de forma directa ninguna aplicacin para el escaneo ADS. De forma
indirecta tenemos dos opciones:
A travs del administrador de tareas (taskmgr.exe)
Registrando esta librera, conseguimos visualizar el Tab Streams slo para ficheros. Si
queremos que nos muestre el Tab Streams para analizar los streams de alguna unidad
(ej. C:) o por ejemplo de algn directorio, tendremos que incluir un par de entradas en el
registro.
--------------------No copies esta lnea--------------------------Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\Directory\shellex\PropertySheetHandlers\{C3ED1679814B-4DA9-AB00-1CAC71F5E337}]
[HKEY_CLASSES_ROOT\Drive\shellex\PropertySheetHandlers\{C3ED1679814B-4DA9-AB00-1CAC71F5E337}]
-------------------No copies esta lnea---------------------------Guarda este fichero como AddTabStream.reg. Clickea dos veces en el archivo que has
creado y aadir las entradas al registro necesarias para aadir el Tab en el explorer.
Para un directorio:
Escaneo de ADS
Frank Heyne ha desarrollado una herramienta que escanea documentos en busca de
ADS. La herramienta en cuestin es LADS.
Su funcionamiento es muy sencillo:
IMAGEN
Si quisisemos escanear nuestra unidad C: (incluyendo subdirectorios) en busca y
captura de ADS, ejecutaramos un comando tal que:
Lads C:\ /S
Cmo un usuario malicioso podra mandarnos un fichero con ADS? Ejemplo
prctico
Hemos explicado antes, que si creamos un archivo con ms de un stream de datos (sea
malicioso o no), ste slo ser soportado por un sistema que utilice el sistema de
archivos NTFS, lo que lo limita slo a ese campo. No podramos guardarlo en un
pendrive, mandarlo por mail, colgarlo en una Web para su descarga, etc...
El ejemplo que os pongo a continuacin, de libre descarga, es una prueba de concepto
que demuestra que efectivamente se pueden mandar ficheros que contengan ADS,
aprovechando un feature (caracterstica) de una herramienta ampliamente utilizada por
usuarios y empresas corporativas. La utilidad de copia de seguridad de Windows
(ntbackup).
Esta herramienta s incluye tanto el fichero como sus streams, lo que la convierte en
una gran herramienta para usuarios con perfiles muy distintos: