Adquisición de evidencias volátiles

A la hora de realizar una adquisición de evidencias en análisis forense, es importante tener en cuenta el orden de adquisición y obtener las evidencias volátiles en primer lugar. Aparte de la memoria RAM, debemos considerar otros elementos fundamentales como pueden ser registros de la caché, tablas de enrutamiento, caché ARP, procesos, etc.

En este post se pretende hacer una recopilación de todos aquellos comandos y herramientas, en entornos Windows, que nos permiten obtener dicha información volátil y sensible antes de realizar el volcado de la RAM. Aunque es cierto que alguna de esta información se puede obtener mediante dicho volcado, no está de más conocer estas herramientas para obtener los datos de una forma rápida. Una buena práctica es ejecutar todos estos comandos en un script y obtener toda la información en una única ejecución.

(Sobra decir que los comandos y aplicaciones reflejados a continuación se ejecutan bajo la responsabilidad del lector, y que recomendamos «trastear» un poco con ellos para conocerlos antes de aplicarlos a un forense real)

Información de Procesos

  • Procesos en ejecución en memoria. Herramienta utilizada: PsList.
    pslist.exe /accepteula >> Procesos.txt
  • Especificación de procesos en ejecución de procesos y consumo de recursos.
    tasklist.exe >> Procesos_en_uso.txt
  • Procesos en ejecución e información de cada proceso. Herramienta utilizada: CProcess.
    cprocess.exe /stext Procesos_de_usuarios.txt
  • Árbol jerárquico de los procesos en ejecución.
    pslist.exe -t /accepteula >> procesos_arbol.txt
  • Detalle de todos los procesos en ejecución y listado de librerías DLL asociados a cada proceso. Herramienta utilizada: ListDLL.
    listdlls.exe /accepteula >> Procesos_dependencias.txt
  • Listado agrupado de procesos. Herramienta utilizada: OpenPorts.
    openports.exe -path >> Mapa_agrupado_puertos_procesos.txt
  • Información sobre los ficheros y directorios que un programa tiene abiertos. Herramienta utilizada: Handle.
    Handle.exe /accepteula >> Procesos_manejadores.txt

Información de Red

  • Configuración de las interfaces de red.
    ipconfig /all >> Configuracion_red.txt
  • Adaptadores de red en modo promiscuo. Herramienta utilizada: PromiscDetect.
    promiscdetect.exe >> Adaptadores_promiscuos.txt
  • Listado de las conexiones de DNS que se han realizado.
    ipconfig /displaydns >> DNS_consultas.txt
  • Muestra las estadísticas del protocolo y las conexiones actuales de TCP/IP usando NBT (NetBIOS sobre TCP/IP).
    nbtstat -s >> Sesion_netbios.txt
  • Información de la cache NetBios.
    nbtstat -c >> Cache_netbios.txt
  • Transferencia de archivos sobre NetBIOS.
    net file >> transferencia-ficheros-sobre-netbios.txt
  • Caché ARP.
    arp -a >> arp-cache.txt
  • Listado de conexiones activas.
    netstat -an |findstr /i "estado listening established" >> Conexiones_activas.txt
  • Relación de aplicaciones con puertos abiertos.
    netstat -anob > Aplicaciones_PuertosAbiertos.txt
  • Tabla de enrutamiento: tabla de rutas de las redes accedidas, la máscara de red y la puerta de enlace.
    netstat -r >> Tabla_rutas.txt
  • Conexiones activas, se especifica el protocolo, direcciones IP remotas y los puertos.
    netstat -ano >> Conexiones_activas.txt
  • Fichero hosts.
    type c:\windows\system32\drivers\etc\hosts >> Hosts.txt
  • Listado de todos los protocolos de red (FTP, Telnet, mailto…) que están instalados en el sistema. Herramienta utilizada: URLProtocolView.
    urlprotocolview.exe /stext Red_Protocolos.txt

Información de Ficheros

  • Listado de las unidades de red “mapeadas”.
    net use > UnidadesMapeadas.txt
  • Carpetas compartidas: listado de recursos compartidos.
    net share > CarpetasCompartidas.txt
  • Listado de ficheros abiertos. Herramienta utilizada: OpenFilesView.
    START /WAIT openedfilesview.exe /stext Ficheros_abiertos.txt
  • Ficheros remotos abiertos. Herramienta utilizada: PsFile.
    psfile.exe /accepteula >> Ficheros_remotos_abiertos.txt

Información de usuarios

  • Usuarios remotos que han iniciado sesión.
    net sessions >> Usuarios_remotos_ip.txt
  • Muestra las sesiones activas en el sistema. Herramienta utilizada: LogonSessions.
    logonsessions.exe /accepteula >> Sesiones_activas.txt
  • Listado de usuarios que han iniciado sesión localmente en el equipo. Herramienta utilizada: PsLoggedOn.
    psloggedon.exe /accepteula >> Usuarios_inicio_sesion.txt

Información útil del sistema

  • Tiempo de actividad del sistema: período desde que el equipo se encuentra encendido. Herramienta utilizada: Uptime.
    uptime.exe >> Tiempo_encendido.txt
  • Contenido del portapapeles. Herramienta utilizada: Pclip.
    pclip.exe >> Conetenido_portapapeles.txt
  • O bien con la herramienta InsideClipboard.
    InsideClipboard.exe /stext “Informacion_portapapeles.txt”
  • Histórico de la consola de comandos.
    doskey /history >> "HistoricoCMD.txt
  • Listado de servicios en ejecución.
    sc query >> servicios_ejecucion.txt

Ya que cada maestrillo tiene su librillo es posible que utilicéis o conozcáis herramientas similares que realicen la misma función, aun así, espero que os sea de utilidad esta recopilación.

Comments

  1. Muy útil Yolanda :D

  2. Buena aportación, gracias

  3. Mejor generar lo primero de todo el dump de la RAM por aquello del orden de volatilidad. En cuanto a la herramienta a utilizar DumpIt de la suite Moonsols o winpmem, dentro del framework Rekall.

    Un saludo y enhorabuena por el post :-)

  4. @neofito: Hay información que es más volátil que la RAM, como es la caché ARP, NetBios, tablas enrutamiento, etc. ya que esta información se puede perder fácilmente.Coincido contigo en las herramientas de adquisición de la RAM ;)

    Muchas gracias por vuestros comentarios!

  5. Hola Yolanda

    Desde mi punto de vista raro es que haya algo más volátil que la RAM, dado que o se almacena en disco o se almaena en la RAM (que fué antes, el huevo o la gallina ;-) ).

    Independientemente de esta pequeña disquisición, me reitero en lo dicho: ¡enhorabuena por el post!

    Un saludo