You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
316 lines
10 KiB
Markdown
316 lines
10 KiB
Markdown
---
|
|
title: "Informática forense"
|
|
date: 2023-02-08T18:50:12+01:00
|
|
draft: false
|
|
image: featured.png
|
|
categories:
|
|
- documentación
|
|
- Seguridad y Alta Disponibilidad
|
|
tags:
|
|
- Forense
|
|
- Autopsy
|
|
---
|
|
|
|
## Enunciado
|
|
|
|
La informática forense es el conjunto de técnicas que nos permite obtener la máxima información posible tras un incidente o delito informático.
|
|
|
|
En esta práctica, realizarás la fase de toma de evidencias y análisis de las mismas sobre una máquina Linux y otra Windows. Supondremos que pillamos al delincuente in fraganti y las máquinas se encontraban encendidas. Opcionalmente, podéis realizar el análisis de un dispositivo Android.
|
|
|
|
Sobre cada una de las máquinas debes realizar un volcado de memoria y otro de disco duro, tomando las medidas necesarias para certificar posteriormente la cadena de custodia.
|
|
|
|
|
|
|
|
## Apartado A. Máquina Windows
|
|
|
|
### Volcado de memoria
|
|
|
|
Para realizar el volcado de memoria he usado la herramienta **FTK Imager**, que permite realizar volcados de disco y memoria. Para ello hago lo siguiente. Utilizo las siguientes opciones:
|
|
|
|
![ftk4](https://i.imgur.com/tD6w8MG.png)
|
|
|
|
Ahora, para analizar los datos, utilizo **Volatility** en mi máquina debian; para ello, especifico el fichero que he creado con FTK Imager al utilizar los comandos.
|
|
|
|
#### 1. Procesos en ejecución
|
|
|
|
Uso el comando `pslist` para ver los procesos en ejecución:
|
|
|
|
```bash
|
|
python vol.py -f "/media/roberto/usb/memdump.mem" windows.pslist.PsList
|
|
```
|
|
|
|
![vol1](https://i.imgur.com/tMhTGFN.png)
|
|
|
|
#### 2. Servicios en ejecución
|
|
|
|
Uso el comando `getservicesids` para ver los servicios en ejecución:
|
|
|
|
```bash
|
|
python vol.py -f "/media/roberto/usb/memdump.mem" windows.getservicesids.GetServiceSIDs
|
|
```
|
|
|
|
![vol2](https://i.imgur.com/BZjmc2d.png)
|
|
|
|
#### 3. Puertos abiertos
|
|
|
|
Uso el comando `netstat` para ver los puertos abiertos:
|
|
|
|
```bash
|
|
python vol.py -f "/media/roberto/usb/memdump.mem" windows.netstat.NetStat
|
|
```
|
|
|
|
![vol3](https://i.imgur.com/DnH0We9.png)
|
|
|
|
#### 4. Conexiones establecidas por la máquina
|
|
|
|
Uso el comando `netscan` para ver las conexiones establecidas por la máquina:
|
|
|
|
```bash
|
|
python vol.py -f "/media/roberto/usb/memdump.mem" windows.netscan.NetScan
|
|
```
|
|
|
|
![vol4](https://i.imgur.com/7ZrLSg4.png)
|
|
|
|
#### 5. Sesiones de usuario establecidas remotamente
|
|
|
|
Uso el comando `sessions` para ver las sesiones de usuario establecidas remotamente:
|
|
|
|
```bash
|
|
python vol.py -f "/media/roberto/usb/memdump.mem" windows.sessions.Sessions
|
|
```
|
|
|
|
![vol5](https://i.imgur.com/YcTjn7U.png)
|
|
|
|
#### 6. Ficheros transferidos recientemente por NetBios
|
|
|
|
#### 7. Contenido de la caché DNS
|
|
|
|
#### 8. Variables de entorno
|
|
|
|
Para ver las variables de entorno, uso el comando `envars`:
|
|
|
|
```bash
|
|
python vol.py -f "/media/roberto/usb/memdump.mem" windows.envars.Envars
|
|
```
|
|
|
|
![vol6](https://i.imgur.com/IUSyeJ2.png)
|
|
|
|
### Volcado del registro
|
|
|
|
Para realizar el volcado de registro he usado también la herramienta **FTK Imager**. Utilizo la opción `Obtain system files`:
|
|
|
|
![ftk5](https://i.imgur.com/JUcvnmy.png)
|
|
|
|
Una vez finalizado el volcado, utilizo el programa **Registry Viewer** para analizar los datos obtenidos.
|
|
|
|
#### 10. Redes wifi utilizadas recientemente
|
|
|
|
Para ver las redes wifi usadas recientemente, abro el archivo `software`, y ahí sigo la siguiente ruta: `Microsoft/Windows NT/CurrentVersion/NetworkList/Profiles`:
|
|
|
|
![reg1](https://i.imgur.com/RFzUv61.png)
|
|
|
|
#### 11. Configuración del firewall de nodo
|
|
|
|
Para ver la configuración del firewall de nodo, abro el archivo `system`, y ahí sigo la siguiente ruta: `ControlSet001/Services/SharedAccess/Parameters/FirewallPolicy/FirewallRules`:
|
|
|
|
![reg2](https://i.imgur.com/4b7ZsO1.png)
|
|
|
|
#### 12. Programas que se ejecutan en el Inicio
|
|
|
|
Para ver los programas que se ejecutan en el inicio, abro el archivo `software`, y ahí sigo la siguiente ruta: `Microsoft/Windows/CurrentVersion/Run`:
|
|
|
|
![reg3](https://i.imgur.com/6MsrP73.png)
|
|
|
|
#### 13. Asociación de extensiones de ficheros y aplicaciones
|
|
|
|
No he podido encontrar en la aplicación **Registry Viewer** los registros, pero usando regedit en la máquina, se encuentran en la siguiente localización: `Computer\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts`:
|
|
|
|
![reg4](https://i.imgur.com/Ig5FCUk.png)
|
|
|
|
|
|
### Volcado de disco
|
|
|
|
Para realizar el volcado de disco he usado la herramienta FTK Imager también:
|
|
|
|
![ftk1](https://i.imgur.com/tUwr02N.png)
|
|
|
|
Selecciono **RAW** como tipo de imagen:
|
|
|
|
![ftk2](https://i.imgur.com/GWoxYEU.png)
|
|
|
|
Y, como indica la ayuda, en Fragment size pongo 0, además de indicar la ruta y el nombre del fichero:
|
|
|
|
![ftk3](https://i.imgur.com/cTgXwqp.png)
|
|
|
|
El resto de los pasos del proceso los dejo con los valores por defecto.
|
|
|
|
Ahora, para analizar los datos, utilizo Autopsy; para ello, abro el fichero que he creado con FTK Imager, indicamos el direcorio del fichero , y en tipo, selecciono **Disk image or VM file**:
|
|
|
|
![autopsy1](https://i.imgur.com/JHCRjQ2.png)
|
|
|
|
Tras finalizar la configuración, empezará a analizar el volcado de disco. Este proceso tarda bastante tiempo en completarse. Una vez acabado podemos analizar los datos obtenidos.
|
|
|
|
#### 9. Dispositivos USB conectados
|
|
|
|
Para ver los dispositivos USB conectados, utilizo la opción `USB Device Attached`:
|
|
|
|
![autopsy8](https://i.imgur.com/1XfoSfH.png)
|
|
|
|
#### 14. Aplicaciones usadas recientemente
|
|
|
|
Para ver las aplicaciones usadas recientemente, utilizo la opción `User Activity` del disco duro:
|
|
|
|
![autopsy9](https://i.imgur.com/vthHo40.png)
|
|
|
|
#### 15. Ficheros abiertos recientemente
|
|
|
|
![autopsy9](https://i.imgur.com/ZQtfblE.png)
|
|
|
|
#### 16. Software Instalado
|
|
|
|
Para ver el software instalado, utilizo la opción `Installed Programs`:
|
|
|
|
![autopsy10](https://i.imgur.com/xsFb4yR.png)
|
|
|
|
#### 18. Cuentas de Usuario
|
|
|
|
Para ver las cuentas de usuario, utilizo la opción `OS Accounts`:
|
|
|
|
![autopsy11](https://i.imgur.com/A1Ha5e6.png)
|
|
|
|
#### 19. Historial de navegación y descargas, cookies
|
|
|
|
Para ver el historial de navegación, utilizo la opción `Web History`:
|
|
|
|
![autopsy12](https://i.imgur.com/1EN0RI4.png)
|
|
|
|
Para ver las cookies utilizo la opción `Web Cookies`:
|
|
|
|
![autopsy13](https://i.imgur.com/rDaxg3p.png)
|
|
|
|
Para ver el historial de descargas, utilizo la opción `Web Downloads`:
|
|
|
|
![autopsy14](https://i.imgur.com/A6x55kE.png)
|
|
|
|
#### 21. Archivos con extensión cambiada
|
|
|
|
Los archivos con extensión cambiada aparecen en la sección `Analysis Results/Extension Mismatch Detected`:
|
|
|
|
![autopsy2](https://i.imgur.com/hmLGaGi.png)
|
|
|
|
#### 22. Archivos eliminados
|
|
|
|
Los archivos eliminados aparecen en la sección `Recycle Bin`:
|
|
|
|
![autopsy3](https://i.imgur.com/XmQIyKC.png)
|
|
|
|
#### 23. Archivos Ocultos
|
|
|
|
En la opción para explorar el sistema de archivos, se pueden distinguir los archivos ocultos porque en los metadatos, aparece la etiqueta: `Hidden`:
|
|
|
|
![autopsy4](https://i.imgur.com/OcIKUYP.png)
|
|
|
|
#### 24. Archivos que contienen una cadena determinada
|
|
|
|
Para buscar archivos que contengan una cadena determinada, utilizo la opción `Keyword Search`:
|
|
|
|
![autopsy5](https://i.imgur.com/B9ezFRy.png)
|
|
|
|
#### 25. Búsqueda de imágenes por ubicación
|
|
|
|
Para buscar imágenes por ubicación, utilizo la opción `Geolocation`:
|
|
|
|
![autopsy6](https://i.imgur.com/G9nTp6h.png)
|
|
|
|
#### 26. Búsqueda de archivos por autor
|
|
|
|
Para buscar archivos por autor, utilizo la opción `Metadata`:
|
|
|
|
![autopsy7](https://i.imgur.com/XcQPTmy.png)
|
|
|
|
## Apartado B) Máquina Linux
|
|
|
|
Intenta realizar las mismas operaciones en una máquina Linux para aquellos apartados que tengan sentido y no se realicen de manera idéntica a Windows.
|
|
|
|
### Volcado de memoria
|
|
|
|
He realizado el volcado de memoria con **Lime**, que es una herramienta que se utiliza para realizar volcados de memoria en Linux. Para ello, he usado el comando de la siguiente manera (he instalado Lime meadiante su repositorio en github):
|
|
|
|
```bash
|
|
insmod lime-4.19.0-23-amd64.ko "path=/mnt/linux/memorialinux.mem format=lime"
|
|
```
|
|
|
|
Es importante que para realizar el volcado, hay que iniciar el sistema de forma insegura, ya que si no, no permite utilizar el comando.
|
|
|
|
No he sido capaz de realizar el análisis utilizando volatility, ya que es necesario instalar plugins para interpretar el volcado de memoria, y no los reconoce, por lo que voy a usar los comandos en lugar de trabajar sobre el volcado.
|
|
|
|
#### 1. Procesos en ejecución
|
|
|
|
Para ver los procesos en ejecución, utilizo el comando `ps aux`:
|
|
|
|
![ps1](https://i.imgur.com/I6H5Egn.png)
|
|
|
|
#### 2. Servicios en ejecución
|
|
|
|
Para ver los servicios en ejecución, utilizo el comando `systemctl`:
|
|
|
|
```bash
|
|
systemctl list-units --type=service --state=running
|
|
```
|
|
|
|
![systemctl1](https://i.imgur.com/lh2yFCl.png)
|
|
|
|
#### 3. Puertos abiertos
|
|
|
|
Para ver los puertos abiertos, utilizo el comando `netstat`, que se encuentra en el paquete `net-tools`:
|
|
|
|
```bash
|
|
apt install net-tools
|
|
netstat -tulpn
|
|
```
|
|
|
|
![netstat1](https://i.imgur.com/QmwsCnY.png)
|
|
|
|
#### 4. Conexiones establecidas por la máquina
|
|
|
|
Las sesiones se pueden observar en el comando netstat utilizado anteriormente.
|
|
|
|
#### 5. Sesiones de usuario establecidas remotamente
|
|
|
|
Para ver las sesiones de usuario establecidas remotamente, utilizo el comando `who`:
|
|
|
|
```bash
|
|
who -a
|
|
```
|
|
|
|
![who1](https://i.imgur.com/m6c6R6z.png)
|
|
|
|
#### 7. Contenido de la caché DNS
|
|
|
|
En debian, la caché dns está deshabilitada por defecto. Para habilitarla, voy a instalar el paquete **nscd** (demonio de caché para servicio de nombres), y leer el fichero que genera. El fichero tiene un formato binario, por lo que voy a usar el comando `strings` para ver su contenido:
|
|
|
|
```bash
|
|
strings /var/cache/nscd/hosts
|
|
```
|
|
|
|
![nscd1](https://i.imgur.com/4rfJMeG.png)
|
|
|
|
#### 8. Variables de entorno
|
|
|
|
Para ver las variables de entorno, utilizo el comando `env`:
|
|
|
|
![env1](https://i.imgur.com/O4fIJRT.png)
|
|
|
|
### Volcado de disco
|
|
|
|
El volcado de disco en linux lo he realizado con el comando dd, que se utiliza para copiar archivos y volúmenes. Para ello, he usado el comando de la siguiente manera:
|
|
|
|
```bash
|
|
dd if=/dev/vda2 of=/mnt/linux/volcado_linux.001 bs=64K
|
|
```
|
|
|
|
![dd1](https://i.imgur.com/6P6cdSJ.png)
|
|
|
|
Es imporate que, durante el análisis de la imagen en Autopsy, el tiempo es mucho mayor, y que es de hecho la última fase, cuando ya se encuentra al 100% la que toma más tiempo.
|
|
|
|
Los apartados rellativos al análisis usando autopsy, o se realizan exactamente igual que en Windows, o no tienen sentido en Linux, por lo que no los están documentados aquí. |