GEEKy Script Writer [perl and more!]
You should permit the JavaScript!!
スポンサーサイト
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
Pariteとの戦い (3)
Pariteとの戦い (2) までのまとめ
Pariteというウイルスに感染したEXEファイルからKINGSOFT InternetSecurity U(無料版)で
ウイルスを駆除したが、ウイルスに感染する前の状態には戻らなかった。
KISは手抜きだ!と言ったけど、他のソフトはどうなんだろうか。
ということで他のアンチウイルスソフトでも駆除して感染前のファイルと比較してみることにした。
アンチウイルスソフトといっても結構たくさんあってどれで試していいか結構迷った。
結局、日本で使ってる人が多そうな個人だと無料で使えるやつとパッケージソフトで体験版があるものをいくつか選んだ。Mcafeeは体験版を落とすのが面倒だったからウイルス駆除ツールのほうを使った。

下の画像はParite感染前と各アンチウイルスソフトで駆除した後のファイルを比較したもので、
差異があるブロックを赤で示し、その中のどの値が異なっているのかを画像中央部分に記した。

MZヘッダ: MS-DOSのスタブ。この記事ではどうでもいい。
PEヘッダ: シグネチャとCOFFファイルヘッダ、オプションヘッダを合わせてPEヘッダと書いた。
セクションヘッダ: NumberOfSectionsの数だけエントリが続く。
以上がEXEファイルに必要なヘッダ部。その後はデータが続く。
.text: セクションの名前。画像中ではその実データ部を示している(今回のファイルでコードが含まれているセクション)
.data: 上と同じ意味。

PEヘッダとセクションヘッダのフィールド名はMSの仕様書に基づいている。

PEヘッダ:
SizeOfImage: メモリにロードされたときのヘッダを含めた全セクションの合計サイズSectionAlignment(PEヘッダに含まれる別の値)の倍数でなければならない。
NumberOfSections: この数だけセクションが存在する。
セクションヘッダ:
Name: セクションの名前。8bytes固定。".text"とか".data"とか。今回のファイルのPariteセクションは".rol\x5f"という名前になっているが感染毎に異なる。
VirtualSize: メモリにロードされたときのセクションのサイズ。
VirtualAddress: 当該セクションがメモリにロードされたときの先頭アドレス(ImageBase相対)。
SizeOfRawData: セクションのデータのファイル中のサイズ。
PointerToRawData: セクションのデータ(初期値)が存在する場合、ファイル内のオフセット。存在しない場合は0。
PointerToRelocations: 今回はどうでもいい。
PointerToLinenumbers: 今回はどうでもいい。
NumberOfRelocations: 今回はどうでもいい。
NumberOfLinenumbers: 今回はどうでもいい。
Characteristics: セクションの特性を示すフラグ。今回はどうでもいい。


その他、PE Formatの詳細はhttp://www.interq.or.jp/chubu/r6/reasm/PE_FORMAT/intro.htmlを参照。

TREND MICRO ウイルスバスター2009 体験版
Microsoft OneCare 試用版
AhnLab V3 ウイルスブロック2009 試用版
Kaspersky Internet Security 2009 試用版
Mcafee AVERT Stinger v10.0.1.546
ALWIL Software a.s. avast! Home Edition
Avira AntiVir Personal
gen

ESET NOD32 Antivirus 4 体験版
nod32

KINGSOFT InternetSecurity U 無料版
kingsoft

Symantec ノートン アンチウイルス 2009 体験版
symantec

AVG Anti-Virus Free Edition
avg

上7つの製品はParite感染前とまったく同じ状態に修復してくれた。

AVGのExtraDatというのは、実行時、メモリにはロードされないファイルの最後にくっついてるデータのこと。Parite感染後は、Pariteのコードを含むデータとドロップされるdllが感染したファイルの後ろに書き足される。そして、Pariteコードを含むデータはセクションヘッダにエントリを追加することで実行時にロードされるセクションの1つとなる。それがAVGに駆除されると、ヘッダの値は感染前に修復されるため、Pariteコードとデータはセクションではなくなり、その後ろのdllバイナリと合わせて単なるゴミデータとして残ることになる。上7つの製品ならこのデータを取り去ってくれるのだがAVGは除去してくれない。

さて、
前の記事で手抜きとだと書いたKINGSOFTだが、ノートンアンチウイルスも同じことをしているようだ。
ノートン先生がこうしているということは単なる手抜きではなくきっと何かあるはずだ。

まあ普通に考えれば、Pariteがすでに感染しているかどうかを判断するシグネチャとしてセクションヘッダの値を見ていて、再度感染しないようにわざとPariteセクションのエントリを残しているのだろうと推測できる。

それを調べるにはPariteを動かして感染させてみるか、Pariteの感染処理コードを読めばわかる。
実際に調べた結果、上の推測通りだった。

NOD32はノートンアンチウイルスと似ているが、違うのはセクションヘッダにPariteセクションのエントリデータが残ってはいるが、NumberOfSectionsの値が3から2に戻ってるので、有効なセクションのエントリにはならず、単なるゴミデータとして残ってる点である。

ではNOD32とAVGこそが手抜きだったのだろうか。Pariteの感染処理の詳細を含めて次はそれを書く。
続く。

テーマ:セキュリティ - ジャンル:コンピュータ

コメント
この記事へのコメント
コメントを投稿する
URL:
Comment:
Pass:
秘密: 管理者にだけ表示を許可する
 
トラックバック
この記事のトラックバックURL
この記事へのトラックバック
copyright © 2005 GEEKy Script Writer [perl and more!] all rights reserved.
Powered by FC2ブログ.
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。