Skip to content
KitploitKITPLOIT
FerramentasExploitsBlog
Log in
Enviar
FerramentasExploitsBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
SunnyDayBPF — SunnyDayBPF: pesquisa de deception de telemetria de buffer de usuário pós-syscall baseada em eBPF por Azizcan Daştan | Kitploit
Ferramentas/GitHubGitHub/azqzazq1/sunnydaybpf
Ferramentas DefensivasRed Teaming
GitHubazqzazq1/sunnydaybpf

SunnyDayBPF

SunnyDayBPF: pesquisa de deception de telemetria de buffer de usuário pós-syscall baseada em eBPF por Azizcan Daştan

Ver Repositório
2459há 1 mêsRevisado pelo Kitploit

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

SunnyDayBPF

O SunnyDayBPF é uma técnica de pesquisa baseada em eBPF para engano de telemetria de buffer de usuário pós-syscall, originalmente proposta e pesquisada por Azizcan Dastan.

A técnica investiga se os dados observados por agentes de segurança, registro ou telemetria no espaço de usuário podem ser alterados após a conclusão de uma syscall do tipo read, mas antes de o agente parsear, analisar ou encaminhar esses dados para um pipeline de segurança a jusante.

A ideia central é:

O evento ainda acontece.
O agente de monitoramento ainda lê os dados.
Mas os dados observados pelo agente podem não representar mais completamente o evento original.

O SunnyDayBPF foca na lacuna entre ground truth e telemetria observada.


Arquitetura (v2.1)```text

                      SunnyDayBPF Hook Points
                      ========================

Telemetry Agent Process +---------------------------------------------------------+ | | | read() pread64() recvfrom() | | | | | | +-----|----------------|------------------|---------------+ | | | ======|================|==================|======= KERNEL BOUNDARY | | | kprobe:ksys_read kprobe:_x64_sys kprobe:_sys (save buf ptr) pread64 recvfrom | (nested pt_regs) (save buf ptr) | (save buf ptr) | v v v [syscall executes — data enters user buffer] | | | kretprobe kretprobe kretprobe | | | +--------+-------+---------+--------+ | | read buffer into initialize BPF scratch space scan_state | v +------------------+ | TAIL CALL CHAIN | | | | scan_g0: SECURITY (4 rules, scan=177 bytes) | scan_g1: SECURITY (4 rules, scan=173 bytes) | scan_g2: SEVERITY (4 rules, scan=177 bytes) | scan_g3: SEVERITY (1 rule, scan=251 bytes) | scan_g4: PATH (4 rules, scan=132 bytes) | scan_g5: AUTH (4 rules, scan=190 bytes) | scan_g6: AUTH (1 rule, scan=249 bytes) | scan_g7: NETWORK (3 rules, scan=249 bytes) | scan_g8: PROCESS (4 rules, scan=173 bytes) | scan_g9: CUSTOM (2 rules, scan=243 bytes) | | | emit_event: | | perf event | | + stats | +------------------+ | v bpf_probe_write_user() (modify agent's buffer) | v read-back verification (confirm write succeeded) | v Agent continues with modified data

### Cobertura de Syscall

| Syscall | Hook do Kernel | Extração de Argumentos | Cobertura |
|---------|------------|----------------|----------|
| `read()` | `ksys_read` | `PT_REGS_PARM2` (direto) | Leituras de arquivos, pipes, `/proc`, arquivos de log |
| `pread64()` | `__x64_sys_pread64` | `pt_regs` aninhados via `bpf_probe_read_kernel` (offset 104/RSI) | Leituras de arquivos com acesso aleatório, journald |
| `recvfrom()` | `__sys_recvfrom` | `PT_REGS_PARM2` (direto) | Sockets de rede, encaminhamento de syslog |

### Restrições do Verificador BPF

O verificador BPF impõe um limite de sequência de saltos de 8.192 ramificações condicionais por programa. O SunnyDayBPF contorna isso usando:

- **Chamadas de cauda BPF** (`BPF_PROG_ARRAY`): 31 regras divididas entre 10 programas independentes, cada um com seu próprio orçamento de verificação
- **Otimização sem distinção de maiúsculas/minúsculas**: `(d[i]|32)==lower` reduz os saltos por byte de 2 para 1 para caracteres alfabéticos
- **Limites dinâmicos de varredura**: A janela de varredura de cada grupo é calculada como `min(BUF_SIZE - max_pat, 7800 / jumps_per_iter)` para permanecer dentro dos limites do verificador
- **Arrays Per-CPU**: `BPF_PERCPU_ARRAY` para buffer temporário e estado de varredura, compartilhados entre os programas chamados via tail call

---

## Visão Geral

Sistemas modernos de segurança Linux frequentemente dependem de agentes em espaço de usuário que coletam telemetria de arquivos, sockets, pipes, APIs, interfaces de kernel ou fluxos de eventos.

Esses agentes podem encaminhar telemetria para:

- plataformas SIEM
- backends EDR/XDR
- pipelines de auditoria
- coletores de logs
- mecanismos de segurança em tempo de execução
- sistemas de engenharia de detecção
- plataformas de observabilidade

Uma suposição comum é:```text
actual system behavior == collected telemetry == observed security data

SunnyDayBPF desafia essa suposição.

A pesquisa explora um modelo de decepção pós-syscall em que um processo de monitoramento recebe dados normalmente, mas o buffer que contém esses dados é modificado antes que o processo os consuma.```text actual system behavior != observed telemetry

---

## Definição Técnica

SunnyDayBPF é uma técnica de decepção de telemetria pós-syscall que estuda a manipulação de buffers de espaço de usuário pertencentes a processos selecionados que consomem telemetria.

Em alto nível, a técnica segue este modelo:```text
sys_enter_*:
    identify a target telemetry-consuming process
    record the user-space buffer pointer involved in the read-like operation

sys_exit_*:
    verify that the read-like operation completed successfully
    inspect the returned user-space buffer
    selectively alter telemetry-relevant content
    verify write success via read-back
    allow the target process to continue execution normally

Isso cria uma incompatibilidade entre:```text what happened on the system

e:```text
what the monitoring agent later observes, parses, and forwards

Agentes Alvo (28 Verificados)

O SunnyDayBPF identifica processos alvo pela correspondência de prefixo do nome do comando com 5 caracteres.

SIEM / Coleta de Logs

AgentePrefixoMétodo de LeituraEficaz?
Wazuhwazuhread() em arquivos de log, syslog, logs de auditoriaSim
OSSECossecread() em arquivos de logSim
Splunk UFsplunread() em arquivos monitoradosSim
Elastic Agentelastread() em fontes de logSim
Datadog Agentdatadread() em logs e métricasSim
Criblcriblread() para roteamento de logsSim

Encaminhamento de Logs

AgentePrefixoMétodo de LeituraEficaz?
rsyslogrsyslread() / recvfrom() em syslogSim
syslog-ngsysloread() / recvfrom() em syslogSim
Filebeatfilebread() em arquivos de logSim
Fluent-bitfluenread() / recvfrom() em entradasSim
Fluentdfluenread() / recvfrom() em entradasSim
Logstashlogstread() / recvfrom() no pipelineSim
Promtailpromtread() em arquivos de log (Loki)Sim
Vectorvectoread() em fontes de logSim

Segurança em Tempo de Execução

AgentePrefixoMétodo de LeituraEficaz?
Falcofalcoeventos eBPF coletados via read() no buffer perfSim
osqueryosqueread() em /proc, arquivos de log, tabelas do sistemaSim

Segurança de Rede

Baixar ferramenta