
Uno script Batch per Windows e uno script Bash per Unix per raccogliere in modo completo i dati forensi dell'host durante la risposta agli incidenti.
ir-rescue è composto da due script gemelli che raccolgono una miriade di dati forensi da sistemi Windows a 32 e 64 bit (ir-rescue-win) e da sistemi Unix (ir-rescue-nix). Gli script rispettano l'ordine di volatilità e gli artefatti che vengono modificati con l'esecuzione (ad es., file prefetch su Windows) e sono destinati all'uso in risposta agli incidenti in diverse fasi del processo di analisi e indagine. Ciascuno è descritto come segue:
ir-rescue-win è interamente scritto in Batch e può essere configurato per eseguire acquisizioni complete e personalizzate di tipi specifici di dati live e di dati storici dalle copie disponibili del servizio copie shadow del volume (VSS). ir-rescue-win utilizza comandi Windows integrati e utility di terze parti ben note di Sysinternals e NirSoft, ad esempio, alcune delle quali open-source. PowerShell e Windows Management Instrumentation (WMI) non vengono utilizzati per rendere ir-rescue-win trasversalmente compatibile.
ir-rescue-nix è scritto in Bash (v4+) e utilizza comandi Unix integrati. Alcuni comandi utilizzati potrebbero non essere conformi a POSIX e quindi potrebbero non essere disponibili su alcuni sistemi o varianti Unix-like, specialmente su sistemi operativi più datati.
ir-rescue è progettato per raggruppare le raccolte di dati in base al tipo di dato. Ad esempio, tutti i dati che riguardano la rete, come le condivisioni di file aperte e le connessioni TCP (Transmission Control Protocol), sono raggruppati insieme, mentre i processi in esecuzione, i servizi e le attività sono raccolti sotto malware. L'acquisizione dei tipi di dati e altre opzioni generali sono specificate in un semplice file di configurazione. Va notato che gli script lanciano un gran numero di comandi e strumenti, lasciando così una impronta considerevole (ad es., stringhe nella memoria, file prefetch, cache di esecuzione dei programmi) sul sistema. Il tempo di esecuzione varia in base alla potenza di calcolo, alla velocità di scrittura su disco e alle configurazioni impostate. Le prestazioni del disco sono particolarmente importanti se è impostata la cancellazione sicura e quando si esegue il dump della memoria a 64 bit (solitamente di dimensioni 8 GB), operazione che può richiedere molto tempo.
ir-rescue è stato scritto per analisti di risposta agli incidenti e forensi, nonché per professionisti della sicurezza, ed è utilizzato in aziende come Cisco, PepsiCo, SaskTel, Praetorian e Counteractive Security. Rappresenta uno sforzo per semplificare la raccolta di dati host, indipendentemente dalle esigenze investigative, e per dipendere meno dal supporto in sede quando l'accesso remoto o l'analisi live non sono disponibili. Può quindi essere utilizzato per sfruttare gli strumenti e i comandi già inclusi durante le attività forensi.
ir-rescue si basa su una serie di utility di terze parti per la raccolta di dati specifici dagli host. Le versioni degli strumenti sono elencate nell'ultima sezione e sono fornite con il pacchetto così come sono; pertanto, è necessario accettare le loro licenze e i termini di utilizzo prima di eseguire ir-rescue. Si noti che le utility Sysinternals non possono essere ridistribuite per essere copiate da altri secondo i Termini di licenza del software Sysinternals. Per questo motivo, ir-rescue non viene più pubblicato insieme alle utility Sysinternals, pertanto tutte le voci enumerate nella sezione Elenco e Riferimenti degli Strumenti di Terze Parti devono essere scaricate dal Repository Live di Sysinternals e spostate nelle cartelle appropriate affinché lo script possa funzionare.
Le descrizioni e l'organizzazione del set di strumenti sono fornite di seguito, con versioni sia a 32 che a 64 bit degli strumenti Windows incluse adiacenti, se applicabile:
tools-nix/: cartella degli strumenti di terze parti per ir-rescue-nix:
ascii/: file di testo ASCII art in formato *.txt;cfg/: file di configurazione:
ir-rescue-nix.conf: file di configurazione principale per ir-rescue-nix;nonrecursive-(hidden|md5sum).txt: percorsi non ricorsivi per file nascosti e md5sum;nonrecursive.txt: percorsi non ricorsivi per più strumenti;recursive-(exec|hidden|md5sum).txt: percorsi ricorsivi per eseguibili, file nascosti e md5sum;recursive.txt: percorsi ricorsivi per più strumenti;mem/: strumenti per la memoria:
ir-rescue-win deve essere eseguito in una console della riga di comando con diritti di amministratore, mentre ir-rescue-nix deve essere eseguito in una finestra della riga di comando con privilegi di root. Entrambi non richiedono argomenti e utilizzano un rispettivo file di configurazione per impostare le opzioni desiderate. Pertanto, l'esecuzione degli script richiede semplicemente il lancio dei file come segue:
ir-rescue-win-v1.w.x.bat, o./ir-rescue-nix-v1.y.z.sh.Alcuni strumenti che eseguono ricerche o scansioni ricorsive sono impostati per eseguire ricorsione solo su cartelle specifiche. Questo rende la raccolta dati più mirata, tenendo conto delle prestazioni di esecuzione, poiché le cartelle specificate sono posizioni probabili per l'analisi a causa dell'uso estensivo da parte del malware. Le posizioni per la ricerca ricorsiva e la ricerca non ricorsiva per sistemi Windows e Unix possono essere modificate a piacere nei rispettivi file di testo nella cartella di configurazione. Alcuni strumenti hanno file dedicati con posizioni specifiche in cui eseguire o non eseguire la ricorsione. Questi sono denominati recursive-<tool>.txt e nonrecursive-<tool>.txt, dove <tool> viene sostituito con il nome dello strumento. Ogni file deve contenere una posizione come percorso completo per riga senza barre rovesciate o barre finali.
Durante l'esecuzione, tutti i caratteri stampati nei canali Standard Output (STDOUT) e Standard Error (STDERR) vengono registrati in file di testo codificati UTF-8. Ciò significa che l'output degli strumenti viene archiviato in cartelle e file di testo corrispondenti. I messaggi ASCII di stato vengono comunque stampati sulla console per verificare l'avanzamento dell'esecuzione. Una cartella temporanea creata in %TEMP%\ir-rescue-win o /tmp/ir-rescue-nix viene utilizzata per memorizzare i dati in fase di esecuzione (ad es., driver per il dump della memoria e collegamenti alle copie VSS) e viene eliminata al termine. Le cartelle dei dati vengono create come segnaposto per i dati durante l'inizializzazione. Dopo la raccolta, le cartelle vuote possono essere eliminate se non sono stati raccolti dati (ad es., cache del browser vuota). Alla fine, i dati vengono compressi in un archivio protetto da password e successivamente cancellati, se impostato.
Il file di configurazione di ir-rescue-win e ir-rescue-nix è composto principalmente da direttive binarie semplici (true o false) per il comportamento generale degli script, per i tipi di dati da raccogliere e per gli strumenti avanzati da eseguire. Le righe precedute da un cancelletto (#) sono considerate commenti. Sono utilizzati per descrivere brevemente cosa fa ciascuna opzione, per elencare cartelle, file o chiavi di registro importanti per fornire un contesto, nonché per elencare gli strumenti rilevanti. Le descrizioni seguenti si applicano solo a ir-rescue-win, ma servono come esempio per comprendere l'approccio generale e il file di configurazione di ir-rescue-nix.
Per ir-rescue-win, i dati sono raggruppati nei tipi indicati dalle seguenti direttive:
activity: questa opzione imposta la raccolta dei dati di attività dell'utente;disk: questa opzione imposta la raccolta di dati del disco;events: questa opzione imposta la raccolta dei registri eventi di Windows;filesystem: questa opzione imposta la raccolta di dati relativi a NTFS e ai file;malware: questa opzione imposta la raccolta di dati di sistema che possono essere utilizzati per individuare malware;memory: questa opzione imposta la raccolta della memoria;network: questa opzione imposta la raccolta di dati di rete;registry: questa opzione imposta la raccolta del registro di sistema e utente;system: questa opzione imposta la raccolta di informazioni relative al sistema;web: questa opzione imposta la raccolta della cronologia di navigazione e delle cache.Da un lato, l'uso di strumenti avanzati impostati dalle opzioni sigcheck, density, iconsext e yara è indipendente dalle configurazioni effettuate per la raccolta dei tipi di dati. Dall'altro lato, le direttive sotto le rispettive opzioni principali dei tipi di dati sono legate a esse, il che significa che vengono ignorate se quelle principali sono impostate su false. Ad esempio, memory-dump=true, l'opzione che istruisce lo strumento a eseguire il dump della Random Access Memory (RAM), viene ignorata se memory=false. Lo stesso vale per l'opzione <option>-all, che imposta tutte le opzioni di un determinato tipo di dati su true per comodità, tranne <option>-vss. Lo script supporta il recupero dei dati da tutte le copie VSS disponibili creando collegamenti rigidi alle copie tramite il namespace del kernel di Windows, una funzionalità che può essere attivata con vss=true. Ciascuna delle opzioni principali ha la propria opzione <option>-vss, che abilita o disabilita l'acquisizione dei dati VSS per quel particolare tipo di dato. Nota che anche i dati raccolti dalle opzioni e sono protetti da password, con la password "infected" senza virgolette. Tutte le opzioni non trovate o commentate nel file di configurazione vengono impostate su durante l'esecuzione, inclusa la password per l'archivio compresso finale.
Ulteriore nota: l'opzione iconsext è utile per cercare binari compilati con framework insoliti che impostano le icone PE (ad es., Python). Inoltre, le regole YARA devono avere estensione file *.yar ed essere inserite nella cartella tools-win\yara\rules\. L'output di tutti gli strumenti avanzati viene archiviato nella cartella risultante malware.
Di seguito è riportato un esempio minimale del file di configurazione che imposta la raccolta della RAM, inclusa la memoria di paging live e storica, il registro di sistema e i registri eventi di Windows in formato testo, nonché la compressione della cartella dati finale con password "infected" (senza virgolette). Nota che questa configurazione salta la raccolta dei file del registro di sistema storici.```
killself=false sdelete=false zip=true zpassword=infected ascii=false
events=true memory=true registry=true
vss=true
events-all=false events-txt=true
memory-all=false memory-vss=true memory-dump=true memory-pagefile=true
registry-all=false registry-vss=false registry-system=true
# Elenco e riferimenti di strumenti di terze parti
## Windows
* **Sysinternals**: gli strumenti [Sysinternals](https://technet.microsoft.com/en-us/sysinternals/ "Sito Web Sysinternals") sono stati sviluppati principalmente da Mark Russinovich e sono gratuiti da utilizzare secondo i [Termini di licenza del software Sysinternals](https://docs.microsoft.com/en-us/sysinternals/license-terms "Termini di licenza del software Sysinternals"). L'elenco completo degli strumenti utilizzati da *ir-rescue-win* è `accesschk[64].exe` (v6.02), `autoruns[64].exe` (v13.62), `autorunsc[64].exe` (v13.61), `handle[64].exe` (v4.1), `Listdlls[64].exe` (v3.2), `logonsessions[64].exe` (v1.4), `ntfsinfo[64].exe` (v1.2), `psfile[64].exe` (v1.03), `PsGetsid[64].exe` (v1.45), `Psinfo[64].exe` (v1.78), `pslist[64].exe` (v1.4), `psloggedon[64].exe` (v1.35), `psloglist.exe` (v2.71), `PsService[64].exe` (v2.25), `sdelete(32|64).exe` (v2.0), `sigcheck[64].exe` (v2.52), e `tcpvcon.exe` (v3.01).
* **NirSoft**: la suite di strumenti [NirSoft](http://www.nirsoft.net/ "Sito Web NirSoft") è sviluppata da Nir Sofer e viene rilasciata come utilità freeware. L'elenco completo degli strumenti utilizzati da *ir-rescue-win* è `AlternateStreamView[64].exe` (v1.51), `BrowserAddonsView[64].exe` (v1.05), `BrowsingHistoryView[64].exe` (v1.86), `ChromeCacheView.exe` (v1.67), `DriverView[64].exe` (v1.47), `iconsext.exe` (v1.47), `IECacheView.exe` (v1.58), `LastActivityView.exe` (v1.16), `MozillaCacheView.exe` (v1.69), `nircmdc[64].exe` (v2.81), `OfficeIns[64].exe` (v1.20), `USBDeview[64].exe` (v2.61), e `WinPrefetchView[64].exe` (v1.35).
* **The Sleuth Kit (TSK)** (v4.4.1): [TSK](http://www.sleuthkit.org/ "Sito Web TSK") è uno strumento forense open-source per analizzare i dischi rigidi a livello di filesystem, utilizzato da *ir-rescue-win* per esplorare la MFT con `fls.exe`, per scaricare i settori di avvio del disco con `mmcat.exe` e per mostrare le informazioni sulla tabella delle partizioni del disco con `mmls.exe`.
* **winpmem_1.6.2** (v1.6.2): la suite [Pmem](https://github.com/google/rekall "Repository GitHub Rekall") fa parte del framework open-source di analisi della memoria Recall, utilizzata da *ir-rescue-win* per effettuare il dump della memoria.
* **md5deep[64].exe** (v4.4): l'utilità [md5deep](http://md5deep.sourceforge.net/ "Sito Web md5deep") è open-source ed è mantenuta da Jesse Kornblum.
* **EDD.exe** (v2.0.1): [Encrypted Disk Detector](https://www.magnetforensics.com/free-tool-encrypted-disk-detector/) è uno strumento gratuito di Magnet Forensics che verifica la presenza di specifici software di crittografia del disco.
* **exiftool.exe** (v10.55): [ExifTool](http://owl.phy.queensu.ca/~phil/exiftool/ "Sito Web ExifTool") è un parser di metadati e un editor gratuito di diversi formati di file, come i file LNK, creato da Phil Harvey.
* **JLECmd.exe** (v0.9.6.1): [JLECmd](https://github.com/EricZimmerman/JLECmd "Repository GitHub JLECmd") è un parser open-source con licenza MIT per le liste di salto (jump lists) di destinazioni automatiche e personalizzate, con supporto da Windows 7 a Windows 10. Questa utilità è sviluppata da Eric Zimmerman e richiede .NET v4.6.
* **RawCopy[64].exe** (v1.0.0.15) e **ExtractUsnJrnl[64].exe** (v1.0.0.3): [RawCopy](https://github.com/jschicht/RawCopy "Repository GitHub RawCopy") (essenzialmente, una combinazione di **ifind** e **icat** di TSK) e [ExtractUsnJrnl](https://github.com/jschicht/ExtractUsnJrnl "Repository GitHub ExtractUsnJrnl") sono utilità NTFS open-source per estrarre dati e file speciali sviluppate da Joakim Schicht.
* **rifiuti-vista[64].exe** (v.0.6.1): [Rifiuti2](https://github.com/abelcheung/rifiuti2 "Repository GitHub Rifiuti2") è un parser open-source per il cestino rilasciato sotto licenza BSD.
* **densityscout[64].exe** (build 45): l'utilità [DensityScout](https://www.cert.at/downloads/software/densityscout_en.html "Sito Web DensityScout") per il calcolo dell'entropia è stata scritta da Christian Wojner ed è rilasciata sotto licenza ISC.
* **YARA** (v3.5.0): [YARA](http://virustotal.github.io/yara/ "Sito Web Yara") è uno schema di firme open-source per malware che può essere utilizzato per eseguire scansioni di indicatori specifici.
* **Cygwin**: il progetto [Cygwin](http://www.cygwin.com/ "Sito Web Cygwin") è open-source ed è utilizzato da *ir-rescue-win* solo per filtrare gli output con le utilità GNU `tr.exe` (v8.24-3) e `grep.exe` (v2.21), utilizzando le DLL a 32 bit.
* **7za.exe** (v9.20): [7-Zip](http://www.7-zip.org/) è un'utilità di compressione open-source sviluppata da Igor Pavlov e rilasciata sotto licenza GNU LGPL.
## Unix
* **AVML-0.21** (Acquisizione di memoria volatile per Linux): [AVML](https://github.com/microsoft/avml) è uno strumento per l'acquisizione di memoria volatile in spazio utente X86_64 scritto in Rust, pensato per essere distribuito come binario statico. AVML può essere utilizzato per acquisire memoria senza conoscere a priori la distribuzione del sistema operativo target o il kernel. Non è necessaria compilazione sul target né fingerprinting. AVML è stato compilato [come descritto](https://github.com/microsoft/avml#building-on-ubuntu), su una VM Ubuntu 18.04.5 LTS. Il binario dovrebbe funzionare su molti [sistemi e versioni del kernel](https://github.com/microsoft/avml#tested-distributions).
# Cronologia delle modifiche
* ***ir-rescue-win-v1.4.4***: alcune opzioni di `filesystem` sono state spostate in una nuova opzione `disk` che include anche il nuovo `disk-encryption` per testare una varietà di software di crittografia del disco.
* ***ir-rescue-win-v1.4.3***: gli argomenti dei processi vengono ora filtrati dall'output di `malware-dlls` in un file separato, `filesystem-table` è stato sostituito con un'opzione più completa (`filesystem-info`) che recupera le informazioni sul disco e sulle partizioni, [LECmd.exe (v0.9.2.0)](https://github.com/EricZimmerman/LECmd "Repository GitHub LECmd") è stato scambiato con [exiftool.exe (v10.55)](http://owl.phy.queensu.ca/~phil/exiftool/ "Sito Web ExifTool") per l'analisi dei file LNK, e sono stati aggiunti alcuni comandi.
* ***ir-rescue-win-v1.4.2***: rimosso RegRipper (`registry-parse`) (troppo pesante e meglio post-elaborare i registry hive).
* ***ir-rescue-win-v1.4.1***: aggiunta la raccolta dei dump di crash delle applicazioni (`memory-appdumps`), aggiunta l'esportazione in testo e l'analisi dei registry hive (`registry-text` e `registry-parse`), aggiunto il dump e l'analisi del settore di avvio (`filesystem-boot` e `filesystem-table`), e apportati alcuni miglioramenti generali.
* ***ir-rescue-win-v1.4.0***: ristrutturato l'ordine di raccolta dati e l'output, estesa la funzionalità con opzioni configurabili (`outpath`, `rm-glog`, `vss-limit` e `drives-limit`), e aggiunto NirSoft `BrowserAddonsView[64].exe` e un file di log globale meno verboso.
# Autore
[@dfernan__](https://twitter.com/dfernan__)
AVML-0.21 (ELF a 64 bit): esegue il dump della memoria;tools-win\: cartella degli strumenti di terze parti per ir-rescue-win:
activ\: strumenti di parsing per artefatti di attività di utenti e sistema;
exiftool.exe: analizza i file di collegamento (LNK);JLECmd.exe: analizza gli elenchi di salti (jump lists) per destinazioni automatiche e personalizzate;LastActivityView.exe: visualizza una mini-timeline dell'attività di utenti e sistema come login e logout;rifiuti-vista[64].exe: analizza i file del Cestino;USBDeview[64].exe: elenca i dispositivi USB precedentemente e attualmente collegati;ascii\: file di testo ASCII art in formato *.txt;cfg\: file di configurazione:
ir-rescue-win.conf: file di configurazione principale per ir-rescue-win;nonrecursive-(acl|iconsext|md5deep).txt: percorsi non ricorsivi per accesschk[64].exe, iconsext.exe e md5deep[64].exe;nonrecursive.txt: percorsi non ricorsivi per più strumenti;recursive-(acl|iconsext|md5deep).txt: percorsi ricorsivi per accesschk[64].exe, iconsext.exe e md5deep[64].exe;recursive.txt: percorsi ricorsivi per più strumenti;cygwin\: strumenti Cygwin e librerie dinamiche (DLL):
tr.exe: utilizzato per rimuovere caratteri non stampabili;grep.exe: utilizzato per filtrare le date con espressioni regolari;disk\: strumenti per il disco:
EDD.exe: verifica la presenza di software di crittografia del disco;evt\: strumenti per gli eventi di Windows:
psloglist.exe: estrae i registri eventi di Windows;fs\: strumenti per il filesystem:
tsk\: strumenti e DLL di The Sleuth Kit (TSK):
fls.exe: esamina la Master File Table (MFT);mcat.exe: restituisce il contenuto di una partizione;mmls.exe: mostra informazioni sulle tabelle delle partizioni del disco (DOS, GPT);AlternateStreamView[64].exe: elenca i flussi di dati alternativi (ADS);ExtractUsnJrnl[64].exe: estrae il file C:\$Extend\$UsnJrnl (journal NTFS) senza gli zeri sparsi;md5deep[64].exe: calcola i valori hash MD5 (Message Digest 5);ntfsinfo[64].exe: mostra informazioni su NTFS;RawCopy[64].exe: estrae dati a livello NTFS;mal\: strumenti per il malware:
autoruns[64].exe: esegue il dump delle posizioni di avvio automatico nel formato binario di Autoruns;autorunsc[64].exe: elenca le posizioni di avvio automatico;BrowserAddonsView[64].exe: elenca plugin e componenti aggiuntivi di più browser;densityscout[64].exe: calcola una misura basata sull'entropia per rilevare packer e crittografi;DriverView[64].exe: elenca i driver del kernel caricati;handle[64].exe: elenca gli handle degli oggetti;iconsext.exe: estrae le icone da eseguibili portatili (PE);Listdlls[64].exe: elenca le DLL caricate;OfficeIns[64].exe: elenca i componenti aggiuntivi di Microsoft Office installati;pslist[64].exe: elenca i processi in esecuzione;mem\: strumenti per la memoria:
winpmem_1.6.2.exe: esegue il dump della memoria;net\: strumenti di rete:
psfile[64].exe: elenca i file aperti in remoto;tcpvcon.exe: elenca le connessioni TCP e le porte UDP;sys\: strumenti di sistema:
accesschk[64].exe: elenca i permessi utente per i percorsi specificati;logonsessions[64].exe: elenca le sessioni di accesso attualmente attive;PsGetsid[64].exe: converte tra identificatori di sicurezza (SID) e nomi utente e viceversa;Psinfo[64].exe: visualizza informazioni software e hardware del sistema;psloggedon[64].exe: elenca gli utenti connessi localmente che hanno il loro profilo nel registro;web\: strumenti web:
BrowsingHistoryView[64].exe: elenca la cronologia di navigazione di più browser;ChromeCacheView.exe: visualizza la cache di Google Chrome;IECacheView.exe: visualizza la cache di Internet Explorer;MozillaCacheView.exe: visualizza la cache di Mozilla Firefox;yara\: strumenti e firme YARA:
rules\: cartella delle regole *.yar;yara(32|64).exe: eseguibile principale di YARA;yarac(32|64).exe: compilatore di regole YARA;7za.exe: comprime file e cartelle;nircmdc[64].exe: offre funzionalità estese, tra cui la cattura di screenshot;sdelete(32|64).exe: elimina file e cartelle in modo sicuro;data\: cartella dei dati creata durante l'esecuzione con i dati raccolti:
<HOSTNAME>-<DATE>\: <DATE> segue il formato AAAAMMGG:
ir-rescue-win: cartella per i dati relativi a ir-rescue
ir-rescue-win.log: file di log dettagliato dei messaggi di stato;ir-rescue-win-global.log: file di log globale con i comandi di ir-rescue-win eseguiti in passato;screenshot-#: screenshot numerati solo per ir-rescue-win;malware-startupweb-(chrome|ie|mozilla)falsePsService[64].exesigcheck[64].exe: verifica le firme digitali all'interno dei PE;WinPrefetchView[64].exe: visualizza il contenuto dei file prefetch;