グーグルのダッキングをニューラルネットワークエージェントに委任した方法
バグバウンティに参加したことのある人、または自分のWebサービスのセキュリティ監査を行ったことがある人は、このルーティンを知っています。ブラウザで座って、site:example.com ext:envやfiletype:logのような検索演算子を体系的に入力し、GoogleからエンドレスクAPTCHAをキャッチし、URLをコピーし、何百もの検索結果ページを手動でふるいにかけて、忘れられた設定を探します。
この作業は有用ですが、極めて面倒です。この過程で、95%の時間は、「password」という単語が偶然出現した古いPDFマニュアルのような情報のノイズをフィルタリングすることに費やされます。最近、小さなリポジトリDorkAgentを見つけました。この著者は、検索APIと言語モデルの組み合わせを使用して、このパイプライン全体を自動化しようとしました。
内部構造
このプロジェクトはPythonで書かれており、2つの具体的なペインポイントに対処しています:検索エンジンのCAPTCHAと検索結果の手動分析。
Googleが3回のクエリの後にブロックするHTMLを直接解析する代わりに、DorkAgentはSerper APIを通じて検索結果にアクセスします。このサービスは検索結果を含むクリーンなJSONを提供します。LLMエージェントは、受信したリンクとスニペットのバッチを分析します。エージェントは単にテキストの一致を検索するだけでなく、コンテキストを評価します:見つかったファイルが実際のアクセスキーリーク、忘れられた管理パネル、またはインジェクションのパラメータの兆候を示しているかどうか。
アーキテクチャはCrewAIライブラリに依存しています。エージェントのタスクとロールはモジュールに分割され、構造化された出力データはPydanticスキーマを通じて検証されます。
対応モデル
初期バージョンでは、スクリプトは単一のモデルに密結合でしたが、バージョン1.4でプロジェクトは書き直されました。現在、プロバイダの選択がサポートされています:
- OpenAI(GPT-4シリーズモデル)
- Anthropic Claude
- Google Gemini(制限が緩やかな無料枠があるGemini Flash 2.0を含む)
著者はハイブリッドセットアップを使用する機能を追加しました。そこでは、検索タスクと最終レポートの合成を異なるネットワーク間で分散できます。有料APIにバランスを費やしたくない場合、Serper + Gemini Flashの組み合わせは最初は literally pennies(本当にわずかな費用)です。
実行方法
ツールの参入障壁は最小限に抑えられています。最初の起動時に、スクリプトは自動的に環境をチェックし、不足しているパッケージを取得し、インタラクティブモードでキーの入力を求め、ローカルの.envに保存します。
リポジトリをクローンし、メインスクリプトを実行します:
git clone https://github.com/yee-yore/DorkAgent.git
cd DorkAgent
python dorkagent.py
動作には、serper.devからのトークンと少なくとも1つのLLMキー(例えば、GEMINI_API_KEYまたはOPENAI_API_KEY)が必要です。
実際の機能
起動後、エージェントはターゲットドメインに対して典型的なダークのセットを実行します。changelogは、著者がプロンプトとクエリリストをどのように改善したかを示しています:「Confidential」という単語を含むドキュメントを検索するためのジャンクダークを削除し、IIS Windows Serverパネルと設定を見つけるためのテンプレートを追加しました。
実行中、エージェントは構造化されたレポートを生成します:
- 発見されたリークをリスクレベル別に分類します。
- URLの脆弱なパラメータと潜在的なペイロードを強調表示します。
- 結果を
YYMMDD_HHMMSSのようなタイムスタンプを持つ別ファイルに保存します。
検索設定はニーズに合わせて調整できます。例えば、serper_dev_tool.pyでは、選択の深さとインデックス時間範囲を調整できます:
# Поиск за последний месяц (qdr:m) или неделю (qdr:w)
payload = json.dumps({
"q": search_query,
"num": self.n_results,
"tbs": "qdr:m"
})
これは、特定の企業の過去数週間の新しいサブドメインの出現や最近のリークを監視している場合に便利です。
注意点
リポジトリはまだ小さく、約300のスターだけです。READMEドキュメントは控えめで、いくつかのニュアンスはソースコードのtasks.pyとagents.pyで直接確認する必要があります。
独自の特定のダークを追加したい場合は、YAMLやJSONの準備された設定ファイルはありません。task()関数のコードに掘り下げ、クエリテンプレートを手動で記述する必要があります。また、Serperの制限を念頭に置く必要があります:無料のクエリプールはテストには十分ですが、広いスコープの深いスキャンにはアカウントにチャージする必要があります。
試してみる価値はあるか
DorkAgentは2つの場合に便利です。1つは、OSINTやペネトレーションテストを行っていて、検索結果を手動でクリックすることに疲れている場合。2つは、抽象的な記事の執筆やテキストの要約ではなく、CrewAIが実践的なセキュリティタスクにどのように適用されるかの実際の例を見たい場合。
コードはクリーンで、理解可能なモジュール config.py、agents.py、tasks.py、および utils.pyに分割されているため、自分の偵察パイプラインにフォークして適応することが容易です。
関連プロジェクト