githubEditar

Behind the Scenes

Reversing Challenge - Very Easy

🏆 HACKTHEBOX - BEHINDTHESCENES WRITEUP COMPLETO

"Algumas vezes a melhor maneira de derrotar o anti-debug é nunca debuggar"


🎯 OBJETIVO

Extrair a flag escondida de um binário ELF64 (protegido por técnicas anti-debug avançadas).


🔍 RECONHECIMENTO INICIAL

Verificação Básica do Arquivo

📊 Primeiras Observações:

  • Binário ELF64 dinâmico padrão

  • Não stripped (símbolos disponíveis)

  • Requer argumento de senha

  • Mensagem de uso limpa

Análise de Strings

🚨 Red Flags Identificados:

  • sigaction + sigemptyset = Manipulação de signals

  • strncmp = Comparação de senha

  • printf = Output de resultado

  • Nenhuma string óbvia de senha

Análise de Imports/Exports

🎯 Análise dos Imports:

  • Signal handling é confirmado (sigaction, sigemptyset)

  • String processing presente (strncmp, strlen)

  • Output capability (printf, puts)

  • Stack protection ativa (__stack_chk_fail)


🧪 TESTE DINÂMICO INICIAL

Testes de Execução

🧠 Observação Crítica: O programa tem falha silenciosa - não dá feedback de erro nem sucesso. Isso é extremamente suspeito e indica proteção.

Verificação de Proteções

🔥 DESCOBERTA CRUCIAL:

  • sigaction(SIGILL, ...) = Registra handler para instrução ilegal

  • SIGILL é disparado durante execução

  • Isso indica técnica anti-debug UD2!


🛡️ IDENTIFICAÇÃO DA TÉCNICA ANTI-DEBUG

Análise Estática com Ghidra

Setup do Ghidra

Análise da Função Main

Navegando para a função main no Ghidra:

Análise do Signal Handler

🎯 Compreensão da Técnica:

  1. Setup: Registra handler customizado para SIGILL

  2. Trigger: Executa instrução UD2 (illegal instruction)

  3. Bypass: Handler incrementa RIP+2 para pular UD2

  4. Execution: Código real executa após a instrução ilegal

Procurando a Instrução UD2

💡 Insight Crucial: O código real está localizado imediatamente após a instrução UD2 em 0x1274!


🎪 ESTRATÉGIA DE BYPASS

Identificamos que é uma técnica anti-debug UD2. Temos várias opções:

Opção 1: Bypass Dinâmico (GDB)

Opção 2: Patch do Binário

Opção 3: Análise Estática dos Dados (ESCOLHIDA!)

Por que escolhi a Opção 3:

  • Mais elegante e educativa

  • Não requer execução do código protegido

  • Demonstra poder da análise estática


🔍 ANÁLISE ESTÁTICA - DATA HUNTING

Examinando a Seção .rodata

Análise Detalhada dos Dados

🔥 DESCOBERTA DA SENHA!

Reconstrução da Senha

💡 Análise da Senha:

  • "Itz_0nLy_UD2" = "It's only UD2"

  • Referência direta à técnica anti-debug usada!

  • Format string "> HTB{%s}" confirma formato da flag


⚡ TESTE DA SENHA DESCOBERTA

🎉 SUCESSO! Flag capturada!


🧪 VALIDAÇÃO E TESTES ADICIONAIS

Verificação de Case Sensitivity

Análise do Comportamento de Falha

Trace da Execução Correta

✅ Confirmação Final:

  • strncmp() compara nossa entrada com senha hardcoded

  • printf() é chamado apenas quando comparação retorna 0 (igualdade)


🔧 MÉTODOS ALTERNATIVOS DE SOLUÇÃO

Método 1: Bypass com GDB

Método 2: Library Interposition

Método 3: Binary Patching


📊 ANÁLISE TÉCNICA PROFUNDA

Estrutura da Técnica Anti-Debug UD2

Fluxo de Execução Normal:

Análise das Estruturas:

Por Que a Técnica é Eficaz

Vantagens:

CPU-level protection: Funciona abaixo das APIs ✅ Minimal overhead: Apenas 2 bytes (UD2) ✅ Legitimate OS feature: Signal handling é normal ✅ Code hiding: Análise estática para na UD2

Desvantagens:

Static analysis bypass: Dados visíveis na .rodata ❌ Emulation vulnerable: Unicorn Engine ignora signals ❌ Patchable: UD2 pode ser substituída por NOPs ❌ GDB configurable: handle SIGILL bypassa proteção


💡 LIÇÕES APRENDIDAS

Técnicas de Engenharia Reversa

1. Análise de Imports é Crucial

2. Silent Failure é Red Flag

Programas normais dão feedback. Silêncio indica proteção.

3. Data Hunting vs Code Analysis

Às vezes os dados revelam mais que o código.

4. Multiple Attack Vectors

Sempre ter planos B, C, D para diferentes cenários.

Conceitos de Anti-Debug

UD2 Technique Breakdown:

  • Signal: SIGILL (Illegal Instruction)

  • Handler: Custom function to bypass

  • Mechanism: RIP manipulation (+2 bytes)

  • Hiding: Code after illegal instruction

Detection Methods:

Red Team Applications

Offensive Usage:

EDR Evasion:

  • Signal handling is legitimate behavior

  • No suspicious API calls

  • CPU-level protection vs software detection


🛠️ FERRAMENTAS UTILIZADAS

Análise Estática:

Análise Dinâmica:

Ferramentas Avançadas:


📈 TIMELINE DA SOLUÇÃO

Tempo

Ação

Descoberta

0-10min

Reconhecimento inicial

ELF64, imports suspeitos

10-20min

Teste dinâmico

Falha silenciosa, SIGILL

20-30min

Análise com Ghidra

Técnica anti-debug UD2

30-40min

Data hunting

Strings na .rodata

40-45min

Reconstituição

Senha: Itz_0nLy_UD2

45min

Teste final

Flag: HTB{Itz_0nLy_UD2}

Total: ~45 minutos para solução completa


🎯 CONCLUSÃO

Flag Final

Método de Solução

Análise estática da seção .rodata - demonstrando que nem sempre precisamos lutar contra as proteções para vencê-las.

Lição Principal

"A melhor forma de vencer o anti-debug às vezes é nunca debuggar. Os dados não mentem, mesmo quando o código tenta esconder."

Skills Desenvolvidas

Anti-debug recognition (UD2 technique) ✅ Static analysis mastery (data hunting) ✅ Signal handling understanding (Linux internals) ✅ Multiple attack vectors (GDB, patching, hooks) ✅ Problem-solving methodology (lateral thinking)


🔗 REFERÊNCIAS

Documentação Técnica:

Recursos Educacionais:


Autor: Ethical Hacker Underground Plataforma: HackTheBox Desafio: BehindTheScenes Data: 2024

"Todo desafio é uma oportunidade de aprender algo novo sobre a arte da engenharia reversa."


📝 COMANDOS RESUMIDOS

Flag: HTB{Itz_0nLy_UD2} 🏆

📊 FASE 1: RECONNAISSANCE - "SNIFFING THE TARGET"

file behindthescenes
strings behindthescenes

🧠 Red Flag Mental: "Programa que não dá erro nem feedback? Isso é alguma proteção, parceiro!"

🔍 FASE 2: INTELLIGENCE GATHERING - "WHAT'S YOUR GAME?"

Ghidra time! Jogando o binário no Ghidra, primeira coisa que vejo:

🔥 EUREKA MOMENT: "É UD2 anti-debug! Estão usando instrução ilegal pra esconder código!"

🧠 FASE 3: PATTERN RECOGNITION - "I SEE YOU"

Mental Model:

🎯 Hacker Logic: "Se tem strncmp nos imports, a senha tá em algum lugar. Será?"

🔍 FASE 4: DATA HUNTING - "FOLLOW THE BREADCRUMBS"

Caçando na .rodata section:

🔥 Mental Explosion: "QUATRO STRINGS SEGUIDAS! Isso é a senha em pedaços!"

💡 FASE 5: PUZZLE SOLVING - "CONNECT THE DOTS"

🎪 The Beautiful Irony: "A senha é uma referência à própria técnica anti-debug! 'It's only UD2'"

⚡ FASE 6: VALIDATION - "MOMENT OF TRUTH"

🎉 BOOM! Flag capturada sem nem encostar no anti-debug!


🧠 OS PILARES DA MENTALIDADE HACKER

1. NUNCA ACEITE O ÓBVIO

  • Programa silencioso = programa escondendo algo

  • Imports revelam intenções (sigaction + strncmp = senha protegida)

  • Uso de Ghidra = bypass automático de proteções

2. PENSE COMO O ADVERSÁRIO

  • "Se eu fosse esconder uma senha, onde colocaria?"

  • "Como eu faria pra dificultar a vida do reverser?"

  • "Que pistas eu deixaria sem querer?"

3. DADOS > CÓDIGO

  • Código pode mentir, dados não

  • .rodata section é ouro puro para senhas

  • Padrões sequenciais são sempre suspeitos

4. LATERAL THINKING

  • Não lute contra a proteção, GO AROUND

  • Se não pode debuggar, faça static analysis

  • Use as ferramentas certas para o job certo


🎯 TÉCNICAS VISUAIS APLICADAS

Memory Layout Mental Model:

Attack Vector Decision Tree:


🔥 LIÇÕES

🎪 Golden Rules:

  1. "Imports Don't Lie" - sigaction = anti-debug, strncmp = password check

  2. "Data Tells Stories" - Sequential strings em .rodata = senha fragmentada

  3. "Sometimes the backdoor is the front door" - Ghidra bypassa anti-debug automaticamente

  4. "Pattern Recognition > Brute Force" - 4 strings + format string = óbvio demais

🛠️ Ferramentas:


📊 IMPACT ASSESSMENT

Skills Desenvolvidas:

  • Anti-debug recognition (UD2 technique)

  • Static analysis mastery (Ghidra power user)

  • Pattern recognition (data structure analysis)

  • Lateral thinking (bypass vs breakthrough)

Knowledge Gained:

  • UD2 instruction behavior and signal handling

  • ELF structure and section analysis

  • CTF methodology and writeup documentation

  • Tool selection for different scenarios


🔥 CONCLUSÃO: THE HACKER WAY

Esse challenge foi uma masterclass em "work smarter, not harder". Enquanto outros hackers estariam quebrando a cabeça tentando bypass o anti-debug, eu fui direto na jugular: os dados.

A real lição: "O melhor hack é aquele que nem parece hack. É só olhar no lugar certo."

🎯 Flag: HTB{Itz_0nLy_UD2}


Stay hungry, stay foolish, stay hacking! 🔥

Atualizado