jueves, 29 de abril de 2010

sobre adquisiciones forenses y copia de discos duros

Como publicamos a principios de semana, con la colaboración de AEDEL (Asociación Española de Evidencias Electrónicas) hemos lanzado un proyecto (http://blueliv.blogspot.com/2010/04/adquiere-una-distribucion-forense.html) que tiene por objetivo construir una distribución LiveCD específica para realizar adquisiciones forenses. En el LiveCD podemos encontrar herramientas de adquisición de evidencias, pero sin duda alguna, estas herramientas son de gran ayuda, y como analista forense, es importante conocer en qué se basan las herramientas. Además, en algunas ocasiones nos podría sacar de un atolladero.

¿ En qué situaciones nos podríamos encontrar ?

  • Situación 1: Podemos realizar la adquisición en frío, apagando la máquina y usando un duplicador de disco hardware
  • Situación 3: Por criticidad de la máquina afectada, la adquisición se tendrá que realizar en caliente, es decir, sin apagar la máquina
  • Situación 2: Podemos realizar la adquisición en frío, apagando la máquina usando un LiveCD

Personalmente, la situación 1, en la que se puede apagar la máquina y es posible el desensamblaje de los discos duros para copiarlos mediante un dispositivo hardware, es la más limpia y profesional de todas, siendo la forma en que menos contaminariamos la evidencia.

A pesar que la situación 1 es la recomendada, la adquisición mediante software es igualmente correcta y aceptada en litigios dónde se presenta la prueba como evidencia electrónica. Por ello, en éste post nos basaremos en analizar en detalle la situación 2 y 3. Veamos.

Situación 2

En éste caso, nos encontraríamos ante una máquina que sí puede ser apagada y reiniciada mediante un Live CD, como por ejemplo ad-quiere, mediante el cual podemos hacer uso de la utilidad DD. En ésta situación disponemos de dos alternativas para realizar la adquisición, como son:

1. Por red

2. Mediante dispositivo de almacenamiento externo

Dichas alternativas quedan ilustradas en las siguientes figuras mediante un ejemplo de prueba de concepto:

Figura 1. Adquisición del disco en un entorno Windows con un medio de almacenamiento a través de red, enviando los datos desde la Máquina Evidencia hacia la máquina Servidor Forense.





Figura 2. Adquisición mediante un dispositivo de almacenamiento externo conectado directamente en la Máquina Evidencia.

Como se puede observar, en las figuras, la ejecución del comando DD es simple. La sintaxis consta de los siguientes parámetros:

  • if: Input File. Este parámetro será nuestra fuente de entrada, es decir, la evidencia que deseamos copiar. Según el entorno en que nos encontremos recibirá las siguientes notaciones:
    • Windows
      • Disco: \\.\PhysicalDrive0
      • Partición “C:”: \\.\C:
      • Memoria: \\.\PhysicalMemory
    • UNIX
      • Disco: /dev/sda o /dev/hda
      • Partición: /dev/sda1 o /dev/hda1
      • Memoria: /dev/mem
  • of: Output File. Este parámetro indica dónde queremos que dd copie los datos especificados en el IF. Según la situación el investigador forense podrá escoger las siguientes alternativas:
      • Unidad de almacenamiento del sistema:
        • D:,E:,F:,….
        • /mnt/usb
        • ….
      • Transmisión por red: En éste ejemplo, se ha usado Netcat como herramienta para transmitir los datos hacia el Servidor Forense, redirigiendo la salida del comando DD hacia la IP y puerto destinatarios, que previamente han sido configurados para esperar conexiones y volcar el contenido de la transmisión hacia un fichero. Véase Figura 1.
        • nc –l –p 999 > fichero (ponemos netcat en modo escucha y guardamos el contenido en “fichero”)
        • nc IP puerto (establece conexión en la IP en el puerto “puerto”)

Finalmente comentar que el comando DD nos ofrece otros parámetros que son de utilidad en una adquisición y análisis forense como pueden ser:

  • bs: Block Size. Determina el tamaño de las ráfagas (en bytes) que DD va a utilizar para copiar. Por ejemplo, si especificamos bs=1024, copiaremos los datos en grupos de 1024bytes. Por defecto el valor es de 512bytes.
  • count: Permite especificar el número de bloques o ráfagas que desearemos copiar.
  • skip: Permite especificar el número de bloques o ráfagas que vamos a escapar antes de empezar a copiar.
  • noerror: Indica que en caso de error de lectura, DD no debe parar el proceso.

La combinación de los parámetros skip y count serán de gran utilidad para extraer datos, en el proceso de análisis postmortem, mediante DD.

Situación 3

Nos podemos encontrar un caso en que debamos realizar una adquisición forense en una máquina (típicamente un servidor corporativo) tan crítica que no pueda ser apagada de ninguna manera. De modo que nuestro modo de operación deberá ser:

  • Insertaremos un CD Rom de herramientas de adquisición en la unidad ( siendo esta la manera menos intrusiva). El CD Rom deberá contener todas las herramientas y librerías que vayamos a necesitar para realizar la adquisición. De esta manera, no ejecutaremos ningún tipo de comando del sistema.
  • Mediante las herramientas disponibles en el CD, si procede, vamos a obtener información volátil y por orden de volatilidad como són procesos, memoria, estado de red, etc.
  • Realizaremos la copia del disco duro evidencia mediante DD

En este caso, la sintaxis de ejecución de comandos no variará, salvo que debemos asegurarnos, para no afectar a la evidencia, que estamos ejecutando las herramientas del CD Rom y no las nativas del sistema. Véanse las siguientes imagenes como ejemplo de cómo ejecutaríamos los comandos en entornos Windows y UNIX:


Figura 3. Adquisición del disco en un entorno Windows con un medio de almacenamiento externo




Figura 4. Adquisición del disco en un entorno Windows con un medio de almacenamiento a través de red utilizando Netcat




Figura 5. Adquisición del disco en un entorno UNIX con un medio de almacenamiento externo


Figura 6. Adquisición del disco en un entorno UNIX con un medio de almacenamiento a través de red utilizando Netcat

A todo este proceso, deberíamos tener en cuenta que se deberían realizar chequeos de integridad de las evidencias digitales antes y después de realizar la adquisición. ¿Cómo?

Siguiendo los mismos conceptos explicados anteriormente, podemos hacer lo siguiente:

  • Chequeo integridad disco original: dd if=/dev/sda | sha1sum > imagen.dd.sha1
  • Chequeo integridad de la copia: dd if=imagen.dd | sha1sum > imagen.dd.sha1

En este caso, también nos aplicará la ejecución mediante rutas absolutas en el caso que operemos en un entorno en caliente. Los más puristas son partidarios de utilizar no sólo un algoritmo de hashing sino que se podría trabajar mediante dobles chequeos de integridad MD5 y SHA1. Otros son partidarios de pasar a algoritmos más robustos como SHA-256 y otros.

Como hemos visto, existen diversas alternativas de cómo realizar una adquisición mediante DD que, a pesar de la existencia de herramientas con interfaz gráfico que no sólo automaticen la copia, son interesantes de conocer. Además, es de vital importancia, hacerse con un buen CD Rom de herramientas siempre que vayamos a realizar adquisiciones en caliente, para así no contaminar las evidencias. En Forensics, es vital realizar una buena intervención en el proceso de adquisición, ya que esto, condicionará toda la investigación!

Saludos,