#Objetivos de la informática forense
Transcript of #Objetivos de la informática forense
#Objetivos de la informática forense
El objetivo principal de la informática forense es generar
evidencias legales para procedimientos judiciales. Las
evidencias, desde el punto de vista que nos ocupa, son el
conjunto de recursos y datos a los que ha tenido acceso un
perito para extraerlos, analizarlos, verificar su autenticidad y
poder así responder a las cuestiones técnicas planteadas por la
parte que le contrate o por un tribunal. El proceso general de
peritaje consta de al menos tres etapas: adquisición, análisis y
presentación, aunque para el desarrollo de este curso vamos a
extenderlo agrupando las actividades en cinco etapas. La primera
es prepararse para una investigación, que empieza incluso antes
de ser contratados o de que ocurra un incidente, ya que la
preparación incluye formación, mantenimiento de equipos y
recursos, reciclaje, además de preparación específica en función
del incidente a atender. La segunda fase es la de adquisición de
datos, que se realizan bien en la escena del incidente, bien en
nuestro laboratorio, si es allí donde nos llevan los equipos
afectados o involucrados en un incidente. El análisis de datos
es el siguiente paso. Consiste en indexar, dar forma y
comprender la información pertinente para la investigación de
entre todo el conjunto de datos adquiridos en la fase previa. La
identificación de evidencias es la quinta etapa y consiste en
señalar, de todo lo adquirido y analizado, qué es lo relevante
para el caso en el que trabajamos, lo que en caso de declaración
ante un tribunal tendríamos que explicar y defender. Y por
último está la generación del informe de conclusiones o informe
pericial, en el que se detallan todas las actividades del
proceso de investigación y las conclusiones obtenidas respecto a
la información disponible y a las preguntas que el contratista
nos formulase. Porque una cosa tenemos que tenerla muy clara: el
trabajo forense o peritaje ha de ser de carácter científico, no
subjetivo. El perito debe responder a preguntas de tipo técnico
planteadas por su contratista, sea una parte involucrada en un
incidente o por un tribunal. El perito no debe valorar, por
ejemplo, si la acción de una persona es constitutiva de delito,
sino localizar o verificar las evidencias que permitan a los
juristas comprender los aspectos de la tecnología que escapan a
su conocimiento y así poder tomar esa decisión de forma
razonada. Al fin y al cabo, la ciencia forense es la aplicación
de conocimientos, métodos y técnicas de investigación científica
que buscan determinar la veracidad de unos hechos, su origen y
su autoría. En informática forense, una gran parte del trabajo
consiste en verificar la veracidad de la información, ya que las
evidencias digitales son fácilmente modificables e incluso
pueden ser evidencias totalmente inventadas. Confirmada la
veracidad objetiva de una evidencia, el trabajo consiste en el
cómo y, cuando es posible, en el quién; y cuando hablamos de
"quién" podemos referirnos no solo a personas, quizás sea a
equipos, a cuentas de servicios "online", etc. que otros
profesionales deberán vincular con una persona física.
#Tipos de investigación de un perito informático
Como perito informático, puedes encontrarte ante distintos tipos
de investigación. Las investigaciones públicas son las
desarrolladas a petición de organismos públicos oficiales como
juzgados o cuerpos policiales. Se trata de procedimientos
sujetos a los códigos civiles o penales aplicables según la
investigación en curso. Puede darse en casos de robo,
explotación sexual, tráfico de drogas, acoso o cualquier tipo de
investigaciones vinculadas a delitos. El perito en estos casos
puede ser un profesional privado o un miembro de los cuerpos
policiales. El trabajo puede tener dos tipos de finalidades que
no son excluyentes entre sí: puede ser una parte más de una
investigación policial o judicial, o tratarse de la valoración
profesional de una evidencia obtenida durante una de esas
investigaciones para aportar el conocimiento del perito a un
tribunal. Los trabajos de carácter privado, aunque no
necesariamente tengan que derivar en procedimientos judiciales,
también tienen que ajustarse a la legislación vigente y respetar
especialmente las leyes referentes a los derechos de las
personas. Además deberán respetarse las políticas de la propia
empresa que contrate los servicios del perito. Se trata de
investigaciones que no tienen por qué tener finalidad jurídica:
pueden tratarse de investigaciones internas de una empresa,
respuesta a incidentes, evaluaciones de seguridad y más. Cuando
se practiquen este tipo de servicios hay que tener en cuenta que
los solicitantes suelen ser empresas privadas, no se debe
bloquear la continuidad del negocio. Durante un ataque prima la
seguridad y continuidad de la empresa sobre la evidencia legal.
Se trabaja para entidades privadas que quieren obtener
información que puede o no llegar a instancias judiciales, es
decir, que puede quedar todo en una investigación interna sin
pasar a más, llegar a un arbitraje o llegar a una demanda,
generalmente de tipo civil. Algunos casos con los que puede
estar más relacionado el servicio de peritaje privado son
incidentes, sabotajes, espionaje industrial, malversación de
recursos de la empresa, disputas laborales y muchos otros. A
veces las investigaciones privadas pueden derivar en
procedimientos judiciales. La investigación de, por ejemplo, la
actividad de un empleado debe desempeñarse de acuerdo a la
legislación laboral y a los derechos de privacidad intrínsecos
al trabajador, no solo de acuerdo a las políticas de la empresa.
El descubrimiento durante una investigación privada de la
comisión de un delito debe derivar automáticamente en la
pertinente denuncia ante las autoridades. Por ejemplo, si se
está investigando una posible fuga de información de una empresa
y se encuentra contenido inapropiado –por ilegal– en un equipo,
debe denunciarse ante la policía o un juzgado. Así que podemos
decir que si tratamos todos los casos como si fueran a acabar en
un tribunal, podremos garantizar la calidad del trabajo sea cual
sea la deriva que tome el caso.
#Herramientas forenses
El trabajo de perito informático requiere de la preparación de
un espacio de trabajo y de una serie de herramientas a las que
en su conjunto llamaremos "laboratorio". Vamos a hablar a
grandes rasgos tanto de "software" como de "hardware". Existe
toda una industria dedicada al desarrollo de aplicaciones y
herramientas especializadas en la informática forense, y una de
las categorías principales de productos son las "suites" o
"kits". Son aplicaciones que se desarrollan y suministran como
conjuntos de herramientas en lugar de como aplicaciones
independientes y suelen abarcar todas las partes del proceso de
una investigación: adquisición de evidencias, procesado y
búsqueda automatizada de información relevante y generación de
informes. También podemos encontrar "suites" especializadas en
computadoras o en telefonía móvil. Algunas empresas que trabajan
este campo son AccessData, con FTK, y Guidance Software, con la
"suite" EnCase. En telefonía móvil tenemos a Cellebrite, con
UFED. También existen "suites" "open-source" como, por ejemplo,
The Sleuth Kit y su aplicación gráfica Autopsy, e incluso
distribuciones Linux especializadas en análisis forense con
multitud de herramientas "open source" preinstaladas como, por
ejemplo, Caine, Santoku o Kali; cada una con sus peculiaridades.
También existen herramientas específicas que sirven para
desarrollar tareas muy concretas, quizá no tan genéricas o
habituales como para encontrarlas en las "suites" antes
mencionadas. Un ejemplo lo tenemos en Wireshark, probablemente
la herramienta de análisis de tráfico de red más utilizada. Otro
de los ejemplos serían las aplicaciones OCR para reconocimiento
de texto en imágenes facilitando su indexación automatizada y
los analizadores esteganográficos para búsqueda de información
oculta. La otra parte del laboratorio es el "hardware". Y, como
base del equipamiento de nuestro laboratorio, tenemos que pensar
en la computadora principal de análisis de evidencias, que tiene
que tener gran potencia de procesado, abundante memoria RAM y
mucho espacio de almacenamiento para operar con archivos de gran
tamaño. Además es conveniente que tenga bahías de expansión y
puertos de prácticamente todo tipo que nos permitan conectar
diversos equipos, dispositivos y evidencias que en general
puedan caer en nuestras manos y también es conveniente tener
varias interfaces de red para experimentación, análisis de
tráfico, etc. Otros equipos que conviene tener en nuestro "kit"
forense son un bloqueador de escritura, que impide al sistema
operativo de una computadora escribir en la unidad de disco
conectada a través del mismo. También hay bloqueadores
"software"; sistemas de almacenamiento independiente de gran
capacidad para almacenar imágenes de discos completas que puede
que tengamos que conservar durante muchísimo tiempo; clonadores
independientes, que son aparatos que permiten conectar discos de
evidencias originales y discos limpios para copiar, bit a bit,
todos los datos de la evidencia en el disco limpio. También
calculan los "hashes" de original y copia para verificar la
integridad y bloquean la escritura en la evidencia original. Por
último, es interesante tener todo tipo de cables y adaptadores
de conexiones para poder adaptarnos a cualquier situación o
tecnología que podamos encontrarnos, así como piezas obsoletas o
de desecho de otros equipos para poder canibalizarlas si tenemos
que reconstruir equipos dañados o hacer prácticas antes de
trabajar con evidencias reales.
#Implicaciones legales de un peritaje mal hecho
El trabajo de un perito es el de asesoramiento técnico en su
materia de especialidad; en el tema que nos ocupa, la
informática y la información digital en prácticamente todos sus
formatos. Cuando un trabajo de investigación es impecable, la
persona que investiga es lo único que puede ser atacado, por lo
que la reputación es muy importante. Una buena reputación evita
que un trabajo bien hecho pueda ser desprestigiado mediante
falacias ad hominem. La buena reputación cuestan mucho ganarla
con estudio, con certificaciones, con títulos, con cada trabajo,
con cada informe y cada cliente satisfecho, pero basta practicar
un mal peritaje para perderla. Si el trabajo no es, hablando
desde el punto de vista forense, intachable, la evidencia
aportada puede ser desestimada, lo cual perjudica siempre a una
de las partes y además al perito, el cual pierde reputación y
puede tener que asumir responsabilidades legales. La adquisición
de evidencias debe ser siempre de acuerdo a la ley. En
investigaciones privadas deben respetarse todas las garantías y
derechos de los ciudadanos y de cualesquiera otras condiciones
adicionales que estos tengan, como por ejemplo ser un empleado,
un menor, etc., igual que en investigaciones judiciales. Por
ejemplo, no podemos investigar una computadora o "smartphone" si
no es el propietario quien hace entrega de la misma, o sería una
violación de la intimidad y del secreto de las comunicaciones.
En investigaciones judiciales no se debe tomar o acceder a nada
que no sea proporcionado por las autoridades o adquirido en base
a mandamientos judiciales, siempre según la legislación vigente
en cada momento y lugar. Es decir, se trabaja con lo que aporta
el tribunal, que es lo que este ha considerado que debe ser
evaluado. para que una evidencia sea aceptable tanto en casos
públicos como privados, esta debe ser reproducible, es decir,
otro perito tiene que poder llegar a las mismas conclusiones
partiendo de la misma evidencia. La trazabilidad de las
evidencias o la cadena de custodia es una herramienta documental
que garantiza la conservación de la evidencia. Para esto es
importante establecer protocolos sistemáticos de actuación y
calcular los "hashes" de las evidencias digitales, ya que
permiten comprobar que no han sido alteradas. Por último, es
aconsejable que los peritos, ya sea por pertenencia a una
asociación profesional o por contratación propia, estén
respaldados por un seguro de responsabilidad civil que les cubra
en el ejercicio de su profesión. Y si en algún momento el perito
duda sobre la legalidad de cualquier actividad que por
iniciativa propia o del cliente fuese a ejecutar, mejor
consultar antes con un asesor legal.
*Las evidencias son un conjunto de recursos y datos a los que
tiene acceso un perito para extraer y analizar la información.
*En una investigación pública, ¿Con que tipo de perito nos
podemos encontrar?
Privado o funcionario
*De las siguientes suites forenses, ¿Cuál trabaja
específicamente sobre Linux?
Caine
#Tipos de hardware para informática forense
Cuando nos planteamos adquirir "hardware" para realizar trabajos
de informática forense debemos pensar no solo en la seguridad,
también es muy importante la eficiencia, dado que el proceso de
información consume mucho tiempo, por lo que el "hardware" debe
ser potente en cuanto a la velocidad de procesador y la
explotación que podamos hacer de su arquitectura multinúcleo. La
cantidad y calidad de la memoria RAM es importante, sobre todo
cuando trabajamos con grandes archivos que tengamos que cargar
en memoria. La velocidad de lectura y escritura en disco es muy
importante para agilizar procesos. Es recomendable usar, cuando
sea conveniente y posible, discos SSD o de estado sólido, quizá
no para el almacenamiento de la información, porque aún son más
costosos que los discos mecánicos, pero sí para el sistema
operativo, las aplicaciones y para las imágenes locales de
evidencias con las que estemos trabajando en cada momento. La
compatibilidad es otro requisito que debe cumplir nuestro
sistema informático: tenemos que ser capaces de operar con
distintos sistemas operativos, ya sea para practicar o para
trabajar con las evidencias que nos lleguen o adquiramos, o
porque la mayor parte del "software" forense está desarrollado
para ejecutarse en plataformas Linux o Windows. Y además está la
conectividad, es decir, la capacidad para poder conectar a
nuestra computadora de análisis cualquier dispositivo, disco,
terminal, adaptador o lo que corresponda para poder desempeñar
nuestro trabajo, ya que nunca sabemos qué vamos a encontrarnos.
La capacidad de una computadora es otro aspecto fundamental y
hablamos básicamente de tres facetas: la ya mencionada memoria,
las bahías y puertos para ampliar y conectar otros elementos al
sistema, y sobre todo y ante todo el espacio de disco para poder
trabajar con evidencias de gran tamaño. En ocasiones, la
capacidad de almacenamiento limitada de un equipo debemos
compensarla con equipos en red tipo NAS que nos den gran
capacidad de almacenamiento y, gracias a la configuración RAID
apropiada, redundancia local contra fallos en los discos, lo
cual no quita que debemos tener siempre un sistema de "backup"
redundante con copias locales y deslocalizadas. Respecto al
lugar de trabajo, hay que considerar dos posibilidades: que
trabajemos en nuestro laboratorio o fuera de él. Cuando
trabajemos en movilidad –por ejemplo, cuando tengamos que ir a
la localización del incidente a realizar la adquisición de
evidencias– deberemos dar prioridad a la portabilidad de los
equipos y ponerla en una balanza con la potencia de los mismos.
Además debemos incluir las herramientas y adaptadores básicos
para cualquier tipo de contingencia que nos encontremos. Cuando
preparamos material para el laboratorio, el tamaño, consumo o
peso serán menos críticos y buscaremos la potencia y la
eficiencia. Otros recursos muy útiles son bolsas antiestáticas
para protección de dispositivos electrónicos, cajas o maletas
robustas y material de acolchado tipo "foam", jaulas de Faraday
para aislar teléfonos móviles dejándolos sin cobertura, cámaras
de fotos para registrar el estado de las escenas, conexión de
equipos, etc., y otras cosas como iluminación auxiliar,
etiquetado y precinto para evidencias, y herramientas, por
supuesto.
#Software usado para informática forense
Con el "software" nos pasa un poco como con el "hardware", que
tenemos que estar preparados para todo lo que nos podamos
encontrar. Vamos a empezar clasificando el "software" por el
tipo de licencia con el que se distribuye. En la categoría de
"software" con licencia comercial tenemos ejemplos como FTK, Pro
Discover o EnCase, y en la de "open-source" podemos encontrar
Autopsy, Digital Forensic FrameWork o Caine Linux. Atendiendo a
las características del "software", podemos clasificarlo en
"suites", que proporcionan las herramientas fundamentales para
desarrollar todo tipo de proceso de investigación forense desde
la adquisición de datos hasta la emisión de informes. Entre
ellos tenemos EnCase, FTK, ProDiscover, Autopsy, DFF... Y en
utilidades especializadas, que se centran en una tarea
específica de la investigación, solemos encontrar herramientas
más potentes que las incluidas en las "suites". Para obtener
imágenes de disco, por ejemplo, tenemos FTK Imager o
DiskExplorer, y las herramientas dedicadas de generación de
imágenes por línea de comando dcfldd, o directamente dd. Y para
examinar ficheros o imágenes a nivel de bit podemos usar Hex
Workshop, por ejemplo.
#Certificaciones en informática forense
Uno de los recursos a los que puede recurrir un informático
forense para ampliar conocimientos y sacar más rendimiento a sus
herramientas son los cursos de certificación. Además, las
certificaciones ayudan a incrementar el prestigio y la
credibilidad que cada perito tenga por su buen hacer. Existen
certificaciones públicas, que son aquellas disponibles para
cualquier profesional, o las que se restringen a colectivos
específicos, como por ejemplo agentes de cuerpos policiales o
jurídicos. Las certificaciones, además, pueden ser emitidas por
entidades educativas o asociaciones, por un lado, que suelen ser
sobre técnicas genéricas, áreas de especialización forense,
aspectos legales, etc., o de empresas desarrolladoras de
"software" o "hardware" forense. Estas últimas centran sus
certificaciones en proporcionar a los peritos los conocimientos
necesarios, genéricos y específicos, de sus productos para
sacarles el máximo rendimiento en su utilización. Vamos a
empezar por las certificaciones de la empresa AccessData,
desarrolladora de la "suite" forense FTK o Forensic Toolkit. Si
accedemos a su web 'accessdata.com', en la sección de Training,
en el menú superior podremos localizar en el enlace al área de
certificaciones: Certificaciones. Tenemos Digital Investigation
Certificate: ACE, y Legal Solutions Certification: SCE, SCCM y
SCA. Veamos, por ejemplo, la primera, ACE. Aquí podemos
encontrar todos los detalles de la certificación. en este caso
sirve para demostrar que se conoce a la perfección la "suite"
FTK. Vemos detalles sobre cómo inscribirse para hacer el examen,
cómo renovar la certificación e incluso la guía de estudio.
Pasemos ahora a ver las certificaciones de la empresa
Cellebrite, dedicada al desarrollo de herramientas forenses para
investigación de teléfonos móviles. Estos certificados solo los
pueden obtener quienes compran los productos de Cellebrite. Para
empezar, accedemos a Formación y aquí podemos ver cuándo son las
siguientes clases y los entrenamientos y certificaciones. Veamos
las certificaciones en el Cellebrite Learning Center, donde
podemos obtener toda la información sobre cómo podemos
certificarnos y cómo renovar los certificados que obtenemos para
demostrar que somos usuarios entrenados en la tecnología que
proporciona esta compañía. Dejando de lado las empresas
privadas, tenemos la opción de acceder a certificaciones de
organizaciones como EC-Council, que es una entidad dedicada a la
consultoría de seguridad y a la formación y certificación de
profesionales abierta al público en general. Los certificados de
EC-Council no están vinculados a herramientas específicas y
abarcan una gran gama de áreas de conocimiento relacionadas con
ciberseguridad, como podemos ver en su sección de Programas; por
ejemplo, en el certificado, tratando temas como "digital
forensics", "disaster recovery", analista IT... Tenemos toda la
información académica, servicios para estudiantes, veteranos,
servicios de formación "online", etc. Otra gran organización es
la Asociación Internacional de Especialistas en Investigación
Informática –por sus siglas en inglés, IACIS– en 'iacis.com'.
Esta asociación está orientada a los agentes de la ley y a
instituciones jurídicas. Aquí podemos ver los detalles de su
certificado principal, el "certification" CFCE: Certified
Forensic Computer Examiner Program, donde podemos obtener toda
la información relativa al certificado. Por cierto, CFCE son las
siglas de "certificado de examinador forense de computadoras".
Con estos ejemplos ya nos hacemos una idea de que con la
experiencia de nuestro trabajo podemos decidir qué certificados
nos pueden resultar más convenientes. No dejes de buscar
empresas y asociaciones en tu entorno que proporcionen
certificaciones válidas para la experiencia de otros
profesionales o incluso por instituciones públicas de tu país.
#Qué es el particionado de discos
En plataformas Linux, una partición de disco se representa como
un archivo dentro de la estructura de ficheros, y en general en
prácticamente cualquier sistema, aunque luego eso se enmascara
para hacer la interfaz más amigable al usuario. Es importante
ver así las particiones porque en muchas ocasiones deberemos
conectar discos en computadoras con distribuciones Linux
orientadas a la informática forense, ya que permiten controlar
con mucho detalle los permisos de lectura y escritura, como por
ejemplo en la distribución Caine, desarrollada específicamente
para trabajos de investigación forense. En sistemas Linux, una
unidad de almacenamiento se representa como un archivo. Por
ejemplo, una unidad SATA conectada a nuestro sistema estará
representada con la ruta /dev/sda en el sistema de archivos. Las
unidades físicas se representan con las siglas de la unidad y
una letra como identificador –por ejemplo, /dev/sda, sdb, etc.–,
mientras que las unidades lógicas, las particiones, añaden un
número al nombre anterior. Así tendríamos, por ejemplo, dos
particiones en el disco 'sda' que se mostrarían como dev/sda1 y
dev/sda2. Por lo tanto, los dispositivos de almacenamiento son
el "hardware", ya sea HDD o SSD –memorias externas, por ejemplo–
, y las particiones son las representaciones lógicas que
distingue nuestro sistema operativo y sobre las que operamos con
sus estructuras de ficheros. Estamos en una instalación de
Ubuntu Linux, concretamente 16.04. Vamos a abrir una línea de
comandos o terminal y vamos a ejecutar "sudo", que es la opción
para decir que queremos ejecutar un comando como superusuario,
"fdisk -l", que nos mostrará los discos que hay conectados a un
sistema. Nos solicita la contraseña de superusuario y nos
muestra el resultado. en este caso tenemos dos discos. Si vamos
a la parte de arriba del comando, tenemos el disco /dev/sda de
20 GB y el disco /dev/sdb de 1,9 GB. Luego para cada uno tenemos
sus correspondientes particiones, que, como decíamos antes,
añaden el número. En este caso, el resto las particiones. El
sistema nos indica dónde empiezan, dónde terminan, el número de
sectores, el tamaño, las unidades por sector... para que podamos
calcular los distintos tamaños. Esta es la funcionalidad de
'fdisk', una de ellas, la de listar las unidades "hardware"
conectadas al sistema y las particiones de cada una de esas
unidades.
#Información hexadecimal en investigación forense
Manejarse con datos codificados en hexadecimal es fundamental
para el trabajo forense, y la base numérica 16 no está escogida
al azar. En informática, como todos sabemos, la mínima unidad de
información es el bit, que puede valer o cero o uno, aunque
normalmente nos manejemos en "bytes", es decir, en grupos de
ocho bits. Partiendo de esta base, pongamos un ejemplo. Ocho
bits aleatorios, como pueden ser 10001101, que en base 10 o
decimal equivale al número 141. Si lo expresamos en hexadecimal,
sería 1000 en binario, que equivale a 8 en decimal y en
hexadecimal, mientras que la segunda mitad del "byte", 1101,
equivale a 13 en decimal y a la letra D en hexadecimal. Es
decir, que el valor hexadecimal del "byte" es 8D. Pero ¿por qué
si hablamos de nivel binario estamos convirtiendo los datos a
base 16? Pues bien, repasemos. Al expresar los datos en formato
hexadecimal, en lugar de unos y ceros, tenemos números
expresados con caracteres del cero al nueve y de la letra 'a' a
la 'f', equivaliendo la letra 'a' al número 10 en formato
decimal y la 'f' al número 15. Es decir, que el número F son
cuatro unos en binario. En informática, la unidad superior al
bit es el "byte", que son ocho bits. Si un número de una cifra
hexadecimal ocupa cuatro bits, con dos cifras tenemos un "byte"
y por eso usamos la representación hexadecimal. Las herramientas
de análisis de datos, cuando estos no son decodificables, los
representamos en formato hexadecimal, pero también resulta útil
para datos que sí son decodificables en sus correspondientes
formatos. Además, en ocasiones el análisis hexadecimal es
necesario para identificar información oculta o modificarla, ya
que los datos pueden manipularse a nivel de bit para ocultar o
destruir información. Por eso un investigador forense debe poder
trabajar a nivel binario y, por comodidad, en hexadecimal. La
codificación comparada en base binaria, decimal y hexadecimal
sería la siguiente: Para ocho bits de ceros, tendríamos cero en
decimal y cero en hexadecimal; para ocho bits de uno, tendríamos
255 en decimal, FF en hexadecimal. Por ejemplo, en codificación
ASCII la letra 'a' es 01000001, que es 065 en decimal y 41 en
hexadecimal. Como vemos, el binario es demasiado largo y el
decimal deja sin utilizar los números del 256 al 999. Así pues,
las ventajas del uso de la representación hexadecimal son que es
un 33 % más breve que en decimal y un 75 % más breve que en
binario, aprovechando todos los símbolos que hay entre el 00 y
FF, lo cual permite un reconocimiento visual de patrones una vez
que los representamos en un editor hexadecimal.
#Sobre editores hexadecimales
Los editores hexadecimales se usan para ver datos a nivel
binario, aunque generalmente, y como su nombre indica,
representados en base hexadecimal. Existen editores muy variados
con más y menos funcionalidad. Los hay con interfaz gráfica y
por línea de comandos. Por ejemplo, podemos destacar Bless Hex
Editor como representante de editores "open-source" disponible
para plataformas Linux, y Hex Workshop como herramienta
comercial para Windows. Lo básico que necesitamos que tenga
cualquier editor que escojamos para trabajar es poder abrir
archivos grandes o imágenes de discos. Esta tarea puede ser
complicada por el gran consumo de memoria si el editor no está
preparado. También necesitamos poder hacer búsquedas por
contenido y por sectores, sobre todo cuando trabajamos con
imágenes de disco. Necesitamos poder calcular "hashes". También
tenemos que poder editar el contenido para identificar patrones
y revelar datos o secretos y poder ejecutar operaciones de
desplazamiento de bis, rotaciones, etc. También es interesante
poder trabajar con unidades físicas y lógicas. Entre las
unidades físicas, las que podemos conectar y desconectar de
nuestra computadora, se incluyen tarjetas de memoria, los discos
duros o las memorias USB. Las unidades lógicas son simplemente
las particiones. Usando editores hexadecimales hay que
considerar el formato de representación básico, que es un
"byte", el equivalente a ocho bits, y que se representa mediante
dos dígitos hexadecimales. La dirección de cada "byte" suele
representarse con su posición, que es el número de "bytes"
contando desde el primer "byte" del archivo, que se representa
con el "byte" número 0. Normalmente se agrupan los dígitos en
grupos de dos, cuatro y ocho cifras hexadecimales, es decir,
uno, dos o cuatro "bytes".
#Qué es el offset
"Offset" es una palabra común en la literatura de tratamiento de
datos en informática. Rara vez se traduce, aunque podría
equivaler a "desplazamiento". Podríamos decir que es la
distancia de un dato respecto de un punto de referencia conocido
y es un concepto importante para localizar datos concretos en un
archivo o imagen. Si el "offset" de cierta información es
0x0010, significa que está a 16 "bytes" del punto de referencia.
En resumen, el "offset" es una forma de referenciar la
localización del inicio de cierta información a partir de una
posición concreta que puede ser el principio de un archivo, el
principio de un sector o el principio de una unidad de disco o
partición. Es decir, el "offset" es la cantidad de "bytes" entre
el principio elegido y el comienzo de los datos buscados. Veamos
un ejemplo. Esta es la representación hexadecimal de una
fotografía en formato JPEG. Este tipo de archivo indica su
inicio con una cabecera que siempre es FFD8 y, como no indica el
tamaño del archivo, sino que va indicando el de los bloques,
indica el final del archivo con los "bytes" FFD9. Pues bien,
cada sector del archivo se inicia generalmente con el "byte" FF
seguido de otro "byte" indicativo y, a continuación, dos "bytes"
que indican el tamaño del sector, es decir, indican el "offset"
contando desde el primer "byte" de tamaño hasta el siguiente
sector. Así pues, en esta imagen el primer sector empieza con
FFE0 y tiene un tamaño 0010, que es 16 convertido a decimal. Así
que si señalamos 16 "bytes", incluyendo el tamaño del sector,
vemos que efectivamente a ambos lados tenemos cabeceras de
sector. Lo mismo ocurre para el siguiente sector, en esta
ocasión encabezado por FFDE y con longitud 43 en hexadecimal,
que son 67 "bytes" de "offset", desplazándonos desde el primer
"byte" que indica el propio "offset". El último dato a
considerar cuando hablamos de numeración hexadecimal es que
cuando la escribimos, para diferenciarlas de la decimal,
anteponemos el prefijo 0x a las cifras hexadecimales, tal y como
se muestra en el ejemplo.
*hace falta que el hardware que utilicemos para informática
forense sea especialmente potente.
*Las aplicaciones de software las podemos calsificar en suites y
especializadas
*¿En qué dos tipos podemos clasificar las certificaciones en
informática forense? públicas y de acceso restringido
*¿Cómo se representa la ruta de una partición? /dev/sda1
*¿A qué equivale 1101 en hexadecimal? a "D"
*Una memoria USB es una unidad física.
*¿Con qué cabecera inicia la representación hexadecimal de una
fotografía en formato JPG? Con FFD
#Adquisición estática con herramienta OpenSource
La adquisición estática de evidencias es la más común que suele
darse en informática forense y habitualmente la más sencilla. La
adquisición estática consiste en la extracción de datos de
fuentes de almacenamiento no volátiles como, por ejemplo, discos
duros, tarjetas SD, memorias USB y cualquier otro soporte de
información digital. Se trata de generar una imagen. Decimos que
estos soportes de almacenamiento contienen información no
volátil porque esta continúa presente en el dispositivo aunque
lo apaguemos y le retiremos el suministro eléctrico, cosa que no
pasa, por ejemplo, con la memoria RAM. Existen múltiples
herramientas "open source" disponibles para obtener imágenes de
discos o particiones, pero vamos a ver el comando 'dd'
disponible en Linux y macOS. Ahora mismo estamos en CAINE Linux,
que es una distribución basada en Ubuntu, pero 'dd' lo
encontraremos en todos los sistemas. Vamos a abrir la línea de
comandos, la tengo aquí minimizada, y vamos a comprobar que
unidades hay conectadas a la máquina: 'sudo fdisk -l'. Vemos que
tenemos 'sda' de 30 GB, que es el disco principal con tres
particiones, y tenemos 'sdb', que es una memoria web que tengo
conectada de 1,9 GiB, 2048 bytes, y tenemos 'sdb' que es la
unidad USB que tengo conectada de 1,9 GiB. Para poder hacer una
imagen lo primero que tenemos que hacer es montar esta unidad en
modo solo lectura, así que: 'sudo mount -o ro –"read only"–
/dev/sdb1'. La unidad ya está montada. Si ahora vamos, por
ejemplo, al explorador de archivos, vemos que tenemos aquí la
unidad con todos sus archivos. Podemos cerrar y vamos a hacer
una imagen. Para ello vamos a ir primero al escritorio 'cd
Desktop' y teniendo en cuenta que cuando no indicamos el punto
de montaje este va ser en la carpeta media, vamos a ejecutar el
comando 'sudo dd if', de "input file", que será '=/ dev /sdb'
porque queremos hacer una copia completa de la unidad no
indicamos el número. Recordemos que 'dev/sdb' es la unidad, y
aquí abajo 'dev/sdb1' es la partición, que en este caso
coincide. En "output file" indicamos punto, barra, del
escritorio, que es en la carpeta en la que nos encontramos, y lo
vamos a llamar 'imagen USB .dd' Vamos a añadir una opción más
que es 'status = progress' que nos permitirá ver cómo progresa
el avance de la copia con 'dd', si no solo veríamos el cursor
parpadeando y no sabríamos cuánto podría tardar. Empieza el
proceso y debemos dejar que termine. Mientras tanto ya vemos que
en el escritorio ha creado el archivo que solicitábamos. El
proceso ha terminado y vemos que ha tomado 157 segundos, casi
tres minutos; dos minutos y medio. Tenemos el archivo y la copia
ha sido completada. Ahora vamos a repetir el proceso desde una
herramienta gráfica. En Forensic Tools tenemos Guymayer. Nos
aparecen distintas unidades, seleccionamos el dispositivo
extraíble –es 'sdb' igual que antes– e indicamos Adquirir
imagen. Si se trata de hacerlo en el formato de Expert Witness
Format, tendremos que indicar estos datos, pero podemos hacerlo
también con formato 'dd'. No nos pide esta información, solo
donde queremos almacenarla. En 'home', 'caine', 'Desktop',
seleccionamos y como nombre pues le vamos a llamar 'guymagerusb'
para saber que la hemos sacado con otra aplicación. Le podemos
pedir además que calcule el MD5 al final. Inicia el proceso,
aquí abajo tenemos la información. En este caso, Guymager genera
dos archivos: la copia –la imagen– y un archivo de información.
El proceso ha terminado mucho más eficiente que en la vez
anterior y podemos comprobar en un caso, en Propiedades, que
tenemos un archivo de 2 GB, y en el otro, Propiedades, correcto,
exactamente el mismo tamaño. Además si abrimos el archivo 'info'
tenemos el proceso de adquisición con toda la información de
cómo se ha ejecutado, y lo que es más importante: el código
'hash'. Así que estas son dos formas en CAINE Linux de obtener
imágenes: una con una herramienta gráfica y otra con 'dd', que,
como decíamos, está disponible en todos los sistemas Linux y
macOS. Otras herramientas disponibles, por ejemplo, son el
comando 'dcfldd' que es un "fork" o derivado de 'dd'. Sus siglas
provienen de "US Department of Computer Forensics Lab dd", y es
una versión forense de 'dd', la herramienta que acabamos de
utilizar. Y también tenemos el "software" Clonezilla, del que
podemos obtener una versión "Live" para poder usar como arranque
de una computadora y extraer imágenes sin iniciar el sistema
operativo de la computadora en cuestión.
#Crear una imagen de disco en varios archivos con DD
Supongamos que tenemos un disco de gran tamaño del que
necesitamos extraer una imagen, pero necesitamos que no sea de
un único archivo porque luego vamos a tener que almacenarla en
varios dispositivos; por ejemplo, en CD. Vamos a poner el
ejemplo de que necesitamos entregar una imagen en CD. Si el
disco original es superior a 650 MB, no vamos a poder
almacenarlo. Entonces trabajaríamos de la siguiente manera.
Primero tenemos que comprobar que realmente tenemos conectada a
la memoria USB de la que queremos extraer la imagen en nuestra
computadora. Para ello ejecutamos 'sudo fdisk -l', y
efectivamente vemos que aquí está la unidad y este es su tamaño.
Vale. Tiene 1.9 GiB, que son todos estos "bytes" repartidos en
estos sectores de 512 "bytes" cada uno. Nos interesa hacer una
imagen de la unidad, no de la partición. Así que vamos a probar
un primer comando mediante un 'back' con 'split'. Utilizaríamos
'sudo dd if' para indicar la entrada –"input file–, que será
'dev/sdb'. Recordemos: no ponemos el número porque queremos la
unidad entera, no solo la partición. No vamos a indicar mucho
más, simplemente que nos muestre el progreso: 'status
=progress'. Generamos el "pipe", que sirve para que la salida de
este primer comando se utilice como entrada del segundo, y vamos
a utilizar 'split -b 650m' y lo vamos a guardar en 'usb .' para
que el comando 'split' vaya añadiendo extensiones a los
archivos. Ejecutamos el comando. Vamos viendo el progreso, ya ha
terminado. Si ejecutamos 'ls -la', vemos los tres archivos que
ha generado. ¿Cómo podríamos hacer esto de manera más
comprensible, más razonada por nuestra parte? Vamos a utilizar
para ellos solo el comando 'dd' Ejecutamos 'sudo dd', indicamos
la misma entrada 'dev/ sdb'. Como salida vamos a hacerlo trozo a
trozo, así que vamos a hacer pues la parte uno. Tenemos que
indicar el tamaño de sector para asegurarnos de que es el mismo
que nos indica aquí arriba. Vale, 512. Entonces 'bs=512'.
Después, como vamos a hacer una primera parte, tenemos que
seleccionar los "bytes" de la unidad de almacenamiento desde el
cero hasta un número determinado. Queremos que sea de 650 MiB.
Entonces vamos a hacer un 'count', de contar, y hay que contar
sectores. Así que vamos a hacer una operación matemática que
dice que un mega son 1024*1024, realmente un mebi. Un mega son
1000, un mebi son 1024. Como es un CD, 650. Entonces este es el
tamaño en "bytes" de un CD, pero queremos el tamaño en sectores
equivalente a los sectores de la unidad de almacenamiento, así
que dividimos entre 512, y podemos añadir 'status=prorgress'.
Ejecutamos. Vale, lo he escrito mal. Repetimos:
'status=progress'. Repito 'status=progress'. Ya tenemos el
primer archivo. ¿Ahora qué tenemos que hacer para obtener el
segundo archivo, la segunda parte? Pues el tamaño que queremos
de esa segunda parte es el mismo. Vale, pero antes vamos a hacer
una operación. Tenemos 3.915.776 sectores. Vamos a hacer una
pequeña operación: '$[ 1024 *1024*650 dividido entre 512]'.
'echo $[ 1024*1024*650 dividido entre 512]'. Vale, este es el
tamaño en sectores de uno de los archivos que acabamos de hacer,
y viendo este tamaño sabemos que tenemos para dos sectores y un
tercero que no será completo, no será tan grande. Entonces, el
segundo archivo le vamos a poner un nombre: 'p2'. Tendrá el
mismo tamaño, el mismo 'count', pero vamos a decir que se salte,
'skip =', y que se salte lo que hemos capturado ya en la primera
generación de archivo que eran 1024*1024*650 dividido entre 512.
Ejecutamos. Vale. Y de momento 'ls la'. Tenemos dos archivos
'p1' y 'p2' del mismo tamaño. Y luego tenemos el 'usb.aa', '.ab'
y '.ac'. Vemos que por lo menos coinciden los tamaños. De
momento vamos bien. Ahora vamos a repetir lo mismo, solo que
tenemos que saltarnos el doble de espacio porque ya hemos
saltado los dos primeros archivos, así que 2* y aquí también
tenemos que contar una cantidad distinta de sectores. Los
sectores totales de la unidad son estos. Podemos ver que la
unidad 'sdb' tiene este número de sectores, que es superior al
número de sectores de la partición, ¿recuerdas? Así que copiamos
este número de sectores, lo vamos a pegar aquí y es el número
ese total. Le vamos a restar lo que ya hemos obtenido, que son
dos veces esta cantidad de sectores. Tenemos que cambiar el
nombre de archivo para no sobreescribir el anterior, y proceso
completado. Si volvemos hacer a 'ls la', vemos que efectivamente
de las dos formas hemos obtenido los mismos tamaños de fichero.
Para poder volver a unirlos en uno solo podemos hacer 'cat p1 p2
p3'. 'Cat' sirve para leer un archivo y simplemente sacarlo como
salida. Si ponemos tres archivos seguidos, los saca como salida.
Con este conector lo que le decimos es que es... Vamos a
llamarlo 'partes.dd'. Nos lo a guardar en ese archivo. va Y a
vamos repetir lo mismo: 'cat usb.aa' 'usb.ab' y 'usb.ac' y lo
vamos a dejar en 'usb.dd'. Y ahora vamos a comprobar que el
"checksum" de ambos archivos es el mismo, el 'hash'. Vamos a
hacerlo, por ejemplo, con MD5: 'md5sum partes.dd' y a
continuación 'md5sum usb.dd'. Separando los dos comandos por
punto y coma, nos ejecutará uno y luego el otro. Ya tenemos el
resultado del primero y el resultado del segundo, y vemos que
efectivamente se trata del mismo 'hash' sin ninguna diferencia.
Así que hemos realizado una copia fraccionada de una imagen de
una unidad de disco de dos formas distintas, las hemos
reensamblado cada una por separado y aun así seguimos
manteniendo el 'hash'. Por lo tanto, la evidencia es completa y
es confiable.
#Adquisición estática con dcfldd (DD forense)
'Dcfldd' es una versión forense de 'dd' y funciona más o menos
igual que 'dd' pero está desarrollada por el laboratorio de
informática forense de los Estados Unidos pensando en su
fiabilidad. Para instalarla podemos ejecutar 'sudo apt -get
install dcfldd'. En nuestro caso está instalada. Lo primero,
como siempre, tenemos que comprobar si la unidad está montada.
en este caso está montada, tenemos aquí la unidad. Así que
podemos proceder a hacer la copia. Para ello ejecutaremos el
comando 'sudo dcfldd if', "input file" o entrada, '/dev/sdb' y
como salida le diremos que lo haga en 'usbimageddf'. Vamos a
llamarle la extensión '.ddf' en vez de 'dd'. Y le vamos a pedir
además, que esta es una de las ventajas que tiene esta
herramienta sobre 'dd', que nos calcule el 'hash'. en este caso
el 'hash=sha256' y que guarde el 'hash', 'hash log=' en
'usbimage .log' Ejecutamos el archivo y en este caso sí nos
muestra directamente el proceso. Vemos que actúa bastante rápido
y también crea dos archivos: el del 'log' donde almacenará el
'hash', y el de 'ddf', que es el que le hemos dado para que
guarde la copia que deberá ser exactamente igual al de 'dd'.
Lleva ya tres cuartas partes completadas. Y si hacemos 'ls -la'
tenemos que la copia obtenida con 'dd' es de exactamente el
mismo tamaño que la obtenida con 'ddf'. Y luego tenemos
'usb.log' que es el 'hash' del 'ddf'. Si lo abrimos, este es el
'hash256' de esa unidad de memoria. En resumen, 'dcfldd' es más
fácil y un poco más seguro de usar que 'dd'. 'Dcfldd -h' para
mostrar la ayuda. No es así. '- help' para ver todas las
opciones que nos plantea la herramienta. Además, contando con el
respaldo de sus desarrolladores, puede ser una herramienta más
respetable y por lo tanto confiable en procesos de
investigación. Sea cual sea la herramienta de obtención de
imágenes que usemos, debemos tener en cuenta que el rendimiento,
es decir, la velocidad no solo depende del tamaño de la
evidencia, también influyen la velocidad de lectura del soporte
digital y la velocidad de escritura en el disco de destino de la
imagen. La más lenta será la que marque el ritmo. Y luego
tenemos la potencia de procesado que afecta en menor medida a la
copia, pero sí afecta más al cálculo de los 'hashes', sobre todo
para imágenes de gran tamaño.
#Adquisición estática con una herramienta comercial
En este vídeo, vamos a hacer la adquisición estática de la
imagen de un soporte de almacenamiento, en concreto de una
memoria USB mediante FTK Imager de la empresa Access Data, que
es una herramienta gratuita pero no libre. Para su descarga
iríamos a la web de Access Data y vamos a Productos, Servicios,
Products Donwloads. Buscamos FTK Imager, seleccionamos la última
versión, y aquí nos da acceso al panel donde solicitar el enlace
de descarga, para el que solicitarán nuestros datos, y de esa
manera nos enviarán un enlace de descarga a nuestro correo
electrónico. Pero paremos un momento. Aquí tenemos un MD5, el
del archivo 'AccessData_FTK_Imager_4.1.1_x64.exe'. Yo ya he
descargado el archivo y lo he instalado, pero vamos a comprobar
que realmente lo que he instalado es lo que Access Data me está
proporcionando. Para ello ejecutamos PowerShell y vamos a ir al
escritorio, que es donde tengo el archivo descargado. Si hacemos
'ls' encontramos el archivo. Podemos ejecutar 'Get-FileHash',
damos el nombre del archivo, indicamos que queremos el 'hash'
MD5. Y para hacerlo fácil vamos a hacer un "pipe" con 'Format-
List'. Y he cometido un error, no he escrito correctamente
"algoritmo". Ejecutamos y aquí tenemos el 'hash', D7EB. Si vamos
a la página web, 'd7eb', acabado en 'bb01', así que
efectivamente descargué lo que debía. Podemos cerrar y podemos
ejecutar Access Data FTK Imager. Para crear la imagen vamos a ir
a File, Create Disk Image, seleccionamos un Physical Drive,
Siguiente, seleccionamos la unidad y terminamos. Ahora lo que
tenemos que hacer es indicar el destino de esta copia. Vamos a
hacer una copia 'dd', es decir, una copia en crudo, Siguiente,
caso número: Demo 1 Evidencia: E1. Descripción única: memo usb.
Examinador: srsolís –que soy yo–. Y Notas: "Lo que queramos",
como por ejemplo ¿dónde hemos obtenido esta evidencia?, ¿quién
nos la ha entregado?, etc. Damos a Siguiente y elegimos en este
caso el escritorio como destino de la copia. Y el nombre pues
'IMAGEN USB' Podemos elegir el tamaño de los archivos si
queremos fragmentar la imagen en trozos más pequeños, pero en
nuestro caso vamos a decirle que no, no queremos fragmentar.
Terminamos y le solicitamos que verifique las imágenes tras su
creación. Así que adelante. Ahora procede con la verificación y,
una vez completado el proceso, nos muestra los 'hashes' de
original y copia. Computed, este, es el 'hash' de la memoria
antes de copiar. Y Report es el 'hash' de la imagen. Como vemos,
coinciden. Con esto hemos obtenido una imagen de disco completa
mediante FTK Imager y hemos calculado simultáneamente el 'hash'
de la original y de la copia, por lo que al verificar que es
válido cualquier análisis que hagamos a la copia será como si se
lo hubiésemos hecho al original pero preservando la integridad
de este. Siempre hay que tener en cuenta que el original lo
debemos haber conectado a la computadora con un protector contra
escritura via "hardware". Y aquí tenemos el archivo con los
"hashes" y el proceso. Toda esta información deberá añadirse a
nuestra investigación para que se sepa cómo hemos obtenido esta
copia. Y la imagen es lo que tenemos aquí, como vemos, el tamaño
de la unidad USB.
#Adquisición en vivo de pruebas
La adquisición en vivo es un método cada vez más habitual en
informática forense, y aquí hay muchos equipos que podemos
encontrarnos encendidos a la hora de atender un incidente.
Podemos hacer adquisiciones en vivo según la necesidad. Un caso
más que plausible es el de una empresa en la que se ha detectado
un ataque por "malware". Dado que el equipo afectado es
propiedad de la empresa y está operativo, cabe la posibilidad de
que hagamos una adquisición en vivo en el equipo. Otro caso en
el que es necesario hacer la adquisición de esta forma es cuando
tenemos equipos cuyo disco duro está cifrado. Mientras está
apagado nos será imposible acceder a los datos almacenados, así
que lo ideal es que esté encendido y que el usuario haya
introducido la contraseña de descifrado para que cargue el
sistema operativo. Por lo tanto, los objetivos de practicar este
tipo de adquisición son: poder generar imágenes de particiones
cifradas mientras el equipo aún está encendido; recuperar los
datos más volátiles, esencialmente estamos hablando de la
memoria RAM que se borra al apagar el equipo y cuyo contenido
cambia con el uso de las aplicaciones y del propio sistema,
aunque también hay datos de la CPU –archivos temporales, cachés,
conexiones de red, etc.– que también son volátiles. Pero ¿qué
tipo de información podemos localizar en la memoria RAM? Pues
una lista de los procesos en ejecución en el momento de la
captura, conexiones de red del momento –e incluso anteriores–,
nombres de usuario y contraseñas, el contenido de algunas
ventanas que estén abiertas, los "drivers" operativos cargados
en memoria, otros ficheros abiertos asociados a procesos en
ejecución, contenido descifrado o desempaquetado de algún
programa, e incluso "malware" propiamente dicho. Los volcados de
memoria son complicados de hacer en investigaciones con equipos
ajenos porque difícilmente nos darán acceso sin poner pegas,
contando con el hecho indudable de que lo haríamos siempre y en
todo momento de forma legal. Sin embargo, son muy prácticos en
casos de resolución de incidentes como ciberataques en empresas,
organizaciones... En estos casos es recomendable que exista una
política de manos fuera para evitar que alguien nervioso o un
atacante interno pueda apagar su equipo y sabotear nuestro
proceso de investigación. Para hacer un volcado de memoria que
pueda resultar medianamente efectivo debemos cumplir un par de
normas básicas. Debemos disponer de un espacio de almacenamiento
preferiblemente externo con capacidad para toda la memoria del
equipo. Sea la RAM de 4 o de 16 GB, siempre necesitaremos un
poco más de espacio en nuestro soporte de almacenamiento. Otra
cosa que debemos tener siempre en cuenta es la regla de oro y es
que debemos interactuar lo menos posible con el equipo del que
queramos hacer un volcado de la memoria RAM. Hay que lanzar el
proceso con el menor número de pasos posible y, una vez
iniciado, no debemos tocar nada hasta que acabe, o estaremos
capturando nuestra propia actividad que a su vez estará
sobrescribiendo información volátil. Y por último debemos
documentar todo el proceso con mucha precisión, ya que solo será
efectivo una vez, y debemos poder demostrar que lo hemos hecho
de forma correcta para que la evidencia obtenida sea válida en
cualquier circunstancia.
#Adquisición en vivo con FTK Imager
Estamos en Windows 10 y vamos a abrir FTK Imager, que es una
herramienta gratuita de la empresa Access Data que nos permite
generar y gestionar imágenes, incluso hacer volcados. Abrimos
Access Data FTK Imager y aceptamos la solicitud del UAC. Vamos a
File y en Capture Memory tenemos que seleccionar dónde vamos a
guardar la captura de memoria que hagamos. En nuestro caso lo
almacenaremos en una memoria externa, en la carpeta 'memoria'.
Dejaremos el nombre por defecto y le diremos que incluya el
"pagefile". El "pagefile" es lo que se conoce comúnmente como
memoria virtual y es lo que se emplea para intercambiar
información entre el sistema y la RAM. Normalmente está pensado
para ocupar una vez y media el tamaño de la RAM, así que para
una RAM de 4 GB estaríamos hablando de una "pagefile" de unos 6
GB. El archivo 'AD1' es un archivo de captura de memoria
propietario de Access Data, los desarrolladores de FTK Imager.
en este caso no lo vamos a solicitar. Y por ahorrar tiempo
podríamos evitarnos el "pagefile", pero vamos a dejarlo.
Continuemos. A partir de este punto lo único que queda es
esperar. El resultado de este proceso será un archivo con la
extensión .MEM. Para ver el resultado del volcado de memoria se
puede usar la "suite" comercial FTK de Access Data o
aplicaciones de "software" libre como, por ejemplo, Volatility.
Estas herramientas de análisis indexan automáticamente la
información que encuentran para no tener que explorar toda la
RAM con un editor hexadecimal, ya que con tantos gigas como se
usan actualmente no abarcaríamos el total de la información
nunca. Ya ha terminado el volcado y empieza con el del
"pagefile". Ya ha terminado el volcado, así que podemos cerrar
la ventana y podríamos llevarnos los dos archivos: el volcado de
memoria propiamente dicho y la memoria virtual, que, como
podemos ver, ocupan en este caso 2 GB, y algo menos de 1,5 en el
caso de la memoria virtual. Como decíamos, tenemos el archivo
.MEM y podemos importarlo a FTK Imager como evidencia, aunque lo
mejor es emplear herramientas de análisis que veremos en el
siguiente vídeo de este curso. Ahora prueba a tratar de hacer un
volcado de memoria de la RAM de tu PC y ver qué tipo de datos
encuentras.
#Análisis de volcado de memoria con Volatility
Volatility es una herramienta "open source" desarrollada por la
comunidad y mantenida por Volatility Foundation, una
organización sin ánimo de lucro. El propósito de esta
herramienta es el análisis de los volcados de memoria que
hayamos obtenido durante la adquisición en vivo de otras
computadoras. Vamos a hacer una prueba. En primer lugar debemos
obtener la aplicación Volatility. Para ello vamos a la web de la
Volatility Foundation, y a Releases. Seleccionamos la opción que
más nos convenga, en nuestro caso Volatility 2.6 Windows
Standalone Executable. Seleccionamos Guardar como y en el
escritorio abrimos la carpeta y vamos a extraer el contenido
directamente en el escritorio. Vamos a cambiar el nombre de la
carpeta por comodidad a 'Volatility'. Y dentro encontramos
información sobre los autores, crédito, información legal,
licencia, léeme y el ejecutable, que también por comodidad vamos
a reducir a 'Volatility'. En un vídeo anterior, hicimos una
captura de memoria. La tenemos almacenada en la memoria externa
y vamos a seleccionar estos archivos y, por comodidad, a
trabajar con ellos en el mismo directorio que el programa.
Mientras este se copia, vamos a ir iniciando el intérprete de
comandos. Vamos al escritorio y a la carpeta de 'Volatility'.
Hacemos un 'dir' y efectivamente ahí está Volatility. Lo primero
que necesitamos es obtener información sobre el tipo de memoria
analizada. Es decir, no es lo mismo trabajar con una computadora
Macintosh que con una computadora Windows. Depende de dónde
hayamos hecho el volcado de memoria, así deberemos procesar la
información. Además, no solo importa el tipo o el proveedor,
también la versión del sistema operativo. Los archivos ya se han
copiado, así que podemos ejecutar 'Volatility .exe ImageInfo -f
memdump .mem', donde 'imageInfo' le da instrucciones a la
aplicación Volatility de ver lo que sería el equivalente a los
metadatos del volcado de memoria. Este proceso tardará más
cuanto mayor sea el archivo a analizar, así que vamos a ir
ejecutándolo. Mientras tanto podemos abrir otro intérprete de
comandos y ejecutar 'cd desktop /Volatility' Y ejecutamos
'Volatility.exe -- info' para obtener la información sobre los
"plugins" y demás información que nos puede proporcionar
Volatility. en este caso tenemos "scanner checks"; lo que puede
buscar. Tenemos los "plugins" disponibles –los "plugins"–, los
espacios de dirección y los perfiles, es decir, lo que estamos
tratando de averiguar en el otro intérprete de comandos. Pues
estos son los perfiles compatibles con la búsqueda. Vamos a
volver a la otra pantalla y esperar a que termine el proceso.
Una vez ha terminado el proceso, en 'suggested profiles' vemos
los posibles sistemas operativos a los que puede corresponder el
volcado de memoria, así que tomamos nota porque lo necesitaremos
a continuación. Aquí tenemos 'suggested profiles' y tenemos una
Win 10x64, Win 10x64, Win 10x64 y Win 2016. Bueno, en principio
los tres primeros podrían ser correctos. Vamos a seleccionar el
primero. De hecho, vamos a copiarlos todos y vamos a crear una
nota para tenerlos a mano de forma que podamos probar con ellos
y así obtener el mayor rendimiento del análisis de la memoria.
En principio copiaremos el primero. A continuación vamos a hacer
una búsqueda para ver qué procesos había en ejecución al hacer
el volcado de memoria. Así que ejecutamos 'Volatility.exe -f
memdump .mem -- profile' y aquí es donde indicamos el perfil
deseado, y la solicitud de información, los procesos en
ejecución, es 'plist'. Perdón, el comando correcto es 'pslist'.
Y aquí tenemos información sobre todos los procesos que había en
ejecución: 'svcHost', 'services', 'wininit', la interfaz de
'login', 'Winlogon', que sabemos que siempre tiene que estar en
ejecución, 'Explorer' del escritorio. Tenemos un navegador.
Teníamos Chrome en ejecución; de hecho, dos pestañas Chrome,
cada una con su proceso. Internet Explorer. WordPad estaba en
ejecución, es decir, una nota; otra pestaña de Chrome. Había un
intérprete de comandos cuando se hizo el volcado de memoria. Y
esto es solo un ejemplo de lo que podemos averiguar que estaba
sucediendo en la máquina. Otra información importante a la hora
de analizar es que en la primera columna tenemos el "offset", es
decir, dónde se ha encontrado en el archivo de memoria la
información sobre el proceso en ejecución. Pero, un detalle
importante, ¿recuerdas con qué programa hicimos el volcado de
memoria en el vídeo anterior? Correcto: FTK Imager. De hecho,
debe de ser uno de los últimos programas que se ejecutaron, así
que debemos ir hacia el final y aquí encontramos la referencia.
Porque tiene que quedar claro que, al haber ejecutado un
programa en la máquina que estamos investigando, vamos a dejar
huella. en este caso esta es la primera huella que hemos dejado.
Además de este ejemplo, con Volatility podemos hacer búsquedas
por patrones, que es lo que viene definido, y podemos encontrar
claves públicas y privadas de certificados SSL, lo que estuviese
en los "clipboards" del sistema. Podemos ver el histórico de
comandos de la línea de comandos con CMD Scamp. Con el verbo
'sockets' localizaremos conexiones abiertas que hubiese durante
el volcado de memoria. Y tenemos incluso File Scamp, que sirve
para obtener archivos cargados en memoria. Aunque es
recomendable filtrar por directorios de interés porque esto
puede lanzarnos DLL y otros archivos de sistema, generando una
gran cantidad de información que tendríamos que analizar paso a
paso, también se puede incluso buscar historiales de navegación
con IE History. En resumen, Volatility es un buscador en base a
patrones conocidos de información específica en volcados de
memoria. Así que ahora estás invitado a probar con el volcado
que hiciste en el anterior vídeo.
#Adquisición remota de evidencias
La adquisición remota de datos se basa en la recolección de
evidencias a través de la red. Al trabajar de esta forma,
necesitamos dos equipos, cada uno con sus correspondientes
aplicaciones que conforman una arquitectura cliente-servidor. El
cliente es el equipo desde el que queremos obtener la
información, es decir, la computadora del analista, mientras que
la computadora que ejecutará la aplicación servidor es la que
queremos analizar, de donde van a salir las evidencias. La
adquisición remota es un caso particular de adquisición en vivo
porque requiere que la evidencia esté encendida y conectada a la
red con la computadora del analista. Al igual que la adquisición
en vivo, la adquisición remota crece en importancia a medida que
se usa más y más el cifrado de discos. Por este motivo está la
norma de trabajar siempre primero con los equipos en las
condiciones en las que nos encontramos. Si están encendidos, los
mantenemos así, y podemos aplicar adquisiciones en vivo,
incluida la adquisición en red. Si están apagados, procedemos si
es posible con adquisiciones estáticas. Hay que tener en cuenta
que el hecho de hacer extracciones en vivo directamente o por
red, al igual que con los volcados de memoria, produce cambios
en la evidencia, por lo que el proceso tiene que estar
extremadamente bien documentado de forma que todos los datos
obtenidos referentes al proceso de adquisición puedan ser
descartados, igual que en la escena de un crimen se toman las
huellas de los agentes y las víctimas para descartarlas de entre
las encontradas.
*La RAM, respecto a la permanencia de información sin suministro
eléctrico, está considerada un dispositivo volátil.
*¿En el terminal de Ubuntu, con qué modificador especificamos el
tamaño del sector con el que queremos hacer una imagen de una
unidad? "bs="
*dcfldd es más fácil y un poco más seguro de usar que dd.
*La adquisición en vivo es fácil de sabotear .
*¿Cuánto espacio más que la RAM está pensado para ocupar el
pagefile.sys? una vez y media
*Qué modificador de volatility.exe ejecutamos desde el
intérprete de comandos para ver lo que sería el equivalente a
los metadatos del volcado de memoria? "imageinfo"
*La adquisisción remota requiere que la computadora esté
encendida y en red
#Indexado de datos de evidencias digitales
El indexado de la información es un paso muy importante en el
proceso de una investigación forense, básicamente porque
necesitamos hacer búsquedas. Según el diccionario, indexar es
registrar ordenadamente datos e informaciones para elaborar su
índice. Y entonces índice es un libro u otra publicación, lista
ordenada de los capítulos, artículos, materias, voces, etc. en
él contenidos con indicación del lugar donde aparecen. En
informática forense, no se trata de un libro, sino de archivos,
pero la definición es igualmente válida, puesto que indexar
consiste en reconocer la imagen de una evidencia, sea de un
disco de almacenamiento o de un volcado de memoria RAM, y marcar
la localización de cada bloque de información. La mayoría de las
aplicaciones de tratamiento de evidencias digitales, al añadir
una nueva evidencia suelen indicar que la están procesando. Este
proceso, entre otras cosas, es el indexado de la información. Es
decir, se empieza por el "byte" cero y se va avanzando marcando
el "byte" en el que empieza cierto dato como, por ejemplo, un
archivo. Algunos de los ejemplos de aplicaciones que hacen esta
función de indexado son Forensic Tool Kit, EnCase, Autopsy,
Volatility, UFED, etc. El objetivo último del proceso de
indexado es poder acceder a datos específicos dentro de esa
imagen sin tener que buscarlos cada vez desde la posición
inicial. Conociendo la localización de ciertas palabras clave,
conjuntos de datos específicos, es más rápido acceder a la
lectura de ese sector de información. La alternativa es buscar
cada aparición de esa clave en la imagen siempre desde el
principio cada vez que queramos trabajar con ella, básicamente
igual que buscar en el índice de un libro en qué página empieza
un capítulo para no tener que ir pasando una una las páginas
hasta encontrarlo. Desarrollar un índice lleva tiempo porque
tiene que catalogar y localizar cada clave, cada grupo de
información relevante. Como contrapartida, hay que considerar
que el tiempo de indexado solo se consume una vez. Disponiendo
del índice, el tiempo de exploración que ahorramos a posteriori
es muy considerable y merece la pena para poder trabajar en la
fase de análisis de forma eficiente y sin largas esperas, como
durante la adquisición.
#Búsqueda de datos en evidencias digitales
Dado que las investigaciones forenses tratan de responder a
preguntas específicas, la búsqueda de palabras clave en una
imagen suele ser una herramienta clave para determinar si hay o
no presencia de ciertos tipos de datos. Vamos a hacer un ejemplo
con la "suite" "open source" Autopsy, disponible en
'zsleuthkit.org'. Abrimos la página web y en la sección de
Autopsy tenemos Download. Descargamos la versión 64 bit,
indicamos que queremos guardarla en el escritorio. Una vez
completada la descarga, podemos cerrar la ventana. Quedan unos
segundos nada más. Correcto. Y aquí la tenemos. Así que vamos a
proceder a su instalación. Damos a continuar, dejamos el
directorio por defecto, e instalar. Autorizamos el UAC y, una
vez finalizada la instalación, ejecutamos el "software". Lo
primero que tenemos que hacer es crear un nuevo caso, una nueva
investigación. Para ello le damos un nombre: 'Demo 1', y un
directorio donde guardará toda la información. Vamos al
escritorio y creamos una nueva carpeta, que llamaremos como el
caso. Va a ser una operación de un único usuario. Y continuamos.
El número del caso, pues 001, y el examinador, nuestro nombre o
identificación. Finalizamos y Autopsy crea una base de datos que
alimentaremos con las evidencias que vayamos adquiriendo. Para
importar nuestra primera evidencia iremos a Disk Image,
continuamos y la seleccionamos. Vamos a escoger la que guardamos
en un vídeo anterior capturada mediante FTK Imager. Abrimos y
continuamos. En este punto nos dará la opción de elegir qué
procesos de análisis de datos queremos ejecutar. Parte de estos
procesos son el indexado de la información, como por ejemplo la
identificación de tipos de archivo, la búsqueda de palabras
clave o identificar archivos interesantes. Seleccionando
cualquiera de las opciones, podemos ver la información en el
panel lateral. En la parte inferior se nos muestra la
información, correlación –motor de correlación–, búsqueda de
información Exif –que son metadatos de fotografías–, búsqueda y
reconstrucción de "emails". ¿Vale? Tenemos siempre información
ahí abajo. Podemos dejarlos todos marcados y continuar: "La
fuente de datos ha sido añadida a la base de datos local. Los
archivos serán analizados". Damos a finalizar y empieza el
proceso. Aquí abajo nos indica que está analizando los archivos.
Una vez cargada la evidencia, podemos ver los archivos
contenidos en cada partición o volumen lógico sin problemas ni
esperas. Por ejemplo, tenemos 'data sources', que es lo que
hemos importado. Como es una imagen, pues tenemos varios
volúmenes. Seleccionando este volumen tenemos los directorios
internos. Información del volumen. Aquí tenemos un documento,
por ejemplo; una imagen, un volumen sin localización, aquí
tenemos fotografías. En cada caso podemos encontrar distinta
información. Tenemos PDF, tenemos fotografías, texto
enriquecido, el 'Quijote', más PDF, un 'lorem ipsum' en TXT, más
fotografías, un archivo de vídeo, un archivo MP3. Y nos permite
ir viendo cada uno de ellos o reproduciendo su contenido. Pero
es que durante el proceso de importación Autopsy no solo ha
indexado el contenido de las particiones contenidas en la
imagen, además ha ejecutado un proceso de "carving" y ha
recuperado archivos borrados, que son los que están marcados con
una 'x'. Por ejemplo, esta hoja de Excel, esta fotografía JPEG,
vemos la 'x' aquí marcada, o el TXT de 'lorem ipsum'. Podemos
recuperar esta fotografía, ver en nueva ventana, abrir en visor
externo o extraer archivo. Podemos guardarlo en el escritorio, y
aquí tenemos la fotografía. Vemos con el visor de fotos y
tenemos la fotografía totalmente recuperada a pesar de que el
usuario que manejaba la memoria USB que analizamos, de la cual
adquirimos la imagen, la había borrado. Además, como habíamos
dicho, la indexación se ocupa de buscar palabras clave, así que
podemos hacer búsquedas por palabras. Sabiendo que tenemos el
libro del 'Quijote', vamos a buscar Dulcinea. Buscamos
coincidencias exactas, coincidencia de un "substring" o
expresiones regulares. Es decir, que podemos usar comodines.
Buscamos y efectivamente nos encuentra que el archivo de texto
enriquecido del 'Quijote' contiene la palabra Dulcinea y nos la
resalta. Esto podría ser interesante en investigaciones de
determinado tipo –por ejemplo, financiero– en el que busquemos
palabras relacionadas con la actividad que se nos haya pedido
investigar. Así pues, una de las medidas de calidad de una
herramienta de análisis de imágenes de evidencias digitales es
la calidad de su indexado y del motor de búsqueda, ya que un mal
indexado o un mal motor de búsqueda pueden hacer que no
descubramos información importante, y si el motor de búsqueda es
muy lento nos hará perder tiempo; aunque debemos considerar que
también depende del tamaño de las evidencias y de los recursos
de nuestro equipo de trabajo.
#Generación de informes forense
Muchas herramientas de análisis forense, especialmente las
"suites", disponen de herramientas de generación automática de
informes. Dado que cada caso puede constar de múltiples
evidencias y cada evidencia puede tener información interesante,
resulta práctico hacer esa información amigable para su
análisis. La vista experimentada del investigador debe revelar
lo que se oculta tras los datos puros y duros. Para eso son los
informes: para poner en conjunto aquello que cada evidencia
aporta por separado y exponer las conclusiones que podemos
deducir de cada dato independiente y de la correlación de los
mismos. Estamos de nuevo en Windows 10 y vamos a ejecutar
Autopsy. En lugar de crear un nuevo caso, vamos a abrir un caso
reciente. Nos muestra el último caso con el que hemos trabajado.
Lo abrimos, carga toda la base de datos y tenemos todos los
archivos. Vamos a comprobar los archivos, en este caso los que
encontró en este volumen, ¿recordamos? Y vamos a suponer que,
por ejemplo, 'Night in the City' es una fotografía interesante.
Así que podemos marcar. Podemos usar Tag and Comment, que nos
permite marcar, poner un "bookmark", simplemente una marca o
evidencia y añadir un comentario: 'El investigado pudo estar
aquí'. OK, ya está "tagueado". Tenemos un Excel con una lista de
países, podemos marcarlo como evidencia directamente. Tenemos la
Constitución de los Estados Unidos. Si resulta que es una
evidencia, pues la marcamos. Por ejemplo, Bookmark. Y una
fotografía de un disco duro, la vamos a marcar también:
Bookmark. El objetivo de haber etiquetado estos elementos es
generar un informe. Para ello vamos a Generator Report y vamos a
seleccionar la opción HTML, básicamente porque podremos abrirlo
en cualquier navegador, en cualquier PC. Le damos a Siguiente y
vamos a incluir todos los resultados. Podríamos haber tenido
solo Bookmark o solo Evidencias. Marcando todo, lo exportará
todo. Finalizamos y nos indica que ha sido guardado en esta
dirección, que podemos abrir directamente con Chrome. Esta es la
forma en que Chrome genera su informe. Tenemos el resumen del
caso, con el número –el número del caso–, el examinador y el
número de imágenes importadas, dónde está almacenado, el tiempo
horario en que se examinó, que es importante, sobre todo cuando
tenemos distintas localizaciones, y la imagen que se examinó.
Podemos ver la coincidencia de palabras clave, direcciones de
"email", por ejemplo. Tenemos imágenes etiquetadas y archivos
etiquetados. Imagen, el archivo de Excel, el PDF y el JPG y
cualquiera de ellos es accesible a la persona que recibe este
informe en HTML en cualquier momento. Simplemente haciendo clic
puede abrir el PDF en este ejemplo o podría abrir una
fotografía. Los informes automatizados pueden ser un gran punto
de partida para los informes que hagamos como investigadores,
pero al final debemos exponer nuestras conclusiones sobre la
investigación que se nos encarga, no copiar y pegar lo que hace
una "suite", porque de ser así no haría falta especialización
alguna. También es cierto que si es relevante el informe
automático, se puede adjuntar al desarrollado por el
investigador.
#Sistemas de archivos en analítica forense
Los sistemas de archivos o arquitectura de ficheros son la forma
en la que los sistemas operativos organizan la información y la
indexan en las particiones de almacenamiento para acceder a ella
de forma eficiente, tanto para leer como para escribir. La
comprensión de las estructuras de ficheros es una de las partes
clave de la informática forense para poder entender formas de
ocultar la información que un actor malicioso o "malware" pueden
emplear y para diseñar métodos de recuperación de información lo
más eficientes posible. Uno de los sistemas que más a menudo nos
hemos encontrado, aunque no sea muy actual y cada vez se use
menos, es FAT, siglas de "File Allocation Table", un sistema
heredado de MS2. Más moderno e implementado por Microsoft ya
para Windows es NTFS, siglas de "New Technology File System".
Hoy en día es más probable encontrar este formato que FAT, ya
que se implementó soporte para el mismo desde Windows 2000 y XP.
La diferencia radica en cómo cada sistema almacena los metadatos
de los archivos e indexa la localización de estos en los discos.
En Linux existen distintos tipos de sistemas de ficheros. en
general versiones de EXT, e-x-t o "sistema de archivos
extendido", que deriva en parte del sistema UFS o sistema de
ficheros unificado. EXT fue el primer sistema de archivos
desarrollado específicamente para Linux y actualmente su versión
más moderna es el cuarto EXT o EXT 4, disponible desde 2006. El
índice de archivos se basa en listas enlazadas. Es decir, que
cada elemento apunta al siguiente. Hasta 2017 el sistema
operativo macOS ha venido usando el sistema de archivos HFS+,
siglas en inglés de "sistema de archivos jerárquico", en uso
desde el año 98. Desde la versión 10.13 del sistema, se ha
implementado APFS o, lo que es lo mismo, "Apple File System",
especialmente orientado a trabajar con discos de estado sólido o
SSD. Además contempla de forma nativa la optimización para
discos cifrados. Pero una de las características más
interesantes es que aplicando APFS a una unidad de disco, el
tamaño de los volúmenes o particiones es dinámico. Es decir, que
el espacio libre del disco se va asignando a cada partición y
recuperando de esta a medida que se escriben o borran archivos.
Veamos entonces la composición simplificada de los sistemas de
archivos. Para empezar hay que comprender que, por lo general,
hay dos espacios fundamentales de una unidad de almacenamiento:
la tabla o índice o árbol y el contenido. La primera nos indica
dónde está cada cosa en el segundo y nos proporciona metadatos
sobre los archivos. Algunos de los metadatos más comunes son:
tamaño, nombre del archivo, permisos, atributos y su
localización en el disco. En la segunda parte están los datos,
que son los archivos. Un par de conceptos que aparecen a menudo
al hablar de sistemas de archivos son sector y "clúster". Los
sectores son la unidad de almacenamiento físico más pequeña y
consta normalmente de unos 512 "bytes". Es el espacio mínimo de
escritura en disco; algo así como un hueco a rellenar en el que
podemos poner un único objeto, lo llene por completo o no. Por
otro lado están los clústeres, que son conjuntos de sectores. Es
decir, que un clúster puede equivaler a un sector o a varios.
Normalmente el clúster es lo que utiliza el sistema operativo
para escribir en disco según su sistema de archivos, mientras
que el sector sería la unidad de direccionamiento más a nivel
del "hardware". También debemos distinguir entre almacenamiento
lógico y físico. El almacenamiento lógico son las particiones o
unidades reconocidas por el sistema operativo, las que se
muestran en el explorador de archivos. El sistema operativo
escribe y lee en dichas particiones en base a clústeres. Las
unidades de almacenamiento físico son el "hardware" que almacena
información; por ejemplo, discos duros, discos de estado sólido,
discos ópticos, memorias "flash", USB, etc. La forma de escribir
en estas unidades una vez trascendido el nivel lógico de
partición es sector a sector. De este modo, cuando un sistema
operativo escribe un archivo, lo hace a nivel de clúster, lo
cual repercute en desaprovechamiento del espacio si el tamaño
del archivo no es múltiplo del tamaño del clúster en el sistema
de archivos que estemos utilizando. Pongamos, por ejemplo, un
archivo de 2050 "bytes" que tenemos que guardar en un sistema de
archivos, cuyo clúster consta de dos sectores y cada sector
almacena 512 "bytes". Un clúster, por tanto, puede almacenar
1024 bytes, lo que significa que el sistema operativo reservará
tres clústeres y almacenará solo dos bytes en el primer sector
del tercer clúster. Al final quedan 1022 bytes de espacio libres
en el tercer clúster, pero ya no pueden ser utilizados para
almacenar otros archivos, así que si vamos a escribir un segundo
archivo lo haremos a partir del cuarto clúster. El espacio que
queda vacío al final de un clúster recibe el nombre de "slacks".
Los sistemas más habituales que nos encontramos son FAT y NTFS.
NTFS es más eficiente que FAT. NTFS utiliza un tamaño de clúster
inferior a FAT, lo que redunda en más aprovechamiento del
soporte físico para la reducción de "slacks". Además la cantidad
de atributos y permisos capaz de registrar NTFS es mucho mayor
que en FAT, permitiendo mayor granularidad de configuración y
seguridad del sistema operativo. También podemos enfrentarnos a
sistemas de almacenamiento RAID: "Redudand Array of Independent
Disks", en los que más de un soporte físico corresponden a una
única unidad lógica. Obviamente los RAID afectan al
almacenamiento físico, ya que luego se comportan como una unidad
lógica que puede implementar el sistema de archivos que indique
el usuario. Estas explicaciones son solo la esencia teórica de
los sistemas de ficheros, pero para poder hacer investigaciones
con buenos resultados te recomiendo que estudies en profundidad
aquellos con los que más a menudo vayas a trabajar.
#Fundamentos de una secuencia de arranque
La secuencia de arranque de un sistema operativo en una
computadora es una sucesión de acciones que debemos conocer para
saber qué información puede proporcionar y si hay algo que
podamos llegar a conocer manipulándola. Una de las tareas de la
BIOS es comprobar la secuencia de arranque almacenada en el
CMOS. La secuencia de arranque tiene una lista ordenada de
particiones en las que localizar el sistema operativo. Esto es
importante porque si iniciamos una computadora desde el disco
original de la evidencia, la propia secuencia de arranque
modificará esa evidencia comprometiéndola. Por lo tanto, si no
es posible extraer una imagen de los discos antes de iniciar el
equipo, lo más conveniente es cambiar la secuencia de arranque y
forzar al equipo a cargar un sistema operativo que carguemos en
otra unidad que conectemos; por ejemplo, en memorias o discos
USB con LiveCD o LiveDVD. Estas unidades Live proporcionan un
sistema operativo sobre el que operar y desde el que obtener una
imagen o clonado del disco que almacena el sistema operativo
original del equipo que estamos investigando. Es recomendable
usar distribuciones Linux que no monten directamente las
unidades lógicas que localicen o que lo hagan solo en modo
lectura como, por ejemplo, Kali Linux. Para cambiar la secuencia
de arranque será necesario acceder a esta mediante la
combinación adecuada de teclas, que depende de cada fabricante
de computadoras, por lo que es importante conocerla antes de
encender el equipo o iniciará con el sistema operativo habitual
corrompiendo nuestra prueba. Este es un procedimiento en el que
solo tenemos una oportunidad para no corromper el estado de la
evidencia, por lo que debe además ser perfectamente documentado,
salga bien o mal, para poder seguir la investigación a pesar de
lo que pueda perderse si arrancamos el sistema operativo que no
debemos. Algunos elementos de "hardware" relacionados con el
arranque del sistema son: la mencionada BIOS o sistema básico de
entrada-salida. Es una memoria que almacena un programa de
arranque para la computadora, incluyendo los controladores
necesarios para el "hardware", comprueba que el estado de la
memoria es funcional y a continuación arranca el sistema
operativo; la UEFI o interfaz de "firmware" unificado
extensible, que es la tecnología que sustituye a la BIOS; el
CMOS o "Complimentary Metal Oxide Semiconductor", que es una
memoria volátil que contiene información de fecha y hora, así
como datos de configuración. Es un chip integrado en la placa
madre de la computadora. En algunos casos, es posible incluso
manipular la BIOS o el UEFI pudiendo ampliar nuestra capacidad
de intervención sobre los equipos que investigamos. Lo que vemos
ahora en pantalla es el inicio de la Kali Linux. Kali es una
distribución de Linux para investigación forense y "pentesting",
en este caso un LiveCD. Ejecutamos el modo "live", es decir, sin
instalación, desde la unidad externa. Podemos ver la secuencia
de arranque y cuando esta completa veremos el escritorio de
usuario. Ya ha cargado el escritorio de usuario. Como podemos
ver, la resolución de la imagen no es la más apropiada y es
porque no ha cargado todo lo necesario de la computadora. Esto
puede depender de en qué computadora iniciemos los "drivers", el
"hardware" que encontremos. Lo que es interesante es que podemos
acceder a aplicaciones y tenemos herramientas categorizadas por
el tipo de funcionalidad que queremos trabajar. La que nos
interesa para este curso es la número 11 Forensics, donde
tenemos por ejemplo Volatility, un cálculo de 'hashes', Foremost
o Autopsy. Esta, como hemos dicho, es una versión "live" de Kali
Linux, pero podemos trabajar con CAINE, Santoku... El objetivo
es iniciar la computadora desde un sistema operativo alternativo
que preserve la integridad de las evidencias. Lo bueno de estas
"distros" es que incluyen gran cantidad de herramientas
preinstaladas para poder iniciar las primeras fases de
adquisición de datos.
#Discos duros como evidencias digitales
Los discos duros son un soporte relativamente económico de
almacenamiento de datos, tanto que la combinación de su
almacenamiento con el progreso de Internet prácticamente han
hecho desaparecer a los CD y DVD. Como investigador forense, es
más que probable que tengas que extraer datos de ellos en más de
una ocasión, por lo que conviene que estudies cómo funcionan.
HDD son las siglas de "Hard Disk Drive", algo que en algunos
países se ha traducido como disco duro y en otros como disco
rígido o simplemente rígido. Sea cual sea la traducción que más
nos guste, el HDD es el disco mecánico clásico que desde hace
tantos años conocemos. Los componentes de un disco duro son los
siguientes. En primer lugar, los cabezales de lectura-escritura,
que se encuentran en el extremo de unos brazos móviles. Se
apoyan sobre los platos y hay un cabezal sobre cada cara de cada
plato. También se llama aguja por analogía con los discos de
vinilo. Los platos, también llamado discos, o "platters" en
inglés, son cada uno de los discos que hay en lo que llamamos
disco duro. Por norma general todos los platos de un rígido
están alineados en un mismo eje y rotan al mismo tiempo. Cada
"platter" se divide a su vez "tracks" y sectores. Los "tracks"
son los anillos concéntricos en que se divide un plato. También
se les llama pistas. Llamamos sectores a cada una de las
divisiones de un "track" mediante radios de la circunferencia
del plato. Los clústeres son una unidad lógica, no física, que
se componen de uno o varios sectores. Los "tracks" y los
sectores se utilizan para direccionar posiciones físicas de un
plato. Tradicionalmente cada sector almacena 512 "bytes" de
información. De esta manera es fácil, sabiendo en qué "track"
está el sector buscado, llevar la aguja o cabezal al punto
correcto y, haciendo girar los platos, pasar de sector en sector
hasta leer el sector deseado. Siguiendo con la estructura del
disco, tenemos los cilindros. Un cilindro lo componen los
"tracks" que están en la misma localización. Es decir, a la
misma distancia del eje central pero en distintos platos. Y se
llama así porque los platos se apilan verticalmente con un único
eje de rotación central, por lo que el conjunto de "tracks" de
igual identificación en distintos platos forman un cilindro. La
capacidad de un disco, por tanto, suele medirse en cilindros,
sectores y cabezales. Pero veamos un ejemplo sencillo con
números inventados. Si tenemos 1000 cilindros, 32 sectores de
512 "bytes" por "track" y 10 cabezales, es decir, cinco discos,
las matemáticas son las siguientes: 1000 cilindros por 32
sectores en cada cilindro y por 5 platos, que suman 10
cabezales, y por 512 "bytes" nos dan 163.840.000 "bytes". Es
decir, aproximadamente 164 MB. Esto es solo un ejemplo para
demostrar el cálculo. Obviamente hoy en día hay discos de mucha
mayor capacidad de almacenamiento. Los discos SSD, siglas de
"disco de estado sólido", son una modalidad más actual del
sistema de almacenamiento digital no volátil. No tienen partes
mecánicas, como los platos o los cabezales de los discos duros
tradicionales. Hubo unidades basadas en RAM que requerían de
baterías propias para no perder la información al apagar el
equipo, pero en la actualidad utilizan memorias NAND "flash",
que no son volátiles. La memoria NAND puede leerse
secuencialmente, en lugar de aleatoriamente como la RAM, lo cual
permite leer o escribir integralmente su contenido con facilidad
y gran velocidad. Los discos SSD tienen un procesador propio
encargado de realizar las tareas de lectura y escritura, así
como de descartar los sectores que resultan dañados, de reubicar
información moviéndola de unos sectores a otros, etc. Por eso
resulta casi imposible comprobar la validez de un 'hash', de una
imagen comparándola con la del disco original y lo que hay que
hacer es generar una primera imagen o un clonado a un HDD. Esa
primera imagen, o el HDD al que se ha clonado, será a partir de
ese instante la evidencia original y deberán obtenerse copias de
la misma para desarrollar la investigación.
#Registro de arranque principal (MBR)
El registro de arranque principal, o MBR por sus siglas en
inglés, empieza en el primer sector de un disco duro. El MBR o
"Master Booth Record" es la primera partición del disco, aunque
se le identifica también con el gestor de arranque, que es el
programa que se ejecuta desde la BIO y que nos muestra la
pantalla de menú que vemos al iniciar la computadora y que nos
da algunas opciones relativas al arranque del sistema operativo.
El proceso normal de funcionamiento es que, una vez que la BIOS
o UEFI detectan el disco de arranque, se da acceso a la
partición de arranque o MBR. La MBR almacena la información de
las particiones de la unidad de almacenamiento, entre las que
podemos encontrar localizaciones de las particiones en el disco,
tamaños de las particiones, si son o no particiones de arranque
para que la BIOS o UEFI sepa si puede arrancar un sistema
operativo desde ellas, etc. Obviamente, al menos una de las
particiones de uno de los discos accesibles por la BIOS o la
UEFI debe ser de arranque y contener un sistema operativo para
que el equipo pueda arrancar. Algunas de las aplicaciones que
podemos utilizar para explorar y gestionar los discos y
particiones de las computadoras son fdisk en Linux y Windows o
GParted como sistema operativo integral con interfaz gráfica
para esta función. También tenemos DiskPart en Windows y
Diskutil en MacOS. Un gestor de arranque muy común que podemos
usar cuando tengamos múltiples aplicaciones con distintos
sistemas operativos es GRUB. Las siglas de GRUB significan "GNU
GRand Unified Bootloader" o, lo que es lo mismo, gran gestor de
arranque unificado GNU. Se instala típicamente con las
distribuciones Linux y tiene tanto modo operativo de texto plano
como gráfico. A continuación vamos a ver una pequeña
demostración con GParted. Seleccionamos la opción de GParted
Life y mientras arranca comentamos. GParted es una distribución
Linux que solo tiene GParted. La podemos arrancar desde una
memoria USB o desde un Live CD y serviría para gestionar las
particiones de una máquina; en principio, tenga uno o múltiples
discos duros. Lo primero que nos pide es seleccionar el patrón
de teclado, vamos a seleccionar QWERTY en español. Teclado
estándar. Estándar. Y como idioma seleccionamos español, número
25. Le indicamos que arranque en modo normal y esperamos a que
cargue la interfaz gráfica. Como vemos, carga un escritorio y
automáticamente la aplicación de GParted. Nos muestra en GParted
–si refrescamos dispositivos– que solo tiene una unidad.
Dispositivos 'dev/sda' con 20 GB. Podemos crear una tabla de
particiones. Aplicamos. Y podemos crear una nueva partición.
Vamos a crear, por ejemplo, una partición de aproximadamente 4
GB que vamos a llamar 'Win' y vamos a formatear en NTFS. Y el
resto, por ejemplo, si quisiésemos instalar Linux, pues dejamos
ext4, ponemos Linux. Estos son etiquetas. Podemos poner el
nombre que queramos. Lo que nos muestra aquí es todo el espacio
restante, ¿vale?, no tenemos que preocuparnos de lo que ya hemos
seleccionado para la otra partición. Le damos a Añadir y ya
tenemos aquí las dos particiones definidas. Estas son las tareas
pendientes. Le damos a Aplicar. Nos pregunta si estamos seguros
de querer ejecutar estas operaciones, le decimos que sí. Y ahora
el disco duro ha quedado particionado de la manera que hemos
escogido. Podemos guardar estos detalles, mostrarlos, que son
los dos procesos que ha llevado a cabo, crear una partición
vacía con toda la información que eso conlleva, crear un sistema
archivos NTFS, el comando que he utilizado. Podemos ver todo el
proceso por si quisiésemos hacerlo nosotros por línea de
comandos. Podemos cerrar y automáticamente esto ha quedado
terminado y podemos salir de GParted. Y eso es todo. GParted,
una Live CD que nos permite gestionar las particiones de
cualquier disco duro "booteando" desde la propia unidad "live",
ya sea USB, DVD o CD.
#Análisis hexadecimal de archivo con extensión errónea
En ocasiones podemos encontrarnos con archivos cuya extensión ha
sido manipulada para simular ser otro tipo de archivo y así
confundir a un investigador u ocultar información para robarla.
Así, cambiando un archivo con una extensión XLS o JPG por DLL,
podríamos considerar que es un controlador o un "driver" y poder
guardarlo en una carpeta como 'System 32' dentro de Windows y
pasaría desapercibido; por poner un ejemplo. Para poder ver de
qué tipo de archivo se trata realmente, tenemos que mirarlo en
profundidad y para eso lo mejor son los editores hexadecimales.
Veamos un ejemplo. Tenemos una fotografía aquí: 'foto.jpg'; tipo
de elemento: archivo JPG; clasificación: sin clasificación; 38
k. Hacemos doble clic y el visor de fotografías de Windows 10
nos dice que no puede ver la fotografía, que algo falla. Bueno,
cerramos. Vamos a abrir nuestro editor hexadecimal y vamos a
abrir el archivo. Como se trata de una fotografía, lo primero
que deberíamos comprobar es la firma, saber si realmente se
trata de un JPG. Así que vamos a ir a Files Signatures,
'filessignatures.net' y vamos a buscar por la extensión JPG. Y
efectivamente vemos que la firma indica que debe empezar el
archivo por FF D8. Luego puede haber variaciones, pero lo
importante: FF D8. Sin embargo, aquí tenemos D0 CF, así que algo
ya no cuadra. Vamos a ir mirando un poquito a ver qué podemos
encontrar en la descodificación del hexadecimal. De momento,
nada inteligible. Seguimos avanzando y aquí encontramos un
bloque de texto: nombre, apellidos, dirección, teléfono, correo
electrónico, serie de información de texto abundante, grado,
fecha de graduación, resumen de las tareas del curso
importantes, los premios y las condecoraciones, experiencia,
nombre de la empresa. Esto empieza a parecerse a un currículum.
Este tipo de texto no esperamos encontrarlo entre los "bytes" de
una fotografía. Sería lógico encontrar texto pues relativo a los
datos EXIF, como por ejemplo el modelo de cámara fotográfica o
algo por el estilo. Entonces esto tiene pinta más bien de un
documento de texto. Vamos a hacer una búsqueda. Vamos a Editar y
en File vamos a buscar "word". Parece un documento de texto.
Vamos a decir que nos busque todas las instancias que encuentre
de la palabra "word". Y aquí en la parte inferior encontramos
varias de ellas y vemos, por ejemplo, la primera que encuentra,
Microsoft Macintosh Word, que parece que es el programa con el
que se habría hecho este archivo. Hombre, mira, un nombre,
probablemente el autor del documento, y el nombre del documento:
'curriculum vitae básico.DOTX'. De nuevo el nombre del autor o
del propietario de la licencia. Buscamos más instancias de
"word". Aquí hay tres instancias, ¿vale?, las otras tres. Vemos
que están las tres aquí juntas y vemos que indica Microsoft Word
97-2004, ¿vale?, o sea que por el año sabremos que probablemente
la extensión correcta es DOC en lugar de DOCX. Así que vamos a
cerrar el editor hexadecimal. Cerramos la página web y vamos a
cambiar la extensión del archivo a DOC. Windows nos pregunta si
estamos seguros de querer hacer este cambio. Le decimos que sí.
Obviamente el sistema, al detectar la nueva extensión, cambia el
icono al programa que debe abrirlo y efectivamente era un
documento de Word que podemos abrir normalmente. Bien, esto es
una técnica muy sencilla que puede permitir a alguien ocultar
información de forma sencilla, simple. Podríamos llamarlo
ofuscación, seguridad por oscuridad. No está cifrando la
información, pero está haciendo que no sea fácil de detectar a
simple vista. Y gracias a los editores hexadecimales podemos
hacer este tipo de análisis al detalle y descubrir qué tipo de
documentos realmente tenemos ante nosotros.
#Recuperación de archivo modificado mediante bit-shift
Desplazar bits es una técnica sencilla pero eficaz para hacer
incomprensible un bloque de información. Diría que ni siquiera
es un cifrado, aunque podemos considerarlo cifrado por
desplazamiento, como el que utilizaba Julio César. Para
reconstruir el estado original de un archivo con desplazamiento
de bits podemos usar un editor hexadecimal. Vamos primero a
tratar de abrir este documento. En principio no tiene extensión,
no lo reconoce. Lo abrimos con el bloc de notas, pero, nada:
información ininteligible. Así que vamos a acudir al editor
hexadecimal y vamos a abrir el documento. En principio, lo mismo
que antes. Si sospechamos que puede ser una técnica de
desplazamiento o rotación, pues podemos probar estas opciones.
Habría que ir jugando con ellas tratando de detectar cuál ha
sido el cambio. por defecto Hex Workshop no muestra estas
utilidades. Tenemos que ir a Opcions, Toolbars y activar Data
Operations. Nosotros vamos a probar a hacer una rotación a la
izquierda. Aquí arriba nos explica cómo funciona: rotar bits a
la izquierda. Por ejemplo, el valor 98 en hexadecimal 100011000
pasaría a ser 00110001. Es decir, este bit rota al otro lado, se
desplazan todos una posición a la izquierda y el primero al
último. Pues esto es lo que ocurriría pero con todo un archivo o
con toda una unidad de disco. Vamos a probar con 8 bits. De
momento no obtenemos nada. Si repetimos la operación con otros 8
bits, resulta que recuperamos un texto: "En un lugar de la
Mancha de cuyo nombre no quiero acordarme". De hecho, tenemos
hasta un guion, así que se entiende que estaba escrito en un
sitio donde estaban las líneas partidas. Podemos guardar este
archivo. Al ver que se trata de texto plano exclusivamente,
podemos entender que se trata de un TXT, así que volvemos al
archivo y le vamos a poner extensión .TXT. Abrimos el documento
y en efecto se trataba de un archivo TXT en el que se estaba
ocultando información. Esta forma de ofuscación de la
información, casi de cifrado, puede ser utilizada para robar
información o para transmitir información a través de la red y
que no pueda ser detectada por IDS o IPS que estén buscando
filtraciones de información. Al final, la resolución de este
tipo de ocultamientos se resuelve con práctica siempre que
tengamos indicios de que hay que buscar algo por el estilo.
*¿Qué aplicación gratuita podemos utilizar para buscar datos en
evidencias digitales? Autopsy
*¿Qué ventaja tiene elegir el formato HTML a la hora de generar
un informe desde Autopsy? Lo podremos abrir en cualquier
ordenador con un navegador.
*El sistema de archivos EXT, ¿de qué otro sistema deriva en
parte? De UFS
*¿Qué es un cluster? Un conjunto de sectores
*¿Cuantas oportunidades tenemos para realizar el proceso de
arranque alternativo sin corromper la evidencia? 1
*Los clusters son una unidad lógica.
*¿Cuál es la aplicación que podemos utilizar en MacOS para
explorar y gestionar los discos y particiones? Diskutil
*¿En qué página web comprobamos la firma de un archivo JPG? En
filesignatures.net
*¿Qué tipo de aplicación debemos usar para corregir un
desplazamiento de bits de un archivo? Un editor hexadecimal
#Bloqueadores de escritura e integridad de evidencias
La conservación de evidencias es la regla número uno en
informática forense. No debemos dañar o permitir que se dañen
las evidencias, ni en su estado físico ni el contenido digital.
No se debe modificar la evidencia bajo ninguna circunstancia
siempre que pueda evitarse. No se debe perder la evidencia,
repetimos, ni física ni los datos contenidos en el soporte
físico. Precisamente para no perderla, en el sentido de tenerla
siempre controlada, están los protocolos de trabajo y la cadena
de custodia. Para no dañar o modificar una evidencia digital,
aparte de las precauciones que debamos tomar para la
conservación óptima del soporte físico, hay que evitar escribir
datos en las memorias o unidades de disco cuando trabajemos con
ellas. Al montar una unidad de disco en un sistema operativo,
casi con toda seguridad la unidad sufrirá la modificación de
algún dato por la simple interacción con el sistema, que puede
crear archivos temporales, de indexación o de formato de
presentación de la información. Para evitarlo usamos
bloqueadores de escritura, que son interfaces "hardware" o
"software" que impiden al sistema escribir en la unidad,
permitiendo por el contrario que lea su contenido. Existen dos
tipos fundamentales de bloqueadores de escritura. Los
bloqueadores "hardware" son dispositivos electrónicos que actúan
como interfaz entre la computadora y el soporte físico de
almacenamiento. Los bloqueadores basados en "software" suelen
formar parte de las "suites" de "software" forense, aunque
también se puede conseguir este efecto mediante la configuración
apropiada del sistema operativo. Las evidencias digitales cuya
integridad no pueda ser demostrada y aquellas cuyo daño o
modificación esté manifiestamente demostrado podrán ser
automáticamente invalidadas; en el primer caso, porque no se
puede garantizar que no haya sucedido lo segundo, y en el
segundo caso, el de la modificación patente, porque las
conclusiones que extraiga un perito, aunque válidas, parten de
una fuente de datos que puede haber sido modificada, lo cual
invalida los procedimientos derivados de ella. Pero los
bloqueadores de escritura no son las únicas herramientas a
nuestra disposición para la conservación de la integridad de las
evidencias digitales, también debemos aplicar protección física
a los soportes de información mediante el almacenamiento en
condiciones apropiadas, implementar una cadena de custodia en la
que se registre quién accede a una evidencia, cuándo y para qué,
y calcular y conservar como parte de la cadena de custodia los
"hashes" de la información para poder garantizar su integridad
y, en caso de violación de la misma, poder comprobar cuándo tuvo
lugar. Una vez más, tenemos en nuestras manos un soporte de
información digital original. Si generamos un duplicado o si
generamos una imagen valiéndonos de un bloqueador de escritura
para salvaguardar el original, obtendremos copias con las que
trabajar sin poner en riesgo el mencionado original. Además, así
podemos saber que si el original sufre alguna modificación se
deberá a accesos no autorizados y podremos tratar de poner
remedio al problema de seguridad que ha derivado en esa
situación. Debemos tener siempre en mente el caso particular de
los discos SSD, cuya distribución de contenidos puede variar
solo por el hecho de tener suministro eléctrico, por lo que en
estos casos, aunque usemos un bloqueador de escritura, el "hash"
del soporte original variará; aunque sí podemos garantizar que
no hemos añadido ni borrado ficheros.
#Bloquear escritura por software
Sin utilizar ninguna herramienta específica, valiéndonos de los
recursos nativos de Windows, en este caso Windows 10, vamos a
bloquear la posibilidad de que el sistema operativo escriba en
las memorias USB que conectemos a la computadora. Para ello lo
primero que vamos a ver es cómo funciona correctamente al
conectar una memoria USB. Hemos conectado la memoria, así que
podemos ir al explorador de archivos y vemos que la tenemos aquí
conectada con un archivo: el primer párrafo del 'Quijote'. Vamos
a abrirlo con el WordPad para que se vea el párrafo bien.
Podemos editar el archivo, añadir una línea, podemos guardar el
archivo –se guarda perfectamente–, podemos crear un nuevo
archivo, documento de texto con el nombre 'prueba', podemos
abrirlo y escribir algo, y podemos guardarlo. Así que vemos que
el USB funciona con total normalidad; podemos abrir documentos y
editarlos. Vamos a expulsar la unidad: Expulsar. En este momento
la unidad queda expulsada del PC. Ahora lo que vamos a abrir es
el registro de Windows. Podemos buscar "regedit". Nos solicita
permiso de administración, y lo que vamos a hacer es irnos al
principio y vamos a trabajar desde 'HKEY_LOCAL_MACHINE'. Nos
vamos a 'Sistema'. En 'Sistema' abrimos 'CurrentControlSet' y
ahí abrimos 'Control'. En 'Control' tenemos que crear una clave
nueva, entonces le decimos Nueva, Clave, que denominaremos
"Storage Device Policies". Y tenemos que crear un elemento para
esta nueva clave, 'StorageDevicePolicies', que son políticas de
dispositivos de almacenamiento. Botón derecho, Nuevo y le
decimos que queremos un DWORD de 32 bits. Le vamos a dar, como
nombre, 'WriteProtect', que es protección contra escritura. Si
hacemos Enter o doble clic, nos permite editar el contenido, y
vamos a poner un valor uno. Siendo el valor por defecto cero,
pues vamos a poner uno, es decir, activamos la protección contra
escritura. Aceptamos, cerramos el registro y lo que debemos
hacer a continuación para que surta efecto es reiniciar la
computadora. Ya hemos reiniciado la computadora, así que vamos a
volver a conectar la llave USB. Con la memoria una vez
conectada, volvemos al explorador de archivos, tenemos la unidad
y tenemos los dos archivos: podemos abrir el archivo de prueba
que creamos antes y podemos abrir el archivo del 'Quijote';
incluso vemos la modificación que hicimos. Si ahora queremos
borrar esta modificación y queremos guardar, nos muestra un
mensaje de error. No tiene permisos de escritura, que es lo que
queríamos obtener, entonces nos pregunta por una nueva
localización. No guardamos, intentamos crear un nuevo archivo, y
simplemente no aparece la opción en el menú porque no tenemos
los permisos de escritura. Es lo que hemos quitado al modificar
el registro de Windows en 'LOCAL_MACHINE', 'System',
'CurrentControlSet', 'Control'. Esta es una forma sencilla de
bloquear la escritura en memorias USB, pero no es infalible y
depende de la unidad de almacenamiento que conectemos y cómo la
reconozca el sistema operativo. Así que para una emergencia es
válida, si no, hay que contar siempre con bloqueadores de
escritura, preferiblemente en "hardware". Ahora estamos en Caine
Linux, una distribución basada en Ubuntu que integra gran
cantidad de "software" orientado a la informática forense. He
conectado a la misma llave USB que antes estaba conectada a
Windows 10. Y si vamos a este icono de la barra de menú donde
pone "SAFE Devices mount READ-ONLY", nos muestra las unidades
que hay conectadas a la máquina y nos indica que en principio
las que se monten –porque cuando conectamos una unidad a Linux
no necesariamente se monta la unidad para ser reconocida– se
montarán en modo de solo lectura. Entonces tenemos la partición
'sdb1' en formato VFAT, de 7,8 GB, que es la unidad USB que
conectado. hemos Si la seleccionamos y pulsamos OK, nos indica
que se ha montado de forma que es solo lectura. Podemos acceder
al directorio, podemos ver la unidad y podemos ver que está en
modo solo lectura. Podemos abrir un documento. Con este programa
no se edita, podemos editar con Geany. Editamos el archivo,
intentamos guardar y no nos lo permite. Esta es la gran ventaja
que aporta Caine sobre otras distribuciones o sobre otras
plataformas, puesto que nos permite conectar cualquier unidad de
disco a nuestra plataforma y estar seguros de que la conectamos
solo en modo lectura para poder analizarla asegurándonos de que
los datos de la evidencia no son modificados. Podemos volver al
panel de control, seleccionar y volver a pulsar OK, y
automáticamente queda expulsada la unidad.
#Bloqueadores de escritura por hardware
Para garantizar que no se modifica una evidencia original
mientras hacemos un duplicado o extraemos una imagen, además de
a los bloqueadores de escritura por "software" podemos recurrir
a los bloqueadores por "hardware". El objetivo de los
bloqueadores de escritura "hardware" es actuar de interfaz de
comunicaciones entre la computadora y la unidad de disco. Una
vez conectados, la interfaz solo permite el flujo de datos de
lectura, es decir, desde la unidad de almacenamiento al PC y no
en sentido inverso. Existen modelos sencillos cuya interfaz de
comunicación con el PC es un puerto USB y que para los
dispositivos de almacenamiento tienen una o varias interfaces
distintas. Básicamente se reducen a una pequeña caja que tiene
un cable USB por un lado y puertos de distintos tipos por otro.
Son bastante económicos. El inconveniente más apreciable es que
sobre el espacio de trabajo quedan varios cables y que no se
aporta ningún tipo de soporte a la unidad de disco que
conectamos. Existen distintos modelos dependiendo del tipo de
interfaz de la unidad de disco, pero lo normal es que tengan
interfaces de varios tipos: IDE, SATA, USB, lectores de tarjetas
o incluso encadenamientos que hagamos, como por ejemplo conectar
un lector de tarjetas estándar USB al puerto USB "guest" del
bloqueador, y este, a la computadora. Otro tipo de dispositivos
son las "docking stations". Tienen el mismo propósito que los
modelos de cable USB, pero el formato de "hardware" nos permite
tener un espacio de trabajo más ordenado y los discos en una
posición más segura. Por supuesto, igual que hay "software"
especializado en análisis forense también hay "hardware"
especializado y los bloqueadores de escritura no son una
excepción. Estos equipos se diseñan con dos ideas fundamentales
en mente: minimizar el riesgo de accidentes, es decir, evitar
que el usuario se confunda; y segundo, cumplir con estándares
legales y profesionales. Son más costosos, pero son más fiables
y, sin lugar a dudas, más aceptados a la hora de presentar
informes sobre las actividades realizadas con las evidencias
adquiridas. Existen múltiples fabricantes que proporcionan este
tipo de tecnología. Por ejemplo, Guidance Software, con Tableau,
en Forensic Bridges, nos muestra varias de sus opciones; por
ejemplo, el Forensic USB 3.0 Bridge, que tiene distintas
interfaces de comunicación para conectarse la unidad de
almacenamiento al PC. También tenemos otros fabricantes, como
CRU, con sus unidades, que también tienen un lado para el
"host", es decir, para el PC, y otro lado –en el otro extremo,
para no confundirnos– para el "guest", es decir, la unidad de
disco que queremos conectar y proteger contra escritura. Existen
modelos que incluyen diferentes interfaces o modelos dedicados a
una interfaz dedicada, depende del fabricante y del formato del
equipo que podamos adquirir. Las clonadoras son los dispositivos
más especializados en la categoría de equipos de la que estamos
hablando. Son rápidas y eficientes, no requieren de conexión a
la computadora para hacer su trabajo, se conectan al disco de
origen y al de destino, y la clonadora copia el primero en el
segundo e incluso calcula el "hash" durante el proceso. A la
hora de adquirir este tipo de tecnología debe primar la
practicidad y la seguridad. No es prioritario tenerlo todo, sino
tener lo necesario. Es más importante que los procesos sean
seguros que la cantidad de cosas que se puedan hacer. El "kit"
de herramientas puede ampliarse progresivamente, por lo que no
es necesario comprar un equipo muy costoso que lo haga todo
desde el principio.
#Hashing como método de preservación de evidencias
El "hashing" es una herramienta que nos permite saber que una
copia de información digital es igual a la original. El
"hashing" es el proceso de transformar una serie de datos
digitales de entrada de longitud variable en un número
hexadecimal de longitud fija. No importa si los datos de origen
son un disco duro de 2 TB o un archivo de texto de 40
caracteres, la longitud del 'hash' siempre será igual. Las
características principales de un algoritmo de "hashing", además
de proporcionar un resultado de longitud fija, son que se trate
de un proceso irreversible. Es decir, partiendo de los datos
podemos calcular su 'hash', pero conociendo el 'hash' no podemos
obtener los datos de origen. Cualquier cambio en los datos de
entrada, por mínimo que sea, dará como resultado un 'hash'
totalmente distinto a lo obtenido con los datos originales. Esto
es lo que nos permite saber si una copia ha sido modificada
respecto al original, ya sea a propósito o por accidente. Si
trabajamos siempre con copias cuyo 'hash' equivale al de la
evidencia original, sabremos que los datos son iguales y por
tanto nuestros procedimientos válidos y reproducibles. Por lo
tanto, cualquier herramienta profesional para informática
forense debe poder calcular "hashes". Para comprobar como
podemos utilizar un verificador de "hashes" nativo de Windows,
vamos a utilizar una herramienta nativa de Microsoft que se
llama File checksum Integrity Verifer. La tenemos disponible en
la web de soporte de Microsoft, en 'availability-and-
description-of-the-file-checksum-intergity-verifer-utility'. Si
descargamos, encontraremos las instrucciones de instalación y el
enlace de descarga. Vamos a guardar el archivo, lo vamos a
guardar en el Disco (C:), vamos a crear una nueva carpeta que
vamos a llamar 'FCIV', guardamos, podemos cerrar el navegador,
abrimos el Explorador de archivos y en Este equipo, en (C:)
tenemos la carpeta que acabamos de crear y podemos ejecutar como
administradores para que se instale la aplicación. Nos solicita
autorización de la licencia, le decimos que Sí y nos dice que le
indiquemos el lugar donde debe descomprimir los archivos. Vamos
a indicar la misma carpeta. (RUIDO) Una vez completado el
proceso, tenemos un archivo de lectura y el 'fciv.exe'. Para
ejecutarlo vamos a hacer la prueba de forma sencilla, copiando
el archivo del primer párrafo de 'El Quijote' en el mismo
directorio. Vamos a hacerlo así para no tener que escribir rutas
completas, también podemos agregar 'fciv.exe' a las variables de
entorno del sistema. Abrimos la línea de comandos y nos vamos a
'fciv'. Haciendo 'dir' vemos que tenemos todos los archivos,
podemos mostrar la ayuda 'fciv' con '/?' y podemos ver las
distintas opciones. Nos permite hacer búsquedas recursivas
calculando "hashes". Nos permite verificarle si le indicamos
"hashes" con los que comparar, pero de momento nos vamos a
limitar a calcular el 'hash', por ejemplo, 'sha1' del archivo
del primer párrafo de 'El Quijote'. Así que 'fciv quijote.txt'.
Tenemos que indicarle el 'hash' que queremos calcular, el
'sha1', ejecutamos, y nos muestra la versión del programa y el
'hash'. Si ahora modificamos el archivo, por ejemplo, con
Notepad ++, le quitamos esta línea para que se quede solo el
párrafo, cerramos y volvemos a ejecutar vemos que el 'hash' ha
variado totalmente porque hemos variado una línea. Si ahora
sobre el párrafo original que es el que tenemos ahora editamos y
añadimos un simple espacio, guardamos el archivo, volvemos a
cerrar el editor y volvemos a ejecutar el cálculo del 'hash' –
solo hemos añadido un espacio– y vemos que de nuevo este 'hash'
es totalmente distinto a este solo cambiando un carácter.
#Algoritmos de hashing
Existen distintos algoritmos de tipo 'hash'. Los más conocidos
son MD5, la MD es de "Message Digest" o resumen de mensaje. Es
muy utilizado, aunque ya se ha demostrado que es vulnerable y
cada vez se usa menos a nivel forense. Sin embargo, calcularlo
cuesta poco en comparación con otros "hashes". SHA son las
siglas de "Secure Hash Algorithm" o algoritmo seguro de
"hashing". Es más robusto que MD5 y actualmente tiene las
versiones 0, 1, 2 y 3. La versión 0 se descartó y ya no se usa.
Actualmente, las longitudes más robustas de estos algoritmos son
de 256 y 512 B para SHA-2 y 3. Un factor importante a tener en
cuenta cuando elegimos qué algoritmo utilizamos para calcular el
'hash' de una evidencia es su nivel de vulnerabilidad. Las
vulnerabilidades del "hashing" son las colisiones, que es lo que
ocurre cuando dos fuentes de información distintas generan el
mismo 'hash' como resultado. No es un problema grave que un
disco duro y una foto tengan el mismo 'hash', pero sí que, por
ejemplo, una fotografía y una versión modificada de esa misma
fotografía generen el mismo 'hash'. Esto sería un problema
porque no podríamos distinguir mediante 'hash' cuál es el
original y cuál la copia. Actualmente se han encontrado
colisiones en MD5 y SHA-1, así que siempre es más aconsejable
usar algoritmos con resúmenes de mayor longitud. Cuanto mayor
sea la longitud del 'hash', menos probabilidades hay de que
existan colisiones, pero más cuesta calcularlo, y eso se traduce
en tiempo que tenemos que tener ocupado un recurso para calcular
ese 'hash'. Cuando es un archivo, no es relevante, pero si son
miles de archivos o un disco duro completo, entonces puede
llevar horas. Una alternativa que utilizan algunos profesionales
es calcular el 'hash' MD5 y el SHA-1 de una misma evidencia.
Ambos son potencialmente débiles, pero es probabilísticamente
descartable que ambos algoritmos puedan colisionar con la misma
fuente de datos. Así que este es un pequeño truco que puede
usarse si el cálculo de un SHA-2 o 3 tarda más que la suma del
tiempo de calcular MD5 y SHA-1.
#Hashing en herramientas de informática forense
Muchas herramientas de "software" forenses actuales incluyen
funcionalidades de "hashes", incluso las clonadoras
profesionales lo calculan y verifica. El objetivo es validar y
verificar las copias de las evidencias. Entre estas herramientas
podemos encontrar para calcular "hashes" de imágenes de discos
una de las más usadas que es FTK Imager. Se trata de una
herramienta comercial, aunque de distribución gratuita, de la
empresa Access Data, pero es muy popular. Además de esta existen
otras muchas herramientas tanto comerciales como "open source",
incluso disponemos de herramientas nativas que nos pueden
resolver esta tarea en distintos sistemas operativos. En Windows
tenemos que recurrir a PowerShell porque en principio no hay
herramientas nativamente instaladas. En PowerShell tenemos el
comando 'Get-FileHash'. También existe la herramienta de
Microsoft File Integrity Check Value, que podemos descargar de
la plataforma de Microsoft. En Linux tenemos los comandos
'md5sum' y 'sha1sum'. Y en macOS podemos usar los comandos 'md5'
y 'shasum'. Estamos en Windows 10 y vamos a ir a la web de
Access Data a la zona de Descargas, en Product Download y vamos
a buscar FTK Imager. Seleccionamos Download Page y descargamos
la última versión disponible. Nos solicitan una serie de datos
que debemos rellenar. Yo ya he completado los datos del
formulario y he recibido un "email" con el enlace de descarga
que he copiado en el escritorio, así que podemos cerrar el
navegador y ejecutar el programa de instalación de FTK Imager.
Le damos los privilegios de administración y ejecutamos el
instalador. Aceptamos la licencia del fabricante, aceptamos la
localización por defecto y le damos a Instalar. Y directamente
abrimos el "software". Aquí en el escritorio, 'usb.dd', tenemos
una imagen de una memoria USB. Podemos ir a File, Add Evidence
Item y podemos decir que vamos a agregar una imagen. Indicamos
el origen de esa imagen, está en el escritorio, y terminamos. Si
hacemos clic derecho sobre la imagen, podemos dar a Verificar
disco o imagen y calculará el 'hash'. en este caso nos da el MD5
y SHA-1. Aquí tenemos los valores. Podemos cerrar. Y otra opción
es eliminar esta evidencia y añadir una nueva evidencia, esta
vez a partir de una unidad de disco. Le damos a Siguiente e
indicamos la memoria USB directamente que está conectada al PC.
Le damos a Finalizar y le damos a Verificar imagen. Esta vez va
a tardar un poco más en verificar la imagen porque esta
cargándola directamente desde la memoria USB, en lugar de un
archivo que ya es una imagen. Y de nuevo tenemos en pantalla los
"hashes". Vamos a guardar, por ejemplo, este, el MD5. Nuevo,
Archivo de texto, 'usb -hash' y pegamos el valor. Archivo,
Guardar. Podemos cerrar esta opción. Otra opción que tenemos es
de los archivos que hay contenidos en la unidad podemos montar
unidades: Export files, Export Files List... Podemos incluir
unidades alternativas o incluir archivos alternativos. Podemos
dar File, Add Evidence Item, Contenido de una carpeta, y podemos
seleccionar directamente la unidad. en este caso agregará todo
el contenido de la misma memoria USB. Aquí podemos ver los
archivos. Si seleccionamos algunos de ellos, podemos hacer clic
derecho y Export File Hash List, lo exportamos al escritorio con
el nombre 'hashes', y lo que está haciendo es calcular el 'hash'
de cada uno de esos archivos. Si ahora abrimos este archivo,
está en formato CSV para que lo podemos abrir con una hoja de
cálculo. Tenemos el MD5, el SHA1 y el nombre del archivo. Así
tenemos un 'hash', el otro 'hash' –el de SHA1– y a continuación
el nombre del archivo para todos los archivos que formasen parte
de esa evidencia. Otra opción que podemos utilizar para calcular
el 'hash' es PowerShell. Abrimos PowerShell y vamos a ejecutar
el comando 'Get- FileHash' del archivo '/Dekstop/ usb.dd' con el
algoritmo 'MD5'. Y vamos a usar un "pipe" o conector 'Format-
List', que es para elegir el formato por el que presentará la
salida en pantalla. Ejecutamos. Mientras tanto nos está
calculando el 'hash' de este archivo, 'usb.dd'. Si abrimos el
archivo donde guardamos el 'hash', vemos que es exactamente el
mismo: 5C76E, 5C76E, habiéndolo calculado a partir de la imagen
que ya habíamos tomado y a partir de la memoria directamente USB
con FTK Imager. Así que podemos concluir que esta imagen
original que teníamos en el disco duro era una copia exacta a la
memoria USB que posteriormente hemos conectado.
#Entender el montaje de unidades en Linux
Vamos a explicar en qué consiste el proceso de montar o
desmontar una partición en Linux. Montar, o "mount" en inglés,
es el proceso que se realiza para que al conectar una unidad de
almacenamiento a una computadora el sistema operativo pueda
reconocer sus particiones y por lo tanto pueda acceder a leer o
escribir archivos. Desmontar es lo contrario, es desvincular la
partición del sistema operativo de forma que no pueda ser leída
ni escrita. Por lo general, los sistemas operativos actuales
montan o desmontan automáticamente las particiones de las
unidades físicas que conectamos, pero en informática forense eso
no es lo más conveniente, y por eso estamos repasando estos
conceptos. El término de montar se usa principalmente en
entornos Unix, especialmente Linux, y en base a la arquitectura
Linux desarrollaremos la explicación. El punto de montaje es el
directorio de la estructura de archivos del sistema operativo
que se asocia a una partición concreta, es decir, que desde el
punto de vista del sistema la partición contenida en, por
ejemplo, una memoria USB es un directorio aunque al usuario se
le pueda representar de una forma más amigable y accesible. Así
que cuando accedemos a los subdirectorios de ese punto de
montaje estamos accediendo a los directorios y archivos
contenidos en la partición que hemos montado. Estamos en Ubuntu
y lo que vamos a hacer a continuación es abrir un terminal y
después vamos a conectar una memoria USB al sistema. Como vemos,
Ubuntu es un sistema operativo para usuarios y al conectar la
memoria USB directamente ha abierto un explorador de archivos y
ha montado la unidad. Podemos ver su contenido. Lo que nosotros
vamos a hacer es ir de nuevo al terminal y ejecutar el comando
'sudo' para hacerlo como administradores, 'fdisk -l' para ver la
lista de unidades. Nos solicita la contraseña de administrador y
vemos que tenemos dos grupos: el grupo 'sda' que tiene 20 G, y
el grupo 'sdb' de 7,6 GB. El primer grupo es el correspondiente
al disco sobre el que está instalado el sistema operativo.
Tenemos Linux, la partición extendida, y el 'swap' para
intercambio de información. Y la unidad USB es el 'sdb' que
tiene 7,6 GB. Si queremos desmontar esta unidad, ejecutamos el
comando 'umount' e indicamos la partición que queremos
desmontar. en este caso '/dev /sdb1'. Recordemos que 'sdb' es la
unidad física que hemos conectado y 'sdb1' es la partición
concreta. en este caso es un disco que tiene una única
partición. Ejecutamos el comando y no muestra nada más. Si
volvemos a ejecutarlo, nos dirá que la unidad ya no está
montada. Para comprobarlo volvemos a la ventana del explorador
de archivos y vemos que ya no se muestra. Sigue mostrando la
unidad porque el sistema detecta que está conectada, pero no
está montada.
#Montar una partición en Linux
Estamos de nuevo en Ubuntu para montar una unidad, en este caso
una memoria USB que tenemos conectada al PC. Para empezar lo que
necesitamos es un punto de montaje. Vamos a ir al escritorio,
'Escritorio', y vamos a crear un directorio que va a ser
'mkdir'. Para crear el directorio, 'usb' como nombre del
directorio. Si hacemos 'dir', tenemos el directorio 'cd usb'.
Vemos si tiene algo y no tiene nada. Volvemos atrás. Ahora para
montar la unidad primero tenemos que ver qué particiones tenemos
disponibles para montar, qué discos hay conectados a nuestro
sistema. Entonces ejecutamos 'sudo fdisk -l' y vemos que tenemos
las particiones del disco por defecto de la máquina donde está
instalado el sistema operativo, y tenemos una unidad 'usb' que
está en 'sdb' y las particiones 'sdb1'. Así que podemos ejecutar
'sudo mount -t', el formato vfat 32/dev/sdb1', y el punto de
montaje va a ser en el escritorio, que es donde estamos, en el
directorio 'usb'. Me indica que hay un error y es que no
reconoce el tipo de formato de arquitectura de archivos que le
he indicado. El formato correcto es 'vfat'. Ejecuto el comando,
y ahora si accedo a 'cd usb' puedo entrar. Y si ahora hago 'ls -
la' para mostrar de forma ordenada los archivos y con toda la
información, vemos que efectivamente están todos los archivos de
la memoria USB. Podemos verlo también si abrimos el explorador
de archivos y vemos que aparece la opción de desmontar desde la
interfaz del explorador de archivos. Podemos comprobar que estos
archivos se corresponden con los que vemos en el terminal. De
esta manera podemos montar o desmontar una unidad en el
directorio que nosotros escojamos. en este caso lo hemos montado
en el escritorio, en el directorio 'usb', como podemos ver en el
"prompt". Aquí. Si volvemos atrás, podemos volver a desmontarlo:
'sudo umount /dev/sdb1'. Ha quedado desmontado y si volvemos al
directorio ya no aparece, aparece la unidad, pero no nos permite
desmontarla, no muestra su contenido. Si quisiésemos montar la
unidad como solo lectura, volveríamos al terminal y
ejecutaríamos 'sudo mount -o ro' de "read only", e indicaríamos
que sería '/dev/sdb1' en './usb', que es el ejemplo que hemos
puesto. La unidad está montada. Podemos ir al explorador de
archivos. Tenemos la unidad montada, pero vemos que aparece en
todos el candado, no podemos editar. Sin embargo, podemos abrir
sin problemas. De esta manera podemos elegir si montamos
unidades como solo lectura o de manera normal tan solo añadiendo
el comando '-o ro', la opción '-o ro', al comando 'mount'.
*¿Cuántos tipos de bloqueadores de escritura de datos existen? 2
*¿Qué clave nueva debemos crear dentro del apartado Control, en
el registro de Windows, para evitar la escritura en una llave
USB? StorageDevicePolicies
*Conociendo el hash, no podemos obtener los datos de origen .
*¿Qué comando podemos usar para calcular hashes de imágenes de
discos en MacOS? md5 o shasum
*Cada partición se monta como un subdirectorio de la estructura
de ficheros del sistema operativo de la computadora
*¿Qué modificador debemos cargar en el terminal de Ubuntu
después de sudo mount, para montar una unidad como solo lectura?
"ro"