執筆者:Warren Mercer および Vitor Ventura
はじめに
Talos では、2 種類の RAT(リモート アクセスのトロイの木馬)を確認しました。全体が Python で記述され、一見するとスタンドアロンの実行ファイルです。この RAT は、ブラジルの公的機関のマネジメント スクールのユーザを標的としています。
この 2 種類のバージョンの RAT サンプル(サンプルの分析から得られた情報によれば、3.0 および 4.0)は、両方とも Python で記述されており、実行ファイルへの変換に一般的なツールである py2exe を使用しています。マルウェアのメイン スクリプトとなるバイトコードは、PYTHONSCRIPT という名称のポータブル実行ファイル(PE)セクションに格納されており、Python の DLL が PYTHON27.DLL という名称のセクションに格納されています。それ以外のモジュールのバイトコードは、すべて圧縮され、実行ファイルのオーバーレイに格納されています。
いずれのバージョンも一般的な RAT 機能を備えたものですが、調査によってバージョン 4.0(最新版)は機能のそぎ落とされたバージョンであることが判明しました。この点については後述しますが、ターゲットを絞り込んだキャンペーンを実施する上で、いくつかの機能を取り除いたものです。
このキャンペーンで標的とされているのは、INESAP(Instituto Nacional Escola Superior da Administração Pública)のユーザです。INESAP はブラジルの公的機関のマネジメント スクールであり、業務コンサルティングも行っています。
コマンドアンドコントロール インフラストラクチャでは、Fast Flux と呼ばれる DNS 手法が使用されており、ホストの参照先をめまぐるしく変更することが可能になります。ネーム サーバでは TTL が 120 秒に設定されており、1 日に数回変更されます。調査記録を見る限りでは、コマンドアンドコントロールが 4 つのホスト名にリンクされており、常に同じ ASN 内の IP アドレスが参照されています。
最初に実環境でサンプルが確認されたのは、2018 年 1 月 8 日でした。次のバージョン(v4.0)が最初に確認されたのは、2018 年 2 月 5 日です。こうした日付には、確認された DNS リクエストのデータとの関連がみられ、キャンペーン用の亜種(v4.0)が出現した後に活動の増加が確認されています。
RAT
RAT は、py2exe のフォーマットで python27.dll と共に配布されています。Python のバイトコードが PE リソースとして格納されており、その他のライブラリが実行ファイルのオーバーレイに zip 圧縮されています。
最新バージョンの RAT(v4.0)では、バージョン 3.0 と多くのコードが共有されていますが、作成者が検出回避のための難読化処理を施していることは明らかです。
マルウェアは UPX の標準バージョンでパッキングされた上で配布されています。UPX はよく知られた実行ファイルのパッカーであり、一部のストリングが隠蔽されます。ただ、Python のバイトコードは難読化されておらず、細かい点もソース コードに戻して解析することが可能でした。
不要な文字列を生成する関数
両バージョンのソースコードをみると、バージョン 4.0 にはメモリ内にランダムな文字列を生成する機能が含まれており、メモリ内の文字列の分析を難しくしています。
両バージョンで、コマンドアンドコントロール通信の際に送信されるホスト名とデータが Base16 エンコーディング方式で難読化されています。このエンコーディング方式は RFC4648 に規定されており、Base64 標準に沿った Python モジュールになっていますが、これまでに分析されたマルウェア サンプルの中には見られないものです。
両バージョンに継続して見られるのは、おなじみの「CurrentVersion\Run」レジストリ キーの使用です。このレジストリ キーは、構成内でサービス名を「Java_Update」にハードコードするために使われています。また、インストールの際、バージョン 3.0 では「[Error5088] Arquivo Corrompido」というテキストがメッセージ ボックスに表示されます。これは、ファイルが破損している場合に表示されるブラジルポルトガル語で、ユーザに正常な PDF ファイルが破損していると思わせるためのものです。
メッセージ ボックスを生成するコード
「はじめに」のセクションでも述べたように、バージョン 4.0 は明らかにキャンペーンの一環として作成されたものです。インストール時に、バージョン 4.0 では HTML コードが組み込まれた PDF ファイルが生成され、imgur.com でホストされている画像が 1 つロードされます。その画像は、INESAP からの公式文書であるかのように見せるものであり、作成された PDF ファイルが Chrome で開かれます。
作成された PDF コンテンツ
両バージョン共に、同じコマンドアンドコントロール インフラストラクチャと通信します。ただし、API は標準的な Web リクエストから REST ベース API に改良されています。Web リクエストの場合、最初の通信時に関連情報は抽出できませんが、REST API のリクエストであればユーザ名、ホスト名、その他の機能関連情報を送信することができます。
バージョン 4.0 のコマンドアンドコントロール リクエスト
モジュール名がそれ自体の説明となっており、そこから RAT の機能の概要を知ることができます。これらのモジュールの大半では、ごく基本的な機能が提供されています。CredEnumerate()、CryptUnprotectData() という標準的な Windows API 関数が、ネットワーク クレデンシャルの収集に使用されており、Mimikatz などの有名なツールは使用されていません。仮想マシン(VM)の検出機能に関しては、さらに基本的なものとなっています。シンプルな WMI クエリにもとづいて、VMware、VirtualBox、Virtual PC の各プラットフォームだけがチェックされています。
バージョン 3.0 のモジュール一覧
クレデンシャルを盗み出すモジュールは、Github でソースコードが公開されている Radium-Keylogger をコピーしたものです。また、VM の検出機能も Github の別のレポジトリにあるもので、他のソフトウェアからのコードのコピーが随所にみられる点が、この RAT の大半のコンポーネントに見られる特徴です。こうした機能のほとんどが Python のスクリプトで提供されており、コマンドラインからスタンドアロンで実行することができます。これは、上述の再利用されたコードについても、同じことが言えます。
つまり、このことから不正な攻撃を仕掛ける者の間でコードの共有が進んでいるということが分かります。また、コードの共有や再利用の程度から、属性を探ることがいかに難しいかということも言えます。
機能面でみれば、両バージョンは同じコードを共有して、そのベースとしています。しかし、バージョン 4.0 は固有のキャンペーン用に構成されたものと考えられます。すべてのモジュールが備えられているわけではなく、分散型 DoS 攻撃やマイニング、またそれらを実現するための Python やアップデートが含まれていないのです。後者の 2 つの機能は、runcmd モジュールから簡単に入手できます。また、Firefox のクレデンシャルを収集する機能も削除されており、これはキャンペーンの意図に沿ったものです。
最新のバージョンでは、モジュール化するというアプローチも使われなくなり、コードをメイン スクリプトにコピー ペーストするという方法がとられました。
コマンドアンドコントロール
バージョン 3.0 では、コマンドアンドコントロール用のホスト名として、プライマリとセカンダリの 2 つしかありませんでした。新しいバージョンでは、4 つの潜在的なホスト名が用意され、実行時にランダムに選択される仕組みになりました。
コマンドアンドコントロール用のホスト名とポート
コマンドアンドコントロール インフラストラクチャにおいては、Fast Flux の手法による隠蔽が図られています。ネーム サーバが頻繁に変更されますが、エンド ポイントは基本的に同一です。ブラジルのテレコム プロバイダーにすべて属し、自律システム番号(AS 番号)AS 7738 の下で、4 つのコマンドアンドコントロール用ホスト名が共有されています。
zxmbernx.camdvr.org のネーム サーバ
現時点で最も活発なホスト名は zxmbernx.camdvr.org で、このことから、このホスト名はバージョン 3.0 のプライマリのコマンドアンドコントロール用ホスト名である可能性があります。なお、バージョン 4.0 の場合は、ホスト名はランダムです。
キャンペーン
バージョン 4.0 の RAT は、上述のとおり、ブラジルの公的機関の学校である INESAP を標的としたキャンペーンに合わせて構成されているものです。
Talos が pastebin.com で発見したアーチファクトを見る限りでは、このキャンペーンと RAT のカスタマイズが開始されたのは、最も早い場合で 2018 年 1 月 9 日と考えられます。
pastebin.com で見つかったコードには、PDF のおとりファイルを生成するインストール モジュールと同じコードが含まれています。
pastbin.com のコードと逆コンパイルされたコードとの比較
このキャンペーンは、特定の地域を特に標的としたものです。攻撃者は、Firefox のクレデンシャルを盗む機能を取り除いて、Chrome のクレデンシャルを盗む機能だけを残しました。この不正な機能は、システムに Chrome がインストールされている場合にのみ動作します。
今回の調査では、最初の攻撃ベクトルを特定することはできませんでしたが、バージョン 4.0 の RAT が inesapconcurso.webredirect.org と filebin.net でホストされていたことは確認できました。後者はファイル共有プラットフォームとして有名なドメインですが、前者のドメインがキャンペーン用に用意されたことは明らかです。
Inesapconcurso というサブドメインは、inesap と concurso という 2 つの単語を組み合わせたものです。最初の単語は学校名であり、2 つ目の単語は、競争を意味する competition という単語に翻訳することができます。この学校は公的機関の欠員に応募する管理職を支援しており、そのような背景をふまえてソーシャル エンジニアリングが行われたのです。さらに、ソーシャル エンジニアリングの手法の 1 つとして、両方のバージョンで、常にファイル名が「inscricao」から始まるということが挙げられます。この単語が意味するのは、「応募」です。攻撃者は、拡張子の二重化の手法も使用しています。.pdf.exe 等を使用して、ユーザにマルウェアを実行させるよう仕向けています。
先に説明したとおり、バージョン 4.0 のマルウェアでは、画像入りの PDF ファイルが作成され、正当なものと考えたユーザに Chrome で開かせようとしています。
まとめ
このキャンペーンの目的は不明ですが、攻撃者はできる限り RAT の存在が露見しないようにして、何らかの活動を行おうとしていました。キャンペーンの対象やコマンドアンドコントロールの形式から確認できるのは、このキャンペーンがブラジルで活発になっているという点です。これは DNS のデータからも分かることで、非常に標的を絞ったアプローチが見て取れます。
RAT 自身は高度に洗練されたものではなく、他のオープン ソース プロジェクトとコードを共有している兆候が確認されました。逆に、コマンドアンドコントロールでは、多様なエンドポイントを利用しているわけではないにも関わらず、Fast Flux による隠蔽の手法が使用されていました。
IOC
URL
hxxp://zxmbernx.camdvr.org:8843
hxxp://zxmbernx.camdvr.org:8080
hxxp://xmm.camdvr.org:8043
hxxp://vit24ad.kozow.com:8843
hxxp://683gvk34h.theworkpc.com:8843
hxxp://inesapconcurso.webredirect.org/download.php
hxxps://i.imgur.com/puSQDHe.png
hxxp://amfotoalbum.com.br/images/banner/inscricao=157541254.pdf.exe
SHA-256 ハッシュ
83d49f14ebb6641f1b813614a40e7df2d200096b8aae198e6298125f47b55b59
98bcb29912a8802d1a863d129d35876f7b2922146d2f05c17cd51ba907e617ba
cbf255ecd5c113b6124549227c44054e8e976c4770a2eb323a60479eb260727b
c7ef8f53dc170c6c2c3e5e57c57c6d2148e95e965c3356a868744a777bf4548b
検出
Advanced Malware Protection(AMP)は、これらの攻撃者によるマルウェアの実行の阻止に最適です。
CWS や WSA の Web スキャンは、悪意のある Web サイトへのアクセスを阻止し、それらの攻撃に使用されたマルウェアを検出します。
NGFW や NGIPS、および Meraki MX などのネットワーク セキュリティ アプライアンスで、この脅威に関連付けられた悪意のあるアクティビティを検出できます。
AMP Threat Grid は、悪意のあるバイナリを特定し、すべてのシスコ セキュリティ製品に保護機能を組み込みます。
シスコのセキュア インターネット ゲートウェイ(SIG)である Umbrella は、社内ネットワークの内外で悪意のあるドメイン、IP、URL への接続をブロックします。
オープンソース Snort サブスクライバ ルール セットをお使いであれば、Snort.org で購入可能な最新のルール パックをダウンロードすることで、システムを最新状態に維持できます。
Snort ルール:45771 ~ 45773
本稿は 2018年2月28日に Talos Group のブログに投稿された「CannibalRAT targets Brazil」の抄訳です。