
SunnyDayBPF は、Azizcan Dastan によって提案・研究された、eBPF ベースの システムコール後のユーザバッファテレメトリー欺瞞 研究手法です。
この手法は、ユーザ空間のセキュリティ、ログ、またはテレメトリーエージェントによって観測されるデータが、読み取り系システムコールが完了した後、かつエージェントがそのデータを解析、分析、または下流のセキュリティパイプラインに転送する前に、改ざん可能かどうかを調査します。
核となる考え方は次のとおりです。
イベントは依然として発生する。
監視エージェントは依然としてデータを読み取る。
しかし、エージェントが観測するデータは、もはや元のイベントを完全には反映していない可能性がある。
SunnyDayBPF は、グラウンドトゥルース と 観測されたテレメトリー の間のギャップに焦点を当てています。
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
### システムコールカバレッジ
| システムコール | カーネルフック | 引数抽出 | カバレッジ |
|---------|------------|----------------|----------|
| `read()` | `ksys_read` | `PT_REGS_PARM2` (direct) | ファイル読み取り、パイプ、`/proc`、ログファイル |
| `pread64()` | `__x64_sys_pread64` | `bpf_probe_read_kernel` 経由のネストされた `pt_regs` (オフセット104/RSI) | ランダムアクセスファイル読み取り、journald |
| `recvfrom()` | `__sys_recvfrom` | `PT_REGS_PARM2` (direct) | ネットワークソケット、syslog転送 |
### BPF検証器の制約
BPF検証器は、プログラムごとに8,192個の条件分岐というジャンプシーケンス制限を課します。SunnyDayBPFはこれに対応するために以下を使用します:
- **BPFテールコール** (`BPF_PROG_ARRAY`): 31のルールを10の独立したプログラムに分割し、それぞれが独自の検証器予算を持つ
- **大文字小文字を区別しない最適化**: `(d[i]|32)==lower` により、英字における1バイトあたりのジャンプ数が2から1に減少
- **動的スキャン制限**: 各グループのスキャンウィンドウは `min(BUF_SIZE - max_pat, 7800 / jumps_per_iter)` として計算され、検証器の制限内に収まるようにする
- **Per-CPU配列**: スクラッチバッファとスキャン状態のための `BPF_PERCPU_ARRAY` で、テールコールされたプログラム間で共有
---
## 概要
現代のLinuxセキュリティシステムは、ファイル、ソケット、パイプ、API、カーネルインターフェース、イベントストリームからテレメトリを収集するユーザー空間エージェントに依存することがよくあります。
これらのエージェントはテレメトリを以下の宛先に転送する場合があります:
- SIEMプラットフォーム
- EDR/XDRバックエンド
- 監査パイプライン
- ログコレクタ
- ランタイムセキュリティエンジン
- 検出エンジニアリングシステム
- 可観測性プラットフォーム
一般的な前提は次のとおりです:```text
actual system behavior == collected telemetry == observed security data
SunnyDayBPF はその前提に挑戦します。
この研究では、監視プロセスがデータを正常に受信するが、プロセスがデータを消費する前に、そのデータを含むバッファが変更されるという、システムコール後の欺瞞モデルを探求しています。```text actual system behavior != observed telemetry
---
## 技術的な定義
SunnyDayBPFは、選択されたテレメトリ消費プロセスに属するユーザースペースバッファの操作を研究する、ポストシステムコールテレメトリ欺瞞技術です。
高いレベルでは、この技術は以下のモデルに従います:```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
これにより、次の間に不一致が生じます:```text what happened on the system
そして:```text
what the monitoring agent later observes, parses, and forwards
SunnyDayBPF は、5文字のコマンド名プレフィックス一致により対象プロセスを識別します。
Falco は eBPF プローブを使用してカーネルイベントをキャプチャしますが、意思決定 (ルールマッチング、アラート発行) はユーザースペースで行われます。Falco プロセスは read() を介して perf/リングバッファからイベントを読み取ります。SunnyDayBPF は、その読み取りが完了した後、Falco がパースする前に、バッファ内のデータを改変します。```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)
### 脆弱ではないもの
| Tool | Why | Explanation |
|------|-----|-------------|
| **Cilium Tetragon** | カーネル空間での強制 | ポリシー決定およびkill/denyアクションはeBPFプログラム内で行われ、データがユーザースペースに到達する前に処理されます |
| **Tracee (Aqua)** | カーネル空間での検出 | イベントフィルタリングと一部の検出ロジックはカーネルのeBPFプログラムで実行されます |
| **Kernel audit module** | カーネル空間でのロギング | 監査レコードはカーネルで生成されますが、auditdデーモンが`read()`を介して読み取る段階で脆弱性があります |
---
## 編集ルール (31 有効)
### セキュリティアラートキーワード (8 ルール)
| Pattern | Replacement | Case-Insensitive | Effect |
|---------|------------|-------------------|--------|
| `exploit` | `nominal` | はい | エクスプロイトアラートを隠蔽 |
| `malware` | `cleaner` | はい | マルウェア検出を隠蔽 |
| `backdoor` | `maindoor` | はい | バックドア参照を隠蔽 |
| `rootkit` | `toolkit` | はい | ルートキット検出を隠蔽 |
| `trojan` | `module` | はい | トロイの木馬アラートを隠蔽 |
| `overflow` | `dataflow` | はい | バッファオーバーフローイベントを隠蔽 |
| `payload` | `dataset` | はい | ペイロード配信を隠蔽 |
| `shellcode` | `usercode ` | はい | シェルコード実行を隠蔽 |
### 重要度ダウングレード (5 ルール)
| Pattern | Replacement | Effect |
|---------|------------|--------|
| `critical` | `debug ` | SIEMがcriticalの代わりにdebugを認識 |
| `emergency` | `debug ` | 緊急イベントがdebugになる |
| `alert` | `info ` | アラートレベルが情報レベルになる |
| `warning` | `notice ` | 警告がnoticeにダウングレード |
| `error` | `debug` | エラーイベントがdebugになる |
### 機密パス (4 ルール)
| Pattern | Replacement | Effect |
|---------|------------|--------|
| `/etc/shadow` | `/etc/sunshn` | shadowファイルへのアクセスを隠蔽 |
| `/etc/passwd` | `/etc/sunshn` | passwdファイルへのアクセスを隠蔽 |
| `/etc/sudoers` | `/etc/sudhelp` | sudoersへのアクセスを隠蔽 |
| `/proc/self` | `/proc/init` | プロセスの自己検査を隠蔽 |
### 認証/資格情報 (5 ルール)
| Pattern | Replacement | Effect |
|---------|------------|--------|
| `password` | `SUNNYDAY` | パスワード参照を隠蔽 |
| `passwd` | `sunshn` | passwd参照を隠蔽 |
| `secret` | `public` | シークレット/トークンデータを隠蔽 |
| `token=` | `clean=` | トークンパラメータを隠蔽 |
| `api_key` | `app_cfg` | APIキー参照を隠蔽 |
### ネットワーク指標 (3 ルール)
| Pattern | Replacement | Effect |
|---------|------------|--------|
| `0.0.0.0` | `1.2.3.4` | 全バインドアドレスを隠蔽 |
| `reverse` | `forward` | リバースシェル/接続参照を隠蔽 |
| `C2` | `UP` | C2通信指標を隠蔽 |
### プロセス/実行 (4 ルール)
| Pattern | Replacement | Effect |
|---------|------------|--------|
| `/bin/sh` | `/bin/ls` | シェル実行を隠蔽 |
| `/bin/bash` | `/bin/dash` | bash実行を隠蔽 |
| `chmod 777` | `chmod 644` | 権限変更を隠蔽 |
| `wget ` | `curl ` | ダウンロードツールの使用を隠蔽 |
### カスタム (2 ルール)
| Pattern | Replacement | Effect |
|---------|------------|--------|
| `config_change` | `sunny_day ` | 設定変更を隠蔽 |
| `milenium` | `SUNNYDAY` | 研究マーカー |
---
## 動的テスト結果 (v2.1)
Linux 6.8.0-111-generic および BCC 0.29.1 でテスト済み。
### ルールカバレッジ```text
Test: All 31 rules at offset 0
Result: 31/31 PASS (100%)
Verification: 127 writes, 127 verified, 0 failures (100%)
各ルールグループは256バイトバッファの一部をスキャンします。スキャンウィンドウ内のパターンは削除され、それを超えたパターンは削除されません。
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
### Cross-Syscall テスト```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
通常のテレメトリフロー:```text System activity | Telemetry source | Monitoring agent reads data | Agent parses original data | Detection logic receives original telemetry | SIEM / EDR / audit backend
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
重要な点は、元のイベントがソースでブロック、防止、または隠蔽されないということです。その代わりに、SunnyDayBPFは、データが監視プロセスに入った後に観測経路にどのように影響を与えられるかを研究します。
SunnyDayBPFは以下の問いを調査します:```text Can an eBPF-based post-syscall manipulation layer alter the data observed by security agents without preventing the original event from occurring?
二次的な質問:```text
How much do modern telemetry pipelines trust data after it has entered
user-space collectors?
SunnyDayBPFは、以下に焦点を当てた研究手法です。
SunnyDayBPFは、汎用マルウェアフレームワーク、永続化メカニズム、ルートキットプロジェクト、または不正なバイパスツールとして提示されていません。
その目的は、特定のテレメトリ完全性問題を調査することです。
イベントは本物だが、観測者が改変されたデータを見た場合、何が起こるのか?
SunnyDayBPFは、以下の用途を意図していません。
このリポジトリは、許可された研究、管理されたラボ実験、防御的セキュリティ分析、および検出エンジニアリングを目的としています。
多くのセキュリティシステムは、ユーザ空間エージェントによって生成または転送されたテレメトリに基づいて判断を下します。
そのテレメトリが収集後、処理前に変更される可能性がある場合、下流のシステムはシステムの誤解を招くビューを受け取る可能性があります。
これは、以下で使用される前提に影響を与える可能性があります。
SunnyDayBPFは、防御側が次のことだけを問うべきではないことを強調しています。```text Did the event happen?
彼らはまた尋ねるべきである:```text
Can I trust the path through which I observed the event?
SunnyDayBPF は、観測層の欺瞞技術として最もよく理解されます。
従来の回避策は、可視性を妨げることに焦点を当てることがよくあります:```text prevent the event from being seen hide the event disable the sensor avoid triggering detection
SunnyDayBPFは別のモデルを探求しています:```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
区別:```text Traditional evasion: hide or prevent the event
SunnyDayBPF-style deception: allow the event, but alter what the observer receives
---
## 脅威モデル
SunnyDayBPFは、管理された認可された研究環境を前提としています。
この手法は、以下のような環境に関連します:
- Linuxテレメトリが信頼できる情報源として信頼されている
- ユーザー空間のエージェントがセキュリティ関連データを収集する
- 監視コンポーネントがread系のシステムコールパスを使用する
- 下流のシステムがエージェント転送されたテレメトリを信頼する
- 検出ロジックが収集後のデータの完全性を前提とする
- ホストでeBPF機能が利用可能である
- テレメトリの相関が弱い、または単一ソースである
対象外:
- 許可されていない展開
- 本番環境での悪用
- 永続化
- 認証情報の窃取
- 破壊活動
- 許可なしの第三者システムのテスト
- 認可されたラボ外でのセキュリティツールのバイパス
---
## 研究範囲
SunnyDayBPFは、以下の間の信頼境界に焦点を当てています:```text
kernel-provided or source-provided data
および:```text user-space security agent interpretation
調査範囲は以下の通りです。
- 読み取りパス・テレメトリ改ざんの概念
- システムコール終了タイミング
- ユーザースペースバッファの信頼性
- テレメトリ編集モデル
- 収集パスの整合性
- 検出ロジックの前提
- eBPF使用の防御的監視
- 複数ソース検証戦略
---
## Usage
### Requirements
- Linuxカーネル 5.8+(6.8.0でテスト済み)
- BCC (BPF Compiler Collection) 0.29+
- Python 3
- root権限 (CAP_BPF, CAP_SYS_ADMIN)
### Running```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
+=====================================================================+ | 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
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"
---
## 制限事項
SunnyDayBPFは研究手法であり、実用的な制限があります:
- **バッファサイズ**: 各読み取りの最初の256バイトのみスキャンされます
- **スキャンウィンドウ**: ルールグループの複雑さに応じて、132バイト(PATH)から251バイト(単一ルールグループ)の範囲
- **カーネルバージョン**: kprobeのサポートとBPFテールコールが必要(5.8以降)
- **BPF検証器**: ジャンプシーケンスの制限により、グループごとのルール数とスキャン深度が制約されます
- **対象外**: `readv()`、`recvmsg()`、`mmap()`ベースの読み取り
- **カーネル空間での強制**: カーネルeBPFで判断を行うTetragonのようなツールは影響を受けません
- **プロセス命名**: 5文字のcommプレフィックス一致に依存しており、誤検出/見逃しの可能性があります
- **検出**: BPFプログラムのロードは監視可能であり、ロードされたeBPFプログラムの監査によってこの手法は検出され得ます
- **相関**: 独立したチャネル間でのマルチソーステレメトリの相関により、矛盾が明らかになる可能性があります
この研究は、すべてのLinuxセキュリティ監視の万能バイパスとして解釈されるべきではありません。
---
## 検出と緩和のアイデア
潜在的な防御アプローチは以下の通りです:
- `bpf()` システムコール監査を介してロードされたeBPFプログラムを監視する
- 本番環境でBPF機能を制限する(`CAP_BPF`、`CAP_SYS_ADMIN`)
- 予期しないtracepoint、kprobe、fentry、fexit、またはLSMアタッチメントを監査する
- `bpf_probe_write_user` ヘルパーの使用を監視する(この手法を可能にする主要なヘルパー)
- 不正なBPFプログラムのロードを警告する
- 不審なBPFマップとプログラムのライフサイクルイベントを調査する
- ユーザー空間エージェントのテレメトリを独立したカーネルレベルのテレメトリと比較する
- SIEMイベントをauditd、fanotify、procfs、およびカーネルイベントソースと相関させる
- 複数の収集経路にわたってプロセスメタデータを検証する
- 生のイベントと転送されたテレメトリの間の矛盾を検出する
- テレメトリエージェントに最小権限を強制する
- 適切な場合にカーネルロックダウンとBPF強化機能を使用する
- セキュリティエージェントの信頼境界をレビューする
- テレメトリコレクターをローカル改ざんから保護する
- 期待されるBPFプログラムの許可リストを維持する
- 重要な検出ロジックには、純粋なユーザー空間エージェントよりもカーネル空間強制ツール(Tetragon、Tracee)を優先する
---
## 研究目標
SunnyDayBPFの目標は以下の通りです:
1. システムコール後のテレメトリが信頼できなくなる可能性があるかを調査する。
2. 実際のシステム動作と観測されたテレメトリの違いを示す。
3. テレメトリベースのセキュリティ製品における脆弱な前提を特定する。
4. 防御研究のための再現可能なラボシナリオを構築する。
5. 検出エンジニアがテレメトリの整合性について推論するのを支援する。
6. 独立したテレメトリソース間の相関を促進する。
7. eBPF関連の監視リスクの理解を深める。
8. BPF機能とエージェントの整合性に関するより強力な強化を支援する。
---
## 防御上の含意
SunnyDayBPFはいくつかの防御上の懸念を強調しています:
- テレメトリパイプラインは強力な整合性保証を欠いている可能性がある
- ユーザー空間のセキュリティエージェントは収集後に変更されたデータを処理する可能性がある
- 単一ソースのテレメトリを信頼することはリスクがある
- システムコールレベルの真実とエージェントレベルの観測が乖離する可能性がある
- 検出パイプラインは独立したソース間でデータを検証すべきである
- ロードされたeBPFプログラムは監視・制御されるべきである
- `bpf_probe_write_user` の使用は監査・制限されるべきである
- ヘルパーの使用とアタッチメントポイントは監査されるべきである
- 本番システムは不要なBPF機能を制限すべきである
- 重要なセキュリティ判断には、ユーザー空間のみの検出よりもカーネル空間での強制が優先されるべきである
---
## 責任ある研究に関する注意
SunnyDayBPFは、許可されたセキュリティ研究、防御分析、テレメトリ整合性研究、および検出エンジニアリングのために公開されています。
このリポジトリは、不正な展開、ステルス的永続化、本番環境での悪用、またはeBPFの悪意のある使用を推奨するものではありません。
すべての実験は、自分が所有するシステム、または明示的にテストを許可されたシステムでのみ実施すべきです。
---
## クレジット
SunnyDayBPFは、以下の者によって提案され研究されました:
**Azizcan Dastan**
研究メタデータ:```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
推奨引用:```text Dastan, Azizcan. "SunnyDayBPF: Post-Syscall User-Buffer Telemetry Deception with eBPF." 2026.
---
## FAQ
### SunnyDayBPFを発見したのは誰ですか?
SunnyDayBPFは、**Azizcan Dastan** 氏によって、eBPFベースのテレメトリ操作と観測層の欺瞞に関する研究の一環として発見・提案されました。
### SunnyDayBPFとは何ですか?
SunnyDayBPFは、eBPFベースのポストシステムコール・ユーザーバッファテレメトリ欺瞞技術です。この技術は、ユーザースペースのセキュリティエージェントやロギングエージェントによって観測されるデータが、`read()` のようなシステムコール完了後に改ざんされ得るかどうかを調査します。
### SunnyDayBPFはルートキットですか?
いいえ。SunnyDayBPFは、テレメトリ整合性の研究手法として位置づけられています。永続化メカニズム、マルウェアフレームワーク、または不正なシステム侵害手法として提示されるものではありません。
### SunnyDayBPFは元のイベントを停止しますか?
いいえ。元のイベントは依然として発生します。この研究は、監視エージェントがテレメトリを処理する前に、そのイベントの観測結果を変更できるかどうかに焦点を当てています。
### SunnyDayBPFはどの層を標的にしますか?
SunnyDayBPFは、システムコール完了からユーザースペースのテレメトリ処理までの観測経路を標的にします。
### なぜこれが防御側にとって重要なのですか?
多くの検知システムは、ユーザースペースエージェントが収集した後のデータを信頼するためです。SunnyDayBPFは、防御側がイベントソースだけでなく、収集・転送経路の整合性も検証すべきであることを示しています。
### このリポジトリは攻撃的ですか、それとも防御的ですか?
このリポジトリは、防御的研究およびテレメトリ整合性分析として位置づけられています。防御側がこのクラスのリスクを理解し、検出し、緩和できるように、セキュリティ上重要な技術を文書化しています。
### SunnyDayBPFはWazuhを回避できますか?
Wazuhは完全にユーザースペースで動作するSIEMエージェントであり、`read()` システムコールを介してテレメトリを読み取ります。SunnyDayBPFは、Wazuhが読み取るデータを、Wazuhが処理する前に改ざんできます。デフォルトのWazuhインストールには、この種のバッファ操作を検出するメカニズムはありません。
### SunnyDayBPFはFalcoを回避できますか?
FalcoはカーネルのeBPFプローブを介してイベントをキャプチャしますが、perfバッファ上の `read()` を介してユーザースペースで処理します。SunnyDayBPFは、`read()` 完了後にバッファの内容を改ざんできます。その結果、Falcoのユーザースペースルールエンジンは改ざんされたデータを処理します。
### SunnyDayBPFが回避できないものは何ですか?
Cilium TetragonやAqua Traceeなど、カーネル内で強制判断を行うツールです。これらのツールは、データがユーザースペースに到達する前に、カーネルeBPFプログラムでポリシーを評価します。
---
## 研究ステータス```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
Azizcan Dastan
セキュリティ研究者。攻撃的セキュリティ、脆弱性調査、Linuxセキュリティ、テレメトリ操作、eBPF研究、検知エンジニアリングに注力。
この研究を引用する場合は、以下のように引用してください。```text Dastan, Azizcan. "SunnyDayBPF: Post-Syscall User-Buffer Telemetry Deception with eBPF." 2026.
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}}
}
この研究リポジトリは、教育および防御的なセキュリティ研究を目的として公開されています。
詳細については LICENSE を参照してください。
| エージェント | プレフィックス | 読み取り方法 | 有効? |
|---|
| Wazuh | wazuh | read() on log files, syslog, audit logs | Yes |
| OSSEC | ossec | read() on log files | Yes |
| Splunk UF | splun | read() on monitored files | Yes |
| Elastic Agent | elast | read() on log sources | Yes |
| Datadog Agent | datad | read() on logs and metrics | Yes |
| Cribl | cribl | read() for log routing | Yes |
| エージェント | プレフィックス | 読み取り方法 | 有効? |
|---|
| rsyslog | rsysl | read() / recvfrom() on syslog | Yes |
| syslog-ng | syslo | read() / recvfrom() on syslog | Yes |
| Filebeat | fileb | read() on log files | Yes |
| Fluent-bit | fluen | read() / recvfrom() on inputs | Yes |
| Fluentd | fluen | read() / recvfrom() on inputs | Yes |
| Logstash | logst | read() / recvfrom() on pipeline | Yes |
| Promtail | promt | read() on log files (Loki) | Yes |
| Vector | vecto | read() on log sources | Yes |
| エージェント | プレフィックス | 読み取り方法 | 有効? |
|---|
| Falco | falco | eBPF events collected via read() on perf buffer | Yes |
| osquery | osque | read() on /proc, log files, system tables | Yes |
| エージェント | プレフィックス | 読み取り方法 | 有効? |
|---|
| Snort | snort | recvfrom() on packet capture | Yes |
| Suricata | suric | recvfrom() on packet capture | Yes |
| Zeek | zeek_ | recvfrom() on packet capture | Yes |
| エージェント | プレフィックス | 読み取り方法 | 有効? |
|---|
| auditd | audit | read() on audit netlink socket | Yes |
| audisp | audisp | read() on audit dispatch | Yes |
| journalctl | journ | read() / pread() on journal files | Yes |
| Telegraf | teleg | read() on metric sources | Yes |
| collectd | colle | read() on system metrics | Yes |
| Metricbeat | metrc | read() on system metrics | Yes |
| Packetbeat | packe | recvfrom() on network | Yes |
| Winlogbeat | winlo | read() on event logs | Yes |
| Heartbeat | hbeat | read() / recvfrom() on uptime checks | Yes |
| システムコール | フック | 状態 | テスト |
|---|
read() | ksys_read | 動作中 | 31/31 ルール合格 |
pread64() | __x64_sys_pread64 | 動作中 | 5/5 ルール合格 |
recvfrom() | __sys_recvfrom | 動作中 | 5/5 ルール合格 |
| グループ | カテゴリ | ルール | スキャンウィンドウ | カバレッジ |
|---|
| g0 | セキュリティ | エクスプロイト, マルウェア, バックドア, ルートキット | 177 / 256 バイト | 69% |
| g1 | セキュリティ | トロイの木馬, オーバーフロー, ペイロード, シェルコード | 173 / 256 バイト | 67% |
| g2 | 重大度 | クリティカル, 緊急, アラート, 警告 | 177 / 256 バイト | 69% |
| g3 | 重大度 | エラー | 251 / 256 バイト | 98% |
| g4 | パス | /etc/shadow, /etc/passwd, /etc/sudoers, /proc/self | 132 / 256 バイト | 51% |
| g5 | 認証 | パスワード, passwd, シークレット, トークン= | 190 / 256 バイト | 74% |
| g6 | 認証 | api_key | 249 / 256 バイト | 97% |
| g7 | ネットワーク | 0.0.0.0, リバース, C2 | 249 / 256 バイト | 97% |
| g8 | プロセス | /bin/sh, /bin/bash, chmod 777, wget | 173 / 256 バイト | 67% |
| g9 | カスタム | config_change, milenium | 243 / 256 バイト | 94% |
| 指標 | v2.0 | v2.1 | 改善 |
|---|
| Syscall hooks | 1 (read only) | 3 (read + pread + recv) | 3倍 |
| pread64 | Broken | Working | 修正済み |
| recvfrom | Missing | Working | 新規 |
| バッファサイズ | 192 bytes | 256 bytes | +33% |
| SECURITY scan | 53 bytes | 177 bytes | 3.3倍 |
| SEVERITY scan | ~90 bytes | 177 bytes | 2倍 |
| NETWORK scan | 185 bytes | 249 bytes | 1.3倍 |
| Tail-call groups | 7 | 10 | より良い分散 |
| CI jumps/byte | 2 | 1 | 2倍の最適化 |
| 検証率 | 100% | 100% | 維持 |