PR5041 - Anàlisi Forense amb Autopsy
Objectius
- Crear una imatge forense verificada d'un disc dur
- Analitzar artefactes del sistema operatiu amb Autopsy
- Recuperar fitxers eliminats
- Construir una línia temporal d'events
- Documentar les troballes en un informe forense
Prerequisits
| Element | Detall |
|---|---|
| Temps estimat | 5 hores |
| Eines necessàries | Docker Desktop, Autopsy 4.x (instal·lable a Windows/Linux) |
| Fitxers de la pràctica | disk-image-incident.img - disponible al Moodle |
| Coneixements previs | Sistemes de fitxers bàsics (NTFS, ext4) |
Introducció
En aquesta pràctica analitzarem una imatge d'un disc dur que conté artefactes d'un incident de seguretat. La imatge disk-image-incident.img simula un portàtil d'empresa on es sospita que un empleat ha exfiltrat dades confidencials.
El teu objectiu com a forense és: 1. Determinar quins fitxers van ser accedits o copiats 2. Trobar evidències de l'ús d'eines de exfiltració 3. Recuperar fitxers eliminats que puguin ser rellevants 4. Identificar comunicacions sospitoses
Part 1: Adquisició i Verificació de la Imatge
1.1 Crear una còpia verificada
En un incident real, mai s'analitza el disc original. Sempre es treballa sobre una còpia:
# Crear una còpia forense del disc original amb dc3dd (millor que dd per a forense)
docker run --rm \
--name forensics-NOMCOGNOM \
-v /dev/sdb:/dev/source:ro \
-v $(pwd)/evidence:/output \
remnux/remnux-distro:focal \
dc3dd \
if=/dev/source \
of=/output/disk-image-NOMCOGNOM.img \
hash=sha256 \
hlog=/output/dc3dd-NOMCOGNOM.log \
log=/output/acquisition-NOMCOGNOM.log
# Verificar la integritat de la imatge del Moodle
sha256sum disk-image-incident.img
# Compara amb el hash que proporciona el professor
1.2 Crear el cas a Autopsy
- Obrir Autopsy
- Nou cas → Nom:
Incident-NOMCOGNOM→ Directori base: (tria un directori) - Número de cas:
INC-2024-001 - Examinador:
NOMCOGNOM - Afegir font de dades → Disc/Imatge → seleccionar
disk-image-incident.img - Seleccionar tots els mòduls d'ingestió
- Esperar que Autopsy processi la imatge (pot trigar 10-20 minuts)
Reflexió 1
Mentre Autopsy processa la imatge, observa els mòduls d'ingestió disponibles. Quina informació extreu cada mòdul? Per quin motiu l'anàlisi de paraules clau ("Keyword Search") pot ser valuosa en una investigació d'exfiltració de dades?
Part 2: Exploració del Sistema de Fitxers
2.1 Navegar l'arbre de fitxers
En el panell d'Autopsy, navega a:
- Data Sources → disk-image-incident.img → vol_2 (NTFS)
- Explora les carpetes principals: Users/, Windows/, Program Files/
Presta especial atenció a:
C:\Users\empleat\Desktop\ → Fitxers recents de l'usuari
C:\Users\empleat\Documents\ → Documents de treball
C:\Users\empleat\AppData\Roaming\ → Artefactes d'aplicacions (historial, etc.)
C:\Users\empleat\Downloads\ → Descàrregues (eines de compressió, etc.)
C:\$Recycle.Bin\ → Fitxers eliminats (recuperables)
C:\Windows\Prefetch\ → Programes executats recentment
2.2 Buscar evidències d'exfiltració
# A Autopsy, usar la pestanya "Keyword Search" per a buscar:
- "confidential"
- "secret"
- "internal"
- "employees" / "salary"
- "WinRAR" / "7zip" → Eines de compressió
- "Dropbox" / "GoogleDrive" / "WeTransfer" → Serveis de núvol
2.3 Analitzar els artefactes de Windows
Recent Files (LNK files):
En Autopsy → Results → Extracted Content → Recent Documents
Els fitxers LNK registren els últims fitxers oberts per l'usuari.
Prefetch:
Windows guarda arxius Prefetch per a accelerar el llançament de programes. Cada programa executat crea un fitxer PROGRAMA.EXE-HASH.pf:
# Analitzar fitxers Prefetch fora d'Autopsy
docker run --rm \
-v $(pwd)/evidence:/evidence \
--name prefetch-NOMCOGNOM \
remnux/remnux-distro:focal \
python3 -c "
import subprocess, os
for f in os.listdir('/evidence/prefetch/'):
if f.endswith('.pf'):
result = subprocess.run(['strings', f'/evidence/prefetch/{f}'],
capture_output=True, text=True)
print(f'=== {f} ===')
# Buscar noms de fitxers referenciats
for line in result.stdout.split('\n'):
if len(line) > 5 and '\\\\' in line:
print(f' {line}')
"
Browser History (Chrome):
# Extreure historial Chrome
docker exec forensics-NOMCOGNOM bash -c "
# SQLite de Chrome history
sqlite3 '/evidence/AppData/Local/Google/Chrome/User Data/Default/History' \
'SELECT datetime(last_visit_time/1000000-11644473600, \"unixepoch\"),
url, title
FROM urls
WHERE last_visit_time > 0
ORDER BY last_visit_time DESC
LIMIT 50' 2>/dev/null
"
Reflexió 2
Quins programes executats recents apareixen als fitxers Prefetch? Hi ha alguna eina de compressió (7zip, WinRAR) o de transfer de fitxers que cridi l'atenció?
Part 3: Recuperació de Fitxers Eliminats
3.1 Buscar fitxers eliminats a Autopsy
- A Autopsy, navegar a
Data Sources → vol_2 → $OrphanFiles - Aquests son els fitxers que han estat eliminats però que el sistema de fitxers encara recorda
3.2 Recuperació manual amb The Sleuth Kit
# Llistar fitxers eliminats en una imatge NTFS
docker run --rm \
-v $(pwd)/evidence:/evidence \
remnux/remnux-distro:focal \
fls -r -d /evidence/disk-image-incident.img | head -50
# Recuperar un fitxer específic per inode
# (l'inode es troba a la columna esquerra del resultat de fls)
docker run --rm \
-v $(pwd)/evidence:/evidence \
remnux/remnux-distro:focal \
icat /evidence/disk-image-incident.img 12345 > recovered-file-NOMCOGNOM.pdf
# Verificar el tipus de fitxer recuperat
file recovered-file-NOMCOGNOM.pdf
3.3 Carving de fitxers (photorec)
PhotoRec busca patrons de fitxers en l'espai no assignat del disc (on van els fitxers completament eliminats):
# PhotoRec: recuperar fitxers pel seu contingut (magic bytes)
docker run --rm -it \
-v $(pwd)/evidence:/evidence \
-v $(pwd)/recovered:/recovered \
remnux/remnux-distro:focal \
photorec /evidence/disk-image-incident.img
# Fotorec és interactiu: seleccionar:
# - La partició NTFS
# - Tipus de fitxers a recuperar: pdf, docx, xlsx, jpg, zip
# - Directori de sortida: /recovered/
# Comptar fitxers recuperats
ls recovered/ | wc -l
Reflexió 3
Dels fitxers recuperats, quins semblen rellevants per a la investigació d'exfiltració de dades? Com diferencies entre fitxers eliminats "normalment" (paperera) i fitxers eliminats per ocultar evidències?
Part 4: Anàlisi de la Memòria Volàtil
# Analitzar el dump de RAM amb Volatility3
docker run --rm \
-v $(pwd)/evidence:/evidence \
--name volatility-NOMCOGNOM \
sk4la/volatility3:latest \
python3 vol.py \
-f /evidence/ram-dump.mem \
windows.pslist.PsList
# Processos en execució en el moment de la captura
docker exec volatility-NOMCOGNOM \
python3 vol.py -f /evidence/ram-dump.mem windows.pslist.PsList \
| grep -E "EXCEL|WINRAR|7z|ftp|scp|curl|wget|powershell"
# Connexions de xarxa actives
docker exec volatility-NOMCOGNOM \
python3 vol.py -f /evidence/ram-dump.mem windows.netstat.NetStat
# Comandes executades des de la PowerShell (en memòria)
docker exec volatility-NOMCOGNOM \
python3 vol.py -f /evidence/ram-dump.mem windows.cmdline.CmdLine
Part 5: Línia Temporal de l'Incident
# Crear una supertimeline amb plaso/log2timeline
docker run --rm \
-v $(pwd)/evidence:/evidence \
-v $(pwd)/timeline:/timeline \
--name plaso-NOMCOGNOM \
log2timeline/plaso:latest \
log2timeline.py \
--storage-file /timeline/timeline-NOMCOGNOM.plaso \
--parsers win7 \
/evidence/disk-image-incident.img
# Exportar la línia temporal a CSV
docker exec plaso-NOMCOGNOM \
psort.py \
-o l2tcsv \
-w /timeline/timeline-NOMCOGNOM.csv \
/timeline/timeline-NOMCOGNOM.plaso
# Filtrar l'activitat sospitosa
python3 - << 'EOF'
import pandas as pd
df = pd.read_csv('timeline/timeline-NOMCOGNOM.csv',
names=['date','time','tz','macb','source','sourcetype',
'type','user','host','short','desc','version','filename',
'inode','notes','format','extra'],
skiprows=1)
# Filtrar per window temporal sospitosa
# (ajustar les dates segons el que troba l'alumne)
suspicious = df[
(df['date'].str.contains('2024-01')) &
(df['desc'].str.contains('WinRAR|7z|Dropbox|WeTransfer', case=False, na=False))
]
print(suspicious[['date', 'time', 'source', 'desc']].to_string())
EOF
Part 6: Informe de la Pràctica
Crea el document informe_forense_NOMCOGNOM.pdf (o .md) amb l'estructura completa:
# Informe Forense PR5041
**Perit**: NOMCOGNOM
**Data**: ____________________
**Cas**: INC-2024-001
## 1. Objecte de l'informe
[Descripció breu de la investigació]
## 2. Cadena de custòdia
| ID | Evidència | SHA-256 | Data adquisició |
|----|-----------|---------|-----------------|
| E01 | disk-image-incident.img | | |
| E02 | ram-dump.mem | | |
## 3. Eines usades
[Llista amb versions]
## 4. Troballes principals
### 4.1 Activitat sospitosa detectada
[Fitxers accedits, programes executats, connexions de xarxa]
### 4.2 Fitxers eliminats recuperats
[Llista i descripció dels fitxers rellevants recuperats]
### 4.3 Artefactes de navegació web
[Historial del navegador rellevant]
## 5. Línia temporal de l'incident
| Hora | Event | Font | Significació |
|------|-------|------|--------------|
| | | | |
## 6. Indicadors de compromís (IoC)
- IPs contactades:
- Fitxers creats/modificats:
- Programes executats:
## 7. Conclusions
[Resposta als objectius: hi ha hagut exfiltració? Quines dades?
Quin vector? Quan va comenzar i acabar l'activitat sospitosa?]
## 8. Reflexions
[Respostes a les 3 reflexions]
Rúbrica
Vegeu Rúbrica PR5041.