Nothing Special   »   [go: up one dir, main page]

4.recoleccion Datos Volatiles Windows

Descargar como doc, pdf o txt
Descargar como doc, pdf o txt
Está en la página 1de 27

10

Taller Práctico
(Recolección de Datos Volátiles y NO volátiles en sistemas operativos Windows)

1. Recomendaciones
1. Para la recolección de este tipo de datos debe tomar nota de cada uno de los pasos que
está realizando (Puede ser con pantallazos), para que de esta manera pueda ir
construyendo la bitácora de cada unos de los datos recolectados, y pueda por un lado
demostrar lo que hizo y por otro, que cualquier persona pueda reproducir lo que usted hizo,
en caso de requerir una auditoria al proceso.

2. A cada dato recolectado debe colocarle un hash, para preservar su integridad.

3. Las herramientas las puede bajar de:

http://technet.microsoft.com/en-us/sysinternals/bb842062

Existen herramientas que automatizan el proceso, si tienen otras herramientas o saben de


otras herramientas lo pueden hacer y documentan.

El entregable de este taller es un documento, con el desarrollo punto a punto,


con pantallazos de cada punto, y la respectiva documentación de este.

2. Alcance del Taller


En este taller vamos a realizar entre otras cosas la recolección de datos volátiles del
sistema, tanto en sistemas Windows como en sistemas Linux. Para ello debemos recolectar
la información que a continuación se describe:

a. Perfil del sistema


b. Fecha y hora actual
c. Tiempo en servicio del computador (uptime)
d. Conexiones de Red actuales
e. Puertos TCP y UDP abiertos
f. Ejecutables que abren Puertos TCP y UDP
g. Tablas de nombres NetBIOS en cache
h. Usuarios actualmente logeados
i. Tabla interna de enrutamiento
j. Procesos en ejecución
k. Servicios en ejecución
l. Tareas programadas
m. Archivos abiertos Remotamente
n. Histórico de comandos
o. Fechas de Acceso a Archivos
p. Volcado de memoria de procesos
q. Volcado de memoria completa

Para realizar esa recolección debemos seguir cada uno de los pasos que a continuación se
describen, adicionalmente debe ser ordenado en la recolección de los datos, cree una o
más carpetas de acuerdo a su criterio y debería crear un hash md5 a cada archivo:

NOTA: Todos los comandos los DEBE guardar en un archivo, para su posterior análisis, vea el
siguiente punto para que aprenda como capturar la salida.
10

3. Guía.
a) Como utilizar md5sum:

1. Ejecutar el siguiente commando:

md5sum miarchivo.txt > miarchivo.md5

(Con el simbolo “>” se redirije la salida a un archivo)

2. Se genera un archivo de la siguiente forma: ( ejecutar “cat miarchivo.md5”)

25f77551a9477f3f0bc7d0a138a59061 miarchivo.txt
<hash del archivo> <Nombre del archivo>

3. Para verificar si es correcto se realiza la siguiente acción:

md5sum -c miarchivo.md5
miarchivo.txt: OK

b) Como utilizar Netcat:

En muchas ocasiones uno debe recolectar la evidencia y enviarla a otra máquina sin
necesidad de guardarla en la misma máquina del incidente. Para este tipo de escenarios
existen dos herramientas de transmisión de información a través de la línea de comandos,
una es Netcat (http://www.downloadnetcat.com/) y la Otra Cryptcat
(http://sourceforge.net/projects/cryptcat/ ), la primera transmite sin encripción y la
segunda con encripción.

Como utilizar:

1. Debe estar situado en el directorio donde está el aplicativo, porque ese ejecutable
necesita las librerías que allí se encuentran.
2. En el Host ejecutar la siguiente instrucción, para ejecutar el servidor a donde vamos a
transmitir el archivo:

nc –v –l -p 2222 > archivo.txt

-v : Verbose mode
-l : Listening mode
-p : Port listeninig
archivo.txt : El nombre del archivo donde van a recibir los datos por red.

Una vez lo ejecuten y si el firewall esta activo, debe desbloquear el Puerto, a través de
un mensaje que allí aparece.
3. En la maquina cliente ejecutar el siguiente comando para capturar la información del
sistema (deben tener el nc.exe):

COMANDO | nc IP_SERVER PORT

Ejemplo: systeminfo | nc 10.20.1.1 2222


4. Una vez termine el comando, pasar al HOST desde donde ejecuto el comando y revisar
el archivo que coloco, en el caso del ejemplo es: “archivo.txt”
10

4. Recolección de Datos Volátiles en Windows.


a. Perfil del sistema

1. Abra una Terminal en Windows (Símbolo del Sistema).


2. Ejecute el comando “ systeminfo.exe” desde la ruta donde están las herramientas.
3. Debería obtener un resultado semejante a este:

4. Ejecutar el comando Psinfo.exe. La salida del comando debe ser algo similar a esto:
10

b. Fecha y hora actual

Ejecute el siguiente comando “date /T & time /T “

c. Tiempo en servicio del computador (uptime)

1. Con el comando utilizado en el primer punto “psinfo” da esta información.

2. Ejecutar “net statistics workstation “Si esta en un servidor cambio workstation por
“server”

d. Conexiones de Red Actuales

1. Con el comando “netstat –an” muestra las conexiones TCP/IP actuales, el protocolo
de conexión, la dirección local (MAC address), la IP y el estado de la conexión.
10

Al ver la columna de estado nos damos cuenta que conexiones están activas, cuando
la descripción de una línea está marcada con “ESTABLISHED”. Por favor lea la
documentación el comando. Ver http://es.wikipedia.org/wiki/Netstat para más
información.

e. Puertos TCP y UDP abiertos

Con “netstat –an” también podemos ver los puertos abiertos en una maquina con el fin
de determinar que puertos pueden denotar una posible puerta trasera, por ejemplo.
10

f. Ejecutables que abren Puertos TCP y UDP

Para examinar un poco más los puertos abiertos, deberíamos encontrar que
aplicaciones son las que están abriendo los puertos. Esto con el fin de determinar si en
realidad las aplicaciones que corren en esos puertos son las que deberían estar allí.
Utilizar el comando fport.exe, el cual lo pueden encontrar en
“http://www.mcafee.com/us/downloads/free-tools/fport.aspx”
10

Este comando nos permite ver los puertos abiertos TCP/IP y UDP, además muestra que
aplicación lo está utilizando, el PID, nombre del proceso, y ruta.

g. Tabla de nombres NetBIOS en cache

Los sistemas Windows posteriores a 2003, guardan las conexiones específicas por
nombre de NetBIOS en lugar de la dirección IP. Como investigador, eso no es bueno.
Un atacante puede cambiar fácilmente su nombre de NetBIOS para dañar o penetrar el
sistema. Y al momento de revisar los logs encontraremos el nombre errado y no el real.

Por ejemplo si cambiamos el nombre NetBIOS por “ATACANTE”, en los logs siempre
aparecerá que quien estaba conectado era “ATACANTE”.

La tabla no siempre está llena, eso depende de las conexiones. Solo muestra la tabla de
nombres NetBIOS y no la historia completa de las conexiones.

El comando es: “nbtstat –c “ (-c nos hace el volcado del cache).


10

En resumen, solo cuando un incidente está en proceso podemos capturar la IP real de


la maquina ya que se registra en el cache, y mientras dure esa información allí
podemos disponer de ella.
Algunas referencias:

 http://technet.microsoft.com/en-us/library/bb490938.aspx

 http://foro.portalhacker.net/index.php/topic,5422.0.html

h. Usuarios actualmente logeados

1. Usuarios Locales, con el comando local “net users” puede obtener las cuentas
locales de la maquina.

Para buscar más opciones del comando utilice “net users \? “

2. Este comando determina quien está usando los recursos en su computador local y a
que recurso esta compartido.

C:\Documents and
Settings\prueba\Escritorio\Herramientas\SysinternalsSuite>psloggedon.exe

i. Tabla interna de enrutamiento

Una de las formas más fáciles en que un atacante pueda redirigir el trafico de un
servidor o una estación, es alterando las tablas de enrutamiento. Para ello debemos
obtener esa información para su análisis, el comando utilizado es:

netstat -rn
10

j. Procesos en ejecución

1. Ejecutar el comando “netstat –b”, (Ejecute este comando en la maquina local) para
determinar que archivo ejecutable tiene un determinado número de proceso (PID).
10

2. Ejecutar el comando “C:\Documents and


Settings\prueba\Escritorio\Herramientas\SysinternalsSuite>pslist.exe”, para
determinar uso de cpu, procesos, memoria, estadísticas etc.

usage: pslist [-?] [-d] [-m] [-x][-t][-s [n] [-r n]  [\\computer [-u username] [-p password]]
[[-e] name | pid]

  -d This switch has PsList show statistics for all active threads on the system, grouping threads
with their owning process.

  -m This switch has PsList show memory-oriented information for each process, rather than the
default of CPU-oriented information.

  -x With this switch PsList shows CPU, memory and thread information for each of the processes
specified.

  -t Show process tree.


10

Run in task-manager mode, for optional seconds specified.


Press Escape to abort.
  -s [n]

  -r n Task-manager mode refresh rate in seconds (default is 1).

  -u Specifies optional user name for login to remote computer.

  -p Specifies optional password for user name. If you omit this you will be prompted to enter a
hidden password.
Instead of listing all the running processes in the system, this parameter narrows PsList's scan
to those processes that begin with the name process. Thus:
name
pslist exp

  would statistics for all the processes that start with "exp", which would include Explorer.

  -e Use the -e switch if you want the process name to be treated as an exact match instead of a
partial match.
Instead of listing all the running processes in the system, this parameter narrows PsList's scan
to the process that has the specified PID. Thus:
  pid
pslist 53
 
would dump statistics for the process with the PID 53.

3. Con el comando anterior también se puede determinar el tiempo que un proceso


lleva en ejecución. “pslist <nombre_proceso>”. Ejemplo: pslist winlogon

4. También se puede determinar qué tanta memoria virtual utiliza dicho proceso. Con
la opción “pslist –me <proceso>. Ejemplo: pslist –me winlogon

5. El comando “C:\Documents and


Settings\prueba\Escritorio\Herramientas\SysinternalsSuite>lisdlls.exe”, podemos
determinar todas las “.dll” utilizados en un proceso, servicio o aplicación. Se puede
determinar la línea de comandos con la cual una aplicación fue lanzada.
10
10

6. Con la salida de este comando puede examinar nombres de procesos inesperados o


usuarios no usuales corriendo procesos. “C:\Documents and
Settings\prueba\Escritorio\Herramientas\SysinternalsSuite>pslist.exe”,
10

k. Servicios en ejecución

Con este comando podemos examinar todos los servicios en una maquina
“C:\Documents and
Settings\prueba\Escritorio\Herramientas\SysinternalsSuite>psservice.exe”.
10

l. Tareas programadas

Con el comando “at” podemos examinar y programar tareas. Al utilizar un atacante


este comando puede dejar tareas programas a determinadas horas y días.

El comando AT programa la ejecución de comandos y programas en un equipo a


una hora y fecha especificadas. El servicio de programación debe estar en
ejecución para utilizar el comando AT.

AT [\\equipo] [ [id] [/DELETE] | /DELETE [/YES]]


AT [\\equipo] hora [/INTERACTIVE]
[ /EVERY:fecha[,...] | /NEXT:fecha[,...]] "comando"

\\equipo Especifica un equipo remoto. Si se omite este


parámetro, los comandos se programan en el equipo
local.
id Es un número de identificación asignado al comando
programado.
/delete Cancela un comando programado. Si se omite id, se
cancelarán todos los comandos programados en el equipo.
/yes Se usa con el comando de cancelación de todos los
trabajos cuando no se desea ninguna confirmación.
/interactive Permite a la tarea interactuar con el escritorio del
usuario cuya sesión coincide con el momento de
ejecución de la tarea.
/every:fecha[,...] Ejecuta el comando cada día de la semana o mes
especificado. Si se omite la fecha, se asume que es el
día actual del mes.

/next:fecha[,...] Ejecuta el comando especificado la próxima vez que


aparezca ese día (por ejemplo, el próximo jueves). Si
se omite la fecha, se asume que es el día actual del
mes.
"comando" Es el comando de Windows NT o programa por lotes que se
va a ejecutar.

m. Archivos abiertos remotamente

Con el comando “C:\Documents and


Settings\prueba\Escritorio\Herramientas\SysinternalsSuite>psfile.exe”. Podemos ver la
lista de los archivos que otros computadores tienen abiertos en la maquina.
10

usage: pPsfile [\\RemoteComputer [-u Username [-p Password]]] [[Id | path] [-c]]

-u Specifies optional user name for login to remote computer.

-p Specifies optional password for user name. If you omit this you will be prompted to enter a
hidden password.

Id Identifier (as assigned by PsFile) of the file for which to display information or to close.

Path Full or partial path of files to match for information display or close.

-c Closes the files identifed by ID or path.

n. Histórico de comandos
La historia de comandos ejecutados en Windows es virtual, mientras que en Linux es
persistente.

En Linux podemos ver el log histórico de comandos en el directorio home de cada


usuario, en el archivo “.bash_history” (dependiendo del shell que se ejecute en la
maquina).

o. Fechas de Acceso a Archivos

El comando “dir” con algunos parámetros nos puede mostrar los últimos tiempos de
acceso en archivos y fólderes. Para este ejemplo ejecute el comando “dir” sobre un
directorio y observe la salida, luego ejecuta el comando:” dir /t:a /a /s /o:d”

Lista de opciones del comando “dir”:


10

p. Herramienta de propósito General

Con este programa puede ver todos los procesos, fólder/archivos de arranque, etc… El
primer programa “C:\Documents and
Settings\prueba\Escritorio\Herramientas\SysinternalsSuite>autoruns.exe” que lanza una
interfaz grafica, y el segundo “C:\Documents and
Settings\prueba\Escritorio\Herramientas\SysinternalsSuite>autorunsc.exe” lo hace en
modo texto.
10
10

q. Volcado de memoria de procesos

Como este tipo de volcados de memoria se escriben al disco duro, debemos pensar en
disminuir el impacto tanto como sea posible en el sistema sospechoso, como estos
volcados escriben archivos muy grandes en el disco, podemos probablemente borrar
material valiosos de los espacios sin localizar (Unallocated Space). Es por eso que debemos
pensar en conectar una unidad de red directamente al sistema afectado. Usando el
comando:

C:\> net use Z: \\<IP>\<DIRECTORIO>

pmdump.exe

Puede bajarlo de: http://ntsecurity.nu/toolbox/pmdump/

“pmdump.exe -list” (muestra todos los PID que están ejecutándose)

“pmdump.exe -1032 winlogondump.txt” (Sacar el volcado del proceso 1032 al archivo


winlogondump.txt)
10

Por el momento podemos revisar el archivo .txt generado con cualquier editor de texto.

Userdump.exe
Este comando habilita la captura del espacio en memoria utilizado por cualquier proceso
en ejecución. Puede capturar uno o más procesos en una sola línea de comandos. Vea la
ayuda que sigue a continuación y explore las opciones.

Explicación:
http://support.microsoft.com/kb/241215/es

Descargar:
http://www.microsoft.com/downloads/details.aspx?FamilyID=E089CA41-6A87-40C8-BF69-
28AC08570B7E&displaylang=en

Para utilizar este programa debe ejecutar el siguiente comando:

userdump8.1\x86>userdump.exe

User Mode Process Dumper (Version 8.1.2929.4)


Copyright (c) Microsoft Corp. All rights reserved.
userdump.exe -p
Displays a list of running processes and process IDs.

userdump.exe [-k] [-w] <ProcessSpec> [<TargetDumpFile>]


Dumps one process or processes that share an image binary file name.

-k optionally causes processes to be killed after being dumped.

-w optionally includes window information into the dump.

<ProcessSpec> is a decimal or 0x-prefixed hex process ID, or the


base name and extension (no path) of the image file used to create
a process.

<TargetDumpFile> is a legal Win32 file specification. If not specified,


dump files are generated in the current directory using a name
based on the image file name.

userdump.exe -m [-k] [-w] <ProcessSpec> [<ProcessSpec>...] [-d <TargetDumpPath>]

Same as above, except dumps multiple processes.

-d <TargetDumpPath> supplies the directory where the dumps will go.


10

The default is the current directory.

userdump.exe -g [-k] [-w] [-d <TargetDumpPath>]


Similar to above, except dumps Win32 GUI apps that appear hang.

userdump.exe -I [-d <TargetDumpPath>]


To change just in time debugger to UserDump.
This command will not actually start UserDump.
If you don't setup userdump, please copy userdump.exe and dbghelp.dll to %wi
ndir%\system32\kktools folder.

-d <TargetDumpPath> supplies the directory where the dumps will go.


The default is a current directory of the target process.

1. Ejecute el comando “userdump –p” para que salga una lista de todos los procesos del
sistema, y pueda escoger el PID del proceso a volcar.
10

2. Ejecute el comando “userdump <PID> archivo.dmp” para guardar el volcado del


proceso a un archivo.

dumpchk.exe

Dumpchk es una utilidad de la línea de comandos que puede utilizar para comprobar que
se ha creado un archivo de volcado de memoria correctamente. Dumpchk no requiere
acceso a símbolos.

Explicación:
http://support.microsoft.com/kb/156280/es

Descargar:
http://www.microsoft.com/download/en/details.aspx?id=18546

1. Copie el archivo .dmp que creo en el punto anterior al directorio “C:\Forense\Forensic


Acquisition Utilities\Dumps”.

2. Ejecute el comando “dumpchk.exe <archivo.dmp> donde archivo.dmp es el archivo


del volcado de memoria del proceso.
10

La salida del comando anterior confirma el nombre del archivo su ubicación y provee
una lista de las DLL asociadas, tienen además una estampilla de tiempo.

3. Si sale el siguiente mensaje debe consultar las siguientes direcciones para solucionar el
problema, o sencillamente para que se entere de cómo debería solucionar el problema.

 http://www.microsoft.com/whdc/DevTools/Debugging/default.mspx
 http://www.microsoft.com/whdc/devtools/debugging/debugstart.mspx
 http://www.microsoft.com/whdc/devtools/debugging/installx86.mspx
 http://www.microsoft.com/whdc/devtools/debugging/symbolpkg.mspx
10

strings.exe

Podemos examinar el volcado del proceso en memoria para buscar información adicional.
Para ello utilizamos el comando “strings.exe” y le pasamos como parámetro el archivo
.dmp que creamos. El resulta serán todas las palabras bien formadas dentro de dicho
archivo, eliminando así todo lo demás que puede ser basura. Lo que allí encontrará será
todo lo que ese proceso ha colocado en memoria.

Para mayor información puede ver el siguiente enlace:

http://technet.microsoft.com/en-us/sysinternals/bb897439

Kernel Memory Space Analyzer

Este programa no lo utilizaremos en este taller, pero puede ser de ayuda en alguna
investigación futura. Vea toda la descripción del programa en el siguiente enlace:

http://www.microsoft.com/downloads/details.aspx?familyid=E84D3B35-63C3-445B-810D-
9FED3FDEB13F&displaylang=en
10

r. Volcado de completo de la Memoria

Para realizar el volcado completo de la memoria, vamos a utilizar una herramienta muy
conocida en ambientes Linux, “dd” la cual nos sirve para realizar el volcado completo de la
memoria.

1. Para utilizar esta herramienta ejecute el siguiente comando para ver los parámetros del
comando, puede bajar la herramienta de:

http://uranus.chrysocome.net/linux/rawwrite/

dd.exe --help

2. Para realizar el volcado de la memoria debemos realizar lo siguiente. (Una Vez realizado
el volcado, puede utilizar el comando “string”, para realizar búsquedas.

dd.exe if=\\.\PhysicalMemory of=fulldump.dmp

5. Recolección de Datos NO Volátiles en Windows.


Taller Investigativo en Clase: Presente un informe que explique
cómo recolectar estos datos. Que se debe recolectar y como lo
debe hacer.
10

Contenido del Taller No. 5


1. Recomendaciones..............................................................................................................1
2. Alcance del Taller...............................................................................................................1
3. Guía.....................................................................................................................................2
4. Recolección de Datos Volátiles en Windows..................................................................3
a. Perfil del sistema..............................................................................................................3
b. Fecha y hora actual...........................................................................................................3
c. Tiempo en servicio del computador (uptime)..................................................................3
d. Conexiones de Red Actuales.............................................................................................4
e. Puertos TCP y UDP abiertos..............................................................................................4
f. Ejecutables que abren Puertos TCP y UDP.......................................................................5
g. Tabla de nombres NetBIOS en cache................................................................................5
h. Usuarios actualmente logeados.......................................................................................6
i. Tabla interna de enrutamiento........................................................................................7
j. Procesos en ejecución......................................................................................................7
k. Servicios en ejecución....................................................................................................11
l. Tareas programadas.......................................................................................................11
m. Archivos abiertos remotamente.................................................................................12
n. Histórico de comandos...................................................................................................12
o. Fechas de Acceso a Archivos..........................................................................................13
p. Herramienta de propósito General................................................................................13
q. Volcado de memoria de procesos..................................................................................14
r. Volcado de completo de la Memoria.............................................................................19
10

5. Recolección de Datos NO Volátiles en Windows..........................................................20

También podría gustarte