危険な招埅、たたはフィッシングメヌルぞの戊闘負荷の仕組み



最近、PT ESCスペシャリストは、「Invitation November 29-30、2018.pub」1edd5b6a02ec82cec381c1a1ec74a67eずいうPublisher圢匏のドキュメントを発芋したした。 この蚘事では、通垞のドキュメントがトロむの朚銬になり、攻撃者がWebカメラから画像をキャプチャしたり、コマンドで音声を録音したり、Skypeりィンドりが怜出されたずきにPowerShellスクリプトを実行したり、スクリヌンショットを撮ったり、メディアデバむスからファむルをコピヌしたりする方法を説明したす。

そのため、ドキュメントを開くず、がやけたドキュメントスタブずMicrosoft Publisherスクリプトを含めるよう芁求するりィンドりが衚瀺されたす。



ナヌザヌが有効にするず、ドキュメントに組み蟌たれたスクリプトがJavaScriptで実行されたす。 次のようになりたす。



スクリプトの結果は、Base64からの2぀のファむル、PDFずEXEのデコヌドになりたす。 䞡方のファむルはC\ Users \ {Username} \ AppData \ Roaming \ DBFUpdateに曞き蟌たれたす。 したがっお、䞡方のファむルが実行され、ナヌザヌにはドキュメント画面にそのようなスタブが衚瀺されたす。



トレゞャヌハンタヌRAT


攻撃者は、感染したマシンぞのフルアクセスを提䟛する倚数の機胜を備えたマルチモゞュヌルRATを䜿甚したす。

コヌド機胜

  1. 内郚的に䜿甚される倚数のSTLコンストラクトを䜿甚しお、完党にC ++で蚘述されおいたす。
  2. ブヌストラむブラリ、特にJSONおよびアヌカむブのアプリケヌション。
  3. デバッグ機胜ステヌゞャヌセクションの詳现。

メむントロむの朚銬


メむンのトロむの朚銬は被害者のマシンに固定されおおり、C2から悪意のあるモゞュヌルがロヌドされるプラットフォヌムです。

たず、stagerは䜜業ディレクトリを初期化したす。このディレクトリには、モゞュヌル、モゞュヌルの動䜜に必芁なナヌティリティなどによっお収集された情報が栌玍されたす。



以䞋は、䜜業ディレクトリを䜜成するためのパスの初期化です。



必芁なディレクトリが䜜成された埌、メむンのトロむの朚銬は感染したマシンに関する情報を収集し、それを制埡サヌバヌに送信したす。

トロダンはそのようなデヌタに興味がありたす


これは、感染したマシンに関する情報の収集方法です。



次に、HKCU \ Environment \ UserInitMprLogonScriptにあるレゞストリの倀を倉曎するこずにより、感染したマシンでメむンのトロむの朚銬が修正されたす。 䜜業ディレクトリの初期化䞭に割り圓おられた実行可胜ファむルの名前がここに曞き蟌たれたす。この堎合、「DCTHOST.exe」ず同じです。 この方法はHexacornブログで説明されおおり、APT28ずCoDLLtグルヌプのComDLLDroperでも䜿甚されおいたした。



メむンのトロむの朚銬を初期化する最埌の手順は、実行可胜ファむルを珟圚の堎所から、䜜業ディレクトリが初期化されたずきに遞択されたのず同じ名前の䜜業ディレクトリにコピヌするこずです。

メむンのトロむの朚銬が初期化された埌、コマンドを受信するための準備が実行されたす。 コアモゞュヌルが実行䞭のモゞュヌルのリストに远加されたす。これはメむンのトロむの朚銬です。 次に、識別子0のコアモゞュヌルからコマンドが起動されたす。メむンモゞュヌルにはこのコマンドの実装はなく、単なるスタブです。 Coreモゞュヌルのオブゞェクトのコンストラクタヌを以䞋に瀺したす。



最埌に、2぀のスレッドが開始されたす。 スレッドの1぀がタむマヌを開始したす。タむマヌはデフォルトで毎秒起動し、C2からコマンドを芁求しようずしたす。



2番目のストリヌムは、远加のラむブラリず暙準モゞュヌルをロヌドしたす。 モゞュヌルず同様に、ラむブラリには識別子がありたすが、モゞュヌルずは異なり、ラむブラリ識別子はマむナスで、-1から始たり、数字が小さいほど倧きくなりたす。 以䞋は、C2からダりンロヌドされたラむブラリのリストです。



メむンのトロむの朚銬のデバッグ機胜


䜜業の最初の初期化盎埌に、メむンのトロむの朚銬は、興味深い機胜を含むSetUnhandledExceptionFilterを介しお䟋倖ハンドラを蚭定したす。 䟋倖が発生するず、ハンドラヌに分類され、アプリケヌションのミニダンプが曞き蟌たれたすが、䟋倖に関する情報も保存されたす。 その埌、自動的に再起動したす。 画面䞊-ミニダンプの䜜成



ネットワヌクプロトコル


゜フトりェアずC2の間の亀換は、自己蚘述のバむナリプロトコルを䜿甚しお行われたす。 各メッセヌゞはBinPackageRTTIから取られた名前を䜿甚しお蚘述されたす。 各BinPackageは、本質的にstd :: vectorのラッパヌであり、PackageRecordセットを保存したす名前は発明されおいたす。 PackageRecordは、デヌタを保存するための最小単䜍です。

struct PackageRecord { _DWORD dataId; _DWORD datatype; _DWORD szData; char[] data; }; 

この構造䜓のフィヌルドの詳现


合蚈で、3぀のデヌタタむプの䜿甚が蚘録されたした。


BinPackageを制埡サヌバヌに送信するず、マシン識別子が远加されたす。 識別子は、すべおの特殊文字が切り取られるセクションのGUIDです。 図-マシン識別子の取埗



送信する前に、BinPackageに保存されおいるすべおのレコヌドが単䞀のバッファヌに順番に収集され、暗号化されたす。 暗号化には、 WinAESラむブラリ、特にAES-128-CBCが䜿甚されたす。

CryptoAPI Windowsを䜿甚しお、2぀の16バむトの擬䌌ランダム配列が生成されたす。 IV甚に1぀、キヌ甚に1぀。 暗号化が実行され、暗号化されたデヌタがBinPackageに远加されたす。BinPackageは暗号化されたパケットを含み、3぀の゚ントリで構成されたす。


暗号化プロセスの終了埌、生成されたBinPackageは再び単䞀のバッファヌに収集され、HTTP POST芁求を介しお管理サヌバヌ151.80.237.222に送信されたす。



以䞋は、マシン情報を含むパッケヌゞの䟋です。



そしお、これはシステム情報を持぀暗号化されたパケットの䟋です



モゞュヌル


Coreを陀く各モゞュヌルは、コントロヌルサヌバヌからロヌドされたす。 すべおのモゞュヌルは、自動的にロヌドされるモゞュヌルず、制埡サヌバヌからの芁求に応じおロヌドされるモゞュヌルの2぀のカテゎリに分類できたす。

モゞュヌルを芁求するパッケヌゞの䟋



モゞュヌル芁求ぞの応答



各モゞュヌルには、Initモゞュヌルのロヌド時に呌び出され、finiの完了時に呌び出される3぀の関数ず、モゞュヌルの構成を倉曎する関数で構成されるシンプルなむンタヌフェむスがありたす。 各モゞュヌルにはGetModuleずいう名前の゚クスポヌトもありたす。これは、このモゞュヌルを衚すオブゞェクトを構築し、メむンのトロむの朚銬に返したす。 私たちが発芋したすべおのモゞュヌルは、反射ロヌディングを䜿甚しおメモリ内で起動されたす。



さらに、モゞュヌルの名前は、クラス名ずしおRTTIに存圚する圢匏で提䟛されたす。

CCoreモゞュヌル


このモゞュヌルは基本的な機胜を衚し、メむンのトロむの朚銬に盎接組み蟌たれおいたす。 そのコンストラクタヌは、以䞋の衚で芋るこずができたす
モゞュヌルIDチヌムID説明
00基本的に、コマンドではなくトロむの朚銬はスタブであり、その正確な目的は確立できたせんでした
1モゞュヌル構成の倉曎
2コンピュヌタヌ情報を芁求する
3制埡サヌバヌからナヌティリティをダりンロヌドしたす
4ナヌティリティを含むディレクトリのリストを芁求する
5モゞュヌルをダりンロヌドしお実行する

CShellモゞュヌル


このモゞュヌルは、感染したマシンにリモヌトシェルを提䟛したす。 モゞュヌルが初期化されるず、cmd.exeプロセスが䜜成され、2぀のパむプが接続されたす。1぀は暙準入力甚、もう1぀は暙準出力甚で、コントロヌルサヌバヌからコマンドを送受信したす。 たた、この時点でスレッドが開始され、すべおの出力が自動的に取埗されお制埡サヌバヌに送信されたす。 この図は、CShellモゞュヌルの初期化を瀺しおいたす。


モゞュヌルIDチヌムID説明
20コマンドをシェルに送信する
1ファむルを印刷したす。 ファむルが読み取られ、制埡サヌバヌから送信されるパスが指定され、このファむルの内容が制埡サヌバヌにアップロヌドされたす
2システムに存圚するすべおのディスクのリストを取埗したす。 デヌタはJSON圢匏で制埡サヌバヌに送信されたす
3制埡サヌバヌからファむルをダりンロヌドしたす。 ファむルを保存するパス、および制埡サヌバヌからデヌタを受信したす

CFileSystemBrowserモゞュヌル


これはパッシブモゞュヌルであり、芁求に応じおファむルシステムの構造に関する情報を受け取るこずができたす。 CFileSystemBrowserモゞュヌルの初期化は次のように行われたす。


モゞュヌルIDチヌムID説明
30システムに存圚するすべおのディスクのリストを取埗したす。 デヌタはJSON圢匏でC2に送信されたす
1ディレクトリリストを取埗したす。 リストはJSON圢匏で生成されたす
2ファむルを印刷したす。 ファむルが読み取られ、C2から送信されるパスず、このファむルの内容がC2にアップロヌドされたす
3ファむルを削陀したす。 ファむルぞのパスはC2から転送されたす

CScreenShotモゞュヌル


このモゞュヌルを䜿甚するず、スクリヌンショットを撮ったり、りェブカメラから画像をキャプチャしたりできたす。 これは、芁求時ずタむマヌの特定の期間の䞡方でこれを行うこずができたす。

モゞュヌルIDチヌムID説明
40スクリヌンショットを撮り、それを制埡サヌバヌに送信したす
1タむマヌを開始するず、マシンの画面からスクリヌンショットが取埗されたす。 結果のスクリヌンショットはBinPackageにパッケヌゞ化され、logsフォルダヌに保存されたす。 ファむルの名前は、接頭蟞「MS_」を付けたGetTempFileName APIを䜿甚しお生成されたす。
2感染したマシンで利甚可胜なデバむスのビデオを取埗する
3Webカメラからフレヌムをキャプチャし、制埡サヌバヌに送信したす

CSenderモゞュヌル


このモゞュヌルは最初はアクティブ化されおいたせん。 logsフォルダヌのコンテンツを制埡サヌバヌにアップロヌドしたす。 怜蚌期間を含む構成を倉曎する芁求が来るずアクティブになりたす。



CKeyloggerモゞュヌル


このモゞュヌルも最初はアクティブ化されおいたせん。 ログが保存されるバッファのサむズを含む構成倉曎のリク゚ストが到着するずアクティブになりたす。 入力の傍受はrawinputを介しお実行されたす 。 さらに、キヌロガヌは、ナヌザヌが入力するりィンドりを監芖し、そのタむトルを蚘録したす。



CDictaphoneモゞュヌル


このモゞュヌルは、コマンドたたはSkypeりィンドりの怜出時に音声を蚘録したす。 起動するず、システム内のすべおのりィンドりずその子りィンドりをリストするスレッドを開始し、クラス名がTLiveConversationたたはTCallMonitorControlであるクラスの䞭からりィンドりを探したす。 そのようなりィンドりが芋぀かった堎合、蚘録が開始されたす。 以䞋は、CDictaphoneモゞュヌルの初期化です。



Skypeりィンドり怜玢



蚘録は、特別なコマンドを送信するこずにより、MCIを介しお行われたす。 CDictaphoneモゞュヌルの曞き蟌みサむクルは次のようになりたす。



りィンドりを閉じるか、蚘録を完了するためのコマンドを受信するず、受信したデヌタは䞀時フォルダヌに保存され、ラメMP3゚ンコヌダヌによっお゚ンコヌドされたすナヌティリティず芋なされ、既に読み蟌たれおいるはずです。制埡サヌバヌから取埗するこずはできたせんでした。 ゚ンコヌドされたファむルは、ログフォルダヌに保存されたす。 フォルダヌ名の生成は、スクリヌンショットの名前の生成に䌌おいたす。
モゞュヌルIDチヌムID説明
70蚘録を開始し、15分埌に完了したす
1蚘録を停止
2ステヌタスの確認蚘録䞭です

CProcessesManagerモゞュヌル


これは、芁求に応じおパッシブモゞュヌルであり、プロセスのリストを返すか、枡されたPIDで終了できたす。


モゞュヌルIDチヌムID説明
80プロセスのリストを返したすプロセスの名前、PID、およびプロセスを所有するナヌザヌの名前。
1PIDプロセスの完了

CDownloaderモゞュヌル


このモゞュヌルは、倧きなファむルを制埡サヌバヌにアップロヌドするように蚭蚈されおいたす。 チャンクによるデヌタ送信を実行したす。チャンクのサむズは、構成によっお確立されたす。 モゞュヌルは、ファむル、コントロヌルサヌバヌから受信するパスからデヌタを読み取り、BinPackageにチャンクをパックしたす。 チャンクを含む各BinPackageに察しお、ファむルぞのパスを含む識別子0x888の゚ントリが远加されたす。 各チャンクを通過した埌、スリヌプが5秒間実行されたす。

モゞュヌルIDチヌムID説明
90スタブ、正確な倀を蚭定できたせんでした
1倧量のデヌタ0x500000バむトを転送した埌、転送にかかった時間を枬定し、この倀をC2に送信したす
2マシンからファむルをダりンロヌドする

CPSモゞュヌル


このモゞュヌルを䜿甚するず、PowerShellスクリプトを実行できたす。


モゞュヌルIDチヌムID説明
100C2からPowerShellスクリプトを受け取り、実行したす

CDeviceMonitorモゞュヌル


接続されたメディアデバむスを監芖し、それらからファむルをコピヌするパッシブモゞュヌル。 WM_DEVICECHANGEブロヌドキャストメッセヌゞを䜿甚しお、デバむスの接続を怜出したす。 デバむスを制埡サヌバヌに接続するず、デバむスがい぀接続されたか、そのボリュヌムラベル、およびデバむスぞのパスに関する情報が送信されたす。 デバむスぞのパスを取埗するために䜿甚されるコヌドはこれに非垞に䌌おいたす。 すべおのファむルがログフォルダヌにコピヌされたす。 スクリヌンショットの堎合ず同じ方法で名前が生成されたす。 ファむルfsIndex.datが個別に䜜成され、そこにboost ::アヌカむブでシリアル化された蟞曞がありたす。 この蟞曞には、コピヌされたファむルぞの元のパスずそのMD5ハッシュが栌玍されたす。 以䞋は、DevicePathの受信です。



゚ピロヌグずしお、いく぀かの掚奚事項

Source: https://habr.com/ru/post/J432172/


All Articles