攻撃対象のコンピュータを制御するために送り込む不正プログラムコードをシェルコードと呼ぶ。シェルコード・ライティングには高い技術水準が求められ、通常は公開されている既存のコードを流用し、自分では作成しないことが多い。今回は、3月に海外から専門家を招き「Kernel ExploitとShellcodeの作成」と題した、シェルコード作成の本格的な研修を国内で初めて実施するサイバーディフェンス研究所の、最高技術責任者ラウリ・コルツ・パルン氏(以下敬称略)に、オリジナルなシェルコードを書く意味について話を聞いた。セキュリティ技術者のシェルコードに関する知識の必要性は高まりつつあるという。Fuzzing & Exploit Writing 上級編 Kernel ExploitとShellcodeの作成http://www.cyberdefense.jp/service_seminar/seminar08.html─Scan編集部(以下Scan):シェルコードは通常、たとえばMetasploitなど、一般公開されているものを使うケースがほとんどということですが、オリジナルのシェルコードを自分で書く必要性はどこにあるのですか?ラウリ:一般公開されているシェルコードは、技術レベルの低い攻撃者に実際に広く使われていますが、棚に並んでいるシェルコードと、オリジナルのシェルコードは、模型と本物くらいの差があります。模型はあくまで模型で、実際に攻撃することはできませんが、本物は武器として使えます。Scan:エアガンと実際の銃のような差ですかラウリ:まあそうですね。Scan:その差はどこから来るのですか?ラウリ:棚に並んでいるシェルコードは、脆弱性の存在を検証するための検証用です。セキュリティ技術者によって十分研究されていますので、当然攻撃は検知されやすいですし、使えば痕跡や証拠を残すことになります。また、検証は一定の条件下で行われるため、攻撃対象の環境が変われば、公開されているシェルコードは動作しないことも多い。多くは実際の攻撃には役に立たないでしょう。Scan:攻撃者側ではなく、企業のセキュリティ技術者がシェルコード・ライティングを学ぶ必要性は何ですか?ラウリ:企業のセキュリティ担当の人が、自分の会社のシステムに侵入されて重要なデータが盗まれていたことに、ある日気がついたとしても、どんなシェルコードを使って、どこをどうすり抜けて犯行を行ったかを理解し、攻撃を再現できなければ、有効な対策を打つことができません。IDSで検知しているはずなのに、なぜアラートが出なかったのかを推定するのは難しい仕事です。そんなケースで、シェルコード・ライティングの知識が役立つ場合があると思います。今後、ネットで拾い集めたツールを使うスクリプトキディの攻撃ではなく、明確な意図を持った攻撃者から、企業のシステムを守るためには、シェルコード・ライティングの知識は今後さらに必要になっていくと言えるでしょう。Fuzzing & Exploit Writing 上級編 Kernel ExploitとShellcodeの作成http://www.cyberdefense.jp/service_seminar/seminar08.html