[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[port139:00514] Re: LKM rootkit の検知方法
- To: port139@xxxxxxxxxxxxx
- Subject: [port139:00514] Re: LKM rootkit の検知方法
- From: nekurai@xxxxx
- Date: Mon, 13 Aug 2001 02:17:28 GMT
ども、根暗井です ^^)
From: Hideaki Ihara
Date: 2001/08/13 10:17:51
Subject: [port139:00511] Re: LKM rootkit の検知方法
>一般的に?よく”フックする”という言い方がされると思いますが、これは
>内部的な処理としてはどう動いているのでしょうか?
一般的には「引っ掛ける事が出来る場所」を「引っ掛ける」という
動作だと思います。 (そのままやん・・・<俺)
* 引っ掛けることが出来る場所
* ソフトウエア割り込みを使うタイプ
何も考えずに割り込み address を引っ掛ける
MS-DOS ... int 21h
linux ... int 80h
FreeBSD ... int 80h
Be ... int 25h <- うろおぼえ ^^;
これをうまく使って別の OS のバイナリを動かすものとして
BOW (Bsd On Windows) とか LINE (Line Is Not an Emulator)
みたいのがある(あった?)。(トラップすれば後は自由だし)
* dll に制御を移すタイプ
オンメモリで DLL の入り口を書き換えたり、DLL 自体を差し替えたり。
デバッガーで load 時点でエントリーを差し替えるのもあったような。
Windows95 系 ... 比較的やりやすかったような(大昔の記憶)。
Win/V の本に細かく方法が書いてあった気も。
WindowsNT 系 ... チト面倒だけど、regmon のようにしっかり
やっている例もある。
原理的にはなんかのフラグを立ててそれを監視というのも可能だけど、
普通は単にジャンプテーブルとかを置き換えるのが基本ではないかと。
By 根暗井
------- 根暗井 == 櫻井 -------- (E-mail : nekurai@xxxxx) -------
ちなみに SDK の世界の hook は一般的に message に対する hook です
----------------------------------------------------------------