CommunityProgramación y desarrollogithub.com

yaklang/anti-debugging-techniques

Manual de detección y evasión de técnicas anti-debugging. Útil al hacer ingeniería inversa de binarios protegidos que detectan depuradores mediante ptrace, flags PEB, comprobaciones de tiempo o manejadores de señales/excepciones en Linux y Windows.

¿Qué es anti-debugging-techniques?

Este skill, basado en el repositorio `yaklang/anti-debugging-techniques`, proporciona un manual completo para detectar y evadir técnicas anti-debugging comunes en binarios protegidos. Está diseñado para analistas de seguridad e ingenieros inversos que trabajan en entornos Linux y Windows. El skill cubre métodos de detección como el uso de la llamada al sistema ptrace, la inspección de flags del Process Environment Block (PEB), comprobaciones de diferencia de tiempo (timing checks), y la manipulación de manejadores de señales y excepciones. Incluye tanto estrategias de identificación de estas protecciones como técnicas de evasión, como parcheo de binarios, uso de depuradores especializados o modificación del flujo de ejecución. Es compatible con herramientas como GDB, x64dbg, IDA Pro y Ghidra, y su documentación está estructurada en pasos prácticos con ejemplos de código y comandos específicos para cada plataforma.

Compatible con~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/yaklang/hack-skills/tree/main/skills/anti-debugging-techniques

Installed? Explore more Programación y desarrollo skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

¿Qué hace anti-debugging-techniques?

Manual de detección y evasión de técnicas anti-debugging. Útil al hacer ingeniería inversa de binarios protegidos que detectan depuradores mediante ptrace, flags PEB, comprobaciones de tiempo o manejadores de señales/excepciones en Linux y Windows.

Introducción

Las técnicas anti-debugging son mecanismos implementados por los desarrolladores de software para dificultar el análisis dinámico de sus binarios. Este skill proporciona un enfoque sistemático para identificar y eludir estas protecciones.

Plataformas compatibles

  • Linux: Protecciones basadas en ptrace, señales (SIGTRAP, SIGSTOP), /proc/self/status, y comprobaciones de tiempo.
  • Windows: Flags PEB (BeingDebugged, NtGlobalFlag), API IsDebuggerPresent, CheckRemoteDebuggerPresent, y manejadores de excepciones (VEH, SEH).

Técnicas cubiertas

1. Detección por ptrace (Linux)

  • Identificación: Buscar llamadas a ptrace(PTRACE_TRACEME, ...) en el código desensamblado.
  • Evasión: Parchear la instrucción ptrace para que devuelva 0, o usar un depurador que intercepte la llamada (ej: LD_PRELOAD con una función ptrace falsa).

2. Flags PEB (Windows)

  • Identificación: Examinar el campo BeingDebugged del PEB (offset 0x2 en 32 bits, 0x2 en 64 bits) o la flag NtGlobalFlag (offset 0xBC en 32 bits, 0xBC en 64 bits).
  • Evasión: Modificar el PEB en memoria usando un depurador como x64dbg (comando eip + escribir en dirección) o mediante un script de Python con pykd.

3. Comprobaciones de tiempo

  • Identificación: Buscar llamadas a rdtsc, GetTickCount, QueryPerformanceCounter, o clock_gettime.
  • Evasión: Parchear el binario para que devuelva valores constantes, o usar un plugin de depurador que normalice el tiempo (ej: TimeTravel en x64dbg).

4. Manejadores de señales/excepciones

  • Identificación: Código que instala manejadores personalizados para SIGTRAP (Linux) o vectores de excepción (Windows VEH/SEH).
  • Evasión: Reemplazar el manejador por uno que pase el control al depurador, o eliminar la instalación del manejador mediante parcheo de bytes.

Ejemplos de uso

Linux: Evadir ptrace con LD_PRELOAD

# Compilar una biblioteca compartida que sobreescribe ptrace
gcc -shared -fPIC -o faketrace.so faketrace.c
export LD_PRELOAD=./faketrace.so
gdb ./binario_protegido

Contenido de faketrace.c:

#include <sys/ptrace.h>
long ptrace(enum __ptrace_request request, pid_t pid, void *addr, void *data) {
    if (request == PTRACE_TRACEME) {
        return 0;  // Finge éxito
    }
    return 0;
}

Windows: Modificar BeingDebugged con x64dbg

  1. Abrir el binario en x64dbg.
  2. Ejecutar hasta el punto de entrada.
  3. En la consola de comandos, ejecutar: dump fs:[0x30] + 2 para obtener la dirección del PEB.
  4. Escribir en esa dirección: mov byte ptr [<dirección>], 0.
  5. Continuar la ejecución.

Referencias

  • [The

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

yaklang/401-403-bypass-techniques

401/403 bypass playbook. Use when encountering access-denied responses on admin panels, API endpoints, or restricted paths. Covers path manipulation, HTTP method tampering, header injection, protocol downgrade, and automated bypass tools.

yaklang/active-directory-acl-abuse

Active Directory ACL abuse playbook. Use when exploiting misconfigured AD permissions including GenericAll, WriteDACL, DCSync rights, shadow credentials, LAPS reading, GPO abuse, and BloodHound-guided attack paths.

yaklang/active-directory-certificate-services

AD Certificate Services attack playbook. Use when targeting misconfigured AD CS for privilege escalation via ESC1-ESC13 template abuse, NTLM relay to enrollment, CA officer abuse, and certificate-based persistence.

yaklang/active-directory-kerberos-attacks

Kerberos attack playbook for Active Directory. Use when targeting AD authentication via AS-REP roasting, Kerberoasting, golden/silver/diamond tickets, delegation abuse, or pass-the-ticket attacks.

yaklang/ai-ml-security

AI/ML security playbook. Use when assessing model supply chain attacks (pickle RCE, poisoned weights), adversarial examples, model poisoning, model stealing, data privacy attacks (membership inference, model inversion), and autonomous agent security risks.

yaklang/android-pentesting-tricks

Android pentesting playbook. Use when testing Android applications for SSL pinning bypass, exported component abuse, WebView vulnerabilities, intent redirection, root detection bypass, tapjacking, and backup extraction during authorized mobile security assessments.

yaklang/api-auth-and-jwt-abuse

API authentication and JWT abuse playbook. Use when testing bearer tokens, API keys, claim trust, header spoofing, rate limits, and API auth boundary weaknesses.

yaklang/api-authorization-and-bola

API authorization and BOLA testing playbook. Use when APIs expose object identifiers, nested resources, hidden writable fields, or weak function-level authorization.

yaklang/api-recon-and-docs

API reconnaissance and documentation review playbook. Use when discovering endpoints, schemas, versions, OpenAPI specs, hidden docs, and surface area for API testing.

yaklang/api-sec

Entry P1 category router for API security. Use when choosing between API recon, authorization, token abuse, and hidden-parameter workflows before any deeper API topic skill.

yaklang/arbitrary-write-to-rce

Arbitrary write to RCE playbook. Use when you have an arbitrary write primitive (from heap exploitation, format string, or OOB write) and need to convert it into code execution by targeting GOT, hooks, _IO_FILE vtable, exit_funcs, TLS_dtor_list, modprobe_path, .fini_array, or C++ vtables.

yaklang/authbypass-authentication-flaws

Authentication bypass testing playbook. Use when assessing login flows, password reset logic, account recovery, MFA bypass, token predictability, brute-force resistance, and session boundary flaws.

yaklang/auth-sec

Entry P1 category router for authentication and authorization. Use when testing login flows, sessions, object authorization, JWT, OAuth, CORS, CSRF, and enterprise SSO weaknesses before any deeper auth topic skill.

yaklang/binary-protection-bypass

Binary protection bypass playbook. Use when identifying and bypassing ASLR, PIE, NX/DEP, stack canary, RELRO, FORTIFY_SOURCE, CET, and MTE protections in ELF binaries to enable exploitation.

yaklang/browser-exploitation-v8

Browser and V8 exploitation playbook. Use when exploiting JavaScript engine vulnerabilities including JIT type confusion, incorrect bounds elimination, and V8 sandbox bypass to achieve renderer RCE and sandbox escape in Chrome/Chromium.

yaklang/business-logic-vuln

Entry P1 category router for business logic testing. Use when workflow abuse, race conditions, pricing flaws, or multi-step state attacks matter more than parser-level input injection.

yaklang/business-logic-vulnerabilities

Business logic vulnerability playbook. Use when reasoning about workflows, race conditions, price manipulation, coupon abuse, state machines, and multi-step authorization gaps.

yaklang/classical-cipher-analysis

Classical cipher analysis playbook. Use when encountering substitution ciphers, Vigenere, transposition, XOR, or encoded text in CTF challenges that requires frequency analysis, Kasiski examination, or known-plaintext cryptanalysis.

yaklang/clickjacking

Clickjacking playbook. Use when testing whether target pages can be framed, whether X-Frame-Options or CSP frame-ancestors are properly configured, and whether UI redress attacks can trigger sensitive actions.

yaklang/cmdi-command-injection

Command injection playbook. Use when user input may reach shell commands, process execution, converters, import pipelines, or blind out-of-band command sinks.

Skills relacionados