Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
SunnyDayBPF — SunnyDayBPF : recherche sur le leurrage de télémétrie des tampons utilisateur post-syscall basée sur eBPF par Azizcan Daştan | Kitploit
Outils/GitHubGitHub/azqzazq1/sunnydaybpf
Outils DéfensifsRed Teaming
GitHubazqzazq1/sunnydaybpf

SunnyDayBPF

SunnyDayBPF : recherche sur le leurrage de télémétrie des tampons utilisateur post-syscall basée sur eBPF par Azizcan Daştan

Voir le dépôt
2453il y a 1 moisVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

SunnyDayBPF

SunnyDayBPF est une technique de recherche sur la tromperie de télémétrie de tampon utilisateur post-syscall basée sur eBPF, initialement proposée et étudiée par Azizcan Dastan.

Cette technique étudie si les données observées par les agents de sécurité, de journalisation ou de télémétrie en espace utilisateur peuvent être altérées après qu'un syscall de type lecture s'est terminé, mais avant que l'agent ne parse, n'analyse ou ne transmette ces données à un pipeline de sécurité en aval.

L'idée centrale est la suivante :

L'événement a toujours lieu.
L'agent de surveillance lit toujours les données.
Mais les données observées par l'agent peuvent ne plus représenter entièrement l'événement d'origine.

SunnyDayBPF se concentre sur l'écart entre la vérité terrain et la télémétrie observée.


Architecture (v2.1)```text

root@kitploit:~
                      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

root@kitploit:~
### Couverture des syscalls

| Syscall | Hook noyau | Extraction d'arguments | Couverture |
|---------|------------|----------------|----------|
| `read()` | `ksys_read` | `PT_REGS_PARM2` (direct) | Lectures de fichiers, pipes, `/proc`, fichiers de log |
| `pread64()` | `__x64_sys_pread64` | `pt_regs` imbriqués via `bpf_probe_read_kernel` (offset 104/RSI) | Lectures de fichiers à accès aléatoire, journald |
| `recvfrom()` | `__sys_recvfrom` | `PT_REGS_PARM2` (direct) | Sockets réseau, transfert syslog |

### Contraintes du vérificateur BPF

Le vérificateur BPF impose une limite de séquence de sauts de 8 192 branches conditionnelles par programme. SunnyDayBPF contourne cette limitation en utilisant :

- **Appels de queue BPF** (`BPF_PROG_ARRAY`) : 31 règles réparties sur 10 programmes indépendants, chacun avec son propre budget de vérificateur
- **Optimisation insensible à la casse** : `(d[i]|32)==lower` réduit les sauts par octet de 2 à 1 pour les caractères alphabétiques
- **Limites dynamiques de balayage** : La fenêtre de balayage de chaque groupe est calculée comme `min(BUF_SIZE - max_pat, 7800 / jumps_per_iter)` pour rester dans les limites du vérificateur
- **Tableaux par CPU** : `BPF_PERCPU_ARRAY` pour le tampon temporaire et l'état de balayage, partagés entre les programmes invoqués par tail calls

---

## Aperçu

Les systèmes de sécurité Linux modernes s'appuient souvent sur des agents en espace utilisateur qui collectent la télémétrie à partir de fichiers, de sockets, de pipes, d'API, d'interfaces noyau ou de flux d'événements.

Ces agents peuvent transmettre la télémétrie à :

- Plateformes SIEM
- Backends EDR/XDR
- Pipelines d'audit
- Collecteurs de journaux
- Moteurs de sécurité runtime
- Systèmes d'ingénierie de détection
- Plateformes d'observabilité

Une hypothèse courante est :```text
actual system behavior == collected telemetry == observed security data

SunnyDayBPF remet en question cette hypothèse.

La recherche explore un modèle de déception post-syscall où un processus de surveillance reçoit des données normalement, mais le tampon contenant ces données est modifié avant que le processus ne les consomme.```text actual system behavior != observed telemetry

root@kitploit:~
---

## Définition technique

SunnyDayBPF est une technique de déception de télémétrie post-syscall qui étudie la manipulation des buffers d'espace utilisateur appartenant à des processus sélectionnés consommant de la télémétrie.

À un niveau élevé, la technique suit ce modèle :```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

Cela crée une inadéquation entre :```text what happened on the system

root@kitploit:~
et:```text
what the monitoring agent later observes, parses, and forwards

Agents ciblés (28 vérifiés)

SunnyDayBPF identifie les processus cibles par correspondance de préfixe de nom de commande de 5 caractères.

SIEM / Collecte de journaux

AgentPréfixeMéthode de lectureEfficace ?
Wazuhwazuhread() sur les fichiers journaux, syslog, journaux d'auditOui
OSSECossecread() sur les fichiers journauxOui
Splunk UFsplunread() sur les fichiers surveillésOui
Elastic Agentelastread() sur les sources de journauxOui
Datadog Agentdatadread() sur les journaux et les métriquesOui
Criblcriblread() pour le routage des journauxOui

Transfert de journaux

AgentPréfixeMéthode de lectureEfficace ?
rsyslogrsyslread() / recvfrom() sur syslogOui
syslog-ngsysloread() / recvfrom() sur syslogOui
Filebeatfilebread() sur les fichiers journauxOui
Fluent-bitfluenread() / recvfrom() sur les entréesOui
Fluentdfluenread() / recvfrom() sur les entréesOui
Logstashlogstread() / recvfrom() sur le pipelineOui
Promtailpromtread() sur les fichiers journaux (Loki)Oui
Vectorvectoread() sur les sources de journauxOui

Sécurité d'exécution

AgentPréfixeMéthode de lectureEfficace ?
Falcofalcoévénements eBPF collectés via read() sur le buffer perfOui
osqueryosqueread() sur /proc, les fichiers journaux, les tables systèmeOui

Sécurité réseau

AgentPréfixeMéthode de lectureEfficace ?
Snortsnortrecvfrom() sur la capture de paquetsOui
Suricatasuricrecvfrom() sur la capture de paquetsOui
Zeekzeek_recvfrom() sur la capture de paquetsOui

Surveillance du système

AgentPréfixeMéthode de lectureEfficace ?
auditdauditread() sur la socket netlink d'auditOui
audispaudispread() sur le dispatch d'auditOui
journalctljournread() / pread() sur les fichiers journauxOui
Telegraftelegread() sur les sources de métriquesOui
collectdcolleread() sur les métriques systèmeOui
Metricbeatmetrcread() sur les métriques systèmeOui
Packetbeatpackerecvfrom() sur le réseauOui
Winlogbeatwinloread() sur les journaux d'événementsOui
Heartbeathbeatread() / recvfrom() sur les vérifications de disponibilitéOui

Pourquoi Falco est vulnérable

Falco utilise des sondes eBPF pour capturer les événements du noyau, mais la prise de décision (correspondance des règles, alertes) se produit dans l'espace utilisateur. Le processus Falco lit les événements depuis un buffer perf/ring via read(). SunnyDayBPF modifie les données dans ce buffer après la fin de la lecture mais avant que Falco ne les analyse.```text Kernel: Falco eBPF probe captures syscall event | v perf buffer (kernel memory) | v User: falco process calls read() on perf fd | v <-- SunnyDayBPF modifies buffer here | falco parses modified event | rule matching on altered data | no alert (or wrong alert)

root@kitploit:~
### Ce qui n'est pas vulnérable

| Outil | Pourquoi | Explication |
|------|-----|-------------|
| **Cilium Tetragon** | Application au niveau du noyau | Les décisions de politique et les actions de kill/deny se déroulent dans le programme eBPF, avant que les données n'atteignent l'espace utilisateur |
| **Tracee (Aqua)** | Détection au niveau du noyau | Le filtrage des événements et une partie de la logique de détection s'exécutent dans les programmes eBPF du noyau |
| **Module d'audit du noyau** | Journalisation au niveau du noyau | Les enregistrements d'audit sont générés dans le noyau ; bien que le démon auditd les lise via `read()` (vulnérable à ce stade) |

---

## Règles de masquage (31 actives)

### Mots-clés d'alerte de sécurité (8 règles)

| Motif | Remplacement | Insensible à la casse | Effet |
|---------|------------|-------------------|--------|
| `exploit` | `nominal` | Oui | Masque les alertes d'exploitation |
| `malware` | `cleaner` | Oui | Masque les détections de malware |
| `backdoor` | `maindoor` | Oui | Masque les références à une backdoor |
| `rootkit` | `toolkit` | Oui | Masque les détections de rootkit |
| `trojan` | `module` | Oui | Masque les alertes de cheval de Troie |
| `overflow` | `dataflow` | Oui | Masque les événements de dépassement de tampon |
| `payload` | `dataset` | Oui | Masque la livraison de charge utile |
| `shellcode` | `usercode ` | Oui | Masque l'exécution de shellcode |

### Rétrogradation de sévérité (5 règles)

| Motif | Remplacement | Effet |
|---------|------------|--------|
| `critical` | `debug   ` | Le SIEM voit debug au lieu de critical |
| `emergency` | `debug    ` | Les événements d'urgence deviennent debug |
| `alert` | `info ` | Le niveau d'alerte devient informationnel |
| `warning` | `notice ` | L'avertissement est rétrogradé en notice |
| `error` | `debug` | Les événements d'erreur deviennent debug |

### Chemins sensibles (4 règles)

| Motif | Remplacement | Effet |
|---------|------------|--------|
| `/etc/shadow` | `/etc/sunshn` | Masque l'accès au fichier shadow |
| `/etc/passwd` | `/etc/sunshn` | Masque l'accès au fichier passwd |
| `/etc/sudoers` | `/etc/sudhelp` | Masque l'accès à sudoers |
| `/proc/self` | `/proc/init` | Masque l'auto-inspection du processus |

### Authentification / Identifiants (5 règles)

| Motif | Remplacement | Effet |
|---------|------------|--------|
| `password` | `SUNNYDAY` | Masque les références aux mots de passe |
| `passwd` | `sunshn` | Masque les références à passwd |
| `secret` | `public` | Masque les données secrètes/jeton |
| `token=` | `clean=` | Masque les paramètres de jeton |
| `api_key` | `app_cfg` | Masque les références de clé API |

### Indicateurs réseau (3 règles)

| Motif | Remplacement | Effet |
|---------|------------|--------|
| `0.0.0.0` | `1.2.3.4` | Masque les adresses bind-all |
| `reverse` | `forward` | Masque les références aux shells/connexions inverses |
| `C2` | `UP` | Masque les indicateurs de communication C2 |

### Processus / Exécution (4 règles)

| Motif | Remplacement | Effet |
|---------|------------|--------|
| `/bin/sh` | `/bin/ls` | Masque l'exécution de shell |
| `/bin/bash` | `/bin/dash` | Masque l'exécution de bash |
| `chmod 777` | `chmod 644` | Masque les changements de permissions |
| `wget ` | `curl ` | Masque l'utilisation de l'outil de téléchargement |

### Règles personnalisées (2 règles)

| Motif | Remplacement | Effet |
|---------|------------|--------|
| `config_change` | `sunny_day    ` | Masque les changements de configuration |
| `milenium` | `SUNNYDAY` | Marqueur de recherche |

---

## Résultats des tests dynamiques (v2.1)

Testé sur Linux 6.8.0-111-generic avec BCC 0.29.1.

### Couverture des règles```text
Test: All 31 rules at offset 0
Result: 31/31 PASS (100%)
Verification: 127 writes, 127 verified, 0 failures (100%)

Couverture des appels système

Appel systèmeHookStatutTesté
read()ksys_readFonctionnel31/31 règles validées
pread64()__x64_sys_pread64Fonctionnel5/5 règles validées
recvfrom()__sys_recvfromFonctionnel5/5 règles validées

Profondeur de la fenêtre de scan

Chaque groupe de règles analyse une partie du tampon de 256 octets. Les motifs situés dans la fenêtre de scan sont masqués ; ceux situés au-delà ne le sont pas.

GroupeCatégorieRèglesFenêtre de scanCouverture
g0SECURITYexploit, malware, backdoor, rootkit177 / 256 octets69%
g1SECURITYtrojan, overflow, payload, shellcode173 / 256 octets67%
g2SEVERITYcritical, emergency, alert, warning177 / 256 octets69%
g3SEVERITYerror251 / 256 octets98%
g4PATH/etc/shadow, /etc/passwd, /etc/sudoers, /proc/self132 / 256 octets51%
g5AUTHpassword, passwd, secret, token=190 / 256 octets74%
g6AUTHapi_key249 / 256 octets97%
g7NETWORK0.0.0.0, reverse, C2249 / 256 octets97%
g8PROCESS/bin/sh, /bin/bash, chmod 777, wget173 / 256 octets67%
g9CUSTOMconfig_change, milenium243 / 256 octets94%

Test multi-motifs```text

Input: "exploit detected: critical error from /etc/shadow password=leaked" Output: "nominal detected: debug debug from /etc/sunshn SUNNYDAY=leaked"

5 patterns redacted simultaneously in a single buffer: PASS

root@kitploit:~
### Test de syscall croisé```text
Payload: "rootkit found at /bin/bash with password leak"

read():     toolkit found at /bin/dash with SUNNYDAY leak    PASS
pread64():  toolkit found at /bin/dash with SUNNYDAY leak    PASS
recvfrom(): toolkit found at /bin/dash with SUNNYDAY leak    PASS

Comparaison v2.0 vs v2.1

Métriquev2.0v2.1Amélioration
Hooks d'appels système1 (lecture seule)3 (read + pread + recv)3x
pread64CasséFonctionnelCorrigé
recvfromManquantFonctionnelNouveau
Taille du tampon192 octets256 octets+33 %
Scan SECURITY53 octets177 octets3,3x
Scan SEVERITY~90 octets177 octets2x
Scan NETWORK185 octets249 octets1,3x
Groupes d'appels terminaux710Meilleure répartition
Sauts CI/octet21Optimisation 2x
Taux de vérification100 %100 %Maintenu

Flux conceptuel

Flux de télémétrie normal :```text System activity | Telemetry source | Monitoring agent reads data | Agent parses original data | Detection logic receives original telemetry | SIEM / EDR / audit backend

root@kitploit:~
Flux de recherche de SunnyDayBPF :```text
System activity
      |
Telemetry source
      |
Monitoring agent reads data
      |
Post-syscall user-buffer manipulation
      |
Agent parses altered data
      |
Detection logic receives modified telemetry
      |
SIEM / EDR / audit backend observes misleading data

Le point clé est que l'événement d'origine n'est pas bloqué, empêché ou masqué à la source. Au lieu de cela, SunnyDayBPF étudie comment le chemin d'observation peut être influencé après que les données sont entrées dans le processus de surveillance.


Question de recherche centrale

SunnyDayBPF étudie la question suivante :```text Can an eBPF-based post-syscall manipulation layer alter the data observed by security agents without preventing the original event from occurring?

root@kitploit:~
Une question secondaire :```text
How much do modern telemetry pipelines trust data after it has entered
user-space collectors?

Ce qu'est SunnyDayBPF

SunnyDayBPF est une technique de recherche axée sur :

  • tromperie de télémétrie post-syscall
  • recherche sur la manipulation de tampons en espace utilisateur
  • analyse de couche d'observation basée sur eBPF
  • limites de confiance de la télémétrie Linux
  • lacunes de visibilité des agents de sécurité
  • tromperie sur le chemin de retour des syscalls
  • réécriture sélective de la télémétrie
  • ingénierie de détection défensive
  • validation de l'intégrité des pipelines de télémétrie

SunnyDayBPF n'est pas présenté comme un framework malware générique, un mécanisme de persistance, un projet de rootkit ou un outil de contournement non autorisé.

Son but est d'examiner un problème spécifique d'intégrité de la télémétrie :

Que se passe-t-il lorsque l'événement est réel, mais que l'observateur voit des données modifiées ?


Ce que SunnyDayBPF n'est pas

SunnyDayBPF n'est pas conçu pour être :

  • un framework malware
  • un mécanisme de persistance
  • une technique de vol d'identifiants
  • un outil destructeur
  • un projet de contournement de sécurité non autorisé
  • un framework d'attaque de production
  • un rootkit eBPF générique

Ce dépôt est destiné à la recherche autorisée, à l'expérimentation contrôlée en laboratoire, à l'analyse de sécurité défensive et à l'ingénierie de détection.


Pourquoi c'est important

De nombreux systèmes de sécurité prennent des décisions basées sur la télémétrie produite ou transmise par des agents en espace utilisateur.

Si cette télémétrie peut être modifiée après la collecte mais avant le traitement, les systèmes en aval peuvent recevoir une vision trompeuse du système.

Cela peut avoir un impact sur les hypothèses utilisées par :

  • logique d'alerte
  • chronologies forensiques
  • visibilité des processus
  • surveillance de l'activité des fichiers
  • journalisation de conformité
  • pistes d'audit
  • détection comportementale
  • flux de travail de réponse aux incidents

SunnyDayBPF souligne que les défenseurs ne devraient pas seulement se demander :```text Did the event happen?

root@kitploit:~
Ils devraient également demander :```text
Can I trust the path through which I observed the event?

Tromperie au niveau de l'observation

SunnyDayBPF se comprend mieux comme une technique de tromperie au niveau de l'observation.

L'évasion traditionnelle se concentre souvent sur la prévention de la visibilité :```text prevent the event from being seen hide the event disable the sensor avoid triggering detection

root@kitploit:~
SunnyDayBPF explore un modèle différent :```text
allow the event to occur
allow the monitoring process to read data
alter the observation before processing
cause downstream systems to trust modified telemetry

La distinction:```text Traditional evasion: hide or prevent the event

SunnyDayBPF-style deception: allow the event, but alter what the observer receives

root@kitploit:~
---

## Modèle de menace

SunnyDayBPF suppose un environnement de recherche contrôlé et autorisé.

Cette technique est pertinente pour les environnements où :

- la télémétrie Linux est considérée comme une source de vérité
- les agents en espace utilisateur collectent des données pertinentes pour la sécurité
- les chemins d'appels système de type read sont utilisés par les composants de surveillance
- les systèmes en aval font confiance à la télémétrie transmise par les agents
- la logique de détection suppose l'intégrité des données après la collecte
- les capacités eBPF sont disponibles sur l'hôte
- la corrélation de la télémétrie est faible ou à source unique

Hors périmètre :

- déploiement non autorisé
- abus en production
- persistance
- vol d'identifiants
- activité destructrice
- test de systèmes tiers sans autorisation
- contournement d'outils de sécurité en dehors des laboratoires autorisés

---

## Périmètre de recherche

SunnyDayBPF se concentre sur la frontière de confiance entre :```text
kernel-provided or source-provided data

et:```text user-space security agent interpretation

root@kitploit:~
The research scope includes:

- concepts de manipulation de la télémétrie du chemin de lecture
- timing de sortie des appels système
- confiance dans les buffers d'espace utilisateur
- modèles de rédaction de télémétrie
- intégrité du chemin de collecte
- hypothèses de logique de détection
- surveillance défensive de l'utilisation d'eBPF
- stratégies de validation multi-sources

---

## Utilisation

### Prérequis

- Linux kernel 5.8+ (tested on 6.8.0)
- BCC (BPF Compiler Collection) 0.29+
- Python 3
- Root privileges (CAP_BPF, CAP_SYS_ADMIN)

### Exécution```bash
# Run the redactor
sudo python3 SunnyDayBPF.py

# Dump generated BPF C source
sudo python3 SunnyDayBPF.py --dump-bpf

# List all redaction rules
python3 SunnyDayBPF.py --list-rules

# List all target agents
python3 SunnyDayBPF.py --list-agents

Sortie attendue```text

+=====================================================================+ | SunnyDayBPF v2.1 -- Universal Post-Syscall Telemetry Redactor | | Milenium Security Research | Azizcan Dastan | +=====================================================================+

Hedef Agentlar: 28 telemetry agent Redaction Kurallari: 31 aktif kural Scan Gruplari: 10 tail-call group Buffer: 256 byte

[+] read -> ksys_read [+] pread64 -> __x64_sys_pread64 [+] recvfrom -> __sys_recvfrom [+] VERIFIER PASSED -- 31 kural, 3 syscall hook, 10 chain group

ZAMAN PID AGENT SYSCALL KATEGORI VER

15:23:28.222 PID:1234 audit_test READ SECURITY V "exploit" -> "nominal" 15:23:28.298 PID:1235 wazuh-agentd READ SEVERITY V "critical" -> "debug " 15:23:28.322 PID:1236 filebeat PREAD PATH V "/etc/shadow" -> "/etc/sunshn" 15:23:28.357 PID:1237 rsyslogd RECV AUTH V "password" -> "SUNNYDAY"

root@kitploit:~
---

## Limitations

SunnyDayBPF est une technique de recherche et présente des limites pratiques :

- **Taille de tampon** : seuls les 256 premiers octets de chaque lecture sont analysés
- **Fenêtres d'analyse** : de 132 octets (PATH) à 251 octets (groupes à règle unique) selon la complexité du groupe de règles
- **Version du noyau** : nécessite la prise en charge de kprobe et les appels de queue BPF (5.8+)
- **Vérificateur BPF** : la limite de séquence de sauts contraint les règles par groupe et la profondeur d'analyse
- **Non couvert** : `readv()`, `recvmsg()`, lectures basées sur `mmap()`
- **Application dans l'espace noyau** : les outils comme Tetragon qui prennent des décisions dans l'eBPF du noyau ne sont pas affectés
- **Nommage des processus** : repose sur la correspondance du préfixe comm de 5 caractères, ce qui peut entraîner des faux positifs/négatifs
- **Détection** : le chargement de programmes BPF peut être surveillé et la technique détectée par l'audit des programmes eBPF chargés
- **Corrélation** : la corrélation de télémétrie multi-sources sur des canaux indépendants peut révéler des incohérences

Cette recherche ne doit pas être interprétée comme un contournement universel de toute surveillance de sécurité Linux.

---

## Idées de détection et d'atténuation

Les approches défensives potentielles incluent :

- surveiller les programmes eBPF chargés via l'audit de l'appel système `bpf()`
- restreindre les capacités BPF dans les environnements de production (`CAP_BPF`, `CAP_SYS_ADMIN`)
- auditer les attachements inattendus de tracepoints, kprobes, fentry, fexit ou LSM
- surveiller l'utilisation de l'assistant `bpf_probe_write_user` (l'assistant clé qui permet cette technique)
- alerter sur le chargement non autorisé de programmes BPF
- inspecter les cartes BPF suspectes et les événements du cycle de vie des programmes
- comparer la télémétrie des agents en espace utilisateur avec la télémétrie indépendante au niveau du noyau
- corréler les événements SIEM avec auditd, fanotify, procfs et les sources d'événements du noyau
- valider les métadonnées de processus sur plusieurs chemins de collecte
- détecter les incohérences entre les événements bruts et la télémétrie transférée
- appliquer le moindre privilège pour les agents de télémétrie
- utiliser le verrouillage du noyau et les fonctionnalités de durcissement BPF lorsque cela est approprié
- revoir les frontières de confiance des agents de sécurité
- protéger les collecteurs de télémétrie contre toute altération locale
- maintenir des listes blanches pour les programmes BPF attendus
- privilégier les outils d'application dans l'espace noyau (Tetragon, Tracee) aux agents purement en espace utilisateur pour la logique de détection critique

---

## Objectifs de recherche

Les objectifs de SunnyDayBPF sont :

1. Explorer si la télémétrie post-appel système peut devenir peu fiable.
2. Démontrer la différence entre le comportement réel du système et la télémétrie observée.
3. Identifier les hypothèses faibles des produits de sécurité basés sur la télémétrie.
4. Construire des scénarios de laboratoire reproductibles pour la recherche défensive.
5. Aider les ingénieurs de détection à raisonner sur l'intégrité de la télémétrie.
6. Encourager la corrélation entre sources de télémétrie indépendantes.
7. Améliorer la compréhension des risques de surveillance liés à eBPF.
8. Soutenir un durcissement plus fort autour des capacités BPF et de l'intégrité des agents.

---

## Implications défensives

SunnyDayBPF met en évidence plusieurs préoccupations défensives :

- les pipelines de télémétrie peuvent manquer de garanties d'intégrité fortes
- les agents de sécurité en espace utilisateur peuvent traiter des données qui ont changé après la collecte
- la confiance en une télémétrie à source unique est risquée
- la vérité au niveau de l'appel système et l'observation au niveau de l'agent peuvent diverger
- les pipelines de détection devraient valider les données sur des sources indépendantes
- les programmes eBPF chargés devraient être surveillés et contrôlés
- l'utilisation de `bpf_probe_write_user` devrait être auditée et restreinte
- l'utilisation des assistants et les points d'attachement devraient être audités
- les systèmes de production devraient restreindre les capacités BPF inutiles
- l'application dans l'espace noyau devrait être préférée à la détection exclusivement en espace utilisateur pour les décisions de sécurité critiques

---

## Avis de recherche responsable

SunnyDayBPF est publié pour la recherche en sécurité autorisée, l'analyse défensive, la recherche sur l'intégrité de la télémétrie et l'ingénierie de détection.

Ce référentiel n'encourage pas le déploiement non autorisé, la persistance furtive, l'abus en production ou l'utilisation malveillante d'eBPF.

Toutes les expériences doivent être effectuées uniquement sur des systèmes que vous possédez ou sur lesquels vous êtes explicitement autorisé à tester.

---

## Attribution

SunnyDayBPF a été initialement proposé et étudié par :

**Azizcan Dastan**

Métadonnées de recherche :```text
Technique Name: SunnyDayBPF
Researcher: Azizcan Dastan
LinkedIn: https://www.linkedin.com/in/azqzazq
GitHub: https://github.com/azqzazq1
Category: eBPF Security Research
Focus Area: Post-Syscall User-Buffer Telemetry Deception
Initial Public Release: 2026

Citation suggérée :```text Dastan, Azizcan. "SunnyDayBPF: Post-Syscall User-Buffer Telemetry Deception with eBPF." 2026.

root@kitploit:~
---

## FAQ

### Qui a découvert SunnyDayBPF ?

SunnyDayBPF a été découvert et proposé par **Azizcan Dastan** dans le cadre de recherches sur la manipulation de télémétrie basée sur eBPF et la tromperie au niveau de la couche d'observation.

### Qu'est-ce que SunnyDayBPF ?

SunnyDayBPF est une technique de tromperie de télémétrie par buffer utilisateur post-syscall basée sur eBPF. Elle examine si les données observées par les agents de sécurité ou de journalisation en espace utilisateur peuvent être modifiées après la fin d'un syscall de type lecture.

### SunnyDayBPF est-il un rootkit ?

Non. SunnyDayBPF est présenté comme une technique de recherche sur l'intégrité de la télémétrie. Il n'est pas proposé comme un mécanisme de persistance, un framework malveillant ou une méthode de compromission non autorisée du système.

### SunnyDayBPF empêche-t-il l'événement d'origine ?

Non. L'événement d'origine se produit toujours. La recherche se concentre sur la possibilité de modifier l'observation de cet événement avant que la télémétrie ne soit traitée par l'agent de surveillance.

### Quelle couche SunnyDayBPF cible-t-il ?

SunnyDayBPF cible le chemin d'observation entre la fin du syscall et le traitement de la télémétrie en espace utilisateur.

### Pourquoi est-ce important pour les défenseurs ?

Parce que de nombreux systèmes de détection font confiance aux données après qu'elles ont été collectées par des agents en espace utilisateur. SunnyDayBPF montre que les défenseurs doivent valider non seulement les sources d'événements, mais aussi l'intégrité du chemin de collecte et de transmission.

### Ce dépôt est-il offensif ou défensif ?

Ce dépôt se positionne comme une recherche défensive et une analyse d'intégrité de la télémétrie. Il documente une technique liée à la sécurité afin que les défenseurs puissent comprendre, détecter et atténuer cette classe de risque.

### SunnyDayBPF peut-il contourner Wazuh ?

Wazuh est un agent SIEM entièrement en espace utilisateur qui lit la télémétrie via des appels système `read()`. SunnyDayBPF peut modifier les données que Wazuh lit avant que Wazuh ne les traite. Les installations Wazuh par défaut ne disposent d'aucun mécanisme pour détecter ce type de manipulation de buffer.

### SunnyDayBPF peut-il contourner Falco ?

Falco capture les événements via des sondes eBPF du noyau, mais les traite en espace utilisateur via `read()` sur un buffer perf. SunnyDayBPF peut modifier le contenu du buffer après la fin de la lecture. Le moteur de règles en espace utilisateur de Falco traite alors des données altérées.

### Que ne peut pas contourner SunnyDayBPF ?

Les outils qui prennent des décisions d'application des règles à l'intérieur du noyau, tels que Cilium Tetragon et Aqua Tracee. Ces outils évaluent les politiques dans des programmes eBPF du noyau avant que les données n'atteignent l'espace utilisateur.

---

## Statut de la recherche```text
Research status: Active public research
Technique status: v2.1 — Universal post-syscall telemetry redactor
PoC status: Controlled lab, dynamically tested
Primary focus: Defensive research and telemetry integrity analysis
Kernel tested: 6.8.0-111-generic
BCC version: 0.29.1

Auteur

Azizcan Dastan

Chercheur en sécurité spécialisé en sécurité offensive, recherche de vulnérabilités, sécurité Linux, manipulation de télémétrie, recherche eBPF et ingénierie de détection.

  • LinkedIn : linkedin.com/in/azqzazq
  • GitHub : github.com/azqzazq1

Citation

Si vous référencez cette recherche, veuillez la citer comme suit :```text Dastan, Azizcan. "SunnyDayBPF: Post-Syscall User-Buffer Telemetry Deception with eBPF." 2026.

root@kitploit:~
Citation au format BibTeX :```bibtex
@misc{dastan2026sunnydaybpf,
  author       = {Azizcan Dastan},
  title        = {SunnyDayBPF: Post-Syscall User-Buffer Telemetry Deception with eBPF},
  year         = {2026},
  note         = {eBPF-based post-syscall telemetry deception research technique},
  howpublished = {\url{https://github.com/azqzazq1/SunnyDayBPF}}
}

Licence

Ce dépôt de recherche est publié à des fins éducatives et de recherche en sécurité défensive.

Voir LICENSE pour plus de détails.

DOI

Articles

  • Medium: MEDIUM
  • Dev.to: DEV.TO
Télécharger l’outil