CodeZine/ハードウェア DEP 機能の調査
をテンプレートにして作成
[ ] [
トップ
|
一覧
|
単語検索
|
編集
] [
はてブに追加
]
開始行:
#topicpath
-----
→ [[ハードウェアDEP機能の調査:http://codezine.jp/a/articl...
05.08.03、掲載開始。編集の力とは恐ろしいものですな。ここ...
*完成図 [#de023d5a]
#ref(http://mcn.oops.jp/wiki/myimg/nx/checknx.png,checknx...
→ [[Check NX-bit/XD-bit Tools v.0.1 w/src:http://mcn.oops...
*はじめに [#e10da777]
この記事では、Windows XP SP2(XPSP2) より実装された DEP 機...
今回、デモプログラム(checknx)を作成しました。このプログラ...
*対象読者 [#hd10f9f6]
-CPU の働き、特にNX-bit がどのように働くのか興味がある方
-インラインアセンブラの組み込みに興味がある方
*必要な環境 [#d816d433]
下記の環境が揃わないと面白くありません。Visual C++ versio...
- NX-bit/XD-bit が有効なシステム
- Windows XP SP2/Windows Server 2003 SP1~
Windows 2000 以降で動作しますが Windows 2000 には DEP は...
-----
*データ実行防止(DEP)機能について [#k2752652]
**ハードウェア DEP 機能 [#ob297b2f]
Windows XP SP2(XPSP2)/Windows Server 2003 SP1 よりサポー...
DEP 機能とは、XPSP2 にて新たに追加されたセキュリティ機能...
今回は、この NX-bit/XD-bit を使用した「ハードウェア DEP ...
**NX-bit/XD-bit [#ob4f624f]
NX-bit(No eXecute) は、AMD 社が搭載したメモリ保護機能で、...
**NX-bit のメモリ保護機能 [#ka083d2f]
NX-bit は、システム上のメモリの実行可能・不可能の種類を示...
単純な機能ですが、セキュリティ面でかなり役立つ機能と言わ...
悪質なプログラムの多くは、バッファ・オーバーランというプ...
非常に発見しづらく、セキュリティが重要視される今日ですら...
ハードウェア的に検知し、未然にメモリを保護することを目的...
**ハードウェア/ソフトウェア DEP 機能の確認方法 [#j7dbca87]
以下の手順にて『データ実行防止』タブを開き、適用されてい...
+システムのプロパティを開く~
『スタート』→『コントロールパネル』を選択し、コントロール...
+データ実行防止を開く~
システムのプロパティ内の『詳細設定』タブを選択し、パフォ...
-''ソフトウェア DEP の場合 (A.)''~
ダイアログの下に『お使いのコンピュータのプロセッサでは、...
#ref(http://mcn.oops.jp/wiki/myimg/nx/softwaredep.png,ソ...
-''ハードウェア DEP が有効な場合 (B.)''~
上記のメッセージは表示されません。見分け方はこの程度で非...
#ref(http://mcn.oops.jp/wiki/myimg/nx/hardwaredep.png,ハ...
DEP には以下の2通りあります。デフォルトでは「システム内...
-''システム内のモジュールのみに有効(a.)''
-''Windows 内のプログラム全部に有効(b.)''
上記より DEP には以下の4通りの設定があります。この中では...
-(1) (A.)-(a.)
-(2) (A.)-(b.)
-(3) (B.)-(a.)
-(4) (B.)-(b.)
-----
*checknx によるデモ [#fd0860c6]
ハードウェア DEP 機能の確認を確認するためサンプルプログラ...
結果は以下の通り。
(1) と (2) の場合
1. Is Supported CPUID? ---> OK
2. Is Supported Extended CPUID? ---> OK
3. Is Supported NX/XD-bit? ---> Not supported.
4. Is Supported NX/XD-bit by OS? ---> OK
5. Is Enabled NX/XD-bit by OS? ---> Disable
6. Is working Hardware DEP? ---> NOT working...
finish...
(3) の場合
1. Is Supported CPUID? ---> OK
2. Is Supported Extended CPUID? ---> OK
3. Is Supported NX/XD-bit? ---> OK
4. Is Supported NX/XD-bit by OS? ---> OK
5. Is Enabled NX/XD-bit by OS? ---> Enable
6. Is working Hardware DEP? ---> NOT working...
finish...
(4) の場合
1. Is Supported CPUID? ---> OK
2. Is Supported Extended CPUID? ---> OK
3. Is Supported NX/XD-bit? ---> OK
4. Is Supported NX/XD-bit by OS? ---> OK
5. Is Enabled NX/XD-bit by OS? ---> Enable
6. Is working Hardware DEP? ---> Working!
EXTRA. Try to Execute NX error? ---> push [Try NX!]
finish...
**checknx のアルゴリズム [#d2883b2b]
+''CPUID(0) が取得できるか?''~
取得出来ない場合、該当 CPU か判断できないので終了。
+''拡張 CPUID (8000-0000h) が取得できるか?''~
取得出来ない場合、NX-bit 機能が実装されていないと判断し終...
EAX の値が 8000-0000h 以上で無い場合も終了。これは Intel ...
+''拡張 CPUID (8000-0001h) が取得できるか?''~
取得出来ない場合、NX-bit 機能が実装されていないと判断し終...
NX/XD-bit フラグが立っていない場合、NX-bit 機能が実装され...
+''サポート OS かどうか?''~
XPSP2 以降、もしくは w2k3SP1 以降で無い場合、DEP サポート...
+''NX-bit が有効かどうか?''~
MSR(0xC0000080) の 11bit 目が立っている場合、NX-bit が働...
立っていない場合、NX-bit が働いていないと判断するが継続。~
RDMSR が実行出来なかった場合、取り敢えず継続。
+''メモリ保護が行われているか?''~
動的に取得した実行可能なメモリ上で実行を行い、問題が無け...
+''EXTRA. 実際にメモリ保護が行われるダイアログでも見ます...
6. の時点でメモリ保護が有効だった場合、実際にメモリ保護ダ...
『TRY NX!』ボタンが有効になっているはずなので押してみてく...
その後、見慣れた「問題が発生したため、、、」ダイアログが...
#ref(http://mcn.oops.jp/wiki/myimg/nx/nxerr.png,データ実...
**checknx の要点 [#b8ea8a99]
***CPUID 命令 [#r4975d69]
CPUID(CPU Identification) 命令は i386 系の CPU より追加さ...
今回は NX-bit をサポートしているかどうかの確認のため使用...
***RDMSR 命令 [#ca1db1d6]
RDMSR/WRMSR 命令は Pentium Pro より追加された命令です。こ...
今回は、実際に NX-bit によるメモリ保護を行っているかの確...
***SEH [#b951f29a]
SEH (Structured Exception Handling, 構造化例外処理) は Wi...
SEH は、この一般保護エラーを例外処理として処理することが...
一般保護エラーを発生させること無く CPUID 命令をサポートし...
***ZwSystemDebugControl [#e2831d0f]
上記で説明した RDMSR 命令ですが通常の方法では実行できませ...
そこで今回は ZwSystemDebugControl という非公開の Native A...
Native API は、Kernel mode と User mode との橋渡しに使用...
***VirtualAlloc [#f5ec220c]
当初、スタックを使って一般保護エラーを発生させようと試み...
DEP 環境下でデータ実行が必要である場合(動的コード生成を...
// Read/Write/Execute
pf = (PBYTE)VirtualAlloc( NULL, 4, MEM_COMMIT, PAGE_EXEC...
if( pf == NULL ){ return FALSE; }
*pf = 0xC3; // ret*4
*(pf+1) = 0xC3;
*(pf+2) = 0xC3;
*(pf+3) = 0xC3;
pfunc = (PFUNC)pf;
// SEH
__try{
(*pfunc)();
}__except(EXCEPTION_EXECUTE_HANDLER){
// unknown...
goto cleanup;
}
// Read/Write, NO Execute
if( VirtualProtect(pf, 4, PAGE_READWRITE, &dwProt) ){
__try{
(*pfunc)();
}__except(EXCEPTION_EXECUTE_HANDLER){
// work NX-bit!
bRet = TRUE;
}
}
-----
*まとめ [#ped6f0e8]
今回の調査より、ハードウェア DEP が動作している環境下では...
データ保護設定を「次に選択するものを除くすべてのプログラ...
ユーザーのシステム環境を守るためにも、ハードウェア DEP が...
推奨されることになるかもしれません。
*参考資料 [#m51f1302]
**インテル [#w10cee11]
-[[日本語技術資料のダウンロード:http://www.intel.com/jp/d...
日本語に翻訳された技術資料が纏まって置いてあります。ここ...
-[[エグゼキュート・ディスエーブル・ビット機能:http://www....
XD-bit の機能について。
-[[AP-485 Intel Processor Identification and the CPUID In...
CPU を認識するための資料です。日本語版もありますが、場合...
**AMD [#f0bbe9a4]
-[[Microsoft Windows XP SP2に対応する拡張ウィルス防止機能...
**マイクロソフト [#w386e91d]
-[[Windows Server 2003 Service Pack 1 (SP1) 早わかりガイ...
ハードウェア DEP について一番分かりやすい資料でした。
**DEP に関する記事 [#o8fb81d8]
-[[Windows XP SP2で採用されたDEPの仕組み:http://www.atmar...
-[[Windows XP SP2のデータ実行防止機能「DEP」を調べた:http...
**Native API に関する情報 [#e67eaea0]
-[[Multiple WinXP kernel vulns can give user mode program...
Native API の中ににセキュリティ・ホールにかかわる問題があ...
今回は RDMSR 命令を実行するために利用しています。
**関連書籍 [#gee89545]
#amazon(4756144667)
-[[はじめて読むPentium マシン語入門編:http://www.ascii.co...
Visual C++ を用いたインラインアセンブラについての解説は役...
#amazon(,clear)
#amazon(489471244X)
-[[Windows NT/2000ネイティブAPIリファレンス:http://www.se...
#amazon(,clear)
-----
**From SyncHack [#p9e59872]
-[[データ実行防止機能 (DEP)>Windows XP/SP2/DEP]]
-[[Native API>Windows/Native API]]
-[[CPUID>CPU/CPUID]]
-[[MSR>CPU/MSR]]
-----
*History [#v3a9551c]
-05.07.27、First update! -- [[Mc.N]] &new{2005-07-27 03:3...
-CodeZine にて掲載開始。 -- [[Mc.N]] &new{2005-08-03 12:5...
終了行:
#topicpath
-----
→ [[ハードウェアDEP機能の調査:http://codezine.jp/a/articl...
05.08.03、掲載開始。編集の力とは恐ろしいものですな。ここ...
*完成図 [#de023d5a]
#ref(http://mcn.oops.jp/wiki/myimg/nx/checknx.png,checknx...
→ [[Check NX-bit/XD-bit Tools v.0.1 w/src:http://mcn.oops...
*はじめに [#e10da777]
この記事では、Windows XP SP2(XPSP2) より実装された DEP 機...
今回、デモプログラム(checknx)を作成しました。このプログラ...
*対象読者 [#hd10f9f6]
-CPU の働き、特にNX-bit がどのように働くのか興味がある方
-インラインアセンブラの組み込みに興味がある方
*必要な環境 [#d816d433]
下記の環境が揃わないと面白くありません。Visual C++ versio...
- NX-bit/XD-bit が有効なシステム
- Windows XP SP2/Windows Server 2003 SP1~
Windows 2000 以降で動作しますが Windows 2000 には DEP は...
-----
*データ実行防止(DEP)機能について [#k2752652]
**ハードウェア DEP 機能 [#ob297b2f]
Windows XP SP2(XPSP2)/Windows Server 2003 SP1 よりサポー...
DEP 機能とは、XPSP2 にて新たに追加されたセキュリティ機能...
今回は、この NX-bit/XD-bit を使用した「ハードウェア DEP ...
**NX-bit/XD-bit [#ob4f624f]
NX-bit(No eXecute) は、AMD 社が搭載したメモリ保護機能で、...
**NX-bit のメモリ保護機能 [#ka083d2f]
NX-bit は、システム上のメモリの実行可能・不可能の種類を示...
単純な機能ですが、セキュリティ面でかなり役立つ機能と言わ...
悪質なプログラムの多くは、バッファ・オーバーランというプ...
非常に発見しづらく、セキュリティが重要視される今日ですら...
ハードウェア的に検知し、未然にメモリを保護することを目的...
**ハードウェア/ソフトウェア DEP 機能の確認方法 [#j7dbca87]
以下の手順にて『データ実行防止』タブを開き、適用されてい...
+システムのプロパティを開く~
『スタート』→『コントロールパネル』を選択し、コントロール...
+データ実行防止を開く~
システムのプロパティ内の『詳細設定』タブを選択し、パフォ...
-''ソフトウェア DEP の場合 (A.)''~
ダイアログの下に『お使いのコンピュータのプロセッサでは、...
#ref(http://mcn.oops.jp/wiki/myimg/nx/softwaredep.png,ソ...
-''ハードウェア DEP が有効な場合 (B.)''~
上記のメッセージは表示されません。見分け方はこの程度で非...
#ref(http://mcn.oops.jp/wiki/myimg/nx/hardwaredep.png,ハ...
DEP には以下の2通りあります。デフォルトでは「システム内...
-''システム内のモジュールのみに有効(a.)''
-''Windows 内のプログラム全部に有効(b.)''
上記より DEP には以下の4通りの設定があります。この中では...
-(1) (A.)-(a.)
-(2) (A.)-(b.)
-(3) (B.)-(a.)
-(4) (B.)-(b.)
-----
*checknx によるデモ [#fd0860c6]
ハードウェア DEP 機能の確認を確認するためサンプルプログラ...
結果は以下の通り。
(1) と (2) の場合
1. Is Supported CPUID? ---> OK
2. Is Supported Extended CPUID? ---> OK
3. Is Supported NX/XD-bit? ---> Not supported.
4. Is Supported NX/XD-bit by OS? ---> OK
5. Is Enabled NX/XD-bit by OS? ---> Disable
6. Is working Hardware DEP? ---> NOT working...
finish...
(3) の場合
1. Is Supported CPUID? ---> OK
2. Is Supported Extended CPUID? ---> OK
3. Is Supported NX/XD-bit? ---> OK
4. Is Supported NX/XD-bit by OS? ---> OK
5. Is Enabled NX/XD-bit by OS? ---> Enable
6. Is working Hardware DEP? ---> NOT working...
finish...
(4) の場合
1. Is Supported CPUID? ---> OK
2. Is Supported Extended CPUID? ---> OK
3. Is Supported NX/XD-bit? ---> OK
4. Is Supported NX/XD-bit by OS? ---> OK
5. Is Enabled NX/XD-bit by OS? ---> Enable
6. Is working Hardware DEP? ---> Working!
EXTRA. Try to Execute NX error? ---> push [Try NX!]
finish...
**checknx のアルゴリズム [#d2883b2b]
+''CPUID(0) が取得できるか?''~
取得出来ない場合、該当 CPU か判断できないので終了。
+''拡張 CPUID (8000-0000h) が取得できるか?''~
取得出来ない場合、NX-bit 機能が実装されていないと判断し終...
EAX の値が 8000-0000h 以上で無い場合も終了。これは Intel ...
+''拡張 CPUID (8000-0001h) が取得できるか?''~
取得出来ない場合、NX-bit 機能が実装されていないと判断し終...
NX/XD-bit フラグが立っていない場合、NX-bit 機能が実装され...
+''サポート OS かどうか?''~
XPSP2 以降、もしくは w2k3SP1 以降で無い場合、DEP サポート...
+''NX-bit が有効かどうか?''~
MSR(0xC0000080) の 11bit 目が立っている場合、NX-bit が働...
立っていない場合、NX-bit が働いていないと判断するが継続。~
RDMSR が実行出来なかった場合、取り敢えず継続。
+''メモリ保護が行われているか?''~
動的に取得した実行可能なメモリ上で実行を行い、問題が無け...
+''EXTRA. 実際にメモリ保護が行われるダイアログでも見ます...
6. の時点でメモリ保護が有効だった場合、実際にメモリ保護ダ...
『TRY NX!』ボタンが有効になっているはずなので押してみてく...
その後、見慣れた「問題が発生したため、、、」ダイアログが...
#ref(http://mcn.oops.jp/wiki/myimg/nx/nxerr.png,データ実...
**checknx の要点 [#b8ea8a99]
***CPUID 命令 [#r4975d69]
CPUID(CPU Identification) 命令は i386 系の CPU より追加さ...
今回は NX-bit をサポートしているかどうかの確認のため使用...
***RDMSR 命令 [#ca1db1d6]
RDMSR/WRMSR 命令は Pentium Pro より追加された命令です。こ...
今回は、実際に NX-bit によるメモリ保護を行っているかの確...
***SEH [#b951f29a]
SEH (Structured Exception Handling, 構造化例外処理) は Wi...
SEH は、この一般保護エラーを例外処理として処理することが...
一般保護エラーを発生させること無く CPUID 命令をサポートし...
***ZwSystemDebugControl [#e2831d0f]
上記で説明した RDMSR 命令ですが通常の方法では実行できませ...
そこで今回は ZwSystemDebugControl という非公開の Native A...
Native API は、Kernel mode と User mode との橋渡しに使用...
***VirtualAlloc [#f5ec220c]
当初、スタックを使って一般保護エラーを発生させようと試み...
DEP 環境下でデータ実行が必要である場合(動的コード生成を...
// Read/Write/Execute
pf = (PBYTE)VirtualAlloc( NULL, 4, MEM_COMMIT, PAGE_EXEC...
if( pf == NULL ){ return FALSE; }
*pf = 0xC3; // ret*4
*(pf+1) = 0xC3;
*(pf+2) = 0xC3;
*(pf+3) = 0xC3;
pfunc = (PFUNC)pf;
// SEH
__try{
(*pfunc)();
}__except(EXCEPTION_EXECUTE_HANDLER){
// unknown...
goto cleanup;
}
// Read/Write, NO Execute
if( VirtualProtect(pf, 4, PAGE_READWRITE, &dwProt) ){
__try{
(*pfunc)();
}__except(EXCEPTION_EXECUTE_HANDLER){
// work NX-bit!
bRet = TRUE;
}
}
-----
*まとめ [#ped6f0e8]
今回の調査より、ハードウェア DEP が動作している環境下では...
データ保護設定を「次に選択するものを除くすべてのプログラ...
ユーザーのシステム環境を守るためにも、ハードウェア DEP が...
推奨されることになるかもしれません。
*参考資料 [#m51f1302]
**インテル [#w10cee11]
-[[日本語技術資料のダウンロード:http://www.intel.com/jp/d...
日本語に翻訳された技術資料が纏まって置いてあります。ここ...
-[[エグゼキュート・ディスエーブル・ビット機能:http://www....
XD-bit の機能について。
-[[AP-485 Intel Processor Identification and the CPUID In...
CPU を認識するための資料です。日本語版もありますが、場合...
**AMD [#f0bbe9a4]
-[[Microsoft Windows XP SP2に対応する拡張ウィルス防止機能...
**マイクロソフト [#w386e91d]
-[[Windows Server 2003 Service Pack 1 (SP1) 早わかりガイ...
ハードウェア DEP について一番分かりやすい資料でした。
**DEP に関する記事 [#o8fb81d8]
-[[Windows XP SP2で採用されたDEPの仕組み:http://www.atmar...
-[[Windows XP SP2のデータ実行防止機能「DEP」を調べた:http...
**Native API に関する情報 [#e67eaea0]
-[[Multiple WinXP kernel vulns can give user mode program...
Native API の中ににセキュリティ・ホールにかかわる問題があ...
今回は RDMSR 命令を実行するために利用しています。
**関連書籍 [#gee89545]
#amazon(4756144667)
-[[はじめて読むPentium マシン語入門編:http://www.ascii.co...
Visual C++ を用いたインラインアセンブラについての解説は役...
#amazon(,clear)
#amazon(489471244X)
-[[Windows NT/2000ネイティブAPIリファレンス:http://www.se...
#amazon(,clear)
-----
**From SyncHack [#p9e59872]
-[[データ実行防止機能 (DEP)>Windows XP/SP2/DEP]]
-[[Native API>Windows/Native API]]
-[[CPUID>CPU/CPUID]]
-[[MSR>CPU/MSR]]
-----
*History [#v3a9551c]
-05.07.27、First update! -- [[Mc.N]] &new{2005-07-27 03:3...
-CodeZine にて掲載開始。 -- [[Mc.N]] &new{2005-08-03 12:5...
ページ名:
[
編集
] [
新規
|
編集
|
差分
|
バックアップ
|
複製
|
名前変更
|
添付
] [
最終更新
|
リンク元
|
最終更新のRSS
]