エグゼクティブサマリー
Akamai Hunt は、正当な大規模言語モデル(LLM)API エンドポイントの背後に隠れようとする新型のマルウェアを特定しました。
このマルウェアは、一般的なスキーマを使用するのではなく、Base64 でエンコードされているように見える文字列を送信してコマンド & コントロール(C2)接続を確立します。
これが悪用されると、攻撃者による完全な制御やデータ窃取につながる可能性があります。
これは、攻撃者が攻撃手法を迅速に進化させていることを示す新たな例であり、組織がこのような最新の脅威に備える必要性が高まっています。
概要
巷間言われているとおりのスピードで脅威の情勢は進化しており、攻撃者はすぐに適応します。大規模言語モデル(LLM)が組織内で広く使用されるようになると、攻撃者はその通信パターンを利用して悪性トラフィックを紛れ込ませやすくなります。
防御者が LLM を使用してアラートを調査して要約し、指標を関連付けることにより、急いで AI を検知パイプラインに統合しているのと同様に、マルウェア作成者も AI を使用して実験を行っています。Akamai は LameHug や PromptLock などのマルウェアによる初期の兆候をすでに確認しており、それはテキスト生成用に設計された LLM が悪性の目的でどのように悪用される可能性があるかを示しています。
また、攻撃者がどのように SesameOp バックドアでコマンド & コントロール(C2)インフラに OpenAI の API を使用するかを示す例も確認しており、これは AI の世界における完全に新しいアタックサーフェスを浮き彫りにしています。
最近、Akamai Hunt チームは、悪性トラフィックを LLM API リクエストのノイズに混入させる新たなアプローチを使用して LLM を悪用する新型のマルウェアを発見しました。このブログ記事では、Hunt チームが Hunt の顧客へのサービス提供の一環として発見した新たな脅威の例を紹介します。
エンドポイントの悪用
マルウェアにおける LLM の新たな使用を探索していたとき、あるファイルが突然私たちの注意を引きました。それは VirusTotal ですでに悪性としてマークされており、いくつかの Yara ルールに合致していました。調査を開始した際、私たちは LLM を使用したコード作成と被害者に対する実行の新たなパターンが見られると予想しました。
このマルウェアは、最初にソケットを使用して IP アドレス 39.97.57[.]244 に接続しようとしますが、失敗すると、興味深いことに HTTP C2(1347790942-k1bok35vg3.ap-guangzhou.tencentscf[.]com/v1/chat/completions)にフォールバックします。
API への最初の HTTP リクエストを観察すると、驚いたことに、この種のリクエストに必要なヘッダーに従っていないことがわかりました。
API エンドポイント
調査の中で、Akamai は LLM API エンドポイント(特に /v1/chat/completions)の使用を検索しました。
OpenAI のドキュメントによると、このエンドポイントは「所定のチャット会話のモデル応答を作成」します(図 1 および図 2)。
curl https://api.openai.com/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-d '{
"model": "gpt-5",
"messages": [
{
"role": "developer",
"content": "You are a helpful assistant."
},
{
"role": "user",
"content": "Hello!"
}
]
}'
{
"id": "chatcmpl-B9MBs8CjcvOU2jLn4n570S5qMJKcT",
"object": "chat.completion",
"created": 1741569952,
"model": "gpt-4.1-2025-04-14",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "Hello! How can I assist you today?",
"refusal": null,
"annotations": []
},
...
/v1/chat/completions エンドポイントは OpenAI によって導入され、OpenAI 互換 API(OpenRouter や Hugging Face など)を提供する複数のプロバイダーやゲートウェイによってすぐにエミュレートされました。
しかし、他のベンダーの公式 API は、異なるネイティブエンドポイントを使用したり、同様のリクエストスキーマにもかかわらずパラメーター、認証、ストリーミングのふるまいが異なったりする場合があります。
リクエストスキーマ
通常、この API を使用する場合は、次の必須パラメーターを追加する必要があります。
認可:リクエストを認証するためには、「Authorization: Bearer YOUR_API_KEY」の形式のベアラー・トークン・ヘッダーが必須
モデル:エンドポイントがリクエストをルーティングするチャット対応モデル(例えば gpt-3.5-turbo または Llama-4-Maverick-17B-128E-Instruct-FP8)を選択する文字列識別子
メッセージ:モデルが次の応答を生成するために使用する会話履歴を表す、ロールタグ付きメッセージオブジェクトの配列(ロールとコンテンツを含む)
前述のように、Akamai はすでにこのエンドポイントが実際に悪用されていることを確認しています。それが LameHug です。このマルウェアの作成者は、同じエンドポイントを使用して Hugging Face 上の LLM モデルにアクセスし、特定のコマンドを要求して、被害者に対して実行するコードを動的に生成しました(図 3)。
Chat Completions によるカモフラージュ
このバイナリーを分析して最初に気づいたことは、前述のフィールドを使用していないことでした。その代わりに、Base64 でエンコードされているように見える文字列を送信します(図 4)。
理論的には、この API の背後に LLM が存在する可能性があり、攻撃者はカスタムコードを使用してサーバー側でプロンプトを作成できます。しかし、この場合、この API エンドポイントを使用する理由はカモフラージュのためでもあります。
Akamai の API Security 製品のデータを観察したところ、顧客から 151 の固有のエンドポイントが見つかりました。これらのエンドポイントからのすべての会話に、上述のスキーマとの類似性がありました。例えば、一部の API は「messages」ではなく「query」を使用しますが、すべてのセッションに非常に明確な類似性があります。
これは、誰もが独自の /v1/chat/completions エンドポイントを開発できること、そしてこのエンドポイントに関する Request for Comments(RFC)はないものの、開発者が利用する事実上の標準が存在することを示しています。
さらなる調査
ボディをデコードし、0xBB で XOR を実行したところ、被害者に対して実行された最初の偵察リクエストのようなものが見つかりました。
応答の解析プロセスを実行し、マルウェアが元の API スキーマと一致しない応答を期待していることを確認しました。XOR と Base64 を使用して、受信データを復号して処理した後、応答で提供されるインストラクションに従います(図 5)。
C2 サーバー(1347790942-k1bok35vg3.ap-guangzhou.tencentscf[.]com)は、Tencent が運営するクラウド・コンピューティング・サービスである Tencent Cloud 上のサーバーレスクラウド機能(AWS Lambda または Azure Functions の類似機能)です。攻撃者は、クラウド機能を C2 サーバーとして使用することで、無害なトラフィックとの区別が困難でレジリエントな自動スケーリングインフラを実行できます。
私たちの推測では、攻撃者はこの特定のエンドポイントを公開して、防御者やネットワーク管理者にとってより正当に見えるようにすることを選択しました。なぜなら、AI エージェント、統合、自動化ツールの増加に伴い、この API エンドポイントの使用はますます一般的になっているからです。
このマルウェアはいくつかのインストラクションをサポートしており、被害者を完全リモート制御するリモートアクセス型トロイの木馬(RAT)として分類されます。Akamai はそれらを分析し、すべてが同じエンドポイントと通信することを確認しました(Akamai の分析については付録を参照してください)。
例えば、図 6 は $HunterInfo インストラクションの出力です。これは特定のリモート・アクセス・ツールの設定ファイルを検索し、最初のメッセージ送信と同じ方法(XOR と Base64 を使用)でデータを窃取して /v1/chat/completions に戻します。
このマルウェアには、0x88 で XOR を実行して Base64 でエンコードされた埋め込みファイルも 3 つ含まれています。
それらはすべて、net_test.exe という名前の .NET ファイルです。それらが組み合わさり、被害者のネットワークで SOCKS5 または HTTP を使用して小規模なプロキシツールキットを組織化します。それらのファイルのうち 2 つは SOCKS5 サーバーと HTTP サーバーであり、3 つ目はトラフィックを送受信できるクライアントです(図 7)。
追加ファイル
Akamai はこのマルウェアの古いバリアントを特定しました(ハッシュはこの記事の IOC セクションで確認できます)。それには類似のインストラクションが含まれており、複数のリモート・アクセス・ツールの同一のハードコードパス($HunterInfo)もありましたが、C2 サーバーは異なっていました。
また、VirusTotal で、C2 サーバーに関連する RAR ファイルも見つかりました。この RAR ファイルには .lnk ファイル(个人简历.lnk、「履歴書」の意)が含まれ、ftp -s””:_/_/_/_/_/_/_/_/_ を実行します。この RAR ファイルは、ネストされたディレクトリ内に .doc ファイルも含んでいますが、その中身はバイナリーコードです(図 8)。
「_」ファイルは、その .doc ファイルから 3 つの PE ファイルを作成し、C:\Users\Public\Update にコピーします。
最終的に、それは
!call start /min C:\Users\Public\Update\svchost.exe -InstallLsp
C:\Users\Public\Update\360.%TIME:~4,1% >nul を呼び出します(図 9)。
10 個の異なる .doc ファイル(0~9.doc)があり、それらはいくつかのランダムなバイトを除いて類似しています。%TIME:~4,1% は、%H:%M:%S.%f の形式の現在時刻の分の 2 桁目を計算します。おそらく署名スキャンを回避するために、この .doc ファイルでは MZ ヘッダーが欠落しています。現在時刻に基づいて、このスクリプトは .doc ファイルにヘッダーを作成し、それを C:\Users\Public\Update\360.<minute> にコピーします。
svchost.exe
このファイルは実際には「SangforPromote.exe」であり、Sangfor Technologies の検証済み署名済みファイルです。引数 -InstallLsp と DLL を指定すると、正当なファイルは DLL をロードし、LoadLibrary を使用してそのエクスポートにポインターを設定します(図 10)。
360 DLL
360 という名前の DLL は、読み取り、書き込み、実行(RWX)権限を持つメモリーを割り当て、それに「sc」を読み込み、実行します。
sc
sc を分析したところ、ロードされたコードは LoadLibrary と GetProcAddress を使用して関数を解決します。HTTP リクエストの送信先である 2 つのハードコードされた宛先があり、それは以下の Akamai が分析したマルウェアの C2 アドレスと一致します。
https://1347790942-k1bok35vg3.ap-guangzhou.tencentscf[.]com
39.97.57[.]244
また、前のサンプルと同様に Base64 と XOR でデータをデコードし、ツールセット間の接続を確立します。このフローにより、最終的な RAT が被害者のファイルシステムにダウンロードされると考えられます(図 11)。
Akamai Hunt による保護と緩和
Akamai Hunt の顧客は、このようなアーティファクトがないか 24 時間体制で継続的に監視し、このような攻撃からの保護を実現できます(図 12)。
アクティブな脅威が検知される前でも、Hunt の適応型セグメンテーション機能により、組織はリスクを軽減し、リスクを抑えることができます。適応型セグメンテーション機能は、通常の通信フローと資産のふるまいを分析することで、AI エンドポイントへの不要なアウトバウンドアクセスの制限、開発環境と本番環境の分離、潜在的なラテラルムーブメント(横方向の移動)の経路の最小化を行うポリシーをガイドできます。
この機能は、継続的な可視性を LLM ベースの新たな脅威に対するプロアクティブなレジリエンスに変えることで、検知にとどまらず Hunt の保護を拡張します。
結論
攻撃者は、/v1/chat/completions エンドポイントを介して窃取と C2 をルーティングすることを戦略的に決定し、LLM サービスのユビキタス性と急速な進化の両方を悪用しています。このアプローチは、既存のクラウドインフラを活用して通常の企業トラフィックに溶け込む通信チャネルを構築するため、ROI が向上する可能性があります。
また、この手法は、現代の環境で流行している次の 3 つのトレンドに沿っているため、危険です。これらのトレンドが組み合わさることで、安定していて、検知されず、表面的な検査では無害に見える C2 パスが攻撃者にもたらされる可能性があります。
クラウド API へのアウトバウンド HTTPS が広く普及していて、多くの場合検査されていない
マシン生成トラフィック(AI エージェント、アプリ、統合)に対する許容度が高まっている
攻撃者が使用できる信頼性の高い長期的なエンドポイントを提供するクラウドホスティングを簡単に利用できる
実際には、防御者は LLM がどのように機能し、どのような脅威を招くかを現場で学んでいます。十分に正当に見えるトラフィックは、適切な保護が導入されていなければ通過できてしまう可能性があります。ありふれたものに紛れ込ませることが、最も簡単に検知を逃れる方法になることもあります。
攻撃者は正当な LLM サービスを宛先とするトラフィック内に悪性のペイロードを隠し、ますます一般的になっているネットワークパターンを巧みに利用します。そうすることで、その通信にフラグが付けられたり、調査が行われたりする可能性が減少します。組織が AI ツールと自動化を導入するにつれて、LLM エンドポイントへのトラフィックは当たり前になりつつあります。攻撃者は、そのノイズに潜むチャンスを狙っているのです。
IOC
IOC |
タイプ |
|---|---|
93cf0d545a872c393c053031570bc5eaebfa1aa6a0860fd0b08b679b8ce52fd2 - RAT |
ハッシュ |
10c444262994c05930394388e6112ddd98b83118661868bccd83b1fa61160a62 - 1.rar |
ハッシュ |
91c43e7ddd98af63d6b1b130e997b909100f3eaf71e30511858cca4348b509db - _ |
ハッシュ |
9f119d05403b1e079893fb77f6b8b2a9682d1df7ced31a189e7490924ccfb170 - 个人简历.lnk |
ハッシュ |
b7dcf661844e6f3e94eb140a79787be6dad77c09ab0b97cf41a62afd07219190 - 古いバリアント、2025 年 5 月 |
ハッシュ |
2e395436e97eaad9a087825d22005b6afc55044abf458604a5118c2ac9bde42a - 古いバリアント、2025 年 9 月 |
ハッシュ |
67ea3ea3c58a57dbbdac48d4ce3d546816f715eaf32bec33a64a63c91541e697 - net_test.exe(クライアント) |
ハッシュ |
195c283703ee7df7c7ef17c85b0fdf88de22348bb0755daf5f0c3ed319c8d88a - net_test.exe(SOCKS5 サーバー) |
ハッシュ |
e513d12abd03a4e07788dd85888d187cb6ca6e69a59f22f00853cae0a0b34712 - net_test.exe(HTTP Server) |
ハッシュ |
1347790942-k1bok35vg3.ap-guangzhou.tencentscf[.]com/v1/chat/completions |
URL |
39.97.57[.]244 |
IP |
C:\Users\Public\Update |
ディレクトリ |
付録
作業指示 |
説明 |
|---|---|
$ActiveDos |
現在のディレクトリを返します |
$AddUser |
新しいローカルユーザーを作成し、それを Administrators グループに追加します |
$ExecuteCommand |
コマンド実行 |
$FileDelete |
ファイルを削除します |
$FileDownLoad \ $BigFileDownLoad |
被害者のマシンからファイルをダウンロードします |
$FileExist |
ファイルが存在するかどうかを返します |
$FileUpload \ $BigFileUpload |
被害者のファイルシステムにファイルを書き込みます |
$Get_LocalDisk |
被害者のドライブを取得します |
$GetFile |
ファイルデータ(サイズ、タイムスタンプ)を取得します |
$GetFolder |
特定のディレクトリ内のフォルダの一覧を作成します |
$GetFolderAndFile |
フォルダの一覧を作成し、ファイルを取得します |
$GetProcess |
プロセスのリストを作成します |
$GetThreadPermissionsInfo |
マルウェアプロセスのスレッド情報 |
$HunterInfo |
360 Secure Browser、SunLogin、ToDesk、NetSarang、Chrome のデータを盗みます |
$KillProcess |
所定の PID を持つプロセスを終了します |
$MessageBox |
指定された文字列を含むメッセージボックスを表示します |
$Netstat |
netstat を実行してアクティブな接続を確認します |
$OffLine |
プロセスを終了します |
$Online |
被害者から最初のデータを再送します(図 4) |
$PE64Loader |
explorer.exe を生成し、それにシェルコードローダーを挿入します |
$PEMemoryLoadOnSelf |
バッファーからコードをロードします。このマルウェアは、受信された複数の引数(「JuicyPotato」や「PwDump」など)をチェックし、この名前の環境変数を設定します。そのため、このマルウェアには「モジュール」またはプラグインとして使用するための機能があると考えられます。 |
$Persistence |
C2 から DLL を受け取り、次のことを行います。
また、スケジュールされたタスクを作成することもできます。 |
$ProgressSpawn |
C:\Users\Public の下でペイロードを作成または検証し、引数に応じて ShellExecute、-InstallLsp、インメモリロードなどのさまざまなメソッドを使用してそれを実行します |
$RegManage |
実装されていないようです |
$ScreenShot |
スクリーンショットを撮ります |
$ScreenSpy |
TightVNC レジストリキーを変更して、リモート制御を行えるようにします(おそらく被害者が TightVNC を持っていると想定しているか、その攻撃の前工程または後工程のため) |
タグ