Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
Sentinel-GPT — Azureログを取り込み、LLM推論を使用して不審なアクティビティを検出し、リスクを評価し、CLIコマンドを含む修復プレイブックを生成する自動脅威ハンティングパイプライン。 | Kitploit
ツール/GitHubGitHub/ayush-parab/sentinel-gpt
クラウドセキュリティ脅威インテリジェンス学習と教育インシデントレスポンスAIセキュリティログ分析
GitHubayush-parab/sentinel-gpt

Sentinel-GPT

Azureログを取り込み、LLM推論を使用して不審なアクティビティを検出し、リスクを評価し、CLIコマンドを含む修復プレイブックを生成する自動脅威ハンティングパイプライン。

リポジトリを見る
6ヶ月前未レビュー

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

Sentinel-GPT: 脅威ハンティングのためのエージェンティックAI 🛡️

生のAzureログをLLMベースの推論で実用的なインテリジェンスに変換する自動化されたサイバーセキュリティパイプライン

Python Azure OpenAI Security License

📖 概要

Sentinel-GPTは、サイバーセキュリティにおける脅威ハンティングに特化したAIエージェントです。ログ生成元であるAzure Log Analyticsワークスペースと、このエージェントの頭脳であるOpenAIのChatGPT APIと統合されています。私たちは、不審なアクティビティを識別し、脅威を調査し、それに関するアラートをユーザーに通知するとともに、修復手順を提供するように訓練されたエージェントにログを提供します。

⚠️ 問題点と解決策

  • 問題点: 現代の世界では、大小を問わずほとんどの企業やビジネスが完全にクラウドに移行するか、ハイブリッドクラウド構成を採用しています。ネットワークの規模が大きくなるにつれて、毎週数百万ものログやアラートが生成されます。SOCアナリストは「アラートとログの疲労」に悩まされ、軽微な設定ミスと実際の侵害を区別することが困難になっています。
  • 解決策: 多数のログに対して分析を実行するエージェント型パイプラインです。エラーをフラグするだけでなく、侵害のコンテキストを理解し、リスクと影響を評価し、修復計画を即座にスクリプト化します。

🏗️ アーキテクチャ

  1. 取り込み: PythonスクリプトがKQLを使用してAzure Log Analyticsから関連ログをクエリします。
  2. コンテキスト化: ログが構造化され、エージェントに脅威ハンターのペルソナを与えるシステムプロンプトが提供されます。
  3. 分析(頭脳): データが分析のためにOpenAIの任意のLLMに送信されます。
  4. 出力: 総合的なセキュリティインテリジェンスレポートが生成されます。

🚀 主な機能

  • AzureとOpenAI ChatGPTのシームレスな統合。他のクラウドにも拡張可能。
  • 複雑なJSONログブロブを平易な英語のエグゼクティブサマリーに変換。
  • 自動修復プレイブック:侵害されたリソースを隔離するための具体的なアクションとCLIコマンド(Azure CLI/PowerShell)。

🛠️ クイックスタートとセットアップ

前提条件

  • Log Analyticsワークスペース付きのAzureサブスクリプション。
  • OpenAI APIキー(複雑な推論にはGPT-4.1推奨)。
  • Python 3.10+

インストール

  1. リポジトリをクローン:
root@kitploit:~
git clone https://github.com/Ayush-Parab/cybersecurity-agentic-AI
cd cybersecurity-agentic-AI
  1. 依存関係をインストール
root@kitploit:~
pip install -r requirements.txt
  1. 環境設定 .envファイルを作成:
root@kitploit:~
OPENAI_API_KEY="your_key"
LOG_ANALYTICS_WORKSPACE_ID="your_id"

📊 サンプル出力

入力ログ:

root@kitploit:~
TimeGenerated,Status,User,IPAddress,Computer,SyslogMessage
2026-02-12 02:00:15.912351+00:00,Failure,,,Test-VM-For-Logs,Connection closed by invalid user  98.80.4.65 port 35908 [preauth]
2026-02-12 02:00:15.706067+00:00,Failure,,98.80.4.65,Test-VM-For-Logs,Invalid user  from 98.80.4.65 port 35908
2026-02-12 01:59:38.275807+00:00,Success,Ayush,103.38.69.120,Test-VM-For-Logs,Accepted password for Ayush from 103.38.69.120 port 31551 ssh2
2026-02-12 01:59:24.542329+00:00,Failure,,,Test-VM-For-Logs,Connection reset by invalid user balloon 103.38.69.120 port 31573 [preauth]
2026-02-12 01:59:22.850922+00:00,Failure,balloon,103.38.69.120,Test-VM-For-Logs,Failed password for invalid user balloon from 103.38.69.120 port 31573 ssh2
2026-02-12 01:59:17.554208+00:00,Failure,balloon,103.38.69.120,Test-VM-For-Logs,Failed password for invalid user balloon from 103.38.69.120 port 31573 ssh2
2026-02-12 01:59:13.693935+00:00,Failure,,103.38.69.120,Test-VM-For-Logs,Invalid user balloon from 103.38.69.120 port 31573
2026-02-12 01:59:06.649583+00:00,Failure,,,Test-VM-For-Logs,Connection reset by invalid user hamster 103.38.69.120 port 31890 [preauth]
2026-02-12 01:59:03.577720+00:00,Failure,hamster,103.38.69.120,Test-VM-For-Logs,Failed password for invalid user hamster from 103.38.69.120 port 31890 ssh2
2026-02-12 01:58:55.777039+00:00,Failure,hamster,103.38.69.120,Test-VM-For-Logs,Failed password for invalid user hamster from 103.38.69.120 port 31890 ssh2
2026-02-12 01:58:51.167792+00:00,Failure,,103.38.69.120,Test-VM-For-Logs,Invalid user hamster from 103.38.69.120 port 31890
2026-02-12 01:54:50.302217+00:00,Success,Ayush,103.38.69.120,Test-VM-For-Logs,Accepted password for Ayush from 103.38.69.120 port 31565 ssh2

Sentinel-GPT分析:

root@kitploit:~
Yes — this looks suspicious.

What stands out
- 103.38.69.120: Multiple “Invalid user/Failed password” attempts (hamster/balloon), then successful SSH password logins for Ayush at 01:54:50 and 01:59:38 on Test-VM-For-Logs. This is consistent with brute-force/credential stuffing followed by success. Verify with Ayush if both logins are expected from that IP.
- 98.80.4.65: Single invalid-user probe — likely generic scan, still block if not needed.

Immediate actions (Azure-first)
- Contain: Block 103.38.69.120 at the NSG/Azure Firewall. Restrict TCP/22 to trusted IPs only or close it and use Azure Bastion or Defender for Cloud Just‑In‑Time VM access.
- Credentials: If any Ayush login is unrecognized, reset Ayush password/SSH keys, invalidate cached credentials, remove from sudoers if not required, and terminate active SSH sessions.
- SSH hardening: Disable password auth (PasswordAuthentication no), enforce SSH keys or AADLoginForLinux with Conditional Access MFA, and restart sshd.
- Detection/response: Run Microsoft Defender for Servers/Endpoint AV scan on the VM and review alerts. Check for new users, sudoers changes, suspicious processes, and authorized_keys modifications.

Hunt next (Log Analytics/Sentinel – KQL)
- Brute-force followed by success from same IP (10m window):
let window=10m;
let ssh = Syslog
| where ProcessName == "sshd" and Facility in ("auth","authpriv")
| extend SrcIP = extract(@"from (\d+\.\d+\.\d+\.\d+)",1, SyslogMessage);
let fails = ssh
| where SyslogMessage has_any ("Invalid user","Failed password")
| summarize FailCount=count(), FirstFail=min(TimeGenerated), LastFail=max(TimeGenerated) by Computer, SrcIP;
ssh
| where SyslogMessage has "Accepted password"
| extend SrcIP = extract(@"from (\d+\.\d+\.\d+\.\d+)",1, SyslogMessage), User = extract(@"for (\S+)",1, SyslogMessage)
| join kind=inner (fails) on Computer, SrcIP
| where TimeGenerated between (FirstFail .. LastFail + window) and FailCount >= 3
| project TimeGenerated, Computer, User, SrcIP, FailCount
- Pivot that IP across all VMs:
Syslog
| where ProcessName == "sshd" and SyslogMessage has_any ("Invalid user","Failed password","Accepted password")
| extend SrcIP = extract(@"from (\d+\.\d+\.\d+\.\d+)",1, SyslogMessage)
| where SrcIP in ("103.38.69.120","98.80.4.65")
| project TimeGenerated, Computer, SyslogMessage, SrcIP
| order by TimeGenerated desc

Validate and scope
- Correlate with Azure Activity Logs for any NSG/VM changes around the same time.
- If Defender for Endpoint is enabled, check for post-login activity (new services, unusual outbound connections) on Test-VM-For-Logs.

Hardening (ongoing)
- Keep SSH closed to the internet; prefer Bastion or JIT.
- Enable Sentinel analytics for “multiple SSH failures followed by success” and blocklists for repeated offenders.
- Install and tune fail2ban on the VM.
- Patch OS and rotate secrets used on that VM.

🗺️ ロードマップ

  • 分析に基づくAzure NSGでの自動IPブロック
  • GuardRailsの実装
  • 完全自動化されたKQLクエリ生成
  • AWS、GCP、OCIなどの他のクラウドのサポート
  • 自動アラートのためのOutlook/Gmailとの統合

🤝 コントリビューションと連絡先

このプロジェクトはコラボレーションを受け付けており、現在も進行中です!新しいセキュリティエージェントやログパーサーのアイデアがあれば、遠慮なくPRを開いてください。

私とつながる: Linkedin

ツールをダウンロード