これまでに報告されたことのないサイバースパイプラットフォーム「Attor」をESETの研究者が検出しました。
本記事では、C&Cサーバーとのネットワーク通信に匿名性が高く追跡を困難にするTor(The Onion Router)を組み込み、攻撃者がターゲットごとに異なるGSMデバイスのフィンガープリンティング機能を使用しているAttorの巧妙な手法について調査結果を解説しています。
本記事はESET Japanが提供する「ESETブログ」に掲載された「GSMフィンガープリンティングを実行する今までにないスパイプラットフォームAttorを検出」を再編集したものです。
標的
Attorのスパイ活動の対象は非常に限定されています。Attorの活動は、少なくとも2013年までさかのぼることができましたが、特定できた被害者は僅か数十人でしたが、マルウェア内のアーチファクトを分析することで、標的になった攻撃対象について詳細を把握できました。
たとえば、標的ユーザーの行動をレポートできるようにするため、Attorは実行されているプロセスを監視して、選択したアプリケーションのスクリーンショットを取得します。特定のアプリケーション(プロセス名またはウィンドウタイトルに特定の部分文字列が含まれるアプリケーション)のみが対象となります。
一般的なWebブラウザ、インスタントメッセージングアプリケーション、電子メールサービスなどの標準的なサービスに加えて、対象となったアプリケーションのリストには、ロシア語のいくつかのサービスが含まれています。表1に詳細を示します。
プロセス名/ウィンドウタイトルのサブタイトル | コンテナセキュリティ |
---|---|
ОДНОКЛАССНИКИ (transl. Classmates) | ロシアのソーシャルネットワーク(Odnoklassniki) |
AGENTVKONTAKTE | ロシアのソーシャルネットワーク(VKontakte) |
WEBMONEY | ロシアで使用されているオンラインペイメントシステム(WebMoney) |
MAIL.YANDEX, ЯНДЕКС.ПОЧТА (transl. Yandex.Mail), MAIL.RU, POCHTA (transl. Mail), MAGENT | ロシアの電子メールサービス(Mail.ru, Yandex.Mail) |
ПРИГЛАШЕНИЕ ДРУЖИТЬ (transl. Friend request) | ロシア語テキスト |
ВАМ СООБЩЕНИЕ (transl. Message for you) | ロシア語テキスト |
MULTIFON | ロシアのVoIPサービス |
QIP, INFIUM | ロシアのIMアプリケーション(QIP) |
RAMBLER | ロシアの検索エンジン(Rambler) |
このリストには、ロシアで最も人気のある2つのソーシャルネットワーク(Odnoklassniki、VKontakte)と、ロシアの通信事業者(Multifon)が提供するVoIPサービスが含まれています。Attorは、ロシア語を使用するユーザーをターゲットにしているとESETは結論付けました。これは、図1に示すように、ほとんどの標的がロシアに存在しているという事実によってさらに裏付けられています。その他の標的は、東欧に存在しており、外交使節団や政府機関が含まれます。
Attorの作成者は、特定の地理および言語を標的にしていますが、プライバシーに関心のあるユーザーを特に標的にしていると考えられます。
Attorは、暗号化/デジタル署名ユーティリティ、VPNサービスHMA、エンドツーエンドの暗号化電子メールサービスHushmailとThe Bat!、およびディスク暗号化ユーティリティTrueCryptのスクリーンショットをキャプチャするように構成されています。
ユーザーのTrueCryptの使用状況は、Attorの別のコンポーネントによってさらに詳細に検査されます。乗っ取ったコンピュータに接続されているハードディスクデバイスを監視し、TrueCryptが存在しているかどうかを検索します。TrueCryptが検出された場合、IOCTLをTrueCryptドライバー(0x222004(TC_IOCTL_GET_DRIVER_VERSION)および0x72018(TC_IOCTL_LEGACY_GET_DRIVER_VERSION))に送信することによって、そのバージョンが確認されます。これらは標準コードではなくTrueCrypt固有の制御コードであるため、マルウェアの作成者はTrueCryptインストーラのオープンソースコードを実際に把握する必要があります。この手法はこれまで使用されたことも、他のマルウェアの説明で確認されたこともありません。
プラットフォームのアーキテクチャ
Attorはディスパッチャとロード可能なプラグインで構成されており、これらはすべてダイナミックリンクライブラリ(DLL)として実装されています。これらすべてのコンポーネントをディスクにドロップし、ディスパッチャのDLLをロードすることが、セキュリティ侵害の最初のステップになります。
ディスパッチャはプラットフォーム全体の中核であり、追加のプラグインを管理および同期するユニットとして機能します。システムが起動するたびに、実行中のほぼすべてのプロセスに自身を挿入し、これらの各プロセスで使用可能なすべてのプラグインをロードします。ただし、Attorは一部のシステムやセキュリティ製品関連のプロセスには自身を挿入しないようにしています。
すべてのプラグインは、基本機能の実装についてディスパッチャを利用しています。プラグインは、Windows API関数を直接呼び出すのではなく、ディスパッチャのDLLによって実装されたヘルパー関数(関数ディスパッチャ)への参照を使用します。関数ディスパッチャへの参照は、ロードされるときにプラグインに渡されます。プラグインはディスパッチャ自体と同じプロセスで挿入されるため、同じアドレス空間を共有し、この関数を直接呼び出すことができます。
関数ディスパッチャの呼び出しは、引数として関数のタイプとその数値の識別子を受け取ります。この設計により、指定された識別子が重要な関数に変換されて実行されるため、ディスパッチャにアクセスせずにAttorの個々のコンポーネントを分析することが困難になっています。
図3は、何度か関数ディスパッチャを呼び出しているあるプラグインの一部を示しています。右側の逆アセンブリでは、数値識別子(ディスパッチャをリバースエンジニアリングして判別した)をわかりやすい名前に置き換えました。ディスパッチャのインターフェイスの完全な分析については、ESETのホワイトペーパーを参照してください。
さらに、ディスパッチャは、構成データにアクセスできるプラットフォームの唯一のコンポーネントです。前述のように、Attorのプラグインは、インターフェイスを介してディスパッチャから構成データを取得します。
プラグイン
Attorのプラグインは、RSAで非対称暗号化され、DLLとして乗っ取られたコンピュータに配信されます。プラグインは、ディスパッチャに埋め込まれたRSA公開キーを使用して、メモリでのみ完全に復元されます。そのため、ディスパッチャにアクセスせずに、Attorのプラグインを取得して解読することは困難になっています。
ESETでは、複数のバージョンのAttorの8つのプラグインを復元できました。これらのプラグインを表2に示します。プラグインが連番になっており、Attorを操る攻撃者が攻撃対象のユーザーごとに異なるプラグインセットを使用していると仮定すると、まだ発見されていないさらに多くのプラグインがあると考えられます。
プラグインID | 分析されたバージョン | 機能 |
---|---|---|
0x01 | 0x0E | デバイスモニター |
0x02 | (バージョンなし)、0x0C | スクリーンショットの取得 |
0x03 | (バージョンなし)、0x08、0x09、0x0B、0x0C | オーディオレコーダー |
0x05 | 0x0A | ファイルアップローダー |
0x06 | 0x0A | コマンドディスパッチャ/SOCKSプロキシ |
0x07 | 0x02、0x04、0x09、0x0A | キー/クリップボードロガー |
0x0D | 0x03 | Torクライアント |
0x10 | 0x01 | インストーラ/ウォッチドッグ |
プラグインは、プラットフォームの常駐化(インストーラ/ウォッチドッグプラグイン)、機密情報の収集バイスモニター、スクリーンショット取得、オーディオレコーダー、キー/クリップボードロガー)、およびC&Cサーバーとのネットワーク通信(ファイルアップローダー、コマンドディスパッチャ/SOCKSプロキシ、Torクライアント)の処理を実行します。
Attorには、新しいプラグインを追加し、自身を更新し、収集したデータとログファイルを自動送信する仕組みが内蔵されています。これらの仕組みを図4に示します。
次のセクションでは、Attorの名前の由来となった2つの重要な機能である、ATコマンドを介したGSMフィンガープリンティング、およびTorを使用した精巧なネットワーク通信を実行するプラグインについて説明します。
ネットワーク通信
Attorのスパイ機能のためのプラグインは、機密データ(ディスク上に存在するドキュメントのリストなど)を収集し、最終的にリモートサーバーに送信しますが、これらのプラグイン自体はネットワーク経由で通信しません。 AttorのC&Cサーバーと通信するのは、ファイルアップローダーとコマンドディスパッチャの2つだけです。
「スパイプラグイン」(デバイスモニター、スクリーンショット取得、オーディオレコーダー、キー/クリップボードロガー)によって収集されたファイルは、ファイルアップローダープラグインによってC&Cサーバーに自動的にアップロードされます。これらのプラグインは、収集されたデータを保存する中央フォルダーとして専用のアップロードフォルダーを使用し、他のプラグインはこのフォルダーを使用してログファイルを保存します。
コマンドディスパッチャプラグインは、C&Cサーバーからコマンドと別のツールをダウンロードして解釈します。繰り返しになりますが、データは専用フォルダーに保存されます。新しくダウンロードされたプラグインとプラットフォームアップデート、実行されたコマンドのステータス/結果を含む暗号化されたログデータがこのフォルダーに保存されます。
Attorのディスパッチャは共有フォルダーを監視し、乗っ取られたコンピュータにプッシュされた新しいプラグインと更新を読み込みます。
つまり、AttorのディスパッチャもスパイプラグインもC&Cサーバーとは通信していません。ローカルの共有フォルダーのみを使用して、データを抽出し、C&Cサーバーからの指示を読み取ります。
ファイルアップローダーとコマンドディスパッチャはどちらも同じインフラストラクチャを使用してリモートサーバーにアクセスします。ネットワーク通信機能は4つの異なるAttorコンポーネントに分散しており、それぞれが異なるレイヤーを実装しています。
AttorはTor(Onion Service Protocol)を使用し、C&Cサーバーのonionアドレスを使用します。C&Cサーバーと通信するために、プラグインは最初に、onionドメインの解決、サーキットの選択、データの暗号化を行うTorクライアントプラグイン(デフォルト以外の127.0.0.1:8045でデータを受信)との接続を確立する必要があります。TorクライアントプラグインはTorクライアントをベースにしており、このマルウェアの設計に合わせてカスタマイズされています(tor.exeとAttorのディスパッチャとの連係機能が追加されています)。
Torクライアントプラグインは、暗号化機能を実装するディスパッチャと通信する必要があります。さらに、Torクライアントとリモートサーバー間の通信を中継するSOCKSプロキシプラグイン(127.0.0.1:5153でデータを受信)と通信します。
ファイルアップローダーとコマンドディスパッチャの両方は、FTPを使用します。ファイルは、FTPサーバーにアップロードまたはダウンロードされます。このFTPサーバーは、構成にハードコードされた認証情報によって保護されています。
- C&Cサーバー: idayqh3zhj5j243t[.]onion
- ユーザー名: do
- パスワード: [省略]
プラグインはFTPサーバーにログインし、収集したデータをユーザー別のディレクトリにコピーしたり、サーバーからコマンドをダウンロードしたりします。
C&C通信のインフラストラクチャは、図5に示すように、暗号化機能を提供するディスパッチャ、FTPプロトコル、Tor機能、および実際のネットワーク通信を実装する3つのプラグインの合計4つのAttorコンポーネントにまたがります。パズルのすべてのピースが揃わない限り、Attorのネットワーク通信を分析することが不可能になっています。
Attorは、ユーザーとセキュリティ製品に通信を検知されないようにするために、いくつかの追加の手法を実行していることに注意が必要です。
まず、C&CサーバーはTorサービスであり、匿名性を維持し、追跡を困難にしています。
第二に、すべてのネットワーク通信関連のプラグインは、Webブラウザまたはインスタントメッセージアプリケーションまたは他のネットワークアプリケーションのプロセスで実行されている場合にのみ有効になります(これは、プロセス名がハードコードされたリストと照合して決定されます)。この手法は、アプリケーションによって実行された正規の通信ストリームに盗み出したデータ通信を隠蔽し、検出されるリスクを低減しています。
GSMフィンガープリンティング
Attorの攻撃ツールの中でも最も興味深いプラグインは、接続されたモデム/電話デバイスと接続されたストレージドライブの両方、およびこれらのドライブに存在するファイルに関する情報を収集するものです。ファイル自体を収集するではなく、メタデータを収集していることから、デバイスフィンガープリンティングに使用されるプラグインであり、追加のデータを盗み出すための基盤として悪用されている可能性が高いと考えられます。
ストレージドライブをフィンガープリンティングするAttorの機能は標準的なものですが、GSMデバイスのフィンガープリンティング機能は独自です。
モデムまたは電話デバイスがCOMポートに接続されるたびに、デバイスモニターはATコマンドを使用して、関連するシリアルポートを介してデバイスと通信します。
ATコマンドは、Hayesコマンドセットとも呼ばれ、1980年代にモデムに対して電話を掛ける、電話を切る、または接続設定を変更するように命令するために最初に開発されました。その後、ATコマンドセットは、標準およびベンダー固有の追加機能をサポートするように拡張されました。
最近の論文で、ATコマンドがほぼすべての最新のスマートフォンで未だに使用されていることが発見されました。研究者は、セキュリティ対策のメカニズムを迂回し、USBインターフェイスを介してATコマンドを使用してスマートフォンと通信することを実証しています。SMSメッセージを送信したり、画面上でタッチ操作をエミュレートしたり、機密情報を外部に漏洩させるコマンドを含む、数千のコマンドが見つかり、テストされました。この研究は、古いATコマンドが悪用されると深刻なリスクをもたらすことを示しています。
しかし、Attorのプラグインに関しては、ATコマンドが使用されている理由しか推測できません。2019年にこのプラグインの64ビットバージョンを検出しましたが、それが未だに最新のAttorバージョン(2018年に最初に確認された)の一部であることを確認できます。一方、最新のスマートフォンを対象にしている可能性は低いと考えられます。このプラグインは、USBポートから接続されたデバイスを無視し、シリアルポートを介して接続されたデバイス(正確には、フレンドリ名が「COM*」に一致するデバイス)のみと通信します。
このプラグインが使用されている主な理由としてより説得力のある説明は、モデムと古い携帯電話をターゲットにしているということです。または、USB-シリアル変換アダプタを使用してCOMポートまたはUSBポートに接続されている特定のデバイス(攻撃の対象となった織が使用)と通信するために使用される場合があります。このシナリオでは、攻撃者が他のスパイ技術を使用して、標的の組織がこれらのデバイスを使用していることを確認している可能性があります。 いずれの場合であっても、このプラグインは、表3に示すATコマンドを使用して、接続されたデバイスから次の情報を取得します。
- 携帯電話またはGSM/GPRSモデムに関する基本情報:メーカー名、モデル番号、IMEI番号、およびソフトウェアバージョン
- 加入者に関する基本情報:MSISDNおよびIMSI番号
ATコマンド | 機能 |
---|---|
AT | 通信開始を通知します。 |
AT+MODE=2 | 拡張AT +コマンドセットを使用するように電話機を設定します。 |
AT+CGSN | IMEI番号(International Mobile Equipment Identity)を要求します。これは、デバイスを識別する一意の番号です。 |
AT+CGMM | デバイスのモデルに関する情報(モデル番号)を要求します。 |
AT+CGMI | デバイスの製造元の名前を要求します。 |
AT+CGMR | デバイスにロードされているソフトウェアのバージョンを要求します。 |
AT+CNUM | MSISDN(モバイルステーション国際加入者ディレクトリ番号)を要求します。これは、携帯電話の加入者IDモジュールと電話番号のマッピングです。 |
AT+CIMI | IMSI(International Mobile Subscriber Identity)を要求します。これは、GSM加入者を識別する一意の番号です。この番号には2つの部分があります。最初の部分は、北米標準では6桁、欧州標準では5桁で構成されています。加入者がアカウントを保持している特定の国のGSMネットワークオペレータを識別します。2番目の部分は、加入者を一意に識別するためにネットワークオペレータによって割り当てられます。 |
このプラグインでは使用されていない、多くの(ベンダー固有の)ATコマンドが存在しています。このマルウェアの運用者は、リストしたコマンドを使用して接続されたデバイスのフィンガープリントを作成し、デバイスから情報を抽出する具体的なコマンドを実行する別のプラグインを展開している恐れがあります。
結論
Attorはスパイ活動のためのプラットフォームであり、東ヨーロッパの特定のユーザー、そして、ロシア語を使用しセキュリティに関心のあるユーザーに対する標的型攻撃に使用されています。
このマルウェアは2013年から検出されることなく使用されてきましたが、特定の標的に対して機能をカスタマイズするために使用できるプラグインをロードできるアーキテクチャを備えています。ほぼ使用されていないATコマンドのセットを利用するGSMフィンガープリンティングのための希少なプラグインが使用されており、匿名性を維持し追跡を困難にするためにTorが組み込まれています。
ESETの調査からマルウェアの詳細が明らかになり、このマルウェアを操る組織の活動をさらに追跡する価値があることがわかりました。
これらのキャンペーンのESETの検出名およびその他のセキュリティ侵害の指標情報は、ホワイトペーパー『AT commands, TOR-based communications: Meet Attor, a fantasy creature and also a spy platform(ATコマンドとTORベースの通信を使用するスパイプラットフォームAttor)』に記載されています。
この調査に協力いただいたAnton Cherepanov、Peter Košinár、およびZoltán Rusnákに感謝します。
MITREのATT&CK手法
戦術 | ID | 名称 | 説明 |
---|---|---|---|
実行 | T1106 | APIを介した実行 | Attorのディスパッチャは、CreateProcessW APIを実行に使用します。 |
T1129 | ロードしたモジュールを介した実行 | Attorのディスパッチャは、各プラグインのDLLをロードして、追加のプラグインを実行します。 | |
T1085 | Rundll32 | プラグイン0x10は、rundll32.exeをスケジュールしてディスパッチャをロードします。 | |
T1053 | タスクのスケジュール | プラグイン0x10は、ブート/ログオン時にrundll32.exeを実行し、その後でディスパッチャをロードするようにスケジュールします。 | |
T1035 | サービス実行 | Attorのディスパッチャはサービスとして実行される場合があります。 | |
常駐化 | T1037 | ログオンスクリプト | Attorのディスパッチャは、ログオンスクリプトHKEY_CURRENT_USER\Environment"UserInitMprLogonScriptを使用してレジストリキーを追加することにより、常駐化します。 |
T1050 | 新しいサービス | Attorのディスパッチャは、新しいサービスを登録することで常駐化を図ることができます。HKEY_LOCAL_MACHINE\SYSTEM\*ControlSet*\Control\SafeBoot\Minimalレジストリキーは、セーフモードおよびネットワークを有効にしたセーフモードでもサービスを実行するように更新されます。 | |
T1053 | タスクのスケジュール | プラグイン0x10は、ブート/ログオン時にディスパッチャをロードする新しいタスクをスケジュールします。 | |
防衛の回避 | T1140 | ファイルまたは情報の難読化/でコード | ハードコードされたキーを使用して、XOR暗号で文字列が暗号化されます。構成データ、ログファイル、およびプラグインは、RSAと組み合わせたBlowfish-OFBのハイブリッド暗号化スキームを使用して暗号化されます。 |
T1107 | ファイルの削除 | 収集されたファイルとログファイルは、プラグイン0x05によって送信された後に、削除されます。 | |
T1158 | 隠しファイルとディレクトリ | ログファイルとディレクトリの属性は、HIDDEN/SYSTEM/ARCHIVE(またはこれらの組み合わせ)に設定されます。 | |
T1036 | 偽装 | Attorのディスパッチャは自身を正規のタスクに偽装します(つまり、タスク名と説明は正規のように見えます)。 | |
T1112 | レジストリの変更 | AttorのディスパッチャはRunレジストリキーを変更する場合があります。 | |
T1055 | プロセスの挿入 | Attorのディスパッチャは、実行中のプロセスに自身を挿入し、より高い権限を取得し、検出を回避します。特定のシステムプロセスとシマンテックのプロセスを回避します。 | |
T1108 | アクセスの冗長化 | Attorのディスパッチャの32ビットバージョンと64ビットバージョンの両方が実行されます。また、ほぼすべてのプロセスに自身を挿入します。ディスパッチャまたは別のプラグインとして実装される、ウォッチドッグコンポーネントがあり、Attorが削除されると、Attorを再インストールします。 | |
T1099 | タイムスタンプ | ファイルおよびレジストリキーへの最後のアクセス時刻は、作成および変更された後に操作されます。 | |
T1497 | 仮想化環境/サイドボックスの回避 | Attorは、一部の仮想化環境またはエミュレートされた環境で実行されるかどうかを検出できます。検出された場合、すぐに自身を終了します。 | |
認証情報へのアクセス | T1056 | 入力の取得 | プラグイン0x07によって、キーストロークが取得され、ユーザーの認証情報が収集されます。 |
検出 | T1083 | ファイルとディレクトリの検出 | プラグイン0x01は、すべてのハードディスクドライブ上の特定の拡張子のファイルを列挙し、暗号化されたログファイルにファイル情報を保存します。 |
T1120 | 周辺機器の検出 | プラグイン0x01は、挿入されているストレージデバイス、モデム、電話デバイスに関する情報を収集します。 | |
T1082 | システム情報の検出 | Attorはシステムの空きディスク容量を監視します。 | |
収集 | T1123 | オーディオの取得 | プラグイン0x03は、利用可能な入力サウンドデバイスを使用してオーディオを録音できます。 |
T1119 | 収集の自動化 | Attorは、乗っ取ったシステムに関するデータを自動的に収集します。 | |
T1115 | クリップボードデータ | プラグイン0x07は、OpenClipboardおよびGetClipboardData APIを使用して、Windowsクリップボードに保存されているデータを収集します。 | |
T1074 | データのステージング | 収集されたデータは、外部に送信する前に中央のアップロードディレクトリにステージングされます。 | |
T1056 | 入力の取得 | プラグイン0x07は、Attorが挿入されるプロセスのウィンドウで押されたキーストロークを取得します。 | |
T1113 | スクリーンショットの取得 | プラグイン0x02は、ターゲットアプリケーションのスクリーンショットを取得します。 | |
C&C | T1043 | 一般的に使用されるポート | Attorは、C&Cとの通信にポート21を使用します。 |
T1188 | マルチホッププロキシ | Attorは、C&Cとの通信にTorを使用します。 | |
T1079 | マルチレイヤー暗号化 | Attorは、複数の暗号化レイヤーを使用するTorを使用して暗号化されたトラフィックを送信します。 | |
T1105 | リモートファイルのコピー | Attorは追加のプラグイン、アップデート、その他のファイルをダウンロードできます。 | |
T1071 | 標準のアプリケーションレイヤープロトコル | FTPプロトコルがC&Cとの通信に使用されます。 | |
T1032 | 標準の暗号プロトコル | Blowfish-OFBとRSAの組み合わせが、データの暗号化に使用されます。 | |
外部への送信 | T1020 | 外部への自動送信 | 収集されたデータとログファイルは、プラグイン0x05によって自動的に外部に送信されます。 |
T1022 | データの暗号化 | Attorは、Blowfish暗号とRSA暗号を組み合わせてデータを暗号化してから、C&Cサーバーに送信します。 | |
T1041 | C&Cチャネルを介した情報の送信 | Attorは、C&Cチャネルを介してデータを外部に送信します。 |