Translated ['src/generic-methodologies-and-resources/basic-forensic-meth

This commit is contained in:
Translator 2025-08-26 20:10:54 +00:00
parent d5e8d38cd6
commit 3b90bde3d9
5 changed files with 404 additions and 7 deletions

View File

@ -41,6 +41,7 @@
- [Anti-Forensic Techniques](generic-methodologies-and-resources/basic-forensic-methodology/anti-forensic-techniques.md)
- [Docker Forensics](generic-methodologies-and-resources/basic-forensic-methodology/docker-forensics.md)
- [Image Acquisition & Mount](generic-methodologies-and-resources/basic-forensic-methodology/image-acquisition-and-mount.md)
- [Ios Backup Forensics](generic-methodologies-and-resources/basic-forensic-methodology/ios-backup-forensics.md)
- [Linux Forensics](generic-methodologies-and-resources/basic-forensic-methodology/linux-forensics.md)
- [Malware Analysis](generic-methodologies-and-resources/basic-forensic-methodology/malware-analysis.md)
- [Memory dump analysis](generic-methodologies-and-resources/basic-forensic-methodology/memory-dump-analysis/README.md)
@ -61,6 +62,7 @@
- [Office file analysis](generic-methodologies-and-resources/basic-forensic-methodology/specific-software-file-type-tricks/office-file-analysis.md)
- [PDF File analysis](generic-methodologies-and-resources/basic-forensic-methodology/specific-software-file-type-tricks/pdf-file-analysis.md)
- [PNG tricks](generic-methodologies-and-resources/basic-forensic-methodology/specific-software-file-type-tricks/png-tricks.md)
- [Structural File Format Exploit Detection](generic-methodologies-and-resources/basic-forensic-methodology/specific-software-file-type-tricks/structural-file-format-exploit-detection.md)
- [Video and Audio file analysis](generic-methodologies-and-resources/basic-forensic-methodology/specific-software-file-type-tricks/video-and-audio-file-analysis.md)
- [ZIPs tricks](generic-methodologies-and-resources/basic-forensic-methodology/specific-software-file-type-tricks/zips-tricks.md)
- [Windows Artifacts](generic-methodologies-and-resources/basic-forensic-methodology/windows-forensics/README.md)

View File

@ -4,13 +4,15 @@
## Criando e Montando uma Imagem
{{#ref}}
../../generic-methodologies-and-resources/basic-forensic-methodology/image-acquisition-and-mount.md
{{#endref}}
## Análise de Malware
Isso **não é necessariamente o primeiro passo a ser realizado uma vez que você tenha a imagem**. Mas você pode usar essas técnicas de análise de malware de forma independente se tiver um arquivo, uma imagem de sistema de arquivos, imagem de memória, pcap... então é bom **manter essas ações em mente**:
Isso **não é necessariamente o primeiro passo a executar assim que você tiver a imagem**. Mas você pode usar estas técnicas de análise de malware independentemente se tiver um arquivo, uma imagem do sistema de arquivos, imagem de memória, pcap... então é bom **manter estas ações em mente**:
{{#ref}}
malware-analysis.md
@ -18,36 +20,74 @@ malware-analysis.md
## Inspecionando uma Imagem
Se você receber uma **imagem forense** de um dispositivo, pode começar **a analisar as partições, o sistema de arquivos** utilizado e **recuperar** potencialmente **arquivos interessantes** (mesmo os deletados). Aprenda como em:
se você receber uma **imagem forense** de um dispositivo, você pode começar **analisando as partições, o sistema de arquivos** usado e **recuperando** possivelmente **arquivos interessantes** (até mesmo excluídos). Aprenda como em:
{{#ref}}
partitions-file-systems-carving/
{{#endref}}# Metodologia Forense Básica
## Criando e Montando uma Imagem
{{#ref}}
../../generic-methodologies-and-resources/basic-forensic-methodology/image-acquisition-and-mount.md
{{#endref}}
## Análise de Malware
Isso **não é necessariamente o primeiro passo a executar assim que você tiver a imagem**. Mas você pode usar estas técnicas de análise de malware independentemente se tiver um arquivo, uma imagem do sistema de arquivos, imagem de memória, pcap... então é bom **manter estas ações em mente**:
{{#ref}}
malware-analysis.md
{{#endref}}
## Inspecionando uma Imagem
se você receber uma **imagem forense** de um dispositivo, você pode começar **analisando as partições, o sistema de arquivos** usado e **recuperando** possivelmente **arquivos interessantes** (até mesmo excluídos). Aprenda como em:
{{#ref}}
partitions-file-systems-carving/
{{#endref}}
Dependendo dos sistemas operacionais utilizados e até mesmo da plataforma, diferentes artefatos interessantes devem ser pesquisados:
Dependendo dos OSs usados e até mesmo da plataforma, diferentes artefatos interessantes devem ser pesquisados:
{{#ref}}
windows-forensics/
{{#endref}}
{{#ref}}
linux-forensics.md
{{#endref}}
{{#ref}}
docker-forensics.md
{{#endref}}
## Inspeção Profunda de Tipos de Arquivos Específicos e Software
Se você tiver um **arquivo** muito **suspeito**, então **dependendo do tipo de arquivo e do software** que o criou, vários **truques** podem ser úteis.\
{{#ref}}
ios-backup-forensics.md
{{#endref}}
## Inspeção aprofundada de tipos de arquivo específicos e Software
Se você tiver um arquivo muito **suspeito**, então **dependendo do tipo de arquivo e do software** que o criou, vários **truques** podem ser úteis.\
Leia a página a seguir para aprender alguns truques interessantes:
{{#ref}}
specific-software-file-type-tricks/
{{#endref}}
Quero fazer uma menção especial à página:
Faço uma menção especial à página:
{{#ref}}
specific-software-file-type-tricks/browser-artifacts.md
@ -55,12 +95,14 @@ specific-software-file-type-tricks/browser-artifacts.md
## Inspeção de Dump de Memória
{{#ref}}
memory-dump-analysis/
{{#endref}}
## Inspeção de Pcap
{{#ref}}
pcap-inspection/
{{#endref}}
@ -69,12 +111,63 @@ pcap-inspection/
Tenha em mente o possível uso de técnicas anti-forenses:
{{#ref}}
anti-forensic-techniques.md
{{#endref}}
## Caça a Ameaças
{{#ref}}
file-integrity-monitoring.md
{{#endref}}
## Inspeção aprofundada de tipos de arquivo específicos e Software
Se você tiver um arquivo muito **suspeito**, então **dependendo do tipo de arquivo e do software** que o criou, vários **truques** podem ser úteis.\
Leia a página a seguir para aprender alguns truques interessantes:
{{#ref}}
specific-software-file-type-tricks/
{{#endref}}
Faço uma menção especial à página:
{{#ref}}
specific-software-file-type-tricks/browser-artifacts.md
{{#endref}}
## Inspeção de Dump de Memória
{{#ref}}
memory-dump-analysis/
{{#endref}}
## Inspeção de Pcap
{{#ref}}
pcap-inspection/
{{#endref}}
## **Técnicas Anti-Forenses**
Tenha em mente o possível uso de técnicas anti-forenses:
{{#ref}}
anti-forensic-techniques.md
{{#endref}}
## Caça a Ameaças
{{#ref}}
file-integrity-monitoring.md
{{#endref}}

View File

@ -0,0 +1,124 @@
# Forense de Backup iOS (Triagem centrada em mensagens)
{{#include ../../banners/hacktricks-training.md}}
Esta página descreve passos práticos para reconstruir e analisar backups iOS em busca de sinais de entrega de exploits 0click via anexos de apps de mensagens. Ela foca em transformar o layout de backup com nomes hash da Apple em caminhos legíveis por humanos, e então enumerar e escanear anexos em apps comuns.
Objetivos:
- Reconstruir caminhos legíveis a partir do Manifest.db
- Enumerar bancos de dados de mensagens (iMessage, WhatsApp, Signal, Telegram, Viber)
- Resolver caminhos de anexos, extrair objetos embutidos (PDF/Imagens/Fontes) e enviálos para detectores estruturais
## Reconstruindo um backup iOS
Backups armazenados em MobileSync usam nomes de arquivo hashados que não são legíveis por humanos. O banco de dados SQLite Manifest.db mapeia cada objeto armazenado para seu caminho lógico.
Procedimento de alto nível:
1) Abra o Manifest.db e leia os registros de arquivo (domain, relativePath, flags, fileID/hash)
2) Recrie a hierarquia original de pastas com base em domain + relativePath
3) Copie ou crie um hardlink de cada objeto armazenado para seu caminho reconstruído
Exemplo de fluxo de trabalho com uma ferramenta que implementa isso de ponta a ponta (ElegantBouncer):
```bash
# Rebuild the backup into a readable folder tree
$ elegant-bouncer --ios-extract /path/to/backup --output /tmp/reconstructed
[+] Reading Manifest.db ...
✓ iOS backup extraction completed successfully!
```
Notas:
- Lide com backups criptografados fornecendo a senha do backup ao seu extrator
- Preserve timestamps/ACLs originais quando possível para valor probatório
## Enumeração de anexos de apps de mensagens
Após a reconstrução, enumere os anexos dos apps mais populares. O esquema exato varia por app/versão, mas a abordagem é similar: consulte o banco de dados de mensagens, faça join entre message e attachment, e resolva os caminhos no disco.
### iMessage (sms.db)
Tabelas-chave: message, attachment, message_attachment_join (MAJ), chat, chat_message_join (CMJ)
Consultas de exemplo:
```sql
-- List attachments with basic message linkage
SELECT
m.ROWID AS message_rowid,
a.ROWID AS attachment_rowid,
a.filename AS attachment_path,
m.handle_id,
m.date,
m.is_from_me
FROM message m
JOIN message_attachment_join maj ON maj.message_id = m.ROWID
JOIN attachment a ON a.ROWID = maj.attachment_id
ORDER BY m.date DESC;
-- Include chat names via chat_message_join
SELECT
c.display_name,
a.filename AS attachment_path,
m.date
FROM chat c
JOIN chat_message_join cmj ON cmj.chat_id = c.ROWID
JOIN message m ON m.ROWID = cmj.message_id
JOIN message_attachment_join maj ON maj.message_id = m.ROWID
JOIN attachment a ON a.ROWID = maj.attachment_id
ORDER BY m.date DESC;
```
Os caminhos dos anexos podem ser absolutos ou relativos à árvore reconstruída em Library/SMS/Attachments/.
### WhatsApp (ChatStorage.sqlite)
Ligação comum: message table ↔ media/attachment table (os nomes variam conforme a versão). Consulte as linhas da tabela media para obter os caminhos no disco.
Exemplo (genérico):
```sql
SELECT
m.Z_PK AS message_pk,
mi.ZMEDIALOCALPATH AS media_path,
m.ZMESSAGEDATE AS message_date
FROM ZWAMESSAGE m
LEFT JOIN ZWAMEDIAITEM mi ON mi.ZMESSAGE = m.Z_PK
WHERE mi.ZMEDIALOCALPATH IS NOT NULL
ORDER BY m.ZMESSAGEDATE DESC;
```
Adjust table/column names to your app version (ZWAMESSAGE/ZWAMEDIAITEM are common in iOS builds).
### Signal / Telegram / Viber
- Signal: o DB de mensagens está criptografado; no entanto, anexos em cache no disco (e miniaturas) geralmente podem ser escaneados
- Telegram: inspecione os diretórios de cache (caches de foto/vídeo/documento) e mapeie para chats quando possível
- Viber: Viber.sqlite contém tabelas de mensagem/anexo com referências em disco
Dica: mesmo quando os metadados estão criptografados, escanear os diretórios media/cache ainda revela objetos maliciosos.
## Scanning attachments for structural exploits
Uma vez que você tenha caminhos de anexos, alimente-os em detectores estruturais que validam invariantes do formato de arquivo em vez de assinaturas. Exemplo com ElegantBouncer:
```bash
# Recursively scan only messaging attachments under the reconstructed tree
$ elegant-bouncer --scan --messaging /tmp/reconstructed
[+] Found N messaging app attachments to scan
✗ THREAT in WhatsApp chat 'John Doe': suspicious_document.pdf → FORCEDENTRY (JBIG2)
✗ THREAT in iMessage: photo.webp → BLASTPASS (VP8L)
```
Detecções cobertas por regras estruturais incluem:
- PDF/JBIG2 FORCEDENTRY (CVE202130860): estados de dicionário JBIG2 impossíveis
- WebP/VP8L BLASTPASS (CVE20234863): construções de tabelas Huffman superdimensionadas
- TrueType TRIANGULATION (CVE202341990): opcodes de bytecode não documentados
- DNG/TIFF CVE202543300: incompatibilidades entre metadados e componentes de stream
## Validação, ressalvas e falsos positivos
- Conversões de tempo: iMessage armazena datas em Apple epochs/units em algumas versões; converta adequadamente ao relatar
- Deriva de esquema: schemas SQLite de apps mudam ao longo do tempo; confirme nomes de tabelas/colunas por build do dispositivo
- Extração recursiva: PDFs podem embutir streams JBIG2 e fontes; extraia e escaneie objetos internos
- Falsos positivos: heurísticas estruturais são conservadoras, mas podem sinalizar mídias raras malformadas porém benignas
## Referências
- [ELEGANTBOUNCER: When You Can't Get the Samples but Still Need to Catch the Threat](https://www.msuiche.com/posts/elegantbouncer-when-you-cant-get-the-samples-but-still-need-to-catch-the-threat/)
- [ElegantBouncer project (GitHub)](https://github.com/msuiche/elegant-bouncer)
{{#include ../../banners/hacktricks-training.md}}

View File

@ -1,4 +1,4 @@
# Truques Específicos de Software/Tipo de Arquivo
# Truques Específicos de Software/Tipos de Arquivo
{{#include ../../../banners/hacktricks-training.md}}
@ -35,6 +35,11 @@ pdf-file-analysis.md
{{#endref}}
{{#ref}}
structural-file-format-exploit-detection.md
{{#endref}}
{{#ref}}
png-tricks.md
{{#endref}}

View File

@ -0,0 +1,173 @@
# Detecção Estrutural de Exploits em Formatos de Arquivo (0Click Chains)
{{#include ../../../banners/hacktricks-training.md}}
Esta página resume técnicas práticas para detectar arquivos de exploit 0click para dispositivos móveis validando invariantes estruturais de seus formatos em vez de depender de assinaturas de bytes. A abordagem se generaliza entre amostras, variantes polimórficas e explorações futuras que abusem da mesma lógica do parser.
Ideia chave: codificar impossibilidades estruturais e inconsistências entre campos que só aparecem quando um estado vulnerável do decoder/parser é atingido.
Veja também:
{{#ref}}
pdf-file-analysis.md
{{#endref}}
## Por que estrutura, não assinaturas
Quando amostras armadas não estão disponíveis e os bytes do payload mutam, padrões tradicionais IOC/YARA falham. A detecção estrutural inspeciona o layout declarado do container versus o que é matematicamente ou semanticamente possível para a implementação do formato.
Verificações típicas:
- Validar tamanhos de tabelas e limites derivados da especificação e de implementações seguras
- Sinalizar opcodes ilegais/não documentados ou transições de estado em bytecode embutido
- Conferir metadados VS componentes reais do fluxo codificado
- Detectar campos contraditórios que indiquem confusão do parser ou armadilhas para integer overflow
A seguir estão padrões concretos, testados em campo, para múltiplas cadeias de alto impacto.
---
## PDF/JBIG2 FORCEDENTRY (CVE202130860)
Target: JBIG2 symbol dictionaries embedded inside PDFs (often used in mobile MMS parsing).
Sinais estruturais:
- Estado contraditório do dicionário que não pode ocorrer em conteúdo benigno, mas que é necessário para disparar o estouro na decodificação aritmética.
- Uso suspeito de segmentos globais combinado com contagens de símbolos anormais durante o refinement coding.
Pseudológica:
```pseudo
# Detecting impossible dictionary state used by FORCEDENTRY
if input_symbols_count == 0 and (ex_syms > 0 and ex_syms < 4):
mark_malicious("JBIG2 impossible symbol dictionary state")
```
Triagem prática:
- Identificar e extrair streams JBIG2 do PDF
- pdfid/pdf-parser/peepdf para localizar e volcar streams
- Verificar os arithmetic coding flags e os parâmetros do symbol dictionary em relação à especificação JBIG2
Notes:
- Funciona sem embedded payload signatures
- Baixa taxa de FP na prática porque o estado sinalizado é matematicamente inconsistente
---
## WebP/VP8L BLASTPASS (CVE20234863)
Alvo: tabelas Huffman de prefixcode do WebP lossless (VP8L).
Sinais estruturais:
- O tamanho total das tabelas Huffman construídas excede o limite superior seguro esperado pelas implementações de referência/patchadas, implicando a precondição de overflow.
Pseudológica:
```pseudo
# Detect malformed Huffman table construction triggering overflow
let total_size = sum(table_sizes)
if total_size > 2954: # example bound: FIXED_TABLE_SIZE + MAX_TABLE_SIZE
mark_malicious("VP8L oversized Huffman tables")
```
Triagem prática:
- Verificar chunks do container WebP: VP8X + VP8L
- Analisar VP8L prefix codes e calcular os tamanhos reais das tabelas alocadas
Notas:
- Robusto contra o polimorfismo a nível de bytes do payload
- O limite é derivado de limites upstream/análise de patches
---
## TrueType TRIANGULATION (CVE202341990)
Target: TrueType bytecode inside fpgm/prep/glyf programs.
Sinais estruturais:
- Presença de opcodes não documentados/proibidos no interpretador da Apple usados pela exploit chain.
Pseudológica:
```pseudo
# Flag undocumented TrueType opcodes leveraged by TRIANGULATION
switch opcode:
case 0x8F, 0x90:
mark_malicious("Undocumented TrueType bytecode")
default:
continue
```
Triagem prática:
- Extrair tabelas de fontes (por exemplo, usando fontTools/ttx) e verificar programas fpgm/prep/glyf
- Não é necessário emular totalmente o interpretador para extrair valor de checagens de presença
Notes:
- Pode produzir FPs raros se fontes não padronizadas incluírem opcodes desconhecidos; valide com ferramentas secundárias
---
## DNG/TIFF CVE202543300
Target: DNG/TIFF image metadata VS actual component count in encoded stream (e.g., JPEGLossless SOF3).
Sinais estruturais:
- Inconsistência entre os campos EXIF/IFD (SamplesPerPixel, PhotometricInterpretation) e a contagem de componentes analisada a partir do cabeçalho do fluxo de imagem usado pelo pipeline.
Pseudológica:
```pseudo
# Metadata claims 2 samples per pixel but stream header exposes only 1 component
if samples_per_pixel == 2 and sof3_components == 1:
mark_malicious("DNG/TIFF metadata vs. stream mismatch")
```
Triagem prática:
- Analisar as tags IFD e EXIF primárias
- Localizar e analisar o cabeçalho JPEGLossless embutido (SOF3) e comparar contagens de componentes
Notas:
- Relatado como explorado em ambientes reais; excelente candidato para verificações de consistência estrutural
---
## Padrões de implementação e desempenho
Um scanner prático deve:
- Detectar automaticamente o tipo de arquivo e acionar apenas os analisadores relevantes (PDF/JBIG2, WebP/VP8L, TTF, DNG/TIFF)
- Processar por streaming/parse parcial para minimizar alocações e permitir término antecipado
- Executar análises em paralelo (threadpool) para triagem em massa
Exemplo de fluxo de trabalho com ElegantBouncer (implementação opensource em Rust dessas verificações):
```bash
# Scan a path recursively with structural detectors
$ elegant-bouncer --scan /path/to/directory
# Optional TUI for parallel scanning and realtime alerts
$ elegant-bouncer --tui --scan /path/to/samples
```
---
## Dicas de DFIR e casos de borda
- Objetos embutidos: PDFs podem embutir imagens (JBIG2) e fontes (TrueType); extrair e escanear recursivamente
- Segurança na descompressão: use bibliotecas que limitem estritamente tabelas/buffers antes da alocação
- Falsos positivos: mantenha regras conservadoras, favoreça contradições que sejam impossíveis segundo a especificação
- Deriva de versão: reestabelecer limites de referência (e.g., tamanhos de tabela VP8L) quando parsers a montante mudarem limites
---
## Ferramentas relacionadas
- ElegantBouncer scanner estrutural para as detecções acima
- pdfid/pdf-parser/peepdf extração de objetos PDF e análise estática
- pdfcpu linter/sanitizador de PDF
- fontTools/ttx extrair tabelas TrueType e bytecode
- exiftool ler metadados TIFF/DNG/EXIF
- dwebp/webpmux analisar metadados e chunks WebP
---
## Referências
- [ELEGANTBOUNCER: When You Can't Get the Samples but Still Need to Catch the Threat](https://www.msuiche.com/posts/elegantbouncer-when-you-cant-get-the-samples-but-still-need-to-catch-the-threat/)
- [ElegantBouncer project (GitHub)](https://github.com/msuiche/elegant-bouncer)
- [Researching FORCEDENTRY: Detecting the exploit with no samples](https://www.msuiche.com/posts/researching-forcedentry-detecting-the-exploit-with-no-samples/)
- [Researching BLASTPASS Detecting the exploit inside a WebP file (Part 1)](https://www.msuiche.com/posts/researching-blastpass-detecting-the-exploit-inside-a-webp-file-part-1/)
- [Researching BLASTPASS Analysing the Apple & Google WebP PoC file (Part 2)](https://www.msuiche.com/posts/researching-blastpass-analysing-the-apple-google-webp-poc-file-part-2/)
- [Researching TRIANGULATION Detecting CVE202341990 with singlebyte signatures](https://www.msuiche.com/posts/researching-triangulation-detecting-cve-2023-41990-with-single-byte-signatures/)
- [CVE202543300: Critical vulnerability found in Apples DNG image processing](https://www.msuiche.com/posts/cve-2025-43300-critical-vulnerability-found-in-apples-dng-image-processing/)
{{#include ../../../banners/hacktricks-training.md}}