AppleScriptを利用したクリプトジャッカー、OSAMinerが5年も潜伏②

OSAMiner: The Apple cryptojacker that hid for five years

実行専用の埋め込みAppleScriptの分析

OSAMinerに関連付けられているファイルのうち、いくつかは拡張子が「.plist」のプロパティリストファイルでしたが、正しいプロパティリストファイルは1つのみだったため、調査はこのファイルから開始しました。単純なファイルでしたが、このクリプトジャッキング攻撃で使用された重要なファイルの配布に関わっていました。

Filename: com.apple.FY9.plist
MD5: 414205439abd5751c0d410fa2ccd539b
SHA-256: 9ad23b781a22085588dd32f5c0a1d7c5d2f6585b14f1369fd1ab056cb97b0702

OSAMiner - code capture 1

該当する部分は10~14行目の配列です。「osascript」が繰り返し出てくるのは、まったく異質で目を引きます。また、クリプトマイニングにOpen Scripting Architecture(OSA)スクリプトを使用していることが、OSA Minerという名前につながりました。しかし、このスクリプトで特に興味深いのは13行目です。このマルウェアを分析するための道筋を示してくれるためです。この行は、「do shell script」スクリプトを使用して、/Library/LaunchAgents/ディレクトリから「com.apple.4V.plist」を呼び出しています。

調査の結果、com.apple.4V.plistはプロパティリストファイルではなく、実行専用AppleScriptファイルだということがわかりました。このファイルの分析は少し困難でしたが、詳しく調べると、ファイル内に複数の16進コードが見つかりました。この発見と、AppleScriptの最初と最後にあるAppleのマジックストリングについての知識とを結び付けて、ファイルの中に隠れていた2つ目の実行専用AppleScriptを特定することができました。これは以前調査したバージョンには無い、OSAMinerの新しい手口です。この手口により、自動化によるマルウェアの分析がさらに難しくなります。

さて、これで親スクリプトと埋め込みスクリプトの両方がそろったため、それぞれの役割を突き止めるために、それらを逆アセンブルして調べたところ、特に注目すべき機能の1つがすぐに見つかりました。スクリプトに埋め込まれたデコード関数です。スクリプト全体で何度か呼び出され、スクリプト内の16進数の難読化を解除するのに使用されています。また、このマルウェアで使用されているファイルの最終的な調査を可能する逆コンパイラに、このロジックが利用されています。

Filename: com.apple.4V.plist
MD5: 831c1ec1b594ace3c97787b077ba9dac
SHA-256: df550039acad9e637c7c3ec2a629abf8b3f35faca18e58d447f490cf23f114e8

OSAMiner - code capture 2

今の時点で、このOSAMinerの最新の亜種である実行専用埋め込みAppleScriptの調査に必要なものは、すべて揃いました。この亜種の名前のない「main」関数として、親ファイルからのエンコードおよびデコード関数が存在しますが、その一方で、最も注目すべき変更の1つは、プロセスを強制終了するために存在している「kPro」関数です。kProは具体的には、アクティビティモニターアプリや、一般的なマルウェア対策アプリケーションを強制終了させる機能です。しかし、Acronis Cyber Protectはこの機能の影響を受けず、継続的な保護が可能です。

Filename: k.plist or em.scpt
MD5: f591fcb164d2d66910a9bbac495a721e
SHA-256: f145fce4089360f1bc9f9fb7f95a8f202d5b840eac9baab9e72d8f4596772de9

OSAMiner - code capture 3

ここに表示した文字列は完全には判読できませんが、もう一度逆コンパイルすると、システムコマンド、およびAEVT(つまり「AppleEvent」)コードがかなり読みやすくなります。後は、このスクリプトが何をしているのかを正確に突き止めるために、これらの関数がどこで、どのように呼び出されるのかを調査するだけです。特にこの更新済みファイルは、OSAMinerが検知を回避できるように設計されています。