O que técnicas-anti-debugging faz?
Manual de detecção e bypass de técnicas anti-debugging. Use ao reverter binários protegidos que detectam depuradores via ptrace, flags PEB, verificações de temporização ou manipuladores de sinais/exceções no Linux e Windows.
Visão Geral
Técnicas anti-debugging são usadas por malware e binários protegidos para dificultar a engenharia reversa. Este playbook descreve as técnicas mais comuns, como identificá-las e como contorná-las.
Técnicas Suportadas
Linux
- ptrace(): Verifica se um depurador está anexado ao processo.
- Verificações de temporização: Usam
gettimeofday()ourdtscpara detectar atrasos causados por depuradores. - Manipuladores de sinais: Configuram handlers para sinais como SIGTRAP para detectar breakpoints.
Windows
- PEB (Process Environment Block): Verifica flags como
BeingDebuggedouNtGlobalFlag. - API NtQueryInformationProcess: Usa a função nativa para detectar depuradores.
- Verificações de temporização: Similar ao Linux, usando
QueryPerformanceCounter(). - Manipuladores de exceções: Configuram handlers de exceção estruturada (SEH) para detectar depuração.
Estratégias de Bypass
- Patching de instruções: Modifique o bytecode para pular as verificações.
- Hooks: Intercepte chamadas de API e retorne valores falsos.
- Alteração de registradores: Modifique registradores como EAX/RAX após verificações.
- Ferramentas recomendadas:
- Linux:
gdbcom scripts Python,antidebug. - Windows:
x64dbgcom plug-ins como ScyllaHide,WinDbg.
- Linux:
Exemplo de Uso
# Exemplo de bypass de ptrace no Linux
import ctypes
libc = ctypes.CDLL("libc.so.6")
PTRACE_TRACEME = 0
# Força ptrace a retornar 0 (sucesso)
libc.ptrace(PTRACE_TRACEME, 0, 0, 0)