Informática Forense
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.
Instalación de Volatility en Debian
Volatility es una herramienta de software libre y código abierto diseñada para la análisis de memoria forense en sistemas operativos. Funciona en entornos Linux, aunque también es compatible con Windows y otros sistemas operativos.
Para su instalación tendremos que clonar un repositorio:
git clone git clone https://github.com/volatilityfoundation/volatility3.git
Acto seguido, tendremos que crear un entorno virtual e instalar las dependencias del repositorio clonado
python3 -m venv volatility_venv
source volatility_venv/bin/activate
cd volatility3
pip install -r requirements.txt
Una vez hecho esto, podemos instalar volatility.
python3 setup.py build
python3 setup.py install
Volcado de disco duro en Windows
Empezaremos creando el volcado del disco duro en Windows, en este caso práctico estoy usando una MV Windows con un disco de 30 GB a la cual le he añadido otro disco de 60 GB para realizar el volcado tanto de disco duro como de memoria.
Lo primero es instalar la herramienta que vamos a usar para el volcado, en mi caso estaré usando AccesData FTK imagesr.
Una vez la hemos instalado, podemos proceder a crear el volcado, para ello vamos a seguir los siguientes pasos:
- Pulsamos en File y seleccionamos la opción Create Disk images.
- Seleccionamos el tipo de dispositivo origen, en este caso un dispositivo de almacenamiento físico
- Lo siguiente es seleccionar el disco del cual vamos a realizar el volcado.
- Especificamos donde se va a realizar el volcado.
- A continuación podemos hacer click en “start” para comenzar el volcado. Veremos que aparece una ventana como esta en la que se muestra el progreso.
- Al terminar el volcado podremos ver una ventana con varios detalles.
Si accedemos al dispositivo en el cual se ha almacenado el volcado podremos comprobar que se han creado varios ficheros:
Volcado de memoria en Windows
Para realizar el volcado de memora voy a utilizar la misma herramienta que estuve usando anteriormente, el proceso de volcado de memoria es muy similar al de disco.
- Una vez abierta la herramienta, hacemos clic en “File” > “Capture Memory”.
- Veremos una ventana en la cual vamos a especificar toda la información necesaria sobre el volcado de memoria.
- Comenzará el proceso de volcado.
Una vez terminado el proceso, podremos comprobar que han aparecido en el dispositivo E: los siguentes ficheros:
Volcado de registros en Windows
Estaré usando la misma herramienta que en los dos casos anteriores, el proceso es muy simple.
Hacemos click en el siguiente icono y especificamos el volumen en el que se guardarán los datos:
Una vez terminado el proceso podemos ver que se han creado los siguientes ficheros y directorios.
Instalación de Autopsy en Windows 10
Para el análisis de datos de la máquina Windows, voy a instalar la herramienta Autopsy, podemos obtenerla desde este enlace.
Una vez instalada la herramienta crearemos un caso.
Especificamos donde se guardará el caso.
Indicamos alguna informació opcional.
Al finalizar la creación del caso, Autopsy generará una base de datos con la que va a trabajar la herramienta, el siguiente paso es seleccionar la fuente de datos que vamos a utilizar para la recolección de información. En mi caso especificaré el disco creado anteriormente en la otra máquina, el cual he asociado ahora a esta nueva máquina.
Veremos una ventana en la que seleccionaré todos los módulos de Ingest, exceptuando IOS Analyzer y Windows Analyzer.
Después de esto, comenzará el análisis de la imagesn de disco, este proceso puede demorar un buen rato.
Volcado de disco en Linux
Para ello voy a usar el comando dd
dd if=/dev/vda1 of=/mnt/volcadolinux/discolinux.iso bs=64K
Ya que tenemos todas las herramientas necesarias, incluyendo los volcados de datos de ambas máquinas, podemos proceder a obtener la información
Volcado de Memoria en Linux
Para el volcado de memoria de la máquina Linux, estaré usando la harrmaienta Lime, esta herramienta podemos instalarla en nuestra máquina Linux mediante un repositorio.
git clone https://github.com/504ensicsLabs/LiME.git
apt install lime-forensics-dkms
Ahora tendremos que compilar el módulo de Lime y crear el dump.
cd LiME/src
make
sudo insmod lime-6.1.0-18-amd64.ko "path=/mnt/volcadolinux/VolcadoMemoria/memdump.mem format=lime"
Apartado A) Maquina Windows
1. Procesos en ejecución.
python vol.py -f "/mnt/volcadowindows/VolcadoMemoria/memdump.mem" windows.pslist.PsList
2. Servicios en ejecución.
python vol.py -f "/mnt/volcadowindows/VolcadoMemoria/memdump.mem" windows.getservicesids.GetServiceSIDs
3. Puertos abiertos.
python vol.py -f "/mnt/volcadowindows/VolcadoMemoria/memdump.mem" windows.netstat.NetStat
4. Conexiones establecidas por la máquina.
python vol.py -f "/mnt/volcadowindows/VolcadoMemoria/memdump.mem" windows.netscan.NetScan
5. Sesiones de usuario establecidas remotamente.
python vol.py -f "/mnt/volcadowindows/VolcadoMemoria/memdump.mem" windows.sessions.Sessions
6. Ficheros transferidos recientemente por NetBios.
Esto podemos conseguirlo con la herramienta NetBios, aunque yo no tenía ningún fichero transferido por NetBios, con lo que no he obtenido resultado.
nbtstat -n
nbtstat -S
7. Contenido de la caché DNS.
Esto podemos conseguirlo desde la CMD de la propia máquina Windows, ejecutando el siguiente comando:
ipconfig /displaydns
8. Variables de entorno.
python vol.py -f "/mnt/volcadowindows/VolcadoMemoria/memdump.mem" windows.envars.Envars
9. Dispositivos USB conectados.
Para esto, podemos usar la herramienta Autopsy.
10. Redes wifi utilizadas recientemente.
Para ello podemos ejecutar el siguiente comando:
netsh wlan show profiles
11. Configuración del firewall de nodo.
Esto podemos verlo utilizando el volcado de registros que hicimos anteriormente, con la herramienta AccessData Registry Viewer.
SYSTEM\ControlSet001\Services\SharedAccess\Defaults\FirewallPolicy\FirewallRules
12. Programas que se ejecutan en el Inicio.
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run:
No aparece nada ya que no hay aplicaciones que se ejecuten al inicio.
13. Asociación de extensiones de ficheros y aplicaciones.
Esto lograremos verlo con Autopsy, en la sección File Views
14. Aplicaciones usadas recientemente.
Utilizando Autopsy, en la sección Run Programs.
15. Ficheros abiertos recientemente.
16. Software Instalado.
17. Contraseñas guardadas.
Podemos ver las contraseñas guardadas de navegadores con Autopsy.
18. Cuentas de Usuario
En esta sección podemos encontrar una gran cantidad de información sobre los usuarios, no he logrado encontrar la contraseña de este, pero si podemos obtener cosas como las preguntas de seguridad que configura windows al crear un usuario durante la instalación.
19. Historial de navegación y descargas. Cookies.
20. Volúmenes cifrados
21. Archivos con extensión cambiada.
22. Archivos eliminados.
Podemos verlo con Autopsy, en la sección Recycle Bin, aunque yo no puedo mostrarlo porque el análisis del volcado no llegó a completarse al 100%, sin embargo, si podemos ver los archivos eliminados del disco que pertenecen al File System.
23. Archivos Ocultos.
Para esto usaremos Autopsy, tendremos que dirigirnos a la partición en la que se encuentran los archivos de la imagesn y buscar entre los archivos, podremos saber que es oculto si cuenta con la etiqueta hidden.
24. Archivos que contienen una cadena determinada.
25. Búsqueda de imágenes por ubicación.
Aqui podremos ver las imágenes que contengan geolocalización.
26. Búsqueda de archivos por autor.
Apartado B) Máquina Linux
No he conseguido que Volatility reconozca el volcado de memoria de Linux, así que para hacer esta parte, he usado comandos de terminal de la propia máquina que ha cometido el crimen.
1. Procesos en ejecución.
ps -aux
2. Servicios en ejecución.
ps -aux | grep service
3. Puertos abiertos.
netstat -tulpn
4. Conexiones establecidas por la máquina.
ss -ta
5. Sesiones de usuario establecidas remotamente.
who -a
6. Ficheros transferidos recientemente por NetBios.
7. Contenido de la caché DNS.
strings /var/cache/nscd/hosts
8. Variables de entorno.
env
9. Dispositivos USB conectados.
lsusb
10. Redes wifi utilizadas recientemente.
grep psk= /etc/NetworkManager/system-connections/*
He pixelado las claves, ya que con este comando aparecen en claro.
11. Configuración del firewall de nodo.
iptables -L
12. Programas que se ejecutan en el Inicio.
systemctl list-unit-files | grep "enabled enabled"
13. Asociación de extensiones de ficheros y aplicaciones.
14. Aplicaciones usadas recientemente.
15. Ficheros abiertos recientemente.
16. Software Instalado.
dpkg -l
17. Contraseñas guardadas.
cat /etc/shadow
18. Cuentas de Usuario
cut -d: -f1 /etc/passwd | sort | uniq
19. Historial de navegación y descargas. Cookies.
20. Volúmenes cifrados
21. Archivos con extensión cambiada.
22. Archivos eliminados.
23. Archivos Ocultos.
ls -la
24. Archivos que contienen una cadena determinada.
Con este comando, buscamos los archivos que contengan la cadena “ejemplo” en el directorio actual y sus subdirectorios.
grep -rnw . -e 'ejemplo'
25. Búsqueda de imágenes por ubicación.
26. Búsqueda de archivos por autor.
Con este comando buscamos en el directorio home todo el contenido cuyo propietario sea root.
find /home -user root