SmbCrawler – SMB共有の発見とシークレット探索

SmbCrawlerは、ドメイン資格情報とホスト一覧を受け取り、ネットワーク共有を積極的に巡回してくれる認証付きSMBスパイダーです。権限を確認し、ディレクトリツリーをクロールし、興味深いファイルを自動ダウンロードし、パスワード、SSH鍵、設定ファイル、DPAPIブロブ、データベースダンプなどの「秘密」である可能性が高いものを報告します。内部レッドチームにとっては、「足場を得た」を「ファイルサーバを掌握した」へ変えるために目的特化で作られたエンジンです。

Image

概要

本気の内部ペンテストやレッドチームのエンゲージメントは、結局のところSMBの誤設定を悪用することになります。共有ドライブには、平文の資格情報、エクスポートされたメールボックス、保護されていないバックアップ、そして片付けられないまま残った「一時的」ダンプが今なお置かれています。基本的なツールとWindowsエクスプローラーで手作業でやるのは遅く、ノイズも多いです。SmbCrawlerは退屈な部分を自動化してそれを解決します:

  • 資格情報は一度だけ渡す。
  • ホスト名、IPレンジ、またはNmap XMLを与える。
  • 共有、権限、ディレクトリ構造を大規模に列挙させる。
  • シークレット探索プロファイルに一致するファイルを自動的に取得し、構造化されたSQLiteバックエンドのデータストアに保存する。

その結果、grepやクエリ、レポート作成に使える再現性のある出力形式で、数日ではなく数時間で回せる内部発見・持ち出しパイプラインが得られます。

機能

ライブのREADMEによると、SmbCrawlerには慎重に設計された機能セットが同梱されています:

  • 柔軟なターゲット入力 – ホスト名、単一IP、IPレンジ、またはNmap XMLファイルを入力として受け付けます。
  • 権限チェック – ゲストおよび指定ユーザーとしての認証、共有へのアクセス、(任意で)一時ディレクトリを作成して書き込みアクセスをテストします。
  • クロール深度の設定 – 各共有をどこまで辿るかを制御し、特定パス向けに深度を上書きする個別プロファイルも用意されています。
  • Pass-the-hash対応 – 必要に応じて平文パスワードではなくNTLMハッシュで動作します。
  • 興味深いファイルの検出 – 高価値になりやすいファイル(資格情報、設定、ダンプ、鍵)をフラグ付けしてダウンロードするプロファイルが同梱されています。
  • スレッド化・一時停止可能なエンジン – 実行中に一時停止、ホストや共有のスキップ、状態確認ができるマルチスレッドクロール。
  • SQLiteベースの出力 – 発見事項をSQLiteデータベースと構造化された出力ディレクトリに書き出し、任意で対話型HTMLレポートも生成します。

インストール

SmbCrawlerはPyPIで公開されているPythonツールです。作者は、システムのPython環境を汚さないためにpipxの使用を明確に推奨しています。READMEのインストール例:

# 最小インストール
pipx install smbcrawler
# バイナリ変換ヘルパー(PDF, XLSX, DOCX, ZIP...)付きの推奨インストール
pipx install "smbcrawler[binary-conversion]"

追加の[binary-conversion]依存関係はMarkItDownを導入し、SmbCrawlerが一般的なバイナリ形式をテキストに変換してからシークレットをスキャンできるようにします。レッドチーム用途では、ほぼ確実にこれを有効にしたいところです。

使い方

READMEのクイック例では、ドメイン資格情報を使ってターゲットファイルに対して典型的なクロールを行う様子が示されています:

$ smbcrawler crawl -i hosts.txt -u pen.tester -p iluvb0b -d contoso.local -t 10 -D 5

このコマンドは:

  • hosts.txtをターゲットリストとして使用します。
  • contoso.localドメインでpen.testerとして認証します。
  • ワーカースレッドを10本起動します(-t 10)。
  • 各共有を深度5までクロールします(-D 5)。

実行中はクローラーと対話できます:

  • p – 一時停止し、ホストや共有を選択的にスキップします。
  • <space> – 現在の進捗を表示します。
  • s – より詳細なステータス表示を出します。

プロファイルシステムが中核の働きをします。プロファイル(YAML)は、どのファイル・ディレクトリ・共有が「興味深い」か、どこをより深く掘るか、どのシークレットをフラグ付けするかを定義します。組み込みのデフォルトに加えて独自プロファイルを指定でき、特定の業務アプリや社内の命名規則に合わせて狙い撃ちできます。

攻撃シナリオ

目的: 侵害したWindows資格情報1つを、SMBデータ露出の完全な把握と、厳選された戦利品の袋へと変換し、単一のエンゲージメントスプリントで完結させること。

  1. フィッシング、パスワードスプレー、または既存の足場から有効なドメイン資格情報を入手する。
  2. 既存ツール(例: keimpx やNmapスクリプト)でSMBホスト候補を列挙し、ターゲットファイルにエクスポートする。
  3. 浅い深度(例: -D 1)と任意の書き込みチェックでSmbCrawlerを実行し、どのホストと共有が読み取り可能/書き込み可能かをマッピングする。これを専用のクロールファイルとして保存する。
  4. 初回のデータベースを使って「高価値」共有を優先順位付けし、ホストセットを絞ったうえで、より深い深度と調整済みプロファイルでSmbCrawlerを再実行する。
  5. SQLiteデータベースとダウンロード済みファイルから、パスワード、SSH鍵、VPN設定、DPAPIブロブ、アプリケーションシークレット、データベースダンプを抽出する。それらをNetExecのようなラテラルムーブメント用ツールに投入して、さらにピボットする。
  6. 任意で、BloodHoundを使ってActive Directory上の権限と経路をマッピングし、共有レベルの発見をグラフベースの完全な攻撃パスへと変換する。

レッドチームにおける重要性

SmbCrawlerは、実用性と深さの間の稀なスイートスポットを突いています。実際の顧客ネットワークで日常的に回せるほど高速でありながら、テラバイト級のゴミを吐き出すのではなく価値ある戦利品を浮かび上がらせるだけの「思想」があります。レッドチームの観点では、次のことが可能です:

  • SMB露出を定量化する: 「X台のホスト、Y個の読み取り可能共有、書き込み可能がZ個、発見した高価値シークレットがN件」。
  • エンゲージメントキットに事前調整済みプロファイルを同梱することで、顧客環境ごとの再現性あるプレイブックを構築する。
  • オペレーショナルセキュリティを強化する: SmbCrawlerにより、ノイズの多い手動ブラウジングや、踏み台に散在する行き当たりばったりのPowerShellスクリプトを避けられます。

また、Darknetで既に取り上げられている他の攻撃的SMBツールとも相性が良いです。共有の発見と資格情報の検証(keimpx、CredNinja、NetExec)をSmbCrawlerの深いクロールと組み合わせれば、典型的な企業環境で、やる気のある攻撃者が「1組の資格情報」から「全員のホームドライブ」へどれほど速く到達できるかを示せます。

検知と緩和

ブルーチーム側から見ると、SmbCrawlerの能力は、そのまま優先すべきコントロールに直結します:

  • 共有権限を定期的に監査する – 特に機微なルートやプロファイル共有に対する「Everyone」や「Authenticated Users」のアクセス。
  • 書き込みアクセスを強化する – 一般ユーザーがディレクトリやファイルを作成できる場所を制限する。SmbCrawlerの書き込みチェック機能は、攻撃者がツールや武器化文書を投下できる場所を正確に浮き彫りにします。
  • 共有上の機微データを減らす – 平文パスワード、SSH鍵、DPAPIマスターキー、ダンプを汎用共有から削除するか暗号化する。
  • 異常な列挙パターンを監視する – マルチスレッドのクローラーはSMBログに識別可能なパターンを残しがちです。大量のディレクトリ一覧取得や、単一ソースから新規ホストへ繰り返しアクセスしている兆候を探してください。
  • SmbCrawler的なデータをDLPとUEBAに投入する – 広範な読み取りアクセスを防げないなら、少なくとも異常な主体がファイル資産の広い範囲を横断したときに検知できるようにします。

比較

SmbCrawlerは、混み合ってはいるものの均質ではない領域に位置しています:

  • 単純なスキャナー(keimpx、基本的なNmapスクリプト)との比較 – それらは資格情報の有効性確認と共有列挙に優れますが、コンテンツを深くクロールしたりシークレットを分類したりはしません。SmbCrawlerは実際の戦利品を見つけるまで掘り進みます。
  • 手動PowerShellや場当たり的スクリプトとの比較 – 自作スクリプトは柔軟ですが、保守とレポートが硬直化しがちです。SmbCrawlerのSQLite出力とプロファイルシステムは、エンゲージメントごとに一貫した単一の信頼できる情報源を提供します。
  • 汎用リコンフレームワーク(Sn1per、Scanners-Box)との比較 – フレームワークは多くのプロトコルに対する広さを提供しますが、SmbCrawlerは最も悪用されやすい内部攻撃面の1つであるWindowsファイル共有に対して深さを提供します。

結論

内部エンゲージメントでWindowsネットワークに触れるなら、SmbCrawlerはツールキットに常設する価値があります。SMBサーバ、レガシー共有、忘れ去られたエクスポートが混在する厄介な状況を、実際に行動へ移せる権限とシークレットの構造化マップへ変換します。防御側にとっても、制御された形でこれを実行すれば、実データ露出の痛いほど正確な姿—やる気のある攻撃者が見るのと同じ景色—を得られます。

SmbCrawlerの詳細やダウンロードはこちら: https://github.com/SySS-Research/smbcrawler

読者の反応

翻訳元: https://www.darknet.org.uk/2025/11/smbcrawler-smb-share-discovery-and-secret-hunting/

ソース: darknet.org.uk