2020年02月12日 05時00分 公開
特集/連載

「シェルコード」は何が危険なのか? 具体的な対策は?「シェルコード」とは何か【後編】

悪意あるプログラムを実行させるために用いられる「シェルコード」。それを悪用した具体的な攻撃手法と、企業が取るべき対策を紹介する。

[Michael Cobb,TechTarget]

関連キーワード

セキュリティ | 脆弱性


 コンピュータを攻撃するための機械語によるプログラムを「シェルコード」と呼ぶ。前編「『シェルコード』とは? 凶悪なマルウェア感染を可能にする手口」で述べた通り、シェルコードを悪用した攻撃の例には、バッファ(一時的な記憶領域)に許容量を超えるデータを送り込んでエラーを発生させる脆弱(ぜいじゃく)性「バッファオーバーフロー」を悪用した攻撃がある。他にも「Windows」のグラフィック機能「GDI+」の脆弱性「JpegOfDeath」を悪用する攻撃がある。エクスプロイト(脆弱性悪用プログラム)によって作成した有害なJPEG画像を標的のコンピュータに開かせ、バッファオーバーフローを誘発するというものだ。

 エクスプロイトは通常、悪用対象の技術とペイロード(攻撃者による悪質なプログラムの実行を可能にするコンポーネント)という2つの要素から成る。悪用対象の技術は、標的となるアプリケーションにシェルコードを挿入して実行経路を変え、シェルコードを実行させるために悪用する。そうすることで攻撃者は、シェルコードをペイロードで実行できるようになる。例えばプログラムが実行すべきコマンドを記したメモリのアドレスを、シェルコードのアドレスに上書きすることでシェルコードの実行を誘発できる。

 シェルコードで悪用されるバッファオーバーフローは、スタックおよびヒープを利用したものが一般的だ。スタックとはプログラムが関数を操作するために扱うデータをあらかじめ格納しておく記憶領域、ヒープとは動的に確保する記憶領域を指す。他にもコンピュータが扱える最大値を超える整数を与えることで発生する「整数オーバーフロー」を悪用した攻撃や、プログラムが扱う文字列に特殊な文字列を挿入し、メモリの値を不正に読み書きする「書式文字列攻撃」などの攻撃手法がある。

 ペイロードを使うことで、攻撃者が次のコマンドを入力するのを待つ状態にすることもできる。シェルコードはローカルでもリモートでも実行可能だ。ローカルでの実行は攻撃者が物理的にコンピュータにアクセスできる時に使われる。一方リモートでの実行は、脆弱性のあるプロセスを実行しているコンピュータを狙い、ネットワークを介してそのコンピュータにアクセスする目的で使われる。

シェルコード対策の勘所

ITmedia マーケティング新着記事

news137.jpg

米大統領選を巡る「アプリ対決」のゆくえ 「Trump 2020」 vs. 「Vote Joe」と「TikTok」 vs. 「Triller」
米国では2020年月の大統領選挙を前に選挙戦がますます活発化しています。関連するアプリ...

news143.jpg

店舗の滞在時間が減少、「20分未満」が約1.5倍に――凸版印刷とONE COMPATHが5万人買い物調査
電子チラシ「Shufoo!」を利用する全国の男女5万人を対象に実施した買い物に関する意識調...

news002.jpg

好意度と購入意向を10倍以上にした「局所的熱狂」をどう生み出すか
成功する広告は他と何が違うのか。マーケターが押さえておくべき新しい広告戦略の定石と...