Cisco Talosが公表した国家関与のスパイ活動「ArcaneDoor」キャンペーンについて調べた。

ArcaneDoorとは

主要な侵入ポイントとして機能する境界ネットワークデバイスを標的*1とした、国家に支援されたアクターによるスパイ活動のキャンペーン。 脆弱性を悪用し、「Line Dancer」や「Line Runner」のようなインプラントを展開することで、攻撃者はデータの流出や永続的なバックドアの設置など、さまざまな悪意のある活動を実行する。
二つのゼロデイ脆弱性(CVE-2024-20353、 CVE-2024-20359)が使用されていた。

発見までの経緯

2024年の初めに、顧客がCiscoの製品セキュリティインシデント対応チーム(PSIRT)とCisco Talosの双方に、
Cisco Adaptive Security Appliances(ASA)のデバイス上での不審なアクティビティについて問い合わせた。
これをきっかけに調査を開始し、最終的には複数の外部インテリジェンス パートナー(MSTICやCISAなど)も参加し、数か月に及ぶ調査の中でこれまで知られていなかった攻撃者を発見。
Cisco Talosでは「UAT4356」、MSTICでは「STORM-1849」と命名した。

タイムライン

日付 内容
2023/7 アクターは攻撃の開発とテストを開始
2023/11 アクターのインフラが立ち上がる
アクターの活動がされ始める
2024/01 被害者がアクターによる活動を初めて確認する
調査を開始
アクターの活動の継続
2024/02 さらに侵害されたデバイスが確認される
2024/03~04 ソフトウェアパッチの公開

調査結果

  • 攻撃者のほとんどの活動は2023年12月から2024年1月初旬の間に行われていた。
  • 攻撃者がスパイ活動に明確に焦点を当てていることと、標的となったデバイスに関する深い知識を示す特注のツールを利用していたことから、洗練された国家支援攻撃者と推測。
  • 調査の中で追加の被害者が特定され、そのすべてに世界中の政府ネットワークが関与していた。
    このことからも、国家支援攻撃者の可能性が高い。
  • 脆弱性を悪用し、「Line Dancer」や「Line Runner」のようなインプラントを展開することで、攻撃者は高度な攻撃チェーンを実行していた。
  • マルウェアの高度な開発とゼロデイ脆弱性の悪用についても、国家による関与を示唆しているとのこと。
  • 最初のアクセスの手法は不明*2だが、調査の中で三つの脆弱性(CVE-2024-20353、CVE-2024-20358、 CVE-2024-20359) を発見。
  • SSL証明書の情報から攻撃者はOpenConnect VPN Serverを使用していることがわかり、中国政府が支援するハッカーによる攻撃と明言している研究者もいる。
    アクターのインフラストラクチャ(Cisco Talosより引用)

①Line Runner(CVE-2024-20359)

概要

  • Cisco Adaptive Security Appliances(ASA)のWebVPNプラグインの自動インストールを悪用して起動・持続するLua Webshell。
  • 感染プロセスの過程で、防御回避のために複数のシステムファイルに悪意のあるコードを追加する。このコードはZIPにパッケージされたテキストファイルに含まれている。
ZIPファイルの中身
./csco_config.lua
./csco_config2.lua
./client_bundle_install/plugin/rdp.jar
./client_bundle_install/plugin/stgvdr.txt
./client_bundle_install/plugin/index.txt
./client_bundle_install/plugin/hash.txt
./client_bundle_install/plugin/umtfc.txt
./client_bundle_install/plugin/laecsnw.txt
  • バイスの起動時に「client_bundle_install.zip*3」が「disk0:/」に存在する場合、解凍され下記コマンドのように/pluginディレクトリ配下の.jarファイルがWebVPNプラグインとしてインストールされる。*4

    import webvpn plug-in rdp disk0:/client_bundle_install/client_bundle_install/plugin/rdp.jar

Webshell

  • Webshellは簡潔で、HTTP(S)のGETパラメータで送信されたデータをローカルのLuaスクリプトとして解釈して実行するもので、以下の形式でリクエストを送信する。
GET /+CSCOE+/portal.css?<ランダムなクエリパラメータ名>=<トークン>&<ランダムなクエリパラメータ名>=<URLエンコードされたLuaコマンド>
  • 最初のパラメータは、Cisco ASAによる一括プロービングを防ぐためのユニークなトークン。
  • このパラメータの値は、Webshellでハードコードされた 32 文字の英数字認証トークンと一致する必要がある。このトークンは被害者固有のもの。
  • 2番目のパラメータも32文字の英数字文字列であり、このパラメータの値はWebshellに書き込まれる。
  • このパラメータの値は、「/cdmgcDE9FFA6FF5A3CB9B51F5BC024A1F57CF」というファイルに書き込まれ、Luaスクリプトとして実行される。実行後、ファイルは削除される。

永続化

  • 通常、WebVPNプラグインをインストールするとシステムはZIPファイルを削除するが、client_bundle_install.zip内に存在したcsco_config.luaの実行*5により、Luaのメモリ内ファイルシステムに「/client_bundle.zip」として常駐するため実質、削除されずに残り続ける。
  • システムのシャットダウン時に「client_bundle_install.zip」を「disk0:/」にコピーし、システム起動時に再度インストールされるようにする。*6

検知方法

  • Line Runnerの挙動から、ブート時に「Lua Pattern^client_bundle[%w_-]%.zip$」に一致するファイルを「disk0:/」で探すことがわかるので、管理者が再起動前にこれにパターンマッチングするZIPファイルを作成して「disk0:/」に置く。再起動後にこのZIPファイルを読み込ませてエラーを発生させてから削除する。その後、「show disk0:/」コマンドを実行すると、悪意のあるZIPファイルが残っている。
ciscoasa> enable
ciscoasa# show version | redirect disk0:/client_bundle.zip
ciscoasa# show disk0:
ciscoasa# reload
# ... device reboots
ciscoasa> enable
ciscoasa# show disk0:
# If device was compromised
# ... client_bundle.zip would be missing
# ... client_bundle_install.zip [Line Runner] would be present
(引用元:https://www.ncsc.gov.uk/static-assets/documents/malware-analysis-reports/line/ncsc-tip-line-runner.pdf#page=6&zoom=100,80,96)

②Line Dancer(CVE-2024-20353)

概要

  • メモリ常駐型のシェルコードローダ。これを利用して攻撃者が任意のシェルコードをアップロードして実行する。シェルコードローダーがどのようにメモリに配置されるかは不明。
  • 32バイトの固定トークンを先頭に持つペイロードのみをロードする。
  • 最初の32バイトのデータ(WebVPN HTTP(S)POSTリクエストのhostscan-reply XMLフィールド内)が、カスタムでハードコードされた認証トークンと一致するかどうかをチェックする。
POST /CSCOSSLC/config-auth HTTP/1.1
~省略~
<host-scan-reply>[base64でエンコードされたペイロード]</host-scan-reply>
  • トークンがマッチした場合、トークンの後のデータはその長さを計算され動的に割り当てられたバッファに置かれる。
  • ペイロードbase64デコードされ、ローダーと同じ20KBのメモリアドレスにコピーされ、実行される。

永続化

  • Line Dancerは永続的ではなく、アクターはLine Runnerを介してASAデバイス上で永続性を確保する。

検知方法

  • ASAにはLINA(ASA)エンジンというものがあるが、LinaはASAデバイスの多くの機能を実行するバイナリである。これには複数のメモリ領域が割り当てられている。
  • 観測されたLine Dancerのペイロードは、Linaの領域のメモリ保護を変更し、Linaの実行可能なメモリ領域が複数発生する。特にサイズが0x1000の場合はLine Dancerが活動している可能性がある。
ciscoasa> enable
ciscoasa# show memory region | Include lina
# ... Line Dancerが活動していない場合
5574dd45b000-5574e202a000 r-xp 00000000 00:02 5494 /asa/bin/lina
5574e2229000-5574e351e000 rw-p 049b9000 00:02 5494 /asa/bin/lina 

# ... Line Dancerが活動している場合
558246778000-558248d87000 r-xp 00000000 00:02 5494 /asa/bin/lina   ←558248d87000
558248d87000-558248d88000 r-xp 0260f000  00:02 5494 /asa/bin/lina  ←558248d88000
558248d88000-55824b131000 r-xp 02610000 00:02 5494 /asa/bin/lina
55824b331000-55824c618000 rw-p 049b9000 00:02 5494 /asa/bin/lina
  • 実行可能(x)フラグを持つ複数の領域が存在すること、領域のサイズが0x1000であることに注目してほしい。(上記の、"Line Dancerが活動している場合"だと、1行目と2行目の領域のサイズの差が0x1000である。)

Yara

Yara
rule Line_Dancer {
 meta:
 author = "NCSC"
 description = "Targets code sections of Line Dancer, a
shellcode loader targeting Cisco ASA devices."
 strings:
 $ = {48 8D 5E 20 48 8D 3D BB FF FF FF BA 20 00 00 00}
 $ = {4C 89 EE 44 89 F2 48 8D 3D 9A 27 00 00}
 $ = {41 FF D7 41 5F 41 5E 41 5D 41 5C 5B 5D 48 C7 C0 01
00 00 00 5F}
 condition:
 all of them
}
(引用元:https://www.ncsc.gov.uk/static-assets/documents/malware-analysis-reports/line/ncsc-tip-line-dancer.pdf)

IOC

185.244.210[.]65
5.183.95[.]95
213.156.138[.]77
45.77.54[.]14
45.77.52[.]253
45.63.119[.]131
194.32.78[.]183
185.244.210[.]120
216.238.81[.]149
216.238.85[.]220
216.238.74[.]95
45.128.134[.]189
176.31.18[.]153
216.238.72[.]201
216.238.71[.]49
216.238.66[.]251
216.238.86[.]24
216.238.75[.]155
154.39.142[.]47
139.162.135[.]12

上記のIPアドレスが2023年12月~2024年2月までに観測された場合には特に注意が必要とのこと。
また、予期しない再起動や、ログのギャップが観測された場合にも調査が必要とのこと。

推奨対応

  • Cisco Adaptive Security Appliances(ASA)およびCisco Firepower Threat Defense(FTD)を修正されたバージョンに更新すること。

影響を受ける製品は以下の通り。

影響を受ける製品 影響を受けるバージョン
Cisco Firepower Threat Defense(FTD) 7.0.6.2未満
Cisco Adaptive Security Appliances(ASA) 9.16.4.57未満
  • 最新バージョンへの更新が難しい場合はWebVPNサービスが無効になっていることを確認すること。
  • 攻撃の影響を受ける条件が揃っている環境においては、IOCを参考に侵害の兆候がないかを確認する。
  • また、研究者らは適切なパッチが適用されていること、ログが記録されていること、強力なMFAが設定されていることを確認する時期だと声明を出している。

共同調査機関

  • オーストラリアサイバーセキュリティセンター(ACSC)
  • Black Lotus Labs at Lumen Technologies
  • カナダサイバーセキュリティセンター(CCCS)
  • Microsoft脅威インテリジェンスセンター(MSTIC)
  • 英国国家サイバー セキュリティ センター(NCSC)
  • サイバーセキュリティー・インフラセキュリティー庁(CISA)

参考文献

*1:標的はCiscoのASAに限らず、複数機器が標的とのこと

*2:未知の脆弱性を1つ以上悪用された可能性があると指摘。

*3:Lua Pattern^client_bundle[%w_-]%.zip$に一致すればファイル名は何でもよい

*4:例だとrdp.jarがインストールされるが、この時はファイル名の通りプラグインプロトコルはRDPに設定されていたとのこと。

*5:Line Runnerは下記のようなディレクトリトラバーサルを使用して悪意のあるZIPファイルを「/run/lock/subsys/krbkdc6」にコピーし、メモリ内ファイルシステムに常駐する。
ifs.dump(cbizipcontent, “disk0:/csco_config/../../../../../run/lock/subsys/krbkdc6”)

*6:/etc/init.d/umountfsにBase64で難読化したコードを追加することでこの機能を実装している。