Caine Manual

June 13, 2024 | Author: Anonymous | Category: N/A
Share Embed Donate


Short Description

Download


Description

Machine Translated by Google

La aplicación de la ley y forense Introducción del examinador a Linux

Una guía completa para profesionales de Linux como plataforma de análisis forense digital

Versión 4.95.1 Septiembre 2021 Barry J Grundy

Machine Translated by Google

Versión 4.95.1

Introducción a Linux para los forenses y encargados de hacer cumplir la ley

Contenido legalidades

8

Agradecimientos

8

Prefacio

10

Una palabra sobre GNU en "GNU/Linux"

11

¿Por qué aprender Linux?

12

¿Dónde están todas las herramientas GUI?

13

Los ejercicios prácticos

13

Convenciones utilizadas en este documento

14

1 Instalación

15 . ...

. ....

. ...

. ...

.

. ...

. ....

. ...

. ...

. . . 17

. ...

. ...

. ....

. ...

. ...

. . . 18

1.4 Notas de instalación de Slackware. . . . . . .

. ...

. ....

. ...

. ...

. . . 18

1.5 Usuarios del Sistema. . . . . .

....

. ...

. ....

. ...

. ...

. . . 20

1.5.1 Adición de un usuario normal. . . . . .

. ...

. ....

. ...

. ...

. . . 20

. ...

. ...

. ....

. ...

. ...

. . . 21

. ....

....

. ...

. ....

. ...

. ...

. . . 22

. ....

....

. ...

. ....

. ...

. ...

. . . 23

...

. ...

. ....

. ...

. ...

. . . 24

. ...

. ...

. ....

. ...

. ...

. . . 24

1.1 Distribuciones. .

. ...

. ....

....

1.2 SLACKWARE y uso de esta guía. . 1.3 Métodos de instalación. .

. ....

. ....

1.5.2 El superusuario [raíz] . . 1.6 Entorno de escritorio. . 1.7 El núcleo de Linux.

...

1.8 Interacción entre el núcleo y el hardware.

1.8.1 Configuración del hardware.

1

. . dieciséis

Machine Translated by Google

Versión 4.95.1

Introducción a Linux para los forenses y encargados de hacer cumplir la ley

1.8.2 Módulos del núcleo. . . . . .

. ...

1.8.3 Dispositivos Hotplug y UDEV. . .

. ...

. ....

. ...

. ...

. . . 25

. ...

. ....

. ...

. ...

. . . 27

28

2 Discos, particiones y el sistema de archivos de Linux . ....

. ...

. ...

. . . 28

2.2 Asignación de nodos de dispositivos: una mirada más cercana. . . . . . . .

. ...

. ...

. . . 31

2.3 El Sistema de Archivos. . . . .

2.1 Discos. .

. ....

. ...

. ....

. ....

....

. ...

....

. ...

. ....

. ...

. ...

. . . 34

2.4 Montaje de sistemas de archivos externos. . . . .

. ...

. ....

. ...

. ...

. . . 37

. ...

. ....

. ...

. ...

. . . 37

2.4.2 La tabla del sistema de archivos (/etc/fstab) . . . . . . . .

. ...

. ...

. . . 40

2.4.3 Montaje del espacio de usuario. . . . . . .

. ...

. ...

. . . 41

2.4.1 El comando de montaje . . .

. ...

. ...

. ....

3 comandos básicos de Linux

46 . ....

3.1 Navegación muy básica.

. ...

3.1.1 Comandos útiles adicionales. .

. ...

. ....

. ...

. ...

. . . 46

. ...

. ....

. ...

. ...

. . . 48

3.2 Permisos de archivo. . . . .

. ....

. ...

. ...

. ....

. ...

. ...

. . . 50

3.3 Tuberías y redirección.

. ....

. ...

. ...

. ....

. ...

. ...

. . . 52

3.4 Atributos de archivo. . . . .

. ....

....

. ...

. ....

. ...

. ...

. . . 54

3.5 Matemáticas de línea de comandos. . . . . . .

. ...

. ...

. ....

. ...

. ...

. . . 56

3.5.1 bc - la calculadora básica.

. ...

. ...

. ....

. ...

. ...

. . . 56

. ....

. ...

. ...

. . . 58

3.5.2 Bash Shell - Expansión aritmética. . . 3.6 Golpe 'globoso'.

. ...

. ....

3.7 Revisión de comandos y sugerencias. . .

. ...

. ...

. ....

. ...

. ...

. . . 59

. ...

. ...

. ....

. ...

. ...

. . . 59

60

4 Edición con Vi 4.1 La Alegría que es vi . . .

. ....

. ...

2

. ...

. ....

. ...

. ...

. . . 60

Machine Translated by Google

Versión 4.95.1

Introducción a Linux para los forenses y encargados de hacer cumplir la ley

. ....

. ...

. ...

. ....

. ...

. ...

. . . 60

4.3 vi Resumen de comandos. . . . . .

. ...

. ...

. ....

. ...

. ...

. . . 61

4.2 El tutorial de vimtutor .

63

5 La secuencia de arranque de Linux (simplificada)

5.1 Init frente a Systemd. . . .

. ....

....

. ...

. ....

. ...

. ...

. . . 63

5.2 Arrancando el Kernel. . .

. ....

. ...

. ...

. ....

. ...

. ...

. . . 63

5.3 Inicialización del sistema. . . . . . .

. ...

. ...

. ....

. ...

. ...

.

. . sesenta y cinco

....

. ....

....

. ...

. ....

. ...

. ...

.

. . sesenta y cinco

5.5 Guiones de inicio globales. . . . . .

. ...

. ...

. ....

. ...

. ...

. . . 66

5.6 Guiones de inicio del servicio. . . . . .

....

. ...

. ....

. ...

. ...

. . . 67

....

. ...

. ...

. ....

. ...

. ...

. . . 68

5.4 Nivel de ejecución.

5.7 Golpe . . .

. ...

. ...

. ....

69

6 conceptos básicos de red de Linux

. ....

. ...

. ...

. ....

. ...

. ...

. . . 69

6.1.1 Adaptador Ethernet [ethX] .

. ...

. ...

. ....

. ...

. ...

. . . 70

6.1.2 Adaptador inalámbrico [wlanX] . . . . .

. ...

. ....

. ...

. ...

. . . 70

6.1.3 Interfaz de bucle invertido [lo] . . . . . .

. ...

. ....

. ...

. ...

. . . 70

6.1.4 Nomenclatura de interfaz persistente. . . . . . .

. ....

. ...

. ...

. . . 70

. ...

. ....

. ...

. ...

. . . 71

. ...

. ....

. ...

. ...

. . . 71

...

. ...

. ....

. ...

. ...

. . . 74

. ...

. ...

. ....

. ...

. ...

. . . 74

. ....

. ...

. ....

6.1 Interfaces de red. . .

6.2 Configuración de la red.

. ....

. ...

6.2.1 Configuración inicial de la red. . 6.3 Encontrarse a sí mismo en la red. 6.3.1 ¿Cuál es mi IP? .

. ....

6.4 Revisión de conexiones y puertos de red. . .

. . 77

80

7 Con guración de una estación de trabajo forense 7.1 Protección de la estación de trabajo. . . . .

. ...

3

. ...

. ....

. ...

. ...

. . . 80

Machine Translated by Google

Versión 4.95.1

Introducción a Linux para los forenses y encargados de hacer cumplir la ley

7.1.1 Con guración de servicios de inicio. . . . . . .

. ....

. ...

. ...

7.1.2 Control de acceso basado en host. . . .

. ....

. ...

. ....

7.1.3 Servidor de seguridad basado en host con iptables . . . . . . . .

. ...

. ...

. . . 86

. ...

. . . 81 . . 83

7.2 Actualización del Sistema Operativo. . . . .

. ...

. ....

. ...

. ...

. . . 90

. ...

. ...

. ....

. ...

. ...

. . . 90

7.2.2 slackpkg para actualizaciones automáticas. . . . .

. ....

. ...

. ...

. . . 91

7.3 Instalación y actualización de software "externo". .

. ....

. ...

. ....

7.3.1 Compilación desde el origen. . . . . .

. ...

. ....

. ...

. ...

. . . 93

7.3.2 Uso de paquetes de distribución. . .

. ...

. ....

. ...

. ...

. . . 95

. ....

. ...

. ....

. . 96

. ...

. . . 100

7.2.1 Pkgtools de Slackware . . .

7.3.3 Creación de paquetes con SlackBuilds. . .

7.3.4 Uso de la herramienta de paquetes automatizados sbotools . . . . . . .

. . 93

106

8 Linux y análisis forense

8.1 Adquisición de pruebas. .

. ....

....

. ...

. ....

. ...

. ...

. . . 106

8.2 Organización del análisis.

. ....

. ...

. ...

. ....

. ...

. ...

. . . 107

8.3 Bloqueo de escritura. . . . .

. ....

. ...

. ...

. ....

. ...

. ...

. . . 109

8.4 Examen de la información de los medios físicos. . . . .

. ....

. ...

. ...

. . . 110

8.5 Medios de hashing. . . . .

. ...

. ....

. ...

. ...

. . . 115

8.6 Recopilación de una imagen forense con dd . . . . . . .

. ....

. ...

. ...

. . . 116

. ....

. ...

. ...

. ...

. ....

. ...

. ...

. . . 119

8.7 Herramientas de imágenes alternativas. . . . . . . .

. ...

. ....

. ...

. ...

. . . 122

. ...

. ...

. ....

. ...

. ...

. . . 123

. ...

. ...

. ....

. ...

. ...

. . . 130

8.7.3 Errores de medios: ddrescue . . . . .

. ...

. ....

. ...

. ...

. . . 140

. ...

. ....

. ...

. ...

. . . 149

8.6.1 dd y división de imágenes .

8.7.1 dc3dd . . .

. ...

. ....

8.7.2 libewf y ewfacquire . .

8.8 Imágenes por cable.

. ....

. ...

4

Machine Translated by Google

Versión 4.95.1

Introducción a Linux para los forenses y encargados de hacer cumplir la ley

....

. ...

. ...

. ....

. ...

. ...

. . . 151

. ...

. ...

. ....

. ...

. ...

. . . 153

...

. ....

. ...

. ...

. . . 154

...

. ....

. ...

. ...

. . . 157

8.9.1 Compresión sobre la marcha con dd . . . . .

. ....

. ...

. ...

. . . 158

8.10 Preparación de un disco para la imagen sospechosa: limpieza. . . . .

. ...

. ....

. . 163

8.11 Palabras finales sobre imágenes . . . . .

. ...

. ...

. ....

. ...

. ....

. . 166

. ....

. ...

. ...

. ....

. ...

. ...

. . . 166

8.12.1 Estructura de la Imagen. .

. ...

. ...

. ....

. ...

. ...

. . . 166

8.12.2 Identificación de sistemas de archivos.

. ...

. ...

. ....

. ...

. ...

. . . 168

8.12.3 El dispositivo de bucle. . . . .

. ...

. ...

. ....

. ...

. ...

. . . 170

8.12.4 Opción de bucle al comando de montaje. .

. ....

. ...

. ....

. ....

. ...

. ...

. . . 171

8.12.6 Montaje de imágenes de disco completas con losetup . . . . .

. ...

. ...

. . . 173

8.12.7 Montaje de imágenes de múltiples particiones con losetup -P . . . .

. ...

. . . 176

8.12.8 Montaje de archivos de imagen dividida con affuse . . . . . .

. ...

. ...

. . . 178

8.12.9 Montaje de archivos EWF con ewfmount . . . . . . . .

. ...

. ...

. . . 183

. ....

. ...

. ...

. . . 186

8.13.1 Antivirus: exploración de la evidencia con clamav .

. ...

. ...

. . . 186

8.8.1 Sobre el cable - dd . 8.8.2 Por cable - dc3dd . .

8.8.3 Por cable: ewfacquirestream . 8.9 Compresión: local y por cable.

8.12 Montaje de pruebas . . .

8.12.5 perder la configuración .

8.13 Análisis básico. .

. ...

. ...

. ....

. ....

. ...

. ...

. ...

. ...

8.13.2 Revisión de datos básicos en la línea de comandos. . . . . . . . 8.13.3 Elaboración de una lista de tipos de archivos. . . 8.13.4 Visualización de archivos. .

. ....

. ...

. ....

. . 190

. ...

. ....

. ...

. ...

. . . 197

. ...

. ....

. ...

. ...

. . . 198

8.13.5 Búsqueda de texto en todas las áreas de la imagen forense. . . . . . . .

5

. . 170

. . 201

Machine Translated by Google

Introducción a Linux para los forenses y encargados de hacer cumplir la ley

Versión 4.95.1

206

9 Análisis forense avanzado (principiante) 9.1 Manipulación y análisis de archivos.

. ...

. ...

. ....

. ...

. ...

. . . 206

9.2 Diversión con dd . . . . . . .

. ...

. ...

. ....

. ...

. ...

. . . 213

. ...

. ...

. ....

. ...

. ...

. . . 214

...

. ...

. ....

. ...

. ...

. . . 217

9.2.3 Reconstrucción de un sistema de archivos de materias (Linux) . . . . . .

. ...

. . . 221

. ....

9.2.1 Talla de datos con dd . . . 9.2.2 Particiones talladas con dd .

225

10 herramientas de análisis avanzadas

10.1 El enfoque de capas para el análisis. . . . . 10.2 El kit de detective.

. ...

. ....

....

10.2.1 Instalación del kit de detección. . . . . . 10.3 Ejercicios del equipo de detectives . . . . . . .

....

. ...

. ....

. ...

. ...

. . . 226

. ...

. ....

. ...

. ...

. . . 228

. ...

. ....

. ...

. ...

. . . 230

. ...

. ....

. ...

. ...

. . . 231

10.3.1 Sleuth Kit Ejercicio 1A: Identificación y recuperación de archivos eliminados (ext2) 232 10.3.2 Sleuth Kit Ejercicio 1B: Identificación y recuperación de archivos eliminados (ext4) 242

10.3.3 Sleuth Kit Ejercicio 2A: Búsqueda de cadenas físicas y estado de asignación (ext2) . .

. ...

. ....

....

. ...

. ....

. ...

. ...

. . . 247

10.3.4 Sleuth Kit Ejercicio 2B: Búsqueda de cadenas físicas y estado de asignación (ext4) . .

. ...

. ....

....

. ...

. ....

. ...

. ...

. . 257

10.3.5 Ejercicio 3 del kit de detectives: Extracción y examen no asignados . .

10.3.6 SleuthKit Ejercicio 4: Examen NTFS - Análisis de archivos . 10.3.7 Sleuth Kit Ejercicio 5: Examen NTFS de ADS . . .

. . . 254

...

. . . 262

. ...

. . . 268

10.3.8 Sleuth Kit Ejercicio 6: Búsqueda de cadenas físicas y estado de asignación (NTFS) .

. ...

. ....

....

. ...

10.4 bulk_extractor : búsqueda completa. . .

. ....

. ...

. ...

. . . 272

. ....

. ...

. ...

. . . 277

...

. ....

. ...

. ...

. ....

. ...

. ...

. . . 285

. ...

. ....

. ...

. ...

. ....

. ...

. ...

. . . 285

10.5.2 fotograbación . . . . .

. ....

. ...

. ...

. ....

. ...

. ...

. . . 294

10.5 Talla física. 10.5.1 bisturí .

6

Machine Translated by Google

Versión 4.95.1

Introducción a Linux para los forenses y encargados de hacer cumplir la ley

. ...

. ....

. ....

. ...

. ...

10.6.1 Ejercicio de análisis de registro 1: UserAssist . . . . . .

. ...

. ....

. . 304

10.6.2 Ejercicio de análisis de registro 2: SAM y cuentas .

. ...

. ....

. . 310

10.6.3 Análisis de aplicaciones: captación previa . . . . . .

. ...

. ...

10.5.3 Comparación y deduplicación de la salida Carve. . 10.6 Análisis de aplicaciones. . . . . . .

. ...

. ...

. ....

. . 301 . . . 303

. . . 314

317

11 herramientas básicas de investigación de redes

11.0.1 Búsqueda de direcciones IP . . . . . . . .

. ...

. ....

. ...

. ...

. . . 317

. ...

. ...

. ....

. ...

. ...

. . . 319

. ....

. ...

. ...

. ....

. ...

. ...

. . . 320

11.2 Búsqueda de direcciones MAC. . . . . .

. ...

. ...

. ....

. ...

. ...

. . . 321

11.0.2 Búsqueda de intercambio de correo. .

11.1 Datos Whois. . .

. ...

12 Integración de Linux con su trabajo

323

13 Conclusión

328

14 Soporte Linux

329

14.1 Lugares a los que acudir para recibir asistencia.

....

. ...

. ...

. ....

. ...

. ....

. . 329

Lista de Figuras

329

Lista de ejemplos de comandos

332

7

Machine Translated by Google Versión 4.95.1

Introducción a Linux para los forenses y encargados de hacer cumplir la ley

legalidades Todas las marcas registradas son propiedad de sus respectivos dueños. © 1998-2020 Barry J. Grundy ([email protected]): Este documento se puede redistribuir, en su totalidad, incluida la totalidad de este aviso de derechos de autor, sin consentimiento adicional si el redistribuidor no recibe remuneración y si el redistribuidor utiliza estos materiales para ayudar y/o capacitar a miembros de las fuerzas del orden público o profesionales de seguridad/respuesta a incidentes. De lo contrario, estos materiales no pueden redistribuirse sin el consentimiento expreso por escrito del autor, Barry J. Grundy.

Agradecimientos Como siempre, no hay forma posible de agradecer a todos los que se lo merecen. A lo largo de los años he aprendido mucho de tantos. Una publicación de blog aquí, un correo electrónico devuelto allí. Ayuda en IRC, foros en línea y colegas en la oficina. Las contribuciones que recibo de otros en el campo que toman tiempo de sus propios días ocupados para ayudarme a crecer como investigador y examinador forense, son simplemente demasiado numerosas para catalogarlas. Mi más sincero agradecimiento a todos. La lista de colegas que han contribuido durante muchos años ha crecido. Sigo agradecido a todos los que han dedicado su tiempo a revisar y brindar comentarios valiosos y, en algunos casos, un simple estímulo para todas las versiones de esta guía a lo largo de los años. Mi continuo agradecimiento a Cory Altheide, Brian Carrier, Christopher Cooper, Nick Furneaux, John Garris, Robert Jan Mora y Jesse Kornblum por ayudarme a sentar las bases de esta guía. Y por la asistencia más reciente, me gustaría agradecer a Jacques Boucher, Tobin Craig, Simson Garnkel, Andreas Guldstrand, Bill Norton, Paul Stephens, Danny Werb y Robby Workman.

Un agradecimiento especial al Dr. Nhien An Le Khac por proporcionar la motivación para actualizar continuamente esta guía durante los últimos dos años. Mi continuo agradecimiento al Kernel de Linux, varios equipos de desarrollo de software y distribución por su arduo trabajo para proporcionarnos un sistema operativo y utilidades que son robustos y controlables. ¿Qué horrores estaría viviendo sin su dedicación? El logotipo de LinuxLEO fue diseñado por Laura Etter ([email protected]). Finalmente, no puedo dejar de agradecer a mi esposa Jo y a mis hijos Patrick y Tommy por la aparentemente interminable paciencia mientras se realizaba el trabajo.

8

Machine Translated by Google Versión 4.95.1

Introducción a Linux para los forenses y encargados de hacer cumplir la ley

Prefacio La primera versión de esta guía se publicó en el sitio FTP de la Academia de Capacitación del Oficial de la Paz de Ohio en 1999. Desde entonces, hemos visto cambios significativos en nuestra profesión y un crecimiento masivo en el desarrollo de software y técnicas utilizadas para descubrir evidencia. de un universo de dispositivos en constante expansión. El propósito de este documento, sin embargo, permanece sin cambios. Aquí buscamos proporcionar una guía accesible y fácil de seguir para los examinadores forenses en todo el espectro de esta disciplina forense; agentes del orden público, personal de respuesta a incidentes y todos los especialistas informáticos responsables de la investigación de pruebas digitales. Esta guía continúa brindando una descripción general introductoria del sistema operativo GNU/Linux (Linux) como plataforma forense. Sobre todo, esta sigue siendo una guía para principiantes. Una introducción. No pretende ser un curso completo sobre la realización de exámenes forenses. Este documento trata sobre las herramientas y los conceptos utilizados para emplearlas. Los presento, brindo una guía simple sobre su uso y algunas ideas sobre cómo pueden integrarse en un laboratorio forense digital moderno o en un proceso de investigación. Esta es también una guía práctica. Es la mejor manera de aprender y cubriremos tanto las utilidades básicas de GNU/Linux como el software especializado a través de ejercicios breves. El contenido está destinado a ser de nivel "principiante", pero a medida que la comunidad informática forense evoluciona y el tema se amplía y se vuelve más convencional, la definición de material de nivel "principiante" comienza a desdibujarse. Esta guía hace un esfuerzo por mantener el material lo más básico posible sin omitir aquellos temas que se consideran fundamentales para la comprensión adecuada de Linux y su potencial como plataforma forense digital. Si ha estado haciendo exámenes forenses durante cinco o diez años, pero nunca profundizó en Linux, entonces esto es para usted. Si es estudiante universitario y está interesado en cómo se emplean las herramientas forenses, pero no puede pagar miles de dólares en licencias... entonces esto es para usted. Sin embargo, esto de ninguna manera pretende ser el "cómo hacer" definitivo sobre los métodos forenses que utilizan Linux. Más bien, es un punto de partida (algo ampliado) para aquellos que están interesados en seguir la autoeducación necesaria para dominar el uso de Linux como herramienta de investigación. No todos los comandos que se ofrecen aquí funcionarán en todas las situaciones, pero al describir los comandos básicos disponibles para un investigador espero "hacer que la pelota empiece a rodar". Presentaré los comandos, el lector necesita hacer un seguimiento de las opciones y usos más avanzados. Saber cómo funcionan estos comandos es tan importante como saber qué escribir en el indicador. Incluso si usted es un usuario intermedio de Linux, se revisará gran parte del contenido de estas páginas. Aún así, espero que encuentre algo útil. GNU/Linux es un sistema operativo en constante evolución. Las distribuciones van y vienen, y ahora hay una serie de versiones de Linux "destacadas" que se usan comúnmente. Además de equilibrar la naturaleza de principiante del contenido de esta guía con los estándares avanzados en educación forense, también me encuentro tratando de equilibrar el nivel de detalle requerido para enseñar tareas útiles con la naturaleza específica de distribución de muchos de los comandos y con guraciones utilizadas.

9

Machine Translated by Google Versión 4.95.1

Introducción a Linux para los forenses y encargados de hacer cumplir la ley

Como discutiremos con más detalle más adelante en esta guía, muchos de los detalles son especí cos a un tipo de Linux. En la mayoría de los casos, los comandos son bastante portátiles y funcionarán en la mayoría de los sistemas. En otros casos (administración de paquetes y edición de la configuración, etc.) es posible que deba investigar un poco para determinar qué debe hacerse en la plataforma de su elección. La determinación de proporcionar detalles especí cos sobre la configuración real de un sistema especí co surgió a través de una abrumadora solicitud de orientación. La decisión de usar mi distribución de Linux preferida para análisis forense como ejemplo es personal. A lo largo de los años, he escuchado de colegas que probaron Linux instalándolo y luego procedieron a sentarse y preguntarse "¿qué sigue?". También he considerado una serie de solicitudes y sugerencias para una exploración más amplia de las herramientas y utilidades disponibles para Linux para el análisis forense a nivel de aplicación. Más recientemente, ha habido numerosas solicitudes de pautas de configuración para una estación de trabajo Linux básica. Usted tiene una copia de esta introducción. Ahora descargue los ejercicios y siga conduciendo. Este es solo el comienzo de su lectura. Si se utiliza correctamente, esta guía debería generar muchas más preguntas y poner en marcha su aprendizaje. En los años transcurridos desde que se publicó por primera vez este documento, han surgido varios libros excelentes con muchos más detalles que cubren herramientas de código abierto y análisis forense de Linux. Todavía me gusta pensar que esta guía será útil para algunos. Como siempre, estoy abierto a sugerencias y críticas. Mi información de contacto está en la primera página. Si tiene ideas, preguntas o comentarios, no dude en enviarme un correo electrónico. Cualquier comentario es bienvenido. Este documento se actualiza ocasionalmente. Busque versiones más nuevas (numeradas en la primera página) en el sitio oficial:

https://www.LinuxLEO.com

10

Machine Translated by Google Versión 4.95.1

Introducción a Linux para los forenses y encargados de hacer cumplir la ley

Una palabra sobre GNU en "GNU/Linux" Cuando hablamos del sistema operativo "Linux", en realidad estamos hablando del sistema operativo (OS) GNU/ Linux. Linux en sí mismo no es un sistema operativo. Es solo un núcleo. El sistema operativo es en realidad una combinación del kernel de Linux y las utilidades de GNU que nos permiten a nosotros y a nuestro hardware interactuar con el kernel. Es por eso que el nombre correcto para el sistema operativo es "GNU/Linux". Lo llamamos (incorrectamente) "Linux" por conveniencia.

¿Por qué aprender Linux? Una de las preguntas más frecuentes es: "¿Por qué debo usar Linux cuando ya tengo [insertar aquí la herramienta forense de la GUI de Windows]?" Hay muchas razones por las que Linux está ganando terreno rápidamente como plataforma forense. Espero que este documento ilustre algunos de esos atributos.

En resumen, incluso si es un usuario experimentado del sistema operativo convencional, ya sea Mac o Windows, Linux ofrece una forma alternativa y completamente única de abordar su flujo de trabajo forense. No solo el entorno es diferente de lo que usted puede estar acostumbrado, sino que la forma en que trabaja también puede ser una desviación completa de lo que está acostumbrado, si tiene la paciencia y el coraje para permitir que sea diferente. En muchos casos, con un poco de esfuerzo inicial, su flujo de trabajo puede ser exponencialmente más eficiente.

Control: no solo sobre su software forense, sino sobre todo el sistema operativo y el hardware adjunto. Flexibilidad: arranque desde un CD (a un sistema operativo completo), compatibilidad con el sistema de archivos, compatibilidad con la plataforma,

etc. Poder: una distribución de Linux es (o puede ser) una herramienta forense.

Otro punto a destacar es que el simple hecho de saber cómo funciona Linux se está volviendo cada vez más importante. Si bien muchos de los paquetes forenses basados en Windows que se usan hoy en día son totalmente capaces de examinar los sistemas Linux, no se puede decir lo mismo de los examinadores. A medida que Linux se vuelve más y más popular, tanto en el mundo comercial como entre los usuarios de escritorio, la posibilidad de que un examinador encuentre un sistema Linux en un caso se vuelve más probable (especialmente en investigaciones de redes). Incluso si elige utilizar una herramienta forense de Windows para realizar su análisis, al menos debe estar familiarizado con el sistema operativo que está examinando. Si no sabes lo que es normal, ¿cómo sabes lo que no pertenece? Esto es cierto en muchos niveles, desde el contenido real de varios directorios hasta entradas extrañas en archivos de configuración, hasta cómo se almacenan los archivos. Si bien este documento se trata más de Linux como una herramienta forense en lugar de un análisis de Linux, aún puede aprender mucho sobre cómo funciona el sistema operativo si lo usa.

11

Machine Translated by Google Versión 4.95.1

Introducción a Linux para los forenses y encargados de hacer cumplir la ley

También está la cuestión de la verificación cruzada. Un conocimiento práctico de Linux y su utilidad forense puede proporcionar al examinador herramientas alternativas en una plataforma alternativa. Estos pueden usarse como un método para verificar los hallazgos de otras herramientas en otros sistemas operativos. Muchos examinadores han pasado incontables horas aprendiendo y usando las herramientas forenses comunes de Microsoft Windows estándar de la industria. Sería poco realista pensar que la lectura de esta guía le dará a un examinador el mismo nivel de confianza, a veces construido a través de años de experiencia, que tienen con sus herramientas tradicionales de elección. Lo que puedo esperar es que esta guía brinde suficiente información para brindar al examinador "otra herramienta para la caja de herramientas", ya sea imágenes, recuperación o examen de evidencia. Linux como plataforma forense alternativa proporciona una forma perfecta de cotejar su trabajo y verificar sus resultados, incluso si no es su elección principal.

También debemos considerar la utilidad de Linux en aplicaciones académicas y de investigación. La naturaleza abierta de Linux y la plétora de utilidades útiles incluidas en un sistema base lo convierten en una plataforma casi hecha a medida para análisis forense digital básico. Esto es especialmente cierto en un entorno académico donde encontramos que Linux proporciona una solución de bajo costo para permitir el acceso a herramientas de imágenes y utilidades de examen de archivos que se pueden usar para cubrir los fundamentos de las investigaciones digitales utilizando herramientas en un entorno que admite múltiples formatos y tipos de datos. . Por ejemplo, podemos usar el programa dd para imágenes y tallado simples; grep para ubicar y examinar estructuras del sistema de archivos y artefactos de cadenas de texto, y el comando le nuevamente con xxd para identificación y análisis de firmas. Esto nos proporciona prácticamente el mismo conjunto de herramientas simples necesarias para presentar los conceptos básicos del análisis forense digital y al mismo tiempo enseñar la familiaridad con la línea de comandos de Linux. Linux como plataforma forense puede proporcionar fácilmente un medio principal para la educación en investigaciones digitales. Y, de hecho, se ha hecho referencia a versiones anteriores de esta guía en muchos programas de grado avanzado y de aplicación de la ley que enseñan análisis forense digital básico.

¿Dónde están todas las herramientas GUI? En la medida de lo posible, las herramientas representadas en esta guía se pueden llamar y requieren la interacción del usuario a través del entorno de la línea de comandos. Esto no es simple sadismo. Se trata de aprender Linux (y de alguna manera UNIX como subproducto). Este punto se tratará a lo largo de este documento, pero el objetivo aquí es presentar herramientas y cómo interactuar a través de la línea de comandos. La confianza en las herramientas GUI es comprensible y no se menosprecia por completo aquí. Si está haciendo el esfuerzo de leer y seguir esta guía, entonces se asume que desea aprender Linux y el poder que brinda la línea de comandos. Hay dos puntos principales en los que podemos centrarnos aquí:

La primera es que Linux (y UNIX) encuentran su base en la línea de comandos. Las implementaciones modernas de Linux y UNIX todavía están, en esencia, impulsadas por un sistema al que se puede acceder más fácilmente desde una interfaz de línea de comandos. Por esta razón, saber cómo interactuar con la línea de comandos brinda a los examinadores la gama más amplia de capacidades, independientemente de la distribución o configuración de Linux que se encuentre. Sí, se trata de herramientas y utilidades forenses, pero es 12

Machine Translated by Google Versión 4.95.1

Introducción a Linux para los forenses y encargados de hacer cumplir la ley

también sobre sentirse cómodo con Linux. Es por esta razón que seguimos aprendiendo un editor de línea de comandos como vi y herramientas simples de copia de nivel de bits como dd. Existe una probabilidad muy alta de que cualquier sistema Linux/UNIX que encuentre tenga estas herramientas. El segundo punto es que conocer y comprender la línea de comandos es, en sí mismo, una herramienta muy poderosa. Una vez que se dé cuenta del poder de las canalizaciones de comando y el control de flujo (usando bucles directamente en la línea de comando), se encontrará capaz de resolver los problemas mucho más rápido de lo que pensaba anteriormente. Aprender el uso adecuado y el poder de las utilidades como awk, sed y grep abrirá algunas técnicas poderosas para analizar registros estructurados y otras fuentes de datos. Esta guía debe proporcionar una comprensión básica de cómo se pueden usar. Una vez que comprenda y comience a aprovechar este poder, se encontrará anhelando una línea de comando y sus utilidades cuando no haya una disponible.

Tenga en cuenta estos puntos a medida que realiza los ejercicios aquí. Entender por qué y cómo funcionan las herramientas. No se limite a memorizar los comandos en sí. Eso perdería el punto.

Los ejercicios prácticos Al igual que con las versiones anteriores de esta guía, verá que quedan algunos ejercicios antiguos (pero aún útiles). La salida y el uso de la herramienta siempre se actualizan para reflejar las versiones actuales de las herramientas utilizadas. Aunque un poco antiguos, estos ejercicios y los archivos utilizados para presentarlos siguen siendo útiles y no se han eliminado. También se han agregado ejercicios en versiones más recientes para cubrir las herramientas de análisis de capa de aplicación y otras adiciones recientes al arsenal de análisis forense de Linux. Tenga en cuenta que si bien este documento cubre algunas estrategias forenses y fundamentos básicos, en realidad se trata de las herramientas que usamos y los conceptos detrás de su empleo. Como tal, algunos de los archivos de ejercicios más antiguos pueden parecer un poco anticuados, pero aún cumplen el propósito de proporcionar un conjunto de problemas en los que podemos aprender comandos independientemente del objetivo.

Convenciones utilizadas en este documento Al ilustrar un comando y su salida, verá algo como lo siguiente:

root@forensicbox:~# salida del comando

Esta es esencialmente una sesión de línea de comando (terminal) donde...

13

Machine Translated by Google Versión 4.95.1

Introducción a Linux para los forenses y encargados de hacer cumplir la ley

raíz@cajaforense:~#

... es el símbolo del sistema, seguido del comando escrito por el usuario y luego la salida del comando.

En Linux, el símbolo del sistema puede tomar diferentes formas según la configuración del entorno. Los valores predeterminados pueden diferir entre varias distribuciones de Linux y el usuario puede modificarlos aún más. Pero, en general, normalmente verá algo como el formato en nuestro ejemplo anterior. Este formato es

usuario@hostname [directorio de trabajo actual]$

Esto significa que somos el usuario raíz que trabaja en la computadora (host) llamada forensicbox y nuestro directorio de trabajo actual es /root (este es el directorio de inicio del usuario raíz , indicado por la representación abreviada de la tilde) tenga en cuenta que para un inicio de sesión raíz , el carácter final del símbolo del sistema es #. Hemos personalizado el indicador de inicio de sesión del usuario raíz para mostrar un nombre de usuario rojo para resaltar aún más cuando la raíz está conectada1 . Si iniciamos sesión como un usuario normal, el carácter de solicitud predeterminado cambia a $ como en el siguiente ejemplo.

user@forensicbox:~$ resultado del comando

Esta es una diferencia importante. El usuario raíz es el "superusuario" o administrador del sistema. Cubriremos las diferencias entre los inicios de sesión de los usuarios más adelante en este documento.

Donde vea puntos suspensivos azules ('...'), indica salida eliminada en aras de la brevedad o la claridad:

root@forensicbox:~# comando ... ] 5.02K --.-KB/s

2019-07-22 08:53:47 (1,15 GB/s) - 'logs.v3.tar.gz' guardado [5144/5144]

206

en 0s

Machine Translated by Google Versión 4.95.1

Introducción a Linux para los forenses y encargados de hacer cumplir la ley

Una vez que se descarga el archivo, verifique el hash y use el comando tar para enumerar el contenido. Nuestro comando a continuación muestra que los archivos en el archivo se extraerán directamente a nuestro directorio actual. Hay 5 registros de mensajes .

barry@forensicbox:Registros$ sha1sum logs.v3.tar.gz a66bc61628af6eab8cef780e4c3f60edcedbcf12 logs.v3.tar.gz barry@forensicbox:Registros$ -rw-r--r-- raíz/raíz -rw------raíz/raíz -rw------- raíz/raíz -rw------- raíz/raíz -rw------- raíz/raíz

tar tzvflogs.v3.tar.gz 8282 2003-10-29 12:45 mensajes 8302 2003-10-29 16:17 mensajes.1 8293 2003-10-29 16:19 mensajes.2 4694 2003-10-29 16: 23 mensajes.3 1215 2003-10-29 16:23 mensajes.4

Los registros de mensajes contienen entradas de una variedad de fuentes, incluido el kernel y otras aplicaciones. Los archivos numerados resultan de la rotación de registros. A medida que se llenan los registros, se rotan y finalmente se eliminan. En la mayoría de los sistemas Unix, los registros se encuentran en /var/log/ o /var/adm. Estos son de un sistema muy antiguo, pero nuevamente, no es el contenido lo que nos interesa aquí, sino el uso de las herramientas.

Extraiga los registros:

barry@forensicbox: Registros$ tar xzvf logs.v3.tar.gz mensajes mensajes.1 mensajes.2 mensajes.3 mensajes.4

En lugar de enumerar el contenido con la opción t, lo estamos extrayendo con la opción x. Todas las demás opciones siguen siendo las mismas. Echemos un vistazo a una entrada de registro. Canalizamos la salida de cat al comando head -n 1 para que solo obtengamos la primera línea (recuerde que head sin argumentos adicionales dará las primeras 10 líneas):

barry@forensicbox:Registra $ mensajes de gatos | head -n 1 17 de noviembre 04:02:14 hostname123 syslogd 1.4.1: reiniciar.

Cada línea de los archivos de registro comienza con una marca de fecha y hora. Luego viene el nombre de host seguido del nombre de la aplicación que generó el mensaje de registro. Finalmente, se imprime el mensaje real.

Por el bien de nuestro ejercicio, supongamos que estos registros son de un sistema víctima y queremos analizarlos y analizar la información útil. no nos vamos a preocupar 207

Machine Translated by Google Versión 4.95.1

Introducción a Linux para los forenses y encargados de hacer cumplir la ley

lo que realmente estamos viendo aquí (no hay nada nefasto en estos registros), nuestro objetivo es entender cómo reducir la información a algo útil. En primer lugar, en lugar de analizar cada archivo individualmente, intentemos analizar todos los registros a la vez. Todos están en el mismo formato y esencialmente comprenden un registro grande. Podemos usar el comando cat para agregar todos los archivos y enviarlos a la salida estándar. Si trabajamos en ese flujo de datos, esencialmente estamos haciendo un registro grande de los cinco registros. ¿Puedes ver un problema potencial con esto? barry@forensicbox:Logs$ mensajes de gatos*| menos 17 de noviembre 04:02:14 hostname123 syslogd 1.4.1: reiniciar. 17 de noviembre 04:05:46 hostname123 su(pam_unix)[19307]: sesión abierta por noticias de usuarios 17 de noviembre 04:05:47 hostname123 su(pam_unix)[19307]: sesión cerrada por noticias de usuarios ... 23 de noviembre 18:27:58 hostname123 núcleo: hda: hda1 hda2 hda3 hda4

23 de noviembre 18:27:00 hostname123 rc.sysinit: montaje del sistema de archivos proc: exitoso 10 de noviembre 04:02:08 hostname123 syslogd 1.4.1: reinicio. 10 de noviembre 04:05:55 hostname123 su(pam_unix)[15181]: sesión abierta por noticias del usuario 10 de noviembre 04:05:55 hostname123 su(pam_unix)[15181]: sesión cerrada por noticias del usuario 11 de noviembre 04:06:09 hostname123 su(pam_unix)[32640]: sesión abierta para noticias de usuario ...

Si observa la salida (desplazarse usando menos), verá que las fechas ascienden y luego saltan a una fecha anterior y luego comienzan a ascender nuevamente. Esto se debe a que las entradas de registro posteriores se agregan al final de cada archivo, de modo que cuando se agregan los archivos, las fechas parecen estar desordenadas. Lo que realmente queremos hacer es transmitir cada archivo hacia atrás para que se sumen con la fecha más reciente en cada archivo en la parte superior en lugar de en la parte inferior. De esta manera, cuando los archivos se suman, están en orden. Para lograr esto, usamos tac (sí, eso es gato al revés). barry@forensicbox:Logs$ mensajes tácticos*| menos 23 de noviembre 18:27:00 hostname123 rc.sysinit: montaje del sistema de archivos proc: exitoso 23 de noviembre 18:27:58 hostname123 kernel: hda: hda1 hda2 hda3 hda4 < hda5 hda6 hda7 > 23 de noviembre 18:27:58 hostname123 kernel: Comprobación de partición:

23 de noviembre 18:27:58 hostname123 kernel: controlador ide-floppy 0.99.newide ...

Hermoso. Las fechas ya están en orden. Ahora podemos trabajar en el flujo de entradas de registro como si fueran un archivo grande (en orden). Continuaremos trabajando con este comando tac para crear nuestro flujo en orden con cada comando. Podríamos redirigir a otro archivo de registro único que contenga todos los registros, pero no hay necesidad de hacerlo ahora y crear un archivo de registro grande no tiene un propósito real. Primero, reunamos algo de información. Podríamos querer saber, quizás para nuestras notas, cuántas entradas hay en cada archivo y cuántas entradas hay en total. Aquí hay una forma rápida de hacerlo. 208

Machine Translated by Google Versión 4.95.1

Introducción a Linux para los forenses y encargados de hacer cumplir la ley

desde la línea de comando:

barry@forensicbox:Registros$ 374

mensajes tácticos*| wc-l

El mismo comando se usa para transmitir todos los archivos juntos y enviar la salida a través de la canalización al comando wc ("recuento de palabras"). La opción -l especifica que queremos contar solo líneas en lugar de la salida predeterminada de líneas, palabras y bytes. Para obtener un recuento de todos los archivos y el total al mismo tiempo, use wc -l en todos los archivos de mensajes a la vez: barry@forensicbox:Registros$ 100 mensajes 109 mensajes.1 100 mensajes.2 50 mensajes.3 15 mensajes.4 374 en total

wc -l mensajes*

Ahora introduciremos un nuevo comando, awk , para ayudarnos a ver campos especí cos de las entradas de registro. En este caso vamos a ver las fechas. awk es un comando extremadamente poderoso. La versión que se encuentra con mayor frecuencia en los sistemas Linux es gawk (GNU awk). Si bien lo usaremos como un comando independiente, awk es en realidad un lenguaje de programación por sí mismo y se puede usar para escribir scripts para organizar datos. Nuestra concentración se centrará en la función de impresión awk . Ver hombre awk para más detalles. Los conjuntos de datos repetitivos a menudo se pueden dividir en columnas o "campos", según la estructura del archivo. En este caso, los campos en los archivos de registro están separados por un simple espacio en blanco (el separador de campos predeterminado de awk ). La fecha se compone de los dos primeros campos (mes y día). Así que echemos un vistazo a awk en acción: barry@forensicbox:Registros$

mensajes tácticos*| awk '{imprimir $1" "$2}' | menos

23 de noviembre 23 de noviembre 23 de noviembre

... 20 de octubre 20 de octubre 20 de octubre

...

Este comando transmitirá todos los archivos de registro (cada uno de abajo hacia arriba) y enviará la salida a awk , que imprimirá el primer campo, $1 (mes), seguido de un espacio (" "), seguido del segundo campo, $2 (día). Esto muestra solo el mes y el día de cada entrada. Supongamos que solo quiero ver una de cada fecha en la que se realizó una entrada. No necesito ver fechas repetidas. Pido ver una de cada línea única de salida con uniq: 209

Machine Translated by Google Versión 4.95.1

Introducción a Linux para los forenses y encargados de hacer cumplir la ley

barry@forensicbox:Registros$

mensajes tácticos*| awk '{imprimir $1" "$2}' | único | menos

23 de noviembre 22 de noviembre

21 de noviembre

... 22 de octubre

21 de octubre

20 de octubre

Esto elimina las fechas repetidas y me muestra solo aquellas fechas con actividad de registro. Sugerencia CLI: en lugar de volver a escribir el comando cada vez, use la flecha hacia arriba en su teclado para desplazarse por los comandos más antiguos (parte del historial de comandos de bash). Presione la flecha hacia arriba una vez y podrá editar su último comando. Muy útil al ajustar comandos para este tipo de análisis.

Si una fecha en particular es de interés, puedo grep los registros para esa fecha en particular (tenga en cuenta que hay 2 espacios entre el 4 de noviembre , un espacio no funcionará en nuestro comando grep ):

barry@forensicbox:Registra$ mensajes tac*| grep "4 de noviembre" 4 de noviembre 17:41:27 hostname123 sshd(pam_unix)[27630]: sesión cerrada para el usuario raíz 4 de noviembre 17:41:27 hostname123 sshd[27630]: Desconexión recibida de 1xx.183.221.214: ,ÿ 11: Desconexión solicitada por Cliente SSH de Windows. 4 de noviembre 17:13:07 hostname123 sshd(pam_unix)[27630]: sesión abierta para usuario root por ,ÿ (uid=0) 4 de noviembre 17:13:07 hostname123 sshd[27630]: Contraseña aceptada para root desde 1xx , ÿ .183.221.214 puerto 1762 ssh2 4 de noviembre 17:08:23 hostname123 sshd(pam_unix)[27479]: sesión cerrada para usuario raíz ...

Por supuesto, tenemos que tener en cuenta que esto nos daría cualquier línea donde residiera la cadena 4 de noviembre , no solo en el campo de fecha. Para ser más explícitos, podríamos decir que solo queremos líneas que comiencen con el 4 de noviembre , usando ^ (en nuestro caso, esto da esencialmente el mismo resultado):

barry@forensicbox:Logs$ 4 de

mensajes tácticos*| grep ^ "4 de noviembre" | menos

noviembre 17:41:27 hostname123 sshd(pam_unix)[27630]: sesión cerrada para usuario raíz 4 de noviembre 17:41:27 hostname123 sshd[27630]: Desconexión recibida de 1xx.183.221.214: , ÿ 11: Desconexión solicitada por Windows SSH Client. 4 de noviembre 17:13:07 hostname123 sshd(pam_unix)[27630]: sesión abierta para usuario root por ,ÿ (uid=0) 4 de noviembre 17:13:07 hostname123 sshd[27630]: Contraseña aceptada para root desde 1xx , ÿ .183.221.214 puerto 1762 ssh2 4 de noviembre 17:08:23 hostname123 sshd(pam_unix)[27479]: sesión cerrada para usuario raíz ...

210

Machine Translated by Google Versión 4.95.1

Introducción a Linux para los forenses y encargados de hacer cumplir la ley

Además, si no sabemos que hay dos espacios entre Nov y 4, podemos decirle a grep que busque cualquier número de espacios entre los dos: barry@forensicbox:Logs$ 4 mensajes tácticos*| grep ^"Nov[ ]*4" | menos de noviembre 17:41:27 hostname123 sshd(pam_unix)[27630]: sesión cerrada para usuario raíz 4 de noviembre 17:41:27 hostname123 sshd[27630]: Desconexión recibida de 1xx.183.221.214: , ÿ 11: Desconexión solicitada por Windows SSH Client. ...

La expresión grep anterior se traduce como "Líneas que comienzan (^) con la cadena Nov seguida de cero o más (*) de los caracteres anteriores que están entre corchetes ([ ] - en este caso, un espacio) seguido de un 4". Obviamente, este es un tema complejo. Saber cómo usar expresiones regulares le dará una gran flexibilidad para clasificar y organizar grandes conjuntos de datos. Como se mencionó anteriormente, lea man grep para obtener una buena introducción a las expresiones regulares.

Mientras miramos a través de los archivos de registro, podemos encontrar entradas que parezcan sospechosas. Tal vez necesitemos recopilar todas las entradas que vemos que contienen la cadena No recibió la cadena de identificación de para un análisis más detallado. barry@forensicbox:Registros$ mensajes tácticos*| grep "cadena de identificación" 22 de noviembre 23:48:47 hostname123 sshd[19380]: No recibió la cadena de identificación de ,ÿ 19x.xx9.220.35

22 de noviembre 23:48:47 hostname123 sshd[19379]: No recibió la cadena de identificación de ,ÿ 19x.xx9.220.35

20 de noviembre 14:13:11 hostname123 sshd[29854]: No recibió la cadena de identificación de ,ÿ 200.xx.114.131

...

¿Cuántas de estas entradas hay? barry@forensicbox:Registros$ 35

mensajes tácticos*| grep "cadena de identificación" | wc-l

Hay 35 entradas de este tipo. Ahora solo queremos la fecha (campos 1 y 2), la hora (campo 3) y la dirección IP remota que generó la entrada de registro. La dirección IP es el último campo. En lugar de contar cada palabra de la entrada para llegar al número de campo de la IP, simplemente podemos usar la variable $NF, que significa "número de campos". Dado que la IP es el último campo, su número de campo es igual al número de campos: barry@forensicbox:Registros$ mensajes tácticos*| grep "cadena de identificación" | awk '{imprimir $1" "$2" "$3" "$NF}' 22 de noviembre 23:48:47 19x.xx9.220.35 22 de noviembre 23:48:47 19x.xx9.220.35 20 de noviembre 14:13:11 200.xx.114.131

211

Machine Translated by Google Versión 4.95.1

Introducción a Linux para los forenses y encargados de hacer cumplir la ley

18 de noviembre 18:55:06 6x.x2.248.243 ...

Podemos agregar algunas tabulaciones (\t) en lugar de espacios en nuestro comando awk para hacer la salida más legible (esto supone una longitud de cadena fija). El siguiente comando colocará una pestaña carácter entre la fecha y la hora, y entre la hora y la dirección IP: barry@forensicbox:Registros$ mensajes tácticos*| grep "cadena de identificación" | awk '{imprimir $1" "$2"\t"$3"\t"$NF}' 22 de noviembre 23:48:47 19x.xx9.220.35 22 de noviembre 23:48:47

19x.xx9.220.35

20 de noviembre 14:13:11

200.xx.114.131

18 de noviembre 18:55:06

6x.x2.248.243

...

Todo esto se puede redirigir a un registro de análisis o archivo de texto para agregarlo fácilmente a un informe. Recuerde que > report.txt crea el archivo de informe (sobrescribiendo cualquier cosa allí previamente), mientras que >> report.txt se le agrega. Puede usar su para convertirse en root y establecer el "append only" en su archivo de informe para evitar sobrescrituras accidentales26 . Los siguientes comandos se escriben en una línea cada uno: barry@forensicbox:Registros$ > informe.txt

echo "Localhost123: Entradas de registro de /var/log/messages"

barry@forensicbox:Registros$ informe.txt

echo"\"No recibió cadena de identificación\":" >>

barry@forensicbox:Registros$ mensajes tácticos*| grep "cadena de identificación" | awk '{imprimir $1" "$2"\t"$3"\t"$NF}' >> informe.txt barry@forensicbox:Registros$

informe gato.txt

Localhost123: Entradas de registro de /var/log/messages "No recibió identificación ,ÿ cadena": 22 de noviembre 23:48:47

19x.xx9.220.35

22 de noviembre 23:48:47

19x.xx9.220.35

20 de noviembre 14:13:11

200.xx.114.131

18 de noviembre 18:55:06

6x.x2.248.243

17 de noviembre 19:26:43

200.xx.72.129

...

También podemos obtener una lista ordenada (ordenar) de las direcciones IP únicas (-u) involucradas en el mismo camino:

26Cubrimos esto anteriormente en la guía con el comando chattr .

212

Machine Translated by Google Versión 4.95.1

Introducción a Linux para los forenses y encargados de hacer cumplir la ley

barry@forensicbox:Registros$

echo "Direcciones IP únicas: " >> informe.txt

barry@forensicbox:Registros$ mensajes tácticos*| grep "cadena de identificación" | awk '{imprimir $NF}' >> informe.txt barry@forensicbox:Logs$

informe gato.txt

Localhost123: Entradas de registro de /var/log/messages "No recibió cadena de identificación": 22 de noviembre 23:48:47 19x.xx9.220.35 22 de noviembre 23:48:47

19x.xx9.220.35

... Direcciones IP únicas: 19x.xx9.220.35 200.xx.114.131 200.xx.72.129 212.xx.13.130 2xx.54.67.197 2xx.71.188.192 2xx.x48.210.129 6x.x2.248.243 6x.x44.180.27 xx.192.39.131

El comando anterior imprime solo el último campo ($NF) de nuestra salida grep (que es la dirección IP). La lista resultante de direcciones IP también se puede enviar a un script que realiza consultas de base de datos nslookup o whois . Puede ver el informe resultante (informe.txt) usando el comando menos . Al igual que con todos los ejercicios de este documento, acabamos de probar las capacidades de la línea de comandos de Linux. Todo parece algo complicado para el principiante. Después de un poco de práctica y experiencia con diferentes conjuntos de datos, descubrirá que puede echar un vistazo a un archivo y decir Quiero esa información y podrá escribir un comando canalizado rápido para obtener quetodas desealas en un , formato legible en cuestión de segundos. Al igual quelocon habilidades lingüísticas, el lenguaje de línea de comandos de Linux (en realidad, bash en este caso) es perecedero. Mantenga una buena referencia a mano y recuerde que es posible que tenga que buscar la sintaxis varias veces antes de que se convierta en una segunda naturaleza.

9.2 Diversión con dd

Ya hicimos algunas imágenes simples y limpiamos usando dd, exploremos algunos otros usos para esta herramienta flexible. dd es como una pequeña navaja suiza forense. Tiene muchas aplicaciones, limitadas solo por tu imaginación.

213

Machine Translated by Google Versión 4.95.1

Introducción a Linux para los forenses y encargados de hacer cumplir la ley

9.2.1 Talla de datos con dd

En el siguiente ejemplo, usaremos dd para tallar un archivo de imagen JPEG a partir de una porción de datos sin procesar. Por sí mismo, este no es un ejercicio realmente útil. Existen muchas herramientas que "tallarán" archivos a partir de imágenes forenses, incluido un simple cortar y pegar desde un editor hexadecimal. El propósito de este ejercicio es ayudarlo a familiarizarse más con dd. Además, tendrá la oportunidad de utilizar una serie de otras herramientas en preparación para el "tallado". Esto lo ayudará a familiarizarse más con la caja de herramientas de Linux. Primero deberá descargar el fragmento de datos sin procesar y verificar su hash:

barry@forensicbox:~$ wget https://www.linuxleo.com/Files/image_carve_2017.raw ... barry@forensicbox:~$ sha1sum image_carve_2017.raw ac3dd14e9a84f8dc5b827ba6262c295d28d3cecc image_carve_2017.raw

Eche un breve vistazo al archivo image_carve_2017.raw con su maravillosa herramienta de volcado hexadecimal de línea de comandos, xxd:

barry@forensicbox:~$ xxd image_carve_2017.raw | menos 00000000: f0d5 0291 431e 41db 5fb9 abce 7240 4543 ....CA_...r@EC 00000010: 9a71 389a e0f1 4cf7 bfb4 32e2 6fe9 1132 .q8...L...2.o. .2 00000020: fc36 ddca eb48 56c1 1501 bcfd e7dd 2631 .6...HV.......&1 $ .V 00000050: da3d 0a2c a91c e2dd 5095 40fd e43a 1208 .=.,....P.@..:.. 00000060: a76d 997e 9daf f4fa 9218 a2e4 6d81 a8ca .m.~........ metro...

00000070: cdf2 5055 12d5 f703 44bd 8d8b 88ed abab ..PU....D....... 00000080: 9023 ee54 f4f4 77f5 c89e ffdc 7c1a dba3 .#.T..w.....|.. 00000090: 42c7 9f07 902e 08c9 778c 67e3 479b 70f4 B.......wgGp ...

En realidad, es solo un archivo lleno de caracteres aleatorios. En algún lugar dentro hay una imagen JPEG estándar. Repasemos los pasos necesarios para recuperar el archivo de imagen usando dd y otras herramientas de Linux. Nos quedaremos con las herramientas de línea de comandos disponibles en la mayoría de las instalaciones predeterminadas de Linux. Primero necesitamos un plan. ¿Cómo haríamos para recuperar el archivo? ¿Cuáles son las cosas que necesitamos saber para obtener la imagen (imagen), y solo la imagen? Imagina dd como un par de tijeras. Necesitamos saber dónde poner las tijeras para empezar a cortar, y necesitamos saber dónde dejar de cortar. Encontrar el inicio del JPEG y el final del JPEG puede decirnos esto. Una vez que sepamos dónde comenzaremos y nos detendremos, podemos calcular el tamaño del JPEG. Luego podemos decirle a dd dónde comenzar a cortar y cuánto cortar. El archivo de salida será nuestra imagen JPEG. Fácil, ¿verdad? Este es nuestro plan y las herramientas que usaremos:

214

Machine Translated by Google Versión 4.95.1

Introducción a Linux para los forenses y encargados de hacer cumplir la ley

1. Encuentra el inicio del JPEG (xxd y grep) 2. Encuentra el final del JPEG (xxd y grep) 3. Calcular el tamaño del JPEG en bytes (bc) 4. Corte desde el inicio calculado: el número calculado de bytes y la salida a un archivo (dd)

Este ejercicio comienza con la suposición de que estamos familiarizados con los encabezados de archivo estándar. Dado que buscaremos una imagen JPEG estándar dentro del fragmento de datos, comenzaremos con la estipulación de que el encabezado JPEG comienza con 0xffd8 (el valor hexadecimal ffd8) con un desplazamiento de seis bytes a la cadena JFIF. El final del JPEG estándar está marcado por hexadecimal ffd9. Avancemos con el paso 1: usando xxd, canalizamos la salida de nuestro archivo image_carve.raw a grep y buscamos el inicio de JPEG27:

barry@forensicbox:~$ xxd image_carve_2017.raw | grep ffd8 0000f900: 901d cfe7 8488 ac23 ffd8 24ab 4f4d 1613 .......#..$.OM.. 0001bba0: e798 a4b6 d833 9567 af5f ffd8 e5e9 ed24 .....3.g._... ..$ 00033080: 84a5 aeec d7db ffd8 3c37 c52d a80e 6e7e ........ able_3.raw

Y ahora trabajaremos en la imagen able_3.raw . Comencemos por explorar el contenido de la imagen con algunas de nuestras herramientas de análisis de partición. Para usar estas herramientas, deberá ser root (o usar sudo) y cambiar al directorio donde están las imágenes (directorio de inicio del usuario y subdirectorio able_3 ): 219

Machine Translated by Google Versión 4.95.1

Introducción a Linux para los forenses y encargados de hacer cumplir la ley

su -

barry@cajaforense:able_3$ Clave:

root@forensicbox:~# cd /home/barry/able_3

root@forensicbox:able_3#

Comenzando con fdisk: root@forensicbox:able_3# fdisk -l able_3.raw Disco able_3.raw: 4 GiB, 4294967296 bytes, 8388608 sectores Unidades: sectores de 1 * 512 = 512 bytes Tamaño del sector (lógico/físico): 512 bytes / 512 bytes I/ Tamaño O (mínimo/óptimo): 512 bytes / 512 bytes Tipo de etiqueta de disco: gpt Identificador de disco: B94F8C48CE81-43F4-A062-AA2E55C2C833

Dispositivo

comienzo

Sectores finales Tamaño Tipo

able_3.raw1 2048 104447 102400 50M Sistema de archivos Linux able_3.raw2 104448 309247 204800 100M Sistema de archivos Linux able_3.raw3 571392 8388574 7817183 3.7G Sistema de archivos Linux

Al observar la salida, vemos que el disco tiene un esquema de partición GPT . Puede volver a ejecutar el comando usando gdisk con fines de documentación. Una vez que hayamos terminado con fdisk, salga del inicio de sesión raíz y volverá a ser un usuario normal: root@forensicbox:able_3# salir

barry@cajaforense:able_3$

Ahora usa dd para tallar cada una de las particiones. Con la salida de fdisk -l que se muestra arriba, el trabajo es fácil. barry@forensicbox:able_3$ cuenta=102400

dd if=able_3.raw of=able_3.part1.raw bs=512 skip=2048

102400+0 registros en 102400+0 registros fuera 52428800 bytes (52 MB, 50 MiB) copiados, 1,742 s, 30,1 MB/s

barry@cajaforense:able_3$

dd if=able_3.raw of=able_3.part2.raw bs=512

skip=104448 count=204800 204800+0 registros en 204800+0 registros copiados 104857600 bytes (105 MB, 100 MiB), 0,731567 s, 143 MB/s

220

Machine Translated by Google Versión 4.95.1

Introducción a Linux para los forenses y encargados de hacer cumplir la ley

barry@cajaforense:able_3$

dd if=able_3.raw of=able_3.part3.raw bs=512 skip=571392

count=7817183 7817183+0 registros en 7817183+0 registros fuera 4002397696 bytes (4,0 GB, 3,7 GiB) copiados, 35,585 s, 112 MB/s

Examine estos comandos de cerca. El archivo de entrada (if=able_3.raw) es la imagen de disco completa. Los archivos de salida (of=able_3.part#.raw) contendrán cada una de las particiones. El tamaño de bloque que estamos usando es el tamaño del sector (bs=512), que coincide con la salida del comando fdisk . Cada sección dd debe comenzar donde comienza cada partición (skip=X) y cortar hasta donde llegue la partición (count=Y). El conteo es de la columna Sectores de la salida fdisk y nos dice el número de sectores a contar. Esto le dejará con tres archivos able_3.part*.raw en su directorio actual que ahora se pueden montar en bucle sin necesidad de programas especiales. Exploraremos y trabajaremos con estas particiones en la siguiente sección.

9.2.3 Reconstrucción de un sistema de archivos de materias (Linux)

Volviendo a nuestras imágenes sin procesar de case_3 de able_3 , ahora tenemos la imagen original junto con las imágenes de partición que tallamos (más las imágenes divididas originales). able_3.part1.raw (1.ª partición) able_3.part2.raw (2.ª partición) able_3.part3.raw (3.ª partición)

El siguiente truco es montar las particiones de tal manera que reconstruyamos el sistema de archivos original. Por lo general, esto se refiere a discos en cuestión cuyas imágenes se obtuvieron de hosts Unix, pero aun así es un buen ejercicio de línea de comandos. Uno de los beneficios de los sistemas Linux/Unix es la capacidad de separar el sistema de archivos en particiones. Esto se puede hacer por varias razones, lo que permite flexibilidad cuando existen preocupaciones sobre el espacio en disco o la seguridad, etc. Por ejemplo, un administrador del sistema puede decidir mantener el directorio /var/logon en su propia partición separada. Esto podría hacerse en un intento de evitar que los archivos de registro desenfrenados llenen la partición raíz (/ no /root) y desactiven el sistema. En el pasado, también era común encontrar el directorio /boot en su propia partición. Esto permite que la imagen del núcleo se coloque cerca de "la parte delantera" (en términos de cilindros) de un volumen de arranque, un problema en algunos cargadores de arranque más antiguos. También hay una variedad de implicaciones de seguridad abordadas por esta configuración. Finalmente, algunos considerarían una buena idea tener /home en su propia partición, permitiéndole formatear y reinstalar sin tener que tocar datos personales y archivos. Entonces, cuando tiene un disco con múltiples particiones, ¿cómo averigua la estructura del sistema de archivos? Anteriormente en este documento discutimos el archivo /etc/fstab . Este archivo mantiene el

221

Machine Translated by Google Versión 4.95.1

Introducción a Linux para los forenses y encargados de hacer cumplir la ley

información de montaje para cada sistema de archivos, incluida la partición física; punto de montaje, le tipo de sistema y opciones. Una vez que encontramos este archivo, reconstruir el sistema es fácil. Con experiencia, comenzará a tener una idea de cómo se configuran las particiones y dónde buscar el fstab. Para simplificar las cosas aquí, simplemente monte cada partición (bucle, solo lectura) y tenga un mira alrededor. Una cosa que nos gustaría saber es qué tipo de sistema de archivos hay en cada partición antes tratamos de montarlos. Podemos usar el comando de archivo para hacer esto. Recuerda de nuestro ejercicio anterior en el que el comando de archivo determina el tipo de archivo buscando información de encabezado.

barry@forensicbox:able_3$ archivo able_3.part* able_3.part1.raw: datos del sistema de archivos Linux rev 1.0 ext4, UUID=ca05157e-f7b3-4c6a-9b63 ,ÿ -235c4cad7b73 (extensiones) (archivos grandes) (archivos enormes) able_3.part2.raw: datos del sistema de archivos Linux rev 1.0 ext4, UUID=c4ac4c0f-d9de-4d26-9e16 ,ÿ -10583b607372 (extensiones) (archivos grandes) (archivos enormes) able_3.part3.raw: datos del sistema de archivos Linux rev 1.0 ext4, UUID=c7f748b2-3a38-44e9-aa43,ÿ f924955b9fdd (extensiones) (archivos grandes) (archivos enormes)

Anteriormente, pudimos determinar que las particiones eran particiones "Linux" de la salida de fdisk. Ahora file nos informa que el tipo de sistema de archivos es ext4. Podemos usar esto información para montar las particiones. Recuerda que necesitarás ser root para montar el particiones, así que haga su para rootear primero (o use sudo), monte y desmonte cada partición, hasta que encuentre el directorio /etc que contiene el fstab:

barry@cajaforense:~$ Clave:

su -

root@forensicbox:~# mount -t ext4 -o ro,loop/home/barry/able_3/able_3.part1.raw /mnt/evidencia

raíz@forensicbox:~# ls /mnt/evid README.initrd@ System.map@

config-enorme-4.4.14 onlyblue.dat elilo-ia32.efi* slack.bmp

System.map-generic-4.4.14 elilo-x86_64.efi* tuxlogo.bmp System.map-huge-4.4.14 grub/ boot.0800 inside.bmp vmlinuz@

tuxlogo.dat

inside.dat vmlinuz-generic@

boot_message.txt café.dat

perdido+encontrado/

vmlinuz-genérico-4.4.14

[email protected]

mapa onlyblue.bmp

vmlinuz-enorme-4.4.14

vmlinuz-enorme@

(Estamos buscando /etc/fstab, y no está aquí...) root@forensicbox:~# desmontar /mnt/evid

222

Machine Translated by Google Versión 4.95.1

Introducción a Linux para los forenses y encargados de hacer cumplir la ley

Si hace esto para cada partición a la vez (ya sea desmontando entre particiones o montando a un punto de montaje diferente), eventualmente encontrará el directorio /etc que contiene el fstab archivo en able_3.part3.raw con las siguientes entradas importantes:

barry@forensicbox:able_3$ / dev/

gato /mnt/evid/etc/fstab ext4

predeterminados

1

1

/bota

ext4

predeterminados

1

2

/hogar

ext4

predeterminados

1

2

sda3 / /dev/sda1 /dev/sda2

Así que ahora vemos que el sistema de archivos lógicos se construyó a partir de tres particiones separadas (Tenga en cuenta que /dev/sda aquí se refiere al disco cuando está montado en el sistema original, y no al disco en la estación de trabajo forense): (directorio raíz) montado desde /dev/sda3 (able_3.part3) |-- papelera

|-- arranque montado desde /dev/sda1 (able_3.part1) |-- desarrollador

|-- etc. |-- montado en casa desde /dev/sda2 (able_3.part2) |-- libre |-- lib64 |-- perdido+encontrado

|-- medios |-- mnt |-- optar |-- proceso |-- raíz |-- correr |-- sbin |-- servicio |-- sistema

|-- mp

|-- usuario '--var

Ahora podemos crear el sistema de archivos original en nuestro punto de montaje de pruebas. el punto de montaje /mnt/evid ya existe. Cuando monta la partición raíz de able_3.raw en /mnt/evid,

notará que los directorios /mnt/evid/boot y /mnt/evid/home ya existen, pero están vacío. Eso es porque tenemos que montar esos volúmenes para acceder al contenido de esos directorios. Primero montamos el sistema de archivos raíz, y los demás se montan en él. Otra vez, ejecutaremos como root para esto:

root@forensicbox:able_3# mount -t ext4 -o ro,loop able_3.part3.raw /mnt/evid root@forensicbox:able_3# mount -t ext4 -o ro,loop able_3.part1.raw /mnt/evid/boot

223

Machine Translated by Google Versión 4.95.1

Introducción a Linux para los forenses y encargados de hacer cumplir la ley

root@forensicbox:able_3# mount -t ext4 -o ro,loop able_3.part2.raw /mnt/evid/home

Ahora tenemos el sistema de archivos original recreado en /mnt/evid: barry@forensicbox:~$ / montar | prueba de grep home/barry/able_3/able_3.part3.raw en /mnt/evid tipo ext4 (ro) /home/barry/ able_3/able_3.part1.raw en /mnt/evid/boot tipo ext4 ( ro) /home/barry/able_3/ able_3.part2.raw en /mnt/evid/home escriba ext4 (ro)

En este punto, podemos ejecutar todas nuestras búsquedas y comandos tal como lo hicimos en el ejercicio anterior fat_fs.raw en un sistema de archivos completo con raíz en /mnt/evid. Como siempre, debe saber lo que está haciendo cuando monta un sistema de archivos completo en su estación de trabajo forense. Tenga en cuenta las opciones del comando de montaje que podría querer usar (verifique el montaje de man para opciones como nodev y nosuid , noatime, etc.). Tome nota de hacia dónde apuntan los enlaces desde el sistema de archivos de asunto. Tenga en cuenta que hemos montado las particiones de solo lectura (ro). Recuerde desmontar (desmontar) cada partición cuando termine de explorar.

224

Machine Translated by Google Versión 4.95.1

Introducción a Linux para los forenses y encargados de hacer cumplir la ley

10 herramientas de análisis avanzadas Así que ahora tiene algo de experiencia con el uso de la línea de comandos de Linux y las potentes herramientas que se proporcionan con una instalación de Linux. Sin embargo, como examinadores forenses, pronto nos damos cuenta de que el tiempo es un bien valioso. Si bien aprender a usar las herramientas de línea de comandos nativas de una instalación de Linux es útil para una gran cantidad de tareas en el "mundo real", también puede ser tedioso. Después de todo, existen herramientas basadas en Windows que le permiten hacer mucho de lo que hemos discutido aquí en una GUI simple de apuntar y hacer clic. La popularidad de Linux está creciendo a un ritmo fantástico. No solo lo vemos en un entorno empresarial y en los grandes medios, sino que continúa creciendo en popularidad dentro del campo de la informática forense. En los últimos años, hemos visto crecer la lista de herramientas forenses disponibles para Linux con el resto de la industria. En esta sección, cubriremos una serie de herramientas forenses disponibles para que su análisis sea más fácil y eficiente. NOTA DEL AUTOR: La inclusión de herramientas y paquetes en esta sección de ninguna manera constituye una aprobación de dichas herramientas. Pruébelos usted mismo para asegurarse de que satisfacen sus necesidades. Dado que este es un documento de Linux, estoy cubriendo las herramientas de Linux disponibles. Esto no significa que las herramientas comunes disponibles para otras plataformas no puedan usarse para lograr muchos de los mismos resultados. Recuerde, mientras trabaja con estos ejercicios, este documento NO pretende ser una educación en el sistema de archivos o un análisis de volumen físico. A medida que realice los ejercicios, encontrará términos como inodo, entrada MFT, estado de asignación, tablas de partición y bloques directos e indirectos, etc. Sistemas de archivos Linux o cualquier otro sistema de archivos. Esto es todo acerca de las herramientas.

Si necesita conocer la estructura del sistema de archivos en relación con el análisis forense informático, lea el libro de Brian Carrier: Análisis forense del sistema de archivos (publicado por Addison-Wesley, 2005). Esta no es la última vez que sugeriré esto. Para obtener una descripción general rápida de algunos sistemas de archivos, puede realizar una búsqueda rápida en Internet. Hay un montón de información disponible si necesita una cartilla. Aquí hay algunos enlaces simples para que pueda comenzar. Si tiene preguntas sobre cualquiera de estos sistemas de archivos, o sobre cómo funcionan, le sugiero que lea un poco antes de sumergirse en estos ejercicios. NTFS http://www.ntfs.com

http://en.wikipedia.org/wiki/NTFS ext2/3/4 http://e2fsprogs.sourceforge.net/ext2intro.html 225

Machine Translated by Google Versión 4.95.1

Introducción a Linux para los forenses y encargados de hacer cumplir la ley

http://en.wikipedia.org/wiki/Ext3 http:// en.wikipedia.org/wiki/Ext4 GRASA

http://en.wikipedia.org/wiki/File_allocation_table

Además, una vez que Sleuth Kit (que cubriremos pronto) esté instalado, es posible que desee navegar por http://wiki.sleuthkit.org/ para obtener información adicional sobre los sistemas de archivos y la implementación.

10.1 El enfoque de capas para el análisis Una de las razones por las que Linux es visto como extremadamente eficiente por sus defensores y excesivamente complejo por sus detractores es su enfoque en la programación modular donde una herramienta realiza una tarea en lugar del enfoque de "conjunto de herramientas" de muchas herramientas comerciales. El diseño de las herramientas de Linux, tanto las utilidades de línea de comandos de GNU como el software forense como Sleuth Kit, puede parecer desalentador cuando un estudiante se da cuenta de que debe tratar de recordar múltiples herramientas, resultados y parámetros de comando para ejecutar un examen efectivo en lugar de hacerlo. que navegar por un menú gráfico donde las funciones, las opciones y los resultados se muestran en una forma organizada de "un clic de distancia". Brian Carrier, autor de The Sleuth Kit, utiliza un marco para el análisis de dispositivos de almacenamiento en su libro Análisis forense del sistema de archivos, que mencionamos anteriormente. Con este enfoque, Carrier organiza sus herramientas en una serie de capas virtuales que definen el propósito de cada herramienta con respecto a una capa especí ca. Convenientemente, las herramientas del Sleuth Kit se nombran de acuerdo con estas capas. Al introducir herramientas en una categoría determinada y definir su aplicabilidad respectiva a una capa virtual específica, los estudiantes pueden organizar mejor su comprensión de la función de cada herramienta y dónde encaja mejor en un análisis. Este enfoque se puede extender y expandir fácilmente para abarcar herramientas adicionales desde fuera de Sleuth Kit. Si bien algunas herramientas no se ajustan sucintamente a este paradigma, aún se pueden abordar en una secuencia que se ajuste al enfoque analítico general. La siguiente figura proporciona un resumen gráfico de las capas designadas por Carrier para el análisis de la evidencia.

Figura 10: Un ejemplo de capas y su contenido asociado basado en el trabajo de Carrier

226

Machine Translated by Google Versión 4.95.1

Introducción a Linux para los forenses y encargados de hacer cumplir la ley

Esto tiene el beneficio adicional de brindarles a los estudiantes un método para conceptualizar la forma en que se emplean las herramientas. Tenemos un conjunto diverso de herramientas para trabajar en Linux, particularmente cuando se trata de abordar un análisis desde la línea de comandos. Saber cuándo usar qué herramientas se puede entender mejor extendiendo este enfoque de capas a todo nuestro análisis.

Ya hemos cubierto una serie de herramientas comunes como dd, dc3dd, hdparm, lsscsi, lshw y otras. Estos son ejemplos de herramientas que funcionan en la capa de medios físicos y buscan directamente en los medios físicos y la información del disco, incluidos los números de serie, los tamaños de los sectores del disco y el bus físico en el que residen los medios. También hemos analizado herramientas que actúan en la capa de administración de medios, como fdisk, gdisk, losetup y otras. Estas herramientas analizan o trabajan sobre la información proporcionada en el nivel de la tabla de particiones, pero sin actuar específicamente sobre los sistemas de archivos en sí. A medida que avanzamos en el resto de esta guía, tenga en cuenta que, a menudo, el lugar de una herramienta en el enfoque de capa no está de nido por la herramienta en sí, sino por cómo la usa. Tome grep por ejemplo. grep busca expresiones coincidentes en un archivo. Así que podríamos decir que funciona en la subcapa de archivos de la capa del sistema de archivos (consulte la ilustración anterior). Sin embargo, cuando lo usamos contra una imagen forense de un disco físico (como nuestro archivo able_3.raw ), no lo estamos usando en la capa de archivos de esa imagen, sino en la capa física de la imagen. Puedo hacer grep para una expresión en un conjunto de archivos, o puedo hacer grep para una expresión en una imagen de disco. Cómo utilizo la herramienta de ne su lugar, no la herramienta en sí en muchos casos.

Por lo tanto, debemos ajustar nuestro pensamiento sobre cómo abordamos nuestro análisis, teniendo en cuenta que la organización de herramientas del Sleuth Kit puede no siempre coincidir directamente con nuestro enfoque de análisis. Pero simplemente podemos resumirlo así:

1. Analice la capa del dispositivo físico:

lshw lsscsi hdparm 2. Analice la capa de gestión de medios:

fdisco gdisk archivo -s mmls (cubriremos pronto) 3. Analice la capa del sistema de archivos: expediente

fsstat 227

Machine Translated by Google Versión 4.95.1

Introducción a Linux para los forenses y encargados de hacer cumplir la ley

fls 4. Analice la capa de archivos: expediente

encontrar

herramientas comunes como ls, etc. 5. Capa de aplicación: Ver contenido de archivo con menos y gato, etc. Localice contenido especí co con grep.

Use aplicaciones externas para ver contenido binario: xv, display, regfmount para archivos de registro, etc.

Los comandos que se muestran aquí son solo algunos ejemplos. Hay muchos más que funcionan en cada capa dada. De modo que puede ver en la lista anterior que podemos aplicar herramientas a varias capas diferentes. Esto habla de la simplicidad del enfoque de desarrollo de Unix que ha existido durante décadas. Las herramientas generalmente hacen una cosa, la hacen bien, pero pueden ser versátiles en su empleo.

En resumen, todo esto significa que, en lugar de adoptar el enfoque que normalmente adoptaríamos con el software forense multifuncional de Windows:

abrir un programa Abra (o adquiera) un archivo de imagen con ese programa "Indizar" el archivo de imagen dentro del programa Navegar por los menús, recopilar datos e informarlos

... ahora podemos sentarnos en un símbolo del sistema y recorrer las diversas capas de nuestro examen, recopilando y redirigiendo información a medida que avanzamos, analizando capa por capa de nuestro análisis hasta llegar a nuestra conclusión. En lugar de buscar a tientas la línea de comandos, dirigimos nuestros comandos a la capa que estamos examinando actualmente.

10.2 El kit de detective La primera de las herramientas externas avanzadas que cubriremos aquí es una colección de comandos de línea herramientas llamadas Sleuth Kit (TSK). Este es un conjunto de herramientas escrito por Brian Carrier y mantenido en http:// www.sleuthkit.org. Se basa parcialmente en The Coroner's Toolkit (TCT) escrito originalmente por Dan Farmer y Wietse Venema. TSK agrega compatibilidad adicional con el sistema de archivos y le permite analizar varios tipos de sistemas de archivos, independientemente de la plataforma en la que esté trabajando actualmente. La versión actual, a partir de este escrito es 4.6.x. 228

Machine Translated by Google Versión 4.95.1

Introducción a Linux para los forenses y encargados de hacer cumplir la ley

Comencemos con una discusión de las herramientas primero. La mayor parte de esta información está disponible en la documentación de Sleuth Kit o en el sitio web de Sleuth Kit. Ya hemos discutido la organización de la función de herramientas de TSK por capas. Aquí hay una lista de algunas de las herramientas y dónde encajan.

Capa de gestión de medios: mmls, mmcat, mmstat Capa del sistema de archivos: fsstat

Capa de nombre de archivo (interfaz humana): fls , ffind Capa de metadatos (inodo): icat, ils, ifind, istat Capa de contenido (datos): blkcalc, blkcat, blkls, blkstat

También tenemos herramientas que se ocupan de los discos físicos y herramientas que se ocupan de los "diarios" de algunos sistemas de archivos.

Herramientas de diario: jcat, jls Herramientas de contenido de archivos: hfind, fcat

Observe que los comandos que corresponden al análisis de una capa determinada generalmente comienzan con una letra común. Por ejemplo, los comandos del sistema de archivos comienzan con fs y los comandos de capa de inodo (metadatos) comienzan con i y así sucesivamente. Si el enfoque de "capa" al que se hace referencia anteriormente le parece un poco confuso, debe tomarse el tiempo para leer la descripción general de la herramienta de TSK en: http://wiki.sleuthkit.org/index.php?title=TSK_Tool_Overview El autor hace un buen trabajo al definir y describir estas capas y cómo se unen para un análisis forense. Comprender que las herramientas TSK operan en diferentes capas es extremadamente importante.

Al realizar los siguientes ejercicios, preste atención al hecho de que la salida de cada herramienta se adapta específicamente al sistema de archivos que se analiza. Por ejemplo, el comando fsstat se usa para imprimir los detalles del sistema de archivos (capa fs). La estructura de la salida y los campos descriptivos cambian según el sistema de archivos de destino. Esto se hará evidente a lo largo de los ejercicios.

Además de las herramientas ya mencionadas, hay algunas herramientas misceláneas incluidas con el Sleuth Kit que no entran en las categorías anteriores:

tsk_recover: recupera archivos no asignados (o todos) de un sistema de archivos. tsk_gettimes: crea un archivo de cuerpo para líneas de tiempo (solo actividad de archivo) 229

Machine Translated by Google Versión 4.95.1

Introducción a Linux para los forenses y encargados de hacer cumplir la ley

Clasificador : clasifica los archivos asignados y no asignados según el tipo (imágenes, ejecutables, etc.). Extremadamente flexible y configurable. img_cat: permite la separación de metadatos y datos originales de los archivos de imagen (duplicación de medios, no imágenes). img_stat: proporciona información sobre una imagen forense. La información que proporciona depende del formato de la imagen (aff, ewf, etc.). hfind: herramienta de búsqueda de hash. Crea y busca en una base de datos indexada. sigfind: busca en un archivo determinado (imagen forense, disco, etc.) una firma hexadecimal en cualquier desplazamiento especificado (límite del sector). Se utiliza para encontrar estructuras de datos mactime: crea una línea de tiempo de la actividad del archivo. Útil para investigaciones de intrusión donde las relaciones temporales son críticas. srch_strings: como el comando de cadenas BSD estándar , pero con la capacidad de analizar diferentes codificaciones.

10.2.1 Instalación del kit de detección

En Slackware, podemos instalar TSK simplemente con sboinstall:

root@forensicbox:~# sboinstall sleuthkit ... ¿Continuar con sleuthkit? [y] ... Limpieza para sleuthkit-4.6.6...

Cuando instalamos TSK usando SlackBuild a través de sboinstall, o si lo instala manualmente desde la fuente, puede ver el proceso de compilación. Debe tenerse en cuenta que para que las herramientas de Sleuth Kit tengan soporte incorporado para imágenes en formato Expert Witness (imágenes EWF), primero debemos tener instalado libewf . Es por eso que cubrimos libewf y lo instalamos anteriormente en la guía. Mientras Sleuth Kit está configurando su proceso de instalación, busca en el sistema las bibliotecas que admite. A menos que se le indique que no incluya capacidades específicas, se compilará en consecuencia. En este caso, dado que ya tenemos instalados libewf y afflib , TSK se compilará con esos formatos compatibles. Esto nos permitirá trabajar directamente sobre imágenes EWF y AFF.29

Cuando finalice la instalación, encontrará las herramientas de Sleuth Kit ubicadas en /usr/bin. Recuerde, puede ver una lista de lo que se instaló (y otra información del paquete) al ver el archivo en /var/log/ packages/sleuthkit-:

29TSK también es compatible con los formatos VMDK y VHDI que no cubrimos en esta guía. Instale libvmdk y

libvhdi antes de instalar TSK si desea probarlos.

230

Machine Translated by Google Versión 4.95.1

Introducción a Linux para los forenses y encargados de hacer cumplir la ley

root@forensicbox:~# menos /var/log/packages/sleuthkit-4.6.6-x86_64-1_SBo sleuthkit-4.6.6-x86_64-1_SBo NOMBRE DEL PAQUETE: TAMAÑO DEL PAQUETE COMPRIMIDO: 656K ... usr/ usr/bin/ usr/bin/blkcalc usr/bin/blkcat usr/ bin/blkls usr/bin/ blkstat usr/bin/ fcat usr/bin/ffind usr/bin/fiwalk ...

Use la página del manual para cada una de las utilidades instaladas en /usr/bin que se muestran en el resultado para tener una idea de las capacidades completas de TSK.

10.3 Ejercicios del kit de detective Esta sección sigue siendo una de las secciones más populares de esta guía y proporciona ejercicios prácticos para TSK y una muestra de sus herramientas. Al igual que todos los otros ejercicios presentados aquí, se recomienda encarecidamente que los siga si puede. Usar estos comandos por su cuenta es la única forma de aprender realmente las técnicas. Lea las páginas de manual incluidas y juegue con las opciones para obtener resultados novedosos. Los archivos de imagen utilizados en los siguientes ejemplos están disponibles para su descarga y algunos ya se han descargado y utilizado anteriormente en la guía. Hay varias maneras de abordar los siguientes problemas. En algunos casos, usaremos affuse o ewfmount para proporcionar imágenes montadas en fusibles desde archivos EWF o archivos divididos. Lo haremos aquí para practicar, pero no dude en ejecutar las herramientas directamente en los archivos de imagen (habrá demostraciones de ambos). Practica y experimenta. También usaremos algunos de los archivos de imagen más antiguos que se usaron en versiones anteriores de la guía. Si bien las imágenes son antiguas y los sistemas de archivos algo obsoletos, los usamos aquí porque proporcionan un vehículo perfecto para demostrar el uso de herramientas. Comprenderá esto un poco más a medida que avancemos. Podemos comparar la salida de algunas de las imágenes más nuevas y comprenderá algunas de las limitaciones.

Para el siguiente conjunto de ejercicios, usaremos la imagen able2 , una de las imágenes más antiguas pero más educativas que hemos usado. Cree un directorio para la imagen de able2 y luego cd en el directorio. Como de costumbre, descargue con wget y verifique el hash, asegurándose de que coincida con lo que tenemos aquí:

231

Machine Translated by Google Versión 4.95.1

Introducción a Linux para los forenses y encargados de hacer cumplir la ley

barry@forensicbox:~$ mkdir capaz2 barry@forensicbox:~$ cd capaz2 barry@forensicbox:able2$ wget https://www.linuxleo.com/Files/able2.tar.gz barry@forensicbox:able2$ sha1sum able2.tar.gz a093ec9aed6054665b89aa82140803790be97a6e able2.tar.gz

Extraiga el archivo para descomprimir la imagen y luego comencemos. Pon tus manos en el teclado y síguelo.

barry@forensicbox:able2$ tar tzf able2.tar.gz lrkn.2139.README lrk3/README

La diferencia con este comando tar es que especificamos que queremos que la salida se envíe a stdout (O -letra mayúscula 'oh') para que podamos redirigirla. También especificamos el nombre del archivo que queremos extraer del archivo (lrk3/README). Todo esto se redirige a un nuevo archivo llamado lrkn.2139.LÉAME.

Si lee ese archivo (usar menos), descubrirá que hemos descubierto un "rootkit", lleno de programas utilizados para ocultar la actividad de un hacker. Brevemente, veamos un tipo diferente de archivo recuperado por icat. El concepto es el mismo, pero en lugar de extraer un archivo, puede transmitir su contenido a stdout para verlo. Recuerde nuestra lista de directorio anterior del directorio .001 en el inodo 11105: barry@forensicbox:able2$ fls -o 10260 able2.dd 11105 r/r 2138: lolit_pics.tar.gz r/r 11107: lolitaz1 r/r 11108: lolitaz10 r/r 11109: lolitaz11 r/r 11110: lolitaz12 r/ r 11111: lolitaz13 r/r 11112: lolitaz2 r/ r 11113: lolitaz3 r/r 11114: lolitaz4 r/r 11115: lolitaz5

241

Machine Translated by Google Versión 4.95.1

Introducción a Linux para los forenses y encargados de hacer cumplir la ley

r/r 11116: lolitaz6 r/r 11117: lolitaz7 r/r 11118: lolitaz8 r/r 11119: lolitaz9

Podemos determinar el contenido del archivo (asignado) en el inodo 11108, por ejemplo, usando icat para transmitir los bloques de datos del inodo a través de una canalización al comando de archivo . Usamos el '-' para indicar que el archivo está recibiendo su entrada de la tubería:

barry@forensicbox:able2$ icat -o 10260 able2.dd 11108 | archivo - /dev/ stdin: datos de imagen GIF, versión 89a, 233 x 220

La salida muestra que estamos tratando con un archivo de imagen. Así que decidimos usar el comando de visualización para mostrarnos los contenidos. display es un programa útil ya que tomará la entrada de stdin (de una tubería). Esto es particularmente útil con el comando icat .

barry@forensicbox:able2$ icat -o 10260 able2.dd 11108 | monitor

Esto da como resultado una imagen que se abre en una ventana, suponiendo que esté ejecutando en un entorno gráfico y tenga instalado ImageMagick, que proporciona la utilidad de visualización .

Figura 11: La imagen producida por la pantalla cuando se usa directamente desde icat

10.3.2 Sleuth Kit Ejercicio 1B: Identificación y recuperación de archivos eliminados (ext4)

El ejercicio anterior es una buena base para aprender a ejecutar comandos TSK contra una imagen forense e identificar y extraer archivos. Usamos una imagen forense más antigua de un ext2 242

Machine Translated by Google Versión 4.95.1

Introducción a Linux para los forenses y encargados de hacer cumplir la ley

porque nos permite ejecutar el curso completo de las herramientas de identificación y extracción proporcionadas por TSK. Podemos hacer esto porque los archivos ext2 que se eliminan todavía tienen suficiente información en sus metadatos del sistema de archivos asociados ("inodo" para sistemas de archivos EXT) para poder recuperar el archivo. Como verá en las próximas páginas, esto ha cambiado para el sistema de archivos ext4. Como se ha dejado claro en el pasado, esto no pretende ser una educación sobre los sistemas de archivos en general. Más bien, el propósito aquí es resaltar las herramientas y cómo puede esperar resultados diferentes según el sistema de archivos que se esté examinando. También queremos asegurarnos de que se conozcan las limitaciones de nuestras herramientas. Si aprendiera TSK solo en un sistema de archivos ext2, podría esperar que funcionara exactamente de la misma manera en ext4. Este no es el caso, y este ejercicio lo ilustra. Es una de las razones principales por las que se agregó la imagen able_3 a nuestro conjunto de problemas.

Así que ahora vamos a replicar aproximadamente el mismo análisis que el ejercicio anterior, pero esta vez examinando un sistema de archivos ext4 en la imagen capaz_3 . Seremos breves en la explicación de los comandos, ya que son básicamente los mismos que ejecutamos en el ejercicio 1A. Revise ese ejercicio y asegúrese de estar familiarizado con los comandos utilizados antes de continuar aquí. Los archivos que se recuperan son los mismos, pero su ubicación difiere un poco de la imagen de able2 .

Primero tenemos que decidir cómo queremos acceder a nuestro archivo de imagen. La imagen de disco de able_3 , tal como se descargó, es un conjunto de cuatro imágenes divididas. Como hemos hecho antes, puede usar affuse para montar las divisiones como una sola imagen e incluso usar losetup -P para separar las particiones. Pero dado que Sleuth Kit admite el análisis de archivos de imágenes divididas, seguiremos adelante y los dejaremos como están. Puede usar el comando img_stat de TSK para documentar esto. Comience cambiando al directorio able_3 que creamos previamente para nuestros archivos de imagen, ejecute img_stat para ver el soporte de archivos divididos y ejecute mmls para identificar las particiones. Al usar TSK en imágenes divididas, solo necesitamos proporcionar el primer archivo de imagen en el conjunto (la misma regla se aplica a los archivos EWF, solo proporciona el primer nombre de archivo en el conjunto): barry@forensicbox:~$ cd capaz_3 barry@forensicbox:able_3$ img_stat able_3.000 INFORMACIÓN DEL ARCHIVO DE IMAGEN --------------------------------------------

Tipo de imagen: crudo Tamaño en bytes: 4294967296 Tamaño del sector: 512

-------------------------------------------Información dividida: able_3.000 (0 a 1073741823) able_3.001 (1073741824 a 2147483647) able_3.002 (2147483648 a 3221225471) able_3.003 (3221225472 a 4294967295)

243

Machine Translated by Google Versión 4.95.1

Introducción a Linux para los forenses y encargados de hacer cumplir la ley

barry@forensicbox:able_3$ mmls capaz_3.000 Tabla de particiones GUID (EFI) Sector de compensación: 0

Las unidades están en sectores de 512 bytes Ranura

000: Meta

comienzo

Final

Longitud

Descripción

0000000000 0000000000 0000000001 Tabla de seguridad

001: ------- 0000000000 0000002047 0000002048 Sin asignar 002: Meta

0000000001 0000000001 0000000001 Encabezado GPT

003: Meta

0000000002 0000000033 0000000032 Tabla de partición

004: 000

0000002048 0000104447 0000102400 Sistema de archivos Linux

005: 001

0000104448 0000309247 0000204800 Sistema de archivos Linux

006: ------- 0000309248 0000571391 0000262144 Sin asignar 007: 002

0000571392 0008388574 0007817183 Sistema de archivos Linux

008: ------- 0008388575 0008388607 0000000033 Sin asignar

Dado que nuestro propósito aquí es resaltar las diferencias entre el examen de esta imagen establecer frente a la imagen de able2 , en lugar de buscar cada partición individualmente, solo nos centraremos en la partición /home . Recuerde de nuestro ejercicio de reconstrucción del sistema de archivos que la partición utilizada para el directorio /home en la imagen able_3 es la partición en o set 104448 (negrita para énfasis arriba). Ejecute fsstat en esa partición para identificar el tipo de sistema de archivos y la información. podrías desea canalizar la salida a través de menos para una visualización más fácil:

barry@forensicbox:able_3$ fsstat -o 104448 able_3.000 INFORMACIÓN DEL SISTEMA DE ARCHIVOS

--------------------------------------------

Tipo de sistema de archivos: Ext4 Nombre del volumen:

Id. de volumen: 7273603b5810169e264dded90f4cacc4

Último escrito en: 2017-05-25 15:20:50 (EDT) Última consulta: 2017-05-06 16:49:45 (EDT)

Montado por última vez el: 2017-05-25 15:10:23 (EDT)

Desmontado correctamente

Montado por última vez el: /home ...

Aquí vemos que estamos examinando un sistema de archivos ext4 que se montó en /home. ejecutar un rápido comando fls para ver el contenido de esta partición:

barry@forensicbox:able_3$ fls -o 104448 able_3.000

d/d 11: perdido+encontrado

244

Machine Translated by Google Versión 4.95.1

Introducción a Linux para los forenses y encargados de hacer cumplir la ley

d/d 12: ftp d/d 13: alberto

V/V 25689: $Archivos huérfanos

Puedes ver que hay pocas entradas aquí. Puede comenzar a profundizar proporcionando el inodo al comando fls para el contenido de directorios individuales, pero en su lugar simplemente haremos un archivos recursivos

barry@forensicbox:able_3$ fls -o 104448 -r capaz_3.000 d/d 11: perdido+encontrado

d/d 12: ftp d/d 13: alberto + d/d 14: .h ++ r/d * 15(realizar): lolit_pics.tar.gz ++ r/r * 16(realizar): lolitaz1 ++ r/r * 17: lolitaz10 ++ r/r * 18: ++ r/

lolitaz11

r * 19: ++ r/r 20:

lolitaz12

lolitaz13 ++ r/r * 21: ++ r/

lolitaz2

r * 22:

lolitaz3

++ r/r * 23:

lolitaz4

++ r/r * 24:

lolitaz5

++ r/r * 25:

lolitaz6

++ r/r * 26:

lolitaz7

++ r/r * 27:

lolitaz8

++ r/r * 28: + d/d

lolitaz9

15: Descargar ++ r/r 16: índice.html ++ r/r * 17: lrkn.tar.gz

V/V 25689: $Archivos huérfanos

Puede ver algunos archivos familiares en esta salida. Vemos las lolitaz les que vimos en el .001 directorio en able2, y también vemos el archivo lrkn.tar.gz que recuperamos y extrajimos el LÉAME de. Para este ejercicio, nos interesarán las lolitaz les. El lrkn.tar.gz

el contenido vendrá más tarde. Notará que la mayoría de los archivos residen en un (no eliminado) llamado .h y son archivos no asignados (señalados con un asterisco *). Ahí es un único archivo asignado en ese directorio llamado lolitaz13. Compare la salida de istat y un comando icat de seguimiento entre el asignado le lolitaz13 (inodo 20), y uno de los archivos borrados - usaremos lolitaz2 (inode 21). Para el comando icat , canalizaremos la salida a nuestro visor hexadecimal xxd y mire las primeras cinco líneas con head -n 5. Aquí está el resultado de ambos:

barry@forensicbox:able_3$ istat -o 104448 able3.000 20 inodo: 20

245

Machine Translated by Google

Versión 4.95.1

Introducción a Linux para los forenses y encargados de hacer cumplir la ley

Asignado Grupo: 0 Identificación de generación: 1815721463

uid/gid: 1000/100 modo: rrw-r-r--

Banderas: Extensiones, tamaño: 15045 número de enlaces: 1

Tiempos de inodo: Acceso: 2017-05-08 00:18:16 (EDT) Archivo modificado: 2003-08-03 19:15:07 (EDT) Inodo modificado: 2017-05-08 00:18:16 (EDT) Bloques directos: 9921 9922 9923 9924 9925 9926 9927 9928 9929 9930 9931 9932 9933 9934 9935

barry@forensicbox:able_3$ icat -o 104448 able3.000 20 | xdd | cabeza -n 5 00000000: ffd8 ffe0 0010 4a46 4946 0001 0100 0001 ......JFIF...... 00000010: 0001 0000 ffdb 0043 0008 0606 0706 0508 .........C........ 00000020: 0707 0709 0908 0a0c 140d 0c0b 0b0c 1912 ................ 00000030: 130f 141d 1a1f 1e1d 1a1c 1c20 242e 2720 ........... $.' 00000040: 222c 231c 1c28 3729 2c30 3134 3434 1f27 ",#..(7),01444.'

La salida interesante de istat está resaltada en rojo. Podemos ver que el inodo está asignado y los datos se pueden encontrar en los bloques directos especificados en la parte inferior. Cuando se ve con xxd y head , vemos la firma esperada de una imagen JPEG. ... y ahora para el inodo 21 no asignado:

barry@forensicbox:able_3$ istat -o 104448 able3.000 21 inodo: 21 No asignado Grupo: 0 ID de generación: 1815721464 uid/gid: 1000/100 modo: rrw-r--r--

Banderas: Extensiones, tamaño: 0

número de enlaces: 0 Tiempos de inodo: Acceso: 2017-05-08 00:18:16 (EDT) Archivo modificado: 2017-05-08 00:22:58 (EDT) Inodo modificado: 2017-05-08 00:22:58 (EDT) Eliminado:

2017-05-08 00:22:58 (EDT)

246

Machine Translated by Google Versión 4.95.1

Introducción a Linux para los forenses y encargados de hacer cumplir la ley

Bloques directos:

barry@forensicbox:able_3$ icat -o 104448 able3.000 21 | xdd | head -n 5

Aquí tenemos un resultado diferente. El inodo 21 apunta a un archivo no asignado. En un sistema de archivos ext4, cuando se anula la asignación de un inodo, se borra la entrada para los bloques directos . Ya no hay punteros a los datos, por lo que los comandos como icat no funcionarán. Recuerde que icat funciona en la capa de inodo (archivo de metadatos). El comando icat usa la información que se encuentra en el inodo para recuperar el archivo. En este caso no hay ninguno. Esto no significa que no podamos recuperar los datos que estaban allí. Por el contrario, existen varias técnicas que podemos utilizar para intentar recuperar los archivos eliminados. Pero en este caso se vuelve mucho más difícil recuperar los datos y asociarlos con un nombre de archivo e información de inodo en particular. Si bien este tipo de análisis forense está fuera del alcance de nuestro ejercicio, destaca la diferencia entre usar estas herramientas en dos sistemas de archivos diferentes. Y ese es el punto: conozca sus herramientas, sus capacidades y sus límites. Cuando probamos herramientas para uso forense, no es suficiente decir "La herramienta X no funciona en el sistema de archivos Y". Deberías entender por qué. En este caso, sería correcto decir que "icat funciona como se espera en un sistema de archivos ext4, pero tiene un uso limitado en entradas eliminadas". ¡Asegúrese de entender la diferencia y pruebe sus herramientas!

10.3.3 Sleuth Kit Ejercicio 2A: Búsqueda de cadenas físicas y estado de asignación (ext2) Hicimos una recuperación muy básica de una búsqueda de cadena física en nuestra imagen del sistema de archivos fat_fs.raw anteriormente en este documento. Este ejercicio pretende tomar algo de lo que aprendimos allí y aplicarlo a una imagen de disco más compleja con desafíos adicionales. En un examen normal, querrá averiguar (si es posible) a qué archivo pertenece un resultado de búsqueda de cadena positivo y si ese archivo está asignado o no. Ese es el propósito de este ejercicio. Ejercicios como este resaltan muy claramente el beneficio de aprender análisis forense digital con herramientas como Sleuth Kit. A diferencia de la mayoría de las herramientas forenses de GUI con menús y múltiples ventanas, TSK lo obliga a comprender estos conceptos detrás de las herramientas. No puede usar TSK sin comprender qué herramientas usar y cuándo. Sin conocer los conceptos detrás de las herramientas, no llegará muy lejos. Volver a nuestra imagen de able2 . Esta vez vamos a hacer una búsqueda de una sola cadena en able2.dd. En este caso buscaremos en nuestra imagen la palabra clave Cybernetik. Cambie al directorio que contiene nuestra imagen able2.dd y use grep para buscar la cadena: barry@forensicbox:~$ cd capaz2

247

Machine Translated by Google Versión 4.95.1

Introducción a Linux para los forenses y encargados de hacer cumplir la ley

barry@forensicbox:able2$ grep -abi cybernetik able2.dd 10561603: * actualizado por Cybernetik para el rootkit de Linux 55306929:Cybernetik presenta con orgullo...

55312943: Correo electrónico: [email protected] 55312975: Dedo: [email protected]

Recuerde que nuestro comando grep toma el archivo able2.dd, lo trata como un archivo de texto (-a) y busca la cadena cybernetik. La búsqueda no distingue entre mayúsculas y minúsculas (-i) y generará el conjunto de bytes de cualquier coincidencia (-b). Nuestro resultado muestra que la primera coincidencia se encuentra en el byte de compensación 10561603. Como hicimos en nuestro ejercicio de búsqueda de la primera cadena, vamos a ver rápidamente la coincidencia usando nuestro visor hexadecimal xxd y usando la opción -s para proporcionar la compensación dada. por grep. También usaremos el comando head para indicar que solo queremos ver un número especí co de líneas, en este caso solo 5 (-n 5). Solo queremos echar un vistazo rápido al contexto de la coincidencia antes de continuar.

barry@forensicbox:able2$ xxd -s 10561603 able2.dd | head -n 5 00a12843: 202a 0975 7064 6174 6564 2062 7920 4379 *.actualizado por Cy 00a12853: 6265 726e 6574 696b 2066 6f72 206c 696e bernetik para lin 00a12863: 7578 2072 6f6f 746b 6974 0a20 2a2f 0a0a ux rootkit. */.. 00a12873: 2369 6e63 6c75 6465 203c 7379 732f 7479 #include .#include

También debemos tener en cuenta que lo que hemos encontrado es el desplazamiento de la coincidencia en todo el disco (able2.dd es una imagen de disco completa), no en un sistema especí co. Para usar las herramientas del Sleuth Kit, necesitamos tener un sistema de archivos para apuntar. Averigüemos en qué partición (y sistema de archivos) se encuentra la coincidencia. Use bc para calcular en qué sector de la imagen y, por lo tanto, el disco original en el que se encuentra la palabra clave. Cada sector tiene 512 bytes, por lo que dividir el conjunto de bytes por 512 nos dice que sector:

barry@forensicbox:able2$ echo "10561603/512" | antes de Cristo

El comando mmls de Sleuth Kit nos da el desplazamiento de cada partición en la imagen:

barry@forensicbox:able2$ mmls able2.dd Tabla de particiones de DOS Sector de compensación: 0

Las unidades están en sectores de 512 bytes

Ranura

000: Meta

comienzo

Final

Longitud

0000000000 0000000000 0000000001 Tabla primaria (#0)

001: ------- 0000000000 0000000056 0000000057 Sin asignar

248

Descripción

Machine Translated by Google Versión 4.95.1

Introducción a Linux para los forenses y encargados de hacer cumplir la ley

Figura 12: El conjunto de sectores en able2.dd donde se encontró el resultado de la búsqueda.

002: 000:000 0000000057 0000010259 0000010203 Linux (0x83) 003: 000:001 0000010260 0000112859 0000102600 Linux (0x83) 004: 000:002 0000112860 0000178694 0000065835 Cambio de Linux/Solaris x86 (0 ,ÿ x82) 005: 000:003 0000178695 0000675449 0000496755 Linux (0x83)

Del resultado de mmls anterior, vemos que nuestro sector calculado, 20628, cae en la segunda partición (entre 10260 y 112859). El desplazamiento de nuestro sistema de archivos para los comandos del Sleuth Kit será 10260.

El problema es que el desplazamiento que tenemos es el desplazamiento de la palabra clave en la imagen del disco, no en el sistema de archivos (que es con lo que está asociado el bloque de datos de volumen). Así que tenemos que calcular el desplazamiento del archivo Y el desplazamiento de la partición que contiene el archivo. El ajuste a la partición es simplemente una cuestión de multiplicar el ajuste del sector por el tamaño del sector para nuestro sistema de archivos:

barry@forensicbox:able2$ echo "10260*512" | antes de Cristo 5253120

La diferencia entre los dos es el desplazamiento del volumen del hit de la palabra clave, en lugar del desplazamiento del disco físico (o imagen). barry@forensicbox:able2$ echo "10561603-5253120" | ac 5308483

249

Machine Translated by Google Versión 4.95.1

Introducción a Linux para los forenses y encargados de hacer cumplir la ley

Figura 13: El volumen compensado en able2.dd donde se encontró el resultado de la búsqueda.

Figura 14: El desplazamiento a la palabra clave en el volumen

Ahora conocemos el desplazamiento de la palabra clave dentro del volumen real, en lugar de la imagen completa. Averigüemos qué inodo (unidad de metadatos) apunta al bloque de datos de volumen en ese desplazamiento. Para encontrar a qué inodo pertenece, primero tenemos que calcular la dirección del bloque de datos de volumen. Mire la salida fsstat del Sleuth Kit para ver la cantidad de bytes por bloque. Necesitamos ejecutar fsstat en el sistema de archivos en el sector o set 10260:

barry@forensicbox:able2$ fsstat -o 10260 able2.dd INFORMACIÓN DEL SISTEMA DE ARCHIVOS

-------------------------------------------Tipo de sistema de archivos: Ext2 Nombre del volumen:

Id. de volumen: 906e777080e09488d0116064da18c0c4

250

Machine Translated by Google

Versión 4.95.1

Introducción a Linux para los forenses y encargados de hacer cumplir la ley

... INFORMACIÓN DE CONTENIDO

-------------------------------------------Rango de bloque: 0 - 51299 Tamaño del bloque: 1024

El resultado abreviado de fsstat anterior nos muestra (resaltado en negrita) que los bloques de datos dentro del volumen tienen 1024 bytes cada uno. Si dividimos el volumen compensado por 1024, identificamos el bloque de datos que contiene el resultado de la palabra clave. barry@forensicbox:able2$ echo "5308483/1024" | aC 5184

Figura 15: Identificación del bloque de datos de la palabra clave

Aquí están nuestros cálculos, resumidos:

o establezca la cadena en la imagen del disco (de nuestra salida grep ): 10561603 o establecer en la partición que contiene el archivo: 10260 sectores

*

512 bytes por sector

o establecido en la cadena en la partición es la diferencia entre los dos números anteriores. el bloque de datos es el desplazamiento en el sistema de archivos dividido por el tamaño del bloque (tamaño de la unidad de datos) 1024, de nuestra salida fsstat .

En resumen, nuestro cálculo, teniendo en cuenta todas las ilustraciones anteriores, es simplemente: barry@forensicbox:able2$ echo "(10561603-(10260*512))/1024" | aC 5184

Tenga en cuenta que usamos paréntesis para agrupar nuestros cálculos. Encontramos el byte desplazado al sistema de archivos primero (10260*512), lo restamos del desplazamiento a la cadena (10561603) y luego dividimos todo por el tamaño de la unidad de datos (1024) obtenido de fsstat. Este (5184) es nuestro 251

Machine Translated by Google Versión 4.95.1

Introducción a Linux para los forenses y encargados de hacer cumplir la ley

Figura 16: Cálculo único para identificar el bloque de datos de la palabra clave

unidad de datos (¡no el inodo!) que contiene la cadena que encontramos con grep. Muy rápidamente, podemos determinar su estado de asignación con el comando blkstat de Sleuth Kit

barry@forensicbox:able2$ blkstat -o 10260 able2.dd 5184 Fragmento: 5184 Grupo no asignado: 0

El comando blkstat toma un bloque de datos de un sistema de archivos y nos dice lo que puede sobre su estado y a dónde pertenece. Cubriremos las herramientas TSK blk con más detalle más adelante. Entonces, en este caso, blkstat nos dice que nuestra búsqueda de palabras clave para la cadena cybernetik resultó en una coincidencia en un bloque no asignado. Ahora usamos ifind para decirnos qué inodo (estructura de metadatos) apunta al bloque de datos 5184 en la segunda partición de nuestra imagen:

barry@forensicbox:able2$ ifind -o 10260 -d 5184 able2.dd 10090

¡Excelente! El inodo que contiene la coincidencia de palabras clave es 10090. Ahora usamos istat para obtener las estadísticas de ese inodo:

barry@forensicbox:able2$ istat -o 10260 able2.dd 10090 inodo: 10090 No asignado Grupo: 5 Identificación de generación: 3534950782

uid/gid: 4/7 modo: rrwr--r-tamaño: 3591

número de enlaces: 0

252

Machine Translated by Google Versión 4.95.1

Introducción a Linux para los forenses y encargados de hacer cumplir la ley

Tiempos de inodo: Acceso: 2003-08-10 00:18:36 (EDT) Archivo modificado: 1996-12-25 16:27:43 (EST) Inodo modificado: 2003-08-10 00:29:58 (EDT) Eliminado:

2003-08-10 00:29:58 (EDT)

Bloques directos: 5184 5185 5186 5187

De la salida de istat vemos que el inodo 10090 no está asignado (igual que blkstat nos dijo sobre la unidad de datos). Tenga en cuenta también que el primer bloque directo indicado por nuestra salida de istat es 5184, tal como lo calculamos. Podemos obtener los datos de los bloques directos del archivo original usando icat -r. Canalice la salida a través de less para que podamos leerla más fácilmente. Tenga en cuenta que nuestra palabra clave está justo en la parte superior: barry@forensicbox:able2$ icat -o 10260 able2.dd 10090 | menos /* * fijador.c * por Idefix * inspirado en sum.c y SaintStat 2.0 * actualizado por Cybernetik para linux rootkit */

#include #include #include #include ...

En este punto, hemos recuperado los datos que buscábamos. Podemos ejecutar nuestro comando icat como se indicó anteriormente nuevamente, esta vez dirigiendo la salida a un archivo (como hicimos con el archivo rootkit de nuestro ejercicio de recuperación anterior). Lo haremos aquí para una posible referencia posterior: barry@forensicbox:able2$ cat -o 10260 able2.dd 10090 > 10090.recuperar

barry@forensicbox:able2$ ls -l 10090.recover -rw-r--r-- 1 usuarios de barry 3591 30 de julio 06:47 10090.recover

barry@forensicbox:able2$ md5sum 10090.recuperar c3b01f91d3fa72b1b951e6d6d45c7d9a 10090.recuperar

Una nota adicional: Sleuth Kit proporciona un directorio virtual que contiene entradas para 253

Machine Translated by Google Versión 4.95.1

Introducción a Linux para los forenses y encargados de hacer cumplir la ley

les huérfanos. Como señalamos anteriormente, en nuestra discusión sobre el comando fls , estos archivos son el resultado de un inodo que contiene datos de archivo que no tienen un nombre de archivo (entrada de directorio) asociado. Sleuth Kit los organiza en el directorio virtual $OrphanFiles . Esta es una función útil porque nos permite identificar y acceder a archivos huérfanos desde la salida del comando fls .

En este ejercicio, determinamos a través de nuestros cálculos que estábamos buscando el contenido del inodo 10090. El comando ffind de Sleuth Kit puede decirnos el nombre del archivo asociado con un inodo. Aquí, se nos proporciona la entrada $OrphanFiles :

barry@forensicbox:able2$ ffind -o 10260 able2.dd 10090 * / $OrphanFiles/OrphanFile-10090

Recuerde que varios sistemas de archivos actúan de manera muy diferente. Continuaremos explorando las diferencias entre ext2 y ext4 aquí en el próximo ejercicio. Al igual que el ejercicio #1 de TSK, vamos a hacer el mismo conjunto de pasos en la imagen de able_3 y veremos qué obtenemos.

10.3.4 Sleuth Kit Ejercicio 2B: Búsqueda de cadenas físicas y estado de asignación (ext4)

Al igual que el ejercicio #1 de TSK, vamos a repetir nuestros pasos aquí para la imagen ext4 en able_3.000. Una vez más, estamos ilustrando las diferencias en la salida de nuestras herramientas según el tipo de sistema de archivos que se analiza para que podamos reconocer la diferencia que el comportamiento del sistema de archivos hace en nuestra salida. No hay diagramas esta vez. Debe estar familiarizado con los comandos que vamos a utilizar aquí. El objetivo es mostrar el resultado que podemos esperar al final y cómo quizás podamos manejarlo.

Cambie de nuevo al directorio able_3/ donde se almacena el conjunto de imágenes able_3 . En el ejercicio de able2 hicimos una búsqueda en disco completo del término cybernetik. En este caso tenemos un conjunto de imágenes divididas. Sabemos que las herramientas de Sleuth Kit funcionan en los archivos divididos, pero ¿cómo grep el disco completo cuando tengo imágenes divididas? Como mencionamos en nuestro ejercicio anterior de able_3 , podemos usar affuse para proporcionarnos una imagen de disco completa montada en fusible. En este caso, sin embargo, no necesito una imagen de disco completa excepto por el comando grep . Y dado que grep tomará la entrada de stdin (a través de una tubería), ¿por qué no simplemente transmitir las imágenes a través de una tubería a grep para que aparezcan como una sola imagen, sin un paso preliminar? Eso es lo que hacemos aquí, buscando el mismo término que hicimos antes:

barry@forensicbox:able_3$ cat able_3.00*| grep -abi cybernetik 429415089:Cybernetik presenta con orgullo... 429422127: Correo electrónico: [email protected] 429422159: Dedo: [email protected] 1632788547: *actualizado por Cybernetik para el rootkitCybernetik.net de Linux 2934551933:23140

254

Machine Translated by Google Versión 4.95.1

Introducción a Linux para los forenses y encargados de hacer cumplir la ley

Usamos el comando cat para transmitir nuestros archivos divididos a grep para nuestra búsqueda. Esto no es diferente que reconstruir el archivo (creando una sola imagen con cat >), sino que simplemente pasamos la salida de cat directamente a grep. El comando puede tomar más tiempo y la palabra clave compensa son obviamente diferentes que en able2 porque esta es una imagen más grande y diferente. Estamos vamos a concentrarnos en la misma coincidencia que usamos para nuestro ejercicio de able2 ext2. Eso sería la palabra clave acertó en 1632788547. Recuerda nuestros pasos desde aquí. Necesitamos calcular el desplazamiento en sectores (dividir por 512), luego calcule el desplazamiento al volumen en el que encontramos la palabra clave, y luego reste el volumen o set de la palabra clave o set para encontrar el o set a la cadena en el volumen. Hacer seguro que calculamos usando el tamaño de bloque correcto para el sistema de archivos. Recuerda que estamos trabajando con bloques de datos aquí. El comando ffstat le dará el tamaño adecuado para este sistema de archivos. Terminamos con los números a continuación. Revisa el ejercicio anterior si tienes alguna duda sobre los pasos dados:

barry@forensicbox:able_3$ echo $((1632788547/512)) 3189040

barry@forensicbox:able_3$ mmls capaz_3.000 Tabla de particiones GUID (EFI) Sector de compensación: 0

Las unidades están en sectores de 512 bytes Ranura

000: Meta

comienzo

Final

Longitud

Descripción

0000000000 0000000000 0000000001 Tabla de seguridad

001: ------- 0000000000 0000002047 0000002048 Sin asignar 002: Meta

0000000001 0000000001 0000000001 Encabezado GPT

003: Meta

0000000002 0000000033 0000000032 Tabla de partición

004: 000

0000002048 0000104447 0000102400 Sistema de archivos Linux

005: 001

0000104448 0000309247 0000204800 Sistema de archivos Linux

006: ------- 0000309248 0000571391 0000262144 Sin asignar 007: 002

0000571392 0008388574 0007817183 Sistema de archivos Linux

008: ------- 0008388575 0008388607 0000000033 Sin asignar

barry@forensicbox:able_3$ fsstat -o 571392 able_3.000 | menos INFORMACIÓN DEL SISTEMA DE ARCHIVOS

--------------------------------------------

Tipo de sistema de archivos: Ext4 Nombre del volumen:

Id. de volumen: dd9f5b9524f943aae944383ab248f7c7 ... INFORMACIÓN DE CONTENIDO

-------------------------------------------Grupos de bloques por grupo flexible: 16 Rango de bloque: 0 - 977146

Tamaño del bloque: 4096

255

Machine Translated by Google Versión 4.95.1

Introducción a Linux para los forenses y encargados de hacer cumplir la ley

Bloques gratis: 557639

... barry@forensicbox:able_3$ echo "(1632788547-(571392*512))/4096" | antes de cristo 327206

Estamos listos para ejecutar nuestro comando blkstat para averiguar si nuestro hit de palabra clave está en un bloque asignado a un inodo asignado:

barry@forensicbox:able_3$ blkstat -o 571392 able_3.000 327206 Fragmento: 327206 No asignado Grupo: 9

Entonces el bloque no está asignado. Veamos ahora si podemos encontrar a qué inodo pertenecía este bloque no asignado:

barry@forensicbox:able_3$ ifind -o 571392 -d 327206 able_3.000 Inodo no encontrado

Y ahí está nuestra respuesta. No se puede encontrar el inodo. Nuevamente, esto se debe a que los inodos en ext4 que no están asignados tienen los punteros de bloque directo eliminados. El comando ifind está buscando un puntero a la unidad de datos (-d 327206) en la tabla de inodos y no puede encontrar uno. Todo no esta perdido. En lugar de usar icat para extraer los bloques de datos a los que apunta un inodo, podemos usar blkcat para transmitir directamente el contenido de un bloque de datos. Echa un vistazo a continuación. Usaremos blkcat y redirigiremos a un archivo:

barry@forensicbox:able_3$ blkcat -o 571392 able_3.000 327206 > negro.327206 barry@forensicbox:able_3$ ls -l blk.327206 -rw-r--r-- 1 usuarios de barry 4096 30 de julio 07:31 blk.327206

Mira el le con gato o menos. Verá que es el mismo archivo que recuperamos de able2. Sin embargo, tiene algo de basura al final. ¿Porqué es eso? ¿Recuerdas cuando recuperamos este mismo archivo de able2 con icat? icat tenía la información que necesitaba para hacer una recuperación completa de los datos correctos. No tenemos eso aquí, y todo lo que hicimos fue transmitir ("block cat") un solo bloque de datos (que sabemos que son 4096 bytes de nuestra salida fsstat ) y guardar todo. Recuerde nuestro resultado del ejercicio de able2 anterior a este (los siguientes comandos se ejecutan en el directorio de able2 ; tenga en cuenta el símbolo del sistema):

barry@forensicbox:able2$ ls -l 10090.recover -rw-r--r-- 1 usuarios de barry 3591 30 de julio 06:47 10090.recover

256

Machine Translated by Google Versión 4.95.1

Introducción a Linux para los forenses y encargados de hacer cumplir la ley

barry@forensicbox:able2$ md5sum 10090.recuperar c3b01f91d3fa72b1b951e6d6d45c7d9a 10090.recuperar

Lo anterior es de la imagen de disco de able2 . Mira el tamaño del archivo. 3591 bytes. Ahora, de manera realista, no tendríamos esta información disponible para nosotros en un examen real, pero solo por diversión, veamos si podemos hacer que los archivos coincidan usando el tamaño del archivo de nuestra recuperación de able2 como guía. Dado que el archivo de able_3 es más grande, podemos usar dd para cortar los datos correctos de él. El archivo tiene actualmente un tamaño de 4096 bytes. Necesitamos que sea de 3591 bytes:

barry@forensicbox:able_3$ dd if=blk.327206 bs=1 count=3591 > 327206.recuperar 3591+0 registros en 3591+0 registros fuera 3591 bytes (3,6 kB, 3,5 KiB) copiados, 0,00413113 s, 869 kB/s

barry@forensicbox:able_3$ md5sum 327206.recuperar c3b01f91d3fa72b1b951e6d6d45c7d9a 327206.recuperar

Compare la salida de md5sum de 327206.recover con la de able2/10090.recover. ¡Mira eso! El md5sum del archivo que recuperamos de able2 con icat ahora coincide con el archivo que recuperamos usando blkcat en able_3. Nuevamente, no es del todo realista, pero sirve para ilustrar exactamente qué datos estamos obteniendo y por qué. Esperemos que haya algún valor educativo para usted allí.

10.3.5 Ejercicio 3 del kit de detectives: Extracción y examen no asignados

A medida que crece el tamaño de los medios que se examinan, muchos investigadores se dan cuenta de que las técnicas de reducción de datos son más importantes que nunca. Estas técnicas adoptan varias formas, incluido el análisis hash (eliminación de archivos "buenos" conocidos de un conjunto de datos, por ejemplo) y la separación del espacio asignado en una imagen del espacio no asignado, lo que permite buscarlos por separado con herramientas especializadas. Haremos esto último en este ejercicio.

El comando blkcat que usamos anteriormente es un miembro del conjunto de herramientas Sleuth Kit para manejar información en la capa de "bloque" del modelo de análisis. La capa de bloque consta de los bloques del sistema de archivos reales que contienen la información que buscamos. No son especí cos solo para datos no asignados, pero son especialmente útiles para trabajar en bloques no asignados que se han extraído de una imagen. Las herramientas que manipulan esta capa, como era de esperar, comienzan con blk e incluyen:

blkls blkcalc blkstat gato negro

257

Machine Translated by Google Versión 4.95.1

Introducción a Linux para los forenses y encargados de hacer cumplir la ley

Nos centraremos en blkls, blkcalc y blkstat para los próximos ejercicios. La herramienta que nos inicia aquí es blkls. Este comando "enumera todos los bloques de datos". Si usara la opción -e , la salida sería la misma que la salida de dd para ese volumen, ya que -e le dice a blkls que copie cada bloque. Sin embargo, de forma predeterminada, blkls solo copiará los bloques no asignados de una imagen.

Esto nos permite separar bloques asignados y no asignados en nuestro sistema de archivos. Podemos usar herramientas lógicas (find, ls, etc.) en los archivos "en vivo" en un sistema de archivos montado y concentrar los esfuerzos de recuperación de datos solo en aquellos bloques que pueden contener datos eliminados o no asignados. Por el contrario, cuando hacemos una búsqueda física de la salida de blkls, podemos estar seguros de que los artefactos encontrados son de contenido no asignado. Para ilustrar de lo que estamos hablando aquí, ejecutaremos el mismo ejercicio que hicimos en el Ejercicio TSK #2A, esta vez extrayendo los datos no asignados de nuestro volumen de interés y comparando el resultado del análisis de volumen completo con el análisis no asignado. Entonces, estaremos trabajando en la imagen able2.dd . Esperamos obtener los mismos resultados que obtuvimos en el Ejercicio n.º 2A, pero esta vez analizando solo el espacio no asignado y luego asociando los datos recuperados con su ubicación original en la imagen de disco completa. Primero necesitaremos cambiar al directorio que contiene nuestra imagen able2.dd . Luego revisamos la tabla de particiones y decidimos qué volumen examinaremos para saber el valor -o (o set) para nuestros comandos de Sleuth Kit. Para hacer esto, ejecutamos el comando mmls como antes:

barry@forensicbox:~$ cd capaz2

barry@forensicbox:able2$ mmls able2.dd Tabla de particiones de DOS Sector de compensación: 0

Las unidades están en sectores de 512 bytes Ranura

000: Meta

comienzo

Final

Longitud

Descripción

0000000000 0000000000 0000000001 Tabla primaria (#0)

001: ------- 0000000000 0000000056 0000000057 Sin asignar 002: 000:000 0000000057 0000010259 0000010203 Linux (0x83) 003: 000:001 0000010260 0000112859 0000102600 Linux (0x83) 004: 000:002 0000112860 0000178694 0000065835 Cambio de Linux/Solaris x86 (0 ,ÿ x82) 005: 000:003 0000178695 0000675449 0000496755 Linux (0x83)

Al igual que con el Ejercicio n.º 2, hemos decidido buscar el espacio no asignado en la segunda partición de Linux (en el conjunto 10260, en negrita arriba). Ejecutamos el comando blkls usando la opción o set -o que indica de qué sistema de archivos de partición estamos exportando el espacio no asignado. Luego redirigimos la salida a un nuevo archivo que contendrá solo los bloques no asignados de ese volumen en particular. 258

Machine Translated by Google Versión 4.95.1

Introducción a Linux para los forenses y encargados de hacer cumplir la ley

barry@forensicbox:able2$ blkls -o 10260 able2.dd > able2.blkls barry@forensicbox:able2$ ls -lh able2.blkls -rw-r--r-- 1 usuarios de barry 9,3 millones 30 de julio 09:37 able2.blkls

En el comando anterior, usamos blkls en la segunda partición (-o 10260) dentro de la imagen able2.dd y redirigimos la salida a un archivo llamado able2.blkls. El archivo able2.blkls contendrá solo los bloques no asignados del sistema de archivos de destino. En este caso, terminamos con un archivo de 9,3 M de tamaño.

Ahora, como hicimos en nuestro análisis anterior de este sistema de archivos (Ejercicio #2), usaremos grep, esta vez en el espacio no asignado extraído, nuestro archivo able2.blkls , para buscar nuestra cadena de texto de interés. Vuelva a leer el ejercicio n.° 2 si necesita refrescar estos comandos.

barry@forensicbox:able2$ grep -abi cybernetik able2.blkls 1631299: * actualizado por Cybernetik para el rootkit de Linux 9317041:Cybernetik presenta con orgullo... 9323055: Correo electrónico: [email protected] 9323087: Dedo: [email protected]

El comando grep anterior ahora nos dice que hemos encontrado la cadena cybernetik en cuatro conjuntos diferentes en el espacio no asignado extraído. Nos concentraremos en el primer golpe. Por supuesto, estos son diferentes de los desplazamientos que encontramos en el Ejercicio #2 porque ya no estamos buscando en la imagen original completa. Así que la siguiente pregunta obvia es "¿y qué?". Encontramos evidencia potencial en nuestro espacio no asignado extraído. Pero, ¿cómo se relaciona con la imagen original? Como examinadores forenses, simplemente encontrar evidencia potencial no es suficiente. También necesitamos saber de dónde proviene: la ubicación física en la imagen original, a qué archivo pertenece o (posiblemente) pertenecía, los metadatos asociados con el archivo y el contexto. Encontrar evidencia potencial en un gran bloque de espacio agregado no asignado es de poca utilidad para nosotros si no podemos al menos hacer algún esfuerzo de atribución en el sistema de archivos original.

Ahí es donde entran las otras herramientas de capa de bloque. Podemos usar blkcalc para calcular la ubicación (por bloque de datos o fragmento) en nuestra imagen original. Una vez que hayamos hecho eso, simplemente usamos las herramientas de la capa de metadatos para identificar y potencialmente recuperar el archivo original, como hicimos en nuestro esfuerzo anterior. Primero necesitamos recopilar un poco de información sobre el sistema de archivos original. Ejecutamos el comando fsstat para determinar el tamaño de los bloques de datos con los que estamos trabajando. Ya hemos hecho esto varias veces, pero la repetición es útil para resaltar la importancia de esta información.

barry@forensicbox:able2$ fsstat -o 10260 able2.dd | menos 259

Machine Translated by Google Versión 4.95.1

Introducción a Linux para los forenses y encargados de hacer cumplir la ley

INFORMACIÓN DEL SISTEMA DE ARCHIVOS

-------------------------------------------Tipo de sistema de archivos: Ext2 Nombre del volumen:

Id. de volumen: 906e777080e09488d0116064da18c0c4 ... INFORMACIÓN DE CONTENIDO

-------------------------------------------Rango de bloque: 0 - 51299 Tamaño del bloque: 1024 ...

En el comando fsstat anterior, vemos que el tamaño del bloque (en negrita) es 1024. Tomamos el desplazamiento de nuestra salida grep en la imagen de able2.blkls y lo dividimos por 1024. Esto nos dice cuántos bloques de datos no asignados hay en el imagen no asignada encontramos nuestra cadena de interés. Como de costumbre, usamos el comando echo para pasar la expresión matemática a la calculadora de línea de comandos, bc:

barry@forensicbox:able2$ echo "1631299/1024" | 1593 aC

Ahora sabemos, por el resultado anterior, que la cadena cybernetik está en el bloque de datos 1593 de nuestro archivo extraído sin asignar, able2.blkls. Aquí es donde entra en juego nuestro útil comando blkcalc . Usamos blkcalc con la opción -u para especificar que queremos calcular la dirección del bloque a partir de una imagen extraída sin asignar (de la salida de blkls ). Ejecutamos el comando en la imagen dd original porque estamos calculando el bloque de datos original en esa imagen. La pregunta que estamos respondiendo aquí es "¿Qué bloque de datos en la imagen original es el bloque 1593 sin asignar?".

barry@forensicbox:able2$ blkcalc -o 10260 -u 1593 able2.dd 5184

El comando anterior está ejecutando blkcalc en el sistema de archivos en o set 10260 (-o 10260) en el able2.dd original, pasando el bloque de datos que calculamos a partir de la imagen de blkls able2.blkls (-u 1593). El resultado es un bloque familiar 5184 (consulte el Ejercicio n.° 2A nuevamente). La siguiente ilustración brinda una representación visual de un ejemplo simple: En el ejemplo ilustrado arriba, los datos en el bloque 3 de la imagen blkls se asignarían al bloque 49 en el sistema de archivos original. Encontraríamos esto con el comando blkcalc como se muestra en la figura.

Entonces, en términos simples, extrajimos el espacio no asignado, encontramos una cadena de interés en un bloque de datos en la imagen no asignada y luego encontramos el bloque de datos correspondiente en la imagen original.

260

Machine Translated by Google Versión 4.95.1

Introducción a Linux para los forenses y encargados de hacer cumplir la ley

Figura 17: Un ejemplo simple de cómo se usa blkcalc para determinar la dirección original de una unidad de datos no asignada

Si observamos la salida de blkstat (estadísticas de bloques de datos) para el bloque 5184 en la imagen original, vemos que, de hecho, no está asignado, lo cual tiene sentido, ya que lo encontramos dentro de nuestro espacio extraído sin asignar (volvemos a la mismos resultados que en el Ejercicio #2A). Tenga en cuenta que ahora estamos ejecutando los comandos en la imagen dd original . Continuaremos en aras de la exhaustividad. Y porque es una buena práctica... barry@forensicbox:able2$ blkstat -o 10260 able2.dd 5184 Fragmento: 5184 No asignado Grupo: 0

Usando el comando blkcat podemos ver el contenido sin procesar del bloque de datos (usando xxd y menos como visor). Si queremos, incluso podemos usar blkcat para extraer el bloque, redirigiendo el contenido a otro archivo, tal como hicimos en el ejercicio #2B con nuestra imagen del sistema de archivos ext4. Si queremos recuperar el archivo real y los metadatos asociados con el bloque de datos identificado, usamos ifind para determinar qué estructura de metadatos (en este caso, inodo, ya que estamos trabajando en un sistema de archivos EXT) contiene los datos en el bloque 5184. Luego , istat nos muestra los metadatos para el inodo: barry@forensicbox:able2$ ifind -o 10260 -d 5184 able2.dd 10090

261

Machine Translated by Google Versión 4.95.1

Introducción a Linux para los forenses y encargados de hacer cumplir la ley

barry@forensicbox:able2$ istat -o 10260 able2.dd 10090 inodo: 10090 No asignado Grupo: 5 Identificación de generación: 3534950782

uid/gid: 4/7 modo: rrwr--r-tamaño: 3591

número de enlaces: 0 Tiempos de inodo: Acceso: 2003-08-10 00:18:36 (EDT) Archivo modificado: 1996-12-25 16:27:43 (EST) Inodo modificado: 2003-08-10 00:29:58 (EDT) Eliminado:

2003-08-10 00:29:58 (EDT)

Bloques directos: 5184 5185 5186 5187

Nuevamente, como vimos anteriormente, el comando istat , que nos muestra los metadatos para el inodo 10090, indica que el archivo con este inodo no está asignado y su primer bloque directo es 5184. Tal como esperábamos. Luego usamos icat para recuperar el archivo. En este caso, solo canalizamos las primeras líneas para ver nuestra cadena de interés, cybernetik.

barry@forensicbox:able2$ icat -o 10260 able2.dd 10090 | cabeza -n 10 /* * fijador.c * por Idefix * inspirado en sum.c y SaintStat 2.0 * actualizado por Cybernetik para linux rootkit */

#include #include #include

10.3.6 SleuthKit Ejercicio 4: Examen NTFS - Análisis de archivos

En este punto, hemos realizado un par de ejercicios intermedios utilizando los sistemas de archivos ext2 y ext4 de las imágenes de disco de Linux. En los siguientes ejercicios haremos algunos análisis simples en un

262

Machine Translated by Google Versión 4.95.1

Introducción a Linux para los forenses y encargados de hacer cumplir la ley

Sistema de archivos NTFS. Este es uno de los sistemas de archivos más comunes que probablemente encontrará cuando se trata de computadoras personales y empresariales en la actualidad. Algunos podrían preguntarse, "¿por qué?" Existen muchas herramientas capaces de analizar un sistema de archivos NTFS en su entorno nativo. En mi opinión, hay dos muy buenas razones para aprender a aplicar Sleuth Kit en los sistemas de archivos de Windows. En primer lugar, el Sleuth Kit se compone de una serie de herramientas separadas con conjuntos de capacidades muy discretos. La naturaleza especializada de estas herramientas significa que debe comprender su interacción con el sistema de archivos que se analiza. Esto los hace especialmente adecuados para ayudar a aprender los entresijos del comportamiento del sistema de archivos. El hecho de que Sleuth Kit haga menos trabajo por usted lo convierte en una gran herramienta de aprendizaje. En segundo lugar, una herramienta de código abierto que funciona en un entorno que no sea Windows constituye una excelente utilidad de verificación cruzada. El siguiente ejercicio demuestra un conjunto de pasos muy básicos útiles en la mayoría de los análisis. Asegúrese de seguir la línea de comando. La experimentación es la mejor manera de aprender.

Si aún no lo ha hecho, le sugiero (nuevamente) que invierta en una copia del libro de Brian Carrier: Análisis forense del sistema de archivos (publicado por Addison-Wesley, 2005). Este libro es la guía definitiva sobre el comportamiento del sistema de archivos para analistas forenses. Como recordatorio (nuevamente), el propósito de estos ejercicios NO es enseñarle sistemas de archivos o métodos forenses, sino ilustrar e introducir la información detallada que TSK puede proporcionar sobre los sistemas de archivos comunes que encuentran los examinadores de campo. Para estos ejercicios que siguen, usaremos el conjunto de archivos NTFS_Pract_2017.E01 que descargamos y usamos para nuestras secciones libewf anteriormente. Dado que estos son archivos EWF y tenemos soporte para libewf integrado en TSK, trabajaremos directamente desde esos archivos. Si aún no lo ha hecho, descargue los archivos NTFS EWF, extraiga el archivo y comencemos.

barry@forensicbox:~$ wget http://www.linuxleo.com/Files/NTFS_Pract_2017_E01.tar.gz ... barry@forensicbox:~$ tar tzf NTFS_Pract_2017_E01.tar.gz ... barry@forensicbox:~$ tar xzvf NTFS_Pract_2017_E01.tar.gz NTFS_Pract_2017/ NTFS_Práctica_2017/NTFS_Práctica_2017.E04 NTFS_Práctica_2017/NTFS_Práctica_2017.E02 NTFS_Práctica_2017/NTFS_Práctica_2017.E01 NTFS_Práctica_2017/NTFS_Práctica_2017.E03

barry@forensicbox:~$ cd NTFS_Pract_2017

Comenzaremos ejecutando una serie de comandos básicos de Sleuth Kit como lo haríamos en cualquier análisis. La estructura de la imagen forense se visualiza mediante mmls:

263

Machine Translated by Google Versión 4.95.1

Introducción a Linux para los forenses y encargados de hacer cumplir la ley

barry@forensicbox:NTFS_Pract_2017$ mmls NTFS_Pract_2017.E01 Tabla de particiones de DOS Sector de compensación: 0

Las unidades están en sectores de 512 bytes Ranura

000: Meta

comienzo

Final

Longitud

Descripción

0000000000 0000000000 0000000001 Tabla primaria (#0)

001: ------- 0000000000 0000002047 0000002048 Sin asignar 002: 000:000 0000002048 0001023999 0001021952 NTFS / exFAT (0x07)

El resultado muestra que una partición NTFS (y muy probablemente el sistema de archivos) comienza en el sector o set 2048. Este es el o set que usaremos en todos nuestros comandos de Sleuth Kit. Ahora usamos fsstat para echar un vistazo a las estadísticas del sistema de archivos dentro de esa partición:

barry@forensicbox:NTFS_Pract_2017$ fsstat -o 2048 NTFS_Pract_2017.E01 | menos INFORMACIÓN DEL SISTEMA DE ARCHIVOS --------------------------------------------

Tipo de sistema de archivos: NTFS Número de serie del volumen: CAE0DFD2E0DFC2BD Nombre del OEM: NTFS

Nombre del volumen: NTFS_2017d Versión: Windows XP

INFORMACIÓN DE METADATOS

-------------------------------------------Primer Grupo de MFT: 42581 Primer grupo de espejo MFT: 2 Tamaño de las entradas de MFT: 1024 bytes Tamaño de los registros de índice: 4096 bytes Rango: 0 - 293 Directorio raíz: 5 INFORMACIÓN DE CONTENIDO

-------------------------------------------Tamaño del sector: 512 Tamaño del grupo: 4096 ...

Al observar la salida de fsstat en nuestro sistema de archivos NTFS, vemos que difiere mucho de la salida que vimos ejecutándose en un sistema de archivos EXT de Linux. La herramienta está diseñada para proporcionar información pertinente basada en el sistema de archivos al que se dirige. Tenga en cuenta que cuando se ejecuta en un sistema de archivos NTFS, fsstat nos proporciona información especí ca de NTFS, incluidos datos sobre la tabla maestra de archivos (MFT) y valores de atributos especí cos. Ahora veremos cómo Sleuth Kit interactúa con los archivos activos y eliminados en un sistema de archivos NTFS. Primero ejecutemos fls solo en el directorio de nivel raíz de nuestra imagen: 264

Machine Translated by Google Versión 4.95.1

Introducción a Linux para los forenses y encargados de hacer cumplir la ley

barry@forensicbox:NTFS_Pract_2017$ fls -o 2048 NTFS_Pract_2017.E01 r/r 4-128-4: $AttrDef r/r 8-128-2: $BadClus r/r 8-128-1:

$BadClus:$Bad

r/r 6-128-4:

$mapa de bits

r/r 7-128-1: $arranque d/d 11-144-4: $Extender derecho 2-128-1:

$Archivo de registro

derecho 0-128-6:

$ MFT

derecho 1-128-1:

$MFTMirr

r/r 9-128-8:

$seguro:$SDS

r/r 9-144-11: $seguro:$SDH r/r 9-144-14: $Seguro:$SII r/r 10-128-1: $UpCase r/r 10-128-4: $UpCase:$Info r/r 3-128-3: $Volumen r/r 38-128-1: ProxyLog1.log d/d 35-144-1: Información de volumen del sistema d/d 64-144-2: Usuarios d/d 67-144-2: ventanas V/V 293:

$Archivos huérfanos

Tenga en cuenta que fls muestra mucha más información para nosotros que las listas de directorios normales para NTFS.

Incluidos con nuestros archivos y directorios regulares están los archivos del sistema NTFS (comenzando con el $), incluidos $MFT y $MFTMIRROR (números de registro 0 y 1). Si miras el Números MFT, verá que por alguna razón falta el registro número 5. registro MFT 5 es el directorio raíz, que es lo que estamos mostrando aquí. Al igual que la pantalla predeterminada para Los sistemas de archivos EXT con fls son el inodo 2, el valor predeterminado para NTFS es el registro MFT 5.

Puede profundizar más y más en el sistema de archivos proporcionando fls con un directorio MFT record y mostrará el contenido de ese directorio. Por ejemplo, vuelva a ejecutar el comando (utilice la flecha hacia arriba y edite el comando anterior) con el registro MFT 64 (los Usuarios directorio): barry@forensicbox:NTFS_Pract_2017$ fls -o 2048 NTFS_Pract_2017.E01 64 d/d 65-144-2: AlbertE d/d 66-144-2: ElsaE

Puede profundizar en cada directorio de esta manera. Esta es una forma de "explorar" el sistema de archivos con fls. También podemos especificar que fls solo nos muestre contenido "eliminado" en la línea de comando con la opción -d . Usaremos -F (solo entradas de archivo) y -r (recursivo) también: barry@forensicbox:NTFS_Pract_2017$ fls -o 2048 -Frd NTFS_Pract_2017.E01

265

Machine Translated by Google Versión 4.95.1

Introducción a Linux para los forenses y encargados de hacer cumplir la ley

-/r * 40-128-1: Usuarios/AlbertE/Documentos/Informe de Crédito.pdf -/r * 40-128-3: Usuarios/AlbertE/Documentos/Informe de Crédito.pdf:Zona.Identificador r/- * 0:

Users/AlbertE/Documents/ManProj/La primera bomba atómica del mundo - Manhattan

,ÿ Proyecto Documental - Películas - YouTube.url -/r * 236-128-2: -/r *

Usuarios/AlbertE/Documentos/ManProj/MMManhattan Project.docx

237-128-2: ,ÿ .url

Usuarios/AlbertE/Documentos/ManProj/El Proyecto Manhattan - YouTube

-/r * 238-128-2:

Usuarios/AlbertE/Documentos/ManProj/La primera bomba atómica del mundo -

,ÿ Documental del Proyecto Manhattan - Películas - YouTube.url -/r * 239-128-2: -/r * 248-128-2: r/- * 0: r/r *

Usuarios/AlbertE/Documentos/ManProj/manhattan_project.zip Usuarios/AlbertE/Documentos/cyberbullying_by_proxy.doc Usuarios/AlbertE/Pictures/Tails/Thumbs.db

221-128-2: -/r *

Usuarios/AlbertE/Pictures/Tails/Thumbs.db

216-128-2: -/r *

Usuarios/AlbertE/Pictures/Tails/BigBikeBH1017.jpg

217-128-2: -/r *

Usuarios/AlbertE/Pictures/Tails/BigBikeSoloCBR900SC33.jpg

218-128-2: -/r *

Usuarios/AlbertE/Pictures/Tails/BigBikeTailBandit.jpg

219-128-2:

Usuarios/AlbertE/Pictures/Tails/GemoTailG4.jpg

-/r * 220-128-2:

Usuarios/AlbertE/Pictures/Tails/GemoTailUniversal.jpg

r/- * 0:

Windows/Prefetch/EXPLORER.EXE-A80E4F97.pf

r/- * 0:

Windows/Prefetch/MAINTENANCESERVICE.EXE-28D2775E.pf

r/- * 0:

Windows/Prefetch/RUNDLL32.EXE-411A328D.pf

d/- * 0:

Windows/Sistema32

-/r * 167-128-2: Windows/Ubicación de colocación 2.kml -/r * 168-128-2: Windows/Ubicación de entrega 1.kml -/r * 169-128-2: Ventanas/Lugar de encuentro.kml -/r * 170-128-2: Windows/Nums_to_use.txt -/r * 171-128-2:

Windows/micaso.jpg

-/r* 172-128-2:

Windows/mycase.jpg_original

-/r * 173-128-2:

Windows/ubicación de recogida.kml

El resultado anterior muestra que nuestro sistema de archivos de ejemplo NTFS contiene una cantidad de archivos eliminados en varios directorios. Echemos un vistazo más de cerca a la información especí ca de NTFS que puede analizarse con las herramientas TSK. Eche un vistazo al archivo eliminado en la entrada 216 de MFT . El archivo es Users/AlbertE/Pictures/Tails ,ÿ /BigBikeBH1017.jpg. Podemos echar un vistazo más de cerca a los atributos del archivo examinando su Entrada de MFT directamente con istat. Recuerde que cuando trabajábamos en un sistema de archivos EXT anteriormente, la salida de istat nos daba información directamente del inodo del especificado le (consulte el ejercicio n.º 1 del equipo de detectives). Así que ejecutemos el comando en la entrada 216 de MFT en nuestro actual

ejercicio:

barry@forensicbox:NTFS_Pract_2017$ istat -o 2048 NTFS_Pract_2017.E01 216 Valores de encabezado de entrada de MFT:

266

Machine Translated by Google

Versión 4.95.1

Introducción a Linux para los forenses y encargados de hacer cumplir la ley

Entrada: 216

Secuencia: 2

$Número de secuencia del archivo de registro: 4199136

Archivo no asignado Enlaces: 1

$STANDARD_INFORMATION Valores de atributos: Banderas: Archivo Identificación del propietario: 0

ID de seguridad: 0 () Creado: 2017-05-01 09:04:42.810747600 (EDT) Archivo modificado: 2006-10-14 10:41:41.158486000 (EDT) MFT Modificado: 2017-05-01 09:04:42.818945100 (EDT) Consultado: 2017-05-01 09:04:42.818865600 (EDT)

$FILE_NAME Valores de atributo: Indicadores: Nombre de archivo: BigBikeBH1017.jpg Entrada principal de MFT: 186 Secuencia: 1 Tamaño asignado: 61440 Tamaño real: 59861 Creado:

2017-05-01 09:04:42.810747600 (EDT)

Archivo modificado: 2006-10-14 10:41:41.158486000 (EDT) MFT Modificado: 2017-05-01 09:04:42.818865600 (EDT) Consultado: 2017-05-01 09:04:42.818865600 (EDT) Atributos: Tipo: $STANDARD_INFORMATION (16-0) Nombre: N/A Tamaño del residente: 48 Tipo: $FILE_NAME (48-4) Nombre: N/A Tamaño del residente: 100 Tipo: $SECURITY_DESCRIPTOR (80-1) Nombre: N/A Tamaño del residente: 80 Tipo: $DATA (128-2) Nombre: N/A No residente tamaño: 59861 init_size: 59861 91473 91474 91475 91476 91477 91478 91479 91480 91481 91482 91483 91484 91485 91486 91487

La información que nos proporciona istat de la MFT muestra valores directamente del atributo $STANDARD_INFORMATION (que contiene los metadatos básicos para un archivo), así como el atributo $FILE_NAME e información básica para otros atributos que forman parte de una entrada de la MFT. Los bloques de datos que contienen el contenido real del archivo se enumeran en la parte inferior de la salida (para datos de no residentes ). Tome nota del hecho de que hay un identificador de atributo separado para el atributo $FILE_NAME , 48-4. Es interesante notar que podemos acceder al contenido de cada atributo por separado usando el comando icat (más sobre esto más adelante). El atributo 48-4 almacena el nombre del archivo. Al canalizar la salida de icat a xxd , podemos ver el contenido de este atributo, lo que nos permite ver atributos individuales para cada entrada de MFT. Por sí mismo, esto puede no ser de mucho interés para la investigación en este caso en particular, pero debe comprender que se puede acceder a los atributos por separado al proporcionar el atributo completo

267

Machine Translated by Google Versión 4.95.1

Introducción a Linux para los forenses y encargados de hacer cumplir la ley

identificador

barry@forensicbox:NTFS_Pract_2017$ icat -o 2048 NTFS_Pract_2017.E01 216-48-4 | xd 00000000: ba00 0000 0000 0100 d486 cd7f 7bc2 d201 ............{... 00000010: 5cef 99dc 9eef c601 f0c3 ce7f 7bc2 d201 \...........{. .. 00000020: f0c3 ce7f 7bc2 d201 00f0 0000 0000 0000 ....{........... 00000030: d5e9 0000 0000 0000 2000 0000 0000 0000 ........ .... ... 00000040: 1100 4200 6900 6700 4200 6900 6b00 6500 ..BigBike 00000050: 4200 4800 3100 3000 3100 3700 2e00 6a00 BH1.0.1.7...j. 00000060: 7000 6700 pág.

La misma idea se extiende a otros atributos de un archivo, más notablemente el "flujo de datos alternativo" o ADS. Al mostrarnos la existencia de múltiples identificadores de atributos para un archivo dado, Sleuth Kit nos brinda una forma de detectar datos potencialmente ocultos. Cubrimos esto en nuestro próximo ejercicio.

10.3.7 Sleuth Kit Ejercicio 5: Examen NTFS de ADS

El sistema de archivos NTFS permite flujos de datos alternativos (ADS), lo que significa que un archivo en NTFS puede tener contenido separado que normalmente no se puede ver con aplicaciones destinadas a mostrar un tipo de archivo determinado. Obviamente, al examinar un sistema, puede ser útil echar un vistazo a todos los archivos contenidos en una imagen. Podemos hacer esto de dos maneras. Podríamos simplemente montar en bucle nuestra imagen y obtener una lista de archivos. O bien, podríamos usar una utilidad forense como TSK. Compararemos la salida aquí para ilustrar una diferencia importante, incluso con contenido en vivo (asignado). Recuerde que el comando de montaje funciona en sistemas de archivos, no en discos. El sistema de archivos en esta imagen inicia 2048 sectores en la imagen, por lo que montamos usando un desplazamiento. Dado que también estamos examinando una imagen EWF, necesitaremos usar ewfmount para fusionar el montaje del archivo de imagen. Haremos esto como root (y si aún no existe, asegúrese de crear /mnt/ewf):

barry@forensicbox:NTFS_Pract_2017$ su Clave: root@forensicbox:~# cd barry/NTFS_Pract_2017 root@forensicbox:NTFS_Pract_2017# ewfmount NTFS_Pract_2017.E01 /mnt/ewf ewfmount 20140806 root@forensicbox:NTFS_Pract_2017# montaje -o ro,bucle,desplazamiento=$((2048*512)) /mnt/ewf/ewf1 /mnt/evid root@forensicbox:NTFS_Pract_2017# ls /mnt/evid

268

Machine Translated by Google Versión 4.95.1

Introducción a Linux para los forenses y encargados de hacer cumplir la ley

ProxyLog1.log* Sistema\ Volumen\ Información/ Usuarios/ Windows/ root@forensicbox:NTFS_Pract_2017# salir cerrar sesión barry@forensicbox:NTFS_Pract_2017$

En el conjunto de comandos anterior, hacemos su a root, usamos ewfmount para montar la imagen EWF en / mnt/ewf como /mnt/ewf/ewf130. Luego montamos la partición de datos (que sabemos que está en el punto 2048 de nuestro ejercicio anterior) y luego salimos. Luego podemos obtener una lista simple de archivos usando el comando find : barry@forensicbox:NTFS_Pract_2017$ find /mnt/evid/ -type f /mnt/evid/ ProxyLog1.log /mnt/evid/System Volume Information/IndexerVolumeGuid /mnt/ evid/System Volume Information/WPSettings.dat /mnt/evid/ Users/AlbertE/ Documents/better_access_unix.txt /mnt/evid/Users/AlbertE/Documents/ books.txt /mnt/evid/Users/AlbertE/Documents/cable.txt /mnt/evid/Users/AlbertE/ Documents/cabletv. txt /mnt/evid/Users/AlbertE/Documentos/hackcabl.txt

El comando de búsqueda comienza en el punto de montaje (/mnt/evid), buscando todos los archivos normales (escriba -f). El resultado nos da una lista muy larga de todos los archivos regulares asignados en el punto de montaje. Son muchos archivos , así que por el bien de este ejercicio, veamos el contenido del directorio de imágenes del usuario Albert (utilice el mismo comando, pero grep para AlbertE/Pictures):

barry@forensicbox:NTFS_Pract_2017$ buscar /mnt/evid/ -tipo f | grep "AlbertE/Imágenes" /mnt/evid/Users/AlbertE/Pictures/b45ac806a965017dd71e3382581c47f3_refined.jpg /mnt/evid/Users/ AlbertE/Pictures/bankor1.jpg /mnt/evid/Users/AlbertE/Pictures/desktop.ini /mnt/evid/Users/AlbertE / Pictures/fighterama2005-ban3.jpg /mnt/evid/Users/AlbertE/Pictures/jet.mpg 0 archivos gif con encabezado "\x47\x49\x46\x38\x37\x61" y pie de página "\x00\x3b" --> 0 archivos gif con encabezado "\x47\x49\x46 \x38\x39\x61" y pie de página "\x00\x00\x3b" --> 1 archivo jpg con encabezado "\xff\xd8\xff\xe0\x00\x10" y pie de página "\xff\xd9" --> 6 archivos jpg con encabezado "\xff\xd8\xff\xe1" y pie de página "\xff\xd9" --> 0 archivos png con encabezado "\x50\x4e\x47?" y pie de página "\xff\xfc\xfd\xfe" --> 0 archivos bmp con encabezado "BM??\x00\x00\x00" y pie de página "" --> 0 archivos tif con encabezado "\x49\x49\x2a \x00" y pie de página y ""pie tif con de página encabezado "" "\x4D\x4D\x00\x2A" --> 0 archivos --> 0 archivos Tallar archivos de imagen. Archivo de imagen paso 2/2. able3.home.blkls: 100.0% |***********************************| 91,3 MB ,ÿ ETA Procesamiento del archivo de imagen completo. Limpiar... Hecho.

Bisturí hecho, limas talladas = 7, transcurrido = 1 seg. barry@forensicbox:carve$ ls cuero cabelludo_out/ 00000000.gif 00000002.jpg 00000004.jpg 00000006.jpg 00000001.jpg 00000003.jpg 00000005.jpg audit.txt

290

00:00

Machine Translated by Google Versión 4.95.1

Introducción a Linux para los forenses y encargados de hacer cumplir la ley

El resultado anterior muestra el tallado con bisturí de aquellos tipos de archivos en los que las definiciones no estaban comentadas. Una vez que se completa el comando, una lista de directorios muestra los archivos (con el extensión para el tipo de archivo tallado agregado) y un archivo audit.txt . El archivo audit.txt proporciona un registro con el contenido de bisturí.conf y la salida del programa:

barry@forensicbox:tallar $ menos cuero cabelludo_out/audit.txt Archivo de auditoría bisturí versión 2.0 Comenzó el vie 2 ago 08:44:13 2019 Línea de comando: bisturí -o cuero cabelludo_fuera -O -e capaz3.home.blkls Directorio de salida: scalp_out Archivo de configuración: /home/barry/carve/scalpel.conf ------ COMENZAR LA COPIA DEL ARCHIVO DE CONFIGURACIÓN UTILIZADO ------

# Archivo de configuración de bisturí # Este archivo de configuración controla los tipos y tamaños de archivos que # están tallados con bisturí. TENGA EN CUENTA QUE EL FORMATO DE ESTE ARCHIVO FUE # EXTENDIDO en Bisturí 1.90-->! ... ------ FINALIZAR LA COPIA DEL ARCHIVO DE CONFIGURACIÓN UTILIZADO ------

Objetivo de apertura "/home/barry/carve/able3.home.blkls" Se tallaron los siguientes archivos: Expediente

comienzo

Cortar

Extraído de

Longitud

00000006.jpg

6586930

NO

6513

able3.home.blkls

00000005.jpg

6586368

NO

64601

able3.home.blkls

00000004.jpg

6278144

NO

15373

able3.home.blkls

00000003.jpg

6249472

NO

27990

able3.home.blkls

00000002.jpg

6129070

NO

5145

able3.home.blkls

00000001.jpg

6128640

NO

94426

able3.home.blkls

00000000.gif

6223872

NO

25279

able3.home.blkls

Completado el viernes 2 de agosto 08:44:14 2019

Todo el archivo bisturí.conf está incluido en audit.txt. En la parte inferior de la salida está nuestra lista de archivos tallados con el desplazamiento en el que se encontró el encabezado, la longitud del archivo y la fuente (lo que fue tallado). La columna etiquetada Chop se referiría a los archivos que tenían un máximo número de bytes grabados antes de encontrar el pie de página. Puede leer el archivo scalpel.conf para una descripción más detallada. Los archivos se pueden ver con visualización en la línea de comando o con un visor GUI que puede proporcionar una vista en miniatura y en ventana (sxiv es un excelente visor de imágenes CLI con vista en miniatura capacidades). El programa geeqie es un ejemplo simple de un visor GUI.

291

Machine Translated by Google Versión 4.95.1

Introducción a Linux para los forenses y encargados de hacer cumplir la ley

barry@forensicbox:tallar $ cd cuero cabelludo_fuera/

barry@forensicbox:tallar $ geeqie

Figura 19: Visualización de archivos tallados con geeqie

Hay otros archivos que se pueden encontrar en estos datos no asignados. Para ilustrar esto, veamos de nuevo el archivo scalpel.conf y agreguemos una definición de encabezado diferente para un archivo de mapa de bits. Abra 32

bisturí.conf con su editor de texto (vi) la línea y agregue la siguiente línea (que se muestra en rojo) debajo bmp actual en la sección # ARCHIVOS GRÁFICOS :

barry@forensicbox:tallar $ vi bisturí.conf ... # BMP (usado por MSWindows, úselo solo si tiene motivos para pensar que hay # Archivos BMP que vale la pena buscar. Esto a menudo genera una gran cantidad de falsos

32Si está usando vi para editar el archivo, debe copiar y pegar la línea. Con el cursor sobre el existente línea, use yy para copiar el texto (línea actual) y luego p para pegar en la línea de abajo. Luego edite esa línea.

292

Machine Translated by Google Versión 4.95.1

Introducción a Linux para los forenses y encargados de hacer cumplir la ley

# positivos bmp y 100000 BM??\x00\x00\x00 bmp y 300000 BM??\x04\x00\x00 ...

Aquí cambiamos el tamaño máximo a 300000 bytes y reemplazamos la primera cadena x00 con x04. Guarde el archivo. Vuelva a ejecutar el bisturí nuevamente (escriba en un directorio de salida diferente: scalp_out2) y verifique la salida:

barry@forensicbox:carve$ bisturí -o cuero cabelludo_out2 -O -e capaz3.home.blkl Bisturí versión 2.0 Escrito por Golden G. Richard III y Lodovico Marziale. Modelo de subprocesamiento de CPU multinúcleo habilitado.

Inicializar estructuras de datos de grupos de subprocesos. Creando hilos... Creación de tema completada. Objetivo de apertura "/home/barry/carve/able3.home.blkls" Archivo de imagen pase 00:00

1/2. able3.home.blkls: 100.0% |***********************************| 91,3 MB ,ÿ ETAAsignando colas de trabajo... Asignación de colas de trabajo completada. Creando colas de trabajo... Colas de trabajo construidas. Carga de trabajo: arte con encabezado "\x4a\x47\x04\x0e" y pie de página "\xcf\xc7\xcb" --> 0 archivos

art con encabezado "\x4a\x47\x03\x0e" y pie de página "\xd0\xcb\x00\x00" --> 0 archivos gif con encabezado "\x47\x49\x46\x38\x37\x61" y pie de página " \x00\x3b" --> 0 archivos gif con encabezado "\x47\x49\x46\x38\x39\x61" y pie de página "\x00\x00\x3b" --> 1 archivos jpg con encabezado "\xff\xd8 \xff\xe0\x00\x10" y pie de página "\xff\xd9" --> 6 archivos jpg con encabezado "\xff\xd8\xff\xe1" y pie de página "\xff\xd9" --> 0 archivos png con encabezado "\x50\x4e\x47?" y pie de página "\xff\xfc\xfd\xfe" --> 0 archivos bmp con encabezado "BM??\x00\x00\x00" y pie de página "" --> 0 archivos bmp con encabezado "BM??\x04\ x00\x00" y pie de página "" -> 1 archivos tif con encabezado "\x49\x49\x2a\x00" y pie de página ""

--> 0 archivos

tif con encabezado "\x4D\x4D\x00\x2A" y pie de página ""

--> 0 archivos

Tallar archivos de imagen. Archivo de imagen paso 2/2. able3.home.blkls: 100.0% |***********************************| 91,3 MB ,ÿ ETA Procesamiento del

00:00

archivo de imagen completo. Limpiar... Hecho. Bisturí hecho, limas talladas = 8, transcurrido = 1 seg.

Mirando el resultado resaltado arriba, podemos ver que esta vez se grabaron un total de ocho archivos. La definición de mapa de bits que agregamos muestra claramente que se puede mejorar el archivo scalpel.conf . Tampoco es difícil de hacer. Simplemente usando xxd para encontrar patrones coincidentes en grupos de archivos 293

Machine Translated by Google Versión 4.95.1

Introducción a Linux para los forenses y encargados de hacer cumplir la ley

puede ser suficiente para construir una biblioteca decente de encabezados. Esto es particularmente útil si se encuentra con muchos formatos propietarios. Dado que la talla se puede abordar con una variedad de algoritmos, podría ser una buena idea ejecutar sus datos a través de más de una herramienta. Para esto, ahora veremos photorec.

10.5.2 fotograbación

Parte del paquete testdisk , photorec es otro programa de tallado. Sin embargo, adopta un enfoque muy diferente. photorec no se diseñó originalmente como una utilidad forense, sino como una herramienta de recuperación de datos para personas que pierden archivos de tarjetas SD y otros medios. Se ha convertido en una herramienta muy útil para extraer muchos archivos diferentes de los medios. Como parte del paquete testdisk , se instala junto con la propia herramienta testdisk (para recuperar particiones), fidentify (la misma idea básica que el comando file , pero menos detallado) y qphotorec. qphotorec es una interfaz gráfica de usuario para photorec.

Figura 20: qphotorec - Interfaz gráfica de usuario para photorec

Por supuesto, nos apegaremos a la versión de la línea de comandos aquí (que en realidad está impulsada por menús). Podemos comparar la salida recibida del bisturí con la salida de photorec

294

Machine Translated by Google

Versión 4.95.1

Introducción a Linux para los forenses y encargados de hacer cumplir la ley

ejecutando el tallado en los mismos datos no asignados home.blkls de nuestra imagen de disco able_3 . Primero, inicie sesión como root (su -) e instale el paquete testdisk con sboinstall: barry@forensicbox:tallar$ su Clave: root@forensicbox:~# sboinstall testdisk TestDisk es un potente software gratuito de recuperación de datos. Fue diseñado principalmente para ayudar a recuperar particiones perdidas y/o hacer que los discos que no arrancan puedan volver a arrancar cuando estos síntomas son causados por software defectuoso, ciertos tipos de virus o errores humanos (como eliminar accidentalmente una tabla de particiones). La recuperación de la tabla de particiones usando TestDisk es realmente fácil.

PhotoRec es un software de recuperación de datos de archivos diseñado para recuperar archivos perdidos, incluidos videos, documentos y archivos de discos duros y CD-ROM, e imágenes perdidas de la memoria de la cámara digital. Si desea habilitar el uso de sudo, ejecute el script con SUDO=true libewf es una dependencia opcional. ... ¿Continuar con testdisk? [y] ... Paquete testdisk-7.0-x86_64-1_SBo.tgz instalado. Limpieza para testdisk-7.0...

SlackBuild especifica que libewf es una dependencia opcional y, dado que ya tenemos instalado libewf , se detectará y compilará para que sea compatible con EWF. Ejecutar photorec desde la línea de comandos es simple. Usaremos una opción para crear un archivo de registro usando /log (creado en el directorio actual) y proporcionando un directorio de salida /d (usaremos photorec_out). También apuntaremos el programa directamente a los datos no asignados de able3.home.blkls de able_3. Esto nos llevará al menú photorec . barry@forensicbox:~$ photorec /log /d photorec_out able3.home.blkls*)

El menú principal aparece con el archivo able3.home.blkls ya seleccionado y cargado (Ver Figura 21). Repasaremos las opciones del menú rápidamente. Todo se explica por sí mismo y se pueden encontrar detalles adicionales en http://www.cgsecurity.org/wiki/PhotoRec_Step_By_ Step.

Normalmente, el menú principal incluiría particiones de disco de discos internos y extraíbles.

295

Machine Translated by Google Versión 4.95.1

Introducción a Linux para los forenses y encargados de hacer cumplir la ley

Figura 21: menú principal de photorec

media, pero dado que específicamente llamamos al archivo able3.home.blkls , se carga de forma predeterminada (consulte la Figura 22). Seleccione [Continuar] con las teclas de flecha y presione .

Figura 22: photorec ejecutándose en el archivo able3.home.blkls

Si se tratara de una imagen de disco completa, photorec mostraría los sistemas de archivos y las particiones contenidas en la imagen. En este caso, son simplemente datos no asignados y no hay partición para mostrar. Seleccione [Opciones] y presione . Las opciones proporcionadas son (Ver Figura 23): 296

Machine Translated by Google Versión 4.95.1

Introducción a Linux para los forenses y encargados de hacer cumplir la ley

Figura 23: Visualización de opciones de fotograbado en el programa en ejecución

Paranoico: se usa para validar archivos que están tallados. Lo dejaremos como Sí por ahora. Conservar archivos dañados: en el uso normal, es posible que desee habilitar esto solo para estar seguro (recopilar la mayor cantidad de datos posible). Nunca lo he encontrado particularmente útil.

Modo experto: proporciona opciones adicionales para configurar una geometría de disco especí ca. A menos que esté trabajando con una imagen de disco corrupta con una tabla de particiones destrozada, puede dejar esto en el No. Poca memoria: para imágenes de disco realmente grandes donde la memoria se convierte en un problema.

Obviamente, siéntete libre de jugar con las opciones y explorar los diferentes menús. Para este simple ejercicio, dejar los valores predeterminados como están funcionará perfectamente. Vuelva al menú principal seleccionando >Salir y, en el menú principal, elija [File Opt] y presione .

Esto lo llevará al menú de selección de archivos (vea la Figura 24). photorec recuperará casi quinientas firmas de archivos diferentes. Puede seleccionar o deseleccionar de este menú. Por ahora, dejaremos las selecciones de archivos predeterminadas en su lugar (hay algunos deseleccionados de forma predeterminada). Seleccione [Salir] de nuevo para volver al menú principal. En el menú principal, seleccione [Buscar] y presione . Aquí es donde seleccionamos el tipo de sistema de archivos (Ver Figura 25). Elegiremos [ext2/ext3] y le daremos a , comenzando la búsqueda. Una vez que se complete la búsqueda, verá la cantidad de archivos recuperados y el directorio de salida (photorec_out, que especificamos en nuestra línea de comando). La talla ahora está completa.

297

Machine Translated by Google Versión 4.95.1

Introducción a Linux para los forenses y encargados de hacer cumplir la ley

Figura 24: menú de opciones de la fotograbación

Figura 25: selección del sistema fotorreceptor

Seleccione [Salir] en los menús subsiguientes y salga del programa. Volverá al símbolo del sistema (consulte la Figura 26). Mirando una lista de directorios, puede ver que ahora tenemos un nuevo directorio de salida, photorec_out.1/ junto con un archivo de registro que se creó con la opción /log . Eche un vistazo al archivo de registro, photorec.log con el comando less .

barry@forensicbox:tallar $ ls -l 298

Machine Translated by Google

Versión 4.95.1

Introducción a Linux para los forenses y encargados de hacer cumplir la ley

Figura 26: selección del sistema fotorreceptor

total 93516

-rw-r--r-- 1 usuarios de barry 95726592 4 de agosto 12:35 able3.home.blkls -rw-r--r-- 1 usuarios de barry drwxr-xr-x barry drwxr-xr-- 2 2825 24 usuarios de agostode 15:07 photorec.log usuarios de barry usuarios drwxr-xr-2 usuarios de 15:07 barry photorec_out.1/ -rwxr-xr-x 1 4096 4 de agosto usuarios de barry 4096 4 de agosto 12:38 scalp_out/ 4096 4 de agosto 12:41 scalp_out2/ 12967 4 de agosto 12:41 bisturí.conf* barry@forensicbox:tallar $ menos photorec.log ... Dom 4 de agosto 12:56:02 2019 Línea de comandos: PhotoRec /log /d photorec_out able3.home.blkls PhotoRec 7.0, Utilidad de recuperación de datos, abril de 2015 Christophe GRENIER http:// www.cgsecurity.org Disco able3.home.blkls - 95 MB / 91 MiB - CHS 12 255 63 (RO), tamaño de sector =512 ... blocksize=1024, offset=0 Tiempo transcurrido 0h00m00s Paso 1 (blocksize=1024) STATUS_EXT2_ON photorec_out.1/f0012156.gif 12156-12205 photorec_out.1/f0012206.jpg 12206-12261 photorec_out.1/f0012262.jpg 12262 photorec_out.jpg 12262 1/f0012294.bmp 12294-12863 photorec_out.1/f0012904.gz 12904-186965 Tiempo transcurrido 0h00m01s

299

Machine Translated by Google Versión 4.95.1

Introducción a Linux para los forenses y encargados de hacer cumplir la ley

Pasar 1 +5 archivos jpg: 2/4 recuperados bmp: 1/1 recuperados gif: 1/1 recuperados gz: 1/1 recuperados Total: 5 archivos encontrados

12196 sectores contienen datos desconocidos, 2 archivos no válidos encontrados y rechazados.

Al igual que el bisturí, la salida del registro proporciona información adecuada para su inclusión en un informe si es necesario, tenga en cuenta que las ubicaciones de compensación para cada archivo tallado se dan en conjunto de sectores en lugar de conjunto de bytes (multiplique cada compensación dada anteriormente por 512 para comparar la o establece con el archivo bisturí audit.txt ). Echa un vistazo a la salida de photorec:

barry@forensicbox:carve$ ls photorec_out.1/ f0012156.gif f0012206.jpg f0012262.jpg f0012294.bmp f0012904_lrkn.tar.gz report.xml

El contenido del directorio de salida muestra que photorec recuperó no solo algunos archivos de imagen, sino también un archivo llamado f0012904_lrkn.tar.gz. Si recuerda nuestro ejercicio able_3 , recordará que este fue un archivo de cierto interés. photorec es útil para mucho más que unas pocas imágenes. Si intenta descomprimir/extraer el archivo, encontrará que está dañado. Parte de él, sin embargo, todavía es recuperable.

barry@forensicbox:carve$ tar tzvf photorec_out.1/f0012904_lrkn.tar.gz drwxr-xr-x lp/lp 0 1998-10-01 18:48 lrk3/ -rwxr-xr-x lp/lp 1996-11-02 742 1998-0616:3827 lrk3/MCONFIG 11:30 lrk3/1 -rw-r--r--rw-r--r--lp/lp lp/lp716 6833 1998-10-03 05 :02 lrk3/Makefile -rw-r--r-- lp/lp 6364 1996-12-27 22:01 lrk3/README

... gzip: stdin: descompresión correcta, basura final ignorada -rw-r--r-lp/lp 1996 1996-11-02 16:39 lrk3/z2.c tar: El niño devolvió el estado 2 tar: el error no es recuperable: salir ahora

Todavía hay mucha información que se puede obtener de la recuperación de este archivo. Puede ver que el README es uno de esos archivos recuperados. Podemos usar esto para de nir cadenas para que busquemos y tal vez descubramos dónde se descomprimió y extrajo el archivo (que 300

Machine Translated by Google Versión 4.95.1

Introducción a Linux para los forenses y encargados de hacer cumplir la ley

hicimos anteriormente en nuestro ejercicio de búsqueda física). Esta es una de las razones por las que elegimos usar más de una utilidad de tallado. Las diferencias en la producción pueden fortalecer nuestro análisis. Una pregunta que podrías hacerte es "¿Cómo comparo eficientemente la salida de tallado de dos herramientas diferentes para obtener un recuento preciso de los archivos recuperados?". En nuestra muestra muy pequeña producida por los ejercicios aquí, es un trabajo bastante simple. Simplemente comparamos los archivos de imagen en un visor gráfico. Hay un poco más de una docena de imágenes en total para revisar. Sin embargo, si tuviéramos que tallar una imagen de disco con cientos de archivos de imagen no asignados, la comparación sería mucho más difícil. Para abordar esto, echemos un vistazo a un programa simple que hará el trabajo por nosotros.

10.5.3 Comparación y deduplicación de la salida Carve

Obviamente, esto no es una simple cuestión de comparar nombres de archivos. Los archivos se extraen de los bloques de datos sin tener en cuenta las entradas de directorio u otra información del sistema de archivos. Entonces, las herramientas usan su propio esquema de nombres. Curiosamente , photorec incluyó el nombre del archivo tar original lrkn.tar.gz en su salida. Esto se debe a que el nombre del archivo es parte de los metadatos del archivo (ejecute el archivo f0012904_lrkn.tar.gz y verá que el encabezado gzip contiene el nombre).

Una cosa que podemos hacer es comparar hashes. Si los valores hash coinciden, independientemente del nombre del archivo, sabemos que tenemos dos archivos iguales. Una forma simple de hacer esto sería hacer un hash de todos los archivos en cada directorio (photorec_out y scalp_out2) y escribirlos en un archivo. Entonces podríamos ordenar este archivo por el hash y buscar duplicados. Esto se puede hacer en un comando. Tenga en cuenta que usamos f0* y 0* para el comando md5sum en cada directorio para que obtengamos solo los archivos de salida tallados y no los archivos de registro/auditoría de cada herramienta.

barry@forensicbox:tallar $ md5sum photorec_out.1/f0*scalp_out2/0*| sort 110983800a177c1746c54b15edec989a photorec_out.1/f0012156.gif 110983800a177c1746c54b15edec989a scalp_out2/00000000.gif 2d7d4def42fcbcc0c813a27505f0508b photorec_out.1/f0012904_lrkn.tar.gz 357ca99e654ca2b179e1c5a0290b1f94 photorec_out.1/f0012262.jpg 357ca99e654ca2b179e1c5a0290b1f94 scalp_out2/00000004.jpg 437a614c352b03a6a4575e9bbc2070ae photorec_out.1/f0012206.jpg 437a614c352b03a6a4575e9bbc2070ae scalp_out2/ 00000003.jpg 6742ca9862a16d82fdc4f6d54f808f41 scalp_out2/00000007.bmp a0794399a278ce48bfbd3bd77cd3394d scalp_out2/00000002.jpg aa607253fc9b0a70564228ac27ad0b13 scalp_out2/00000006.jpg b5ca633bea09599c3fb223b4187bb544 photorec_out.1/f0012294.bmp b6703670db3f13f23f7a3ed496a2b95c scalp_out2/00000001.jpg f979cd849ccdd5c00fd396b600a9a283 scalp_out2/00000005.jpg

Al ordenar la salida, los hash duplicados se enumeran juntos. Del resultado anterior podemos ver que estos dos archivos son idénticos:

301

Machine Translated by Google Versión 4.95.1

Introducción a Linux para los forenses y encargados de hacer cumplir la ley

110983800a177c1746c54b15edec989a photorec_out.1/f0012156.gif

Esto se puede redirigir a un archivo para su posterior procesamiento.

barry@forensicbox:tallar $ md5sum photorec_out.1/f0*scalp_out2/0*| ordenar > carvehash.txt

Bueno, esto está bien. Pero también podría ser bueno desduplicar los archivos eliminando uno de los duplicados. Una vez más, bastante fácil en nuestra pequeña muestra aquí, pero mucho más desafiante y lento si se trata de cientos o miles de imágenes de contrabando que necesita clasificar y contar con precisión.

Para ello podemos utilizar un programa llamado fdupes. fdupes funciona usando nombres de archivo y hash para encontrar, informar y, si se solicita, eliminar archivos duplicados de los directorios especificados por el usuario. Es fácil de usar y muy eficaz.

barry@forensicbox:tallar $ su Clave: root@forensicbox:~# sboinstall fdupes FDUPES es un programa para identificar o eliminar archivos duplicados que residen en directorios específicos. ¿Continuar con fdupes? [y] ... Paquete fdupes-1.6.1-x86_64-1_SBo.tgz instalado.

Limpieza para fdupes-1.6.1...

Ejecutaremos fdupes dos veces (siempre es una buena práctica). La primera ejecución mostrará todos los archivos duplicados, cada par en una sola línea. Revise el resultado para asegurarse de que no haya archivos inesperados y luego vuelva a ejecutar el comando con la opción --delete .

barry@forensicbox:carve$ fdupes -R -1 photorec_out.1/ cuero cabelludo_fuera2/ cuero cabelludo_fuera2/00000004.jpg fotorec_fuera.1/f0012262.jpg cuero cabelludo_fuera2/00000000.gif fotorec_fuera.1/f0012156.gif cuero cabelludo_fuera2/00000003.jpg fotorec_fuera.1/ f0012206.jpg

Las opciones que pasamos son -R para recursividad. No hay subcarpetas en este ejemplo, pero nunca está de más permitir la recursividad. Particularmente en exámenes a gran escala donde la salida tallada puede ser bastante masiva y es posible que haya especificado una salida categorizada para bisturí en particular (diferentes tipos de archivos en diferentes directorios). También usamos la opción -1 para poner coincidencias en la misma línea. Esta es una preferencia personal. Ejecute sin esta opción y vea lo que prefiere. 302

Machine Translated by Google Versión 4.95.1

Introducción a Linux para los forenses y encargados de hacer cumplir la ley

Una vez que se haya obtenido una vista previa de la salida, vuelva a ejecutar el comando con la opción --delete para mantener solo el primer archivo en cada par (o conjunto). Si revisó la salida antes de eliminarla, es posible que desee agregar la opción -N para "sin aviso". Úselo a su propia discreción. Sin -N, si tiene cientos de pares de archivos coincidentes, deberá con rmar cada eliminación.

barry@forensicbox:~$ fdupes -R -N -delete photorec_out.1/ cuero cabelludo_out2/ [+] cuero cabelludo_out2/00000004.jpg [-] photorec_out.1/f0012262.jpg [+] cuero cabelludo_out2/00000000.gif [-] photorec_out.1/f0012156.gif [+] cuero cabelludo_out2/00000003.jpg [-] photorec_out.1/f0012206.jpg

El resultado anterior indica que el primer archivo se mantuvo [+] y el segundo archivo se eliminó [-]. Si hubiera más de un archivo coincidente en cada conjunto, solo quedaría el primero. Para controlar mejor este comportamiento, elimine la opción -N y podrá seleccionar qué archivos conservar. Esto concluye nuestra sección de tallado físico. Hemos aprendido cómo tallar archivos del espacio no asignado, ver los archivos, ordenarlos y eliminar duplicados de manera eficiente.

10.6 Análisis de aplicaciones Ahora hemos cubierto varias de las capas que discutimos anteriormente, incluidas las capas de administración física y de medios para la información del disco y el diseño de la partición; herramientas del sistema de archivos para recopilar información sobre las estadísticas del sistema de archivos; y herramientas para trabajar en archivos individuales para buscar contenido e identificar tipos de archivos de interés. Incluso hemos realizado algunas recuperaciones de datos en la capa de bloque físico, independientemente del volumen y el sistema de archivos, mediante tallado y búsquedas exhaustivas. Entonces, ahora que hemos recuperado los archivos, ¿qué hacemos con ellos? Aquí es donde entra en juego la capa de aplicación de nuestro modelo de análisis. Para nuestros propósitos aquí, el término "aplicación" puede considerarse como un sistema operativo o archivos interactivos del usuario, es decir: archivos creados por aplicaciones a las que accede el sistema operativo o a través de la interacción del usuario (ya sea con el sistema operativo o software externo). En términos más simples, el análisis de la aplicación puede ser tan simple como ver el archivo directamente para el contenido. Hemos usado catdoc y catdox para los archivos de MS Office, varios visores de imágenes como geeqie, xv y display para imágenes, y visores de texto simples como less para ASCII . les. Pero el análisis forense es mucho más que simplemente recuperar archivos y mostrar el contenido. Ese tipo de actividad es realmente solo recuperación de datos. Sin embargo, el análisis forense digital debe incluir otras técnicas: análisis temporal (¿cuándo sucedió?)

303

Machine Translated by Google Versión 4.95.1

Introducción a Linux para los forenses y encargados de hacer cumplir la ley

atribución (¿quién hizo que sucediera?) mapeo de actividades (¿cómo sucedió?)

Obviamente, podemos obtener parte de esta información a través del análisis que ya hemos hecho, utilizando los tiempos de archivo que vemos en la salida de istat o la ubicación de los archivos en el directorio de inicio de un usuario en particular o en la carpeta Usuarios . Para profundizar un poco más, vamos a echar un vistazo a algunas aplicaciones simples que nos permitirán examinar el Registro de Windows, los registros de eventos de Windows y otros artefactos para obtener información adicional útil desde el punto de vista forense. Haremos esto usando algunas utilidades del proyecto libyal .

Puede leer más sobre libyal en https://github.com/libyal/libyal/wiki. Hay un par de notas importantes sobre estas bibliotecas que debemos cubrir antes de comenzar. En primer lugar, asegúrese de comprender que muchas de estas bibliotecas se encuentran en estado alfa o experimental, lo que significa que no están completamente maduras y, como lo indica claramente el sitio anterior, están sujetas a interrupciones y/o cambios. Los proyectos que veremos aquí están en estado alfa. Se han probado en algunos archivos de muestra simples, pero asegúrese de probarlos en su propio entorno antes de usarlos. Estos son proyectos excelentes y vale la pena seguirlos, pero asegúrese de saber lo que está haciendo (y viendo) antes de usarlos en producción. No se recomienda el uso de software claramente marcado como alfa o experimental para el trabajo de casos de producción a menos que comprenda y pruebe el resultado por sí mismo. Por el momento, estos constituyen excelentes herramientas de verificación cruzada terciaria y vehículos para el aprendizaje de estructuras y artefactos específicos.

10.6.1 Ejercicio de análisis de registro 1: UserAssist

Comencemos nuestra exploración de libyal y el análisis de aplicaciones observando los archivos de registro de Windows especí cos. Como de costumbre, comenzamos con el descargo de responsabilidad de que esta sección no se trata de aprender análisis forense de registro.

Se trata de las herramientas. Por supuesto, puede obtener algo de conocimiento en el camino, pero ese no es nuestro propósito aquí. Si desea profundizar en estos archivos de registro y obtener más información sobre el arte del análisis forense de registros, le sugiero encarecidamente que consulte el excelente libro33 escrito por Harlan Carvey sobre el tema (y explore su blog34). Es posible que desee tener una comprensión básica de la estructura del registro antes de comenzar este ejercicio, de modo que tenga algo de contexto para lo que está por venir. Y, por supuesto, hay otras formas (más rápidas y completas) de analizar un registro. Por ejemplo, el conocido RegRipper de Harlan Carvey se ejecutará ne en Linux. 33https://www.elsevier.com/books/windows-registry-forensics/carvey/978-0-12-803291-6 34http:// windowsir.blogspot.com/

304

Machine Translated by Google Versión 4.95.1

Introducción a Linux para los forenses y encargados de hacer cumplir la ley

Nuestro propósito real en esta sección es mostrarle cómo hacer este tipo de análisis a nivel de byte, usando algunas herramientas comunes de Linux como xxd y tr, en lugar de depender de herramientas más automatizadas para que lo hagan por usted. Lo que hacemos aquí no es muy diferente de lo que hacen los scripts de Perl en RegRipper (aunque lo simplificamos un poco aquí).

Primero, sin embargo, necesitamos tener un archivo de registro para trabajar. Comenzaremos con el archivo NTUSER.DAT de la cuenta AlbertE en nuestra muestra del sistema de archivos NTFS (NTFS_Pract_2017.E01). Necesitamos asegurarnos de obtener el NTUSER.DAT correcto. Hay un par de formas en que podemos ubicar y extraer el archivo de una imagen de disco. Puede montar la imagen (en nuestro caso usando ewfmount), buscar el archivo y extraerlo copiándolo del sistema de archivos montado. Sin embargo, esto requiere algunos pasos más de los que necesitamos hacer, por lo que lo demostraremos aquí con dos métodos de ubicación simples y luego extraeremos el archivo con icat.

Dado que estamos apuntando a la cuenta AlbertE y sabemos que el archivo NTUSER.DAT de un usuario específico está en la carpeta /Users/$USERNAME/ , podemos usar ifind para apuntar al archivo específico por nombre. Para ejecutar ifind, usamos mmls como lo hicimos anteriormente para encontrar el desplazamiento al sistema de archivos en nuestra imagen:

barry@forensicbox:~$ cd NTFS_Pract_2017

barry@forensicbox:NTFS_Pract_2017$ mmls NTFS_Pract_2017.E01 Tabla de particiones de DOS Sector de compensación: 0

Las unidades están en sectores de 512 bytes

Ranura

000: Meta

comienzo

Final

Longitud

Descripción

0000000000 0000000000 0000000001 Tabla primaria (#0)

001: ------- 0000000000 0000002047 0000002048 Sin asignar 002: 000:000 0000002048 0001023999 0001021952 NTFS / exFAT (0x07)

barry@forensicbox:NTFS_Pract_2017$ ifind -n "usuarios/alberte/ntuser.dat" -o 2048 NTFS_Práctica_2017.E01 285

Así que aquí usamos ifind (encontrar el "inodo", o estructura de metadatos) usando -n para buscar por nombre, en el 2048 o set que nuevamente encontramos en nuestra imagen de sistema de archivos NTFS ejecutando mmls. El valor de retorno que obtenemos de ifind es 285, la entrada MFT para el archivo NTUSER.DAT de la cuenta AlbertE . Alternativamente, si desea buscar todos los archivos NTUSER.DAT en un sistema, puede usar fls con la opción de enumerar recursivamente todos los archivos regulares (-Fr), agrupando la salida para NTUSER.DAT. En cualquier caso, nuevamente encontramos que la entrada MFT para NTUSER.DAT de AlbertE es 285:

barry@forensicbox:NTFS_Pract_2017$ fls -Fr -o 2048 NTFS_Pract_2017.E01 | grep USUARIONT.DAT

r/r 285-128-2: Usuarios/AlbertE/NTUSER.DAT r/r 286-128-2: Usuarios/ElsaE/NTUSER.DAT

305

Machine Translated by Google Versión 4.95.1

Introducción a Linux para los forenses y encargados de hacer cumplir la ley

Una vez que haya identificado la entrada MFT usando uno de los dos métodos anteriores, simplemente puede extraer el archivo con icat, nombrando arbitrariamente la salida (aquí usamos NTUSER.285 ). Ejecute el comando de archivo para verificar el tipo resultante:

barry@forensicbox:~$ icat -o 2048 NTFS_Pract_2017/NTFS_Pract_2017.E01 285 > USUARIONT.285

barry@forensicbox:~$ archivo NTUSER.285 NTUSER.285: archivo de registro de MS Windows, NT/2000 o superior

Ahora que tenemos el archivo de registro que queremos, podemos elegir una clave específica para buscar información útil. Como ejemplo, veremos las entradas de UserAssist . Estas entradas ocurren en el registro cuando un usuario ejecuta un programa desde el escritorio. Las entradas de UserAssist se encuentran en Software\Microsoft\Windows\CurrentVersion\Explorer\. Para una explicación completa, los remito nuevamente al libro antes mencionado de Harlan Carvey. Así que tenemos nuestro archivo de registro, NTUSER.DAT, y la clave de destino, UserAssist. Necesitamos software para acceder a los datos. Para ello instalamos libregf:

barry@forensicbox:~$ su Clave: root@forensicbox:~# sboinstall libregf ... Limpieza para libregf-20190303... root@forensicbox:~# salir

Puede echar un vistazo a las utilidades que instaló este paquete mirando el archivo del paquete en /var/log/ packages:

barry@forensicbox:~$ grep usr/bin /var/log/packages/libregf-20190303-x86_64-1_SBo usr/bin/ usr/bin/ regfexport usr/bin/regfinfo usr/bin/regfmount

Podemos ver que el paquete viene con tres programas ejecutables ubicados en /usr/bin. Nos concentraremos en el uso de regfmount. Al igual que ewfmount de libewf (que también forma parte del proyecto libyal ), regfmount proporciona una interfaz de sistema de archivos fuse para un objeto de archivo, en este caso un archivo de registro. El uso es muy similar. Primero, crearemos un punto de montaje en nuestro directorio actual, seguido del montaje del registro:

barry@forensicbox:~$ mkdir regmount 306

Machine Translated by Google

Versión 4.95.1

Introducción a Linux para los forenses y encargados de hacer cumplir la ley

barry@forensicbox:~$ montajeregf NTUSER.285 montajeregf/ montajeregf 20190303 barry@forensicbox:~$ montaje de registro de cd

barry@forensicbox:regmount$ ls AppEvents/ Control\ Panel/ Environment/ Keyboard\ Layout/ Printers/ System/ Consola/ EUDC/ Identidades/ Red/ Software/

El archivo de registro NTUSER.285 se monta usando regfmount en el punto de montaje que creamos, regmount (en el directorio actual). Cuando cambiamos al directorio regmount , vemos el contenido del archivo de registro en el mismo tipo de estructura jerárquica que se encontraría en cualquier otro visor de registro. Ahora podemos navegar y ver esto usando las utilidades de línea de comandos normales. Entonces, vayamos a la tecla UserAssist y veamos el contenido. barry@forensicbox:~$ cd Software/Microsoft/Windows/CurrentVersion/Explorer/UserAssist/ barry@forensicbox:regmount/ Software/Microsoft/Windows/CurrentVersion/Explorer/UserAssist$ ls {CEBFF5CD-ACE2-4F4F-9178-9926F41749EA}/ {F4E57C4B-2036-45F0-A9AB-443BCFE33D9F}/

¡Puede ver que una vez que cambiamos a ese directorio, nuestro indicador es bastante largo! Voy a abreviar el símbolo del sistema con ... para que las líneas sean más legibles. Cuando ejecutamos nuestro comando ls , vemos dos entradas de directorio de aspecto críptico (GUID). Cambie el directorio a F4E57C4B-2036-45F0-A9AB-443BCFE33D9F35 y el subdirectorio Count/(values). Tenga en cuenta que cuando escriba el subdirectorio (valores) , deberá escapar de los paréntesis con \, por lo que utilizará \(valores\). barry@forensicbox:...UserAssist$ cd \{F4E57C4B-2036-45F0-A9AB-443BCFE33D9F\}/ barry@forensicbox:...443BCFE33D9F\}$ cd Count/\(valores\)/ barry@forensicbox:...(valores)$

Ahora eche un vistazo al contenido de este directorio. barry@forensicbox:...(valores)$ ls HRZR_PGYFRFFVBA HRZR_PGYPHNPbhag:pgbe {0139Q44R-6NSR-49S2-8690-3QNSPNR6SSO8}\\\\Jvaqbjf\ Snk\ naq\ Fpna.yax 35Aquí es donde la finalización de bash resulta realmente útil. Cuando use el comando cd aquí, escriba el primero dos caracteres y presione la tecla ... El resto se completará automáticamente. Mejor. Rasgo. Alguna vez

307

Machine Translated by Google Versión 4.95.1

Introducción a Linux para los forenses y encargados de hacer cumplir la ley

{0139Q44R-6NSR-49S2-8690-3QNSPNR6SSO8}\\\\KCF\ Ivrjre.yax {0139Q44R-6NSR-49S2-8690-3QNSPNR6SSO8}\\\\Npprffbevrf\\\\Cnvag.yax {0139Q44R-6NSR-49S28690-3QNSPNR6SSO8}\\\\Npprffbevrf\\\\Erzbgr\ Qrfxgbc\ ,ÿ Pbaarpgvba.yax {0139Q44R-6NSR-49S2-8690-3QNSPNR6SSO8}\\\\Npprffbevrf\\\\Favccvat\ Gbby.yax {0139Q44R-6NSR-49S2-8690-3QNSPNR6SSO8}\\\\Npprffbevrf\\\\Fgvpxl\ Abgrf.yax {0139Q44R-6NSR-49S2-8690-3QNSPNR6SSO8}\\\\Npprffbevrf\\\\Jrypbzr\ Pragre.yax {0139Q44R-6NSR-49S2-8690-3QNSPNR6SSO8}\\\\Npprffbevrf\\\\Pnyphyngbe.yax {0139Q4 -6NSR-49S2-8690-3QNSPNR6SSO8}\\\\Npprffbevrf\\\\qvfcynlfjvgpu.yax {0139Q44R-6NSR-49S2-8690-3QNSPNR6SSO8}\ \\\Nqzvavfgengvir\ Gbbyf\\\\Pbzchgre\ ,ÿ Znantrzrag.yax {9R3995NO-1S9P-4S13-O827-48O24O6P7174}\\\\GnfxOne\\\\Jvaqbjf\ Rkcybere.yax {9R3995NO-1S9P-4S13O827-48O24O6P7174}\\\\GnfxOne\\\\Tbbtyr\ Puebzr.yax {9R3995NO-1S9P-4S13-O827-48O24O6P7174}\\\ \GnfxOne\\\\Vagrearg\ Rkcybere.yax {9R3995NO-1S9P-4S13-O827-48O24O6P7174}\\\\GnfxOne\\\\Zbmvyyn\ Sversbk.yax {N77S5Q77-2R2O-44P3-N6N2-NON601054N51}\\\\Npprffbevrf\\\\Npprffvovyvgl\\\\Zntavsl. ,ÿ yax {N77S5Q77-2R2O-44P3-N6N2-NON601054N51}\\\\Npprffbevrf\\\\Pbzznaq\ Cebzcg.yax

Entonces, si leyó algo sobre esta clave de registro en particular, encontrará que las entradas anteriores (o "archivos" en nuestro sistema de archivos montados en fusibles) están ofuscados por ROT 13. Esto significa que los caracteres en cada cadena anterior se intercambian am o AM por el correspondiente nz o NZ, de modo que una a se convierte en una n y una b se convierte en una o, y así sucesivamente. Podemos quitar la ofuscación de este texto con el comando tr que hemos usado anteriormente para reemplazar un carácter por otro. En este caso, reemplazaremos los caracteres n-za-m con az, etc. Probemos esto en la cadena repetida al final de cada línea, .yax: barry@forensicbox:...(valores)$ echo ".yax" | tr 'n-za-mN-ZA-M' 'a-zA-Z' .lnk

Podemos ver que la cadena .yax al final de cada línea es en realidad la extensión del archivo .lnk (que indica un enlace o archivo de acceso directo). Entonces, ¿cuál es la mejor manera de ejecutar el comando tr anterior en todos los archivos en el directorio / Count/(values) ? Podemos volver al bucle bash corto que presentamos en la sección Visualización de archivos de esta guía: barry@forensicbox:...(valores)$ para archivo en * > hacer > echo $archivo | tr 'n-za-mN-ZA-M' 'a-zA-z' > hecho UEME_CTLSESSION UEME_CTLCUACuenta:ctor {0139D44E-6AFE-49F2-8690-3DAFCAE6FFB8}\\Windows Fax and Scan.lnk {0139D44E-6AFE-49F2-8690-3DAFCAE6FFB8}\\XPS Viewer.lnk {0139D44E-6AFE-49F2-8690-3DAFCAE6FFB8}\\Accesorios \\Paint.lnk {0139D44E-6AFE-49F2-8690-3DAFCAE6FFB8}\\Accesorios\\Conexión a escritorio remoto.lnk

308

Machine Translated by Google Versión 4.95.1

Introducción a Linux para los forenses y encargados de hacer cumplir la ley

{0139D44E-6AFE-49F2-8690-3DAFCAE6FFB8}\\Accesorios\\Herramienta de recorte.lnk {0139D44E-6AFE-49F2-8690-3DAFCAE6FFB8}\\Accesorios\\Notas adhesivas.lnk {0139D44E-6AFE-49F2-8AE960-3DAFC }\\Accesorios\\Centro de Bienvenida.lnk {0139D44E-6AFE-49F2-8690-3DAFCAE6FFB8}\\Accesorios\\Calculadora.lnk {0139D44E-6AFE-49F2-8690-3DAFCAE6FFB8}\\Accesorios\\displayswitch.lnk {0139D44E -6AFE-49F2-8690-3DAFCAE6FFB8}\\Herramientas administrativas\\Administración de equipos. ,ÿ enlace

{9E3995AB-1F9C-4F13-B827-48B24B6C7174}\\TaskBar\\Explorer de Windows.lnk {9E3995AB-1F9C-4F13-B827-48B24B6C7174}\\TaskBar\\Google Chrome.lnk {9E3995AB-1F9C-4F13-B824B8246-48B1746-48B1727 }\\TaskBar\\Internet Explorer.lnk {9E3995AB-1F9C-4F13-B827-48B24B6C7174}\\TaskBar\\Mozilla Firefox.lnk {A77F5D77-2E2B-44C3-A6A2-ABA601054A51}\\Accesorios\\Accesibilidad\\Ampliar .lnk {A77F5D77-2E2B-44C3-A6A2-ABA601054A51}\\Accesorios\\Símbolo del sistema.lnk

Para repasar, la primera línea de un bucle bash anterior significa "para cada archivo en el directorio actual (*), ejecute el siguiente comando echo | tr ", seguido de la palabra clave bash done para cerrar el bucle.

Puede ver en la salida que hemos desofuscado los nombres. La salida desofuscada coincide con la salida original línea por línea. Esto significa que estos son los mismos (el tercero desde abajo)36:

{9R3995NO-1S9P-4S13-O827-48O24O6P7174}\\\\GnfxOne\\\\Zbmvyyn\ Sversbk.yax {9E3995AB-1F9C-4F13-B827-48B24B6C7174} \\TaskBar \\Mozilla Firefox.lnk

Esa entrada en particular es para un enlace a Mozilla Firefox. El valor GUID al frente del nombre del archivo representa la "carpeta conocida"2 FOLDERID_UserPinned . Si queremos ver el contenido o el "valor" de la entrada, debemos usar el nombre ROT-13 en la línea de comando. Podemos usar xxd para ver los valores brutos en hexadecimal. barry@forensicbox:...(valores)$ xxd \{9R3995NO-1S9P-4S13-O827-48O24O6P7174\}\\\\GnfxOne\\\\Zbmvyyn\Sversbk.yax 00000000: 0000 0000 0400 0000 0000 0 0000 04 ............... 00000010: 0000 80bf 0000 80bf 0000 80bf 0000 80bf ................ 00000020: 0000 80bf 0000 80bf 0000 80bf 0000 80bf ................ 00000030: 0000 80bf 0000 80bf ffff ffff c03a bc03 .............:.. ........ 00000040: f8be d201 0000 0000

Se puede encontrar un recuento de la cantidad de veces que se usó este enlace en el desplazamiento 0x04 (resaltado en amarillo). Así que este enlace fue accedido 4 veces, según esta entrada. La fecha en formato FILETIME de Windows se puede encontrar en o set 0x3c (resaltado en azul). Si bien el recuento de accesos en 0x04 es fácil de descifrar, el valor de la fecha de Windows no lo es. Uso un 36Los caracteres de escape adicionales (\) en la salida ofuscada se deben a que el comando ls escapa de los espacios. El comando echo usado con el comando tr no lo hace.

309

Machine Translated by Google Versión 4.95.1

Introducción a Linux para los forenses y encargados de hacer cumplir la ley

pequeño script de python para decodificar el valor del tiempo (la cantidad de bloques de 100 nanosegundos desde el 1 de enero de 1601). Puede descargar el script de python (WinTime) usando wget:

barry@forensicbox:(valores)$ wget http://www.linuxleo.com/Files/WinTime -O ~/WinTime.py

Dado que actualmente estamos en el punto de montaje regmount , asegúrese de usar la opción wget -O para escribir el archivo en su directorio de inicio (~/WinTime.py). No desea intentar descargar el archivo en el directorio actual (es nuestro punto de montaje del registro montado en el fusible). Una vez que tenga el script, puede copiar el valor hexadecimal y proporcionarlo como argumento a WinTime.py. Asegúrese de eliminar los espacios del valor (usaremos una forma alternativa de obtener este valor de xxd más adelante):

barry@forensicbox:~$ python ~/WinTime.py c03abc03f8bed201 Jue 27 de abril 01:45:57 2017

Si realizó una instalación completa de Slackware, Python ya debería estar en su sistema. El comando python apunta al archivo WinTime.py que nombramos anteriormente con wget -O. El ~ indica que el archivo está en nuestro directorio de inicio. Esto nos deja con una última hora de ejecución del 27 de abril a las 01:45 aproximadamente. Una educación forense completa con respecto a las entradas del registro, la interpretación de fechas y horas, y el ajuste de la zona horaria está muy lejos del alcance de esta guía, pero asegúrese de tener en cuenta la configuración de la hora, las zonas horarias y el sesgo del reloj para cualquier examen forense donde las fechas sean significativas. Las fechas de archivo y las marcas de tiempo son uno de los escollos del análisis. Lea sobre el tema por completo antes de hacer cualquier interpretación. En este punto, es hora de desmontar nuestro archivo de registro montado en fusible. Usaremos el mismo punto de montaje regmount en el próximo ejercicio.

barry@forensicbox:~$ fusermount -u regmount

10.6.2 Ejercicio de análisis de registro 2: SAM y cuentas

Veamos otro archivo de registro, el subárbol SAM . La colmena SAM puede tener una gran cantidad de información disponible si hay cuentas locales presentes en el sistema. Una vez más, no vamos a realizar un análisis completo, solo vamos a echar un vistazo a algunos valores de una de las claves más importantes.

Podemos agarrar la sección SAM de la misma manera que hicimos con NTUSER.DAT, primero buscando la entrada adecuada de MFT usando fls y luego usando icat para extraer el archivo: )

310

Machine Translated by Google Versión 4.95.1

Introducción a Linux para los forenses y encargados de hacer cumplir la ley

barry@forensicbox:~$ fls -Fr -o 2048 NTFS_Pract_2017/NTFS_Pract_2017.E01 | grep SAM

r/r 178-128-2: Windows/System32/config/SAM

Así que nuestra entrada MFT de destino aquí es 178. Ahora extraeremos con icat y verificaremos el tipo de archivo nuevamente con el comando de archivo . El nombre del archivo que usamos en el archivo extraído es arbitrario. Nómbralo como quieras. Sin embargo, la consistencia es una buena idea.

barry@forensicbox:~$ icat -o 2048 NTFS_Pract_2017/NTFS_Pract_2017.E01 178 > SAM.178 barry@forensicbox:~$ archivo SAM.178 SAM.178: archivo de registro de MS Windows, NT/2000 o superior

Usaremos el punto de montaje SAM para este ejercicio como lo hicimos en el anterior.

barry@forensicbox:~$ montajeregf SAM.178 montajeregf/ montajeregf 20190303

Dado que ya extrajimos el archivo NTUSER.DAT para la cuenta AlbertE , echemos un vistazo a la misma cuenta en el archivo SAM . Si cambiamos los directorios a SAM/Dominios/Cuenta/Usuarios, veremos la siguiente lista de cuentas potenciales:

barry@forensicbox:~$ cd regmount/SAM/Dominios/Cuenta/Usuarios/ barry@forensicbox:...Usuarios$ ls (valores)/ 000001F4/ 000001F5/ 000003E8/ 000003E9/ Nombres/

Lo que vemos en el resultado anterior son una serie de subclaves (aquellas que comienzan con 00000* que representan el valor hexadecimal de la identificación relativa de la cuenta. Podemos traducirlas con bc, como lo haríamos con cualquier valor hexadecimal:

eco "ibase=16; 000001F4" | antes de Cristo Pero hagámoslo todo a la vez con un bucle for para repetir el comando en todos los directorios (pero solo en aquellos que tienen un valor hexadecimal):

barry@forensicbox:...Usuarios$ por nombre en 00000* > hacer > echo "ibase=16; $nombre" | bc > hecho 500

311

Machine Translated by Google Versión 4.95.1

Introducción a Linux para los forenses y encargados de hacer cumplir la ley

501

1000 1001

Si lee sobre las cuentas de Windows, verá que tenemos el administrador del sistema (RID 500), la cuenta de invitado (RID 501) y un par de cuentas de usuario (1000 y 1001). Hay varias formas de asociar las cuentas con usuarios particulares, pero simplemente navegaremos a los valores bajo la subclave 000003E8/ .

barry@forensicbox:...Usuarios$ cd 000003E8/\(valores\)/ barry@forensicbox:...(valores)$ ls F UserPasswordHint V

Tenemos tres "les" aquí para mirar. Un vistazo muy rápido en la parte inferior del archivo V muestra el nombre de usuario asociado con esta cuenta:

barry@forensicbox:(valores)$ xxd V ... 00000160: 0000 0001 0000 0000 0102 0000 0000 0005 ................ 00000170: 2000 0000 2002 0000 0102 0000 0000 0005 ... ........... 00000180: 2000 0000 2002 0000 4100 6c00 6200 6500 ... ...Alba 00000190: 7200 7400 4500 0000 0102 0000 0700 0000 rtE.......... 000001a0: 0300 0100 0300 0100 13c4 df6f 671a 70d2 ..........og.p. 000001b0: 0c04 49e1 c16e c39a 0300 0100 0300 0100 ..I..n..........

El texto rojo muestra la cuenta asociada como la de AlbertE. El UserPasswordHint es bastante obvio. Pero echemos un vistazo al contenido de F:

barry@forensicbox:~$ xxd F 00000000: 0200 0100 0000 0000 678e 5df7 f7c1 d201 ........g.]..... 00000010: 0000 0000 0000 0000 20d7 bf15 76ae d201 ...... .. ...v... 00000020: ffff ffff ffff ff7f 5ce9 5df2 f7c1 d201 ........\.]..... 00000030: e803 0000 0102 0000 1402 0000 0000 0000 .............. .. 00000040: 0000 0700 0100 0000 0000 4876 488a 3600 ..........HvH.6.

A diferencia de los archivos V o UserPasswordHint , F no muestra ningún dato obvio. Lo que está viendo es información de la cuenta del usuario AlbertE, que incluye:

Última fecha de inicio de sesión: o set 8 Fecha de establecimiento/reinicio de contraseña: o set 24

Último inicio de sesión fallido: o set 40

312

Machine Translated by Google Versión 4.95.1

Introducción a Linux para los forenses y encargados de hacer cumplir la ley

...y otra información de la cuenta (número de inicios de sesión, RID, etc.). Nos vamos a concentrar en las fechas en los intervalos que se muestran arriba. Ya convertimos fechas similares usando el script python WinTime.py . Podríamos escribir cada valor en la línea de comando y ejecutar el script por separado para cada valor. Sin embargo, una mejor manera sería usar la línea de comando para darnos solo el valor que queremos y pasar cada uno al script WinTime.py . Podemos hacer esto con un bash for loop. Y si lee la página del manual para xxd, verá que también podemos usar diferentes opciones para xxd que nos permitan completar la conversión de fecha sin tener que copiar el valor hexadecimal.

Veamos qué sucede si ejecutamos xxd con -ps (volcado hexadecimal simple) -s8 (busca el byte 8) -l8 (la salida tiene una longitud de 8 bytes). El símbolo del sistema se ha truncado nuevamente para mejorar la legibilidad (F es el "archivo" que estamos viendo):

barry@forensicbox:(valores)$ xxd -ps -s8 -l8 F 678e5df7f7c1d201

Encontramos que la cadena de fecha extraída es exactamente el formato que necesitamos pasar a WinTime.py. Para pasar la salida, usaremos la sustitución de comandos. Podemos hacer esto usando una subcapa. Al ejecutar el comando xxd en una subcapa, podemos pasar el valor del comando ejecutado similar a una variable usando el $. Esto se hace usando $(...) alrededor del comando xxd . Esto sustituye la salida de xxd directamente al argumento requerido para WinTime.py:

barry@forensicbox:~$ python ~/WinTime.py $(xxd -ps -s8 -l8 F) dom 30 abr 21:23:09 2017

Esto se puede llevar un paso más allá. Tenemos tres valores de fecha separados para convertir aquí. Uno está en o set 8 (-s8 como convertimos arriba). Los otros están a 24 y 40 de compensación. Suena como un candidato perfecto para nuestro ahora familiar bash for loop. Podemos usar los conjuntos 8, 24 y 40 como nuestra variable, y pasarlos a nuestro comando de sustitución de WinTime.py. Debería verse algo como esto:

barry@forensicbox:(valores)$ para compensación en 8 24 40 > do > python ~/WinTime.py $(xxd -ps -s$offset -l8 F) > done dom 30 de abril 21:23:09 2017 jue 6 de abril 01:35:34 2017 dom 30 de abril 21:23:01 2017

En lugar de repetir el comando con -s8, -s24 y -s40, simplemente creamos un bucle con $offset y proporcionamos los valores 8, 24 y 40 en el bucle. Esto nos da los valores resultantes:

Última fecha de inicio de sesión: dom 30 de abril 21:23:09 2017

313

Machine Translated by Google Versión 4.95.1

Introducción a Linux para los forenses y encargados de hacer cumplir la ley

Fecha de establecimiento/reinicio de contraseña: jue 6 de abril 01:35:34 2017 Último inicio de sesión fallido: dom 30 de abril 21:23:01 2017

Examinar los archivos de registro de Windows en un entorno de línea de comandos puede no ser el método más simple, pero es una excelente manera de aprender cómo se analiza un registro y dónde se encuentra la información.

10.6.3 Análisis de aplicaciones: captación previa

Al comprender las advertencias que proporcionamos anteriormente sobre el estado de muchos de los proyectos libio , asegúrese de explorar algunos de ellos y probarlos. La documentación puede ser escasa en algunos lugares, pero ahí es donde entran la experimentación y las pruebas. En muchos casos, las bibliotecas se proporcionan para agregar capacidades a otros programas, las utilidades proporcionadas pueden simplemente exportar información de un artefacto a XML o formato de texto directamente a la salida estándar. libscca es un ejemplo de esto y se usa para acceder a los archivos de recuperación previa de Windows.

Los archivos de captación previa pueden ser un artefacto forense útil por varias razones. Pueden proporcionar tiempos de ejecución adicionales para líneas de tiempo, se pueden usar para probar la ejecución del programa incluso cuando se ha eliminado un ejecutable y se pueden usar para correlacionar otros artefactos creados durante la ejecución. Se puede encontrar más información en Internet37 . Echemos un vistazo a un ejemplo rápido, después de instalar libscca:

barry@forensicbox:~$ su ... root@forensicbox:~# sboinstall libscca libscca (analizador de archivos de captura previa de Windows libYAL) libscca es una biblioteca para acceder al formato de archivo de búsqueda previa de Windows (SCCA).

¿Continuar con libscca? [y] Limpieza para libscca-20181227... root@forensicbox:~# salir

Con libscca instalada, busquemos un archivo de búsqueda previa para verlo. Buscaremos en la imagen NTFS archivos que terminen en .pf. Puede ver que hay bastantes de ellos (la salida está truncada).

37http://www.forensicswiki.org/wiki/Prefetch es un buen comienzo

314

Machine Translated by Google Versión 4.95.1

Introducción a Linux para los forenses y encargados de hacer cumplir la ley

barry@forensicbox:~$ fls -Fr -o 2048 NTFS_Pract_2017/NTFS_Pract_2017.E01 | grep .pf$ r/r 72-128-2: Windows/Prefetch/58.0.3029.81_CHROME_INSTALLER-F06A66AC.pf r/r 73-128-2: Windows/Prefetch/AUDIODG.EXE-BDFD3029.pf ... r/r 123-128-2: Windows/Prefetch/NMAP.EXE-69B77167.pf ... r/r 160-128-2: Windows/Prefetch/WORDPAD.EXE-D7FD7414.pf r/r 161-128-2: Windows/Prefetch/WUDFHOST.EXE-AFFEF87C.pf

Nuestro conocido comando fls se ejecuta, buscando solo archivos, de forma recursiva (-Fr) en el sistema de archivos en o set 2048 (-o 2048) en nuestros archivos NTFS EWF. Usando grep, buscamos .pf al final de la línea (significado por \$). La lista es larga, pero veremos el archivo de captación previa NMAP.EXE (entrada MFT 123-128-2). Podemos extraer el archivo de la imagen con icat:

barry@forensicbox:~$ icat -o 2048 NTFS_Pract_2017/NTFS_Pract_2017.E01 123 > nmap.pf.123

Echemos un vistazo rápido al encabezado del archivo con xxd. Inmediatamente puede ver por qué la biblioteca que acabamos de instalar se llama libscca. El encabezado de captación previa tiene una longitud de 84 bytes con la versión en 0x00 de compensación y el encabezado SCCA en 0x041 de compensación.

barry@forensicbox:~$ xxd -l 84 nmap.pf.123 00000000: 1700 0000 5343 4341 1100 0000 aeaa 0000 ....SCCA........ 00000010: 4e00 4d00 4100 5000 2e00 4500 5800 4500 NMAP..EXE 00000020: 0000 0200 0000 0000 d935 a382 c07b 719d .........5...{q. 00000030: bb36 a382 0100 0000 483d 4087 1100 0000 .6......H=@..... 00000040: 483d 4087 c029 3685 0000 0000 6771 b769 H=@..)6.....gq. yo 00000050: 0000 0000 ....

Algunas de las características que podemos encontrar (tenga cuidado con el orden de los bytes):

versión de captación previa = 0x0017 (Versión 23 - Windows 7) Encabezado SCCA = 0x5343 0x4341 (SCCA) nombre ejecutable = 0x4e 0x4d 0x41 0x50 0x2e 0x45 0x58 0x45 (NMAP.EXE) prefetch hash = 0x69b7 0x7167 (coincide con el hash en el nombre de archivo .pf ) El último tiempo de ejecución se puede encontrar en el conjunto 128 en el archivo de búsqueda previa (8 bytes de largo), y podemos usar WinTime.py nuevamente para descifrarlo:

barry@forensicbox:~$ python WinTime.py $(xxd -s 128 -l8 -ps nmap.pf.123) jue 6 abr 15:07:20 2017

315

Machine Translated by Google Versión 4.95.1

Introducción a Linux para los forenses y encargados de hacer cumplir la ley

Con suficiente información sobre el formato, podría pasar mucho tiempo analizando el archivo. Hay otra información almacenada dentro, incluidas bibliotecas y otros archivos a los que se accede cuando el se inicia el ejecutable. Pero a partir de aquí usaremos sccainfo de libscca para ver el archivo de captación previa contenido, que es bastante extenso.

barry@forensicbox:~$ sccainfo nmap.pf.123 sccainfo 20181227

Información del archivo de recuperación previa de Windows (PF):

Versión de formato

: 23

Hachís de captación previa

: 0x69b77167

Nombre de archivo ejecutable

: NMAP.EXE

Ejecutar cuenta Tiempo de última ejecución:

:9 : 6 de abril de 2017 15:07:20.470652700 UTC

Nombres de archivo:

Número de nombres de archivo

: 53

Nombre de archivo: 1

: \DISPOSITIVO\VOLUMEN DE DISCO DURO2\WINDOWS\SYSTEM32\NTDLL.DLL

Nombre de archivo: 2

: \DISPOSITIVO\VOLUMEN DE DISCO DURO2\WINDOWS\SYSTEM32\KERNEL32.DLL

... Volúmenes: Número de volúmenes

:1

Volumen: 1 información: Ruta del dispositivo

: \DISPOSITIVO\VOLUMEN DE DISCO DURO2

Tiempo de creación

: 6 de abril de 2017 04:48:55.209910400 UTC

Número de serie

: 0x5019050c

Existen numerosas utilidades disponibles para los usuarios de Linux que se pueden encontrar para ayudar en el análisis archivos, artefactos y otros datos recuperados de computadoras que ejecutan sistemas operativos distintos que Linux. Hay, de hecho, demasiados para enumerarlos aquí. A veces es simplemente una cuestión de encontrar un proyecto de código abierto comparable: como usar LibreOffice para ver Microsoft O ce o Visio les. También están las utilidades simples que están preinstaladas o se instalan fácilmente en su distribución de Linux, como catdoc o herramientas como pdfinfo y exiftool para leer archivos metadatos Hay demasiados para enumerarlos aquí, pero baste decir que en los últimos años El análisis de la capa de aplicación se ha vuelto mucho más fácil en Linux.

316

Machine Translated by Google Versión 4.95.1

Introducción a Linux para los forenses y encargados de hacer cumplir la ley

11 herramientas básicas de investigación de redes En las secciones anteriores hemos cubierto una gran cantidad de herramientas que nos permiten adquirir y examinar imágenes de disco y volúmenes del sistema de archivos. Sin embargo, hoy en día ese no es generalmente el límite del apoyo a la investigación. A menudo nos encontramos en el ámbito en línea, donde necesitamos hacer resolución de nombres, investigaciones de direcciones IP y otras consultas de red. Regularmente necesitamos encontrar información de contacto para el proceso legal para obtener suscriptor, registrador y otra información de cuenta en línea relacionada con víctimas de delitos y perpetradores. En este capítulo, cubriremos algunas herramientas básicas que le permitirán responder algunas de las preguntas comunes sobre cuentas en línea, direcciones y otros recursos. Para muchas de estas búsquedas fundamentales, podemos usar sitios web informativos como centralops.net o cualquiera de los sitios de WHOIS. Pero, ¿por qué volver a abrir un navegador web y escribir cuadros de diálogo cuando puede ejecutar fácilmente un comando simple para obtener el mismo resultado (y a menudo más limpio)? Además, con los argumentos de la línea de comandos, puede redirigir más fácilmente la salida a un archivo para tomar notas de forma sencilla.

11.0.1 Búsqueda de direcciones IP

Una de las tareas de investigación de red más comunes que encontramos es una simple búsqueda del Servicio de nombres de dominio (DNS) para asociar un nombre de dominio con una dirección IP. Este es el registro DNS 'A' para un dominio. Hay varias herramientas que le proporcionarán esta información. Veremos el comando host , nslookup y dig. El comando host está disponible en la mayoría de los sistemas operativos y en Linux es tan fácil de usar como en cualquier otra plataforma. Puede especificar el 'tipo' de registro DNS que desea buscar con -t. Por ejemplo, para obtener el registro 'A' (dirección) de linuxleo.com: barry@forensicbox:~$ host -t A linuxleo.com linuxleo.com tiene la dirección 74.208.236.144

El comando nslookup se considera 'obsoleto', pero lo mostraremos aquí para completarlo, ya que todavía se usa ampliamente (dig es la herramienta de búsqueda de DNS preferida). nslookup proporciona una salida similar (aunque algo más detallada): barry@forensicbox:~$ nslookup linuxleo.com Servidor: 192.168.86.1 Dirección:

192.168.86.1#53

Respuesta no autorizada: Nombre: linuxleo.com Dirección: 74.208.236.144

317

Machine Translated by Google Versión 4.95.1

Introducción a Linux para los forenses y encargados de hacer cumplir la ley

La información del servidor y la dirección en la parte superior de la salida de nslookup proviene de la puerta de enlace de la red que aparece en el archivo /etc/resolv.conf (en este caso, la puerta de enlace también es nuestro servidor DNS, como lo indica el #53 para el DNS estándar Puerto). También podemos usar el comando dig , otra herramienta de consulta de DNS con toneladas de flexibilidad incorporada y un poco más de funcionalidad que host o nslookup. Para un uso simple, podemos pasar a cavar el nombre de host que queremos buscar: barry@forensicbox:~$ cavar linuxleo.com A ; DiG 9.16.5 linuxleo.com A ;; opciones globales: +cmd ;; Tengo respuesta: ;; ->>HEADER
View more...

Comments

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF