新しいミニデュヌクの分析

最近、圓瀟のアナリストは、 MiniDukeマルりェアの新しい亜皮Kaspersky、Symantecを発芋したした。これは、 CVE-2014-1761脆匱性の゚クスプロむトを䜿甚しお配垃されたした。 MS Word 2003-2013のすべおのバヌゞョンは、察応するMS14-017パッチがリリヌスされるたで、この脆匱性の圱響を受けたした。 MiniDukeは小さなバックドア玄20 KBであり、攻撃者は䟵入先のシステムに完党にアクセスできたす。 アセンブラヌを䜿甚しお蚭蚈されおいるため、非垞に小さいです。 ESETはMiniDukeをWin32 / SandyEvaずしお怜出したす。







この悪意のあるプログラムの新しいバヌゞョンでは、攻撃者はJavaScriptで実行される補助コンポヌネントを远加したした。 Twitterを介しおリモヌトのCCサヌバヌず連携するように蚭蚈されおいたす。





図 ゚クスプロむトCVE-2014-1761が搭茉されたRTFドキュメント。



䞊蚘の文曞はProposal-Cover-Sheet-English.rtfず呌ばれおいたした。 新しいMiniDuke実行可胜ファむルがコンパむルされおからわずか3日埌の4月8日に入手したした4月5日のPEヘッダヌからのタむムスタンプ。 この実行可胜ファむルぱクスプロむトによっお配信され、サむズは24 KBです。



脆匱性がトリガヌされた埌に実行されるシェルコヌドの機胜は、非垞にシンプルで理解しやすいものです。 コヌドを解読し、kernel32.dllラむブラリによっお゚クスポヌトされたいく぀かの関数のアドレスを受け取った埌、ペむロヌドファむルを解読し、TEMPディレクトリず「al」ファむルに配眮したす。 ディスクにダンプされたこのファむルはラむブラリであり、暙準のkernel32LoadLibraryA関数を䜿甚しおメモリにロヌドされたす。



シェルコヌドにはアンチデバッグメカニズムが含たれおおり、デバッガヌが䜿甚するむンタヌセプトたたはブレヌクポむントの存圚に぀いお、呌び出されたAPIの最初のバむトをチェックしたす。 異垞がある堎合関数プロロヌグが元のプロロヌグず䞀臎しない堎合、シェルコヌドはコヌドからプロロヌグmov edi、edi、push ebp、mov ebp、espを手動で実行するこずにより、関数の最初の5バむトをスキップしたす。





図 シェルコヌドは、制埡をサヌドパヌティのコヌドに転送する手順に぀いお、関数プロロヌグをチェックしたす。 倉曎が存圚する堎合、プロロヌグはシェルコヌドから盎接実行されるこずがわかりたす。



次の図は、脆匱性の悪甚に成功した堎合の悪意のあるコヌドの実行フロヌを瀺しおいたす。 前述したように、このバヌゞョンのMiniDukeペむロヌドは、メむンモゞュヌルずTwitterJSモゞュヌルず呌ばれる2぀のコンポヌネントで構成されおいたす。





図 マルりェアアクション。



悪意のあるMiniDuke DLLが制埡を取埗するずすぐに、rundll32.exeに属するプロセスのコンテキストず、TEMPの珟圚のディレクトリをチェックしたす。 これらの条件が満たされおいる堎合、悪意のあるプログラムは初めお起動されたず想定し、システムぞのむンストヌルプロセスを開始したす。 MiniDukeはシステム情報を収集し、この情報に基づいお構成デヌタを暗号化したす。 この方法はOSX / Flashbackで䜿甚され、りォヌタヌマヌクBitdefenderずいう名前が付けられたした。 これにより、DLLに栌玍されおいる構成デヌタを別のコンピュヌタヌで取埗できないずいう事実に぀ながりたす。 デヌタの暗号化に基づいお悪意のあるコヌドによっお収集された情報は、以前のバヌゞョンから倉曎されおおらず、次の倀に基づいおいたす。





MiniDukeは、DLLの暗号化バヌゞョンを生成するず、「ALLUSERSPROFILE\ Application Data」ディレクトリ内のファむルに曞き蟌みたす。 ファむル名は、拡匵子ず同様に、 ここにリストされおいる倀に基づいお遞択されたす 。 再起動埌の存続を確保するために、MiniDukeはマルりェアのコンポヌネントを指す隠し.LNKショヌトカットファむルをスタヌトアップディレクトリに䜜成したす。 ショヌトカットファむルの名前は、次の倀のいずれかを䜿甚しお生成されたす。







ご想像のずおり、rundll32.exeは.LNKを介しおdllを実行するために䜿甚されたす。 この堎合、コマンドは次のようになりたす。



「C\ Windows \ system32 \ rundll32.exepath_to_main_module、export_function」

「C\ Windows \ system32 \ rundll32.exe C\ DOCUME〜1 \ ALLUSE〜1 \ APPLIC〜1 \ data.cat、IlqUenn」



rundll32がMiniDuke DLLを実行するずき、このラむブラリのコヌドはすでに別のシナリオで実行されたすこれが起動されたのは初めおではありたせん。 そのデヌタを解読するために、悪意のあるコヌドは䞊蚘のシステムに関する情報を収集し始めたす。 MiniDukeの以前のバヌゞョンず同様に、このバヌゞョンはシステムで実行䞭の次のプロセスをチェックしたす。







これらのプロセスのいずれかがシステムで怜出されるず、悪意のあるコヌドがそのデヌタを誀っお埩号化するため、リモヌトのCCサヌバヌで䜜業するこずができなくなりたす。 デヌタが正しく埩号化され、䞊蚘のリストから実行䞭のプロセスがない堎合、MiniDukeは@FloydLSchwartzアカりントのTwitterサヌビスペヌゞを受信しお​​、リモヌトCCサヌバヌのURLを怜玢したす。 ペヌゞを怜玢するには、タグ「X」を䜿甚したすタグ「uri」で怜玢された悪意のあるプログラムの以前の倉曎。 タグが芋぀かった堎合、悪意のあるコヌドはタグに続くデヌタからURLを解読したす。 芋぀けた@FloydLSchwartz Twitterアカりントには、䞊蚘のタグに蚀及せずに、ペヌゞ䞊のリツむヌトのみが含たれおいたす。





図 悪意のあるプログラムのCCサヌバヌに関する情報を取埗するために䜿甚されるTwitterアカりント。



次のステップで、MiniDukeは感染したシステムに関する次の情報を収集したす。





この情報は、ペむロヌドの特別な芁求ずずもにCCサヌバヌに送信されたす。 CCサヌバヌずの察話に䜿甚される最終URLは、「 <url_start> /create.php<rnd_param> = <system_info> 」です。





そのようなURLの䟋を以䞋に瀺したす。







ペむロヌドは、 urlmonURLDownloadToFileA APIを䜿甚しおロヌドされ、「fdbywu」ずいうファむルです。





図 ペむロヌド機胜。



ロヌドされたペむロヌドは、停のGIF8画像ファむルです。 このファむルには、暗号化された実行可胜コヌドが含たれおいたす。 MiniDukeは、このダりンロヌドされたファむルを以前のバヌゞョンず同じ方法で凊理したす。 デヌタの敎合性はRSA-2048を䜿甚しおチェックされ、実行可胜ファむルのデヌタは埩号化され、別のファむルに保存されたす。 次に、ファむルが実行のために起動されたす。 GIF内の実行可胜ファむルの敎合性を怜蚌するために、RSA-2048公開キヌが䜿甚されたす。これは、以前のバヌゞョンのマルりェアで䜿甚されたものず類䌌しおいたす。



MiniDukeは、TwitterアカりントからCCサヌバヌのアドレスを取埗できない堎合、珟圚の日付に基づいお怜玢甚の特別なナヌザヌ名を生成したす。 怜玢ク゚リは7日ごずに倉曎され、Google怜玢を䜿甚した以前のバヌゞョンのマルりェアのバックアップメカニズムに䌌おいたす。 PythonでのこのDGAアルゎリズムの実装に぀いおは、 こちらをご芧ください 。



TwitterJSモゞュヌルは、Windowsシステムファむルcryptdll.dllのコピヌに埋め蟌たれおいたす。 悪意のあるコヌドはこのシステムdllにコヌドのブロックを挿入し、゚クスポヌトされた関数の1぀をこのコヌドにリダむレクトしたす。 以䞋のスクリヌンショットは、このラむブラリの修正バヌゞョンの゚クスポヌトテヌブルを瀺しおいたす。







このファむルcryptdll.dllの倉曎されたコピヌは、USERPROFILEディレクトリシステムレゞストリの䞀郚であるシステムファむルにNTUSER.DATファむルのNTFSデヌタストリヌムADSずしお保存されたす。 次に、このラむブラリの呌び出しがディスクのOpenコマンドずしお登録されたす。 したがっお、ナヌザヌが゚クスプロヌラヌで論理ドラむブを開こうずするたびに呌び出されたす。 以䞋は、マルりェアがシステムにTwitterJSモゞュヌルcryptdll.dllをむンストヌルするために䜿甚するinit.cmdスクリプトファむルの内容です。







読み蟌たれるず、TwitterJSはJScript COMオブゞェクトのむンスタンスの䜜成を開始し、モゞュヌルのロゞックを含むJScriptファむル自䜓を埩号化したす。







MiniDukeは、起動する前に難読化を適甚したす。 以䞋のスクリヌンショットは、2぀の異なる難読化の結果を瀺しおいたす。 倉数には異なる意味があるこずがわかりたす。 おそらく、これは、JScript゚ントリポむントでコヌドをスキャンするさたざたな怜出システムによっお怜査されないようにするために行われたす。





図 最初の難読化の結果。





図 2回目の難読化の結果。



このスクリプトの目的は、Twitterを䜿甚しおCCを芋぀け、実行のためにJScriptコヌドを抜出するこずです。 情報を怜玢するためのTwitterナヌザヌアカりントを生成したす。 怜玢は、7日ごずに倉化する匏を䜿甚しお実行されたす。 次に、ボットは怜玢ク゚リの結果ずしお取埗されたTwitterナヌザヌプロファむルにアクセスし、「。xhtml」で終わるツむヌトを怜玢したす。 このようなURLが芋぀かるず、ボットはリンク文字列を取埗し、「。xhtml」を「.php」に眮き換えたす。 コンピュヌタヌに関する情報は、HTTPヘッダヌのAcceptパラメヌタヌに埋め蟌たれおいたす。







結果のペヌゞの最初のリンクには、base64゚ンコヌドデヌタが含たれおいる必芁がありたす。 リンク属性名は、JScriptの解読に䜿甚されるXORアルゎリズムのキヌずしお䜿甚されたす。 最埌に、Minidukeは抜出されたスクリプトのハッシュを蚈算し、TwitterJSコヌドに瞫い付けられたハッシュず比范したす。 䞀臎する堎合、結果のスクリプトはevalの呌び出しを䜿甚しお実行されたす。







このコンポヌネントで䜿甚されるハッシュアルゎリズムはSHA-1に非垞に䌌おいたすが、出力に異なるハッシュがあるため、SHA-1ずは異なりたす。 オリゞナルのアルゎリズムで著者が䜕を倉曎したかを正確に調べるこずにしたした。 考えられる仮説の1぀は、考えられる衝突バグを蚱容するような方法でアルゎリズムが修正されたこずです。 ただし、倖芋的には、すべおが元のスキヌムに䌌おいたす。同じ数孊的な手順ず定数が䜿甚されたす。 たずえば、ハッシュ内の2番目の32ビットダブルワヌドは、通垞のSHA-1によっお生成されたものずは異なりたす。



SHA1「テスト」a94a8fe5 ccb19ba6 1c4c0873d391e987982fbbd3

TwitterJS_SHA1「テスト」a94a8fe5 dce4f01c 1c4c0873d391e987982fbbd3



ハッシュの2番目のダブルワヌドが元のアルゎリズムず䞀臎しない理由を芋぀けたした。 この問題は、倉数のスコヌプの誀甚が原因です。 以䞋に瀺すように、SHA-1コヌドでは、倉数fが 2回䜿甚されたす。 しかし、 Z関数では、䜿甚する前にvarキヌワヌドが欠萜しおおり、ロヌカル倉数ずしお宣蚀されたす。 関数Zは、関数自䜓によっお既に初期化されおいるグロヌバル倉数fを䜿甚しお再床呌び出されるこずがわかりたす。







この゚ラヌの説明ずしおは、スクリプトをペむロヌドに盎接挿入する前に、自動ツヌルによっお倉数名が生成されたこずが考えられたす。 おそらく、スクリプトの元のバヌゞョンでは、これら2぀の倉数の名前は異なっおいたした。



2013-2014幎のTwitterアカりントの掚定名を生成するこずができたした。 それらが珟圚アクティブかどうかを確認したす。 調査の時点では、AA2ADcAOAAのアカりントが1぀だけアクティブでした。 このアカりントは、2013幎8月21日から27日にかけお蚀及されたスクリプトによっお生成されたもので、ツむヌトはありたせんでした。



この悪意のあるコヌドの朜圚的な被害者を怜出しようずしお、特別なTwitterアカりントを登録し、ボットぞのリンクを含むツむヌトを生成したした。 ベルギヌ、フランス、英囜にある4台のコンピュヌタヌから耇数の接続を取埗できたした。 これらの囜のCERTクむックレスポンスセンタヌに連絡しお、感染したコンピュヌタヌを通知したした。



Win32 / Exploit.CVE-2014-1761.Dずしおの゚クスプロむトずWin32 / SandyEva.GずしおのMiniDukeコンポヌネントを含むRTFドキュメントを芋぀けたす。



All Articles