Cisco Japan Blog

PoetRAT:COVID-19 に乗じて、Python RAT がアゼルバイジャンの公的機関や民間企業を攻撃

1 min read



ニュースの概要

  • アゼルバイジャンの政府機関やエネルギー業界が、未知の攻撃者の標的となっているようです。
  • エネルギー業界では、ウインドタービンに関連する SCADA システムが狙われています。
  • 攻撃者は Word ドキュメントを使用して、標的マシンをリモート制御するためのマルウェアを仕込みます。
  • このマルウェアは、PoetRAT と呼ばれる新種のリモートアクセス型トロイの木馬(RAT)です。Python で記述されていて、複数の構成要素から成ります。
  • 攻撃者は必要に応じて他のツールも展開し、それを駆使して、ファイルやパスワードを収集します。Web カメラから画像を取得することもあります。

エグゼクティブサマリー

Cisco Talos は、未知のマルウェアファミリを基盤として新たなキャンペーンが展開されていることを発見し、このファミリを「PoetRAT」と命名しました。現時点では、既知の攻撃者に結びつくものとは考えていません。調査によると、アゼルバイジャン政府ドメインを模倣した URL を使用して PoetRAT が拡散されています。アゼルバイジャン国民や、ウインドタービンシステムをはじめとする SCADA 分野の民間企業を標的としていると考えられます。ドロッパーは、Microsoft Word ドキュメントで、Python をベースとするリモートアクセス型トロイの木馬(RAT)を展開します。マルウェアの各所に、イギリスの詩人・劇作家であるウィリアム・シェイクスピアへの言及があるため、Cisco Talos は PoetRAT と命名しました。PoetRAT は、この種のマルウェアによく見られる特徴をすべて備えていて、侵害されたシステムの完全な制御権を攻撃者に提供します。データの漏えいに FTP が利用されていることから、大量のデータの転送を図っていることが窺われます。

キャンペーンから見てとれるのは、侵害されたシステムに、攻撃者が必要に応じて手動でツールを追加していることです。ここでは、それらのツールのいくつかについて解説します。最も興味深いツールは、自動でハードディスクをモニタリングし、データを漏えいさせるものです。その他にも、キーロガー、ブラウザに焦点を絞ったパスワード窃取機能、カメラ制御アプリケーション、汎用のパスワード窃取機能などが使用されています。

このマルウェアキャンペーンのほか、攻撃者は同一のインフラストラクチャでフィッシングキャンペーンも仕掛けています。フィッシング Web サイトは、アゼルバイジャン政府のメールインフラストラクチャで提供されている Web メールを模倣したものです。

最新情報

PoetRAT は、これまで発見されていなかったものでした。2 つのスクリプトから成っていて、1 つのコンポーネントとしての検出を回避しています。ドロッパーは従来の手口を新たな形で駆使したもので、RAT を Word ドキュメントに付加します。ドキュメントを開くとマクロが起動し、マルウェアが抽出されて実行されます。攻撃はおそらく手動で行われますが、必要に応じて追加のツールを展開し、不要な手順は回避するという合理化が行われています。

動作の仕組み

最初の足がかりとなるのは、悪意のある Word ドキュメントの送信です。攻撃者がドキュメントを拡散する手口は、現時点では明らかになっていません。しかし、標準的な URL からダウンロード可能であるため、電子メールやソーシャル メディア ネットワークのメッセージによって攻撃対象者がダウンロードに誘い込まれていると思われます。

RAT の正体

攻撃者はきわめて意欲的であり、標的となった対象者に焦点を絞り込みます。SCADA システムのほか、公的機関や民間企業も標的となっています。ツールキットで利用できるツールの量と多様性から、入念に計画された攻撃であることがわかります。

マルウェアキャンペーン

Cisco Talos は、アゼルバイジャンの公的機関や民間企業、特にエネルギー業界を標的としているキャンペーンを多数発見しました。調査の実施中、攻撃者は SCADA システム(主にウインドタービン)に関心を抱いていることが判明しました。

第 1 のキャンペーン:2020 年 2 月

デコイドキュメント

Microsoft Office で開くと、ドキュメントの表示がぼやけていています。しかし、この表示は修正できません。ドキュメント自体がぼやけた画像となっていて、テキストは含まれていません。ロゴは、インド国防省傘下の国防 R&G 組織である防衛研究開発機構(DRDO)のようです。インドが標的となっている証拠は見つかっていません。

DRDO のロゴ

ファイルが置かれていたのは hxxp://govaz[.]herokuapp[.]com/content/section_policies.docx

です。

第 2 のキャンペーン:2020 年 4 月 – C19.docx

ドキュメントの画像

「C19.docx」というファイル名で、おそらく COVID-19 パンデミックを指しています。判読可能なコンテンツは含まれていません。

第 3 のキャンペーン:2020 年 4 月 – コロナウイルスがテーマ

デコイドキュメントが進化し、より正当なファイルらしく見えるようになっています。最初の段階は、アゼルバイジャン政府のドキュメントを装ったロシア語の Word ドキュメントです。

ドキュメントの画像

ドキュメントの画像

当初のファイル名はどちらも「Azerbaijan_special[.]doc」で、hxxps://gov-az[.]herokuapp[.]com/content/Azerbaijan_special[.]doc に置かれているドロッパーです。

フィッシングキャンペーン

同じサーバ上で、アゼルバイジャン政府の Web メールに対するフィッシングキャンペーンが展開されていたことが判明しています。

このフィッシング Web サイトは「hxxps://gov-az[.]herokuapp[.]com/azGovaz.php?login=」で稼働していました。目的は明らかに資格情報の窃取です。

マルウェア

直近のドキュメントの感染ベクトルをご紹介します。その他のドキュメントは完全に同一ではありませんが(DDE を使用)、最終的な目標は同じです。

ドロッパー

Word ドキュメントがドロッパーです。多くの攻撃事例と同様に、不正なアクティビティを実行するための Visual Basic スクリプトが組み込まれています。しかし、このドロッパーはより革新的です。まず、ドキュメントがメモリに読み込まれます。次に、ファイル末尾の 7,074,638 バイトがコピーされ、残りのバイトがディスクに書き戻されます。

RAT の抜粋

ディスクに書き込まれるのは、実際には ZIP ファイルです。攻撃者は、この ZIP を Word ドキュメント「smile.zip」の末尾に付加します。

ZIP ファイルには、Python インタプリタと RAT として機能する Python スクリプトが格納されています。Word マクロによって ZIP が解凍され、「launcher.py」という名前のメインスクリプトが実行されます。このランチャスクリプトが担っているのは、ドキュメントが開かれている環境のチェックです。ハードドライブの割り当て容量が 62 GB 未満のものをサンドボックスと判断します。サンドボックス環境だった場合は、マルウェアスクリプトを「License.txt」の内容で上書きして処理を終了し、スクリプト自体を削除します。

サンドボックス対策のコード

実行環境がサンドボックスではなかった場合は、一意の ID を生成し、メインスクリプトの Python ソースコードと直接置き換えて、コードを実行します。

RAT

PoetRAT を構成しているのは、連携して動作する 2 つのメインスクリプトです。「frown.py」という名前のスクリプトがコマンドアンドコントロール(C2)との通信を担います。ポート 143 で発生する通信を TLS で暗号化し、接続が正常に確立されると「almond」という語を送信します。サーバは、「who」または「ice」のいずれかで応答を返します。PoetRAT は、「who」コマンドを受け取ると、ユーザ名、コンピュータ名、以前に生成された UUID の含まれた文字列を返します。「ice」コマンドは、単に接続手順を終了するものです。

もう一方のスクリプトは「smile.py」という名前で、C2 コマンドの解釈と実行を担っています。使用できるコマンドは以下のとおりです。

  • ls:ファイルの一覧を出力
  • cd:カレントディレクトリを変更
  • sysinfo:システムの情報を取得
  • download:FTP を使用してファイルを C2 にアップロード
  • upload:C2 のファイルを攻撃対象者にダウンロード
  • shot:スクリーンショットを取得し、FTP を使用して C2 にアップロード
  • cp:ファイルをコピー
  • mv:ファイルを移動
  • link:ファイル間にリンクを作成
  • register:レジストリに変更を加える
  • hide:現在の状態に応じてファイルの表示と非表示を切り替える
  • compress:ZIP 機能でファイルを圧縮
  • jobs:プロセスの停止、消去、終了などの操作を実行。デフォルトではすべてのプロセスを一覧表示
  • <実行する OS コマンド>:上記のいずれも実行されない場合に実行

一部の機能(shot、upload、download)では追加の資格情報が必要です。これらの資格情報は標本にハードコーディングされていません。FTP を使用するたび、リクエスト中に資格情報が C2 サーバによって提供されます。

PoetRAT を永続化するための手段として Windows レジストリが標準的に使用され、RUN ハイブに Python スクリプト「launcher.py」実行用のレジストリキーが追加されます。調査の実施中、複数のレジストリ修正が実行されることを確認しました。その結果、「police」キーワードを使用すると、サンドボックス回避チェックを省略してスクリプトが実行されるようになります。

“C:\Users\Public\Python37\pythonw.exe” “C:\Users\Public\Python37\launcher.py” “police”s\0

launcher.py と指定すると、police キーワードがあるため、サンドボックスのチェックと初期化プロセスが省略されます。このキーワードは、感染済みのホストに対して環境の再チェックをしないために使用されていると思われます。

起動ルーチン

スクリプト間の通信は、「Abibliophobia23」というファイル経由で実行されます。コマンドと実行結果は、このファイルに独自の暗号化方式で書き込まれます。ファイル名の末尾にある「23」は、RAT の変種によって異なります。

難読化のアルゴリズム

換字式暗号が使用されていて、暗号化対象の文字コードに対して鍵パラメータを使用する数学演算が実行された後、新しい文字コードが取得されます。

ポストエクスプロイトツール

キャンペーンでは、標的となったシステムに攻撃者がツールを追加で展開していました。そのいくつかについて説明します。

Dog

攻撃者は、最初の侵害を果たした直後、「dog.exe」というツールを展開します。dog.exe は .NET で記述されています。ハードドライブのパスをモニタリングし、環境の構成に応じて、電子メールアカウントまたは FTP で情報を漏えいさせることが目的です。

構成ファイルの名前は dconf.json で、攻撃者がバイナリを使用して仕込みます。形式は以下のとおりです。

{
"FileSize": 50,
"BasePath": "C:/ProgramData/",
"MyPath": "TARGET_Dog/",
"UploadType": "ftp",
"FtpUsername": "username1",
"FtpPassword": "password1",
"FtpUri": "ftp://ftp.ftpserver/repo/",
"SmtpHost": "smtp.servermail.com",
"EmailUser": "username2@servermail.com",
"EmailPass": "password2",
"Paths": "C:/Users/User/Desktop/,C:/Users/User/Downloads/,C:/Users/User/Documents/"
}

 

  • FileSize は、情報の漏えい元となるファイルのサイズ上限です(この例では 50 MB)。
  • 作業ディレクトリは BasePath と MyPat を結合して定義されます(この例では「C:/ProgramData/TARGET_Dog/」)。
  • UploadType は情報を漏えいさせる方法で、「ftp」または「email」です。
  • FtpUsername、FtpPassword、FtpUri は情報漏えいに使用される FTP のパラメータです。
  • SmtpHost、EmailUser、EmailPass は情報漏えいに使用される電子メールのパラメータです。
  • Paths は、侵害されたシステム上のモニタリング対象パスです。

構成ファイルの「Paths」変数にあるディレクトリのいずれかでファイルが修正されると、その都度、ファイルシステムウォッチャを使用してイベントが生成されます。

ファイルシステムのモニタリングルーチン

ファイルが使用可能になると、構成に応じて電子メールまたは FTP が使用され、dog.exe バイナリがファイルを漏えいさせます。

Bewmac

短い Python スクリプトを使用して、攻撃対象者の Web カメラで画像を記録します。

カメラによる画像キャプチャのルーチン

スクリプトは OpenCV ライブラリを使用していて、実行されるたびに 10 回キャプチャされます。画像はファイルシステムに保存され、自動的に情報漏えいが発生することはありません。

その他のツール

調査の実施中、主に Python で記述されて Windows 用にコンパイルされている数種のツールを発見しました。

  • exe:「System32.Log」という名前の出力ファイルを使用するキーロガー

キーロガーの特殊キーマップ

  • 「exe」:ブラウザ資格情報を窃取するプログラム
  • 「exe」:よく知られた資格情報窃取プログラムである Mimikatz を Python で完全に実装した、コンパイル済みの pypykatz
  • 「py」:ファイルとディレクトリによるツリーを使用してファイルを作成するためのスクリプト
  • WinPwnage:特権昇格のためのオープンソース フレームワーク
  • Nmap:侵入テストおよびネットワークスキャンを実施するためのオープンソースツール

まとめ

今回の調査で判明したのは、攻撃チェーン全体を通して、さまざまなツールと手法が駆使されていることです。Talos は、今回のキャンペーンでおとりドキュメントを多数発見しました。いずれも、Visual Basic マクロと Python を利用して攻撃を仕掛けるものでした。標的は絞り込まれていて、ほとんどはアゼルバイジャンの公的機関および民間企業、特にエネルギー業界の ICS システムと SCADA システムのようです。

特定のディレクトリがモニタリングされていたことから、攻撃対象者の特定の情報を漏えいさせようとしていたことがわかります。攻撃者は、キーロガー、ブラウザ資格情報窃取プログラム、Mimikatz、pypykatz を使用して、資格情報をさらに収集し、標的のあらゆる情報を把握しようとしていました。アゼルバイジャン政府職員から重要な資格情報を取得しようとしていた可能性があります。PoetRAT は攻撃対象者の画像の取得を試みるとともに、電子メールプラットフォームを利用してアゼルバイジャン政府を標的にしています。さらに、攻撃対象者の特定の情報に加え、標的に関連する情報のキャッシュ全体も取得しようとしていました。被害者への影響を考えると、これらの手口によって、きわめて重要な資格情報や情報が取得可能になっていたでしょう。また、Python や Python ベースのツールを使用することで、Python とその実行技術がホワイトリストに登録されている従来のツールでの検知を回避した可能性があります。

カバレッジ

お客様がこの脅威を検出してブロックするための方法を以下に記載します。

Advanced Malware Protection(AMP)は、これらの攻撃者がマルウェアを実行できないようにするための最適な方法です。AMP 内に存在するエクスプロイト防止機能は、このような未知の攻撃からお客様を自動的に保護するように設計されています。

Cisco クラウド Web セキュリティ(CWS)または Web セキュリティアプライアンス(WSA)の Web スキャンは、悪意のある Web サイトへのアクセスを防止し、上述したような攻撃で使用されるマルウェアを検出します。

E メールセキュリティは、攻撃の一環として攻撃者が送りつける不正な電子メールをブロックします。

次世代ファイアウォール(NGFW)、次世代侵入防御システム(NGIPS)、Cisco ISRMeraki MX などのネットワーク セキュリティ アプライアンスは、今回の脅威に関連する不正アクティビティを検出します。

AMP Threat Grid は、悪意のあるバイナリを特定し、すべてのシスコセキュリティ製品に保護機能を組み込みます。

Umbrella(シスコのセキュア インターネット ゲートウェイ(SIG))は、社内ネットワークの内外で悪意のあるドメイン、IP、URL への接続をブロックします。

オープンソースの Snort サブスクライバルールセットをお使いであれば、Snort.orgpopup_icon で購入可能な最新のルールパックをダウンロードすると、最新状態を維持できます。

IOC(侵入の痕跡)

ホスト

C2

dellgenius[.]hopto[.]org

フィッシング

gov-az[.]herokuapp[.]com
govaz[.]herokuapp[.]com

URL

hxxps://gov-az[.]herokuapp[.]com/azGovaz.php?login=

標本

208ec23c233580dbfc53aad5655845f7152ada56dd6a5c780d54e84a9d227407
252c5d491747a42175c7c57ccc5965e3a7b83eb5f964776ef108539b0a29b2ee
312f54943ebfd68e927e9aa95a98ca6f2d3572bf99da6b448c5144864824c04d
31c327a3be44e427ae062c600a3f64dd9125f67d997715b63df8d6effd609eb3
37118c097b7dbc64fa6ac5c7b28ebac542a72e926d83564732f04aaa7a93c5e3
4eb83253e8e50cd38e586af4c7f7db3c4aaddf78fb7b4c563a32b1ad4b5c677c
5f1c268826ec0dd0aca8c89ab63a8a1de0b4e810ded96cdee4b28108f3476ce7
66679d83d3993ae79229b1ccff5350e083d6631190eeeb3207fa10c3e572ca75
746fbdee1867b5531f2367035780bd615796ebbe4c9043134918d8f9240f98b9
970793967ecbe58d8a6b54f5ec5fd2551ce922cb6b3584f501063e5f45bdd58a
a3405cc1fcc6b6b96a1d6604f587aee6aafe54f8beba5dcbaa7322ac8589ffde
a703dc8819dca1bc5774de3b6151c355606e7fe93c760b56bc09bcb6f928ba2d
ac4e621cc5895f63a226f8ef183fe69e1ae631e12a5dbef97dd16a6dfafd1bfc
b14a8bf8575e46b5356acf3d19667278002935b21b7fc9f62e0957cc1e25209d
b1e7dc16e24ebeb60bc6753c54e940c3e7664e9fcb130bd663129ecdb5818fcd
ca8492139c556eac6710fe73ba31b53302505a8cc57338e4d2146bdfa8f69bdb
d4b7e4870795e6f593c9b3143e2ba083cf12ac0c79d2dd64b869278b0247c247
d5d7fad5b745fa04f7f42f61a1db376f9587426c88ce276f06de8ea6889dfae8
d605a01e42d5bb6bca781b7ba32618e2f2870a4624b50d6e3d895e8e96adee6a
F842354198cfc0a3296f8d3c6b38389761674f1636129836954f50c2a7aab740
e4e99dc07fae55f2fa8884c586f8006774fe0f16232bd4e13660a8610b1850a2

 

本稿は 2020年4月16日に Talos Grouppopup_icon のブログに投稿された「PoetRAT: Python RAT uses COVID-19 lures to target Azerbaijan public and private sectorspopup_icon」の抄訳です。

 

コメントを書く