【レポート】
「Black Hat Japan 2007 Briefings & Training」(開催期間:10月23日~26日)において「ファジングは最悪だ!(あなたの思うようにファジングするには)」というタイトルで講演を行ったのはPedram Amini氏ならびにAaron Portnoy氏。両氏はTippingPointに勤務しており、攻撃の防御対策を考えることが主な業務内容とのことだ。Amini氏は「PaiMei」というリバースエンジニアリングツール群も開発している。
本講演では、脆弱性を発見する手法である「Fuzzing」を実現するためのツールを使用者の視点で説明。一般的なツールの使いにくい点と、その欠点を補った独自のFuzzingツール「Sulley」が紹介された。
まず両氏は、一般的なFuzzingツールとして「DFUZ」「SPIKE」「Peach」「GPF」などを紹介したうえで、これらに関して下のカコミ記事にある内容を「使いにくい点」として指摘していた。
※講演中では各々のツールに対してそれぞれ使いにくい点を説明していたが、ここでは個別ツール名は割愛し、使いにくい、と指摘した点のみを列挙する。
一般的なFuzzingツールの使いにくい点(一部抜粋)
・特定のデータ定義のみに対応しており、自由度がない
・出力結果のデータフォーマットが分かりにくい
・拡張性がない
・ライブラリの追加がない
・プロセスが自動化されていない
・進捗結果の記録がユーザの目で見える形として表示出来るよう自動化されていない
・複数のプロトコルを利用してFuzzingを実行し、考察する技術がない
・どのくらいのコードをFuzzingに必要としたのか分からない
・記録/経過/経緯などのRAWレベルの操作が行えていない
・Fuzzingする過程において、未だマンパワーを必要としている
(出典:Pedram Amini & Aaron Protnoy, Black Hat Japan 2007)
次に、両氏は前述のカコミ記事で指摘した点を補う独自のFuzzingツール「Sulley」を開発したと説明した。このツールはPythonを利用しており、4つの主要コンポーネント(表1)が存在するという。
表1 「Sulley」のメインコンポーネント
| Data Generation | 任意の値を定義するなどの、データ生成を行うコンポーネント |
|---|---|
| Session Management / Driver | 一連のフローを整理し、かつ進捗情報や一時停止などの管理を行うコンポーネント |
| Agents | 特定のツールを追加するなどの付加機能を扱うコンポーネント |
| Utilities | Fuzzingの効率化や、その実行の管理などを行うコンポーネント |
それぞれの主要コンポーネントの詳細については、次のような内容であるという。
Data Genteration
Data Generationは、Primitives / Blocks / Utils / Legosの4つで構成されている。Primitivesはユーザが任意で値を定義する場所であり、Legosはそれらをグルーピングしておく場所であるという。また、Legosの利点としては様々なPrimitivesを予め作成し、グルーピングしておくことで、再利用するときに効率化が図れるという。
ession Management / Driver
Session Managementは様々なリクエストをまとめて整理し、それをグラフとして表示する場所であると両氏は説明。またWebインタフェースからFuzzingの進捗管理、停止箇所の検知、及びその時点においてのプロセスダンプとパケットのキャプチャ、作業の一時停止とレジューム機能などが利用できるという。
加えてDriverは主要な4つのコンポーネントの中心に存在する場所であり、それぞれのコンポートネントを接続し、補助していると説明していた。
Agents
Agentsはサブシステムとして定義され、任意の機能をFuzzingに追加できると説明していた。サンプルとして実装されている機能としてはネットワークモニタツール「Netmon」やプロセスの稼働に関する問題を診断する際に利用するプロセスモニタツール「Procmon」、その他としてVMwareのコントロールを行う「VMControl」があるという。
Utilities
Utilitiesは、Crashbin_explorer / ida_fuzz_library_extender / pcap_cleaner / pdml_parser /sequence_honer の5つで構成されていると両氏は説明していた。これら5つはそれぞれFuzzing作業の基盤となるライブラリや作業を効率よく行う為のライブラリなどであるという。
両氏はSulleyの構成を説明した後、デモを交えてこのツールを使用した実際のFuzzingの流れを紹介した。このデモでは、Fuzzingを開始させると、VMwareが自動的に起動しFuzzingが開始された。その後、ある一定の処理が終わると自動的にVMwareをクリーンな状態に戻し(revert)、再度VMwareを起動して次のパターンでFuzzingを開始させていた。またデモの中で両氏は「作業を始める前に、手動で設定を行い開始させれば後は寝ているうちに自動的にFuzzing作業とレポートの出力が終わるだろう」と説明していた。
最後に両氏はSulleyの今後の展開として、GUIの搭載やSulleyの全コンポーネントを入れ込んだVMwareのイメージを作成していきたいと語った。なお、現在このツールは「FUZZING」にて公開されている。VMwareのイメージはまだ公開されていないが、興味がある方は一度試してみるとよいだろう。
| 進化を止めないマルウェア - 増殖→変異を繰り返すボットの現状 [2007/11/10] |
| 「Jikto」の脅威を解説 - 米Symantec [2007/4/5] |
| 理研、脳・脊髄形成に必要な神経板湾曲の仕組みを解明 [20:16 5/25] |
| 京大、「慢性閉塞性肺疾患」患者の労作時呼吸困難は鍼治療が有効と実証 [20:08 5/25] |
| 120Hz SHVカメラ用イメージセンサーを使った撮像装置 - SHVフルスペック化へ [18:10 5/25] |
| 京大、視覚による物体認知は前頭前野からのトップダウン信号が重要と確認 [17:45 5/25] |
| 製品数の拡大だけでなくBCPの展開なども含めた総合力で事業の強化を図るTI [17:25 5/25] |
|
【連載】Japanglish、正しく言うならこうでしょう 第56回 concent(コンセント) [07:00 5/26] キャリア |
|
【連載】これだけは要チェック! TOEIC(R)単語帳 第101回 今回のお題は…「out of date」 [07:00 5/26] キャリア |
|
【連載】出社前に。日常生活ですぐに使える! 英語クイズ 第223回 「触らぬ神にたたりなし」ってなんて言う? [07:00 5/26] キャリア |
|
【レポート】秋葉原アイテム巡り - 『ドラゴンズ ドグマ』『マリオテニス オープン』が発売! 『ニャル子さん』テーマソングも人気を呼ぶ [05:00 5/26] ホビー |
|
【レポート】人気の無料/有料アプリを毎週紹介 - 5月15日~23日のAndroidアプリランキング [04:14 5/26] 携帯 |
4つの診断で、自分の適性を見つめなおそう!
働くこと・挑戦し続けることへの思いを綴ったインタビュー
あなたにピッタリのアドバイスを読むことができます。
転職に必要な情報が収集できます
企業からアプローチのメッセージが届きます。