ブロックチェーンを C&C インフラに使用する Etherhide 手法

概要
攻撃者は C&C(Command and Control) インフラに対する追跡、または遮断を回避するために、様々な手法とチャネルを活用してきた。例えば、IP アドレスを素早く変更しながらドメインを持続的に維持する Fast-Flux、法的対応が困難な国に位置するインフラを使用する Bulletproof Hosting、そして Telegram、Pastebin、X(Twitter) などの公開プラットフォームが活用されてきた。 近年には、ブロックチェーンの匿名性と検閲不可能性を活用する事例も登場している。本ブログでは、C&C(Command and Control) インフラでスマートコントラクトを使用する Etherhide について調べ、これを活用した悪用事例について紹介する。

Etherhide 手法とは?

Etherhide はイーサリアム(Ethereum) ブロックチェーン上のスマートコントラクトに任意のペイロードを挿入した後、これを外部で呼び出し、実行する方式で動作する。

[図1] Etherhide 動作方式

 

攻撃者は Binance Smart Chain や Sepolia テストネットなど、様々なブロックチェーンネットワークを活用することができ、この方式によって高い匿名性を維持することができる。また、ブロックチェーンの特性上、挿入されたペイロードは削除や遮断されないため、攻撃者は安定的で持続的なアクセスが可能である。このように、Etherhide は既存の Web サーバーやドメインに依存していたマルウェアの配布方式とは異なり、ブロックチェーンネットワーク自体をインフラに活用するため、既存の追跡や遮断方式では対応が困難である。

 

一般的にブロックチェーンネットワークと相互作用する際はgas feeが発生するが、Etherhide 手法ではペイロードを挿入した後、これを配布する過程では一切gas feeが発生しない。これは、Etherhide 手法でコントラクトに挿入されたペイロードを照会する際、イーサリアム API メソッドである「eth_call」を使用するためである。「eth_call」メソッドは、ブロックチェーン上にトランザクションを生成せず、message call を通じて状態変更なしにスマートコントラクトの関数を実行する。したがって、読み取り専用のスマートコントラクト関数の呼び出しに主に使用され、これを利用してペイロードをgas feeなしで照会することができる。

[表1]は、トランザクションが発生する「eth_sendTransaction」メソッドと、トランザクションが発生しない「eth_call」メソッドの呼び出し時にそれぞれ使用されるパラメータの例を表示する。「eth_sendTransaction」メソッドの gas パラメータはトランザクションを実行するために提供するガスを意味し、使用されなかったガスは再び返還される。一方、「eth_call」メソッドはトランザクションを発生させないため、gas パラメータを別途指定する必要がない。

method : eth_sendTransaction method : eth_call
params: [
{
to: “0x***60cf90B0C6D0220023402AC11E1CA7D0f6***”,
from: “0x***00BbE1A20dA4d474666B79a5fa6CE12629***”,
gas: “0x76c0”,
value: “0x16345785d8a0000”,
data: “0x”,
gasPrice: “0x4a817c800”
}
]
params: [
{
to: “0x***8567B4CB5DEcbFE28be25b64Fd36e225aA***”,
data: “0x2cae8ae4”
}
]

[表1] イーサリアム API メソッドのパラメータ比較

 

しかも Sepolia のようなテストネットを使用する場合、コントラクトのデプロイやペイロードのアップデートのようなトランザクションもすべてテストイーサリアムトークンを使用するため、実際の費用がまったくかからない。

 

Etherhide ペイロード アクセス例

以下の[図2]は、コントラクトにペイロードを挿入する際にリクエストしたトランザクションのログである。ログの Input Data 領域は定型化された構造を持っており、内部に挿入したペイロードが含まれている。

[図2] トランザクションログ

 

[図3]は、データを構造化された形式に従って分析した結果を示している。最初の4バイトはメソッド識別子であり、その次の32バイトはペイロードが始まる位置を表すオフセットである。続く32バイトはペイロードの長さを意味しており、その後はオフセットと長さの情報をもとに、実際のペイロードデータが続く。

[図3] データパース

 

実際に「alert(“Attack payload executed!”);」という文字列を Base64 でエンコードし、コントラクトのペイロードに挿入すると、これを照会する際に返されるデータは[図4]と同じである。返されたデータにはメソッド識別子が含まれておらず、[図3]の構造に従ってパースするとペイロードだけを抽出でき、これによって元のデータを完全に復元することができる。

[図4] 応答で伝達されたペイロード

 

例では Etherhide 手法を実装するために Sepolia テストネットを使用した。「eth_call」メソッドを呼び出す際に必要な RPC パラメータを JSON 形式で構成したあと、これを POST ボディに載せて Sepolia RPC エンドポイントに送信した。[図5]は、呼び出し過程で使用したコードの一部を示しており、実際の実装方式を直接確認することができる。

[図5] ペイロード 呼び出し例示コード

 

この手法は、Web ブラウザだけでなく、実行ファイル(バイナリ)、スクリプトでもペイロードをダウンロードするのに活用される可能性がある。追加のペイロードをインターネットから受け取るダウンローダーマルウェアでも、既存の方式の代わりに Etherhide 手法を活用すれば、Web サイトを侵害したり、ドメインを生成せずに C&C サーバーを露出させないままペイロードをダウンロードすることができる。しかも、ブロックチェーンの特性上、遮断が困難で持続的なアクセスが可能であるという点で、攻撃者に有利に作用する。

 

Etherhide 手法が使用された実際の事例

 

ClearFake 

2023年7月頃から配布されている ClearFake キャンペーンは、侵害された Web サイトで Chrome ブラウザのアップデートを装ったマルウェアをユーザーにダウンロードおよび実行させるように誘導する。初期には別途の C&C サーバーへリダイレクトした後、マルウェアをダウンロードしたが、最近ではクリップボードを活用し、ユーザーが自ら Powershell コマンドを実行するように誘導するソーシャルエンジニアリング手法が使用されている。この過程で攻撃者は Etherhide 手法により、リダイレクトやペイロード送信にブロックチェーンネットワークを C&C インフラとして利用している。詳しい内容は Marek Szustak の「EtherHiding and ClickFix: new mask of social engineering campaign」で確認できる。 一方、クリップボードを利用したコマンド実行の誘導手法については ASEC Blog で紹介したことがある。(韓国語 : https://asec.ahnlab.com/ko/73880/  | en : https://asec.ahnlab.com/en/73952/ )

 

Smargaft

Smargaft は Smart Contract と Gafgyt ボットネットの名前を合わせて作った名前であり、Etherhide 手法を使用するボットネットである。Smargaft は Binance Smart Chain (BSC) RPC サーバーにリクエストを送り、ペイロードであるボットネット C&C サーバーの IP アドレスを取得する。攻撃者はボットネットの C&C サーバーアドレスを変更する際、契約のペイロード情報をアップデートするだけで簡単に変更することができる。詳しい情報は24年2月に XLAB で掲載した「Smargaft Harnesses EtherHiding for Stealthy C2 Hosting」で確認できる。

 

結論

Etherhide 手法は次世代 Bulletproof Hosting として注目を集めており、それに伴い攻撃者の悪用事例も増加すると予想される。高い匿名性と持続性、コスト負担がないという点、そしてサーバーインフラが不要な構造はブロックチェーンをマルウェアインフラとして活用するのに十分な理由となる。防御者の立場からすると、Etherhide 手法は既存の方式では検知や遮断が困難な場合もある。しかし、Etherhide 手法は結局のところペイロードを受け取る用途で使用されるため、ユーザーが初期段階で疑わしいファイルやコマンドを実行しなければ被害を予防することができる。

関連 IOC および詳細な解析情報は、AhnLab の次世代脅威インテリジェンスプラットフォーム 「AhnLab TIP」 サブスクリプションサービスを通して確認できる。