本記事は、スウェーデン SOC によるリサーチ結果「Analysis of an Iranian APTs “E400” PowGoop Variant Reveals Dozens of Control Servers Dating Back to 2020」の日本語による紹介記事です。
概要
2022年1月12日、米国サイバー司令部のCyber National Mission Force(CNMF)は、イランのAPTグループMuddyWaterの攻撃ツールのレポートを公開しました。
Iranian intel cyber suite of malware uses open source tools
このレポートではMuddyWaterが使用するマルウェア PowGoop の主要コンポーネントを含む、複数のマルウェアサンプルが公開されました。
NTTSH(NTT Security Holdings)アナリストチームは、このマルウェアサンプルを、「E400」と名付けPowGoopの亜種に分類し、バックドア機能に着目して解析を行いました。2020年10月以降、数十台のPowGoop C&Cサーバーが存在することを特定し、2022年初頭から3件の被害事例を発見しました。
なお、2021年末以降は新しいC&Cサーバーは観測しておらず、本稿執筆時点でC&Cサーバーは1台しか活動しておらず、MuddyWaterはPowGoop-E400の運用を終了したと考えています。
ENT-11(MuddyWater)
ENT-11は、MuddyWater、Seedworm、Static Kitten、MERCURYとして公開捜査されており、主にスパイ活動や諸外国への敵対行為を行っています。米国サイバー司令部はイラン情報省(MOIS)の下部組織であると考えています。
彼らの攻撃ツールはドキュメント化されていて、この数年でリークされた情報から彼らの活動内容が判明してきました。彼らは外国政府や、電気通信、エネルギーなどの民間セクターを標的にしており、我々の調査では政府間経済協力組織や金融機関の被害も確認しています。
主に中東の近隣諸国を標的にしていますが、地域を問わず様々な国への活動も報告されており、MOISから直接命令を受けて標的を定めていると考えられます。
秘密裏に活動するため、DLL のサイドローディングなどの技術を使用して、コマンドおよび制御トラフィックを正常な挙動に偽装しています。さらに、セキュリティ機器での検出を避けるため、独自の軽量エンコーディングや難読化処理が散見されます。
公開されたENT-11のツールセットとインフラの一部から、彼らはツールの改良や様々な亜種を作成していることが分かります。そのことからも、2022年中は彼らの活動が続くと考えています。
PowGoopの概要
PowGoopは基礎的な攻撃ツールセットで、2020年以降、大規模な組織に対して使用されています。
2020年9月にパロアルトのUnit42が、PowGoopの最初の亜種を報告しました。同年7月に中東と北アフリカの国家運営組織へのThanosランサムウェア攻撃でも使用された疑いがあります。(攻撃関与の証拠はみつかっていません。)
ClearSky Cyber Security社が2020年9月に公開したレポート「Operation Quicksand」では、2020年7月のイスラエル組織への攻撃キャンペーンの解説と、検出が困難なPowGoopの亜種について述べています。この亜種は、2020年10月から観測しているPowGoop-E400と同種の可能性があります。
PowGoopは、DLLサイドローディングや難読化を使い、多段階の感染ステップでセキュリティ機器での検出を回避し、スケジュールタスクを使用して永続性を維持します。
DLLサイドローディングにより、Google Update Serviceなどの正規プロセスの下でC&C通信を発生させることで、検出や分析を困難にしています。
PowGoopマルウェアのセットは、以下の3つの機能を持ちます:
- DLLローダー
- 復号化およびローダーとして動作するPowerShellスクリプト
- PowerShellバックドア:C&C通信により、コードの実行とダウンローダーの機能を提供
最初のアクセス後にC&Cサーバーからダウンロードが観測された事例や、リモート実行ツールRemadminを介して展開される事例も報告されています。
次の図は悪意のあるコンポーネントを含む「google.zip」をによる感染フローです。
既に様々な組織、機関からPowGoopの感染フローをまとめたレポートが発表されていますが、私たちはPowerShellバックドアに着目して解析しました。
PowerShellバックドア解析
PowGoopの感染フローの最終ステップは、C&C通信機能を持つPowerShellスクリプトです。
米国サイバー司令部が公開したサンプルを解析しました。このスクリプトは感染ホストのプロキシ設定を読み込み、ユーザーエージェントとC&Cサーバーアドレスはハードコードされています。
GUIDもハードコードされています。
スクリプトには4つの関数(encode, c, decode, GET)と、C&C通信を維持するためのwhileループ文が含まれています。
スクリプトを実行すると、まず感染ホストのチェックインを行います。GET関数を呼び出し、パラメータ[$id]にハードコードされたGUIDを使用して、ハードコードされたC&Cサーバーにリクエストを送ります。
カスタムヘッダ「Authorization」に、ハードコードされたGUIDをセットします。このリクエストが、感染ホストの最初のチェックインになります。
C&Cサーバーはリクエストを受け取ると、暗号コマンド、または"ERROR 400"のレスポンスを返します。
C&Cサーバーからの暗号コマンドをGET関数が処理して、マルウェアの実行パスを取得します。
初回リクエストではGET関数のパラメータ[$id]にハードコードされたGUIDを使用していました。2度目のリクエストでは、パラメータの値はC&Cサーバーからのレスポンス内容により変化します。
次のwhileループ内の処理で、C&Cサーバーへのリクエストを生成します。C&CサーバーからレスポンスをAuthorizationヘッダーの値として設定しています。
次の処理で、レスポンスの内容をチェックしています。"ERROR 400" の場合、無限ループになり、コマンドを受信するまでC&Cサーバーへのチェックインを試行し続けます。
レスポンスが "ERROR 400" ではなく、暗号コマンドの場合、感染ホストで実行するコマンドを取り出すため、デコード処理が行われます。
以下がデコード処理の内容です。
先頭から2文字ごとに文字を取り出して (1, 3, 5 ...)、新しい文字列を形成します。この文字列はbase 64でデコードできます。例として、レスポンスの「dQ2rhlvYYnWO1ap」 から、「d2hvYW1p」が生成され、base 64デコードすると、コマンド 「whoami」になります。その後、Invoke-Expression (IEX) を使用して、感染ホストでコマンドが実行されます。実行コマンドと結果は、GET関数に戻されます 。
コマンド実行結果をエンコードして、Cookieヘッダーに設定します。
コマンド実行結果をまずbase 64でエンコードして、各文字の間に後にランダムな1文字を挿入して難読化します。
難読化された実行結果をCookieヘッダーに設定して、C&Cサーバーに送ります。
その後、バックドアはハードコードされた設定時間に合わせてスリープ状態になります(この場合は50分)。C&C通信を行うwhileループ処理の開始地点から再開します。
次の図は、初回チェックインリクエストから始まるC&C通信のやりとりを示します。
被害状況
PowGoop C&Cサーバーの調査から、2022年内において3つの被害者団体が観測されました。
- 政府省庁および地方自治体で複数被害(Cisco Talosチームの公表内容と重複)
- 政府間経済協力機関
- 中央アジアの大手銀行
最近リリースされたサイバーセキュリティアドバイザリで、Fortinetの 「FortiOS」 や 「Microsoft Exchange」 サービスは、複数被害者の影響で危機的状況になっていたことが明らかになっています。イランのAPTグループは2021年からアクセスして、標的としていたことを述べています。
IOCS
PowGoop Control Server | First Observed (≈) | Last Observed (≈) |
164.132.237[.]79 | 11/26/2021 | 1/15/2022 |
178.32.30[.]1 | 11/25/2021 | 1/16/2022 |
37.187.204[.]27 | 11/23/2021 | 1/14/2022 |
51.255.19[.]178 | 11/22/2021 | 1/14/2022 |
51.255.19[.]179 | 11/21/2021 | 1/17/2022 |
164.132.237[.]65 | 11/18/2021 | 12/24/2021 |
164.132.237[.]66 | 10/28/2021 | 1/9/2022 |
185.141.27[.]143 | 10/18/2021 | 10/26/2021 |
80.85.158[.]49 | 10/18/2021 | 10/18/2021 |
185.141.27[.]248 | 10/15/2021 | 11/12/2021 |
185.183.96[.]7 | 10/1/2021 | 11/13/2021 |
185.183.96[.]44 | 10/1/2021 | 11/12/2021 |
192.3.161[.]218 | 9/8/2021 | still active as of 4/6/2022 |
23.94.7[.]9 | 8/31/2021 | 1/15/2022 |
96.8.121[.]193 | 8/29/2021 | 3/3/2022 |
23.94.24[.]78 | 7/23/2021 | 1/13/2022 |
23.94.24[.]76 | 7/18/2021 | 2/9/2022 |
185.45.192[.]228 | 7/11/2021 | 11/11/2021 |
23.94.24[.]77 | 7/6/2021 | 8/18/2021 |
107.172.165[.]182 | 6/17/2021 | 7/3/2021 |
107.175.57[.]83 | 6/16/2021 | 1/14/2022 |
107.172.165[.]17 | 6/16/2021 | 6/23/2021 |
192.210.226[.]128 | 4/21/2021 | 11/5/2021 |
107.175.95[.]102 | 11/23/2020 | 7/24/2021 |
172.245.81[.]135 | 11/18/2020 | 6/12/2021 |
104.168.98[.]148 | 11/12/2020 | 7/25/2021 |
192.210.191[.]188 | 11/10/2020 | 7/24/2021 |
198.144.190[.]132 | 11/4/2020 | 4/24/2021 |
172.245.157[.]101 | 10/28/2020 | 10/28/2020 |
23.94.7[.]134 | 10/26/2020 | 8/16/2021 |
23.95.8[.]149 | 10/26/2020 | 1/26/2021 |
96.8.121[.]101 | 10/14/2020 | 8/17/2021 |
107.175.95[.]101 | 10/13/2020 | 10/13/2020 |
192.3.161[.]182 | 10/10/2020 | 8/26/2021 |