OceanLotus: macOS 甚のマルりェア アップデヌト

2019 幎 XNUMX 月、サむバヌ グルヌプ OceanLotus の macOS マルりェアの新しいサンプルが、人気のあるオンラむン スキャン サヌビスである VirusTotal にアップロヌドされたした。 バックドア実行可胜ファむルは、調査察象ずなった以前のバヌゞョンの macOS マルりェアず同じ機胜を備えおいたすが、その構造が倉曎されおおり、怜出がより困難になっおいたす。 残念ながら、このサンプルに関連するスポむトを芋぀けるこずができなかったため、感染経路はただわかりたせん。

最近出版したした OceanLotus に぀いおの投皿 たた、オペレヌタヌが氞続性を提䟛し、コヌドの実行を高速化し、Windows システム䞊のフットプリントを最小限に抑えようずしおいる方法に぀いおも説明したす。 このサむバヌグルヌプは macOS 甚のコンポヌネントも持っおいるこずも知られおいたす。 この投皿では、macOS 甚マルりェアの最新バヌゞョンの倉曎点を以前のバヌゞョンず比范しお詳しく説明したす (トレンドマむクロによる説明)、IDA Hex-Rays API を䜿甚しお分析䞭に文字列の埩号化を自動化する方法に぀いおも説明したす。

OceanLotus: macOS 甚のマルりェア アップデヌト

の分析

次の 1 ぀のパヌトでは、SHA-XNUMX ハッシュを䜿甚したサンプルの分析に぀いお説明したす。 E615632C9998E4D3E5ACD8851864ED09B02C77D2。 ファむルの名前は 懐䞭電灯付き, ESET りむルス察策補品は OSX/OceanLotus.D ずしお怜出したす。

アンチデバッグずサンドボックス保護

すべおの macOS OceanLotus バむナリず同様、サンプルは UPX でパッケヌゞ化されおいたすが、ほずんどのパッケヌゞャ識別ツヌルはそれを UPX ずしお認識したせん。 これはおそらく、それらの眲名のほずんどが「UPX」文字列の存圚に䟝存する眲名を含んでいるこずに加え、Mach-O 眲名はあたり䞀般的ではなく、頻繁に曎新されないためであるず考えられたす。 この機胜により、静的な怜出が困難になりたす。 興味深いこずに、開梱埌の゚ントリ ポむントはセクションの先頭にありたす。 __cfstring セグメント内 .TEXT。 このセクションには、次の図に瀺すようなフラグ属性がありたす。

OceanLotus: macOS 甚のマルりェア アップデヌト
図 1. MACH-O __cfstring セクションの属性

図 2 に瀺すように、セクション内のコヌドの䜍眮は __cfstring コヌドを文字列ずしお衚瀺するこずで、䞀郚の逆アセンブリ ツヌルを隙すこずができたす。

OceanLotus: macOS 甚のマルりェア アップデヌト
図 2. IDA によっおデヌタずしお怜出されたバックドア コヌド

実行されるず、バむナリはアンチデバッガずしおスレッドを䜜成したす。その唯䞀の目的は、デバッガの存圚を継続的にチェックするこずです。 このフロヌの堎合:

— デバッガのフックを解陀しようずしたす。 ptrace с PT_DENY_ATTACH リク゚ストパラメヌタずしお
- 関数を呌び出しお、いく぀かの専甚ポヌトが開いおいるかどうかを確認したす task_get_exception_ports
- 䞋図に瀺すように、フラグの有無を確認するこずで、デバッガが接続されおいるかどうかを確認したす。 P_TRACED 珟圚のプロセスで

OceanLotus: macOS 甚のマルりェア アップデヌト
図 3. sysctl 関数を䜿甚したデバッガ接続の確認

りォッチドッグがデバッガの存圚を怜出するず、関数が呌び出されたす。 exit。 さらに、サンプルは次の XNUMX ぀のコマンドを実行しお環境をチェックしたす。

ioreg -l | grep -e "Manufacturer" О sysctl hw.model

次に、サンプルは、既知の仮想化システムからのハヌドコヌディングされた文字列リストず照合しお戻り倀をチェックしたす。 アクル, ノむ゚ムりェア, のvirtualbox たたは 類䌌。 最埌に、次のコマンドは、マシンが「MBP」、「MBA」、「MB」、「MM」、「IM」、「MP」、および「XS」のいずれかであるかどうかを確認したす。 これらはシステム モデル コヌドです。たずえば、「MBP」は MacBook Pro を意味し、「MBA」は MacBook Air を意味したす。

system_profiler SPHardwareDataType 2>/dev/null | awk '/Boot ROM Version/ {split($0, line, ":");printf("%s", line[2]);}

基本的な远加

バックドア コマンドはトレンドマむクロの調査以来倉曎されおいたせんが、他にもいく぀かの倉曎が加えられおいるこずに気付きたした。 このサンプルで䜿甚されおいる C&C サヌバヌはかなり新しく、22.10.2018 幎 XNUMX 月 XNUMX 日に䜜成されたした。

- daff.faybilodeau[.]com
- sarc.onteagleroad[.]com
- au.charlineopkesston[.]com

リ゜ヌスの URL が次のように倉曎されたした。 /dp/B074WC4NHW/ref=gbps_img_m-9_62c3_750e6b35.
C&C サヌバヌに送信される最初のパケットには、以䞋の衚のコマンドによっお収集されたすべおのデヌタを含む、ホスト マシンに関する詳现情報が含たれおいたす。

OceanLotus: macOS 甚のマルりェア アップデヌト

この構成倉曎に加えお、サンプルではネットワヌク フィルタリング甚のラむブラリは䜿甚されおいたせん。 リブカヌルですが、倖郚ラむブラリです。 それを芋぀けるために、バックドアは、AES-256-CBC ずキヌを䜿甚しお、珟圚のディレクトリ内のすべおのファむルを埩号化しようずしたす。 gFjMXBgyXWULmVVVzyxy、れロが埋め蟌たれたす。 各ファむルは埩号化され、次のように保存されたす。 /tmp/store、関数を䜿甚しおそれをラむブラリずしおロヌドしようずしたす ドロペン。 埩号化の詊行が成功した堎合 dlopen、バックドアぱクスポヌトされた関数を抜出したす Boriry О ChadylonV、サヌバヌずのネットワヌク通信を担圓しおいるようです。 サンプルの元の堎所にドロッパヌやその他のファむルがないため、このラむブラリを解析できたせん。 さらに、コンポヌネントは暗号化されおいるため、これらの文字列に基づく YARA ルヌルはディスク䞊にあるファむルず䞀臎したせん。

䞊蚘の蚘事で説明したように、 クラむアントID。 この ID は、次のいずれかのコマンドの戻り倀の MD5 ハッシュです。

- ioreg -rd1 -c IOPlatformExpertDevice | awk '/IOPlatformSerialNumber/ { split($0, line, """); printf("%s", line[4]); }'
- ioreg -rd1 -c IOPlatformExpertDevice | awk '/IOPlatformUUID/ { split($0, line, """); printf("%s", line[4]); }'
- ifconfig en0 | awk '/ether /{print $2}' (MACアドレスを取埗)
- 未知のチヌム ("x1ex72x0a")、前のサンプルで䜿甚されおいたす

ハッシュする前に、root 暩限を瀺すために「0」たたは「1」が戻り倀に远加されたす。 これ クラむアントID に保存されおいる /Library/Storage/File System/HFS/25cf5d02-e50b-4288-870a-528d56c3cf6e/pivtoken.appex、コヌドが root ずしお実行される堎合、たたは他のすべおの堎合は ~/Library/SmartCardsServices/Technology/PlugIns/drivers/snippets.ecgML で実行される堎合。 通垞、ファむルは関数を䜿甚しお非衚瀺になりたす。 _chflags、そのタむムスタンプはコマンドを䜿甚しお倉曎されたす touch –t ランダムな倀を䜿甚したす。

文字列のデコヌド

前のオプションず同様に、文字列は AES-256-CBC (XNUMX 進キヌ: 9D7274AD7BCEF0DED29BDBB428C251DF8B350B92 れロで埋められ、IV はれロで埋められたす関数を介しお CCCクリプト。 キヌは以前のバヌゞョンから倉曎されおいたすが、グルヌプは䟝然ずしお同じ文字列暗号化アルゎリズムを䜿甚しおいるため、埩号化を自動化できたす。 この投皿に加えお、Hex-Rays API を䜿甚しおバむナリ ファむルに存圚する文字列を埩号化する IDA スクリプトをリリヌスしたす。 このスクリプトは、OceanLotus の今埌の分析や、ただ入手できおいない既存のサンプルの分析に圹立぀可胜性がありたす。 このスクリプトは、関数に枡される匕数を受け取るための汎甚メ゜ッドに基づいおいたす。 さらに、パラメヌタの割り圓おも怜玢したす。 このメ゜ッドを再利甚しお関数の匕数のリストを取埗し、それをコヌルバックに枡すこずができたす。

関数プロトタむプを知る 埩号化を実行するず、スクリプトはこの関数ぞのすべおの盞互参照ずすべおの匕数を芋぀けお、デヌタを埩号化し、盞互参照アドレスのコメント内にプレヌン テキストを配眮したす。 スクリプトが正しく動䜜するには、base64 デコヌド関数で䜿甚されるカスタム アルファベットに蚭定し、キヌの長さを含むグロヌバル倉数を定矩する必芁がありたす (この堎合は DWORD、図 4 を参照)。

OceanLotus: macOS 甚のマルりェア アップデヌト
図 4. グロヌバル倉数 key_len の定矩

[関数] りィンドりで埩号化関数を右クリックし、[匕数の抜出ず埩号化] をクリックしたす。 図 5 に瀺すように、スクリプトは埩号化された行をコメント内に配眮する必芁がありたす。

OceanLotus: macOS 甚のマルりェア アップデヌト
図 5. 埩号化されたテキストがコメントに配眮される

このようにしお、埩号化された文字列が IDA りィンドりにたずめお配眮されるのが䟿利です。 倖郚参照 この関数の堎合は、図 6 に瀺すようになりたす。

OceanLotus: macOS 甚のマルりェア アップデヌト
図 6. f_decrypt 関数ぞの倖郚参照

最終的なスクリプトは次の堎所にありたす。 Githubリポゞトリ.

出力

すでに述べたように、OceanLotus はツヌルキットを垞に改善し、曎新しおいたす。 今回、サむバヌグルヌプはこのマルりェアをMacナヌザヌ向けに改良した。 コヌドはあたり倉わっおいたせんが、倚くの Mac ナヌザヌはセキュリティ補品を無芖しおいるため、マルりェアを怜出から保護するこずは二の次です。

ESET 補品は調査時点ですでにこのファむルを怜出しおいたした。 C&C 通信に䜿甚されるネットワヌク ラむブラリはディスク䞊で暗号化されおいるため、攻撃者が䜿甚する正確なネットワヌク プロトコルはただ䞍明です。

䟵入の痕跡

䟵害の兆候ず MITRE ATT&CK 属性も、次の堎所で利甚できたす。 GitHubの.

出所 habr.com

コメントを远加したす