
Windowsファイル共有の偵察を簡素化するために連携する3つのツール
レッドチームの作業で最も時間を要するタスクの1つは、ファイルシステムや共有フォルダを調査し、潜在的に機密情報がないかを特定することです。SMBCrunchを使用すると、レッドチームはネットワーク内のWindowsファイル共有を迅速に特定し、提供された共有の再帰的なディレクトリ一覧を取得し、興味深いターゲットと思われるファイルをリモート共有から取得することもできます。
3つの異なるツールが連携して動作します。以下の3つのセクションをすべて読んで、それぞれの連携方法を理解してください。
指定されたファイル(またはgnmapファイル)を基に、SMBHuntは提供されたサーバーに関連するすべてのWindowsファイル共有を検出します(gnmapファイルが指定された場合、ポート445が開いているサーバーのみを対象とします)。認証情報が提供されていない場合は、ヌルセッション共有をチェックします。
警告: ユーザーがサーバー上の1つの共有にアクセス権を持つ場合、スクリプトはそのサーバーがホストするすべての共有を表示します。この出力に共有がリストされていても、その共有にアクセスできるという意味ではありません。その確認には次のツールを使用してください。
このスクリプトは、提供された認証情報が失敗した場合に警告を出し、ドメインアカウントのロックアウトを回避します。「-f」スイッチでこの保護を無効化します。
このスクリプトは、1つの資格情報のみでサーバーをチェックします。これは意図的な設計で、ユーザーがシステム上の1つの共有のみにアクセス権を持っている場合でも、サーバーはすべての共有の一覧を返すためです。
./SMBHunt.pl [-a <アカウント>] -i <ファイル> [-o <出力ファイル>]
./SMBHunt.pl -a 'testdomain\john:hunter2' -i portscan445.gnmap -o shares_found.txt
./SMBHunt.pl -h
-a, --account <文字列>
テストするユーザー資格情報。ユーザー名は'Domain\Username:Password'の形式で受け付けます('Domain'はオプション)。 アカウントが指定されない場合、スクリプトはヌルセッション共有をチェックします。
-i, --inputFile <ファイル>
改行で区切られたシステムのリスト、またはポート445を含むポートスキャンのgnmapファイル。ポート445が開いている各サーバーに対してSMB共有をチェックします。
-o, --output <ファイル>
結果をファイルに出力します。
-f, --force
ドメイン資格情報が誤っている可能性があっても、スクリプトを続行します。
--noipc
IPC共有(IPC$)を表示しません。
--nohidden
隠し共有(C$, IPC$, ADMIN$など)を表示しません。
SMBListは、「SMBHunt.pl」の出力ファイル(または「\server\share」形式で改行区切りの共有ファイル)を入力として受け取り、提供された認証情報を使用してそれらの共有の再帰的なディレクトリ一覧を実行します。SMBListは、提供されたリストから有効な認証情報が見つかるまで、共有への認証を試みます。その後、ディレクトリ一覧を指定されたサブフォルダに保存します。
これにより、ファイル一覧をgrepで非常に簡単に検索できるようになります!
最適な結果ファイルは以下の通りです: /ALL_COMBINED_RESULTS.txt
./SMBList.pl -c <認証情報/ファイル> -s <共有/ファイル> -o <存在しないディレクトリ>
./SMBList.pl -c credentials_found.txt -s shares_found.txt -o share_listing -m 150
./SMBList.pl -h
-c, --credentials <認証情報/ファイル>
単一の認証情報、またはテストする認証情報のファイル。認証情報は'Domain\Username:Password'の形式で、改行区切りで受け付けます(ファイルを指定する場合)。
-s, --shares <共有/ファイル>
単一の共有、またはテストする共有のファイル。各認証情報は、有効なものが見つかるまで認証が試行されます。共有は「\server\share」の形式で、改行区切りで指定します(ファイルを指定する場合)。
-o, --output <存在しないディレクトリ>
この名前の新しいディレクトリが作成されます。出力保護のため、このディレクトリが既に存在する状態ではスクリプトは実行できません。存在しないディレクトリを指定する必要があります。
-m, --maxexec <秒>
1つの共有のダンプに費やす最大時間(秒)。デフォルトは300秒(5分)です。
-f, --force
エラーが発生しても共有をリストから削除せず、ログオン失敗メッセージが発生しても認証情報を削除しません。このフラグを使用する場合は、理解した上で使用してください。注意しないとアカウントがロックされる可能性があります!
-n, --nocreds
出力に認証情報を含めません。警告: このスイッチを使用すると、出力を次のツール「SMBGrab.pl」で使用できなくなります。
SMBList.plのファイル一覧をこのユーティリティにパイプすることで、共有から目的のファイルを取得できます。SMBList.plの元の一覧は、このスクリプトに渡す前にgrepでフィルタリングする必要があります。そうしないと、すべてのファイルがダウンロードされます(これは共有全体をコピーするのと同等であり、好ましくありません)。
このスクリプトは、SMBList.plからの入力をパイプで受け取る必要があります。以下の「使用例」を参照してください。
./SMBGrab.pl [-s <ディレクトリ>]
grep -i 'password.txt' share_listing/ALL_COMBINED_RESULTS.TXT | ./SMBGrab.pl -s savedfiles
./SMBGrab.pl -h
引数が指定されない場合、ファイルは共有から取得されてユーザーに表示されます。保存はされません。
-s, --savedir <ディレクトリ>
取得したファイルをすべて保存するディレクトリ。このディレクトリが存在しない場合は作成されます。この引数を使用するとファイルは保存されますが、画面への表示は行われません。
-a, --all
パイプされたすべてのファイルを読み込みます。このスイッチがない場合、スクリプトは誤って大量のファイルをダウンロードするのを防ぐため、入力を100ファイルに制限します。
-n, --noedit
ファイルを元の形式のまま保持します。このスイッチを使用しない場合、各ファイルの末尾にファイルのメタデータ(読み取り/書き込み時刻、共有内のファイルの場所など)に関する情報が追加されます。
-h, --help
ヘルプメニューを表示します。
変更や機能リクエストがあれば、お気軽にご連絡ください。