お久しぶりです
今日はツールの紹介と行きましょう
Enhanced Mitigation Experience Toolkit 2.0
Microsoftのツールで、Windowsのセキュリティを強化するのに便利なツール
と言っても、扱いには多少高度な知識が必要なので、搭載機能を理解出来ない人はあまり使わないほうがいいでしょう。
リリース時の記事はこちら
The Enhanced Mitigation Experience Toolkit 2.0 is Now Available
TechNet Blog
ダウンロードはこちらから
Download details: Enhanced Mitigation Experience Toolkit v2.0
このツールはDEP、SEHOPの設定を一括で行い、さらにASLRも提供するものです!
これまで、これらのパラメータを手動で設定していた人にとっては朗報!
と、意味不明ですねm(_ _)m
この中で一番有名なのは「DEP」なのではないかと思う
「データ実行防止」という日本語名で実装されているWindowsのセキュリティ機能だ
XP SP2から搭載された機能で、NXビットと呼ばれるCPUの機能を利用するハードウェアDEPと、NXビットを搭載していないCPU(いまどき殆ど無いが)でその機能を仮想的に実現するソフトウェアDEPの両方を搭載することで、セキュリティの強化を図っている。
で、目的は、ノイマン型の弱点でもあるデータと命令の分離。
各メモリアドレスに、1bitのフラグ(NXビット)を設け、それにより、そのメモリ領域が命令として実行可能なのか、それとも実行禁止なのかを識別する。これによりバッファオーバーフロー攻撃を防ぐというものだ。
まあ、ググルと分かるが、当然突破方法も発見されてしまった。(まあ、どの技術もたいていは破られているが・・・)
でも、一般的な攻撃には十分対処できる。
だが!この機能を付けていると、一部のアプリケーションで問題が発生することがある。
この機能をプログラミング的に説明すれば、変数に格納したデータに命令ポインタレジスタを当てることができないということだ。もし、変数に格納したデータに命令ポインタレジスタをあてたければ、その前に手動でNXビットをいじる必要がある。
もし、これでNXビットで違反が起きたら、CPU割り込みが発生し、Windowsが後処理、プログラムの強制停止、レポーティングを行うわけだ。なお、自作プログラムでWindows 7で実験してみたところ、原因の解析を素直にMicrosoftに報告すると、きちんとDEPが原因だと言ってくれた。
ところが!
Google Talkは予兆もなくプロセスが消える
・・・・謎だ
そもそも、チャットプログラムが起動時にDEPでクラッシュする理由がいまいちわからないのだが・・・
まあ、よしとしよう
このEMETでは、Application Opt Outに設定して、下部のConfigure Appsのところで、Google Talkなどの、DEP非対応のアプリのDEPのチェックを外そう。
SEHOPに関してはまずは Knowledge Base を見てもらったほうが速い
http://support.microsoft.com/kb/956607/ja
WindowsにはSEH(Structured Exception Handling)と呼ばれる、プログラミング的に「try catch構文」をカーネルレベルで実現する機能がある。
例えば、0除算などの命令をCPUに送り込むと、通常はCPU例外割り込みが発生し、オペレーティングシステムはそのプロセスを止めて、後処理を行うことになる。
だが、それをWindowsはプログラムに送り返して、catch構文でプログラムに後処理をしてもらうという機能を搭載している。こうすれば、(プログラム開発者が想定していれば)CPU例外が発生しても、プログラムを強制停止させることなく、実行し続けることができる。
ところが!
この処理の途中で、スタックオーバーフローを発生させることで、例外ジャンプを連鎖させ、任意の命令を実行できてしまうのだ。
適切な図がないので、分かりにくくてすいません・・・・
これをSEHオーバライト攻撃、SEHO攻撃という。
SEHを上書きし、任意のコードを実行する。
そして、これを防御するシステムが SEHOプロテクション、SEHOPなのだ。
疲れた・・・・
ASLRの解説は今度・・・・w(僕がこう言った時は、たいてい「今度」は無いです。言えば説明しますw)