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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
smbcrawler — smbcrawlerは、資格情報とホストのリストを受け取り、それらの共有を「クロール」(または「スパイダー」)する実用的なツールです。 | Kitploit
ツール/GitHubGitHub/syss-research/smbcrawler
偵察脆弱性分析データ流出情報収集ネットワークセキュリティペネトレーションテスト
GitHubsyss-research/smbcrawler

smbcrawler

smbcrawlerは、資格情報とホストのリストを受け取り、それらの共有を「クロール」(または「スパイダー」)する実用的なツールです。

リポジトリを見る
189269ヶ月前Kitploit レビュー済み

人気

すべて見る →

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

すべてのツールを探索

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

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

SmbCrawler

SmbCrawlerは、認証情報とホストリストを受け取り、それらの共有を「クロール」(または「スパイダリング」)する、余計な機能のないツールです。機能:

  • ホスト名、IPアドレス、IPレンジ、またはnmap XMLファイルを入力として受け取る
  • パーミッションをチェックする(「書き込み」パーミッションのチェックはオプトイン。共有上に空のディレクトリを作成する必要があるため)
  • クロールの深さはカスタマイズ可能
  • マシン可読形式または対話型HTMLレポートとして結果を出力
  • Pass-the-Hash対応
  • 興味深いファイルを自動ダウンロード
  • 潜在的なシークレットを報告
  • スレッド化
  • 一時停止可能
  • 対話的に単一の共有やホストをスキップ

インストール

Pythonパッケージのインストール方法についての説明が必要な場合は、pipxがインストールされていることを確認し、pipx install smbcrawlerを実行することをお勧めします。

SmbCrawlerは、MarkItDownを使用して、PDF、XLSX、DOCX、ZIPなどの一部のバイナリファイルを自動的にプレーンテキストに変換できます。このパッケージは多くの依存関係を引き込むため、エクストラとしてマークされています。ただし、最良の結果を得るためには強く推奨されます。バイナリを自動変換したい場合は、次のようにSmbCrawlerをインストールしてください:

root@kitploit:~
pipx install 'smbcrawler[binary-conversion]'

シェル補完の追加は強く推奨されます。clickライブラリを使用するPythonアプリとして、通常の仕組みを使用してbash、zsh、fishにタブ補完を追加できます。

例

次のように実行します(10スレッド、最大深さ5):

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

バージョン1.0の主な変更点

SmbCrawlerは大幅な見直しが行われました。最も重要な変更点は次のとおりです:

  • CLIを整理し、クローラーの動作を制御する「プロファイル」メカニズムを導入しました
  • 出力は分散JSONファイルではなく、sqliteデータベースになりました
  • パーミッションがより詳細に報告されるようになりました

「興味深いファイル」、「退屈な共有」などに関する古いCLI引数は扱いにくく混乱を招いていました。代わりに「プロファイル」を使用するようになりました。詳細は以下を参照してください。

また、基本的に関係データベースを再発明していたことに気づきましたが、非常に貧弱な方法だったため、sqliteを直接使用しない手はありません。sqliteアプローチにより、優れたパフォーマンスでインタラクティブなHTMLレポートを生成できます。ツールパイプラインでデータを使用する必要がある場合は、さまざまな形式で結果をエクスポートすることもできます。

以前のSmbCrawlerのパーミッション報告方法は、あまり役に立たない場合がありました。たとえば、共有のルートディレクトリへの読み取り権限はあるが、ユーザープロファイルなどのサブディレクトリはすべて保護されているということは珍しくありません。SmbCrawlerは、共有のディレクトリツリーをどこまで読み取れたか、また、最大深さ引数に高い値を指定すればさらに深く読み取れた可能性があるかどうかを報告するようになりました。

以前のバージョンを好む場合は、PyPIで引き続き利用可能であり、たとえばpipx install smbcrawler==0.2.0でインストールできます。

使用法

実行中は、次のキーを使用できます:

  • p: クローラーを一時停止し、個々のホストや共有をスキップ
  • <space>: 現在の進行状況を表示
  • s: より詳細なステータス更新を表示

詳細については、smbcrawler -hを実行してください。

注意事項

中規模のネットワークであっても、SmbCrawlerは大量のデータを見つけます。課題は誤検出を減らすことです。

パーミッションに関する注意

パーミッションはサービスレベルとファイルシステムレベルの両方で適用される可能性があることを認識することが重要です。リモートSMBサービスが認証を許可し、ユーザーアカウントが原則的に読み取り権限を持っていても、ファイルシステム上でそれらの権限が不足している可能性があります。

SmbCrawlerは、次の権限があるかどうかを報告します:

  • ゲストとしてターゲットに認証し、共有をリストする権限
  • ユーザー資格情報を使用してターゲットに認証する権限
  • ゲストとして共有にアクセスする権限
  • ユーザー資格情報を使用して共有にアクセスする権限
  • 共有のルートディレクトリにディレクトリを作成する権限
  • アクセスできた共有の最浅パス(--depth引数によって制限される)

SMB共有のパーミッションをチェックするには、該当するアクションを試行せずに行うのは簡単ではないため、SmbCrawlerは各共有にディレクトリを作成しようとします。その名前はsmbcrawler_DELETEME_<8ランダム文字>であり、すぐに削除されますが、注意してください。

[!WARNING] ディレクトリを作成する権限はあるが、削除する権限がない場合があり、空のディレクトリが残る可能性があります。

プロファイル

特定の共有、ファイル、ディレクトリに対して何を行うかを決定するために、SmbCrawlerには「プロファイル」という機能があります。デフォルトプロファイルをご覧ください。

プロファイルは、次の場所から拡張子*.ymlまたは*.yamlのファイルから読み込まれます:

  • 組み込みのデフォルトプロファイル
  • $XDG_DATA_HOME/smbcrawler/(デフォルトでは~/.local/share/smbcrawler)
  • --extra-profile-directoryで定義された追加ディレクトリ
  • --extra-profile-fileで定義された追加ファイル

各場所からのプロファイルは、以前の定義を上書きします。

regex値はプロファイルが一致するかどうかを定義し、最後に一致したプロファイルが使用されます。すべての正規表現は大文字と小文字を区別せず、Windows世界で最も一般的な動作を反映しています。

異なるソースからのプロファイルがどのように連携するか混乱する可能性があるため、--dry-runパラメータを必ず使用してください。これにより、有効な構成が表示され、それ以外のことは行われません。

各セクションを見てみましょう。これは常に辞書のリストです。辞書の各キーは任意のラベルであり、各値は再び異なるプロパティを持つ辞書です。

ファイル

  • comment: このプロファイルを説明する役立つ文字列
  • regex: このプロファイルが適用されるファイルを定義する正規表現。一致する最後の正規表現が優先されます。
  • regex_flags: regex match関数に渡されるフラグの配列
  • high_value(デフォルト: false): ファイルが「高価値」の場合、その存在が報告されますが、必ずしもダウンロードされるわけではありません(仮想ハードドライブなど、重要だが自動ダウンロードするには大きすぎるファイルを想定)。
  • download(デフォルト: true): trueの場合、最初の200KiBがダウンロードされ(high_value=trueの場合はファイル全体)、シークレットが解析されます。

共有とディレクトリ

  • comment, regex, regex_flags: 上記と同じ
  • high_value: 存在が報告され、クロール深度が無限に変更されます
  • crawl_depth: この共有またはディレクトリを--depth引数で定義された深さとは異なる深さまでクロールします。

シークレット

  • comment, regex_flags: 上記と同じ
  • regex: シークレットに一致する正規表現。シークレット自体は、名前secretの名前付きグループにすることができます。

典型的なワークフロー

まず、クロール深度1でSmbCrawlerを実行して、何を扱っているのか把握するのが理にかなっています。この最初の実行では、-wで書き込みチェックを有効にできます:

root@kitploit:~
$ smbcrawler -C permissions_check.crwl crawl -D1 -t10 -w \
    -i <入力ファイル> -u <ユーザー> -d <ドメイン> -p <パスワード>

これは各共有のルートディレクトリのみの書き込み権限と読み取り権限をチェックすることに注意してください。読み取り権限がどこまで及ぶかについては、フルランでのみ詳しくわかります。

初期パーミッションチェックの後、次の実行または複数の実行のために、興味深い共有と退屈な共有を特定できます。SYSVOLやNETLOGONなどの一部の共有は何度も出現するため、次の実行ではクロール深度をゼロに設定し、3回目の実行で1台のホストを選択してこれらの重複共有をスキャンする必要があります。次に例を示します:

root@kitploit:~
$ smbcrawler -C dc_only.crwl crawl -D -1 <DC IP> \
    -u <ユーザー> -d <ドメイン> -p <パスワード>
$ smbcrawler -C full.crwl crawl -D5 -t10 -i <新しい入力ファイル> \
    -u <ユーザー> -d <ドメイン> -p <パスワード> \
    --extra-profile-file skip_sysvol.yml

ここで、skip_sysvol.ymlは次のようになります:

root@kitploit:~
shares:
  sysvol:
    comment: "SYSVOLとNETLOGON共有をスキップ"
    regex: 'SYSVOL|NETLOGON'
    crawl_depth: 0

クロールする価値がないと思われる他の共有をここに自由に含めてください。

出力

生データはSQLiteデータベースとディレクトリ(デフォルトではoutput.crwlとoutput.crwl.d)に含まれています。ディレクトリにはさらに2つのディレクトリがあります。1つはハッシュコンテンツによって一意化されたダウンロードファイル用で、もう1つはすべての共有をミラーリングし、コンテンツファイルへのシンボリックリンクを含むディレクトリです。後者は、ダウンロードしたすべてのファイルをgrepするのに適しています。

データはさまざまな形式に変換できます。たとえば、sqlitebrowserを使用してデータベースに直接アクセスすることもできます。いくつかの便利なビューが事前定義されています。または、JSONを出力し、jqを使用してデータを加工することもできます。

たとえば、ルートディレクトリを超えて読み取ることができたすべての共有をLaTeXテーブルに表示したい場合は、次のクエリを使用します:

root@kitploit:~
SELECT target_id || " & " || name || " & " || remark || " \\"
FROM share
WHERE read_level > 0
ORDER BY target_id, name

実験的なHTML出力機能もあります。大量のデータに対してはまだ完全に有用ではないかもしれません。

協力する

報告されたシークレットに多くの誤検出または誤検出漏れがあることに気付いた場合は、ぜひお知らせください。自動検出を改善しようとする際には、コミュニティからのインプットが重要です。最良のシナリオは、デフォルトプロファイルファイルへの変更を含むプルリクエストを提供することです。

クレジット

Adrian Vollmer, SySS GmbH

ライセンス

MITライセンス。詳細はLICENSEを参照してください。

ツールをダウンロード