親愛なるH.あなたの立候補は私たちにとって非常に興味深いので、お互いをよりよく知ることを気にしません。 まず、履歴書のレターヘッドをダウンロードして、記入し、返送してください。 よろしく、ネットワーク悪役
特徴的に、履歴書へのリンクはそのように書かれていました。 resume.exe (クリックしないで、リンクなど)。 彼らは大丈夫ですか?
ダウンロード、視聴。 ファイルのサイズは159744バイトで、一見すると圧縮されています。 カスペルスキーは、「 Trojan.Win32.Srizbi.v 」という名前のプログラムに精通しています。
Idaは、破損したインポートテーブルを誓います。 理解できる-ファイルが圧縮されていることが非常にはっきりと見える。
コード(青色のセクション)はプログラムのサイズの5%を占めますが、データは一括で処理します。 このデータは、おそらくパッケージ化されたコードです。 特に怖いのは、おなじみの「.code」タイプではなく、「_ 67D&NEk&」または「_uoeWPJ3」というセグメント名です。 エントリポイントはファイルの先頭のどこかではなく、何らかの種類のロバです。
PEIDなどのパッカーレコグナイザーをいくつか試してみます-役に立たないが、彼らはこのパッカーに慣れていません。 したがって、すぐに行動に移ります。 プログラムのパッケージ方法は分析しません。 彼女は開梱方法を知っているので、自分でやらせてください。 (このケースは非常に単純であることが判明しました。他のケースでは、プログラムの起動がひどいものにつながる可能性があります)。
ファイルをデバッガーにロードし、CreateFileにブレークポイントを設定します。 結局のところ、それは論理的です-マルウェアはそれを使用するべきですか (実際、ここでいくつかの大きな間違いを犯す可能性があります。たとえば、プログラムがCreateFileの下にある「ネイティブ」関数ZwCreateFileを使用する場合)。
...実行します。 CreateFileの入り口で実行が停止するまでに15〜20(!)秒かかります。 プログラムが複数回パックされ、上下に再パッケージ化されているように見えます。 何を言うか、心から試してみました。
CreateFileの入り口で停止し、開いているファイルの名前を確認します。
kernel32!CreateFileA: 7c801a24 8bff mov edi、edi 0:000> da poi(esp + 4) 0012fe70 "C:\ WINDOWS \ system32 \ drivers \ gran" 0012fe90 "de48.sys"
ドライバー! ルートキットのような匂いがします。 プログラムの実行中に、PE Toolsのようなものでダンプを作成し、逆アセンブラーで検討してください。 彼は今、さらにIATで誓っていますが、これは致命的ではありません。 デバッガーで、呼び出しスタックを調べ、関数の呼び出し元を見つけ、逆アセンブラーに戻り、このコードを見つけます。 CreateFileの呼び出しは次のようになります
コールds:42C1C8
それは私たちにとって特別なことではありません。 したがって、windbgでddsコマンドを使用すると、実際の機能のアドレス、手が外に移動する(少し離れて、20程度)ことがわかります。 これで、呼び出された関数の名前が得られ(インポートテーブルが手動で復元されたかのように)、逆アセンブラでコードを分析できます。 分岐がほとんどなく、非常にシンプルで線形であることがわかりました。 メイン関数の完全なコードを提供します:
; 属性:bpベースのフレーム
Main_40164F proc近く
var_32C = dword ptr -32Ch
String1 =バイトptr -228h
Windir =バイトptr -124h
var_20 = dword ptr -20h
ebpをプッシュ
mov ebp、esp
sub esp、32Ch
unxor_401040を呼び出す
SetupImports_401248を呼び出します
呼び出しds:GetTickCount_0
mov ds:TickCount_42C1AC、eax
104hを押します。 uSize
lea eax、[ebp + Windir]
eaxをプッシュします。 lpBuffer
呼び出しds:GetWindowsDirectoryA
lea eax、[ebp + Windir]
プッシュeax
lea eax、[ebp + String1]
プッシュeax
呼び出しds:lstrcpyA
lea eax、[ebp + Windir]
プッシュeax
lea eax、[ebp + var_32C]
プッシュeax
呼び出しds:lstrcpyA
プッシュds:lpString2
lea eax、[ebp + var_20]
プッシュeax
呼び出しds:lstrcpyA
プッシュds:dword_42C16C
lea eax、[ebp + Windir]
プッシュeax
呼び出しds:lstrcatA
lea eax、[ebp + Windir]
プッシュeax
ExtractDriver_4015E4を呼び出す
lea eax、[ebp + var_20]
プッシュeax
lea eax、[ebp + Windir]
プッシュeax
LoadDriver_4014CBを呼び出します
ESP、0Chを追加
KillMySelf_40139Fを呼び出す
CleanUp_401000を呼び出します
去る
retn
Main_40164F endp
どうやら、すべてが簡単です。 最初に、行が準備され、インポートが復元されます。その後、ドライバーがプログラム本体から抽出され、ドライバーフォルダーに保存されて読み込まれます。
ADVAPI32!CreateServiceA: 77e37071 6a30プッシュ30時間 0:000> da poi(esp + 8) 0012ff74 "grande48"
ここでは、この種の感染に対抗するための、シンプルでありながら非常に効果的な方法を思い出してください。 システムディレクトリへの書き込みを禁止するだけで十分であり、ほとんどのウイルスは単に機能しません。
ドライバーのロード段階では、2番目の驚きが待っています。 ロードされません。 この待望のIoCreateDeviceが呼び出されたときに、デバッガーを手に何時間も座って待つことができますが、この瞬間は来ません。 ドライバーをダウンロードするための数時間の実りのない試みの後、それはWindows 2000用に作られたことが判明しました! したがって、XPを使用するほとんどのWindowsユーザーにとって、この感染は恐ろしいものではありません。 これがこのように動作するのはこの変更のみである可能性があるため、私は確かに言うことはありません。
ドライバーといえば。 サイズ167936。カスペルスキーによってRootkit.Win32.Agent.aihとして定義されています。 内部には、スパムを送信する多種多様なコードが含まれています。 特に、管理サーバーのIPアドレス208.66.195.172が含まれています。 どうやら、これはコロケーションであり、サーバー自体がレンタルされています。 あまり真実ではありませんが、ボットネットを制御するためにサーバーを借りることができる方法は明らかです)または、サーバーが合法であり、悪意のあるコードがインストールされているだけで、管理者が見逃している場合があります。 一般に、ここではすべてがぼやけています。
戻ってきます。 KillMySelf関数は、Tempフォルダーに_it.bat batファイルを作成してから起動します。
kernel32!CreateFileA: 7c801a24 8bff mov edi、edi 0:000> da poi(esp + 4) 0012fb58「C:\ DOCUME〜1 \ dev \ LOCALS〜1 \ Temp \ _i」 0012fb78 "t.bat"
全文は次のとおりです。
:abc
del "C:\ sandbox \ Trojan.Win32.Srizbi.v \ resume.exe.txt"
存在する場合 "C:\ sandbox \ Trojan.Win32.Srizbi.v \ resume.exe.txt" goto abc
rmdir "C:\サンドボックス\ Trojan.Win32.Srizbi.v"
del "C:\ DOCUME〜1 \ dev \ LOCALS〜1 \ Temp \ _it.bat"
つまり、彼はプログラム、それを含むフォルダー、そして最後に自分自身を削除しようとしています。