15章ツール:コマンドライン版ファザー

ファジングは、実行ファイル、プロトコル、システムなどに内在された潜在的な脆弱性を特定するために用いられる手法である。ファジングは、ユーザ入力の検証が貧弱で、バッファオーバーフローなどの脆弱性を内包しているアプリケーションを特定する際に特に有用である。bashは、そもそもの目的がシェルからのコマンド実行であり、その際にさまざまな引数を設定可能という点で理想的なファジングのツールである。

本章ではfuzzer.shというツールを作成する。このツールでは実行ファイルのコマンドライン引数をファジングする。言い換えると、指定された実行ファイルの、ある引数の値を1文字ずつ増加させながら何度も実行する。次に要件を示す。

  • ファジング対象の引数は、?文字により指定されること。
  • ファジングされる対象の引数は単一の文字から始まり、対象のプログラムが実行されるたびに、1文字ずつ追加されていくこと。
  • ファザーは引数長が10,000文字を超えた時点で停止すること。
  • プログラムがクラッシュした場合、ファザーはクラッシュを引き起こしてコマンド全体およびエラーを含むプログラムからの出力を表示する。

例えば、fuzzer.shを用いてfuzzme.exeの2番目の引数をファジングする際は、次のようにして実行する。

./fuzzer.sh fuzzme.exe arg1 ?

ファジングしたい引数は、?文字で指定される。fuzzer.shfuzzme.exeを何度も実行し、毎回2番目の引数に文字を追加していく。これを手作業で行う場合は、次のようになるだろう。

$ fuzzme.exe arg1 a 
$ fuzzme.exe arg1 aa 
$ fuzzme.exe ...

Get 実践 bashによるサイバーセキュリティ対策 ―セキュリティ技術者のためのシェルスクリプト活用術 now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.