Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Campus Monterrey
Por medio de la presente hago constar que soy autor y titular de la obra titulada
"Metodología para la recolección de datos volátiles aplicados a un proceso de
investigación forense", en los sucesivo LA OBRA, en virtud de lo cual autorizo a
el Instituto Tecnológico y de Estudios Superiores de Monterrey (EL INSTITUTO)
para que efectúe la divulgación, publicación, comunicación pública, distribución y
reproducción, así como la digitalización de la misma, con fines académicos o
propios al objeto de EL INSTITUTO.
El Instituto se compromete a respetar en todo momento mi autoría y a otorgarme
el crédito correspondiente en todas las actividades mencionadas anteriormente
de la obra.
De la misma manera, desligo de toda responsabilidad a EL INSTITUTO por
cualquier violación a los derechos de autor y propiedad intelectual que cometa el
suscrito frente a terceros.
CONTENIDO
RESUMEN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
LISTA DE FIGURAS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
LISTA DE TABLAS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1. LA INVESTIGACIÓN FORENSE EN CÓMPUTO. . . . . . . . . . . . . . . . . . . . . . 9
1.1 Respuesta a Incidentes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.1.1 Procedimientos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.1.1.1 Respuesta inicial del administrador del sistema. . . . . . . . . . . . . . . . 12
1.1.1.2 Protegiendo la integridad de la evidencia. . . . . . . . . . . . . . . . . . . . . 12
1.1.1.3 Procedimientos de shut-down. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.1.1.4 Cadena de custodia. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.2 Metodología en una Respuesta a Incidentes. . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.3 Investigación Forense en cómputo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
1.3.1 Pasos del proceso forense . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
1.3.1.1 Paso 1: Identificar y recolectar evidencia . . . . . . . . . . . . . . . . . . . . . 19
1.3.1.2 Paso 2: Preservar la evidencia. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
1.3.1.3 Paso 3: Analizar la evidencia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
1.3.1.4 Paso 4: Presentar la evidencia. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
1.4 Estándares internacionales. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
1.5 México y los delitos informáticos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2. RECOLECCIÓN DE EVIDENCIA Y VOLATILIDAD DE LOS DATOS. . . . 24
2.1 Recolección de evidencia. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.1.1 Donde y como archivar. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
2.1.2 Herramientas útiles. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
3
CONCLUSIONES. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
REFERENCIAS BIBLIOGRÁFICAS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
ANEXO A. ARTICULO 211 bis CODIGO PENAL FEDERAL. . . . . . . . . . . . . . . . 166
ANEXO B. MICROPRUEBAS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
ANEXO C. GLOSARIO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170
5
RESUMEN
Uno de los primeros pasos que realiza el forense en una investigación, es congelar la escena del
crimen con el fin de adquirir la información que pueda llevarlo a encontrar las claves necesarias
para identificar las causas del incidente. En los crímenes digitales la captura de información se
convierte en un paso importante durante la investigación, ya que si no se siguen los pasos
adecuados es fácil perder la información volátil del sistema.
Cuando un investigador llega a la escena del crimen puede encontrar el sistema “vivo” (corriendo
sus procesos en forma “normal”) o el sistema “muerto” (apagado). En el caso de un sistema vivo,
es difícil congelar la escena del crimen, ya que la evidencia es sensitiva al tiempo y además de
frágil, puede ser fácilmente alterada, dañada o destruida, además al realizar la captura de
información volátil y de memoria es fácil cometer errores que traigan consecuencias graves ya
que si se desconecta el equipo antes de capturarla, se puede destruir la poca evidencia existente.
En el caso de encontrar el sistema muerto, podemos decir que la información volátil se ha
perdido. Es por eso que la captura de información volátil de un equipo de cómputo se vuelve un
problema en el proceso de recolección de información en una investigación forense. Otro
problema que se presenta a la hora de recolectar información es el conjunto de herramientas que
se utilizará para obtener la información. El investigador forense tiene que saber el uso de las
6
herramientas que están a su alcance, ya que el orden en que se pueden o deben usar depende de
los efectos que tienen.
Para afrontar este problema en este trabajo de investigación se propone una metodología de
recolección de datos volátiles y de memoria con el fin de asistir al investigador en el proceso de
captura, la metodología consiste en siete pasos que se realizarán en base a la volatilidad de la
información de un sistema de cómputo. Para comprobar su utilidad la metodología se aplicará a
cinco casos con dos sistemas operativos diferentes, donde se accederá en forma local y remota y
se utilizará un conjunto de herramientas en base al análisis de las utilerías existentes para las
versiones de los sistemas operativos planteados en esta investigación.
Dentro del alcance de este trabajo no se plantea una metodología para la recuperación de
información sobre un sistema muerto, ya que lleva un proceso y herramientas muy diferentes a un
sistema vivo, para este caso se exponen varios ejemplos realizados por Universidades dedicadas a
semiconductores y seguridad que muestran que todavía es posible obtener algo de información de
la memoria RAM aunque el equipo esté desconectado de energía.
LISTA DE FIGURAS
LISTA DE TABLAS
CAPITULO 1
LA INVESTIGACIÓN FORENSE EN
CÓMPUTO
10
Las computadoras se han convertido en una parte esencial en nuestro trabajo, esto genera el
riesgo de tener violaciones no autorizadas a nuestro sistema (incidentes de seguridad) por el mal
manejo que podamos tener sobre éste. Los delitos informáticos se han vuelto cada día más
importantes debido a la utilización de los servicios que ofrece la red Internet, algunos crímenes
convencionales, especialmente los concernientes a comercio y finanzas, se hacen más
sofisticados tecnológicamente.
Para protegerse contra las amenazas constantes de hackers, crackers y código malicioso, las
organizaciones hacen uso de firewalls, software antivirus y sistemas de detección de intrusos.
Pero a pesar de estas medidas de defensa, computadoras y redes conectadas a Internet, aún siguen
siendo sujetas a ataques frecuentes.
Como resultado de estos hechos desafortunados, organizaciones y gobiernos alrededor del mundo
deben estar preparados para responder ante un incidente de seguridad [1].
11
En un incidente donde una brecha de seguridad se ha abierto o un acto criminal involucra a una
computadora, la respuesta inicial es muy importante, las primeras acciones tomadas durante la
atención al incidente puede hacer que se puedan encontrar las pruebas necesarias para detectar la
falla y/o al culpable del acto criminal.
En un incidente de seguridad es esencial que los pasos que se tomen aseguren la protección de los
datos en el medio de almacenamiento ya que estos datos son invaluables para determinar el nivel
de la brecha de seguridad y la localización de evidencia potencial acerca del acto criminal. El
éxito de la recuperación de datos y el enjuiciamiento dependerá de las acciones del individuo que
inicialmente descubrió el incidente computacional. En la mayoría de las situaciones, el equipo de
emergencia es solo el administrador del sistema. La mayoría de los administradores empiezan a
tomar acciones cuando ocurre un incidente sin darse cuenta del costo que éstas pueden implicar
sobre la evidencia. Es por esto que el proceso de Respuesta a Incidentes tendrá un impacto
significante en el análisis forense posterior.
1.1.1 PROCEDIMIENTOS
No existe un manual que indique paso a paso lo que debemos hacer ante cada uno de los
escenarios en incidentes de seguridad, por lo que podemos ayudarnos con los procedimientos que
algunas dependencias ya han establecido para tomar las medidas precautorias ante un incidente
como la guía de respuesta inicial del Laboratorio de Cómputo Forense del Departamento de
Energía de los E.U. [5] que expone los siguientes cuatro puntos:
El rol del administrador del sistema es vital para asegurar todos los aspectos de la red, seguridad
y mantenimiento. Desde el punto de vista del forense la situación ideal es aislar el equipo de
cómputo, pero existen casos donde el equipo es un servidor en producción donde la pérdida de
evidencia es inminente.
Una de las primeras acciones que se realizan puede estar entre: respaldar evidencia, encontrar
pistas, apagar o dejar arriba el sistema. Cualquier cosa que se haga o no se haga cambiará el
estado del sistema.
13
Otra opción es aislar el equipo bajo análisis de la red de trabajo, es decir desconectar de la red y
conectar el otro extremo a un concentrador que no esta conectado a ninguna otra parte, haciendo
suponer a la máquina que sigue conectada a la red y limitando la cantidad de cambios en el
sistema, esto porque la mayoría de los sistemas escriben mensajes de error en los archivos de
bitácora si no se encuentra la red.
Una de las decisiones más difíciles al tratar con un sistema sospechoso es la forma de apagar el
equipo sin corromper la integridad de los archivos. En muchos casos el tipo de sistema operativo
será la clave para tomar la decisión. En algunos sistemas jalar del cordón de poder es un método
para apagar el sistema, pero en otros casos esto puede causar la pérdida de archivos importantes,
o procesos e información en memoria o que el disco duro se dañe. En el caso de los equipos con
Windows se recomienda desconectar el equipo, en el caso de los equipos con Unix se puede
utilizar el comando halt, en sistemas MAC se puede realizar un shutdown especial o quitar el
cordón de corriente.
El investigador debe asegurar y administrar eficientemente la evidencia. Una vez que la evidencia
ha sido obtenida se debe tener cuidado de mantener una custodia sobre ésta, en caso de no tenerla
se puede causar un daño grave en la investigación. Por lo que es importante realizar notas de
quién, qué y cuándo se hizo la transferencia de evidencia y mantenerla en un lugar seguro. El
análisis se debe realizar sobre copias en vez de la evidencia original y utilizar firmas digitales
para proveer integridad al contenido original [3].
14
Los criminales emplean la tecnología como depósito para ocultar evidencia incriminatoria o
materiales de contrabando. Los oficiales de policía deben tener conocimiento y equipo
actualizado para investigar eficientemente la actividad criminal de hoy en día. El reto de la
comunidad policíaca es identificar, investigar e iniciar el procedimiento penal contra las personas
físicas y las organizaciones que usan éstas y otras tecnologías emergentes como medio para sus
operaciones ilícitas. Esto es lo que sucede durante un caso normal:
Con el crecimiento del crimen electrónico, una serie de prácticas, procedimientos, procesos de
decisión, referencias, etc. han sido preparados por grupos de trabajo técnico y expertos en
crímenes electrónicos para asistir a las agencias policíacas. La serie de guías direccionarán el
proceso desde la respuesta inicial en la escena del crimen, el laboratorio y ante la corte.
Los departamentos deben contar con herramientas para procesar la escena del crimen. Los
siguientes dispositivos pueden ser útiles en la escena del crimen:
Herramientas de documentación:
Etiquetas de cables
Marcadores indelebles
Herramientas de desensamble y retiro
Desarmadores
Pinzas
Tijeras
Empaquetar y transportar
Bolsas antiestáticas
15
Cables de amarre
Evitar los materiales que puedan producir electricidad estática
Otros dispositivos
Guantes
Lentes de aumento
Maleta de mano
Lámpara
Preparación
Respuesta inicial
Identificar y recolectar evidencia
Proceso forense Preservar la evidencia
Analizar la evidencia
Presentar la evidencia
Recuperación
Implementación de
mecanismo de seguridad
Documentación
La preparación cubre todo lo que se necesita hacer antes de que el incidente tome lugar, como
preparar las herramientas de respuesta y forenses, aprender los ambientes, configurar los sistemas
para una respuesta óptima y monitoreo, asignar responsabilidades, formar equipos de trabajo
establecer procedimientos de escalación, etc.
Después de que se ha reportado e identificado el incidente, la respuesta inicial debe tomar los
pasos para asegurar la escena del crimen protegiéndo la integridad de la evidencia, tanto
tradicional como electrónica de todo el personal con acceso a la escena del crimen.
16
Después de asegurar la escena del crimen, la repuesta inicial debe identificar la evidencia
potencial, tanto la electrónica como la convencional. La respuesta inicial debe evaluar la escena
del crimen y formular el siguiente plan. Como actividades se deberá restringir inmediatamente el
acceso a la(s) computadora(s), obtener posibles huellas dactilares, identificar líneas telefónicas
atadas a dispositivos como modems e identificadores de llamadas, documentar, desconectar y
etiquetar cada línea telefónica, etc.
Para determinar el papel de las computadoras dentro del crimen, se pueden contestar las
siguientes preguntas:
Una vez que se conoce el papel de la computadora y que han sido satisfechos los requisitos
legales, se pueden seguir las siguientes recomendaciones:
o Tome fotografías del monitor. Desconecte todas las fuentes de energía; desconecte de
la pared y de la parte trasera de la computadora.
o Coloque cinta para proteger evidencia sobre cada entrada a las unidades de disco.
o Tome fotografías/haga un diagrama y coloque etiquetas en la parte de atrás de los
componentes de la computadora y las conexiones existentes.
o Coloque etiquetas a todos los conectores/terminales de cable para permitir el
reensamble, de ser necesario.
o Si se requiere transportación, empaque los componentes y transporte/almacene los
componentes como carga frágil.
o Manténgase alejado de los imanes, transmisores de radio y otros ambientes hostiles.
• Jalar el enchufe podría:
o Dañar en forma importante el sistema
o Interrumpir negocios legítimos
o Originar una responsabilidad para el oficial y el departamento
El análisis forense digital se está convirtiendo rápidamente en parte integral de una respuesta a
incidentes, incrementándose el número de investigadores forenses y herramientas (toolkits)
disponibles.
En el libro “Techniques of Crime Scene Investigation” escrito por Barry A.J. Fisher [3] se dice
que Forencia es “ciencia y tecnología aplicada a la solución de actos criminales que permite
asistir investigaciones policíacas” y que el Cómputo forense es la “ciencia de adquirir, recuperar,
preservar y presentar datos que han sido procesados electrónicamente y almacenados en un medio
computacional”.
La investigación forense sigue métodos científicos, estas acciones metódicas ayudan a obtener y
analizar la evidencia. Grant Gottfried [1] define evidencia digital como “la información
almacenada o transmitida en forma binaria que pueda se útil en una corte de justicia”.
No hay duda de que una metodología o proceso es llevada a cabo en un fraude computacional,
por lo que tampoco hay duda de que en una investigación forense debemos contar también con un
proceso, además un proceso formal permite al investigador enfocar e investigar un crimen
racional y rápidamente. También es importante establecer un protocolo por el cual la evidencia
electrónica es obtenida y manejada, para reducir el riego de ser corrompida. Sin una metodología
o proceso bien definido será más difícil investigar exitosamente y por lo tanto controlar un abuso
o fraude computacional. Es requisito que en un proceso de investigación forense se exhiban las
características de una metodología científica. Por ejemplo un proceso válido debe consistir en
pasos bien definidos que puedan ser repetidos en toda la investigación, cada paso debe ser
consistente [8].
Una vez que se ha identificado y recolectado la evidencia es muy importante preservarla con la
menor cantidad de cambios, pero en el caso de realizar cambios se debe demostrar la
responsabilidad que se tenga sobre la evidencia.
La evidencia debe ser estrictamente asegurada y la cadena de custodia necesita ser claramente
documentada, la evidencia debe ser capaz de describir claramente como fue encontrada, como fue
manejada y todo lo que le ha sucedido (cadena de custodia).
El acceso a la evidencia debe ser restrictivo y documentado para que se pueda detectar un acceso
no autorizado. Una vez capturada la información debe ser almacenada en medios de solo lectura
y marcar registros que conserven la integridad de la información para que no pueda ser alterada.
Para interpretar la evidencia se requiere de conocimiento profundo para entender como embonan
las piezas. Podemos comenzar por identificar qué cambió en el sistema cómo y cuándo, si es
posible obtener los comandos usados y cuando se usaron, rootkits instalados e información
oculta.
Este paso se enfoca en la forma de presentar la evidencia ante una corte. La credibilidad de los
procesos usados para preservar y analizar la evidencia.
La evidencia computacional necesita ser:
Admisible: Debe conformar ciertas reglas legales antes de que pueda ponerse ante una corte
Auténtica: Debe ser posible atar material evidencial al incidente
Completa: Debe decir toda la historia y no solo una perspectiva particular.
Confiable: No debe haber duda sobre la autenticidad y veracidad de la evidencia ni de cómo
se recolectó.
Creíble: Debe haber credibilidad en la investigación y ser entendible para la corte.
1. Cuando se trata con evidencia digital, todos los principios forenses generales y
procedimientos deben ser aplicados.
2. Una vez obtenida la evidencia digital, las acciones que se tomen no deben cambiar la
evidencia.
3. Cuando sea necesario que una persona acceda a la evidencia digital, será necesario que
esté entrenada para ese propósito
4. Todas las actividades del embargo, acceso, almacenamiento o transferencia de evidencia
digital deben ser completamente documentadas, preservadas y disponibles para revisión.
5. Las personas que custodian la evidencia son responsables por todas las acciones tomadas
con respecto a la evidencia digital mientras ésta esté en su poder.
6. La agencia que sea responsable por el embargo, acceso, almacenamiento o transferencia
de la evidencia digital es responsable de cumplir estos principios.
22
Todas las políticas y procedimientos de cómputo forense deben ser desarrollados bajo estos
principios. No limitándose a sólo computadoras en el sentido tradicional, el campo abarca todo,
PDAs, ruteadores, etc. cubriendo crímenes que alcancen desde crear, poseer y diseminar
pornografía infantil hasta intrusiones de red.
Estos principios son un inicio para tratar de estandarizar pero mucho depende de las leyes locales
del estado o país.
Existen varios estándares y procedimientos que se han creado en combate a los delitos
informáticos. A nivel internacional en países a la vanguardia sobre el tema, se han clasificado los
delitos en diferentes tipos tales como: el espionaje electrónico, la estafa electrónica, el sabotaje
electrónico, la falsificación informática, el plagio de dominios, el plagio de nombres comerciales
o marcas de Internet, el mercadeo de souvenirs que aludan fines xenofóbicos, la apología del
delito, la responsabilidad penal en que pueden incurrir los representantes legales de las empresas
que se dedican a ofrecer hospedaje virtual de anunciantes cuando la información sea considerada
como contraria a la ley o incite a la comisión de un delito, entre otros.
A pesar de los esfuerzos que se han realizado para proponer nuevas normas enfocadas a los
delitos informáticos, que puedan motivar la labor de los cuerpos especializados de investigación
criminal, como la Unidad de Policía Cibernética dependiente de la Policía Federal Preventiva, la
falta de normas legales limita su labor, ya que no cuentan con las disposiciones penales que
sirvan de apoyo para sancionar los delitos informáticos y por tanto, estos permanezcan impunes.
Sánchez Franco [42] expone que deben existir las herramientas legales adecuadas para que la parte
ofendida denuncie y acredite con pruebas los delitos ante la autoridad competente, ya que en caso
23
de no existir como hasta ahora, se favorece la labor de los abogados defensores y se favorece la
impunidad.
Es insuficiente la reforma penal de mayo del 2000, es necesario retomar conciencia sobre el tema
y apoyarse en los modelos avanzados que ya están estableciendo, regulando y sancionando este
tipo de ilícitos.
24
CAPITULO 2
RECOLECCIÓN DE EVIDENCIA Y
VOLATILIDAD DE LOS DATOS
25
2. RECOLECCIÓN DE EVIDENCIA
1º. Se deberá formular un plan donde el investigador determinará la evidencia que será
buscada y decidirá el procedimiento de búsqueda
2º. El investigador llegará a la escena del crimen y asegurará la evidencia de personas no
autorizadas.
26
• Los procedimientos de recolección deberán ser incluidos en las políticas de seguridad del
área de cómputo e involucrar al personal de incidentes de seguridad.
• Obtener como sea posible una fotografía exacta del sistema.
• Realizar notas detalladas.
• Anotar la diferencia entre el reloj del sistema y la UTC.
• Estar preparado para testificar todas las acciones que se realizaron y la hora.
• Minimizar cambios en los datos como se van recolectando.
• Cuando se enfrente con una elección entre recolección y análisis, se debe recolectar antes
de analizar.
• Ser metódico.
• La velocidad debe ser crítica, por lo que para un número de dispositivos que se requiere
examinar, será apropiado repartir el trabajo entre más personas para recolectar en forma
paralela.
• Proceder desde lo volátil a lo menos volátil.
• Hacer una copia a nivel de bit del sistema.
Dentro de las cosas que se deben evitar para no destruir evidencia el RFC recomienda:
Los procedimientos de recolección deben ser detallados en lo posible, no deben ser ambiguos y
deben minimizar la cantidad de decisiones necesitadas durante el proceso de recolección. Los
métodos utilizados en la recolección de evidencia digital deben ser transparentes y reproducibles,
no olvidando documentar cada paso. Se debe estar preparado para reproducir precisamente el
método usado, además estos métodos deben ser probados por expertos independientes.
Los métodos usados para la recolección de evidencia deben ser transparentes y reproducibles [6].
Una consideración importante a la hora de hacer las copias es esterilizar los dispositivos en los
que se guardará la copia. Para lo cual se puede esterilizar un dispositivo sobrescribiendo el medio
con ceros.
28
Se debe contar con programas de recolección de evidencia en medios de solo lectura (ejemplo:
CD). Contar con un conjunto de herramientas por cada sistema operativo, que contenga
programas para examinar procesos, para hacer copias bit a bit, para generar marcas de tiempo
(checksums) y firmas, etc.
Uno de los problemas a los que se enfrenta el investigador es que los administradores algunas
veces rechazan la idea de dar de baja un sistema, especialmente cuando éste estará abajo por una
indeterminada cantidad de tiempo. Pero solo se puede bajar el nivel de rigor después de que se ha
determinado que el caso no será enjuiciado
El tiempo de vida de los datos digitales depende de donde se encuentren almacenados. Dan
Farmer y Wietse Venema establecieron el siguiente orden de volatilidad:
1 Procesador
2 Sistemas de almacenamiento
3 Tablas del kernel
4 Medios fijos
29
5 Medios removibles
6 Impresiones
Mientras mayor volatilidad de los datos es mayor la dificultad de capturarlos, y menor el tiempo
que tenemos para realizar un análisis. Por ejemplo en el caso del procesador es improbable que se
pueda utilizar el contenido de los registros, el simple acto de buscar en ellos puede modificarlos,
así es que, buscando sobre el contenido de la memoria del sistema y el estado de la red podemos
obtener claves valiosas, el tipo y la fuente de un ataque de entrada, etc. Examinar esta tipo de
estructuras requiere de cierta experiencia para analizar y capturar los datos en forma segura.
A continuación se muestra la tabla 2.1 que publica las diferentes fuentes de sistemas de datos su
volatilidad y su utilidad en la investigación [2].
Hasta que el Sistemas de RAM Incluye información sobre todos los procesos
host es dado almacenamiento corriendo y el estado del kernel. Fácil de capturar,
de baja pero el acto de capturarlos puede cambiarlos.
Requiere conocimiento especializado para
reconstruirlo completamente, pero no requiere
habilidades especiales para buscar estos datos por
palabras clave.
Hasta que Medios fijos Espacio swap Cuando las demandas del sistema exceden la
sean sobre- (Discos duros) capacidad de la RAM, algunos datos del kernel son
escritos o copiados al disco duro. Estos datos complementan
borrados los de la memoria RAM para el análisis de tiempos.
Directorios Incluye información sobre procesos corriendo y
Queue actividades incompletas. Se puede observar correo
saliente y trabajos de impresión que no existen en
otro lugar en el sistema
Directorios Son archivos de trabajo de todo el sistema. Se
Temp. espera que sea borrado periódicamente, por lo que
es un lugar apropiado para dejar datos que no serán
necesitados en el futuro. Se pueden encontrar datos
que fueron deliberadamente borrados sobre otras
partes del sistema
Directorios Esto es crucial para la reconstrucción de eventos.
Log La dificultad es que crecen demasiado, los logs son
mantenidos, viejos datos son eventualmente
borrados o sobre-escritos.
Directorios de Cada parte del sistema de archivos que no es
configuración, considerada temporal, como bitácoras que incluyen
usuario, binarios archivos que pueden permanecer indefinidamente.
y librerías. Sin embargo, cualquier usuario con acceso de
escritura podrá borrar o cambiar los datos.
Medios Discos floppy Uso menos frecuente en ambientes de red, pero
removibles puede contener archivos útiles. Discos de alta
capacidad que pueden ser usado para respaldos
Cintas Son una fuente confiable de información acerca del
contenido histórico del sistema. En caso de existir
cintas antes del incidente, pueden ser usadas para
determinar el periodo de tiempo durante el cual un
incidente ocurrió.
CD-ROM El estándar para CDs es ahora multisesion.
Read/write Debemos estar seguros de que examinar un CD
sospechoso puede mostrar todas las sesiones. Los
datos no pueden ser sobrescritos, pero cada sesión
crea una nueva tabla de directorio.
Hasta que CD-ROM Medio de escritura de una sola vez, es un lugar
sean Write/only excelente para almacenar archivos log porque ellos
físicamente no pueden ser alterados.
destruidos Salidas Impresiones en Es difícil hacer búsquedas en impresiones muy
papel largas, pero su periodo de destrucción es corto. Es
probablemente el mecanismo de almacenamiento
de mayor vida
Ante una respuesta a un incidente, el personal que atiende el incidente debe decidir si el equipo se
queda encendido o apagado. En caso de apagarlo también debe decidir si debe desconectarlo de
la energía o realizar un apagado (shutdown) normal.
Por lo que podemos generalizar son dos situaciones a las que se enfrentará el investigador forense
para la recolección de información, cuando el equipo esta encendido y cuando el equipo está
apagado.
Pero con el sistema corriendo es fácil cometer errores que traigan consecuencias graves, además
se viola uno de los principales principios de investigación forense que es no modificar la
evidencia, como por ejemplo en Linux, cada herramienta en el espacio de usuario o kernel
utilizada para capturar datos, por naturaleza cambia el estado del sistema. Correr herramientas en
un sistema vivo, hace que éstas se carguen en memoria y creen por lo menos un proceso que
puede sobrescribir evidencia. Creando un nuevo proceso, los sistemas de administración de
memoria del sistema operativo colocan datos en memoria principal y puede sobrescribir datos no
32
colocados en la memoria principal o en la memoria swap, que también es totalmente válido en los
ambientes Windows.
Otro problema se presenta cuando queremos tomar acciones legales y necesitamos cumplir con
las leyes locales. Las señales de intrusión encontradas en imágenes de memoria principal pueden
ser no confiables, porque son creadas con herramientas que adquirimos. Por lo que al tomar una
acción debemos decidir si o no, vamos a obtener datos volátiles de un sistema comprometido.
Pero algunas veces el procedimiento vivo describe la única forma de adquirir datos del incidente,
porque cierto código malicioso como algunos “rootkits” son cargados en memoria y no modifican
archivos o directorios.
En el caso de que el investigador encuentre el equipo apagado o “muerto”, podemos pensar que
ya no es posible recuperar la información volátil del sistema, pero de acuerdo a la investigación
realizada en este proyecto, sí se puede recuperar algo de información de la memoria RAM
utilizando métodos físicos. Esto abre la posibilidad de que todavía podamos obtener claves para
una investigación forense aún si encontramos el equipo apagado.
33
No hay duda de que una metodología es llevada a cabo en un fraude computacional, por lo que
tampoco hay duda de que una investigación forense debe contar con una metodología también,
además una metodología formal permite al investigador enfocar e investigar un crimen en forma
racional y rápidamente. También es importante establecer un protocolo por el cual la evidencia
electrónica es obtenida y manejada para reducir el riego de ser corrompida. Sin una metodología
será más difícil investigar exitosamente y por lo tanto controlar un abuso o fraude computacional.
Es requisito que en un proceso de investigación forense se exhiban las características de una
metodología científica. Por ejemplo un proceso válido debe consistir en pasos bien definidos que
puedan ser repetidos en toda la investigación, cada paso debe ser consistente. Sin una
metodología formal comprobada la evidencia recopilada no será tomada seriamente en una corte.
En este trabajo se ha establecido una metodología general aplicada al estado “vivo” del sistema,
para que a partir de ésta se pueda llevar a cabo una recolección de información volátil útil en una
investigación forense, esta metodología será aplicada en cincos casos diferentes con el equipo
encendido y con sus procesos corriendo en forma “normal”, bajo los sistemas operativos más
comunes Linux con Red Hat Entreprise 3 y Windows 2000.
Como parte de la investigación también se mostrarán las herramientas útiles para llevar a cabo
cada procedimiento, dentro de las dos plataformas descritas, esto con el fin de que una vez que
conozcamos lo que existe en el mercado y lo que podemos utilizar del sistema operativo
tengamos la oportunidad de crear un conjunto de herramientas que nos va a ayudar a realizar la
recolección de información. Este paso de crear el conjunto de herramientas es tan importante
como el de la investigación misma, por lo que el siguiente capítulo mostrará estas herramientas,
así el investigador podrá decidir cuales son la que utilizará en su investigación.
CAPITULO 3
HERRAMIENTAS PARA LA
RECOLECCIÓN DE INFORMACIÓN
DE DATOS VOLÁTILES Y MEMORIA
35
Es importante conocer las herramientas que existen en el mercado y las que el sistema trae ya
integrado. La memoria RAM como dispositivo de alta volatilidad involucra que muchas veces el
investigador tenga que recolectar información con lo que tenga a primera mano, este es el caso
del sistema operativo. Con experiencia y el conocimiento propio, el sistema operativo puede ser
una excelente plataforma para realizar la recolección de evidencia.
Durante este capítulo se presentarán las principales herramientas de sistema para la recolección
de información volátil, programas para realizar imágenes de memoria, así como software forense
especializado que nos puede ser útil para conformar nuestro conjunto de herramientas de
recolección.
36
Los comandos y utilerías para tareas administrativas del sistema pueden ser de gran utilidad ante
una respuesta inmediata. Esta es la razón por la que a continuación se exponen herramientas del
sistema operativo que no tiene el propósito específico de capturar información para un proceso de
investigación forense, pero se pueden utilizar para ese fin.
La tabla 3.1 muestra los comandos útiles y su función en la recolección de datos. Todos estos
comandos van incorporados dentro del sistema operativo, por lo que no será necesario bajarlos de
Internet o comprarlos, a menos que no contemos con el sistema operativo.
Utilería Función
debug y dump Visualiza la memoria, carga porciones del disco en memoria y vuelve a
grabarlas, pero del subsistema de MSDOS únicamente.
mem Muestra qué y cuánta memoria se está utilizando, pero del subsistema
de MSDOS únicamente.
at.exe 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.
cmd.exe Inicia una nueva instancia del intérprete de comandos de Windows XP
tracert.exe Muestra la ruta para llegar a un host determinado, los saltos y el tiempo
37
Utilería Función
de espera
hostname Comando de sistema que despliega el nombre de la máquina
dumpchk.exe Comando que se utiliza para verificar que un archivo dump ha sido
creado correctamente, es localizado en el CD-ROM de Windows. Se
instala ejecutando setup.exe desde el directorio Support\Tools del CD
[25].
reg Estas herramientas permiten hacer una copia del registry. Reg permite
regedit agregar, cambiar, buscar, respaldar, restaurar y realizar operaciones
sobre el registry en una línea de comandos, puede ser usada en
computadoras locales y remotas.
El Resource Kit de Windows 2000 incluye muchas herramientas, pero solo algunas de ellas están
libres en Internet. Estos archivos son ejecutables autoextraibles que instalan la herramienta y su
documentación en la computadora, de entre ellas podemos utilizar y adquirir las publicadas en la
tabla 3.2.
Utilería Función
dh.exe Es un comando en línea que despliega información acerca del uso de procesos en modo
usuario y modo kernel. Acepta switches para identificar el proceso desplegar y enviar a
un archivo de texto. Es muy útil para listar la basura de memoria y llamadas de
asignación de memoria. Despliega “memory hogs” (programas que utilizan mucha
memoria. Envía la información a un archivo de descarga (dmp). Nota: Se tienen que
1
El Directorio activo de Windows es un componente central de dicho sistema operativo que proporciona los medios para gestionar las identidades
y relaciones que organizan su entorno de red.
38
Utilería Función
pstat.exe Es una herramienta que lista todos los hilos (threads) que están corriendo y despliega su
estado. Esta herramienta es similar a Qslice.exe, pero utiliza una línea de comandos en
vez de la interfaz gráfica. Esta versión de pstat toma una fotografía (snapshot) del
sistema.
pulist.exe Esta herramienta despliega procesos corriendo en maquinas locales o remotas. Despliega
el nombre del proceso, su ID e intenta obtener el user name asociado. Esto es importante
cuando múltiples procesos se están ejecutando en el sistema en diferentes contextos de
seguridad.
qslice.exe Muestra el porcentaje del total de CPU en uso por cada proceso en el sistema. Es similar
a pstat.exe pero presenta la información en forma gráfica.
showperf.exe Es una herramienta gráfica que permite a los desarrolladores descargar y desplegar raw
performance data del registry y desplegarla.
apimon.exe Monitorea aplicaciones corriendo de todas las llamadas API (Application Programming
Interface) de un proceso.
sclist Es un comando en línea que muestra los servicios actualmente corriendo, los servicios
parados o todos los servicios en una computadora local o remota.
http://www.petri.co.il/download_free_reskit_tools.htm
Nota: En forma remota solo si se encuentra dentro del dominio
svrinfo Es un comando que despliega los servicios, información acerca del espacio en disco y
tipo de particiones en un servidor remoto.
http://www.petri.co.il/download_free_reskit_tools.htm
Nota: Despliega la información local y la información de servidores donde se este
conectado o WinXP.
showmembers Es un comando que muestra los miembros de un grupo dentro de un dominio o los
grupos en forma local.
http://www.petri.co.il/download_free_reskit_tools.htm
Nota: Para mostrar los miembros del dominio se necesita estar dentro de éste.
dumpel.exe Es un comando en línea que descarga la bitácora de eventos de un sistema local o remoto
a un archivo de texto (tab-separated)
http://www.microsoft.com/windows2000/techinfo/reskit/tools/existing/dumpel-o.asp
now.exe Despliega la fecha y tiempo del sistema en la salida estándar
Los comandos publicados en la tabla 3.3 no se encuentran libres, por lo que hay que comprarlos:
Utilería Función
Utilería Función
sleep.exe Batch Files Wait. Causa que la computadora espere por una cantidad de tiempo
especificada.
top.exe Time-Ordered Processes. Lista los procesos que está usando el tiempo del procesador.
totlproc.exe Total Processors. Mide el uso de memoria de todos los procesos instalados.
usrstat.exe User Statistics. Lista los nombres completos de usuarios y su última conexión.
Existen herramientas libres en Internet para Windows. Una de las más importantes es
md5sum.exe que determina cuando la información ha sido modificada. Una buena práctica es
correr las herramientas de captura, enviar la salida a algún medio e inmediatamente generar un
md5sum o registro de tiempo de los datos.
Otras herramientas útiles son el fport.exe, ethereal, winhex y las utilerías de PsTools [10]. Una
búsqueda en Internet obtendrá estas y otras herramientas, que se podrán utilizar durante una
examinación forense.
PsTools
Los kits de recursos de Windows NT y Windows 2000 vienen con un número de herramientas de
comandos en línea que ayudan a administrar el sistema. PsTools es un conjunto de herramientas
no propietario de Microsoft que incluye comandos similares a los kit de recursos de Windows [27].
Todas estas utilerías trabajan en Windows NT, Windows 2000 y Windows XP y no necesitan ser
instaladas como las herramientas del Resource Kit. La suite PsTools incluye las utilerías
mostradas en la tabla 3.4.
40
Utilería Función
psinfo Lista información detallada acerca de los procesos, el tipo de SO, versión, etc.
psloggedon Muestra quien esta en una sesión localmente y quienes están conectados a recursos
compartidos y desde que hora iniciaron la sesión.
Si el servidor esta dentro de un dominio conectado con otros servidores puede dar
algunas otras conexiones de usuarios con otros servidores diferente a el.
psloglist Descarga la bitácora de eventos.
Nota: Solo para WinXP.
pspasswd Cambia los passwords de cuentas
pslist PsList es una utilería que muestra una combinación de información de los dos
comandos del Resource Kit (ps y list), incorporando la habilidad de poder ver procesos
y estadísticas de hilos en una computadora remota.
Con los parámetros de default PsList muestra información orientada a CPU de todos los
procesos que están corriendo en el sistema local. La información listada por cada
proceso incluye el tiempo de procesador en que se ha ejecutado y cantidad de memoria
física asignada.
Nota: Para obtener los datos remotamente se necesita que el equipo remoto tenga
habilitado el puerto RPC o tener corriendo los servicios remotos del registry.
SYSINTERNALS
listdlls Lista los DLLs abiertos por cada proceso, etiqueta los DLLs cargados con diferentes
números de versiones que pueden corresponder a archivos en disco y pueden decir cual
DLL esta relocalizado porque no está cargado en su dirección base.
Utilería Función
http://www.sysinternals.com/utilities/tcpview.html
Mientras no contemos con una solución integrada, podemos construir un conjunto simple y
rápidamente con las herramientas mostradas en la tabla 3.5.
Utilería Función
ethereal Permite capturar y graficar tráfico de red, corre bajo Windows y bajo Linux.
La habilidad de Ethereal para capturar el tráfico de red 802.11 en Windows es limitado
debido al bajo soporte ofrecido por los drivers 802.11 de los adaptadores.
En Windows, no se puede administrar la captura o controlar los frames, tampoco se puede
capturar en modo promiscuo, por lo que solo se podrá capturar el tráfico para y desde la
máquina que está corriendo Ethereal.
Esto se debe considerar al correr este software en Windows.
etherape Construye “talkers map” para un segmento de red dado, es una gran herramienta para
caracterizar trafico “normal”.
tcpreplay Permite repetir tráfico capturado y controlar la velocidad en la cual fluye a través de otro
programa.
fport.exe Fport es soportado por Windows NT, 2000 y XP. Este comando reporta todos los puertos
TCP/IP y UDP abiertos. Es la misma información que se despliega usando el comando
“netstat -an”, pero muestra estos procesos con el PID corriendo, nombre y ruta. Puede ser
utilizado para identificar rápidamente puertos desconocidos abiertos y sus aplicaciones
asociadas. http://www.foundstone.com
winhex Es un editor hexadecimal que es utilizado en recuperación de datos y procesamiento de
datos a bajo nivel. Inspecciona y edita toda clase de archivos, recupera archivos borrados o
datos perdidos del disco duro en sistemas de archivos corruptos y también en tarjetas de
cámaras digitales. Se puede descargar de la siguiente dirección:
http://www.winhex.com/winhex/index-e.html
l0pthcrack L0pthCrack o LC es una aplicación para recuperar y auditar passwords. Se puede obtener
una versión de evaluación por 15 días en Internet.
http://www.atstake.com/products/lc/
pwdump2 Descarga los password hashes (trozos de password encriptados en formato ASCII) del
42
Utilería Función
Nota: En el equipo bajo análisis deben estar habilitadas las políticas de auditoría
showin Muestra información acerca de Windows. Revela passwords
http://www.foundstone.com/index.htm?subnav=resources/navigation.htm&subcontent=/res
ources/freetools.htm
bintext Encuentra strings en un archivo.
http://www.foundstone.com/index.htm?subnav=resources/navigation.htm&subcontent=/res
ources/freetools.htm
filemon Monitorea y despliega la actividad del sistema de archivos en tiempo real. Explora la forma
en que trabaja Windows, buscando cómo las aplicaciones utilizan los archivos y DLLs. La
característica de sello de tiempo (timestamp) de Filemon muestra cuando la abertura,
lectura, escritura o borrado se llevó a cabo y el resultado.
http://www.sysinternals.com/Utilities/Filemon.html
netcat Utilería usada para crear un canal de comunicación entre dos sistemas diferentes. Cryptcat
(cryptcat) es usada para crear canales de comunicación encriptado. Netcat provee la forma de
transferir información entre sistemas en red.
Los registros del archivo de volcado de memoria son un conjunto de información que puede
ayudar a identificar porque la computadora ha parado inesperadamente. Esta opción requiere un
archivo de pagineo (paging file) de por lo menos 2 MB (megabytes) en el volumen de booteo. En
computadoras corriendo Windows 2000 o sistemas recientes, Windows crea un archivo nuevo
cada vez que la computadora para inesperadamente.
Userdump.exe
Esta herramienta se puede utilizar para generar un volcado de usuario de un proceso que se cierra
con una excepción o cuando un proceso deja de responder (bloqueos) [25].
La mayoría del software forense que se puede correr en Windows es comercial y se necesita
pagar una licencia para poder utilizarlo, en algunos sitios se puede bajar un demo para presentar
el producto. A continuación se muestran algunos productos, pero no se hace uso de ellos en esta
investigación.
El software comercial, tiene un costo para poder utilizarlo, algunos de estos productos tienen una
copia de evaluación o demostración, que el investigador podrá bajar y si es útil y se puede
adaptar fácil a sus necesidades, comprarlo. Algunos de los productos comerciales para Windows
son mostrados en la tabla 3.6.
Producto Características
detective y Ambas herramientas son comercializadas por la compañía Tech Assist Inc.
byteback
Byte Back es una herramienta de recuperación. Dentro de sus características se encuentra la
clonación o creación de imágenes, la recuperación de archivos en particiones FAT y NTFS.
encase EnCase es un software para Win95/98 y NT, se utiliza para la recuperación de archivos.
forensic Utiliza un lenguaje de programación EnScript que permiten al investigador diseñar sus
edition propias rutinas. Los sistemas de archivos interpretados por este software son: FAT, NTFS,
HFS, Sun Solaris UFS, EXT, BSD, Palm entre otros. Se puede obtener un CD de
evaluación en Internet previo registro en la dirección http://www.guidancesoftware.com/
forensic Access Data es una empresa que ofrece capacitación y servicios en forensia, dentro de sus
toolkit productos se encuentran:
ghost Norton Ghost 2002. Software de Symantec que puede clonar y restaurar particiones
individuales o discos completos, y puede enviar y recibir imágenes de disco a través de
partition LAN, USB, y conexiones de puertos paralelos. El editor de imágenes de Ghost Explorer
magic permite usar drag-and-drop para mover archivos y directorios dentro o fuera de la imagen
clonada.
forensic Paraben Corporation es una empresa que se dedica a ofrecer servicios forenses,
replicator capacitación, equipo y software, a través de su página en Internet http://www.paraben.com,
podemos encontrar los siguientes productos:
forensic
sorter Forensic replicator. Se utiliza para crear réplicas exactas de controladores (drives) y
medios. Es basado en windows.
pda seizure
Forensic sorter. Ordena los datos en una forma efectiva para hacer búsquedas exactas.
PDA Seizure. Herramienta diseñada para capturar y reportar datos de un PDA, reportando
sobre un ambiente windows.
ilook Es distribuido gratuitamente para agencias calificadas como: Inteligencia, Militar y
Gobierno. Se puede encontrar en la siguiente dirección: http://www.ilook-forensics.org.
45
Ya hemos hablado del software necesario para la recolección y análisis forense, pero es necesario
contar con un equipo donde se corra este software que nos va a ser de utilidad para recolectar
datos, monitorear la red y hacer imágenes de disco. Este equipo puede construirse o adquirirse.
Como desconocemos el tipo de SO, equipo de cómputo o dispositivo de comunicación con el que
nos vamos a enfrentar, lo mejor es contar con la mayor cantidad de controladores (drivers) de
dispositivos y Sistemas Operativos. Aún así se puede utilizar cualquier computadora, pero en el
caso de un investigador profesional es mejor estar preparado. Algunos productos de hardware
forense son mostrados en la tabla 3.7.
UltraBlock
Es un dispositivo que protege a controladores (drives) de escrituras
inesperadas, se puede conectar a través de FireWIre y USB.
UltraBlockIDE utiliza manejadores (drives) IDE, ATA, SCSI,etc
46
The Shadow
Es un dispositivo que es instalado entre el controlador IDE sospechoso
y el disco duro sospechoso. Permite a un sistema bootear en el
ambiente sospechoso, manteniendo la integridad del ambiente bajo
análisis. Para lo cual almacena y administra todas las operaciones de
escritura y modificación del sistema. Asegurando que todas las
actualizaciones y escrituras son obtenidas y almacenadas internamente
redireccionándolas a una cache interna. Como opera a nivel físico, es
compatible con todos los sistemas operativos.
Image MASSter
Es un software de duplicación de dispositivos hecho para capturar datos
de disco.
Forensic Workhorse IV Equipo portable que contiene manejadores para CD-ROM, DVD, SCSI,
IDE. El equipo es compatible con todo el software de forensia
comercial, Encase, Forensic Tool Kit, Safe Back, Mares, etc. Este
producto se puede encontrar en la siguiente dirección: www.forensics-
computer.com
Adicional al conjunto de herramientas principal, hay muchos otros elementos de los que debemos
disponer cuando se realiza una investigación. Estos elementos incluyen elementos que ayudaran a
documentar actividades en el área. Los dispositivos de registro como cámaras fotográficas, los
medios de almacenamiento seguro y una buena libreta de apuntes.
Es necesario contar con un equipo de red pequeño, como un concentrador (hub) de 4 puertos y
cable de red. Un CD o floppy de respuesta a incidentes para ayudar a buscar y recoger evidencia
en forma segura, sin afectar al sistema victima.
Toma mucho tiempo crear un buen conjunto de herramientas, la mejor forma es probar y
anticipar los sistemas que pueden sufrir intrusiones. Poco a poco se hará mas completo hasta
crear un buen conjunto de herramientas para cada SO, tipo de kernel, etc.
3.2 SO LINUX
Lo bueno de utilizar Linux para Forensia es que la mayoría de las herramientas son libres y el
ambiente es flexible. Las limitaciones son que como la mayoría de las herramientas son libres, no
se tiene soporte técnico.
Según Kevin Mandia y Chris Prosise [36] una de las diferencias de trabajar en Unix y Linux con
respecto a Windows es la dificultad de recuperar archivos borrados en algunas variantes de Unix
y Linux. Cuando se ejecuta un proceso en Windows NT/2000, no se puede borrar el archivo
correspondiente al proceso. Sin embargo Unix y Linux permite borrar un programa después de
que ha sido ejecutado, el proceso puede seguir corriendo, aun cuando el archivo ha sido borrado
del disco duro.
Linux provee muchas utilerías para realizar recolección y restauración de información del
sistema, cuenta con software de captura de imágenes de memoria como dd y dio. Preparar el
conjunto de herramientas (toolkit) no es tan fácil y toma tiempo, porque cada variante del sistema
operativo puede llegar a requerir un conjunto de herramientas único.
49
Para evitar una dependencia de las bibliotecas en el sistema víctima, se deben compilar las
herramientas estáticamente. Con la opción “static” para crear un programa ejecutable que no
requiera el uso de bibliotecas compartidas. En caso de ser necesario se puede utilizar el comando
“ldd” para determinar si el programa incluye librerías dinámicas e incluir éstas en el conjunto de
herramientas.
La tabla 3.8 expone comandos del sistema operativo Linux y su utilidad para la recolección de
información.
Utilería Función
Utilería Función
ltrace Rastrea llamadas a librerías dinámicas que son llamadas por el proceso ejecutado.
strings Imprime los caracteres reconocibles de un archivo. Es útil para determinar el contenido
de archivos que no son de texto.
Md5sum Crea y verifica la autenticidad del archivo (checksum)
lsmod Lista los módulos cargados. Esta información también se encuentra en /proc/modules:
$ cat /proc/modules
La modificación del i-nodo puede ser: cambiar los permisos (Mode changed), cambiar
el nombre del archivo, copiarlo a otro equipo o crear el archivo (File created).
El acceso puede ser: verlo o copiarlo con ftp.
El estado del archivo puede ser realizar un cambio interno.
find Busca archivos. Ejemplos pueden ser:
Buscar archivos por permisos: $ find / -perm 540 –ls
Buscar archivos donde el propietario es root: $ find / -user root –ls
Buscar archivos modificados en los ultimos 5 días: $find / -mtime -5
Mostrar archivos modificados la semana anterior: $ find / -mtime +2 –a +mtime -7
printenv Imprime todo o parte de un ambiente
file Determina el tipo de archivo. Clasifica los archivos en varios tipos, prueba el sistema
de archivos, el número mágico y el lenguaje.
ptrace Llamada a sistema que provee una interfaz por la cual un proceso padre puede
observar y controlar la ejecución de otro proceso, examinar y cambiar su imagen core y
registros. Es usada principalmente para implementar “breakpoints debugging”
script Hace un typescript de todo lo que se ha impreso en la Terminal. Para iniciar la captura
solo se ejecuta el comando “script” para finalizar la captura se puede usar CTRL-d.
more Filtro para páginas a través de texto en una pantalla a la vez
51
Utilería Función
vi Editor de texto. Nota: se puede evitar que los comandos se guarden en el historial con !:
“ : ! cat /etc/passwd “
pkginfo Despliega los paquetes de software instalados, para versiones de UNIX , AIX y Solaris.
rpm Red Hat Package Manager. Utilería que permite desplegar los paquetes de software
instalados e información referente a estos con la opción: rpm –qa,
rpm –qai paquete
rm Remueve archivos y directorios
mmap Mapea o desmapea archivos o dispositivos en memoria. Es una función para programar
/usr/sbin/tcpd Tcpd anota todos los intentos de conexión que le llegan en /var/log/secure para que
tenga la posibilidad de saber quien intenta conectarse a su máquina y si lo consigue
openssl Es una herramienta de criptografía que puede ser utilizada para la creación de llaves
RSA, DH, DSA, creación de certificados, el cálculo de los “message digest”, cifrar o
descifrar, pruebas de servidores con SSL y TLS, y manejo de correo encriptado.
pkg-config Obtiene metainformación acerca de las librerías instaladas. El directorio donde está
instalada, etc.
#pkg-config - -cflags glib
#pkg-config - - modversion glib
iptables Herramienta de administración para el filtrado de paquetes
$iptable –L Lista
debugfs Depurador del sistema de archivos ext2
Para listar los inodos borrados:
$ debug /imagenes/floopy.img
debug: lsdel
ldd Imprime dependencias de librerías compartidas
Los archivos y programas mostrados en la tabla 3.9 también ayudan a proveer más información
sobre el sistema:
Archivo Utilidad
La facilidad de crear volcados de memoria (memory dump) provee un análisis de primera falla.
La caída de un sistema (crash) se presenta con una falla (bug) de hardware o software (Oops,
BUG() o panic). En Linux la información del volcado de memoria contiene el estado del
procesador, un rastreo de la pila y un conjunto limitado de instrucciones.
Existen parches disponibles para Linux e implementaciones de algunas versiones de Unix, que
reinicializan el sistema sin limpiar la memoria, vaciando una imagen de memoria a disco duro en
una partición swap. Este procedimiento no es estandarizado y generalmente no es disponible ya
que no todos tienen la facilidad del firmware PCBIOS para hacerlo, aún entre cambios de
53
versiones del mismo firmware, por lo que no es una solución razonable para sistemas operativos
de propósito general [15].
Existen máquinas Intel que no limpian la memoria en la reinicialización. Para saber si el equipo
con el que trabajamos es de ese tipo, en el kernel se coloca el parámetro “reboot=w”. Esto
advierte un “warm reboot” instruyendo al BIOS para saltar el chequeo de memoria. Algunas
veces funciona, aunque la mayoría no [13].
En la distribución de Linux Red Hat existen varias herramientas que podemos utilizar para
obtener información realizando un volcado de memoria: Netdump y GDB
Los dispositivos de red son simples, permiten de una forma fácil habilitar un modo de
interrupciones no manejadas, esta característica le permite al sistema seguir trabajando, aun
cuando ocurra una caída del sistema (crash).
Netdump incluido en la versión de Red Hat Advanced Server 2.1 aprovecha esta ventaja y provee
la facilidad de realizar crash-dump y enviar la información a través de red. Netdump es una
arquitectura cliente-servidor, se debe instalar el paquete netdump-server y configurarlo, los
clientes configuran la dirección del servidor donde enviarán los mensajes del kernel y podrán
vaciar imágenes de memoria al servidor centralizado vía la red.
El servidor centralizado registra los mensajes del kernel, incluyendo crash signature messages,
etc. Los dumps son preservados para análisis comparativos, algo que no es fácil con crash dumps
sobre discos [15].
El crash dump se realiza antes de reinicializar el equipo, esto permite reservar solo la memoria
necesitada por el código de crash dump (algunas páginas de memoria), y extender la información
provista por el dump, incluyendo el estado del hardware.
GDB (Proyecto debugger GNU) desarrollado por Richard Stallman, es el depurador de GNU,
permite ver qué está pasando dentro de un programa cuando se está ejecutando o que otro
programa se está ejecutando en el momento de un crash. Viene incorporado en varios sistemas
como RedHat Enterprise.
Una vez iniciado, gdb lee los comandos desde la terminal. Dentro de GDB los comandos
“dump”, “append” y “restore” en GDB pueden copiar datos entre memoria y archivos. Los
comandos dump y append escriben datos a un archivo, y el comando restore lee los datos del
archivo para regresarlos a memoria. Los archivos pueden estar en formato binario[14].
Proyecto LKCD
Existen varios módulos ya creados para Linux que nos permiten obtener información de la
memoria. Uno de éstos fue creado por el proyecto Linux Kernel Crash Dump (LKCD). Este fue
diseñado para que los administradores de sistemas tuvieran un método confiable para guardar
información y poder examinar una caída de su sistema (system crash).
El proyecto usa código a nivel de usuario y de kernel con los siguientes objetivos:
55
1) Salvar una imagen de memoria del kernel debido a una falla de software.
2) Recuperar una imagen de memoria del kernel cuando el sistema ha sido reinicializado (reboot).
3) Analizar la imagen de memoria para determinar que sucedió cuando la falla ocurrió.
La imagen de memoria es almacenada en una partición definida del sistema que es conocida
como dispositivo “dump”. Una vez que el sistema se normaliza después de la reinicialización del
sistema, pero antes de que la partición swap sea montada, el archivo dump es recuperado
utilizando la herramienta “lcrash” (Linux Crash).
LKCD permite realizar volcados no destructivos. Esto significa que el sistema continúa corriendo
después del proceso de volcado, pero en operaciones destructivas como “panic” el sistema se
reinicializará. La instalación de LKCD requiere que se reconstruya el kernel[11, 24].
El software que vimos en las secciones anteriores tiene como objetivo apoyar al administrador
del sistema, pero las herramientas forenses están diseñadas para apoyar al investigador forense.
También puede ser útil no ejecutar los programas con nombre obvios de programas forenses o de
respuesta a incidentes como “graverobber”, “lazarus” o “mactime”. Por lo que se puede
renombrar las herramientas con nombre menos evidentes.
TCT Coroner´s Toolkit es un paquete de utilerías escritas por Dan Farmer y Wietse Venema [35]
para la realización de un análisis forense en un sistema UNIX. Este software fue presentado por
primera vez en agosto de 1999. Fue diseñado para los sistemas Unix, pero puede recolectar y
analizar datos en discos o medios que no son de Unix. El sistema corre en FreeBSD, OpenBSD,
SunOS y Linux.
56
• Grave-robber
Herramienta de captura de datos.
• Las herramientas C (ils, icat, pcat, file, etc.).
Estas son utilizadas por grave-robber, pero pueden ser utilizadas individualmente.
• Unrm & lazarus
Herramientas para recuperar archivos borrados y datos ocultos o perdidos. Unrm hace una copia
de todo el espacio en disco accesible y no asignado, lazarus analiza esta copia y trata de
determinar cada bloque de datos y su tipo.
• mactime
Herramientas que despliegan los patrones de acceso de los archivos.
El tiempo necesario para obtener datos con TCT depende del sistema, su procesador y el espacio
requerido. Utilizar esta herramienta puede tomar tiempo considerable y crear un gran volumen de
datos. El análisis de esta información puede tomar horas.
Pasos de instalación:
#cd /home/hforenses/
#tar zxvf tct-1.15.tar.gz
#cd tct-1.15
#make
Se requieren varios megabytes para la salida del TCT. La herramienta unrm puede consumir más
del espacio localizado en el disco duro. TCT usa nombres de path completos.
Para preparar una copia de TCT y poder almacenarla en un floppy podemos realizar los
siguientes pasos:
# mkdir /home/hforenses/tct
# cp –R /home/hforenses/tct-1.15/* /home/hforenses/tct
# rm –rf /home/hforenses/tct/data
# rm –rf /home/hforenses/tct/src
# rm /home/hforenses/tct/*.log
Después de este paso copiamos los archivos del directorio tct en un floppy:
# cp –R /home/hforenses/tct/* /floppy/tct/
Debido a que la copia todavía tiene referencias a los directorios donde se realizó la instalación,
todas estas referencias deben ser cambiadas, para este propósito los autores de TCT proveen el
script de configuración que hace esta tarea muy simple:
# cd /floppy/tct
# perl reconfig
GRAVE-ROBBER
Es la herramienta de captura de datos de TCT, intenta obtener y salvar información del sistema
necesaria para el análisis. Esta herramienta puede ser usada en una máquina “viva” o en una
imagen de disco del sistema de archivos de la victima. En el modo “vivo” grave-robber obtiene la
información según el siguiente orden de volatilidad:
1) Toma los atributos de todos los comandos y archivos. Esta información es recolectada
primero para preservar los atributos de tiempo MAC
2) Toma información del estado de los procesos y opcionalmente la memoria de todos los
procesos corriendo
3) Los archivos borrados que aún están activos.
4) Los archivos ejecutables de todos los procesos.
5) Los atributos de los archivos borrados
6) La información del estado de la red
58
7) La información del estado del host, vía comandos dependientes del sistema que proveen
información de configuración.
8) Los atributos de archivos existentes.
9) Opcionalmente, la información sensitiva como archivos que garantizan acceso remoto a
cuentas de usuarios y trabajos “cron” para comandos de ejecución desatendida.
10) Copia archivos de configuración y archivos críticos.
Toda esta información es almacenada en un directorio protegido que tiene el nombre del host y la
hora de inicio de la recolección de datos. Para cada archivo que es almacenado, grave-robber
aplica md5 hash.
Por default grave-robber corre para el sistema completo, se recomienda que corra como root para
que capture archivos y procesos de información que no son disponibles para usuarios normales.
Esta captura puede tomar varias horas.
Grave-robber es útil sobre sistemas “vivos”, pero también puede usarse sobre la imagen de un
disco. Las opciones que maneja son:
También podemos utilizar las herramientas “C” en forma independiente como se muestra a
continuación:
PCAT
Pcat es útil en un sistema vivo para examinar procesos, porque copia el contenido de la memoria
del proceso a una salida estándar, pero no copia procesos de sistema. Un ejemplo se muestra en
el siguiente comando que envía a pantalla la información legible (con “strings”) del proceso
id_proceso.
ILS
Ils lista la información de i-nodos, en un análisis post mortem es muy útil para recolectar i-nodos
de archivos borrados. Ils es útil en sistemas vivos para determinar datos que posiblemente estén
ocultos (archivos abiertos pero “desligados” (unlinked)).
Archivos no usados:
z = lista los inodos con estado cero en “change time”. Por lo tanto son inodos que nunca han sido
usados (archivo no usados)
61
Este comando nos pueden indicar cuantos archivos están instalados en el sistema y que nunca
hemos utilizado.
ICAT
La herramienta icat copia archivos por el número de i-nodo de un dispositivo dado a la salida
estándar, es útil para recuperar archivos borrados. La podemos usar directamente sobre el disco
para recuperar archivos borrados, como se muestra a continuación:
O aplicarla a una imagen de disco, recuperando los archivos junto con ils, como se muestra a
continuación:
class|host|start_time
body|pegaso|1129578295
st_ino|st_alloc|st_uid|st_gid|st_mtime|st_atime|st_ctime|st_dtime|st_mode|st_nlink
28|a|0|0|1125313915|1125313915|1125313915|0|0|…
…st_size|st_block0|st_block1
…0|0|0
FILE
File hace una clasificación por tipos de archivos, haciendo pruebas de sistema de archivos,
número mágico o de lenguaje:
62
# /tct/bin/./file Nombre_de_archivo
# /tct/bin/./file /tmp/borrados/*
/tmp/borrados/1207: empty
/tmp/borrados/16110: ASCII text
/tmp/borrados/2039: ELF 32-bit LSB executable, Intel 80386, version 1
/tmp/borrados/2047: perl commands text
MAC times
Mactime es un programa que intenta determinar que archivos fueron accedidos o modificados
con una ventana de tiempo dada. El programa mactime ordena el resultado y produce una lista,
mostrando las tres características de tiempo de los archivos, modificación, acceso y cambio, que
nos permitirá inferir alguna actividad del intruso en cuanto a tiempos.
# /tct/bin/./mactime –y –R –d / 1/2/1970
Todos los archivos son listados en orden por fecha y tiempo (primera columna). La segunda
columna lista el tamaño del archivo, la siguiente columna contiene la acción en el archivo: “m”
para modificación, “a” para acceso y “c” para creación.
Usando la opción –m con grave.robber, también llamamos a mactime para recolectar los registros
de tiempo.
# /tct/bin/./grave-robber –m /mnt/hack/root
63
3.2.2.2 MEMDUMP
Memdump es un programa que fue escrito para evitar los problemas que se pueden tener con
“dd” o “cat”. Fue diseñado para alterar la memoria lo menos posible [18]. Después de instalarlo se
crea un archivo ejecutable y se puede obtener una imagen de la memoria sin reinicializar el
sistema y puede ser transferido por la red con netcat o ssl
Esta herramienta provista por los mismos autores de TCT, permite obtener una descarga (dump)
de la memoria física.
Este programa descarga la memoria del sistema a la salida estándar, saltando los hoyos en los
mapas de memoria. Por default, el programa descarga el contenido de /dev/mem. La salida esta
en formato crudo. Sus opciones son:
Para un mejor resultado enviamos la salida sobre la red usando “netcat” u “openssl.
Sleuth Kit (TSK) es una colección de herramientas basadas en TCT y Autopsy, es una interfaz
gráfica para TSK. Estas dos herramientas son de código abierto, corren en sistemas como Linux,
OS X FreeBSD, OpenBSD y Solaris, y analizan sistemas de archivos NTFS, FAT, UFS, EXT2FS
y EXT3FS [16].
Sleuth Kit (TSK) previamente conocida como @stake Sleuth Kit (TASK), es una colección de
herramientas de comandos en línea basada en TCT. Permite examinar el sistema de archivos de
una computadora sospechosa en una forma no intrusiva, porque estas herramientas no se
relacionan con el SO. Soporta particiones DOS, BSD y Mac.
TSK permite analizar la imagen de un sistema de archivos creado con dd o un software similar.
Autopsy proporciona una interfaz gráfica para utilizar las herramientas de TSK. Estas dos
herramientas, en conjunto con TCT hacen un poderoso paquete de herramientas forenses para
Unix, Linux y Windows.
TSK
Algunas de las herramientas que utiliza son:
fsstat Muestra los detalles y estadísticas del sistema de archivos.
dcat Despliega el contenido de un “pedazo” de disco de una imagen forense. La imagen
debe ser creada con dd.
dls Recupera datos de disco. Lista los detalles acerca de unidades de datos y puede
extraer espacio no asignado (unallocated) del sistema de archivos. Es llamado
“unrm” en TCT
dstat Despliega las estadísticas acerca de una unidad de datos dada.
dcalc Calcula donde existen datos en una imagen (dd), en una imagen “slack” (dls –s) o
una imagen “unallocated” (dls).
65
icat Copia archivos por número de inodo. Extrae las unidades de datos de un archivo
ifind Encuentra la estructura del metadato que tiene asignada una unidad de disco dada.
ils Lista la información de los inodos o estructura de metadatos
istat Despliega las estadísticas y detalles acerca de una estructura de metadatos dada.
ffind Encuentra el nombre de un archivo o directorio en base a un inodo dado. Asigna y
libera el nombre de archivos que apuntan a una estructura de datos dada.
fls Lista los nombre de archivos y directorios de una imagen.
hffind Utiliza un algoritmo de ordenamiento binario, que busca hashes.
mactime Toma las salidas de archivos fls e ils para crear una línea de tiempo de la
actividad de los archivos
sorter Ordena los archivos basados en su tipo y extensión
mmls Despliega la distribución del disco, incluyendo el espacio no asignado.
Estas herramientas del sistema de archivos permiten examinar archivos de sistema de una
computadora sospechosa de una manera no-intrusiva. Debido a que las herramientas no dependen
del sistema operativo para procesar archivos de sistema.
Autopsy
Autopsy Forensic Browser, es una interfaz gráfica para la herramienta de análisis forense TSK.
Hace posible el análisis de una imagen obtenida de la máquina víctima a nivel de archivo bloques
e inodo. Autopsy y TSK juntas proveen muchas de las características de herramientas
comerciales de análisis forense para sistemas de archivos Windows y Unix. Autopsy es basado en
HTML, cuenta con un administrador de archivos que muestra los detalles de archivos borrados.
Para la instalación de Autpsy es necesario haber hecho antes la instalación de TSK pues lo que
hace es proporcionar una interfaz gráfica para utilizar las herramientas de TSK. También es
necesario indicarle el directorio donde se concentrará la información de los casos que se manejen.
Una vez instalado se aplica el siguiente comando:
#./autopsy
66
Este comando correrá un proceso y deberá permanecer abierto mientras se abre un navegador
HTML con el puerto 9999 del host local. Autopsy puede escuchar solicitudes de cualquier puerto,
por lo que el usuario puede conectarse desde cualquier otro sistema (Windows o Linux) para
operar con Autopsy utilizando un navegador.
La siguiente pantalla muestra el menú inicial, donde podemos ir documentando y analizando cada
caso:
3.2.2.4 LIVE CD
Es un CDROM booteable con una distribución portable que provee un ambiente inmediato para
realizar análisis forense, respuesta a incidentes, recuperación de datos, escaneo de virus.
Provee las herramientas necesarias para un análisis forense en vivo, solo montando el CD ROM,
es posible utilizarlos en SO win32, sparc Solaris y x86 linux, los binarios estáticos están
disponibles en /statbins [37].
FIRE puede ser inicializado en un ambiente de ventanas (X-Windows) o con modo consola.
Requiere un procesador Intel x86 con por lo menos 48MB de RAM. Algunas de las herramientas
que son incluidas son nessus, nmap, hping2, ethereal, snort, tcpdump, ettercap, dsniff, airsnort,
chkrootkit, F-Prot, tct, tctutils, autopsy, testdisk, fdisk,, SSH (client and Server), VNC (client and
server) y perl.
68
Menú de utilidades:
Después de bootear con el CD, se despliega un menú de utilidades, mostrando las siguientes
opciones:
Si necesitamos utilizar un shell de comandos, podemos utilizar las teclas ALT-F1, ALT-F2, etc.
Con el menú de utilidades podemos montar todas las particiones, pero es importante también
desmontarlas una vez que se haya terminado de utilizarlas. El password de root es firefire.
El CD contiene varios binarios ligados estáticamente que pueden ser utilizados para recolección
de información y análisis forense en un sistema vivo.
KNOPPIX
El software instalado es: Linux-Kernel 2.6.x, KDE V3.x, K Office y Konqueror, X Multimedia
System, programas de manipulación de imágenes GNU, herramientas de seguridad y análisis para
administradores de red, OpenOffice [39].
PENGUIN SLEUTH
CD de booteo para Forensia basado en Knoppix [40]. Las herramientas de seguridad y Forensia
que tiene instaladas se muestran en la tabla 3.11.
Herramienta Descripción
Foremost Herramienta para recuperar archivos utilizando sus cabeceras (headers) o parte final del
archivo (footers) – foremost.sourceforge.net
Glimpse Herramienta para realizar búsquedas rápidas a través de sistemas de archivos completos –
www.webglimpse.net
Wipe Utilería en línea de comandos para borrado seguro – wipe.sourceforge.net
Herramienta Descripción
Por default el usuario con el que se bootea es knoppix, se puede utilizar un shell y convertirse en
root para realizar ciertas tareas, pero en caso de necesitar root en todo el ambiente, se necesita
indicar en el prompt de boot : knoppix 2 y después startx.
SMART
La tabla 3.12 muestra más herramientas de utilidad para el proceso de recolección de datos que
son disponibles en Internet:
Utilería Función
Utilería Función
www.chkrootkit.org
carbonite www.foundstone.com
pdzap Es una pequeña aplicación que cuando es colocada en un teléfono celular P800
de SonyEricsson, permite obtener imágenes de los dispositivos flash a un stick
de memoria.
maresware El software comercial para cómputo forense tiene un precio de $325 dólares.
La empresa ofrece capacitación.
<http://www.maresware.com/>
tripwire Es una herramienta que verifica la integridad de los sistemas. Puede funcionar
como detector de intrusos. http://sourceforge.net/projects/tripwire/
tcp-wrapper Servicio que verifica el origen de las conexiones con su base de datos
/etc/hosts.allow y /etc/hosts.deny. Provee un control de acceso basado en la
fuente y destino de la conexión y el registro de las conexiones exitosas o no. El
programa de implementación de tcp-wrapper es tcpd ubicado en /usr/sbin
http://www.iec.csic.es/criptonomicon/linux/tcpwrapper.html
Hay que hacer notar que las herramientas descritas no son las únicas, existen muchas más, pero
es cuestión de cada investigador el encontrar la herramienta con la que mejor se adapte.
Una vez conocidas las herramientas con las que podemos disponer, podemos hacer un análisis del
uso de las herramientas para investigación forense. Para nuestro análisis dividiremos las
herramientas en dos grupos:
Lo bueno de utilizar Linux para Forensia es que la mayoría de las herramientas son libres, el
ambiente es flexible y cuando las herramientas son usadas apropiadamente, la evidencia puede
ser relevante para levantar cargos al culpable.
La limitación es que como la mayoría de las herramientas son libres, no se tiene soporte técnico y
no se puede llamar al autor a una corte si es necesario, lo cual permite a la defensa recorrer el
código en busca de errores “bugs” y poder descartar la información obtenida por la herramienta
en cuestión. Otra limitación es que no tienen todas las características como los paquetes
comerciales y son más complicadas de usar que las herramientas comerciales.
Por otra parte, las herramientas comerciales tienen todo el respaldo de la empresa o autor que lo
patrocina, pero debemos pagar el precio que marca y las posibles actualizaciones para contar con
la garantía de dicho producto.
Las herramientas administrativas son de gran utilidad para el administrador del sistema nos dan
información fácil y rápidamente, pero no están diseñadas para la recolección y análisis forense
74
En el caso de utilizar las herramientas forenses con respecto a las herramientas administrativas, la
razón por lo que es preferible usar las herramientas forenses es que la mayoría de los sistemas no
pueden ser simplemente desmantelados, los datos crudos (raw data) son demasiado voluminosos
y no es fácil manejarlos. Las herramientas forenses como TCT contienen programas de captura y
de análisis que permiten al investigador entender como operan los sistemas y como defenderse en
incidentes de seguridad futuros.
Para trabajar con las herramientas forenses se necesita mucha práctica para entender cómo
funciona el software y saber interpretar bien los resultados. La recopilación y análisis de
información los crea en paquete sin tener una amplia flexibilidad de lo que queremos y no
queremos respaldar. Las herramientas TSK y Autopsy hacen el análisis sobre imágenes de disco
del sistema bajo análisis y no propiamente sobre la información volátil que es donde nos estamos
enfocando en este trabajo.
Las herramientas de volcado de memoria son software desarrollado para obtener información
después de una falla de sistema que cause su caída, debe ser instalado y configurado previamente
en el sistema, por lo que para este tipo de software se necesita que el usuario esté familiarizado
con el equipo ya que se configura y reconstruye el kernel.
Utilizar los CD LIVE o CD con sistema operativo y herramientas de seguridad integrados son de
gran utilidad ya que contienen lo necesario para una respuesta rápida, pueden contener un sistema
de menús que hace más fácil su uso, ofrecen una gran cantidad de aplicaciones y detección de
hardware, con las herramientas relevantes para expertos en seguridad, pero es conveniente que el
investigador forense cree su propio conjunto de herramientas que va ir complementando en cada
caso que resuelva.
75
CAPITULO 4
METODOLOGÍA PARA LA
RECOLECCIÓN DE INFORMACIÓN
Y CASOS
76
Dentro de cada caso se explicará a detalle la obtención de datos utilizando diversas herramientas
y comandos del sistema operativo y forense, con el fin de capturar datos volátiles y de la
memoria RAM antes de quitar la energía del equipo bajo análisis.
En la figura 4.1 se muestra cada uno de los casos con el estado del sistema “vivo”, así como el
estado del sistema cuando no tiene energía de alimentación o “muerto”, pero esta última parte se
verá con detalle en el siguiente capítulo.
Dentro de los pasos forenses debemos obtener, guardar y seguir la pista de información acerca de
una posible actividad criminal, esto significa que se debe tener mucha precaución para recolectar
en forma exacta y confiable los datos para hacerlos seguros.
En general la mejor práctica para recolectar evidencia es usar herramientas confiables, salvar
datos en medios removibles y asegurar la autenticidad de los datos. Considerando que nada
acerca del sistema puede ser confiable, debemos tratar cada equipo como si estuviera
comprometido, tuviera “rootkits” instalados o pudiera estar monitoreado por atacantes.
De acuerdo a Kevin Mandia y Chris Prosise en su libro “Incident Response” [36], para la
recolección de datos volátiles es más importante la respuesta inicial que el análisis técnico
posterior. Al dar de baja el sistema bajo investigación se puede llegar a destruir evidencia crítica,
esto debido a que los atacantes han aprendido a tomar ventajas de los medios de almacenamiento
volátil.
Una de las reglas básicas del cómputo forense es que no debemos trabajar con los datos
originales, pero para capturar la información volátil quizá sea la única forma de poder obtenerla.
Por lo que si vamos a trabajar con un sistema vivo debemos recordar que para cada decisión y
paso a tomar, el investigador deberá tener razones sólidas de cada acción realizada y ser
debidamente documentada.
Si sabemos que el examinar datos volátiles los altera, consideraremos que el sistema se
modificará por lo que deberemos saber específicamente qué y porqué se modificó, para lo cual
deberemos conocer muy bien las herramientas que utilizaremos y saber que archivos se
modifican al utilizarlas, también deberemos tomar un registro de tiempo de todos los archivos del
sistema antes y después de proceder a la captura. Con esto sabremos qué estaremos modificando
en el momento de la recolección.
78
Independientemente del sistema operativo con el que cuente el equipo bajo análisis y de acuerdo
a lo explicado en el capítulo 2, los siguientes datos son perdidos una vez que el sistema es dado
de baja:
El contenido en los registros del procesador y su cache es casi imposible obtenerlos debido a que
el simple intento de capturarlos los alteraría, por lo que no intentaremos capturar esta
información.
En la memoria también existen áreas principales que pueden ser alteradas, algunas páginas en el
área de memoria serán modificadas al correr los comandos de nuestro conjunto de herramientas y
cuando hagamos una clonación o descarga de ésta.
Obtener el estado de las conexiones de red y procesos corriendo tiene un impacto menor en el
sistema. La información es generalmente almacenada en tablas residentes en la memoria del
kernel y la simple lectura de los datos no los modificará.
Todo esto nos lleva a la conclusión de que antes de revisar un sistema “vivo” debemos contar
con una metodología de captura.
A continuación se propone una metodología “general” que contiene los pasos para obtener los
datos volátiles más críticos:
En este paso se realizará una conexión donde los comandos y programas que aplicaremos sean
confiables.
79
En este paso iniciamos la obtención de datos utilizando herramientas que nos permitan obtener el
tiempo y fecha del sistema y obtener un registro de tiempo de todos los archivos y directorios
(timestamp).
En este paso empezaremos a recolectar la información, realizando las siguientes acciones que a
continuación se describen:
a.- Obtener los datos del sistema (nombre, dirección IP, etc.)
b.- Determinar los puertos abiertos
c.- Listar los procesos corriendo (sockets, servicios, etc.)
d.- Respuesta inicial profunda (bitácoras), en el caso de contar con el tiempo necesario.
(4) Determinar quien está dentro del sistema y quienes se han conectado recientemente
En este paso tratamos de determinar las conexiones actuales y recientes al sistema bajo análisis
además de la información de red contenida en el sistema.
En este paso realizaremos nuevamente un registro de tiempo en los archivos y directorios para
que podamos compararlo con el primer registro y sepamos los cambios que hicimos durante
nuestra recolección de información.
Finalmente haremos una imagen del sistema de memoria RAM, para después analizarlo con
mayor tiempo y no durante la respuesta inicial.
80
Equipo de herramientas
Otra situación a la que se enfrenta el investigador forense es contar con un password de acceso al
sistema, debido a que para recuperar el password de acceso a un sistema muchas veces es
necesario reiniciarlo, o que para tratar de adivinarlo, el proceso lleva tiempo, hemos tomado la
decisión de que en caso de no contar con el password de acceso procederemos a apagar el equipo
sin recolectar la información volátil, debido a que al tratar de obtener el password de acceso
perderemos casi toda la información volátil que estamos buscando, por lo que en los casos
propuestos se considera que se tiene un password de acceso al sistema.
81
Las condiciones bajo las cuales se encuentra el equipo bajo sospecha son; el estado del sistema
será “vivo”, es decir el equipo sospechoso estará conectado a la energía y corriendo sus procesos
en forma “normal”, el sistema operativo al que se enfrentará el investigador será Windows 2000
y se contará con el password de acceso.
CASO 1:
CASO 2: CASO 4: CASO 3: CASO 5:
Windows Linux Windows Linux Grave_robber
Linux
Tal como consta la figura 4.2 el procedimiento se aplicará a un sistema vivo donde el
investigador forense se conectará directamente en la consola del equipo sospechoso estableciendo
una conexión segura en forma local, una vez establecida esta comunicación el investigador
aplicará los comandos de su conjunto de herramientas a través de esta conexión.
Los programas que utilizará en esta captura no serán instalados en el sistema bajo análisis,
correrán desde una fuente de archivos “confiables” que puede ser un floppy o un drive USB, estas
herramientas correrán sobre el sistema operativo en cuestión y finalmente los resultados
obtenidos se almacenará en un medio confiable (floppy o drive USB).
82
En este primer paso vamos a hacer disponible el conjunto de herramientas montando el medio en
el sistema, después procedemos a establecer una línea de comandos segura ejecutando la
herramienta “cmd.exe” confiable. Se debe tener cuidado de que el atacante haya puesto algunas
trampas para hacer fracasar la captura de datos, por ejemplo se puede presentar la situación en
que al ejecutar el comando cmd.exe en la máquina victima se active un proceso aplicando el
comando del *.* en el directorio \winnt\System32, haciendo el sistema virtualmente inoperable.
Por lo que ejecutaremos el comando “cmd.exe” de manera confiable, direccionándolo al drive
donde se almacenan nuestras herramientas, en este caso será la letra “a:”, como se muestra en la
siguiente ventana:
Después de crear un “shell” seguro, se captura la hora (time) y fecha (date) del sistema con las
herramientas almacenadas en nuestro medio seguro (drive a:), la opción –t de los comandos
obliga a que el comando no quede en espera.
a:\toolkit>date /t
The current date is: Thu 08/18/2005
a:\toolkit>time /T
The current time is: 16:58:09.14
También podemos utilizar el comando “now” del resource kit, que despliega “date” y “time” en
un solo comando:
A:\toolkit\now
Fri Apr 07 17:53:09 2006
Después de obtener el tiempo y fecha del sistema hacemos un registro de tiempo de todos los
archivos del sistema, utilizando el comando “dir” para obtener un listado de todos los archivos en
el sistema bajo análisis, tiempos de acceso, modificación y creación.
83
Utilizando el comando “dir”, se puede hacer un despliegue por propietario (/Q) y tiempo de
último acceso al archivo (/TA) de todos los archivos del sistema (/S), esto con el fin de marcar un
sello de tiempo (time stamp):
Directory of c:\
El siguiente comando provee un listado recursivo de los tiempos de modificación del drive D
a:\toolkit>dir /t:w /a /s /o:d d
El siguiente comando provee un listado recursivo de los tiempos de creación del drive E
a:\toolkit>dir /t:c /a /s /o:d e
Para obtener los listados recursivos de los tiempos de acceso, modificación y creación también
podemos utilizar el comando “ls.exe” incluido en el CD-live de FIRE.
Para obtener los datos del sistema verificamos el nombre del equipo con el comando “hostname”:
a:\toolkit>hostname
comprometido
A continuación obtenemos la identificación de red del equipo con el comando “ipconfig” como
se muestra a continuación:
a:\toolkit>ipconfig /all
Para enumerar los puertos por los cuales los procesos están escuchando, utilizamos la
herramienta “fport”, esta herramienta nos muestra los puertos que están actualmente escuchando,
pero no nos dice que puertos están sirviendo a usuarios remotos en el momento. Para esto
utilizamos el comando de Windows “netstat” que enumera los puertos escuchando y además las
conexiones a esos puertos:
a:\toolkit>fport
A continuación se muestra la aplicación de la herramienta ”netstat” que es útil para grabar datos
volátiles como conexiones actuales y las que han terminado.
a:\toolkit>netstat -an
Active Connections
En este caso son de particular interés las conexiones externas (172.29.69.69) más que las locales
(127.0.0.1 o 172.29.69.83). Con “fport” se obtienen los procesos sospechosos esperando una
conexión y con “netstat” se obtiene las conexiones actuales a ese proceso. El comando “tcpvcon”
es similar a la utilería “netstat” de Windows, por lo que se puede utilizar en vez de netstat.
a:\toolkit>tcpvcon -a
Antes de apagar el equipo bajo análisis es importante grabar todos los procesos que están
corriendo. Esta información no puede ser obtenida si se desconecta el cordón de energía. Cuando
un proceso se está ejecutando en Windows se crea un objeto kernel y un espacio de direcciones
conteniendo el código ejecutable. El objeto kernel creado es usado por el sistema operativo para
manejar el proceso y contener información estadística acerca del proceso.
Para obtener la lista de procesos que está corriendo en el sistema podemos utilizar la herramienta
“pslist”, como se muestra a continuación:
a:\toolkit>pslist
Name Pid Pri Thd Hnd Priv CPU Time Elapsed Time
Idle 0 0 1 0 0 7:56:24.963 7:59:01.778
System 8 8 44 208 24 0:00:10.304 7:59:01.778
SMSS 144 11 6 33 1096 0:00:00.560 7:59:01.778
CSRSS 168 13 10 469 1580 0:00:05.778 7:58:50.672
WINLOGON 188 13 18 434 6888 0:00:03.024 7:58:49.330
SERVICES 216 9 37 550 3192 0:00:04.045 7:58:47.267
LSASS 228 9 21 297 2916 0:00:07.160 7:58:47.237
svchost 436 8 8 243 1572 0:00:00.560 7:58:42.100
spoolsv 464 8 11 134 2716 0:00:00.380 7:58:41.088
msdtc 492 8 21 198 1968 0:00:00.360 7:58:40.978
svchost 600 8 29 1085 9612 0:00:04.606 7:58:38.715
LLSSRV 628 9 10 79 796 0:00:00.070 7:58:37.744
FrameworkServic 660 8 10 194 2952 0:00:01.131 7:58:37.423
Mcshield 732 13 20 204 18308 0:00:55.369 7:58:35.801
VsTskMgr 748 8 11 132 5112 0:00:00.230 7:58:35.480
naPrdMgr 792 8 4 108 4560 0:00:00.140 7:58:34.068
regsvc 848 8 2 30 288 0:00:00.050 7:58:27.779
mstask 880 8 6 114 1136 0:00:00.250 7:58:25.656
userdump 924 8 4 47 332 0:00:00.030 7:58:19.608
WinMgmt 952 8 4 115 1276 0:00:10.324 7:58:17.865
svchost 1000 8 6 208 5924 0:00:03.745 7:58:12.187
dfssvc 1032 8 2 36 484 0:00:00.060 7:58:10.755
87
Es importante poder identificar la diferencia entre los procesos críticos, normales y procesos no
permitidos. Por ejemplo si “pslist” revela que el proceso EVENTVWR está corriendo, esto
sugiere que alguien está observando las bitácoras. Si se observa el USRMGR, se puede sospechar
que alguien trata de cambiar las políticas de auditoría, borrar o agregar una cuenta de usuario o
cambiar los datos de una cuenta de usuario o password.
Si es que se cuenta con mayor tiempo se pueden ejecutar los siguientes comandos con el fin de
obtener un poco más de información sobre el sistema vivo, en caso de no contar con mayor
tiempo continuaremos con el siguiente paso de la metodología planteada.
Para obtener una bitácora de los accesos que ha habido al sistema podemos utilizar la herramienta
“Ntlast” que nos permite monitorear las entradas (“logons”) exitosas y fallidas al sistema y si la
auditoría de entradas/salidas (“logon/logoff”) fue activada o desactivada en el sistema. “Ntlast”
con la opción –r lista todas las entradas exitosas de un sistema remoto y la opción –f lista los
intentos fallidos.
a:\toolkit>ntlast
Nota: Este comando da información solo si las políticas de auditoría están habilitadas en el
equipo bajo análisis.
88
El comando “dumpel” se puede utilizar para obtener las bitácoras y copiarlas a un archivo de
texto, a continuación se muestra la captura de los eventos de seguridad, aplicación y sistema:
El Registry NT/2000 almacena datos útiles durante la respuesta inicial. Para obtener estos datos
podemos utilizar las herramientas “regedit” o “reg”. Regedit genera un archivo grande y reg
obtiene solo valores específicos que sean de nuestro interés (keys).
a:\toolkit\regedit –e respaldo_registry.reg
:
Para obtener información de los usuarios podemos aplicar la siguiente sintaxis:
reg query “HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\REgisteresOwner”
reg query “HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\WinLogon”
El siguiente es un ejemplo de aplicación del comando “reg”, con la llave para obtener
información de usuarios:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\WinLogon
AutoRestartShell REG_DWORD 0x1
DefaultDomainName REG_SZ LUNA
DefaultUserName REG_SZ administrator
LegalNoticeCaption REG_SZ
LegalNoticeText REG_SZ
PowerdownAfterShutdown REG_SZ 0
ReportBootOk REG_SZ 1
Shell REG_SZ Explorer.exe
ShutdownWithoutLogon REG_SZ 0
System REG_SZ
Userinit REG_SZ C:\WINNT\system32\userinit.exe,
VmApplet REG_SZ rundll32 shell32,Control_RunDLL "sysdm.cpl"
SfcQuota REG_DWORD 0xffffffff
allocatecdroms REG_SZ 0
allocatedasd REG_SZ 0
allocatefloppies REG_SZ 0
cachedlogonscount REG_SZ 10
passwordexpirywarning REG_DWORD 0xe
scremoveoption REG_SZ 0
DontDisplayLastUserName REG_SZ 0
AppSetup REG_SZ
DebugServerCommand REG_SZ no
SFCDisable REG_DWORD 0x0
ShowLogonOptions REG_DWORD 0x1
AltDefaultUserName REG_SZ administrator
AltDefaultDomainName REG_SZ LUNA
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\WinLogon\GPExtensions
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\WinLogon\Notify
El siguiente paso es determinar que cuentas de usuarios tiene conexiones activas al sistema. Para
esto nos ayudaremos con la utilería de PStools “psloggedon”:
a:\toolkit>psloggedon
Para determinar quien está conectado al sistema utilizamos “net session”, “arp” y “nbtstat”.
La herramienta “nbtstat” es usada para acceder al cache NetBIOS, permitiéndonos listar las
conexiones recientes, con la opción –c se muestra la información en cache de Netbios
90
a:\toolkit>nbtstat –c
No names in cache
La herramienta “nbtstat” con la opción –r lista los nombres resueltos por broadcast vía WINS
a:\toolkit>nbtstat –r
Resolved By Broadcast = 0
Resolved By Name Server = 2
Registered By Broadcast = 0
Registered By Name Server = 9
El comando “net” con la opción “session”, obtiene una lista de sesiones establecidas en el
sistema, como se muestra a continuación.
a:\toolkit>net session
El comando “arp” es utilizado para mapear direcciones IP a direcciones físicas MAC con las
cuales el sistema se ha comunicado. Con la opción “–a” se muestra y modifica la tabla de
conversión de direcciones IP a direcciones físicas.
91
a:\toolkit>arp –a
Este paso tiene el fin de obtener un segundo registro para que al compararlo con el primero
podamos identificar bien los cambios que hemos hecho en el sistema a la hora de la recolección
de información, para lo cual nos podemos ayudar nuevamente de la herramienta “dir” o “ls”
como en el paso 1:
Directory of c:\
. . . .
. . .
. .
Este paso se deberá realizar una vez concluidos los anteriores porque se producirá un volcado de
memoria que modificará el registry y reiniciará el sistema.
Por lo que para forzar al sistema para que cree un archivo “.dmp” cambiamos la configuración
del “registry” con el siguiente comando que utiliza la herramienta “reg.exe”:
Después de haber realizado esta configuración en el “registry” y para poder crear el archivo
dump, será necesario provocar el fallo en la computadora oprimiendo la tecla derecha CTRL y al
mismo tiempo oprimir dos veces la tecla Bloq/despl (ScrollLock). Se pondrá la pantalla azul y se
reiniciará el sistema.
Todos los pasos con sus respectivas acciones y herramientas aplicadas son resumidos en la tabla
4.1.
Todos estos comandos pueden ser incorporados en un programa batch como script y hacer la
captura con mayor velocidad. Para realizarlo creamos un archivo de texto con los comandos
requeridos y le ponemos la extensión bat.
En este caso elaboramos 5 scripts, en el primero se concentran los comandos aplicados y para la
respuesta inicial profunda donde se almacenan las bitácoras y el resultado del “registry”,
elaboramos los 4 script restantes.
Después de ejecutarlos aplicamos el comando “md5sum” al archivo generado por el script para
asignarle una identificación de integridad de los datos.
94
Este ejemplo ejecuta el script “copy_reg” que hace una copia del registry, al cual se le realiza el
mismo procedimiento anterior.
Por último se ejecuta el script “sys_log” que obtiene la bitácora de sistema y al cual se le realiza
el mismo procedimiento anterior.
Ya que es necesario llevar nota de todos los pasos realizados, nos ayudaremos de la tabla 4.1
para registrar los datos importantes como la hora de inicio de la captura, el comando aplicado, si
es confiable o no, la salida del md5sum al archivo de datos y posibles comentarios, como se
muestra en la tabla 4.2.
Confiable
psloggedon
nbtstat -c
nbtstat -n
nbtstat -r
nbtstat -s
net session
arp –a
dir c:\ /Q /S /TA
En el segundo caso las condiciones bajo las cuales se encuentra el equipo bajo sospecha son
similares al primer caso, el sistema se encontrará “vivo” conectado a energía eléctrica y con sus
procesos en estado “normal”, solamente que en este caso no se tiene acceso local al sistema, por
lo que se tendrá que obtener la información a través de la red. El sistema operativo con el que se
enfrentará el investigador será Windows 2000 y se cuenta con el password de acceso. La
siguiente figura muestra el tipo de caso a tratar:
CASO 2:
Windows CASO 4: CASO 1: CASO 3: CASO 5:
Linux Windows Linux Grave_robber
Linux
El equipo bajo sospecha puede ser un servidor o estación de trabajo conectado en red, por lo que
en este caso observamos que se puede obtener información de dos formas; la primera a través de
lo que el mismo equipo bajo sospecha emana a través de la red y por lo tanto a todos los equipos
conectados a ésta, sin establecer ningún tipo de conexión al sistema sospechoso, y la segunda
forma estableciendo una conexión segura específica al sistema sospechoso para obtener toda la
información volátil posible con comandos locales aplicados remotamente.
Para tener una mejor idea de la situación, la figura 4.6 muestra el diagrama de conexión de los
equipos en la red y los procedimientos que se llevarán a cabo para realizar la recolección:
Investigador forense
Equipo comprometido
Win2000
Procedimiento 1:
Servicios activos en red
La estación forense tendrá cargado el conjunto de herramientas que se utilizará y ésta misma
almacenará los datos recolectados.
98
Para este caso en una primera etapa trataremos de obtener todos los datos posibles a través de
servicios disponibles en red de la máquina bajo análisis, por lo que nos saltaremos este paso y
comenzaremos con el segundo.
En este paso de la metodología vamos a obtener información en forma remota. Los comandos
que aplicaremos nos permiten obtener información a través de la red, sin necesidad de tener algún
tipo de acceso al equipo.
Primero obtenemos el tiempo y fecha del sistema con el comando “net time”, como se muestra a
continuación:
A continuación podemos obtener información del sistema con el comando “srvinfo” que es una
utilería del resource kit.
(forense)C:\pruebas>srvinfo \\comprometido
Aplicamos el comando “pslist” para obtener los procesos que están corriendo en el sistema
utilizando la siguiente sintaxis: pslist \\machinename
(forense)C:\toolkit>pslist \\comprometido
Name Pid Pri Thd Hnd Priv CPU Time Elapsed Time
Idle 0 0 1 0 0 2:04:11.534 2:05:42.836
System 8 8 47 210 24 0:00:09.253 2:05:42.836
SMSS 144 11 6 33 1096 0:00:00.530 2:05:42.836
CSRSS 168 13 10 437 1288 0:00:02.463 2:05:31.820
WINLOGON 164 13 18 429 6788 0:00:02.663 2:05:30.538
SERVICES 216 9 38 531 3144 0:00:03.695 2:05:28.565
LSASS 228 9 20 291 2896 0:00:01.632 2:05:28.535
svchost 436 8 9 276 1704 0:00:00.851 2:05:23.037
spoolsv 464 8 11 136 2700 0:00:00.540 2:05:22.446
msdtc 492 8 21 207 1992 0:00:00.330 2:05:22.336
svchost 600 8 28 1246 9768 0:00:04.947 2:05:20.233
LLSSRV 628 9 9 75 776 0:00:00.120 2:05:19.492
FrameworkServic 672 8 10 193 2944 0:00:01.041 2:05:18.400
Mcshield 732 13 20 203 18320 0:00:32.556 2:05:17.018
VsTskMgr 748 8 11 131 5112 0:00:00.250 2:05:16.568
naPrdMgr 792 8 4 108 4560 0:00:00.220 2:05:14.625
regsvc 868 8 4 91 744 0:00:00.250 2:05:09.978
mstask 880 8 6 114 1140 0:00:00.270 2:05:08.446
userdump 936 8 4 47 332 0:00:00.020 2:04:58.071
WinMgmt 1000 8 5 117 1332 0:00:10.414 2:04:55.297
svchost 1032 8 6 213 5904 0:00:03.885 2:04:53.965
dfssvc 1056 8 2 36 484 0:00:00.070 2:04:53.495
inetinfo 1084 8 36 776 7424 0:00:02.032 2:04:50.911
svchost 1368 8 11 168 1580 0:00:00.220 2:03:58.786
explorer 1336 8 12 248 4888 0:00:07.821 2:02:37.549
shstat 724 8 6 61 4600 0:00:00.210 2:02:03.160
UpdaterUI 636 8 4 96 1004 0:00:00.260 2:02:00.937
internat 1288 8 1 27 372 0:00:00.070 2:02:00.396
wuauclt 1700 8 5 101 1572 0:00:00.150 2:01:03.163
CMD 1716 8 1 21 316 0:00:00.060 2:00:55.562
DLLHOST 720 8 8 143 1724 0:00:01.001 1:52:07.874
mdm 1620 8 3 88 828 0:00:00.140 1:24:16.150
Los rootkits y otros programas de acceso remoto son ejecutados desde un servicio, por lo que
listamos los servicios utilizando “sclist”:
(forense)C:\toolkit>sclist \\comprometido
--------------------------------------------
- Service list for \\comprometido
--------------------------------------------
running Alerter Alerter
stopped AppMgmt Application Management
stopped BITS Background Intelligent Transfe
running Browser Computer Browser
stopped cisvc Indexing Service
stopped ClipSrv ClipBook
running Dfs Distributed File System
running Dhcp DHCP Client
stopped dmadmin Logical Disk Manager Administr
running dmserver Logical Disk Manager
running Dnscache DNS Client
running Eventlog Event Log
running EventSystem COM+ Event System
stopped Fax Fax Service
running IISADMIN IIS Admin Service
stopped IsmServ Intersite Messaging
stopped kdc Kerberos Key Distribution Cent
running lanmanserver Server
running lanmanworkstation Workstation
running LicenseService License Logging Service
running LmHosts TCP/IP NetBIOS Helper Service
running McAfeeFramework McAfee Framework Service
running McShield Network Associates McShield
running McTaskManager Network Associates Task Manage
running Messenger Messenger
stopped mnmsrvc NetMeeting Remote Desktop Shar
running MSDTC Distributed Transaction Coordi
stopped MSIServer Windows Installer
stopped NetDDE Network DDE
stopped NetDDEdsdm Network DDE DSDM
stopped Netlogon Net Logon
running Netman Network Connections
stopped NtFrs File Replication
stopped NtLmSsp NT LM Security Support Provide
running NtmsSvc Removable Storage
running PlugPlay Plug and Play
102
Otra de las herramientas que podemos aplicar para listar los archivos compartidos y quien los ha
accedido es “srvcheck”, pero debe ser aplicado con una cuenta privilegiada, que en el siguiente
ejemplo muestra al usuario alicia_user y al usuario alicia_admin con privilegios totales sobre la
carpeta_compartida_de_comprometido.
(forense)C:\toolkit\srvcheck \\comprometido
\\comprometido\carpeta_compartida_de_comprometido
COMPROMETIDO\alicia_user Full Control
COMPROMETIDO\alicia_admin Full Control
En este paso de la metodología obtenemos las estadísticas del protocolo y las conexiones actuales
de TCPIP con el comando “nbtstat” y la siguiente sintaxis:
nbtstat –a \\machinename La opción “-a” hace una lista de los equipos remotos
Para realizar una conexión administrativa a la máquina remota utilizamos el comando “net use”
desde la estación forense con la siguiente sintaxis:
Ejemplo de aplicación:
(forense)C:\>net use \\comprometido\ipc$ /user:administrator password
Se ha completado el comando correctamente.
Una vez establecida la conexión copiamos los comandos confiables de nuestro conjunto de
herramientas (toolkit) con el comando xcopy:
toolkit\listdlls.exe
toolkit\NTLast.exe
toolkit\perms.exe
toolkit\procexp.chm
toolkit\procexp.exe
toolkit\psexec.exe
toolkit\psfile.exe
toolkit\psgetsid.exe
toolkit\Psinfo.exe
toolkit\pskill.exe
toolkit\pslist.exe
toolkit\psloggedon.exe
toolkit\psloglist.exe
toolkit\pspasswd.exe
toolkit\psservice.exe
toolkit\psshutdown.exe
toolkit\pssuspend.exe
toolkit\Rasusers.exe
toolkit\README.TXT
toolkit\Regrest.exe
toolkit\Sclist.exe
toolkit\Showmbrs.exe
toolkit\Srvcheck.exe
toolkit\Srvinfo.exe
toolkit\tcpvcon.exe
toolkit\nmap\nmap-os-fingerprints
toolkit\nmap\nmap-services
toolkit\nmap\nmap.exe
33 archivos copiados
Una vez copiados los archivos, establecemos una línea de comandos segura (cmd.exe) aplicando
la herramienta “psexec” con la siguiente sintaxis: psexec \\machine cmd
Ejemplo de aplicación
(forense)C:\>cd toolkit
(comprometido)C:\WINNT\system32>cd \toolkit
Como en el caso 1 utilizamos el comando “dir” o “ls” para obtener un listado de todos los
archivos en el sistema bajo análisis, tiempos de acceso, modificación y creación.
Directory of c:\
Una vez hecho el registro de tiempo en el equipo comprometido, procedemos a obtener el estado
del sistema con los comandos de nuestro conjunto de herramientas que ya se encuentra en el
sistema bajo análisis:
Como en el caso anterior obtenemos la identificación de red del equipo con el comando
“ipconfig”, como se muestra a continuación:
Para enumerar los puertos por los cuales los procesos están escuchando, utilizamos la
herramienta “fport”:
(comprometido)C:\toolkit\fport.exe
(comprometido)C:\toolkit>fport
FPort v2.0 - TCP/IP Process to Port Mapper
Copyright 2000 by Foundstone, Inc.
http://www.foundstone.com
Para obtener la lista de procesos que está corriendo en el sistema utilizamos la herramienta
“pslist”, esta información ya la obtuvimos en forma remota, pero a menos que no se haya podido
obtener, procederemos a su captura mediante la conexión segura al equipo.
Este paso se realiza si se cuenta con tiempo suficiente para obtener las bitácoras del sistema.
Primero podemos descargar la información del “registry” a un archivo, con el comando “reg” y
“regedit”, como se muestra a continuación:
(comprometido)c:\toolkit\regedit –e respaldo_registry.reg
Para obtener las bitácoras nos podemos auxiliar del comando dumpel.exe del resource kit. En el
siguiente ejemplo se muestra la obtención de las bitácoras de seguridad, sistema y aplicaciones:
El siguiente paso es saber quien esta en el sistema para lo cual utilizaremos las herramientas “net
session” y “tcpvcon”
(comprometido)C:\toolkit>net session
-------------------------------------------------------------------------------
\\ATORRES ADMINISTRATOR Windows 2002 Serv 4 00:00:00
(comprometido)C:\toolkit>tcpvcon
[TCP] System
PID: 8
State: ESTABLISHED
Local: comprometido:netbios-ssn
Remote: atorres:4082
También listamos los miembros del grupo administrador usando la herramienta “showmbrs” para
verificar algo inusual
(comprometido)C:\toolkit>showmbrs administrators
COMPROMETIDO\Administrator
COMPROMETIDO\alicia_admin
Utilizamos la herramienta “psloggedon” para mostrar los usuarios que están en el sistema (logged
on) actualmente.
(comprometido)C:\toolkit>psloggedon
Active Connections
(comprometido)C:\toolkit>ntlast
alicia_user COMPROMETIDO COMPROMETIDO Wed Aug 17 02:09:24pm 2005
Administrator COMPROMETIDO COMPROMETIDO Wed Aug 17 12:14:31pm 2005
- End Of File -
Como en el paso 1 nuevamente utilizamos el comando “dir” para obtener un listado de todos los
archivos en el sistema bajo análisis, tiempos de acceso, modificación y creación.
Directory of c:\
Para obtener una copia de la memoria, en este caso podemos utilizar la utilería “pslist” en forma
remota con sus opciones “x” que muestra los detalles de la memoria y proceso hijos (threds) y “t”
que muestra el árbol de procesos. El siguiente comando envía la salida de esta herramienta a un
archivo pslistx.txt.
Name Pid Pri Thd Hnd Priv CPU Time Elapsed Time
Idle 0 0 1 0 0 0:47:56.105 0:47:58.269
VM WS Priv Priv Pk Faults NonP Page
0 16 0 0 1 0 0
Tid Pri Cswtch State User Time Kernel Time Elapsed Time
0 0 178577 Running 0:00:00.000 0:47:56.125 0:00:00.000
Name Pid Pri Thd Hnd Priv CPU Time Elapsed Time
System 8 8 48 187 28 0:00:13.088 0:47:58.269
VM WS Priv Priv Pk Faults NonP Page
1672 36 28 176 2292 0 0
Tid Pri Cswtch State User Time Kernel Time Elapsed Time
4 0 2028 Ready 0:00:00.000 0:00:11.576 0:00:00.000
12 13 6 Wait:Queue 0:00:00.000 0:00:00.000 0:48:21.302
16 13 25459 Wait:Queue 0:00:00.000 0:00:00.080 0:48:21.302
20 13 2536 Wait:Queue 0:00:00.000 0:00:00.060 0:48:21.302
24 13 32722 Wait:Queue 0:00:00.000 0:00:00.060 0:48:21.302
28 13 1635 Wait:Queue 0:00:00.000 0:00:00.100 0:48:21.302
32 13 3581 Wait:Queue 0:00:00.000 0:00:00.270 0:48:21.302
36 13 14 Wait:Queue 0:00:00.000 0:00:00.000 0:48:21.302
40 12 965 Wait:Queue 0:00:00.000 0:00:00.210 0:48:21.302
44 13 1838 Wait:Queue 0:00:00.000 0:00:00.260 0:48:21.302
48 15 253 Wait:Queue 0:00:00.000 0:00:00.000 0:48:21.302
52 15 2944 Wait:Executive 0:00:00.000 0:00:00.000 0:48:21.302
56 18 681 Wait:VirtualMem 0:00:00.000 0:00:00.040 0:48:21.282
60 17 1951 Wait:FreePage 0:00:00.000 0:00:00.150 0:48:21.282
64 16 47802 Wait:Executive 0:00:00.000 0:00:00.010 0:48:21.282
68 23 78867 Wait:Executive 0:00:00.000 0:00:00.010 0:48:21.282
72 16 3 Wait:Queue 0:00:00.000 0:00:00.000 0:48:21.122
110
Name Pid Pri Thd Hnd Priv CPU Time Elapsed Time
mstask 760 8 6 111 1144 0:00:00.140 0:47:28.226
VM WS Priv Priv Pk Faults NonP Page
26924 460 1144 1160 1343 14 23
Tid Pri Cswtch State User Time Kernel Time Elapsed Time
684 9 121 Wait:Executive 0:00:00.020 0:00:00.010 0:47:28.216
780 8 272 Wait:UserReq 0:00:00.040 0:00:00.030 0:47:23.459
800 9 7 Wait:LpcReceive 0:00:00.000 0:00:00.010 0:47:21.366
836 8 1 Wait:UserReq 0:00:00.000 0:00:00.000 0:47:12.684
864 9 19 Wait:Queue 0:00:00.000 0:00:00.000 0:47:12.684
896 10 469 Wait:UserReq 0:00:00.000 0:00:00.020 0:47:11.912
Name Pid Pri Thd Hnd Priv CPU Time Elapsed Time
userdump 820 8 4 47 336 0:00:00.020 0:47:18.212
VM WS Priv Priv Pk Faults NonP Page
17056 72 336 336 299 1 14
Tid Pri Cswtch State User Time Kernel Time Elapsed Time
816 14 47 Wait:Executive 0:00:00.010 0:00:00.000 0:47:18.212
876 8 7 Wait:UserReq 0:00:00.000 0:00:00.000 0:47:12.433
880 8 2 Wait:UserReq 0:00:00.000 0:00:00.000 0:47:12.433
884 8 2 Wait:UserReq 0:00:00.000 0:00:00.000 0:47:12.403
Name Pid Pri Thd Hnd Priv CPU Time Elapsed Time
WinMgmt 908 8 4 112 1156 0:00:10.404 0:47:11.702
VM WS Priv Priv Pk Faults NonP Page
23452 108 1156 2168 8965 11 15
Tid Pri Cswtch State User Time Kernel Time Elapsed Time
904 9 101 Wait:Executive 0:00:00.050 0:00:00.020 0:47:11.702
796 9 683 Wait:UserReq 0:00:00.040 0:00:00.110 0:47:09.940
1084 10 524 Wait:LpcReceive 0:00:00.080 0:00:00.080 0:46:53.406
344 9 30 Wait:Queue 0:00:00.000 0:00:00.000 0:45:55.823
La tabla 4.3 resume los pasos realizados, las acciones tomadas y las herramientas utilizadas que
nos ayudarán a realizar la documentación apropiada de la captura de datos.
Una vez seleccionados los programas y pasos, realizamos un programa script que corra todos
estos comandos al mismo tiempo o también se puede correr cada comando en forma individual y
transferirlos a un sitio seguro con ayuda de la herramienta “netcat”, que envía información a
través de la red.
Para utilizar “netcat” el primer paso es levantar el servicio en nuestra estación de trabajo
(dirección IP 172.29.69.69), para escuchar (l) o recibir los datos remotos por el puerto (p) que en
este caso será el número 2222:
En el equipo bajo análisis se dirige la salida del script generado hacia la dirección IP de la
estación de trabajo forense:
Para el caso donde se ejecuta cada comando en forma individual, también se aplica esa misma
herramienta, de la siguiente manera:
CASO 3:
CASO 2: CASO 4: CASO 1: CASO 5:
Windows Linux Windows
Linux Grave_robber
Linux
2
La información estática es la información que permanece en el sistema hasta que sea sobrescrita, borrada o
destruída como pueden ser archivos de bitácoras, archivos de configuración, sistemas de archivos y que no se pierde
al apagar el equipo.
115
El primer paso en toda respuesta es estar seguro de que se están ejecutando comandos seguros en
el shell. Los shells de Linux pueden ser alterados (trojaned) por un atacante, que provocan que
los comandos ejecutados realicen operaciones erróneas en los comandos del investigador. Por lo
que será necesario ejecutar un shell seguro también (bash). Una vez ejecutado se direccionarán
todos los comandos a ese shell, colocando la variable de ambiente PATH igual a punto (.),
evitando ejecutar accidentalmente un comando no confiable. Un tip es cambiar el nombre de
nuestros ejecutables confiables para no cometer ese error, por ejemplo en vez de teclear netstat,
tecleamos tnetstat.
# /mnt/floppy/bash
# /mnt/floppy/PATH=.
# /mnt/cdrom/mount /dev/fd0 /mnt/floppy Para montar el floppy o USB donde almacenar la información.
# /mnt/cdrom/mount /dev/sda1 /mnt/memstick
# /mnt/cdrom/mount /dev/sda1 –n vfat /mnt/memstick Especificando en tipo de sistema
Los binarios no deben utilizar bibliotecas dinámicas, pero en caso necesario se deberán ligar a
bibliotecas en el CD. Los CD con distribución portable ya contienen herramientas en forma
estática (FIRE, knoppix o Trinux).
Una vez montadas las herramientas obtenemos un registro de tiempo del sistema con el comando
“date”:
Una vez que se decide realizar la respuesta inicial, se deben obtener todos los “time/date stamp”
en el sistema de archivos, para eso utilizaremos el comando “ls” con los siguientes argumentos:
Para obtener todos los procesos corriendo utilizaremos los comandos estándar “ps” o “pstree”.
# /mnt/cdrom/pstree –pla > /mnt/floppy/pstree.txt
# /mnt/cdrom/ps –Al > /mnt/floppy/procesos.txt La opción Al indica todos los procesos en un formato largo
En Linux, el comando “netstat” tiene la opción “-p” que mapea el nombre de la aplicación del
proceso, su ID, el puerto, la dirección y si están en escucha:
Se ejecuta “lsof” para localizar procesos sospechosos, lsof lista todos los procesos corriendo y los
descriptores de archivos que abren los procesos.
Como “lsof “ muestra los archivos abiertos , también se puede utilizar para identificar programas
sniffer ilícitos utilizando cuentas y passwords válidos robados. El atacante no querrá sobrescribir
los datos que ha capturado, por lo que los archivos serán fáciles de obtener[36].
El sistema de archivos /proc es un pseudo sistema que es usado como una interfaz a la estructura
de datos del kernel. Cambiándose al directorio /proc realmente se está accediendo a las
estructuras de datos del kernel, no a un directorio verdadero. Cada proceso tiene un subdirectorio
en /proc que corresponde a su ID. Por lo que cada proceso corriendo tendrá un subdirectorio
numérico. El sistema de archivos /proc es prácticamente la representación de todo nuestro
sistema en texto, los archivos y directorios bajo /proc contienen datos sobre cantidad de memoria,
procesos que están corriendo en el sistema y sockets.
En el caso de contar con tiempo para capturar información en vivo, podemos obtener información
de un proceso identificado como sospechoso, en el siguiente orden:
Ejemplo:
#ps –aux
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 08:01 ? 00:00:04 init
root 2 1 0 08:01 ? 00:00:00 [keventd]
root 3 1 0 08:01 ? 00:00:00 [kapmd]
root 970 1 0 08:02 ? 00:00:00 proc_sosp
rpc 1525 1 0 08:02 ? 00:00:00 portmap
rpcuser 1544 1 0 08:02 ? 00:00:00 rpc.statd
root 1600 1 0 08:02 ? 00:00:00 /sbin/cardmgr
root 1624 1 0 08:02 ? 00:00:00 /usr/sbin/apmd -p 10 -w 5 -W -P
La liga exe permite al investigador recuperar los archivos borrados que aún siguen corriendo. Por
ejemplo, si se ejecutó el siguiente comando:
# rm /root/ir/proc_sosp
rm: remove ‘/root/ir/proc_sosp?y
Aunque se haya removido el programa sospechoso, éste está ligado al sistema de archivos. El
comando “ls” no mostrará el archivo en el FS, sin embargo, en el contenido del directorio
/proc/970, se verá la siguiente salida:
970# ls –al
lrwx------- 1 root root 0 Apr 5 20:13 exe -> /root/ir/proc_sosp (deleted).
Se puede usar el comando “cp” para crear una copia del ejecutable corriendo en el sistema de
archivos.
En el subdirectorio “fd” (file descriptor), se pueden identificar todos los procesos que un archivo
ha abierto. Cuando el kernel de Linux, abre, lee, escribe o crea un archivo o socket de red, este
regresa un “file descriptor” (un entero positivo) que es usado para referenciar el archivo o socket
de red. Se pueden ignorar los fd 0, 1 y 2 que son “file descriptors” predefinidos para la salida o
entrada estándar.
fd# ls –la
El archivo “cmdline” muestra los argumentos exactos de la línea de comandos usados para correr
dicha aplicación. Normalmente, este es desplegado cuando un usuario ejecuta un comando “ps”.
Para desplegar su contenido tecleamos:
# cat cmdline
nautilus --no-default-window --sm-client-id default3
Determinar quien está en el sistema es un poco más simple. Solo ejecutamos el comando “w”
(what), y desplegará los IDs de usuarios conectados, de que sistemas están entrando y que están
ejecutando. También provee la hora y fecha del sistema:
La línea de cabecera indica la hora actual del sistema, cuánto tiempo el sistema ha estado arriba y
cuántos usuarios están actualmente conectados
El comando para determinar si la interfaz está en modo promiscuo es “ifconfig”:
Si la tarjeta se descubre en modo promiscuo, se puede suponer que existe un sniffer en el sistema
bajo análisis que eleva la severidad del ataque. Esto sugiere que el sistema comprometido no es
únicamente ese, también significa que el atacante tiene acceso a nivel de root [36].
Para obtener el nombre del sistema y el tiempo que ha estado levantado tecleamos los siguientes
comandos:
En el caso de Linux a diferencia de Windows no es necesario reiniciar el equipo para obtener una
copia de la memoria RAM, por lo que en este caso intercambiamos el paso 5 por el paso 6.
122
El comando dd es parte de el paquete fileutils de Red Hat, lo podemos utilizar para crear una
imagen o copia exacta de un archivo. Para copiar directamente el dispositivo de memoria
utilizamos la siguiente sintaxis:
129024+0 records in
129024+0 records out
# ls –l image_memory
-rw-r--r-- 1 root 66060288 Sep 25 18:27 image_memory
El tipo de archivo obtenido no se puede leer con un “cat” normal, pero se puede utilizar el
comando “string” para obtener los caracteres entendibles y mandarlos a un archivo que después
podamos analizar con tiempo.
GDB puede estar ejecutándose en la misma máquina o remotamente, en algún dispositivo externo
de solo lectura.
Dentro de GDB los comandos dump, append y restore copian datos entre memoria y archivos.
Los comandos dump y append escriben datos a un archivo, y el comando restore lee los datos del
archivo para regresarlos a memoria. Los archivos pueden estar en formato binario.
Nuevamente como en el paso 2 volvemos a tomar el registro de tiempo del sistema y de los
archivos, para saber que archivos pudimos haber modificado durante la recolección de
información:
PASO 7: DOCUMENTACION
La tabla 4.4 muestra los pasos que se siguieron y los programas que se utilizaron para llevar a
cabo cada paso. Esto nos ayudará a documentar todos los pasos realizados:
Registro de integridad
# /mnt/cdrom/md5sum image_mem
166e20b346bff5b030cbf07b3f4963718 image_mem
Automatizar la recolección
En este caso también se puede realizar un script que automatice todos los pasos realizados y la
recolección de información sea más rápida. Lo importante es estar seguro de que cualquier
archivo creado o copiado por un script esté en un medio seguro.
# !/bin/bash
# SCRIPT DE RECOLECCIÓN DE INFORMACIÓN
El script contiene todos y cada uno de los pasos ejecutados, esto también puede ser una referencia
de documentación del proceso.
126
Las condiciones bajo las cuales se aplicará la metodología en este caso serán sobre un sistema
vivo, el tipo de acceso que se tendrá al sistema será local y la información se recolectará a través
de la red, el sistema operativo con el que se enfrentará el investigador será Linux Red Hat
Enterprise y se contará con el password de acceso. La siguiente figura muestra el tipo de caso a
tratar.
CASO 5:
Captura de CASO 2: CASO 4: CASO 1: CASO 3: Grave_robber
paquetes Windows Windows Linux
Analizador Linux Linux
El equipo bajo sospecha puede ser un servidor o estación de trabajo conectado a red, por lo que la
información recolectada puede ser enviada a través de la red misma a una estación segura,
complementando la información con un equipo analizador de paquetes conectado a la misma red,
como se observa en la figura 4.9.
Linux Linux
Por lo que en este caso se conectarán dos equipos seguros la estación forense para recopilar
información y el equipo de monitoreo que en forma paralela estará capturando los paquetes que
circulen por la red.
MONITOREO DE RED
Para obtener datos de un sistema vivo, podemos correr un analizador de paquetes de red (network
sniffer) y observar el flujo de información para y desde el equipo comprometido, así, podemos
detectar algún tipo de actividad maliciosa, grabando y analizando en tiempo real su
comunicación.
Para capturar el tráfico del equipo sospechoso configuramos el switch donde esta conectado el
equipo para que envíe una copia del tráfico de ese puerto al puerto donde tenemos colocado
nuestro analizador de red. Para que esto se pueda realizar el switch debe tener disponible en los
puertos la técnica “Port Mirror” para que se pueda realizar esta acción.
El analizador de red que podemos utilizar es Ethereal que viene instalado en la versión de Red
Hat con la que estamos trabajando, a continuación presentamos las ventanas para correr una
captura de paquetes. Toda esta información puede ser guardada a un archivo que puede analizarse
posteriormente:
Una vez mostrada la forma de obtener los datos a través de un equipo de monitoreo podemos
empezar a aplicar los pasos de la metodología planteada:
En este paso primero haremos disponible el conjunto de herramientas confiable, éste se montará
en el sistema comprometido. Por lo que vamos a usar el comando “mount” no confiable de ese
sistema para realizar esta tarea, esperando que sea el único comando no confiable que habremos
de correr.
Para verificar el impacto que el comando “mount” tendrá en el sistema podemos utilizar el
comando “strace” del sistema operativo que nos ayuda a identificar los archivos y directorios que
son modificados al aplicar el comando “mount”:
open("/usr/lib/locale/locale-archive", O_RDONLY|O_LARGEFILE) = 3
..
lstat64("/etc/mtab", {st_mode=S_IFREG|0644, st_size=156, ...}) = 0
..
open("/etc/fstab", O_RDONLY|O_LARGEFILE) = 3
..
mount("/dev/cdrom", "/mnt/cdrom", "udf", MS_RDONLY|MS_NOSUID|MS_NODEV|0xc0ed0000, 0x805bb20) = -1
ENODEV (No such device)
/etc/ld.so.cache
/lib/tls/libc.so.6
/usr/lib/locale-archive
/etc/fstab
/etc/mtab
/dev/cdrom
/bin/mount
Es evidente que este procedimiento debe haberse realizado antes de aplicar la metodología en una
investigación.
Como ya sabemos los archivos que se modificarán al utilizar el comando “mount” no confiable,
procedemos a montar el CDROM con el toolkit creado:
Enviamos información de la fecha y hora del sistema comprometido a la estación forense que
almacenará los datos (en este caso 192.29.69.69) a través de “netcat” por el puerto 2222 como
sigue:
Para mantener la integridad de la evidencia digital, calculamos el valor “hash” del archivo
recolectado.
130
Para tomar la hora del sistema utilizamos el mismo comando “date” con la opción “-u”, el
resultado es presentado en el formato UTC (Coordinated Universal Time)
A continuación tomamos una referencia de tiempo de todos los archivos en el sistema (time
stamp) con el comando “mactime” para tener un control de lo que habremos de modificar en la
recolección de información:
También lo podemos hacer con el comando “ls” con sus opciones “c” que muestra modificación
del inodo, “u” del último acceso y sin parámetro la fecha de modificación del estado del archivo
o de creación del archivo.
La información acerca de los procesos, puertos y archivos abiertos puede ser recolectada por la
herramienta “lsof”.
Listar el directorio “modules” dentro de /proc nos puede servir para observar qué módulos están
cargados en memoria y poder detectar si tenemos un rootkit instalado. Algunas veces los rootkits
débiles pueden exportar sus símbolos, que se encuentran en el directorio “ksyms” de /proc por lo
que procedemos a obtener todo el sistema /proc de la siguiente manera:
Para obtener el tiempo que ha estado levantado el sistema utilizamos el comando uptime:
(forense) # nc –l –p 2222 > uptime
(comprometido)# /mnt/cdrom/statbins/./uptime | /mnt/cdrom/statbins/./nc 172.29.69.69 2222
(forense) # md5sum uptime > uptime.md5
Si algunos de los procesos activos son sospechosos podemos obtener información específica de
ese proceso o tal vez recuperarlo. Copiando un proceso particular podemos separar de mejor
manera los datos maliciosos de la memoria del sistema comprometido
(comprometido)#/mnt/cdrom/statbins/./ps -aux
Con “lsof” podemos listar las conexiones y archivos abiertos por el proceso:
(comprometido)#/mnt/cdrom/statbins/./lsof -p proc_id
(comprometido)#/mnt/cdrom/statbins/./strace -p proc_id
(comprometido)#/mnt/cdrom/statbins/./ltrace -p proc_id
Una vez identificado el proceso sospechoso. Utilizamos la herramienta “pcat” para copiar la
memoria del proceso.
Información de Cache
Primero recolectamos información de la tabla cache por el tiempo de vida de estos datos (que es
muy corto). Recolectamos datos de las tablas de ruteo y arp.
También se puede utilizar el comando “cat” en vez de “netstat” con la información de puertos
abiertos que es almacenada en el sistema de archivos proc (Archivos: /proc/net/tcp y
/proc/net/udp). La información de la conexiones activas se encuentra en el archivo
/proc/net/netstat. Todos los datos en estos archivos se presentan en formato hexadecimal, por
ejemplo la dirección 0100007F:0401 en decimal es 127.0.0.1:1025. Las conexiones activas
también pueden ser detectadas por el analizador de tráfico.
133
Utilizar una computadora remota como en este caso puede ser la mejor manera de salvar datos
con un mínimo de modificación sobre la memoria.
Cuando copiamos todo el sistema de memoria, se copian los datos colocados y los no colocados
(allocated/unallocated) porque el proceso copia la imagen entera de la memoria física.
También se puede utilizar memdump para obtener una imagen de la memoria sin reinicializar el
sistema y puede ser transferido por la red con netcat o ssl:
También podemos copiar la información en la memoria swap. La forma más fácil de copiar este
tipo de memoria es con un “cat” o “dd” al dispositivo de archivos en cuestión.
(forense)# /mnt/cdrom/statbins/./swapon –s
Filename Type Size Used Priority
/dev/hda3 partition 449812 0 -1
Para tomar un registro de tiempo de todos los archivos utilizamos los comandos “ls” o “mactime”
como lo hicimos en el paso 2.
PASO 7: DOCUMENTACIÓN
La tabla 4.5 muestra los pasos que se siguieron y los programas que se utilizaron y con esta tabla
podemos a empezar a documentar todas nuestras acciones:
Nuestro siguiente paso es documentar la información obtenida del sistema comprometido. Esta
información es necesaria para preparar una descripción propia del incidente y realizar una copia
de todo el sistema de archivos. Recordando que todos los resultados tienen que ser enviados a la
estación forense remota. La tabla 4.6 es un resumen de los comandos que conjuntan esa
información:
En este caso vamos a aplicar la herramienta forense “grave-robber” de TCT sobre un sistema
“vivo” a través de un acceso local directo en la consola del equipo sospechoso. La figura 4.11
muestra el tipo de caso a tratar:
Las herramientas forenses ya traen incluida su metodología a seguir y sus scripts de recopilación
de información como se mencionó en el capitulo 3. Por lo que los pasos 2, 3, 4, 5 y 6 de la
metodología se realizarán en este caso en un solo paso.
138
Una vez montado el medio con las herramientas establecemos un shell seguro:
(comprometido) # /mnt/floppy/./bash
(comprometido) # /mnt/floppy/PATH=.
Montamos el medio donde se almacenará la información, puede ser el mismo donde tenemos la
herramienta, pero en nuestro caso utilizaremos un stick de memoria:
Se debe tomar en cuenta que puede que no esté creado el directorio memstick en /mnt
Para una recolección rápida con grave-robber podemos usar las siguientes opciones:
Para una recolección mayor con grave-robber podemos usar las siguientes opciones, auque esta
recolección puede durar horas:
# /tct/bin/grave-robber –d /mnt/memstick –E –v /
body
class|host|start_time
body|pegaso|1129578295
md5|file|st_dev|st_ino|st_mode|st_ls|st_nlink|st_uid|st_gid|st_rdev|st_size|st_atime|…
000|/sbin/arp|770|340184|33261|-rwxr-xr-x|1|0|0|5632|38364|1129561396|…
000|/usr/bin/at|770|567699|35309|-rwsr-xr-x|1|0|0|0|36904|1129560411|…
…st_mtime|st_ctime|st_blksize|st_blocks
…1061824441|1125332924|4096|80
…1063360476|1125333129|4096|80
body.s
class|host|start_time
body|pegaso|1129578295
139
md5|file|st_dev|st_ino|st_mode|st_ls|st_nlink|st_uid|st_gid|st_rdev|st_size|st_atime…
000|/usr/bin/at|770|567699|35309|-rwsr-xr-x|1|0|0|0|36904|1129560411|…
000|/usr/bin/crontab|770|568049|35309|-rwsr-xr-x|1|0|0|0|110114|1129560234|…
…st_mtime|st_ctime|st_blksize|st_blocks
…1063360476|1125333129|4096|80
…1045661968|1125333199|4096|224
md5_all
md5_all.md5
d3aacbe1530ee815573d2450c3803144 /home/alicia/foren/tct-1.15/data//pegaso/MD5_all
command.out
Directorio \command_out
trust
Directorio \trust
user_vault
Directorio \user_vault
conf.vault
Directorio \conf_vault
Paso 7: Documentar
Por lo regular las herramientas forenses traen un sistema de introducción de datos que ordena la
información para cada caso en particular, en el caso de “Autopsy” para iniciar la documentación
de un caso se pide la imagen recopilada del disco. Pero en nuestro caso sólo utilizamos la
herramienta “grave-robber” de “TCT” que obtiene sólo la información volátil en forma de
archivos y no de imágenes. Por lo que utilizaremos para el análisis los archivos generados
directamente por la herramienta.
141
CAPITULO 5
RECUPERACIÓN DE
INFORMACIÓN EN MEMORIA RAM
A TRAVÉS DE PROCEDIMIENTOS
FÍSICOS
142
Se ha mencionado que una de las decisiones a las que se enfrenta el equipo de respuesta a
incidentes es dar de baja o no el sistema para realizar la captura de datos, en el capítulo anterior
se expusieron procedimientos en base a una metodología general para obtener datos de memoria
cuando el sistema permanecía encendido y corriendo sus procesos en forma “normal”.
En este capítulo hablaremos del caso donde el investigador forense encuentra el equipo apagado
o “muerto” y veremos que todavía es posible recuperar algo de la información de la memoria
RAM, por lo que ahora en lugar de utilizar el concepto de captura de datos utilizaremos el
concepto de recuperación de datos.
CASO 5:
CASO 2: CASO 4: CASO 1: CASO 3: Grave_robber
Windows Linux Windows Linux Linux
Para mostrar esto, daremos una introducción a los problemas en semiconductores que pueden
generar que se guarde algo de información en las memorias y mostraremos nueve ejemplos de
recuperación de datos de la memoria RAM utilizando métodos físicos:
Es importante mencionar que estos ejemplos han sido realizados en microcontroladores y tarjetas
“smartcards” por Universidades y centros de investigación especializados en semiconductores y
seguridad.
Durante esta investigación no se plantea una metodología para recuperar información volátil en
un sistema que ha sido apagado, pero estos ejemplos muestran la posibilidad de que aún se puede
obtener información de memoria en equipos donde se ha eliminado la energía eléctrica y que
pueden ser aplicados en alguna computadora o estación de trabajo que esté bajo una investigación
forense.
5.1 INTRODUCCIÓN
La remanencia es la representación física residual del dato que ha sido borrado de alguna forma.
Después de que un medio de almacenamiento es borrado existen algunas características físicas
que permiten al dato ser reconstruido [28].
El problema de la remanencia fue reconocido desde el año 1960. Se encontró que sin la
aplicación de procedimientos seguros de borrado de datos, la información sensitiva podía ser
revelada en un ambiente controlado. La remanencia de datos puede ocurrir en todos los
dispositivos semiconductores, es difícil de contrarrestar porque depende grandemente de las
características y defectos de los semiconductores.
El concepto de la remanencia se ha estudiado como un problema. Pero para nuestro caso, donde
lo que buscamos es una pista de información remanente en los dispositivos semiconductores esto
se vuelve más que un problema una solución.
que pueden causar un trastorno en el almacenamiento de los datos. Otros efectos simples como la
ruptura de una compuerta pueden destruir el dispositivo.
Algunos de los problemas que acompañan las nuevas generaciones de memoria debido a la
miniaturización de los dispositivos son [35]:
Para realizar un escalamiento confiable es necesario mantener el campo eléctrico constante en los
dispositivos mientras las dimensiones disminuyen. Sin embargo, reducir la alimentación de
voltaje asocia problemas de retraso y estandarización en el chip. Por lo que la alimentación de
voltaje se ha reducido tradicionalmente en un factor mas pequeño que el espesor del óxido de la
compuerta, produciendo una gran fuerza en el campo del óxido de la compuerta (gate oxide).
La confiabilidad del óxido de la compuerta (gate oxide) es afectada por defectos físicos durante la
fabricación, como el espesor del óxido que puede incrementar las fuerzas del campo eléctrico.
Este espesor del óxido abajo de los 4nm 3 produce una corriente en el óxido que pueden aumentar
los campos eléctricos, la temperatura y causar rupturas.
Se sabe que los efectos por inyección de portadoras aceleradas (hot carrier) pueden causar
sobrecarga de portadoras en el substrato, degradación del tiempo de refresco de la DRAM y en
algunos casos ruptura de los transistores MOSFET. Existe un decremento exponencial de los hot
carriers con respecto a la alimentación de voltaje. Por lo que la degradación por hot carrier no
afecta en gran medida a las DRAMs en el rango de los gigabits que tratan la alimentación de
voltaje de menos de 1V. Sin embargo, voltajes por arriba de éste pueden incrementar la
probabilidad de la degradación.
3
nm= nanómetro, unidad de longitud que equivale a una milmillonésmina parte de un metro, 1nm=1x10-9 m
146
Compuerta/ Gate/Base
Compuerta- Gate
Fuente/source/Emisor Drenado/drain/colector
Barrera de
Aislamiento
o Tipo n Tipo n
Tamperproof
Substrato tipo p Fuente Drenador
coating
o Substrato tipo p
Capa de
pasivación
Contacto ohmico
Las descargas electrostáticas y el sobrestrés eléctrico puede originar electricidad estática por el
cuerpo humano o por el ambiente en equipos mal aterrizados, esto puede generar rupturas en la
capa delgada de la compuerta (gate oxide). La fuerza del campo eléctrico requerido para romper
el SiO2 es cerca de 10 MV/cm. En años recientes los MOSFET se han hecho más sensibles a las
descargas. En chips con protección a estas descargas se coloca una circuitería de protección en
los pines I/O para proteger el dispositivo de picos de voltaje.
6) Confiabilidad de la metalización
Existe una variedad de formas en las cuales los datos almacenados pueden dejar trazos de su
existencia.
Estas formas se llevan a cabo a nivel físico del dispositivo semiconductor, desde la composición
del transistor, el arreglo de éstos y los capacitores que conforman la celda de memoria, hasta los
elementos complementarios como los amplificadores de sensibilidad que constituyen el sistema
de memoria.
Los efectos del estrés eléctrico en dispositivos semiconductores, producidos por contaminantes
iónicos, hot carrier y electromigración, pueden ser utilizados para determinar, después de un
período de tiempo indefinido, que tipo de señal fue llevada por una parte específica del circuito.
SRAM puede retener información por varios minutos y aún horas dependiendo de la temperatura
(-20ºC).
5.4 EJEMPLOS
Es común asumir que una vez removida la energía de la SRAM, el contenido de la memoria es
destruido inmediatamente. Este no es el caso, los datos puede mantenerse por varios segundos, en
que el dispositivo revertirá a su estado anterior si la energía regresa de nuevo. Si el CI es
congelado, el periodo de remanencia puede incrementarse en minutos u horas. La remanencia
varía entre los diferentes componentes.
Los ingenieros de seguridad están interesados en el periodo de tiempo en el cual una SRAM
retiene los datos una vez que se ha removido la energía. En los 80s una serie de experimentos
demostró que a bajas temperaturas la retención de datos de una SRAM se incrementaba de
segundos a minutos. Con los dispositivos de esa época se encontró que la retención de datos
comenzaba a -20ºC.
Algunos dispositivos son diseñados con sensores de temperatura, cuando detectan una baja de
temperatura después de los -20ºC, se trata como un intento de intromisión y la memoria es puesta
en ceros inmediatamente.
149
También concluyó que los tiempos de retención de la memoria varían no solo de un dispositivo a
otro, también entre dispositivos del mismo fabricante. Esto es porque los fabricantes no incluyen
en su proceso de fabricación el control de la retención de datos. Versiones de baja potencia del
mismo chip tuvieron más tiempo de retención de datos [28,31].
Peter Gutman de la Universidad de Auckland expuso [20] que en una serie de pruebas aplicadas a
un dispositivo SRAM, el dispositivo cambia el voltaje de umbral, transconductancia y corriente
drenador-fuente después de los 100-500 segundos de estrés, correspondiendo con un cambio en el
tiempo de acceso a la SRAM y la operación de voltaje.
Esto hace posible determinar donde fue almacenado un 0 o 1 detectando que transistor fue más
estresado. Como se observa en la celda SRAM, al leer o escribir un 0 o 1 se utiliza un transistor
de acceso diferente.
+V
Dispositivos
de carga
Data Data
A B
Select Select
Read/Write (R/W)
Los puntos grises en los transistores de la figura 5.2 muestran donde es localizado el principal
estrés. Los cambios en el comportamiento de la celda pueden ser determinados obteniendo el
tiempo de acceso de la celda a través de una microprueba de voltaje en las celdas de transistores o
utilizando técnicas similares.
Pruebas similares han sido realizadas en DRAMs sin embargo en este caso el énfasis de los
efectos de estrés fue en los circuitos compartidos como son los buffers de direcciones y los
amplificadores de sensibilidad (sense amplifiers) [20].
La DRAM también puede “recordar” el último estado almacenado, pero de manera diferente.
Esto no es en base a la carga que es retenida en la celda (voltaje en los capacitores), sino al óxido
delgado que forma el dieléctrico del capacitor que es estresado altamente cuando se aplica un
campo y se relaja cuando no es aplicado (se estresa de acuerdo al estado del dato), este efecto
puede presentarse en forma inversa, es la conclusión a la que llega Peter Gutman en Julio 1996
[19].
El estrés en la celda tiene un efecto acumulativo, como la carga de un circuito RC. Si el dato es
aplicado por solo unos milisegundos se efectuará un pequeño aprendizaje en las celdas. Por lo
que las propiedades del óxido cambian ligeramente dependiendo del dato.
Los efectos del estrés pueden ser medidos utilizando pruebas de memoria ”built-in-self” en las
celdas. En estas pruebas se induce un voltaje débil a la celda de almacenamiento para medir su
151
margen. Las celdas mostrarán diferentes márgenes dependiendo de cuanto óxido estresado esté
presente.
Un método simple pero destructivo para eliminar los datos almacenados en memorias
semiconductoras es elevar la temperatura. Tanto la DRAM como la SRAM perderán el contenido
mientras se llegue mas rápido a la temperatura Tjunction=140ºC. Varias horas sin energía
aplicada a esta temperatura, serán suficientes para hacer más difícil la recuperación de datos.
Contrario a esto, extender la vida de los bits almacenados cuando la energía es removida puede
llevarse a cabo debajo de los -60ºC, por días e incluso semanas[19].
Burn in
En el trabajo de Peter Gutman también se afirma que es posible recuperar datos directamente del
dispositivo sin preocuparse por restaurarlo. En dispositivos de los 80’s fue común leer los datos
almacenados en largos periodos en una SRAM con técnicas “Burn in”. Burn-in es una prueba
eléctrica de estrés que emplea voltaje y temperatura para acelerar las fallas eléctricas del
dispositivo.
Burn-in es realizado a 125ºC, con excitación eléctrica aplicada a muestras. Las memorias son
cargadas en tarjetas de prueba y son insertadas en hornos burn-in, los cuales proporcionan los
voltajes necesarios para las muestras a la temperatura de la prueba. Los sistemas dinámicos burn-
in aplican voltajes a temperaturas extremas mientras ejercitan las entradas del dispositivo bajo
prueba. Este procedimiento involucra altos costos por el manejo individual de los dispositivos [35].
Iddq
En los dispositivos SRAM más recientes se requiere de métodos mas sofisticados para hacer la
lectura de datos. Algunas técnicas se enfocan al uso de pruebas de dispositivos como lo es la
prueba Iddq (Corriente en reposo de la fuente de poder (quiescent current)) en cada vector
funcional de prueba, utilizando monitores de corriente de alta velocidad para mediciones rápidas.
Esta metodología de prueba envuelve la ejecución de un conjunto de vectores hasta una
152
localización alcanzada (conocida como medida paramétrica de paro o PM) en este punto el
dispositivo es interrumpido y la corriente es medida.
Otra de las conclusiones a las que llega Peter Gutman en su investigación es que la SRAM es
susceptible a la remanencia debido a que el almacenamiento del mismo dato sobre un largo
periodo de tiempo tiene el efecto de alterar el estado preferente de encendido (power up). CIs
antiguos pueden “recordar” el estado previo al apagar el equipo por varios días. De hecho, es
posible fabricar SRAMs que tengan cierto estado de encendido, pero que no se sobrescriban
como una “ROM escribible”.
Una llave contenida en una memoria RAM estática por un largo periodo de tiempo puede ser
revelada en el siguiente “power on” debido a la remanencia [19,28].
El desarrollo del análisis de energía y energía diferencial ha habilitado ataques severos en todos
los procesadores actuales en las smart cards. Cada cambio de bit en el bus del chip de la tarjeta
causa una corriente extra, una cantidad medible que es dibujada en la alimentación. Si los detalles
de implementación del software de la tarjeta son conocidos, se puede establecer un ataque
habilitando los valores de las llaves [33,30].
Análisis de corriente
El manejo de los buses de datos y direcciones consiste de más de una docena de inversores
paralelos por bit, cada uno maneja una gran carga capacitiva. Estos pueden causar un corto
circuito durante alguna transición. Los cambios en un bus de un 0 a 1 o inversamente contribuyen
de entre 0.5 y 1 mA del total de la corriente en el tiempo de un salto de reloj, así 12 bits son
suficientes para estimar el número de bits en el bus que cambian a la vez. SRAM escribe
operaciones generadas por fuertes señales. Promediando las mediciones de corriente de
transacciones idénticas repetidas, se pueden identificar señales pequeñas que no son transmitidas
por el bus. Estas señales llevan los estados de los bits. Señales como el estado del bit de acarreo
(carry bit state) son de interés especial, porque muchos algoritmos criptográficos utilizan el
cambio en la operación para elegir un bit de la llave individual en la bandera carry [30].
Análisis de frecuencia
Los ataques invasivos empiezan desempaquetando el chip. Una vez que el chip es abierto se
realizan las pruebas o ataques. Se debe remover por lo menos la capa de pasivación (passivation
layer) antes de que las pruebas puedan establecer contacto. Esto se puede realizar grabando
(etching), taladrando (drilling) o cortando con láser.
Para realizar estos ataques, el invasor debe estar familiarizado con las técnicas de diseño de los
CMOS VLSI (Very Large Scale Integration) y arquitectura de microcontroladores. Capas
profundas pueden ser accedidas utilizando equipo y herramienta especializados. También
utilizando estas técnicas se puede modificar la estructura del chip creando nuevas líneas de
conexiones y aún nuevos transistores.
Todos los ataques invasivos son complicados. Requieren de horas o semanas en un laboratorio
especializado y en el proceso destruyen el paquete. En suma los ataques invasivos requieren de
especialistas altamente calificados y un presupuesto propio.
Una vez que el chip es abierto, es posible realizar pruebas o ataques. La herramienta mas
importante para un ataque invasivo es una estación de trabajo para micropruebas (microprobing
Workstation). Su mayor componente es un microscopio óptico especial con distancia de trabajo
de por lo menos 8mm entre la superficie del chip y los lentes.
Es difícil observar todos lo buses de datos y direcciones al mismo tiempo (mas de 20). Pero
varias técnicas se pueden realizar, por ejemplo podemos repetir la misma transacción muchas
veces y utilizar dos o cuatro probadores para observar varios conjuntos de buses. Tan pronto
como el procesador realice la misma secuencia de acceso a memoria.
155
Para leer las celdas de memoria sin ayuda de software de tarjeta, se necesita utilizar algunos de
los componentes del CPU como un contador de direcciones para acceder a todas las celdas de
memoria. El contador de programa se incrementa automáticamente durante cada ciclo de
instrucción y la utiliza para leer la siguiente dirección, la cual nos sirve como generador de
secuencia de instrucciones. Solo se necesita prevenir que el procesador ejecute un salto, retorno o
llamada al procesador, que pueda afectar el contador de programa en su secuencia normal de
lectura. Pequeñas modificaciones al decodificador de instrucciones o al circuito contador del
programa tienen el efecto deseado con abrir las interconexiones correctas con el láser [29].
Una forma tradicional de lectura de datos en memorias de smartcards es realizada con un ataque
invasivo utilizando pruebas mecánicas en el bus del procesador. Estos ataques involucran
desempaque físico del chip y lectura de sus estados internos haciendo conexiones eléctricas a
componentes internos utilizando micropruebas. Siendo una tarea difícil el acceso a los circuitos
debido a la miniaturización de los elementos, estos ataques pueden ser realizados con diversas
herramientas como luz UV, rayos X y otras fuentes de radiación iónica, láser y campos
electromagnéticos.
En las pruebas ópticas un láser es usado para inducir una falla transitoria en una o más
compuertas de forma que cause una fuga de información [32,34].
La base teórica de los experimentos se basa en los fotones que produce un haz de láser rojo
(659nm de longitud de onda) que al chocar con un dispositivo semiconductor produce mas
energía que la banda gap del Si (silicon band gap), haciendo que las áreas del CI apuntadas con el
láser se ionizen. Si los fotones alcanzan el área cercana a las uniones (junctions) p-n de un
156
La habilitación de lectura a los estados de la celda de memoria se realiza a través del decremento
en la resistencia de los canales (n y p). En los experimento que llevaron a cabo los investigadores
se apuntó el rayo del láser en un transistor de un CI, pudiéndose distinguir los dos posibles
estados de memoria. Esta técnica es similar a la usada para cambiar el estado de memoria de los
bits usando rayos láser de baja potencia.
Similar a las pruebas ópticas se pueden utilizar técnicas con pruebas electromagnéticas para
obtener datos de la memoria de un CI. Investigadores de la Universidad Católica de Louvain en
Bélgica en 2002 trabajaron con un análisis electromagnético, utilizando inducción
electromagnética para escanear un semiconductor. En esta técnica se utiliza un pequeño probador
en la superficie baja del CI y se mide la corriente inducida en él por un campo magnético en su
superficie. En algunas circunstancias esto da información similar a la obtenida en mediciones de
consumo de energía por el CI (power analysis). Este análisis mostró más información de la
requerida ya que el campo magnético obtenía otros campos magnéticos generados por señales
locales que no eran presentadas fuera del CI.
La punta de prueba se colocó algunos micrómetros (microns) sobre la superficie del procesador
de prueba y se conectó el espiral al bulbo del flash de una cámara donde la corriente de remolino
creada por el campo magnético se sensó permitiendo construir un mapa del CI, como se muestra
en la figura 5.3.
157
Fig. 5.4 Mapa construído usando la corriente de eddy en una fotografía de la misma área.
Se observó que esta técnica de inducción, también podía ser usada para leer datos en forma no
destructiva. Con el mismo sensor se escaneó un chip creando una pequeña perturbación en la
celda de memoria. La idea fue mover por un corto tiempo el punto de polarización del transistor.
Cuando el punto de polarización es movido de su estado original, la velocidad o el tiempo que
tarda en regresar a ese estado original refleja el dato guardado en el transistor pudiendo ser un “0”
o un “1”. Con el equipo utilizado fue difícil crear la suficiente corriente en el chip sin alterar el
contenido de las celdas de memoria, pero mejorando los equipos, técnicas de laboratorio y con un
procesamiento de señal más sofisticado se puede poner en práctica el uso de técnicas
electromagnéticas para leer memorias con mayor eficacia [33].
158
CONCLUSIONES
Uno de los problemas a los que se enfrenta un investigador forense a la hora de capturar
información, es obtener información volátil y de memoria que puede ser borrada o sobrescrita al
querer obtenerla.
La memoria guarda información importante que puede ser la única fuente de información que el
atacante haya dejado en una violación a un sistema y puede convertirse en evidencia crucial para
detectar las causas del incidente.
Pero el análisis vivo no es ideal para un proceso de investigación forense porque se trabaja
directamente sobre el sistema sospechoso, esto puede alterar la información recolectada y si esta
información es llevada a un juicio ante una corte, puede que no sea aprobado como evidencia
porque no es una copia fiel de la escena del crimen, por lo que considerando esta situación el
investigador deberá conocer muy bien las herramientas de captura que utilice, por si llega a
modificar algo, sepa exactamente que cambia en el sistema una vez ejecutado cada comando.
No cabe duda que una metodología es aplicada por un atacante para llevar a cabo una intrusión,
por lo que tener una metodología para realizar la investigación forense también es necesaria y
sobre todo en el primer paso de recolección de información volátil. Con los pasos bien definidos
a seguir durante la recolección podremos capturar mayor y de mejor manera información volátil
que pueda complementar la información estática y así obtener mayor evidencia para asistir al
investigador en determinar las causas del incidente, hasta llegar al culpable.
159
Es en la respuesta inicial donde será incluido el procedimiento propuesto, ya que se debe obtener
la información volátil que nos pueda ayudar a obtener datos importantes de la verificación de un
incidente y así mismo la evidencia necesaria para llegar a ese objetivo.
Esta metodología se aplicó sobre los sistemas operativos Windows y Linux ya que son los de uso
más común, y se consideraron dos tipos de accesos, en forma local y a través de la red,
pudiéndose observar la utilidad de las herramientas existentes en cada una de las versiones de los
160
sistemas operativos elegidos ya que éstos son una excelente plataforma que permite flexibilidad
para ejecutar comandos de recolección de información volátil.
En el caso del uso de las herramientas forenses como grave-robber se observó que este tipo de
software aplica una metodología planteada por el desarrollador, la cual se ejecuta con comandos
internos de los cuales solo observamos el resultado, sin tener la flexibilidad de profundizar sobre
un punto, modificarlo o quizá saltarnos algunas acciones. Por lo que la creación del propio
conjunto de herramientas es importante para la recolección.
Las herramientas utilizadas para la recolección de información volátil en los primeros casos no
fueron especializadas o forenses, se utilizaron herramientas del administrador del sistema, esto
porque la recolección de información volátil muchas veces requiere que el investigador utilice lo
que tienen a primera mano, además de que el sistema operativo tiene los comandos necesarios
para aplicarlos donde el investigador exactamente lo requiere, más que aplicar un solo comando
para realizar toda la captura como lo ejecutan las herramientas forense.
El objetivo del análisis forense es una actividad orientada a respuesta, es decir, determinar qué
sucedió, quién fue el culpable y cuál es el impacto de los eventos. Las herramientas descritas y la
metodologías es útil, pero la habilidad del investigador es la que determina si el caso será resuelto
o no.
161
Dentro del alcance de este trabajo no se plantea una metodología para la recuperación de
información sobre un sistema muerto, ya que lleva un proceso y herramientas muy diferentes a un
sistema vivo, pero se expusieron varios ejemplos realizados por Universidades dedicadas a
semiconductores y seguridad que muestran que todavía es posible obtener algo de información de
la memoria RAM aunque el equipo esté desconectado de energía.
Aunque para los desarrolladores de software y los constructores de circuitos integrados los
defectos en los sistemas representan problemas, para el investigador forense estos defectos son
una forma que pueden emplear para recuperar u obtener evidencia. Pero la utilización de equipo
especializado y pruebas experimentales hace difícil que los dueños de los equipos puedan
acceder a estas acciones en el caso de una investigación judicial. Tal vez no se pueda incluir
como evidencia en una corte, pero es una buena noticia saber que existe una forma de obtener
información de memoria aunque el sistema esté completamente muerto.
Los pasos de la metodología general propuesta puede que no sean apropiados en todas las
jurisdicciones, por lo que se debe realizar un procedimiento de recolección de información volátil
para cada sitio en específico, y la metodología propuesta puede ser de gran utilidad.
Hemos hablado de llevar la información recolectada a una corte, pero en México son pocas las
leyes establecidas para delitos informáticos, por lo que esta metodología general se adecuará a
cada sitio en específico, es por eso que una metodología puede ayudar a hacer el proceso más
formal y obtener un punto más a favor en la lucha contra los crímenes digitales.
162
REFERENCIAS BIBLIOGRÁFICAS
[1] Gottfried, Grant. ”Emerging Technology: Taking a Byte Out Of Crime”. Itarchitect
Network Magazine [en línea]. Mayo 2001. [ref. Marzo 2003]. Disponible en WWW :
<http://www.networkmagazine.com/article/NMG20010125S0001>
[2] Kruse, Warren G., y Heiser, Jay G. “Computer Forensics (Incident Response Essentials)”.
Editorial Addison Wesley, Septiembre 2001.
[3] Dittrich, Dave. “Basic Steps in Forensic Analysis of Unix Systems”. Computer Forensics
[en línea]. [ref. Marzo 2003]. Disponible en WWW:
<http://staff.washington.edu/dittrich/>
[6] Brezinski, D. y Killalea, T. “Guidelines for Evidence Collection and Archiving”. Request
for Comments[en línea]. RFC 3227, categoría: Best Current Practice. Febrero 2002. [ref.
Abril 2003]. Disponible en Internet: <http://www.rfc-archive.org/getrfc.php?rfc=3227>
[8] Write, Timothy E. “The Field Guide for Investigating Computer Crime: Overview of a
Methodology for the”. Security Focus [en linea]. Mayo 26 2002 [ref. Jul 2003].
Disponible en WWW: <http://www.securityfocus.com/infocus/1245>
[9] International Organization on Computer Evidence. “G8 proposed principles for forensic
evidence”. International Organization on Computer Evidence IOCE [en línea]. 2002.
[ref. Ago 2003]. Disponible en pdf en Internet. <http://www.ioce.org/ >
163
[10] Russinovich, Mark. “Ps Tools”. Sysinternals [en línea]. 2005. [ref. Octubre 2005].
Conjunto de herramientas disponible en
Internet:<http://www.sysinternals.com/Utilities/PsTools.html>
[11] Robinson, Matt D. y Morano, Tom. “Linux Kernel Crash Dump”. Sourceforge [en línea].
2000. [ref. Sep 2004]. Disponible en WWW: <http://lkcd.sourceforge.net/>
[12] Linux Education. “LKCD Installation and Configuration”. IBM Global Services [en
línea]. 2000.[ref. Sep 2004]. Disponible en pdf en Internet:
<http://lkcd.sourceforge.net/doc/lkcd_tutorial.pdf>
[13] Winchell, Dave, Moyer, Jeff y Huber, Josh. “Mission Critical Linux”. Mission Critical
Linux [en línea]. Inc. 2000. [ref. Oct 2004]. Disponible en WWW:
<http://oss.missioncriticallinux.com/projects/mcore/>
[14] The GNU Project Debugger. “GDB”. The GNU Project Debugger [en línea]. Enero 2002.
[ref Sep 2004]. Disponible en Internet: <http://sources.redhat.com/gdb/>
[15] Johnson, Michael K. “Netdump Rationale”. Red Hat, Inc.'s Network Console and Crash
Dump Facility [en línea]. 2002. [ref. Ago 2003]. Disponible en WWW:
<http://www.redhat.com/support/wpapers/redhat/netdump/>
[16] Carrier, Brian. “ Sleuth Kit” y “Autopsy Browser”. Sleuthkit.org [en línea]. [ref. Mayo
2005]. Disponible en WWW: <http://www.sleuthkit.org/>
[17] Venema, Wietse. “The Coronoer´s Toolkit (TCT). Porcupine.org [en línea]. [ref. Mayo
2005].Disponible en WWW:< http://www.porcupine.org/forensics/tct.html>
[18] Venema, Wietse. “Memdump”. Porcupine.org [en línea]. [ref. Mayo 2005].Disponible en
WWW:<http://www.porcupine.org/forensics/memdump-1.0.README>
[19] Gutman, Peter. “ Secure Deletion of Data from Magnetic and Solid-State Memory”.
Department of Computer Science, University of Auckland [en linea]. 6o. Simposio de
Seguridad USENIX, Julio 1996. [ref. Enero 2005]. Disponible en formato pdf en Internet:
<http://www.cs.auckland.ac.nz/~pgut001/>
[20] Gutman, Peter. “ Data Remanence in Semiconductor Devices.”. IBM T.J. Watson
Research Center [en línea].10 Simposio de Seguridad USENIX, Agosto 2001. [ref. Enero
2005]. Disponible en Internet: <http://www.cs.auckland.ac.nz/~pgut001/>
[21] Schweitzer, Douglas. “Incident Response: Computer Forensics Toolkit”. HNS [en línea].
Octubre 2003. Capitulo 1. [ref. Dic 2004]. Disponible en formato pdf en Internet:
<http://www.net-security.org/dl/reviews/0764526367.pdf>
[22] Barish, Stephen. “Windows Forensics: A Case Study”. SecurityFocus [en línea].
Diciembre 2002 [ref. Mayo 2005]. Disponible en WWW:
<http://www.securityfocus.com/infocus/1653>
164
[23] Microsoft. “Windows 2000 Resource Kits”. Microsoft Corporation [en línea]. 2004. [ref.
Mayo 2005]. Disponible en WWW:
<http://www.microsoft.com/windows2000/techinfo/reskit/default.asp>
[24] Microsoft. “How to configure system failure and recovery options in Windows”.
Microsoft Corporation [en línea]. 2003. [ref. Agosto 2005]. Disponible en WWW:
<http://support.microsoft.com/kb/307973>
[25] Microsoft Support. “How to Use Dumpchk.exe to Check a Memory Dump File”.
Microsoft Corporation [en línea]. 2003. [ref. Agosto 2005]. Versión en español Id. del
artículo 241215 Disponible en WWW:
<http://support.microsoft.com/kb/315271/EN-US/> inglés
<http://support.microsoft.com/default.aspx?scid=kb;es;241215 > español
[26] Microsoft. “Debugging Tools for Windows”. Microsoft Corporation [en línea]. 2003.
[ref. Agosto 2005]. Disponible en WWW:
<http://www.microsoft.com/whdc/devtools/debugging/default.mspx>
[27] Russinovich, Mark. “PsTools”. Sysinternals [en línea]. 2004. [ref. Mayo 2005].
Disponible en WWW: <http://www.sysinternals.com/ntw2k/freeware/pstools.shtml>
[31] Skorobogatov, Sergei. “Low Temperature Data Remanence in Static RAM”. University of
Cambridge Computer Laboratory. Junio 2002. [ref. Febrero 2005]. Disponible en pdf en
Internet: < http://www.cl.cam.ac.uk/TechReports/UCAM-CL-TR-536.html>
[32] Skorobogatov, Sergei y Anderson Ross. “Optical Fault Induction Attacks” University of
Cambridge [en línea]. Mayo 2002. [ref. Marzo 2005]. Disponible en WWW:
<http://www.ftp.cl.cam.ac.uk/ftp/users/rja14/faultpap3.pdf>
[33] Moore, Simon. 3rd Generation Smart Card Project [en línea]. G3Card IST-1999-13515.
Enero 2003. [ref. Marzo 2005]. Disponible en WWW: <http://www.g3card.com/>
[34] Skorobogatov, Sergei y Anderson Ross. “On a New Way to Read Data from Memory”.
University of Cambridge [en línea]. Diciembre 2002. [ref. Marzo 2005]. Disponible en
formato pdf en Internet: <http://www.cl.cam.ac.uk/~sps32/>
165
[35] Chakraborty, Kanad y Mazumder, Pinaki. “Reliability and Fault Tolerance of RAMs”.
Pearson Education, Informit [en línea]. Ejemplo de Capítulo cortesía de Prentice Hall.
Octubre 2002. [ref. Abril 2005]. Disponible en WWW:
<http://www.informit.com/articles/article.asp?p=29732>
[36] Mandia, Kevin y Prosise, Chris. “Incident Response: Investigating Computer Crime”.
Editorial: Osborne/McGraw Hill. 2001.
[37] Wreski, Dave. “Biatchux Booteable CD Forensics Toolkit”. Linux Security.com [en línea]
Febrero 2002. [ref. Agosto 2005]. Disponible en Internet:
<http://www.linuxsecurity.com/content/view/111308/65/>
[38] Salusky, William. “Forensic and Incident Response Environment”. Source Forge [en
línea] 2004.[ref. Septiembre 2005]. Disponible la herramienta y documentación en
Internet: <http://fire.dmzs.com/>
[39] Knopper, Klaus. “Knoppix”. Knopper.net [en línea]. [ref. Septiembre 2005]. Disponible la
herramienta y documentación en Internet: < http://www.knoppix.org/>
[40] Baca Ernest. Penguin Sleuth Booteable CD”. Linux-Forensics.com [en línea] 2003. [ref.
Septiembre 2005]. Disponible herramienta y documentación en Internet:
< http://www.linux-forensics.com/downloads.html>
[41] ASR Data. “Smart Linux”. ASR Data [en línea] 2005. [ref. Septiembre 2005]. Disponible
la herramienta y documentación en Internet: <http://www.asrdata2.com/>
[44] Gómez, Roberto. “Mejores Prácticas para confiscar evidencia electrónica”. [ref. Mayo
2006].Apuntes de la MCC ITESM Campus Estado de México.
ANEXO A
ARTICULO 211 bis CODIGO PENAL FEDERAL
ARTICULO 211 bis 1.- Al que sin autorización modifique, destruya o provoque pérdida de
información contenida en sistemas o equipos de informática protegidos por algún mecanismo de
seguridad, se le impondrán de seis meses a dos años de prisión y de cien a trescientos días multa.
Al que sin autorización conozca o copie información contenida en sistemas o equipos de
informática protegidos por algún mecanismo de seguridad, se le impondrán de tres meses a un
año de prisión y de cincuenta a ciento cincuenta días de multa.
ARTICULO 211 bis 2.- Al que sin autorización modifique, destruya o provoque pérdida de
información contenida en sistemas o equipos de informática del Estado, protegidos por algún
mecanismo de seguridad, se le impondrán de uno a cuatro años de prisión y de doscientos a
seiscientos días multa. Al que sin autorización conozca o copie información contenida en
sistemas o equipos de informática del Estado, protegidos por algún mecanismo de seguridad, se
le impondrán de seis meses a dos años de prisión y de cien a trescientos días de multa.
ARTICULO 211 bis 3.- Al que estando autorizado para acceder a sistemas y equipos de
informática del Estado, indebidamente modifique, destruya o provoque pérdida de información
que contengan, se le impondrán de dos a ocho años de prisión y de trescientos a novecientos días
de multa.
Al que estando autorizado para acceder a sistemas y equipos de informática del Estado,
indebidamente copie información que contengan, se le impondrán de uno a cuatro años de prisión
y de ciento cincuenta a cuatrocientos cincuenta días de multa.
ARTICULO 211 bis 4.- Al que sin autorización modifique, destruya o provoque pérdida de
información contenida en sistemas o equipos de informática de las instituciones que integran el
167
sistema financiero, protegidos por algún mecanismo de seguridad, se le impondrán de seis meses
a cuatro años de prisión y de cien a seiscientos días de multa.
Al que sin autorización conozca o copie información contenida en sistemas o equipos de
informática de las instituciones que integran el sistema financiero, protegidos por algún
mecanismo de seguridad, se le impondrán de tres meses a dos años de prisión y de cincuenta a
trescientos días de multa.
ARTICULO 211 bis 5.- Al que estando autorizado para acceder a sistemas y equipos de
informática de las instituciones que integran el sistema financiero, indebidamente modifique,
destruya o provoque pérdida de información que contengan, se le impondrán de seis meses a
cuatro años de prisión y de cien a seiscientos días multa.
Al que estando autorizado para acceder a sistemas y equipos de informática de las instituciones
que integran el sistema financiero, indebidamente copie información que contengan, se le
impondrán de tres meses a dos años de prisión y de cincuenta a trescientos días multa. Las penas
previstas en este artículo se incrementarán en una mitad cuando las conductas sean cometidas por
funcionarios o empleados de las instituciones que integran el sistema financiero.
ARTICULO 211 bis 6.- Para los efectos de los artículos 211 bis 4 y 211 bis 5 anteriores, se
entiende por instituciones que integran el sistema financiero, las señaladas en el artículo 400 bis
de este Código.
ARTICULO 211 bis 7.- Las penas previstas en este capítulo se aumentarán hasta en una mitad
cuando la información obtenida se utilice en provecho propio o ajeno [42].
168
ANEXO B
MICROPRUEBAS
Las mediciones de corriente y voltaje son realizadas por instrumentos de medición eléctricos
implementadas en el probador y manejadas a través de micromanipuladores, como los mostrados
abajo:
Las micropruebas también requieren de un diagrama esquemático del dispositivo para ser
efectivo y eficiente. El análisis necesita estos diagramas par apuntar inmediatamente a nodos
críticos para la prueba y aislamiento de la falla. Pero aún que el analista no esté familiarizado
con el funcionamiento del circuito y no tenga los diagramas, se puede llevar a cabo el análisis
correlacionando lo que es conocido y comparando voltajes y señales. La coordinación de ojos y
manos, así como la experiencia se necesitan para localizar un área de interés, elegir un punto de
prueba y ejercer la presión correcta par un buen contacto eléctrico [43].
170
ANEXO C
GLOSARIO
Apología
Discurso en el que se alaba o defiende a una persona o a una causa.
Checksum
Es una forma simple de medición que protege la integridad de los datos detectando errores.
Trabaja añadiendo un componente al mensaje y almacenando el valor resultante en el mensaje.
Cluster de disco
Es un grupo de sectores de disco.
CYGWIN
Es una colección de herramientas de software libre, que permite a varias versiones de Microsoft
Windows actuar como un sistema UNIX.
Depurar (debugging)
Es un proceso metódico para encontrar y reducir el número de “bugs” o defectos de un programa
o hardware electrónico.
Dieléctrico
Sustancia aislante en la cual puede existir un campo eléctrico en estado estacionario. Esta
sustancia tiene como principales características eléctricas su permitividad y su poder de
aislamiento
Dopante
Elemento introducido en un semiconductor para establecer conductividad tipo p o n; comúnmente
los dopantes de Si son para el tipo p Boro (B) y para tipo n Fósforo (P), Arsénico (As) y
Antimonio (Sb).
Excepciones
Una excepción es una herramienta de programación útil para el manejo de errores. Cuando se
encuentra un error (un caso excepcional), simplemente se manda una excepción. Las excepciones
proveen una forma conveniente de manejar condiciones anormales.
File descriptor
Es un entero no asignado usado por un proceso para identificar un archivo abierto. Dos mil
descriptores de archivos son disponibles por cada proceso. Las subrutinas “open, pipe, create y
fcntl” generan descriptores de archivos. Los descriptores de archivos son generalmente únicos
por cada proceso, pero pueden ser compartidos por sus procesos hijos creados con una subrutina
“fork” .Los descriptores de archivos son indexados a una tabla de descriptores de archivos en un
área mantenida por el kernel para cada proceso.
Firmware
Software (programas o datos) que han sido escritos para memorias de solo lectura (ROM). El
firmware es una combinación de software y hardware. ROMs, PROMs y EPROMs que tienen
datos o programas grabados son firmware.
FireWIre
(IEEE 1394) Estándar de bus externo que soporta velocidades de transmisión arriba de 400Mbps
(1394a) y 800Mbps (1394b)
Ionización
La ionización es un mecanismo mediante el cual un electrón puede absorber suficiente energía
para desprenderse de la estructura atómica y unirse a portadores libres en la banda de conducción.
Interferómetro láser
Aparato de medición de precisión sobre superficies planas hechas de cristal, metal y cerámica.
173
Kernel
El módulo central del sistema operativo
Latch
Registro de instrucciones o registro de direcciones. Latch up es definido como la creación de una
trayectoria de baja impedancia entre la energía de alimentación y la circuitería de salida. Es un
caso especial de sobre-estrés eléctrico.
Memory Stick
Es un medio diseñado para grabar, compartir e intercambiar información digital, como
fotografías, datos de computadora, música, imágenes, etc.
Memoria ROM
Read Only Memory. Memoria de solo lectura
MOSFET
Tipo de transistor que compone una celda DRAM en serie con un capacitor, también es referido
como transistor array-acces o dispositivo de transferencia.
Portable Executable
El formato PE es un formato de archivo ejecutable utilizado en versiones de Windows32 y 64. El
termino “portable” se refiere a la portabilidad del formato a través de 32 bits. PE es una versión
modificada del formato de archivos de Unix COFF.
Port Mirroring
También conocido como “Roving Analysis Port”, es un método para monitorear tráfico de red
que envía una copia de cada entrada o salida de paquetes de un puerto de un switch a otro puerto,
donde el paquete puede ser estudiado. Es una herramienta de diagnóstico.
Pruebas funcionales
Es el proceso que aplica vectores de un patrón a un dispositivo y verifica la salida para
determinar si el dispositivo está operando acorde a su tabla de verdad (Pruebas paramétricas).
También puedes ser el proceso de probar un dispositivo para identificar su habilidad en la
realización de sus funciones (ejemplos: lectura/escritura de pruebas de memoria, pruebas de
conversión analógico digital, etc.)
Prueba paramétrica
Es el proceso de probar un dispositivo con respecto a sus especificaciones para medidas con
características eléctricas como lo es voltaje o corriente.
Rootkit
Herramientas normalmente en software que se utilizan para comprometer un sistema de cómputo
“sin detectarse”. Un programa para “hackear” root.
Señales
Las señales son usadas para notificar un proceso o hilo de un evento particular. Las señales se
describen como una interrupción de software. Cuando una señal es enviada a un proceso o hilo,
un manejador de señal entra en funcionamiento de manera similar al trabajo desarrollado por un
manejador de interrupciones en cuestión de hardware.
Slack space
Espacio no usado en un disco o cluster de discos.
175
.sig archivos
Es un bloque corto de texto al final de un mensaje identificando el emisor del mensaje y provee
información adicional acerca de él.
Símbolos en Windows
Un símbolo es un nombre que representa un registro o un valor absoluto o una dirección de
memoria absoluta o relativa. Los símbolos son generados por el compilador, explican la relación
entre el código fuente y objeto. Los módulos y símbolos de Windows proveen información
diferente dependiendo del depurador que esté corriendo. Los símbolos obtienen las direcciones
hexadecimales del procedimiento. Un símbolo se asigna cuando se crea un objeto de un recurso
en la programación de Windows.
State-of-the-art
El nivel de desarrollo (de un dispositivo, procedimiento, proceso, técnica o ciencia) alcanzada a
una fecha en particular frecuentemente como resultado de métodos modernos.
Temperatura Tjunction
Temperatura de empalme PN o límite de transición entre materiales tipo P y tipo N en un
dispositivo semiconductor.
Time stamp
Prueba inequívoca de que el contenido de tu trabajo existió en un punto en el tiempo y que el
contenido ha tenido cambio desde esa fecha.
Transconductancia
Es una expresión del rendimiento de un transistor bipolar o un FET (field effect transistor). En
general, la transconductancia se mide por la capacidad de ganancia (amplificación) que el
dispositivo es capaz de generar, cuando todos los demás factores permanecen constantes.