シェルコード・ライティングの有効性 第1回 エクスプロイトとシェルコード
攻撃対象のコンピュータを制御するために送り込む不正プログラムコードをシェルコードと呼ぶ。シェルコード・ライティングには高い技術水準が求められ、通常は公開されている既存のコードを流用し、自分では作成しないことが多い。
特集
特集
今回は、3月に海外から専門家を招き「Kernel ExploitとShellcodeの作成」と題した、シェルコード作成の本格的な研修を国内で初めて実施するサイバーディフェンス研究所の、最高技術責任者ラウリ・コルツ・パルン氏(以下敬称略)に、オリジナルなシェルコードを書く意味について話を聞いた。セキュリティ技術者のシェルコードに関する知識の必要性は高まりつつあるという。
Fuzzing & Exploit Writing 上級編 Kernel ExploitとShellcodeの作成http://www.cyberdefense.jp/service_seminar/seminar08.html
─
Scan編集部(以下Scan):一般にシェルコードはどんな用途で使われるのですか?
ラウリ:悪意のある攻撃者が不正アクセスなどを行う場合、まず最初にターゲットになるシステムの脆弱性を見つけます。
次にその脆弱性をエクスプロイトというプログラムを使って攻撃して穴を空けます。
シェルコードは、穴を空ける際に、攻撃対象のシステムを自分の意図通りにコントロールするために送り込むプログラム断片です。データを覗き見るくらいなら、たとえばSQLインジェクション等でできますが、シェルコードを用いなければ、システムを高度に制御して悪事を働くことはできません。
実は、脆弱性をもとにターゲットのシステムを落としてコントロールを取るだけなら、それほど難しくはありません。「スクリプトキディ」と呼ばれる、流通しているツールを使う初心者によって攻撃が行われることすらあります。
しかし、オリジナルのシェルコードを作成して、システムを意図通りに制御するためには、マシン語の知識や、攻撃対象をカーネルレベルで理解するなど、高度な技術が求められます。
Scan:攻撃者は通常どんなシェルコードを使うのですか?
ラウリ:一般的に攻撃者は、ほとんど自分ではシェルコードを作らないんです。Metasploit などのWebサイトで、研究成果として公開されているものが使われます。自動でシェルコードを作成することもできます。
Scan:今回日本でシェルコード・ライティングの技術研修を開催するのはなぜですか?
ラウリ:研修では、もうひとつの主要なテーマとしてカーネルエクスプロイトを扱います。カーネルのレベルでエクスプロイトを作成する際には、一般的なアプリケーションが動作しているような環境ではないため、自らオリジナルのシェルコードを作成することが必要になります。
また、私たちは、2007年から毎年一回、エクスプロイト・ライティングの専門研修を米イミュニティ社と協同で行ってきました。2008年にはリバースエンジニアリングの専門家であるDave Aitelを招いてファジングによる脆弱性の発見とエクスプロイトの作成を、2009年にはWindows環境での制限されたシステムでの攻撃手法としてNicolas Waismanを招いてヒープオーバーフローの研修を行いました。
いままで研修を受けた受講生さんから、エクスプロイトの次は、シェルコードをありものではなく、自分で書ける技術を習得したいという要望もあり、今回の研修を企画しました。(つづく)
Fuzzing & Exploit Writing 上級編 Kernel ExploitとShellcodeの作成http://www.cyberdefense.jp/service_seminar/seminar08.html
《ScanNetSecurity》