
Um script Windows Batch e um script Unix Bash para coletar abrangentemente dados forenses de host durante a resposta a incidentes.
ir-rescue é composto por dois scripts irmãos que recolhem uma infinidade de dados forenses de sistemas Windows de 32 e 64 bits (ir-rescue-win) e de sistemas Unix (ir-rescue-nix). Os scripts respeitam a ordem de volatilidade e os artefactos que são alterados com a execução (ex., ficheiros prefetch no Windows) e destinam-se a uso em resposta a incidentes em diferentes fases do processo de análise e investigação. Cada um é descrito da seguinte forma:
ir-rescue-win é totalmente escrito em Batch e pode ser configurado para realizar aquisições abrangentes e personalizadas de tipos específicos de dados vivos e de dados históricos a partir de cópias disponíveis do Volume Shadow Copy Service (VSS). O ir-rescue-win utiliza comandos Windows nativos e utilitários de terceiros bem conhecidos da Sysinternals e NirSoft, por exemplo, alguns dos quais de código aberto. O PowerShell e a Windows Management Instrumentation (WMI) não são utilizados para tornar o ir-rescue-win transversalmente compatível.
ir-rescue-nix é escrito em Bash (v4+) e utiliza comandos Unix nativos. Alguns comandos utilizados podem não ser compatíveis com POSIX e, portanto, podem não estar disponíveis em alguns sistemas ou variantes Unix-like, especialmente em sistemas operativos mais antigos.
O ir-rescue é concebido para agrupar recolhas de dados de acordo com o tipo de dado. Por exemplo, todos os dados relacionados com rede, como partilhas de ficheiros abertas e conexões TCP (Transmission Control Protocol), são agrupados, enquanto processos, serviços e tarefas em execução são reunidos sob malware. A aquisição de tipos de dados e outras opções gerais são especificadas num ficheiro de configuração simples. Deve notar-se que os scripts lançam um grande número de comandos e ferramentas, deixando assim uma pegada considerável (ex., strings na memória, ficheiros prefetch, caches de execução de programas) no sistema. O tempo de execução varia dependendo da capacidade de processamento, do throughput de escrita em disco e das configurações definidas. O desempenho do disco é especialmente importante se a eliminação segura estiver definida e ao despejar memória de 64 bits (normalmente com 8 GB de tamanho), o que pode demorar um tempo considerável.
O ir-rescue foi escrito para analistas de resposta a incidentes e forense, bem como para profissionais de segurança, e é utilizado em empresas como Cisco, PepsiCo, SaskTel, Praetorian e Counteractive Security. Representa um esforço para simplificar a recolha de dados dos sistemas, independentemente das necessidades de investigação, e para depender menos de suporte local quando o acesso remoto ou a análise ao vivo não estão disponíveis. Pode, portanto, ser utilizado para aproveitar as ferramentas e comandos já incluídos durante atividades forenses.
O ir-rescue depende de vários utilitários de terceiros para recolher dados específicos dos sistemas. As versões das ferramentas estão listadas na última secção e são fornecidas com o pacote tal como estão e, portanto, as suas licenças e acordos de utilizador devem ser aceites antes de executar o ir-rescue. Note que os utilitários Sysinternals não podem ser redistribuídos para outros copiarem de acordo com os Termos de Licença de Software Sysinternals. Por este motivo, o ir-rescue já não é publicado juntamente com os utilitários Sysinternals, e todas as entradas enumeradas na secção Lista de Ferramentas de Terceiros e Referências devem ser descarregadas do Repositório Sysinternals Live e movidas para as suas pastas apropriadas para que o script possa ser executado.
As descrições e organização do conjunto de ferramentas são fornecidas abaixo, com as versões de 32 e 64 bits das ferramentas Windows incluídas de forma adjacente, se aplicável:
tools-nix/: pasta de ferramentas de terceiros para o ir-rescue-nix:
ascii/: ficheiros de arte ASCII em formato *.txt;cfg/: ficheiros de configuração:
ir-rescue-nix.conf: ficheiro de configuração principal para o ir-rescue-nix;nonrecursive-(hidden|md5sum).txt: ficheiros ocultos e localizações não recursivas do md5sum;nonrecursive.txt: localizações não recursivas para várias ferramentas;recursive-(exec|hidden|md5sum).txt: executáveis, ficheiros ocultos e localizações recursivas do md5sum;recursive.txt: localizações recursivas para várias ferramentas;mem/: ferramentas de memória:
O ir-rescue-win precisa ser executado numa consola de linha de comandos com direitos de administrador enquanto o ir-rescue-nix precisa ser executado numa janela de linha de comandos com privilégios de root. Ambos não requerem argumentos e utilizam um ficheiro de configuração respetivo para definir as opções desejadas. Assim, a execução dos scripts requer apenas a chamada dos ficheiros da seguinte forma:
ir-rescue-win-v1.w.x.bat, ou./ir-rescue-nix-v1.y.z.sh.Algumas ferramentas que realizam pesquisas ou digitalizações recursivas estão configuradas para recorrer apenas em pastas específicas. Isto torna a recolha de dados mais direcionada, considerando o desempenho em tempo de execução, pois as pastas especificadas são locais prováveis de análise devido ao uso extensivo por malware. As localizações para pesquisa recursiva e pesquisa não recursiva para sistemas Windows e Unix podem ser alteradas à vontade nos respetivos ficheiros de texto nas pastas de configuração. Algumas ferramentas têm ficheiros dedicados com localizações específicas nas quais devem ou não recorrer. Estes são nomeados recursive-<ferramenta>.txt e nonrecursive-<ferramenta>.txt, com <ferramenta> substituído pelo nome da ferramenta. Cada ficheiro deve ter uma localização como caminho completo por linha sem barras invertidas ou barras no final.
Durante a execução, todos os caracteres escritos nos canais Standard Output (STDOUT) e Standard Error (STDERR) são registados em ficheiros de texto codificados em UTF-8. Isto significa que a saída das ferramentas é armazenada em pastas e ficheiros de texto correspondentes. Mensagens de estado ASCII ainda são impressas na consola para verificar o progresso da execução. Uma pasta temporária criada em %TEMP%\ir-rescue-win ou /tmp/ir-rescue-nix é usada para armazenar dados de execução (ex., drivers de dump de memória e ligações para cópias VSS) e é eliminada após a conclusão. As pastas de dados são criadas como placeholders para dados durante a inicialização. Após a recolha, as pastas vazias podem ser eliminadas se nenhum dado foi recolhido (ex., cache de navegadores vazia). No final, os dados são comprimidos num arquivo protegido por palavra-passe e são eliminados de acordo, se assim configurado.
O ficheiro de configuração de cada ir-rescue-win e ir-rescue-nix é maioritariamente composto por diretivas binárias simples (true ou false) para o comportamento geral dos scripts, para quais tipos de dados recolher e para quais ferramentas avançadas executar. Linhas precedidas por um sinal de hash (#) são consideradas comentários. Estes são usados para descrever brevemente o que cada opção faz, para enumerar pastas, ficheiros ou chaves de registo importantes para fornecer algum contexto, bem como para listar ferramentas relevantes. As descrições abaixo aplicam-se apenas ao ir-rescue-win, mas servem como exemplo para entender a abordagem geral e o ficheiro de configuração do ir-rescue-nix.
Para o ir-rescue-win, os dados são agrupados nos tipos fornecidos pelas seguintes diretivas:
activity: esta opção define a recolha de dados de atividade do utilizador;disk: esta opção define a recolha de dados de disco;events: esta opção define a recolha de registos de eventos do Windows;filesystem: esta opção define a recolha de dados relacionados com NTFS e ficheiros;malware: esta opção define a recolha de dados do sistema que podem ser usados para detetar malware;memory: esta opção define a recolha da memória;network: esta opção define a recolha de dados de rede;registry: esta opção define a recolha do registo do sistema e do utilizador;system: esta opção define a recolha de informação relacionada com o sistema;web: esta opção define a recolha de histórico de navegação e caches.Por um lado, o uso de ferramentas avançadas definido pelas opções sigcheck, density, iconsext e yara é independente das configurações feitas para a recolha de tipos de dados. Por outro lado, as diretivas sob as opções principais respetivas dos tipos de dados estão ligadas a elas, o que significa que são ignoradas se as principais estiverem definidas como false. Por exemplo, memory-dump=true, a opção que instrui a ferramenta a despejar a Random Access Memory (RAM), é ignorada se memory=false. O mesmo se aplica à opção <option>-all, que define todas as opções de um determinado tipo de dados como true por conveniência, exceto <option>-vss. O script suporta a recuperação de dados de todas as cópias VSS disponíveis através da criação de hard links para as cópias via o namespace do kernel do Windows, uma funcionalidade que pode ser ativada com vss=true. Cada uma das opções principais tem a sua própria opção <option>-vss, que ativa ou desativa a aquisição de dados VSS para aquele tipo de dados específico. Note que os dados recolhidos pelas opções e também são protegidos por palavra-passe, sendo a palavra-passe "infected" sem aspas. Todas as opções não encontradas ou comentadas no ficheiro de configuração são definidas como durante a execução, incluindo a palavra-passe para o arquivo comprimido final.
Note ainda que a opção iconsext é útil para procurar binários compilados com frameworks incomuns que definem ícones PE (ex., Python). Além disso, as regras YARA precisam ter uma extensão de ficheiro *.yar e ser colocadas na pasta tools-win\yara\rules\. A saída de todas as ferramentas avançadas é armazenada na pasta resultante malware.
Abaixo está um exemplo mínimo do ficheiro de configuração definindo a recolha da RAM, incluindo a memória paginada ativa e histórica, o registo do sistema e os registos de eventos do Windows em formato de texto, bem como a compressão da pasta final de dados com a palavra-passe "infected" (sem aspas). Note que esta configuração ignora a recolha de ficheiros de registo do sistema históricos.```
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
# Lista e Referências de Ferramentas de Terceiros
## Windows
* **Sysinternals**: as ferramentas [Sysinternals](https://technet.microsoft.com/en-us/sysinternals/ "Site do Sysinternals") foram majoritariamente desenvolvidas por Mark Russinovich e são gratuitas sob os [Termos de Licença de Software Sysinternals](https://docs.microsoft.com/en-us/sysinternals/license-terms "Termos de Licença de Software Sysinternals"). A lista completa de ferramentas usadas pelo *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**: o conjunto de ferramentas [NirSoft](http://www.nirsoft.net/ "Site do NirSoft") é desenvolvido por Nir Sofer e lançado como utilitários freeware. A lista completa de ferramentas usadas pelo *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): o [TSK](http://www.sleuthkit.org/ "Site do TSK") é uma ferramenta forense de código aberto para analisar discos rígidos no nível do sistema de arquivos, usada pelo *ir-rescue-win* para percorrer a MFT com `fls.exe`, despejar setores de boot do disco com `mmcat.exe` e exibir informações da tabela de partições do disco com `mmls.exe`.
* **winpmem_1.6.2** (v1.6.2): o conjunto [Pmem](https://github.com/google/rekall "Repositório do Rekall no GitHub") faz parte da estrutura de análise de memória de código aberto Recall, usado pelo *ir-rescue-win* para despejar a memória.
* **md5deep[64].exe** (v4.4): o utilitário [md5deep](http://md5deep.sourceforge.net/ "Site do md5deep") é de código aberto e mantido por Jesse Kornblum.
* **EDD.exe** (v2.0.1): o [Detector de Disco Criptografado](https://www.magnetforensics.com/free-tool-encrypted-disk-detector/) é uma ferramenta gratuita da Magnet Forensics que testa software específico de criptografia de disco.
* **exiftool.exe** (v10.55)]: o [ExifTool](http://owl.phy.queensu.ca/~phil/exiftool/ "Site do ExifTool") é um analisador e editor de metadados gratuito para vários formatos de arquivo, como arquivos LNK, criado por Phil Harvey.
* **JLECmd.exe** (v0.9.6.1): o [JLECmd](https://github.com/EricZimmerman/JLECmd "Repositório do JLECmd no GitHub") é um analisador de código aberto licenciado sob MIT para jump lists de destinos automáticos e personalizados, com suporte do Windows 7 ao Windows 10. Este utilitário é desenvolvido por Eric Zimmerman e requer .NET v4.6.
* **RawCopy[64].exe** (v1.0.0.15) e **ExtractUsnJrnl[64].exe** (v1.0.0.3): o [RawCopy](https://github.com/jschicht/RawCopy "Repositório do RawCopy no GitHub") (essencialmente, uma combinação de **ifind** e **icat** do TSK) e o [ExtractUsnJrnl](https://github.com/jschicht/ExtractUsnJrnl "Repositório do ExtractUsnJrnl no GitHub") são utilitários NTFS de código aberto para extrair dados e arquivos especiais, desenvolvidos por Joakim Schicht.
* **rifiuti-vista[64].exe** (v.0.6.1): o [Rifiuti2](https://github.com/abelcheung/rifiuti2 "Repositório do Rifiuti2 no GitHub") é um analisador de código aberto para a lixeira, lançado sob licença BSD.
* **densityscout[64].exe** (build 45): o utilitário [DensityScout](https://www.cert.at/downloads/software/densityscout_en.html "Site do DensityScout") para calcular entropia foi escrito por Christian Wojner e é lançado sob licença ISC.
* **YARA** (v3.5.0): o [YARA](http://virustotal.github.io/yara/ "Site do Yara") é um esquema de assinaturas de código aberto para malware que pode ser usado para realizar varreduras de indicadores específicos.
* **Cygwin**: o projeto [Cygwin](http://www.cygwin.com/ "Site do Cygwin") é de código aberto e é usado pelo *ir-rescue-win* apenas para filtrar saídas com os utilitários GNU `tr.exe` (v8.24-3) e `grep.exe` (v2.21), utilizando as DLLs de 32 bits.
* **7za.exe** (v9.20): o [7-Zip](http://www.7-zip.org/) é um utilitário de compressão de código aberto desenvolvido por Igor Pavlov e lançado sob licença GNU LGPL.
## Unix
* **AVML-0.21** (Acquire Volatile Memory for Linux): o [AVML](https://github.com/microsoft/avml) é uma ferramenta de aquisição de memória volátil em modo usuário para X86_64, escrita em Rust, projetada para ser implantada como um binário estático. O AVML pode ser usado para adquirir memória sem conhecer previamente a distribuição do SO alvo ou o kernel. Não é necessária compilação ou fingerprinting no destino. O AVML foi compilado [conforme descrito](https://github.com/microsoft/avml#building-on-ubuntu), em uma VM Ubuntu 18.04.5 LTS. O binário deve funcionar em muitos [sistemas e versões de kernel](https://github.com/microsoft/avml#tested-distributions).
# Histórico de Alterações
* ***ir-rescue-win-v1.4.4***: movidas algumas opções de `filesystem` para uma nova opção `disk` que também inclui a nova opção `disk-encryption` que testa uma variedade de softwares de criptografia de disco.
* ***ir-rescue-win-v1.4.3***: argumentos de processo agora são filtrados da saída de `malware-dlls` para um arquivo separado; substituída `filesystem-table` por uma opção mais abrangente (`filesystem-info`) que recupera informações do disco e partições; trocado [LECmd.exe (v0.9.2.0)](https://github.com/EricZimmerman/LECmd "Repositório do LECmd no GitHub") por [exiftool.exe (v10.55)](http://owl.phy.queensu.ca/~phil/exiftool/ "Site do ExifTool") para análise de arquivos LNK; e adicionados alguns comandos adicionais.
* ***ir-rescue-win-v1.4.2***: removido RegRipper (`registry-parse`) (muito pesado e melhor pós-processar as colmeias do registro).
* ***ir-rescue-win-v1.4.1***: adicionada a coleta de dumps de falhas de aplicativos (`memory-appdumps`); adicionada a exportação de texto e análise de colmeias do registro (`registry-text` e `registry-parse`); adicionado o despejo e análise do setor de boot (`filesystem-boot` e `filesystem-table`); e feitas algumas melhorias gerais.
* ***ir-rescue-win-v1.4.0***: reestruturada a ordem de coleta de dados e saída; estendida funcionalidade com opções configuráveis (`outpath`, `rm-glog`, `vss-limit` e `drives-limit`); e adicionados o NirSoft `BrowserAddonsView[64].exe` e um arquivo de log global menos verboso.
# Autor
[@dfernan__](https://twitter.com/dfernan__)
AVML-0.21 (ELF 64-bit): despeja a memória;tools-win\: pasta de ferramentas de terceiros para o ir-rescue-win:
activ\: ferramentas de análise para artefactos de atividade do utilizador e do sistema;
exiftool.exe: analisa ficheiros Link (LNK);JLECmd.exe: analisa listas de atalhos de destinos automáticos e personalizados;LastActivityView.exe: exibe uma mini-linha do tempo da atividade do utilizador e do sistema, como inícios e términos de sessão;rifiuti-vista[64].exe: analisa ficheiros da reciclagem;USBDeview[64].exe: lista dispositivos USB previamente e atualmente conectados;ascii\: ficheiros de arte ASCII em formato *.txt;cfg\: ficheiros de configuração:
ir-rescue-win.conf: ficheiro de configuração principal para o ir-rescue-win;nonrecursive-(acl|iconsext|md5deep).txt: localizações não recursivas do accesschk[64].exe, iconsext.exe e md5deep[64].exe;nonrecursive.txt: localizações não recursivas para várias ferramentas;recursive-(acl|iconsext|md5deep).txt: localizações recursivas do accesschk[64].exe, iconsext.exe e md5deep[64].exe;recursive.txt: localizações recursivas para várias ferramentas;cygwin\: ferramentas Cygwin e Dynamic Linked Libraries (DLLs):
tr.exe: usado para remover caracteres não imprimíveis;grep.exe: usado para filtrar datas com expressões regulares;disk\: ferramentas de disco:
EDD.exe: testa software de encriptação de disco;evt\: ferramentas de eventos do Windows:
psloglist.exe: extrai registos de eventos do Windows;fs\: ferramentas de sistema de ficheiros:
tsk\: ferramentas do The Sleuth Kit (TSK) e DLLs:
fls.exe: percorre a Master File Table (MFT);mcat.exe: exibe o conteúdo de uma partição;mmls.exe: mostra informações sobre tabelas de partição de disco (DOS, GPT);AlternateStreamView[64].exe: lista Alternate Data Streams (ADSs);ExtractUsnJrnl[64].exe: extrai o ficheiro C:\$Extend\$UsnJrnl (registo NTFS) sem os zeros esparsos;md5deep[64].exe: calcula valores de hash Message Digest 5 (MD5);ntfsinfo[64].exe: mostra informações sobre NTFS;RawCopy[64].exe: extrai dados ao nível NTFS;mal\: ferramentas de malware:
autoruns[64].exe: despeja localizações de autorun para o formato binário do autoruns;autorunsc[64].exe: lista localizações de autorun;BrowserAddonsView[64].exe: lista plugins e add-ons de múltiplos navegadores;densityscout[64].exe: calcula uma medida baseada em entropia para detetar packers e encriptadores;DriverView[64].exe: lista drivers de kernel carregados;handle[64].exe: lista handles de objetos;iconsext.exe: extrai ícones de Portable Executables (PEs);Listdlls[64].exe: lista DLLs carregadas;OfficeIns[64].exe: lista add-ins do Microsoft Office instalados;pslist[64].exe: lista processos em execução;PsService[64].exe: lista serviços;mem\: ferramentas de memória:
winpmem_1.6.2.exe: despeja a memória;net\: ferramentas de rede:
psfile[64].exe: lista ficheiros abertos remotamente;tcpvcon.exe: lista conexões TCP e portas, e portas UDP;sys\: ferramentas de sistema:
accesschk[64].exe: lista permissões de utilizador das localizações especificadas;logonsessions[64].exe: lista sessões de início de sessão atualmente ativas;PsGetsid[64].exe: traduz entre Security Identifiers (SIDs) e nomes de utilizador e vice-versa;Psinfo[64].exe: exibe informações de software e hardware do sistema;psloggedon[64].exe: lista utilizadores com sessão iniciada localmente que têm o seu perfil no registo;web\: ferramentas web:
BrowsingHistoryView[64].exe: lista histórico de navegação de múltiplos navegadores;ChromeCacheView.exe: exibe a cache do Google Chrome;IECacheView.exe: exibe a cache do Internet Explorer;MozillaCacheView.exe: exibe a cache do Mozilla Firefox;yara\: ferramentas YARA e assinaturas:
rules\: pasta de regras *.yar;yara(32|64).exe: executável principal do YARA;yarac(32|64).exe: compilador de regras YARA;7za.exe: comprime ficheiros e pastas;nircmdc[64].exe: possui funcionalidades extensas, entre as quais tirar capturas de ecrã;sdelete(32|64).exe: elimina ficheiros e pastas de forma segura;data\: pasta de dados criada durante a execução com os dados recolhidos:
<HOSTNAME>-<DATA>\: <DATA> segue o formato AAAAMMDD:
ir-rescue-win: pasta para dados relacionados com o ir-rescue
ir-rescue-win.log: ficheiro de log detalhado com mensagens de estado;ir-rescue-win-global.log: ficheiro de log global com comandos do ir-rescue-win executados no passado;screenshot-#: capturas de ecrã numeradas apenas para o ir-rescue-win;malware-startupweb-(chrome|ie|mozilla)falsesigcheck[64].exe: verifica assinaturas digitais em PEs;WinPrefetchView[64].exe: exibe o conteúdo de ficheiros prefetch;