※本記事は2017年2月14日に米国で掲載されたブログ記事の抄訳を基にしています。

Palo Alto Networksの脅威インテリジェンスチーム「Unit 42」は、継続中のSofacyのKomplexトロイの木馬に関するリサーチにおいて、SofacyのWindows版トロイの木馬XAgentのmacOS版の新たな亜種を発見しました。このバックドア型トロイの木馬は、macOSシステムを使っている個人を標的にする際にSofacyグループが使用しているものと考えられます。作成者は、XAgentOSXと名前を付けました。これは、SofacyのWindows版トロイの木馬の1つとXAgentという名前を使い、さらにAppleのmacOSの従来の名称OS Xを組み合わせたものです。KomplexツールとXAgentOSXツールの内部にある以下のプロジェクト パスに類似点が見られることから、どちらのツールも同じ攻撃者が開発したと考えられます。

Komplex: /Users/kazak/Desktop/Project/komplex

XAgent OSX: /Users/kazak/Desktop/Project/XAgentOSX

SofacyがKomplexを使ってXAgentOSXツールをダウンロード、インストールし、侵入されたシステムでこのツールの拡張コマンド セットを使用していると考えられます。

XAgentのC2通信

XAgent のmacOS版亜種、XAgentはコマンド アンドコントロール (C2)チャネルを介して攻撃者からコマンドを受信する能力がありますが、自身のキーロガー機能を使ってキーストロークを記録することもできます。XAgentはHTTPリクエストを使って自身のC2サーバと通信を行います。これにより攻撃者は侵害を受けたシステムと繋がることができます。

このトロイの木馬は、HTTP POSTリクエストを使って図1のようにC2サーバにデータを送信し、GETリクエストを使って図2のようにサーバからコマンドを受信します。このトロイの木馬とC2サーバとの間でやり取りされるデータの特定を突き止めるため、私たちは今でもトロイの木馬の分析を続けていますが、HTTP POSTリクエスト内のC2サーバに送信されるデータを暗号化するのに、このトロイの木馬がRC4アルゴリズムを使っていることは明らかです。

図1 XAgent macOSのHTTP POSTリクエスト

図2 XAgent macOSのHTTP GETリクエスト

XAgentOSXが生成するC2 URLは、Windows版が生成するものに極めて類似しています。C2サーバに対して発行されるHTTPリクエスト用にURLを生成する際、このトロイの木馬は下記の中からランダムにフォルダを1つ選んでURLパスに含めます。

watch/?
search/?
find/?
results/?
open/?
search/?
close/?

また、XAgentはC2 URLの構築が完了すると、下記リストの中からパラメータ名もいくつか選びます。

itwm=
text=
from=.
itwm=
ags=
oe=
aq=
btnG=
oprnd=
itwm=
utm=
channel=

XAgent OSXトロイの木馬は“agent_id”として参照するシステム特定の値を生成します。これは侵害を受けた各ホストに付けられた固有の識別子です。この値はIOPlatformUUIDプロパティにアクセスするためのIOServiceに由来しており、システム情報アプリケーション内でリストアップされる“Hardware UUID”に相当するものです。図3に示す分析システムのスクリーンショットでは、トロイの木馬は、このハードウェアIDの先頭4バイトを一意のシステム識別子として使っており、今回の場合は“0000”と表示されています。

図3 XAgentが侵害されたホストを一意的に識別するために使用するハードウェアID

HTTP POSTリクエストおよびGETリクエスト内のURLを生成する際、XAgentは、このagent_id値を含む特定のデータ構造体を使って、HTTPパラメータを1つ設定します。このパラメータにより、agent_idがC2サーバに送信されますが、その目的は攻撃者が侵入されたシステム上で実行したいコマンドを取得することです。このagent_idをC2に送信するのに使われるデータ構造体は次のようになります。

struct {
DWORD random_value_for_key;
CHAR[7] constant_value;
DWORD agent_id;
}

データ構造体に含まれる定数値は7バイトの文字列で、“\x56\x0E\x9F\xF0\xEB\x98\x43”にハードコード化されており、この後にagent_id値(今回の場合は“0000”)が続きます。データ内の最初のDWORDはランダムな値であり、これをトロイの木馬はXORキーとして使って、前記の定数値とagent_idを暗号化します。例えば、分析中、下記の15バイトはHTTPを生成するのに使われていました。

 

ランダム値

定数値

agent_id

0F EE C8 83

56 0E 9F F0 EB 98 43

30 30 30 30

 

そのあと、結果として得られた暗号化テキストは、XAgentのBase64エンコード処理ルーチンを使ってエンコードされます。このルーチンは、まず、次のエンコード用アルファベットの構築を行います。

ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_

見て分かるとおり、これは標準のBase64アルファベットではなく、RFC 4648の“URL and Filename safe”のBase 64アルファベットであり、標準アルファベットの“+”が“-”で、さらには“/”が“_”で置き換えられています。このアルファベットによりBase64エンコード処理関数を使ってデータをエンコードすると、上記の例の場合、次の結果を得ます。

D-7Ig1ngV3PkdouzP974

次に、トロイの木馬は9個のランダムなシンボルから構成される文字列を作成し、このランダム文字列の後に前記エンコード済み暗号化テキストを付加します。例えば、下記文字列は、C2サーバに送信されるHTTPパラメータの1つの中に含まれることになるでしょう。

eRmaVsr90D-7Ig1ngV3PkdouzP974

本件の場合、攻撃者はこのXAgentサンプルのC2位置に関する設定を行う際にミスをしました。サンプルは配列を作成し、その中にトロイの木馬がC2位置として使う、以下の文字列を入れます。

http://23.227.196[.]215/
http://apple-iclods[.]org/
http://apple-checker[.]org/
http://apple-uptoday[.]org/
http://apple-search[.]info

最後の文字列に末尾に置かれる“/”がないことで、トロイの木馬がこの文字列を使ってC2のURLの残りの部分を構築する際、問題が生じます。トロイの木馬がこの文字列の直後に、URL内にある後続文字列を付加するからです。例えば、この字列を使っている場合、“apple-search.infoclose”を探すDNSクエリを確認しました。これは、文字列“close”がC2のURLの後続部分であると想定されていたためです。

提供コマンド

XAgentのC2サーバは、侵害されたシステム上でトロイの木馬が実行するためのコマンドを、インバウンドのHTTPリクエストに対する応答の中に含めて提供します。XAgentOSXトロイの木馬は、コマンドに対する応答をHTMLタグで挟みます。これによりC2サーバが閲覧目的でログを成形することができるものと考えられます。

ほとんどの場合、C2サーバに送信されるレスポンスは“<font size=4 color=000066><pre>”および“</pre></font>”というHTMLタグの間に置かれます。このコマンド ハンドラを分析したところ、完全に機能するバックドアに必要なコマンド(表1)を提供していました。コマンド ハンドラはコマンド識別子をC2サーバから取得し、0xFFFFFF9Bをこの値に可算します。次に、switch文を使って適切なコマンドを求め、実行します。このswitch文によるチェックが19個の場合分けをしているため、コマンド識別子の値は100から118までであることが伺えます。

コマンドID

機能

 説明

100

getInfoOSX

ユーザー名およびOSXのバージョンを収集し、次の文字列を暗号化した形で使って応答します。“Mac OS X – [OSXのバージョン] x64<br>\nUser name – [ユーザー名]”

101

getProcessList

“ps aux”を実行して起動中のプロセスの一覧を取得します。

102

remoteShell

与えられたコマンド、“/bin/sh”を実行します。

103

getInstalledAPP

インストール済みアプリケーションの一覧をコマンド“ls -la /Applications”の実行により取得します。

104

showBackupIosFolder

IOSデバイスのバックアップがシステムに置かれたか否か、コマンド“ls -la ~/Library/Application\ Support/MobileSync/Backup/”を実行することで判断します。

105

downloadFileFromPath

指定されたパスからファイルをアップロードします。

106

createFileInSystem

C2サーバのHTTP応答内の特定ファイルをダウンロードし、提供します。

107

execFile

NSTask:launchメソッドを使って、システム上の指定されたファイルを実行します。

108

deletFileFromPath

NSFileManager:removeFileAtPathメソッドを使って、指定されたファイルを削除します。

109

takeScreenShot

CGGetActiveDisplayListメソッド、CGDisplayCreateImageメソッド、NSImage:initWithCGImageメソッドを使って、スクリーンショットを撮ります。次のコードを使ってC2にスクリーンショットを返します。 <img src=’data:image/jpeg;base64,[base64 of screenshot]’ width=800 height=500 /><br>

110

startTakeScreenShot

スレッドを生成し、設定済みの間隔(デフォルトは10秒ごと)でスクリーンショットを撮ります。“takeScreenShot”関数内の同じメソッドを使います。

111

stopTakeScreenShot

“startTakeScreenShot”関数内で生成されたスレッドを終了します。

115

getFirefoxPassword

パス内の“/Firefox/Profiles”というフォルダを探し、“logins.json”ファイルの内容を読み、“hostname”、“encryptedUsername”、および“encryptedPassword”のエントリを探します。また、“signons.sqlite”ファイルに関する次のSQLクエリの発行も試みます。“SELECT hostname, encryptedUsername, encryptedPassword FROM moz_logins WHERE timePasswordChanged/1000 BETWEEN ? AND ?”

116

ftpUpload

FTPManager:uploadFileメソッドおよび与えられたサーバ名、ユーザー名、およびパスワードを使います。

117

ftpStop

“stopOperation”メソッドを呼び出しますが、FTPアップロードは停止させないようです。

118

readFiles

ファイルまたはフォルダに関するファイル情報を取得します。また、“*”ワイルドカードおよび再帰的なファイル一覧に対応しています。コードは、情報を収集し、表作成用の以下のHTMLを使って一覧を整形します。

<table>
<tr><td><table>
<tr><td>Type</td><td>Owner</td><td>Permissions</td><td>Created</td><td>Modificated</td><td>Size</td><td>Path</td></tr>
<tr><td>[fileType]</td><td>[fileOwnerAccountName]</td><td>[number filePosixPermissions]</td><td>[fileCreationDate]</td><td>[fileModificationDate]</td><td>[fileSize]</td><td>[file path?]</td></tr></td></tr>

</table>
</table>

表1 XAgent OSX内で利用可能なコマンド

上記‘showBackupIosFolder’は興味深いコマンドです。このコマンドにより、攻撃者は侵入されたシステムがiPhoneまたはiPadなどのIOSデバイスをバックアップするのに使われていたか否か、判断することができるからです。モバイルデバイスがバックアップされていたか否かの判断に、このコマンドが使われているものと考えられます。また、攻撃者がXAgent内の別のコマンドを使ってこうしたファイルを抜き取ろうとすることもあると思われます。

キーロギング機能

XAgentにはキーロガー機能も備えており、この機能により、攻撃者は、ユーザーがキー入力をするときに認証情報を盗み出します。XAgentは、キー押下を検出したときに、CGEventTapCreate関数を呼び出すことでキーストロークをロギングします。この関数は、_myCGEventTapCallBackという名前のコールバック関数を呼び出すためのイベント フックを設定します。このコールバック関数は、キーストロークをロギングする役目を担っているpressedKeyWithKeyCodeという名前の関数を呼び出します。このキーロガーはアクティブなアプリケーション ウィンドウを監視し、次の形式でログに書き込みます。

<span class=’keylog_process’>[アプリケーション名]</span>

キーロガーは、設定可能な数のキーストローク(デフォルトは50)をロギングした後、このログを次の形式でC2サーバに送信します。

<span class=’keylog_user_keys’>[ロギングされたキーストローク]</span>

キーロガーは、リターン キーやファンクション キーなどの特殊キーのロギングを処理することができ、これらを次の形式でログ内に記録します。

<span class=’keylog_spec_key’>[特殊文字]</span>

インフラストラクチャ

Unit 42が分析したXAgentOSXサンプルは、以下のIPアドレスおよびドメイン名をC2サーバとして使うよう設定されていました。:

23.227.196[.]215
apple-iclods[.]org
apple-checker[.]org
apple-uptoday[.]org
apple-search[.]info

このサンプルを分析した際、予備のC2位置として使われていたドメイン名は登録されていませんでした。したがって、これらのドメインは、別のインフラストラクチャへのリンクがありませんでした。また、主要のC2位置である23.227.196[.]215に基づく、別のインフラストラクチャは何も見つかりませんでした。しかし、CrowdStrikeによれば、近接するIPアドレス23.227.196[.]217はSofacyグループが米国の民主党全国委員会への攻撃に使ったXTunnelペイロード用のC2位置だと判明しました。これらのIPアドレスは直接的に重複してはいませんが、Sofacyグループが自分たちのインフラストラクチャをホスティングするため、同じホスティングサービスを利用し続けていることは明らかです。

結論

Sofacyグループは、複数のプラットフォームで攻撃活動を成し遂げるため、自分たちのツールの強化をし続けています。本件の場合、この脅威グループは、Windows版のツールの1つと同じ名前のXAgentをこのmacOS版のツール向けに使いました。また、このツールのmacOS版亜種は、Windows版と類似のネットワーク通信方法を使っているため、Unit 42がKomplexとSeduploader (以前の呼称はSofacy Carberp)ツールの比較をしている中で、このグループが侵害されたホストを制御するために、統合化されたC2サービスを利用し続けていることが分かりました。また、攻撃テレメトリを欠いているものの、私たちはSofacyによって仕掛けられた米国民主党全国委員会への攻撃活動との緩やかな繋がりが2つの攻撃におけるホスティング データを見て判断できました。

Palo Alto Networksのお客様は、以下の通り、XAgentOSX の攻撃から保護されています。

  • 既知のサンプルが、WildFireにより悪意のあるものとして検出されます。
  • すべての既知のC2位置が、PAN-DBで悪意があるものとしてマークされます。
  • お客様はAutoFocusのタグXAgentを使ってこの脅威を追跡できます。

 

セキュリティ侵害の兆候

SHA256

2a854997a44f4ba7e307d408ea2d9c1d84dde035c5dab830689aa45c5b5746ea

コマンド&コントロール

23.227.196[.]215
apple-iclods[.]org
apple-checker[.]org
apple-uptoday[.]org
apple-search[.]info


 関連コンテンツ

パロアルトネットワークス管理者ガイド日本語版

このガイドで、パロアルトネットワークスのファイアウォールのWeb管理画面の使用方法を説明します。対象は設置、運用管理、メンテナンスを行うシステム管理者向けです。 ※このページで提供する管理者ガイドが最新版でない可能性があります。最新版に関しては、製品をご購入された販売代理店にご相談ください。  

  • 0
  • 591

4月28日(金)製品導入・運用支援トレーニング

『次世代ファイアウォール製品導入・運用支援トレーニング』を下記の日程にて開催いたします。本トレーニングは、パロアルトネットワークス製品であ るPAシリーズのハンズオンを通して、導入ならびに運用を行うための基本技術知識を習得頂くことに主眼をおいています。この機会に是非皆様の参加をご検討 いただけますよう心よりお待ち申しています。 【日  時】 2017年4月28日(金) 13:30~17:00(受付13:00~) ※終了時刻は多少前後します。  【会  場】 パロアルトネットワークス 3F 【講  師】 パロアルトネットワークス SE 【内  容】 製品の導入・運用の流れ 設定マイグレーション 可視化ツール ログ管理 セキュリティ調査 Unknown通信や誤検知への対応 シグネチャアップデート アップグレード 【持  物】 PCは弊社でご用意しております。 ご自身のMACノートブックをお持込みになりたい場合は次の準備をお願い致します。 Ethernetアダプタ(LANポートがないモデルの場合) マイクロソフト Remote Desktop Connectionクライアントソフトウェア 次のURLよりソフトウェアのダウンロードが可能です http://www.microsoft.com/japan/mac/download 【人  数】 8名(定員になり次第締め切ります)  ※ご登録後にキャンセルをされる場合は、必ずイベント事務局までご連絡をお願いいたします。 【対  象】  PAシリーズを既に導入・運用を行っているシステムエンジニア(エンドユーザー様) ※参加条件として製品実感トレーニングを修了済みである必要があります。 ※導入ユーザ企業様を優先とさせていただきます。 【費  用】 無料  ※お申し込み後に登録確認メールが送付されます。届かない場合は、メールアドレスの誤入力等の可能性がございますので、イベント事務局 paloalto@mlrev.co.jp までお問い合わせください。 ※開催3日前の時点でお申し込みが5名に達しない場合は、イベント開催をキャンセルさせていただきますので予めご了承ください。 ◆個人情報の取り扱いについて◆ パロアルトネットワークスは、当社が出展または主催する展示会・セミナーのご案内、当社が提供する商品・サービスに関するご案内など各種情報のご提供、及び当社営業部門または販売代理店、マーケティングサービス会社からのご連絡などを目的として、取得した個人情報を利用させていただくことがあります。当社は、ご提供いただいた個人情報を、法令に基づく命令などを除いて、あらかじめお客様の同意を得ずに第三者に提供することはありません。ただし、上記利用目的の範囲においてお客様の個人情報を弊社販売代理店および弊社と個人情報取扱いについて契約のある委託業者が閲覧する事がございます。 ※上記利用目的にご同意いただける場合にのみ、本セミナーにご応募いただきますようお願いします。 ※以前より情報をご提供いただいている場合、今回ご提供いただいた情報を最新の情報としてデータを上書きさせていただきます。 ※「個人情報保護基本方針」および「『個人情報の保護に関する法律』に関する公表事項」は、下記URLよりご覧いただけます。 https://www.paloaltonetworks.jp/legal/privacy.html

イベント
千代田区
  • 0
  • 356

PA-3000シリーズ スペックシート

PA-3000シリーズの主な機能、パフォーマンスと容量、および仕様。

  • 0
  • 318

Tsunamiの亜種である新しい IoT/Linux マルウェアがデジタルビデオレコーダーを標的に

パロアルトネットワークスの脅威インテリジェンスチーム「Unit 42」は、新しい IoT/Linux ボットネット「Tsunami」の亜種である「Amnesia」を発見しました。Amnesia ボットネットによる攻撃は、TVT Digital 社ならびに TVT Digital 社から供給を受けた世界 70 以上のベンダーブランドによる DVR (デジタル ビデオ レコーダー) 機器に存在する、パッチを適用されていないリモートコード実行に関する脆弱性を狙います。

  • 0
  • 284

製品概要スペックシート

  • 0
  • 261

日本の学術研究者と 組織を狙った新たな攻撃

パロアルトネットワークスの脅威インテリジェンスチーム「Unit 42」は、2016年の9月から11月にかけて、「menuPass」として知られる攻撃グループによるAPT攻撃(持続型の標的型攻撃)が、日本の学術研究者および製薬企業、米国に子会社を置く製造業を対象にしていたことを確認しました。この攻撃では、トランプ氏の選挙での勝利に便乗した件名などを使用した、スピアフィッシング攻撃が用いられています。

  • 0
  • 250