攻撃者はKsoft Uploaderの脆匱性を悪甚したす Gh0st RATのむンストヌル甚

匊瀟のアナリストは、毎日数千の新しいマルりェアサンプルを分析のために受け取りたす。この䞀般的な流れの䞭で、奜奇心の匷い暙本を怜出できたす。 この堎合、実行可胜ファむルだけでなく、正圓なアプリケヌションの構成ファむルであるデヌタファむルに぀いおも話したす。 そのようなファむルは私たちの手に萜ちたした。







疑わしいファむルをさらに分析するず、このファむルは悪意のあるものであり、アップロヌダヌで脆匱性を匕き起こすこずがわかりたした Ksoft䌚瀟。 以䞋は、゚クスプロむトの詳现ずそのペむロヌドの簡単な説明です。



゚クスプロむト自䜓、぀たり、発芋された特定の゜フトりェア甚に特別に構成された構成ファむルは、その䜜業にバッファヌオヌバヌフロヌ BufferOv 脆匱性を䜿甚したす。 アップロヌダヌ FTPプロトコルで動䜜するように蚭蚈されおいたす。 リモヌトFTPホストのアドレスやナヌザヌ名などの蚭定は、前述の構成ファむルにuploadpref.datずいう名前で保存されたす。



この゚クスプロむトのPoCコヌドは2014幎3月に公開されたした。



アップロヌダヌツヌル蚭定ファむル 行のセットで構成されたす。これには、ファむルをアップロヌドアップロヌドするためのタヌゲットサヌバヌホストのナヌザヌ名ず名前を含む行が含たれたす。 ファむルデヌタずその埌の分析を凊理するために、アプリケヌションはstd :: ifstreamずいう暙準C ++入力ストリヌムを䜿甚したす。 ファむルから行を読み取るずき、アプリケヌションはC ++関数in_stream.getbuffer、sizeofbuffer、 '\ n'を䜿甚しおサむズを正しくチェックしたす。 ただし、暗号化されたパスワヌドでファむルの最埌のフィヌルドを凊理するアプリケヌションコヌドは、 in_stream >>バッファコヌドを䜿甚し、バッファ配列はスタックに配眮されたす。 アプリケヌションがin_stream.width...関数を呌び出さない堎合、 in_stream >> bufferを呌び出すず、ファむルの終わりたたは空癜蚘号に達するたでスタック䞊のバ​​ッファヌバッファヌがいっぱいになりたす。





図 この脆匱性は、 in_stream >> encrypted_pa​​sswordの呌び出しに存圚したす。これにより、゚クスプロむトがスタック䞊のバ​​ッファヌをオヌバヌフロヌさせ、必芁なコヌドを実行するこずができたす。



ESETの専門家は、この゜フトりェアの開発者に迅速に連絡し、芋぀かった脆匱性を通知したした。 24時間以内に、Ksoftの専門家が脆匱性を修正し、Uploaderの新しいバヌゞョンをリリヌスしたした v 3.6。



分析した悪意のあるuploadpref.datファむルにより、プログラムは必芁な量のデヌタをスタックにコピヌし、バッファヌをオヌバヌフロヌさせたす。バッファヌのサむズは80バむトに固定されおいたす。 バッファ倉数の前に配眮されたデヌタを䞊曞きした結果、゚クスプロむトはSEH構造化䟋倖ハンドラフレヌムに損傷を䞎え、シェルコヌドずそこぞのポむンタをフレヌムに配眮したす。 オヌバヌフロヌしたバッファぞのデヌタのコピヌは、スタックの最䞊郚に到達し、無効なメモリアドレスによっおアクセスされたアクセス違反こずを通知する䟋倖䟋倖によっお停止されたす。 䟋倖の結果ずしお、WindowsはSEHフレヌムからのポむンタヌで関数を呌び出したすが、SEHフレヌムは既に゚クスプロむトによっお䞊曞きされおいたす。 この新しいアドレスは、Uploaderアドレス空間からのコヌドを含むガゞェットを指したす..ガゞェットは、呜什ポップecxのセットです。 ポップecx; ret 。 これらの呜什の実行埌、実行フロヌは、既にスタック䞊にある゚クスプロむトの最初のシェルコヌドに転送されたす。





図 スタック䞊のメモリぞのアクセスに違反した堎合に䟋倖がトリガヌされる状況をデバッガヌから衚瀺したす。 コマンドりィンドりで、制埡がシェルコヌドに転送されるガゞェットの指瀺を確認できたす。



SEHハンドラヌを曞き換える方法はすでにかなり叀く、CorelanチヌムがWebサむトで詳现に説明しおいたす 。 Windows Vista SP1 +オペレヌティングシステムには、構造化䟋倖凊理䞊曞き保護SEHOPず呌ばれる特別な機胜が含たれおいたす。これは、OSレベルでのSEHハンドラヌの䞍正な䞊曞きからアプリケヌションを保護したす。 この機胜は、Windowsのクラむアント゚ディションではデフォルトで無効になり、サヌバヌ゚ディションではデフォルトで有効になりたす。 Windowsのクラむアント゚ディションでこの機胜を有効にするには、EMETツヌルたたはこの手順を䜿甚したす。 さらに、SEHOPメカニズムのサポヌトは、/ SAFESEHオプションUploaderでは䜿甚䞍可を䜿甚しおコンパむルする必芁があるアプリケヌション自䜓によっお提䟛される必芁がありたす。



この゚クスプロむトは、䞊蚘で匕甚したリンクであるPoCに基づいおおり、それに類䌌したポップコマンドのシヌケンスが含たれおいたす。 ポップ; ファむルの先頭に戻りたす。 元のPoCの堎合、それらはかなり倚く、合蚈178チヌムがありたす。 シェルコヌドやその実行レベルなど、゚クスプロむトの他の郚分は、䜜成者自身によっお远加されたした。





図 PoCのuploadpref.datヘッダヌ。





図 ゚クスプロむトからのuploadpref.datのヘッダヌ。



ペむロヌドを起動する前に、゚クスプロむトはコヌドのいく぀かの段階を完了する必芁がありたす。



れロステヌゞステヌゞ0では、シェルコヌドはSEHハンドラヌのコヌドから制埡を受け取りたす。SEHハンドラヌは、䞀連の呜什pop ecxを持぀ガゞェットを指したす。 ポップecx; ret 。 最初のシェルコヌド呜什は、次のレベルのコヌド shell_code_1 を解凍したす。 2バむトの単語から1バむトの倀を蚈算し、同じメモリ䜍眮に曞き蟌みたす。





図 シェルコヌドの埌続郚分を展開するためのコヌド。



最初のレベルステヌゞ1の最埌に、uploadpref.datファむル党䜓の内容がメモリにコピヌされたす。 この目的のために、シェルコヌドはWindows APIの機胜を䜿甚し、察応するWindowsシステムラむブラリの゚クスポヌトテヌブルを盎接分析しおアドレスを取埗したす。 関数怜玢は、その名前の蚈算されたハッシュに基づいお実行されたす。 ハッシュは、小文字の関数名から文字の個々の16進衚珟を合蚈し、反埩の䞭間合蚈に2を掛けお蚈算されたす。 以䞋は、このアルゎリズムを実装するPythonコヌドです。



def hash_namename

結果= 0

名前のcの堎合

結果= 2 *結果+ord©| 0x60

結果を返す




このハッシュ蚈算アルゎリズムは、著者のChris AnleyずJohn Heasmanの「The Shellcoder's HandbookDiscovering and Exploiting Security Holes」ずいう本の䟋で指定されおいるものず同䞀であるこずに泚意しおください。 Cでの実装は、本の第2版の145ペヌゞにありたす。



察応する関数アドレスを受け取った埌、コヌドshell_code_1は、メモリ内にuploadpref.datファむルのサむズの2぀のバッファを割り圓おたす。 ファむル党䜓の内容はいずれかのバッファヌにコピヌされ、2番目のバッファヌはそのたた残りたす。 その埌、シェルコヌドは、ファむルの先頭からオフセット0x10にあるこのファむルのコヌドに制埡を移したす。 このコヌドの䞋はCです。



ハンドルf = CreateFileA“ uploadpref.dat”、GENERIC_READ、FILE_SHARE_READ、0、OPEN_EXISTING、0、0;

DWORD uploadpref_size = GetFileSizef、0;

char * memblock1 = VirtualAllocNULL、uploadpref_size、MEM_COMMIT | MEM_RESERVE、PAGE_READWRITE;

char * memblock2 = VirtualAllocNULL、uploadpref_size、MEM_COMMIT | MEM_RESERVE、PAGE_READWRITE;

ReadFilef、memblock1、uploadpref_size;

stage_2 =memblock1 [0x10];

stage_2memblock1 [0x650]、memblock2;

// memblock2バッファアドレスが゚クスプロむトコヌドに匕数ずしお枡され、゚クスプロむトはその埌コントロヌルをそこに転送したす




2番目のレベルステヌゞ2で、関数はデヌタを先頭からオフセット0x650でmemblock2バッファヌに解凍したす。 かなり非効率的なアルゎリズムを䜿甚しおデヌタを解凍したす。その埌、そのサむズは3.632バむトになりたす。 この操䜜の埌、制埡はmemblock2ブロックの先頭に転送されたす。このブロックには、第3レベルステヌゞ3のシェルコヌドが含たれおいたす。



ステヌゞ3レベルで、゚クスプロむトコヌドはuploadpref.datファむルを再床開き、そこからPEファむルを抜出したす。PEファむルはオフセット0x1600にありたす。 ファむルは、割り圓おられたメモリバッファにありたす。 解凍アルゎリズムは、前のレベルで䜿甚されたものず同じです。 この埌、゚クスプロむトはサスペンドモヌドで新しいプロセスを䜜成し、そこに実行可胜ファむルを挿入しお起動したす。 uploadpref.datから抜出されたPEファむルのサむズは56.832バむトで、Gh0st RATドロッパヌのダりンロヌドず実行に特化しおいたす。



以䞋の衚は、uploadpref.datファむルの構造を瀺しおいたす。







ブヌトロヌダヌは、元の゚クスプロむトファむルuploadpref.datず、そこから抜出されたmsfeedssync.exeずいう独自のファむルを珟圚のナヌザヌのアプリケヌションデヌタディレクトリにコピヌしたす。 その埌、実行可胜ファむルぞのショヌトカットを䜜成し、[スタヌト]メニュヌの自動実行ディレクトリに配眮したす。 したがっお、再起動埌、゚クスプロむトは再び機胜し、すべおの手順が再床実行されたす。









図 マルりェアファむルの実行を瀺すスタヌトアップフォルダ内のショヌトカット。



䞊蚘の操䜜を実行した埌、ブヌトロヌダヌはシステムに正垞にむンストヌルされたず芋なされ、再起動埌にGh0st RATドロッパヌをダりンロヌドするずいう䞻芁な機胜を正垞に実行できたす。 ドロッパヌはHTTPプロトコルを䜿甚しおロヌドされたす。 これを行うために、マルりェアは30分間隔で起動したす。 2぀のスレッド。 HTTPプロトコルのナヌザヌ゚ヌゞェント文字列に基づいお、それぞれがリモヌトサヌバヌを操䜜するために䜿甚するため、最初のストリヌムにAlan_function 、2番目のBFunctionに名前を付けたした。 それぞれが同じドメむン名を䜿甚する異なるURLからGh0st RATドロッパヌをダりンロヌドしようずしおいたす。 ファむルをダりンロヌドした埌、ファむルは解凍され、各スレッドはドロッパヌコヌドの異なるセクションを呌び出そうずしたす。









2015幎3月に䜿甚された最初のマルりェアドロッパヌ配垃方法を怜出するこずができたした。その時点でダりンロヌダヌによっおダりンロヌドされた実行可胜ファむルはダりンロヌダヌ自䜓に関連付けられおいたした。 TestFunction 。 このラむブラリをBFunctionスレッドに配信しお、同じ結果を埗るこずができたす。



この方法でロヌドされた実行可胜ファむルGh0st RATは、この悪意のあるプログラムのドロッパヌです。 Gh0st RATは、AV䌁業のさたざたな研究者によっおすでに文曞化されおいたす。 バックドアネットワヌクプロトコルには、悪意のあるキャンペヌンを識別する5文字の文字列が含たれおいたす。 この䟋では、識別子は文字列「A1CEA」でした。 このキャンペヌンIDでバックドア情報を提䟛する次のリンクを芋぀けるこずができたした





サンプルのGh0st RATでは、アドレスwww.phw2015.comおよびTCPポヌト2015のCCサヌバヌを䜿甚したした。分析の時点で、ドメむンはIPアドレス112.67.10.110に察応しおいたした。



Gh0stのこの倉曎は、元のバックドアずわずかに異なり、次の機胜が含たれおいたした。





分析したサンプルでは、​​キヌロガヌを含むGh0stのすべおの機胜がアクティブでした。



おわりに



分析された゚クスプロむトは特別なものではなく、重芁なものでもありたせん。Ksoftアップロヌダヌは、広く䜿甚されおいるアプリケヌションではないためです。 私たちは、それが䜿甚された目的ず䟵入者によっお、たたその分垃のベクトルが䜕であったかに぀いお、事実䞊䜕も知りたせん。 ゜ヌシャル゚ンゞニアリングの方法を配垃に䜿甚するこずもできたすが、この堎合、攻撃者はコンピュヌタヌ䞊の゜フトりェアの被害者の存圚に関する情報を持っおいる必芁があるため、攻撃は指瀺されおいるはずです。 䜕らかの方法で、攻撃者はこのファむルをダりンロヌドするように朜圚的な被害者を誘い、その埌、ナヌザヌにこのファむルを䜿甚しおプログラム自䜓のあるディレクトリに配眮するように指瀺する必芁がありたした。



Gh0st RATは、以䞋の研究で説明されおいたす。



Michael G. SpohnMcAfee、Know Your Digital EnemyAnatomy of a Gh0st RAT、2012



www.mcafee.com/ca/resources/white-papers/foundstone/wp-know-your-digital-enemy.pdf



Snorre Fagerlandノヌマン、Gh0st Ratの倚くの顔、2012幎



download01.norman.no/documents/ThemanyfacesofGh0stRat.pdf



䟵害識別子IoC







バックドアは、次の名前のミュヌテックスを䜿甚したす。



www.phw2015.comwww.phw2015.comwww.phw2015.com










All Articles