<?xml version="1.0" encoding="ISO-8859-15"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Sergio Hernando &#187; Windows forensics</title>
	<atom:link href="http://www.sahw.com/wp/archivos/tag/windows-forensics/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.sahw.com/wp</link>
	<description>Seguridad de la Información y Auditoría de Sistemas</description>
	<lastBuildDate>Thu, 29 Jul 2010 17:42:44 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Más análisis forense de memoria en sistemas Windows: Mandiant Memoryze y AuditViewer</title>
		<link>http://www.sahw.com/wp/archivos/2008/12/08/mas-analisis-forense-de-memoria-en-sistemas-windows-mandiant-memoryze-y-auditviewer/</link>
		<comments>http://www.sahw.com/wp/archivos/2008/12/08/mas-analisis-forense-de-memoria-en-sistemas-windows-mandiant-memoryze-y-auditviewer/#comments</comments>
		<pubDate>Mon, 08 Dec 2008 22:48:40 +0000</pubDate>
		<dc:creator>Sergio Hernando</dc:creator>
				<category><![CDATA[Forensics]]></category>
		<category><![CDATA[Analisis forense Windows]]></category>
		<category><![CDATA[AuditViewer]]></category>
		<category><![CDATA[Memoryze]]></category>
		<category><![CDATA[Windows forensics]]></category>

		<guid isPermaLink="false">http://www.sahw.com/wp/?p=2817</guid>
		<description><![CDATA[Hola, El otro día efectuamos un análisis forense de memoria de una máquina en Windows en producción, y lo hicimos empleando dos herramientas: Mantech Memory DD y Volatility. Hoy vamos a realizar otro análisis empleando herramientas distintas, para ir ampliando un poco el abanico de metodologías que existen, que son muchas. Utilizaremos Mandiant Memoryze y [...]]]></description>
			<content:encoded><![CDATA[<p>Hola,</p>
<p>El otro día <a href="http://www.sahw.com/wp/archivos/2008/12/02/analisis-forense-de-memoria-en-sistemas-windows/">efectuamos un análisis forense de memoria</a> de una máquina en Windows en producción, y lo hicimos empleando dos herramientas: <a href="http://www.mantech.com/msma/mdd.asp">Mantech Memory DD</a> y <a href="https://www.volatilesystems.com/default/volatility#overview">Volatility</a>.</p>
<p>Hoy vamos a realizar otro análisis empleando herramientas distintas, para ir ampliando un poco el abanico de metodologías que existen, que son muchas. Utilizaremos <a href="http://www.mandiant.com/software/memoryze.htm">Mandiant Memoryze</a> y <a href="http://blog.mandiant.com/archives/50">AuditViewer</a>, y nuestro objetivo es el mismo que teníamos el otro día: obtener e interpretar los datos volátiles (RAM) de una máquina en ejecución.</p>
<p><strong>1. Extracción de los datos forenses</strong></p>
<p>Una vez hayamos instalado Mandiant Memoryze, lo primero es <a href="http://www.openrce.org/articles/full_view/32">generar un esquema XML</a> con el tipo de datos que vamos a extraer. Los autores recomiendan usar un <em>script</em> similar al que sigue:</p>
<pre class="xml">&nbsp;
<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;</span> ?xml <span style="color: #000066;">version</span>=<span style="color: #ff0000;">&quot;1.0&quot;</span> <span style="color: #000066;">encoding</span>=<span style="color: #ff0000;">&quot;utf-8&quot;</span><span style="font-weight: bold; color: black;">?&gt;</span></span>
<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;script</span> <span style="color: #000066;">xmlns:xsi</span>=<span style="color: #ff0000;">&quot;http://www.w3.org/2001/XMLSchema-instance&quot;</span> <span style="color: #000066;">xmlns:xsd</span>=<span style="color: #ff0000;">&quot;http://www.w3.org/2001/XMLSchema&quot;</span> <span style="color: #000066;">chaining</span>=<span style="color: #ff0000;">&quot;implicit&quot;</span><span style="font-weight: bold; color: black;">&gt;</span></span>
  <span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;commands<span style="font-weight: bold; color: black;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;command</span> <span style="color: #000066;">xsi:type</span>=<span style="color: #ff0000;">&quot;ExecuteModuleCommand&quot;</span><span style="font-weight: bold; color: black;">&gt;</span></span>
      <span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;module</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;w32processes-memory&quot;</span> <span style="color: #000066;">version</span>=<span style="color: #ff0000;">&quot;1.0.34.0&quot;</span> <span style="font-weight: bold; color: black;">/&gt;</span></span>
      <span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;config</span> <span style="color: #000066;">xsi:type</span>=<span style="color: #ff0000;">&quot;ParameterListModuleConfig&quot;</span><span style="font-weight: bold; color: black;">&gt;</span></span>
<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;parameters<span style="font-weight: bold; color: black;">&gt;</span></span></span>
<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;param</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;pid&quot;</span><span style="font-weight: bold; color: black;">&gt;</span></span>
            <span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;value</span> <span style="color: #000066;">xsi:type</span>=<span style="color: #ff0000;">&quot;xsd:unsignedInt&quot;</span><span style="font-weight: bold; color: black;">&gt;</span></span>4294967295<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/value<span style="font-weight: bold; color: black;">&gt;</span></span></span>
          <span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/param<span style="font-weight: bold; color: black;">&gt;</span></span></span>
<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;param</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;handles&quot;</span><span style="font-weight: bold; color: black;">&gt;</span></span>
            <span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;value</span> <span style="color: #000066;">xsi:type</span>=<span style="color: #ff0000;">&quot;xsd:boolean&quot;</span><span style="font-weight: bold; color: black;">&gt;</span></span>true<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/value<span style="font-weight: bold; color: black;">&gt;</span></span></span>
          <span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/param<span style="font-weight: bold; color: black;">&gt;</span></span></span>
<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;param</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;sections&quot;</span><span style="font-weight: bold; color: black;">&gt;</span></span>
            <span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;value</span> <span style="color: #000066;">xsi:type</span>=<span style="color: #ff0000;">&quot;xsd:boolean&quot;</span><span style="font-weight: bold; color: black;">&gt;</span></span>true<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/value<span style="font-weight: bold; color: black;">&gt;</span></span></span>
          <span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/param<span style="font-weight: bold; color: black;">&gt;</span></span></span>
<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;param</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;ports&quot;</span><span style="font-weight: bold; color: black;">&gt;</span></span>
            <span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;value</span> <span style="color: #000066;">xsi:type</span>=<span style="color: #ff0000;">&quot;xsd:boolean&quot;</span><span style="font-weight: bold; color: black;">&gt;</span></span>true<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/value<span style="font-weight: bold; color: black;">&gt;</span></span></span>
          <span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/param<span style="font-weight: bold; color: black;">&gt;</span></span></span>
<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;param</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;strings&quot;</span><span style="font-weight: bold; color: black;">&gt;</span></span>
            <span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;value</span> <span style="color: #000066;">xsi:type</span>=<span style="color: #ff0000;">&quot;xsd:boolean&quot;</span><span style="font-weight: bold; color: black;">&gt;</span></span>false<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/value<span style="font-weight: bold; color: black;">&gt;</span></span></span>
          <span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/param<span style="font-weight: bold; color: black;">&gt;</span></span></span>          
        <span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/parameters<span style="font-weight: bold; color: black;">&gt;</span></span></span>
      <span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/config<span style="font-weight: bold; color: black;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/command<span style="font-weight: bold; color: black;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;command</span> <span style="color: #000066;">xsi:type</span>=<span style="color: #ff0000;">&quot;ExecuteModuleCommand&quot;</span><span style="font-weight: bold; color: black;">&gt;</span></span>
      <span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;module</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;w32drivers-signature&quot;</span> <span style="color: #000066;">version</span>=<span style="color: #ff0000;">&quot;1.0.34.0&quot;</span> <span style="font-weight: bold; color: black;">/&gt;</span></span>
    <span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/command<span style="font-weight: bold; color: black;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;command</span> <span style="color: #000066;">xsi:type</span>=<span style="color: #ff0000;">&quot;ExecuteModuleCommand&quot;</span><span style="font-weight: bold; color: black;">&gt;</span></span>
      <span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;module</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;w32kernel-rootkitdetection&quot;</span> <span style="color: #000066;">version</span>=<span style="color: #ff0000;">&quot;1.0.30.0&quot;</span> <span style="font-weight: bold; color: black;">/&gt;</span></span>
       <span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;config</span> <span style="color: #000066;">xsi:type</span>=<span style="color: #ff0000;">&quot;ParameterListModuleConfig&quot;</span><span style="font-weight: bold; color: black;">&gt;</span></span>
<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;parameters<span style="font-weight: bold; color: black;">&gt;</span></span></span>
<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;param</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;idt&quot;</span><span style="font-weight: bold; color: black;">&gt;</span></span>
            <span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;value</span> <span style="color: #000066;">xsi:type</span>=<span style="color: #ff0000;">&quot;xsd:boolean&quot;</span><span style="font-weight: bold; color: black;">&gt;</span></span>true<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/value<span style="font-weight: bold; color: black;">&gt;</span></span></span>
        <span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/param<span style="font-weight: bold; color: black;">&gt;</span></span></span>
<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;param</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;ssdt_index&quot;</span><span style="font-weight: bold; color: black;">&gt;</span></span>
            <span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;value</span> <span style="color: #000066;">xsi:type</span>=<span style="color: #ff0000;">&quot;xsd:boolean&quot;</span><span style="font-weight: bold; color: black;">&gt;</span></span>true<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/value<span style="font-weight: bold; color: black;">&gt;</span></span></span>
        <span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/param<span style="font-weight: bold; color: black;">&gt;</span></span></span>
<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;param</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;ssdt_inline&quot;</span><span style="font-weight: bold; color: black;">&gt;</span></span>
            <span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;value</span> <span style="color: #000066;">xsi:type</span>=<span style="color: #ff0000;">&quot;xsd:boolean&quot;</span><span style="font-weight: bold; color: black;">&gt;</span></span>true<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/value<span style="font-weight: bold; color: black;">&gt;</span></span></span>
        <span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/param<span style="font-weight: bold; color: black;">&gt;</span></span></span>
<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;param</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;drivers&quot;</span><span style="font-weight: bold; color: black;">&gt;</span></span>
            <span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;value</span> <span style="color: #000066;">xsi:type</span>=<span style="color: #ff0000;">&quot;xsd:boolean&quot;</span><span style="font-weight: bold; color: black;">&gt;</span></span>true<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/value<span style="font-weight: bold; color: black;">&gt;</span></span></span>
        <span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/param<span style="font-weight: bold; color: black;">&gt;</span></span></span>
        <span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/parameters<span style="font-weight: bold; color: black;">&gt;</span></span></span>
      <span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/config<span style="font-weight: bold; color: black;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/command<span style="font-weight: bold; color: black;">&gt;</span></span></span>
  <span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/commands<span style="font-weight: bold; color: black;">&gt;</span></span></span>
<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/script<span style="font-weight: bold; color: black;">&gt;</span></span></span>
&nbsp;</pre>
<p>Este <em>script</em> permite extraer la siguiente información:</p>
<ul>
<li>Una auditoría completa de procesos, con puertos (si realizan llamadas TCP/IP), manejadores y secciones. No se capturan <em>strings</em>, porque consumen un elevado espacio en disco al barrer el espacio de direcciones de los procesos en ejecución, y para el caso que nos ocupa, no nos ofecerá información relevante.</li>
<li>Un barrido de firmas de <em>drivers</em> para enumerar la totalidad de controladores cargados, incluso los que están ocultos como consecuencia de romper los vínculos con la lista de módulos cargados (PsLoadedModuleList)</li>
<li>Detección de <em>hooks</em>, analizando hooks de kernel comunes (ojito, que aunque sí es frecuente, no todos los provocan elementos <em>malware</em>)</li>
</ul>
<p>Salvaremos este documento con el nombre <em>AllAudits.Batch.XML</em>, en la misma ruta donde hayamos instalado Memoryze. Una vez esto hecho, estamos en condiciones de efectuar la extracción, indicándole al programa que emplee el <em>script</em> que acabamos de generar:</p>
<blockquote><p>C:\Archivos de programa\Mandiant\Memoryze>Memoryze.exe -o -script AllAudits.Batch.xml -encoding none</p></blockquote>
<p>La ejecución de Memoryze generará una serie de ficheros. En nuestro caso:</p>
<p><img src="http://www.sahw.com/images/forensics/mandiant1.png" alt="mandiant memoryze" /></p>
<p>Los ficheros <em>issues</em> son aquellos que recogen problemas a la hora de efectuar la extracción. Hay uno para cada tipo, y conviene repasarlos para determinar qué nos hemos dejado en el tintero, y por qué. Normalmente responderán a <em>warnings</em> relacionados con la inaccesibilidad a la hora de traduccir o mapear direcciones de memoria, pero no perdemos nada echando un ojo a los avisos generados durante el evento de extracción.</p>
<p><strong>2. Interpretación de los resultados.</strong></p>
<p>Al ser estructuras XML son datos fácilmente interpretables utilizando cualquier editor, si bien nos apoyaremos en <a href="http://blog.mandiant.com/archives/50">AuditViewer</a>, un conjunto de scripts de Python desarrollados por los mismos programadores de Memoryze, lo que facilitará enormemente la ordenación e inspección de resultados.</p>
<p>Es por tanto que <a href="http://www.python.org/download/">necesitaremos Python</a> para poder interpretar el <em>output</em> de la auditoría, y adicionalmente, <a href="http://www.wxpython.org/download.php">WxPython</a> como <em>GUI toolkit</em> (esto permitirá visualizar en modo de interfaz gráfico el script de análisis). Mi consejo es descargar el <em>runtime</em> <em>win32-unicode</em> para Python 2.6 (el que a día de publicar este texto, es la última versión estable)</p>
<p>Una vez cumplidos los requisitos, un doble <em>click</em> sobre <em>AuditViewer.py</em> bastará para poder abrir el visor de auditoría, aunque el que lo prefiera, puede lanzarlo desde la linea de comandos.</p>
<p><img src="http://www.sahw.com/images/forensics/auditviewer1.png" alt="auditviewer" /></p>
<p>Una vez abierto el interfaz, seleccionaremos la auditoría (directorio <em>Audits</em> en el directorio de instalación de Memoryze) y automáticamente, se parsearán los resultados de los ficheros XML generados en la adquisición.</p>
<p>La información es cuantiosa, y merece la pena efectuar una captura de prueba para poder ver los detalles. Por poner un ejemplo, esta es la información que nos permite ver que en el momento de adquirir los datos, se estaba ejecutando con PID 3232, <a href="http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html">una sesión PuTTY</a> desde una IP local 192.168.213.250 a la de otra máquina con IP 192.168.213.254 (en este caso, es mi servidor FreeBSD), identificando el usuario Windows con el cual se está ejecutando el programa. Como curiosidad, en la misma captura aparece <em>fdm.exe</em>, el proceso de <a href="http://www.freedownloadmanager.org/">Free Download Manager</a>, así como el propio proceso de Memoryze (<em>memoryze.exe</em>) y del motor Python que da servicio al visor de auditoría (<em>python.exe</em>)</p>
<p><img src="http://www.sahw.com/images/forensics/auditviewer2.png" alt="auditviewer" /></p>
<p><img src="http://www.sahw.com/images/forensics/auditviewer3.png" alt="auditviewer" /></p>
<p>En este otro ejemplo, el usuario de sistema <em>NT AUTHORITY\SYSTEM</em>, con PID 4, ejecuta dos acciones TCP/IP, la primera es una conexión Samba contra el servidor FreeBSD de mi red local, indicando IPs, y la siguiente, es una conexión HTTP contra una IP de Sourceforge. También se indican las IPs origen y destino.</p>
<p><img src="http://www.sahw.com/images/forensics/auditviewer4.png" alt="auditviewer" /></p>
<p>Como podéis ver, los procesos de extracción son completos y permiten obtener para un sistema en ejecución información valiosa que puede ser empleada en procesos de investigación. Los procesos de adquisición y análisis de información volátil son cada vez más oportunos, ya que buena parte de la carga incriminatoria de las pruebas puede residir en la actividad que una máquina en funcionamiento tenía en un momento determinado (por ejemplo, en el momento de detener a un sospechoso). Estos análisis complementan la información recogida siguiendo el paradigma forense tradicional, en el que existe un escenario <em>post-mórtem</em> con la máquina apagada, con lo que siempre que sea posible, es recomendable su aplicación.</p>
<p>Ni que decir tiene que este tipo de herramientas se puede emplear para el <em>self assessment</em>, es decir, el autoanálisis de máquinas en el caso de que, por ejemplo, se presenten dudas sobre el estado de contaminación de la misma.</p>
<p>Un saludo,</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sahw.com/wp/archivos/2008/12/08/mas-analisis-forense-de-memoria-en-sistemas-windows-mandiant-memoryze-y-auditviewer/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Análisis forense de memoria en sistemas Windows</title>
		<link>http://www.sahw.com/wp/archivos/2008/12/02/analisis-forense-de-memoria-en-sistemas-windows/</link>
		<comments>http://www.sahw.com/wp/archivos/2008/12/02/analisis-forense-de-memoria-en-sistemas-windows/#comments</comments>
		<pubDate>Tue, 02 Dec 2008 22:47:47 +0000</pubDate>
		<dc:creator>Sergio Hernando</dc:creator>
				<category><![CDATA[Forensics]]></category>
		<category><![CDATA[Analisis forense memoria]]></category>
		<category><![CDATA[Memory forensics]]></category>
		<category><![CDATA[Windows forensics]]></category>

		<guid isPermaLink="false">http://www.sahw.com/wp/?p=2771</guid>
		<description><![CDATA[Hola, Vamos a ver un ejemplo muy sencillo sobre cómo ejecutar una inspección forense de la memoria de un sistema Windows. Para ello vamos a necesitar dos herramientas: Mantech Memory DD y Volatility, sobre el cual ya hablamos en este blog. Sobre la elección de ambas herramientas es principalmente porque son libres y gratuitas, con [...]]]></description>
			<content:encoded><![CDATA[<p>Hola, </p>
<p>Vamos a ver un ejemplo muy sencillo sobre cómo ejecutar una inspección forense de la memoria de un sistema Windows.</p>
<p>Para ello vamos a necesitar dos herramientas: <a href="http://www.mantech.com/msma/mdd.asp">Mantech Memory DD</a> y Volatility, sobre el cual <a href="http://www.sahw.com/wp/archivos/2008/06/24/analisis-forense-de-memoria-mediante-volatility-framework/">ya hablamos en este blog</a>. Sobre la elección de ambas herramientas es principalmente porque son libres y gratuitas, con lo que experimentar no tendrá coste para nosotros.</p>
<p>El análisis forense de volcados de memoria cobra especial importancia en eventos de respuesta ante incidentes, ya que permite obtener una foto de cómo se encuentra la RAM, así como para obtener información relevante para los análisis de máquinas donde se desea saber el estado de la memoria antes de proceder a su apagado. La RAM es volátil, y si pulsamos <em>off</em>, nos quedamos sin información.</p>
<p><strong>Extracción de un volcado de memoria</strong></p>
<p>Tal y como hemos comentado, emplearemos <a href="http://www.mantech.com/msma/mdd.asp">una utilidad que se llama MDD</a>. La sintaxis básica es la siguiente:</p>
<blockquote><p>mdd_1.3.exe -o nombredelvolcado</p></blockquote>
<p>Así, por ejemplo:</p>
<p><img src="http://www.sahw.com/images/forensics/mdd.png" alt="mdd" /></p>
<p>En este proceso hemos obtenido un fichero que se llama volcadomemoria.img, cuyo MD5 (importante para preservar la integridad de la evidencia) es cf1d38ca7dbf0ab7f1444df158cc7150 y que ha resultado exitosa para 258009 operaciones de mapeo, siendo infructuosa en 3634 operaciones. El tamaño resultante es de 1.071.689.728 bytes.</p>
<p><strong>Análisis del volcado</strong></p>
<p>Nos apoyaremos en <a href="https://www.volatilesystems.com/default/volatility#overview">Volatility</a>. Este <em>framework</em> permite el análisis de volcados de memoria y es mutiplataforma (siempre y cuando tengamos Python instalado) </p>
<p>Es bastante fácil de usar. Así, por ejemplo, si deseamos conocer los procesos que estaban ejecutándose en memoria, emplearemos </p>
<blockquote><p>$ python volatility pslist -f nombredelvolcado</p></blockquote>
<p>En nuestro caso:</p>
<p><img src="http://www.sahw.com/images/forensics/volatility1.png" alt="volatility" /></p>
<p>No muestro la totalidad de los procesos de una manera intencionada. En este ejemplo vemos los procesos <em>smss.exe</em> (gestor de sesiones de Windows), <em>csrss.exe</em> (client server runtime), <em>winlogon.exe</em> (aplicación de logon de Windows), <em>services.exe</em> (servicios y controlador) y <em>lsass.exe</em> (ejecutable LSA Windows)</p>
<p>Volatility permite lanzar muchas consultas interesantes desde el punto de vista forense. Veamos algunos ejemplos</p>
<p><em>Obtención de propiedades de la imagen</em></p>
<blockquote><p>$ python volatility ident -f volcadomemoria.img<br />
              Image Name: volcadomemoria.img<br />
              Image Type: XP SP2<br />
                 VM Type: pae<br />
                     DTB: 0x73a000<br />
                Datetime: Tue Dec 02 22:19:29 2008</p></blockquote>
<p><em>Fecha y hora del volcado</em></p>
<p>Aunque es parte de la consulta anterior, se puede invocar de modo independiente</p>
<blockquote><p>$ python volatility datetime -f volcadomemoria.img<br />
Image local date and time: Tue Dec 02 22:19:29 2008</p></blockquote>
<p><em>Módulos cargados en el sistema</em></p>
<p><img src="http://www.sahw.com/images/forensics/volatility2.png" alt="volatility" /></p>
<p>La lista es, obviamente, mucho más larga. Está truncada intencionadamente.</p>
<p><em>Objetos <a href="http://msdn.microsoft.com/en-us/library/bb742898.aspx">EPROCESS</a></em></p>
<p><img src="http://www.sahw.com/images/forensics/volatility3.png" alt="volatility" /></p>
<p>En este ejemplo vemos un proceso correspondiente a la utilidad Blowfish Advanced CS (bfacs.exe), una utilidad que os recomiendo para cifrar información personal en vuestros discos.</p>
<p><em>Ficheros abiertos por cada proceso</em></p>
<p>Esta consulta es muy intensa, pero es extremadamente útil. Mostramos un ejemplo:</p>
<blockquote><p>************************************************************************<br />
Pid: 1036<br />
File   \WINDOWS\system32<br />
File   \WINDOWS\system32\ega.cpi<br />
************************************************************************</p></blockquote>
<p>Y para identificar ese PID recurrimos a la lista de procesos:</p>
<blockquote><p>
$ python volatility pslist -f volcadomemoria.img | grep 1036<br />
csrss.exe            1036   960    13     704    Tue Dec 02 18:24:06 2008</p></blockquote>
<p>De donde se deduce que el proceso <em>csrss.exe</em> está empleando el fichero fichero de codificación (<em>codepage information file</em>) <em>\WINDOWS\system32\ega.cpi</em> </p>
<p>En cuanto a aplicaciones convencionales:</p>
<blockquote><p>************************************************************************<br />
Pid: 4008<br />
File   \Archivos de programa\Mozilla Firefox<br />
File   \Documents and Settings\sergioadmin\Application Data\Mozilla\Firefox\Profiles\12hgbwhw.default\parent.lock</p></blockquote>
<p>De donde se deduce que el usuario ejecutaba Firefox, con PID 4008, y empleando el perfil <em>12hgbwhw.default</em> (el cual podremos inspeccionar con la imagen del disco duro que levantemos en el escenario).</p>
<p>Volatility tiene muchas más funciones, y estas tan sólo son algunas. La idea es mostrar cómo se adquiere un volcado de memoria, el tipo de información que puede almacenar, cómo se lanza un procesado básico, así como la importancia de levantar este tipo de información siempre que sea posible.</p>
<p>Espero que el texto os resulte de utilidad. </p>
<p>Un saludo,</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sahw.com/wp/archivos/2008/12/02/analisis-forense-de-memoria-en-sistemas-windows/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
	</channel>
</rss>
