【2018-11-20】勒索ウイルスGrandCrab-v 5.04完全分析
げんプログラムかいせき
サンプルダウンロードリンク
基本ファイル情報ExeInfoファイル情報を表示する
脱殻後
IDAとODのエントリコード
反砂箱手段メッセージループ 複雑なメッセージループ、タイマーメッセージ、およびカスタムSendMsgを使用して、大量のメッセージを送信し、プログラムの実行時間を延長します.デバイスコンテキスト 長時間のメッセージサイクルはコアコード領域に到達し、中には多くの動的復号関数と大量の Sleep
最も重要な手段はSleep()です Callダウン プログラムの多くのコードは動的に復号されており、具体的な復号プロセスとは関係なく、callジャンプ時に直接切断すればよい.ファイルを解放する OD大まか分析 F 7は過去の分析に従って、まずいくつかのAPIを取得して、それから1つのプロセスを作成して、それからデータをサブプロセスに書き込むことを発見しました IDA詳細分析
ウイルス体を抽出して
dmaコマンドで合計9セグメントのデータを抽出し、PEファイルを新規作成し、ファイルオフセットを手動で整列し、セクションの正しいオフセット量とセクションの実行可能な属性を変更し、ウイルス体を抽出しました.
第1部の総括元のプログラムはまず殻を加えて、それから大量の混同手段を持って、例えば図は
ウイルス体分析
基本ファイル情報PE 32ビットプログラム、合計8セグメント、
シナリオは花が殻を脱いだ後にIDAを引きずってF 5が失効することを発見して、コードの各
ウイルス実行プロセス指定プロセス を閉じる.
システムプロセスを巡り、msftesql.exe、sqlagent.exe、sqlbrowser.exeなどの複数の特定のプロセスを閉じます.反発体 を開く.
反発体を開き、親プロセスとのメモリデータ操作を同期します.オペレーティングシステムWin 7以上 が要求する.ユーザ権限Low以上 を要求する. Win 7およびWin 8の権利 まずビットマップ書き込みデータを作成しますが、実はデータはその後の
shellcodeを取得し、 Win 10の権利 判断オペレーティングシステムは
その後、作成プロセス実行自己 オペレーティングシステムがWin 7より大きいと判断し、権限がLowより大きいと判断した後、自身の完全な経路を取得し、検査エリア キーボードレイアウトで領域をチェックすると、一部の領域ではその後のコードが実行されず、直接自分を削除して終了します.
デフォルトの言語で領域を判断反発体 を作成する.
派手な操作の山は、反発体を作成するために!作者がahnlabを皮肉っているようで、これはよくわかりません.必要なデータを復号する .
いくつかのデータを解読し、その後キーを初期化する際に使用しました.クエリーシステム情報 レジストリでランダム文字 を生成する.は、公開秘密鍵ペア を生成する.公開鍵対書き込みレジストリ 復号説明情報 復号化後にスレッドオープン暗号化ファイル 最初のスレッドはローカルエリアネットワーク共有ファイルを巡回します
2番目のスレッドは、ローカルの有効なディスクおよびモバイルストレージデバイスを巡回します.採用の遍歴方法 ローカルエリアネットワークを巡回する方法とローカルを巡回する方法は同じで、まずディスクの有効性を判断して、有効であれば次の巡回を行います!次に、説明ファイル を作成する
以前の説明書の内容はずっとメモリに入っていて、まだファイルに書き込まれていません.各ディレクトリのループが開始されると、現在のディレクトリにファイルが作成され、ファイル名は前のランダム文字になり、メモリの説明書がファイルに書き込まれます.また、暗号化された時刻を記録するための暗号化ホワイトリスト 暗号化されたホワイトリストは主に3つあり、
2つ目は
3つ目は暗号化 を実行
ホワイトリスト以外のファイルに移動すると、ファイルの暗号化が開始されます.シャドウコピーを削除 暗号化が完了した後、デスクトップバックグラウンド を設定する.
まずビットマップを作成してから色データを書き、その後、新しいファイルをファイルに書き、ファイルは POST要求 を送信する.
スレッドを作成します.まず、Webサイト情報を復号します.
次に、文字列のリンク先をランダムに選択します.
私がテストしたときにつづった文字列は自己 を削除する.
ウイルス暗号化ファイルが完了すると、
第2部では上記の実行フローをまとめるとウイルス体の
END
サンプルダウンロードリンク
基本ファイル情報ExeInfoファイル情報を表示する
PE32
Ollydbgエントリポイントコードは次のとおりです.脱殻後
OEP,dump IAT
、脱殻に成功した後Dieでコンパイル言語をDelphi 7と表示IDAとODのエントリコード
反砂箱手段
GetDC
とGetStockObject
があり、一定の時間と大量のメモリ資源を消費した.最も重要な手段はSleep()です
Sleep 4
ファイルを解放 call
の図のように、まずPatchが落ちる前のSleepに注意してください.ODScript dma dump
のメモリを使用して、IDAで静的解析を開きます.まず、GetProcAddress
が複数のAPIのアドレスを取得し、その後、CreateProcess
が自身のパスが存在するプロセスを作成し、CREATE_SUSPENDED
に転送して保留させ、ZwUnmapViewOfSection
を利用して元のすべてのセグメントをアンインストールし、RtlZeroMemory
を利用してメモリ領域を0VirtualAllocEx
に置き、WriteProcessMemory
と協力して新しいデータを書き込み、SetThreadContext
とResumeThread
を利用してプログラムのエントリポイントを修正し、保留中のプロセスの実行を再開Tips:dma : "dma start,size,path"
ウイルス体を抽出して
WriteProcessMemory
で切断し、書き込まれたのは完全なPEファイルであることが分かった.dmaコマンドで合計9セグメントのデータを抽出し、PEファイルを新規作成し、ファイルオフセットを手動で整列し、セクションの正しいオフセット量とセクションの実行可能な属性を変更し、ウイルス体を抽出しました.
P.S. PCHunter
第1部の総括元のプログラムはまず殻を加えて、それから大量の混同手段を持って、例えば図は
ProcessMonitor
でいくつかのレジストリの値を読み取るだけでレジストリを書いていないことを検出して、更にその他の危険な操作がなくて、そのため多くの殺軟を过ごすことができます!またSleep
などの遅延手段を用いて砂箱分析の大部分を除去し,またプログラム実行コアウイルスの手段も隠蔽され,傀儡プロセスを利用して新しいPEファイルを書き込み入口点を変更して実行し,コア悪意コードを殺軟検出しにくくした.ウイルス体分析
基本ファイル情報PE 32ビットプログラム、合計8セグメント、
脱殻ファイル情報この殻は脱殻しやすくて、簡単な異種あるいは暗号化の殻、3つのjmp eax
は切断してOEPに着くことができて、それからdump IAT
、探し当てたOEPは以下の通りですシナリオは花が殻を脱いだ後にIDAを引きずってF 5が失効することを発見して、コードの各
jnz jz
の後に1段のごみの指令があるため、IDAなどの反アセンブリのツールのアセンブリを妨害して、IDAPython
を書いて花の指令を除去した後に反コンパイルすることができて、コードは以下の通りですdef patch_junkcode(addr):
data = list(get_bytes(addr,4))
if(ord(data[0]) == 0x75 and ord(data[1]) == 0x5 and ord(data[2]) == 0x74 and ord(data[3]) == 0x3):
for i in range(4,10):
patch_byte(addr+i,0x90)
base = 0x401000
len = 0x414C00 - base
for i in range(len):
patch_junkcode(base+i)
print 'Finished!'
ウイルス実行プロセス
システムプロセスを巡り、msftesql.exe、sqlagent.exe、sqlbrowser.exeなどの複数の特定のプロセスを閉じます.
反発体を開き、親プロセスとのメモリデータ操作を同期します.
VerifyVersionInfoW
関数を使用して、オペレーティングシステムがWin7
より大きいと判断します.そうしないと、プログラムを終了します.GetSidSubAuthority
関数を用いて現在のユーザの権限がLow
以上であると判断するshellcode
で、このshellcodeを隠すためです.shellcodeを取得し、
ZWQueryIntervalProfile
を呼び出して現在のユーザー権限をシステム権限に昇格させ、権限付与原理関連リンクWin10
で、少し前のTask Scheduler
の1つの0day
の権利を利用して、まずStartXpsprintJob
のアドレスを取得して、権利の原理の関連リンクその後、
printconfig.dll
にリンクして脆弱性をトリガーし、システム権限に昇格します.GetShortPathNameW
を使用してUnicode
経路の影響を回避した後、wmic
伝達経路を利用して自身を再起動するデフォルトの言語で領域を判断
派手な操作の山は、反発体を作成するために!作者がahnlabを皮肉っているようで、これはよくわかりません.
いくつかのデータを解読し、その後キーを初期化する際に使用しました.
, , , ,CPU ,
をチェックしましたが、最も重要なのは一般的な
をいくつか検索しましたが、検索だけです.CryptGenRandom
を使用して乱数を生成し、演算していくつかの幅の文字を得て、6つ取ってから大文字に変換し、ファイル名につなぎます.P.S.ファイル名は、あなたの支払いを指導するファイルの名前です.例えば、TZYLVF-DECRYPT.txt
CryptGenKey
を使用してRSA
の公開鍵ペアを生成し、その後CryptExportKey
を使用してメモリにエクスポートするHKEY_LOCAL_MACHINE\\SOFTWARE\\keys_data\\data
を作成し、public
とprivate
を作成し、前の公開鍵と公開鍵のペアをそれぞれ2つのサブキーに書き込むXXXXXX-DECRYPT.txt
に書き込む文字列は、ユーザへの説明書に相当する2番目のスレッドは、ローカルの有効なディスクおよびモバイルストレージデバイスを巡回します.
.
および..
ではない属性を満たしてから、現在のディレクトリの属性を取得する必要があります. ,SQL , RSA
です.以前の説明書の内容はずっとメモリに入っていて、まだファイルに書き込まれていません.各ディレクトリのループが開始されると、現在のディレクトリにファイルが作成され、ファイル名は前のランダム文字になり、メモリの説明書がファイルに書き込まれます.また、暗号化された時刻を記録するための
.lock
ファイルも作成されます. , :Program Files,Windows,Boot
です.2つ目は
で、ダイナミックにしか見えません3つ目は
ですホワイトリスト以外のファイルに移動すると、ファイルの暗号化が開始されます.
Shadow Copy
を削除し、一般ユーザーが削除した暗号化されていない元のファイルを回復することを防止する.まずビットマップを作成してから色データを書き、その後、新しいファイルをファイルに書き、ファイルは
Temp
ディレクトリの下にあり、最後にSystemParametersInfoW
を使用してこの画像をデスクトップの背景に設定します.スレッドを作成します.まず、Webサイト情報を復号します.
次に、文字列のリンク先をランダムに選択します.
私がテストしたときにつづった文字列は
http://www.2mmotorsport.biz/includes/pics/zurukafu.jpg
で、最後にこのウェブサイトにPOSTリクエストを送信しました.ウイルス暗号化ファイルが完了すると、
cmd 5s
を呼び出して自分を削除します.第2部では上記の実行フローをまとめるとウイルス体の
で、この勒索ウイルスは主に放出時に非常に隠れて位置決めが悪く、dumpから出たウイルス体にも花指令が静的分析に影響を与えるが、IDAPythonは花指令を除去することができる!それでもこのウイルスの本体は複雑で、
はWindowsの異なるバージョンで実行でき、異なる国で実行できます.1つの字は形容します:強い!END