2000P's Blog

最初のページ

栄光のリーダー

著者 puzio 時間 2020-03-22
all

これは韓国中央通信社のマルウェアの分析の2番目(そして最後)です。あなたがまだ最初の部分を読んでいないならば、私は最初にここで読む読書を提案します。

まず第一に、それはLaunch . exeとwdev . exeでないと言及すべきです。wdev . exe(main dropper)はいくつかのDLLを削除します。私は、このポストですべてを彼らに分析しようとします。

最初に我々はこのファイルとして起動して起動すると、起動後のマルウェアの起動コンポーネントとHKLM \ソフトウェア\マイクロソフト\ Windows \ CurrentVersion \ Runのレジストリエントリを実行して追加されている。

これは、マルウェアの主なコンポーネントであり、起動時に起動します。最初のWinmain、Dropperと同じように、同じ偽のCreateProcessの呼び出しとエラーコード0 x 05のチェックを行います。それが正しい値を返したことを確認した後、同じ“洗練された”暗号化キーをスタックにプッシュし、Eaxレジスタからそれを指すように同じ“天才”トリックを使用します。

その後、“ウェスタン製の”暗号化アルゴリズム(Rijndael)を使用して、それは、Visual C + 6で書かれた新しい有効なDLLコンポーネントを生成するために、それ自身のファイルに埋め込まれたデータを復号化します。このコンポーネントには、既定のVisual C +リソースがあります。

また、ディスク上に書かれていないDLLのこの部分は、" dllnum suspender . dll "と呼ばれます。

とにかく、このDLLを解読した後に、コードはVirtualAllocを固定アドレス(0 x 1000000)と固定サイズ(0 x 15000)2回と呼びます?ページを確実に割り当てたことを確認します。参照:

アロケーション後、データをコピーします。一般的に、このマルウェアはすべての“特別な”です;アルゴリズム、暗号化キー、ダブルVirtualalloc、“データを復号化し、メモリの一部に書き込み、新しいメモリを割り当て、そこに直接最初に場所を復号化する代わりに、”デフォルトのバージョンのリソースと…をコピーします。私は、彼らが意図的に「特別な」最高指導者を反映することを「特別な」としたと推測するつもりです。

とにかく、新しく割り当てられたメモリページにデータを書いた後に、それはそれからのデータを読むのがすべてOKであることを確認するために不人気なAPIを呼び出して、次のステップに進みます。IsbadReadPtr APIを使用します。0を返すとロードライブラリ( kernel32 . dll )を呼び出します。プログラミングのすべての奇妙なスタイルですが、プログラマはカーネル32 . dllを確実にロードしなければなりません。したがって、適切なAPIはここでロードライブラリではなくgetmodulehandleを扱うでしょう。しかし、それは奇妙なことをします。

驚異はここで停止しない!次のアルゴリズムは「スーパースペシャル」です。

私は冗談だと思う?参照:

手を下にこれは最高のマルウェアです!

すべてのこれらの割り当てとIATの「特別な」再構築の後、それはメモリのDLLファイルのDLLmain機能を呼びます。次に、同じDLLのDLLGetClassObject関数を呼び出します。最後に、appdataディレクトリに“temp”というフォルダを作成します。ここで突然、私はこの「専門のウェア」でコードのもう一つの「天才」を発見しました。

元の感染は、約2.6 MBであり、Launch . exeを含むすべての必要なコンポーネントを持っているwdev . exeによって発生します。最初の感染の後、それは以下を落とします:

として追加されました。

マイクロソフト. Windows \ addinsに

マイクロソフト\ defenderに追加しました

マイクロソフト\ cches \ファイルのローミング

マイクロソフト\共有モジュールのローミング

マイクロソフト\アイデンティティ% %ユーザ名

マイクロソフト\共通\共有のローミング

したがって、次の起動時に、Launch . exeだけが起動ポイントを持って、DLLを生成するためにいくつかの“特別な”アルゴリズムを実行し、中断されたスレッドを再開し、プロセスとスレッドを列挙し、起動キーを作成し、Widgets . exeに対してDLLを挿入します。まだLaunch . exeはスタートアップエントリを取得します、そして、あなたがちょうど1つのDLLコンポーネント(WDut . exeを読むことによってLaunch . exe)を改名するか、削除するならば、それは簡単に行方不明のコンポーネントを抽出して、再構築することができます、しかし、いいえ、それはちょうど失敗して、DLLコンポーネントを欠くことなく進行します。それです。だから、例えば、他の何かにatm . dllの名前を変更する場合は、Launch . exeとWDEXT . EXEのサイズで1.6 MBのサイズでは、“Specialware”を再構築しない部分を再構築します。また、WDEXT . EXEのためのスタートアップエントリーがあれば、すべてがうまくいったので、wdext . exeがすべてのファイルを抽出して、Launch . exeを実行するので、すべてはすばらしかったです。また、私の古いツールを使用して、このマルウェアの各DLLコンポーネントをエクスプローラ. exeに注入し、他のコンポーネントをリロードしていない部分をアンロードすることができた。私のコードを使用するだけで、私はエクスプローラ. exeをクラッシュさせたり、殺したりせずに、すべての注入されたモジュールをアンロードすることができました。それに加えて、単にkill . exeを殺すと、この特殊な製品を終了します。

とにかく、すべての単一のDLLが非常に深く分析するにはあまりに長くかかるので、私はそれらをアルファベット順に1つによってそれらを書いて、一般的にその使用法を説明します:

このDLLは、NTProcessMonitorと呼ばれます。

私はATTの名前がおそらくNBAとAT&Tのための最高のリーダーの強迫観念から来るかもしれないと推測するつもりです。とにかく、このDLLもVC + 6で書かれています、そして、それは私が見た最初のコンポーネントです。このファイルのMD 5ハッシュは以下の通りです。

ロードされた後のこのDLLは、現在のプロセス名とIDを取得し、現在のプロセスIDに対してOpenProcessを呼び出し、その後プロセスプロセスのために、プロセスベースの情報を持つプロセスについてのプロセスを2番目のパラメータとして呼び出します。このマルウェアから「少し先進の」API呼び出しを見たのは、最初でした。現在のプロセスの親プロセスとロードされたモジュールを列挙し、現在のプロセス名を文字比較(関数呼び出しなし)でマニュアル文字を使用してExplorer . exeに比較します。Explorer . exeなら、追加のスレッドで作成します。その追加スレッドでは、ループ内のすべてのプロセスを開き、プロセス内のすべてのモジュールを列挙します。その後、それはプロセスのリストをチェックします。参照:

あなたはこれらの重要なプロセスに注入された後、このDLLのだろうか?さて、ここで答えです

まず最初に、プロセス名をチェックするだけで、chrome . exeへのツール名を変更しました。注入は古典的なOpenprocess、writeprocessmemoryとcreateremoteThreadメソッドで起こります。この関数は、attl . dllへのフルパスと共にshellcodeを注入します。また、shellcodeは、seErrorMode APIを呼び出して、クラッシュが報告されないようにします。次に、loadLibraryWまたはLoadLibraryaを呼び出します。インジェクタから受信されたATD . dllへのフルパスで。

今、ATTER . dllは、Explorer . exe以外のプロセスに注入され、それはメイン“天才”トリックですか!このDLLは、comdlg 32 . dllのための2つのインラインフックをインストールします。これはまた、この“専門の”の最大かつ最も便利な機能の一つです!Chrome、FirefoxとExplorer . exeのようないくつかの重要なプロセスにインストールされるこの危険で洗練されたフックは、非常にユニークな隠れた特徴を持っています。これらのプロセスでは、一般的なダイアログを使用してファイルを保存する(保存または開いてダイアログを)場合は、この“特殊な”ファイルを参照することができなくなります。しかし、あなたが単にWindows Explorerダイアログを使用するならば、あなたは彼らを見ます!参照:

すごい!単に驚くべきではないか。この洗練されたフックは、オープン/保存ダイアログを使用するときだけファイルを隠します。ちょうどこの高度に洗練されたフックのために、私はほとんどこの「特殊なウェア」のすべてのファイルを逃しました。そして、それが隠れて、シークゲームの間、「最高指導者」を見つけることがどれくらい簡単であるかについて、私に思い出させました。私は、彼らがマルウェア作者に最高のリーダーをできるだけ人々に思い出させる「特別な方法」でコードを書くことを強制したと思います。

これは筆者がファイルシステムモニタと呼びます。

元々はdlltle diskscan . dllと呼ばれていますが、この名前を使用したことはないと思います。

このDLLはATI . dllと同じような機能を持っています。例えば、親プロセスIDと名前と現在のプロセス名の比較を探検家Excel . exe(文字マニュアル)でチェックします。このDLLは、Explorer . exe内にロードされた場合のみ動作します。Explorer . exeプロセス内で実行していることを確認した後、SystemParametersInfoAPI APIを使用して、スクリーンセーバが実行されているかどうかを判断するために0 x 72(SpienceGetScreenSaverRunning)を実行します。このDLLはFile . dllとarc . dllを使用してファイルを収集、圧縮、感染、暗号化します。このDLLはドライブを列挙し、それらのスレッドを作成し、発見されたドライブを渡します(スクリーンセーバをオンにした後に)。これは文字通りドライブをスキャンしてサブスレッドに渡す。

これらの2つのファイルは「ファイル泥棒」であると思われました。FIR . dllはARC . dllへの呼び出しのためのラッパーです(私はZlibライブラリに静的にリンクしているということを発見しました)。そして、それはあらゆる種類の暗号化と圧縮機能を持っています。しかし、file . dllは重要なファイルの位置と選択に責任があります。FIR . dllにはいくつかの拡張モジュールがあります。

また、Film . dllの1つの奇妙な機能は、DLL、OCX、SYSとEXEファイルのバージョン文字列情報を読んで、処理していました。

上記のように、このFile . dllでは、このコードを1行の変更なしで使用していることを発見しました。私は、彼のプログラマーがあまりにも多くの「外国の」コードを使用したので、輝かしいリーダーが怒っていると思います。

File . dllのもう一つの特徴はPEファイルに感染しています。それは慎重に“MZ”バナーを検出することによって、それはPEのヘッダーを読み取り、最後にPEのセクションを読むしようとします。また、RSRCに特別な注意を払う。次に、マニフェストファイルをリソースに注入します。参照:

感染はローカルドライブ以外のディスクの場所で発生します。このDLLとARC . DLLでも、「賢い」作者は、彼らの本当の意図を隠しませんでした:

USD . dllは、新しいUSBディスクを検出しようとし、File . dllとarc . dllに新しい場所を渡します。これは、USBデバイスを検出するためのRegisterDeviceNotification APIを使用します。

SHA . DLLはまた、ネットワークの株式を列挙し、新しいものを見つけるしようとするシンプルなDLLです。検出されるとき、再びそれはFILとARC DLLにそれらを渡します。

最後に

最後に/ R / Netsecの人々に特別な感謝を送りたい!あなたが私の週末を台無しにしたならば、それがあなたのためでなかったならば、多分、私は2 - 3週後に私の記事の第2の部分を終えるつもりでした。

P . S .誰かがZIPファイルでこのマルウェアのすべてのファイルを必要とするならば、ちょうどTwitterでDMを送ってください、そして、私はあなたにDropbox関連を送ります。

P . S . S .私はMapisEndDocument APIを解決しましたが、実際には呼び出されませんでしたので、MapisEndDocumentを直接呼び出すことができます。このAPIには、MapiInitialize APIへの呼び出しのような他の呼び出しで呼び出しを準備する必要があります。

また、私は2つの変わったDNS要求を見つけました、しかし、更なるデータ交換はありません。アドレスは以下の通りです。

最後に、私は「アントニオ・ロド・スー・ガエズ」と評した。「サム・ハング」は韓国語の3つの起源を意味している「花」とは一つ。