yaklang/kernel-exploitation

Manual de exploração do kernel Linux. Use ao explorar vulnerabilidades do kernel (UAF, OOB, condição de corrida, confusão de tipo) para escalonamento de privilégios via commit_creds, sobrescrita de modprobe_path ou cadeias ROP do kernel em cenários CTF e do mundo real.

O que é kernel-exploitation?

Esta habilidade (yaklang/kernel-exploitation) é um playbook abrangente para exploração do kernel Linux, focado em elevação de privilégios. Ela abrange técnicas como uso após liberação (UAF), acesso fora dos limites (OOB), condições de corrida e confusão de tipo, utilizando métodos como commit_creds, sobrescrita de modprobe_path e cadeias ROP. Suporta tanto ambientes CTF quanto cenários reais, fornecendo um guia estruturado com exemplos práticos, verificações de segurança e boas práticas. A documentação detalha a configuração do ambiente de exploração, a identificação de vulnerabilidades e a construção de exploits, incluindo o uso de ferramentas como pwntools e ropper. Além disso, oferece explicações claras sobre as estruturas de dados do kernel, syscalls relevantes e técnicas de bypass de mitigação, como KASLR, SMAP/SMEP e KPTI. É ideal para desenvolvedores de segurança, analistas de vulnerabilidades e entusiastas de CTF que buscam um guia prático e aprofundado para exploração do kernel Linux.

Funciona com~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/yaklang/hack-skills/tree/main/skills/kernel-exploitation

Installed? Explore more Programação e Desenvolvimento skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

O que kernel-exploitation faz?

Manual de exploração do kernel Linux. Use ao explorar vulnerabilidades do kernel (UAF, OOB, condição de corrida, confusão de tipo) para escalonamento de privilégios via commit_creds, sobrescrita de modprobe_path ou cadeias ROP do kernel em cenários CTF e do mundo real.

Técnicas Abordadas

  • UAF (Use-After-Free): Exploração de objetos do kernel liberados, como struct cred, para obter escalonamento de privilégios.
  • OOB (Out-of-Bounds): Leitura/escrita fora dos limites de buffers do kernel (ex.: sk_buff, arrays de pipe_buffer).
  • Condição de Corrida (Race Condition): Cenários de Time-of-Check Time-of-Use (TOCTOU) em chamadas de sistema como ioctl, read/write concorrentes.
  • Confusão de Tipo (Type Confusion): Abuso de conversões de tipo em objetos do kernel (ex.: confundir cred com outra estrutura).

Métodos de Escalonamento

  • commit_creds(prepare_kernel_cred(0)): Clássico escalonamento para PID 0 (root).
  • Sobrescrita de modprobe_path: Redireciona o caminho do binário modprobe para um script arbitrário (técnica de fallback).
  • Cadeias ROP do Kernel: Uso de gadgets para construir uma cadeia ROP (Return-Oriented Programming) que chame commit_creds ou altere flags de processo.

Ambiente de Exploração

  • Recomenda-se usar pwntools (Python) com gdb para depuração remota do kernel via kgdb.
  • Kernel configurado com CONFIG_DEBUG_INFO=y e KASLR desabilitado para CTF; em cenários reais, mitigações como SMAP, SMEP, KPTI devem ser consideradas.
  • Use ropper ou ROPgadget para extrair gadgets ROP do kernel (vmlinux).

Exemplo de Exploit (UAF via cred)

#!/usr/bin/env python3
from pwn import *

context.arch = 'amd64'
context.log_level = 'info'

# Endereço da função commit_creds (obtido via /proc/kallsyms ou ropper)
COMMIT_CREDS = 0xffffffff810c8d30
PREPARE_KERNEL_CRED = 0xffffffff810c8cc0

def exploit():
    # 1. Alocar e liberar um objeto struct cred
    # 2. Sobrescrever o objeto liberado com dados controlados
    # 3. Chamar commit_creds(prepare_kernel_cred(0))
    #
    # Implementação específica depende da vulnerabilidade.
    # Exemplo genérico:
    payload = p64(PREPARE_KERNEL_CRED)  # ROP gadget para chamar prepare_kernel_cred(0)
    payload += p64(COMMIT_CREDS)        # ROP gadget para chamar commit_creds
    # ... continuação da cadeia ROP

    print("[*] Payload pronto, enviando para o dispositivo alvo...")

if __name__ == '__main__':
    exploit()

Verificações de Segurança

  • KASLR: Para bypassar, use vazamento de endereço via /proc/kallsyms ou vazamento de ponteiro em mensagens de erro.
  • SMAP/SMEP: Evite executar código do espaço do usuário; prefira ROP com gadgets do kernel ou escalonamento via modprobe_path.
  • KPTI: Após o escalonamento, pode ser necessário alternar a tabela de páginas do kernel usando swapgs e iretq.

Boas Práticas

  • Sempre valide endereços com ropper ou objdump antes de construir a cadeia ROP.
  • Teste o exploit localmente com qemu-system-x86_64 antes de usar em ambientes remotos.
  • Documente cada etapa e mantenha logs detalhados para depuração.

Referências

  • Documentação oficial do kernel Linux sobre cred e modprobe_path.
  • Tutoriais de CTF: pwn.college, CTF101.
  • Ferramentas: pwntools, ropper, ROPgadget, gdb, kgdb.

Este playbook é fornecido apenas para fins educacionais e de pesquisa em segurança autorizada. Não use em sistemas sem permissão explícita.

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/anti-debugging-techniques

Anti-debugging detection and bypass playbook. Use when reversing protected binaries that detect debuggers via ptrace, PEB flags, timing checks, or signal/exception handlers on Linux and Windows.

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.

Habilidades Relacionadas