クリプトマイナーに関する分析:クリプトマイナーの正体
エグゼクティブサマリー
これは、『クリプトマイナーに関する分析』という 3 部構成のブログシリーズの第 2 部 です。 第 1 部では、一般的な暗号資産(仮想通貨)とそのさまざまな特性、および脅威アクターにとってそれらのいくつかが他の要素よりも魅力的である理由について説明しました。
今回は、クリプトマイナーのさまざまなサンプルについて詳しく分析し、内部の歯車とギアへの理解を深めます。悪性のアクティビティにとって都合が良いことが確認された 2 つのコイン、Monero と Zephyr をマイニングしているクリプトマイナーに焦点を当てます。このブログ記事では、以下について説明します。
ブロックチェーンネットワークを使用して、潜在的なクリプトマイナーマルウェアから疑わしいマイニング通信を特定する
長期的にアクティブで永続的な状態を保持するために、さまざまなトポロジーを使用する 4 つのケーススタディの例
1 時間あたり 5.50 米ドルを生成し、数千人もの被害者を出した、長期的かつ永続的なキャンペーンの興味深い事例
1 つのキャンペーンで複数のコインを使用する攻撃者
ネットワークアクティビティによる検知とブロックチェーンネットワークとの相互参照
コンセンサスアルゴリズムのフットプリンティングと並行して、プロセスのメモリー分析を活用した検知
また、セキュリティチームが資産を保護できるように支援するために、このブログ記事のケーススタディからのセキュリティ侵害インジケーター(IOC)のリストも掲載されています。
この記事の締めくくりでは、ASIC 耐性アルゴリズムの概念に基づく検知技術と、クリプトマイニング操作の検知技術について考察します。この検知はマイニングの基礎に焦点を当てており、ネットワークレベルまたはオペレーション・システム・レベルに適用できます。
Monero ネットワークの分析
Monero ネットワークは、 Levin プロトコル を使用して構築され、ネットワークノードを介したピアツーピア(P2P)通信を実装します。このプロトコルを使用して、新しいトランザクションや新しいブロックなどのブロックチェーンの操作を分散します。また、ピアノードの公開によってネットワークを分散型の手法で自立させ、コンセンサスアルゴリズムを通じて攻撃を排除することもできます。
例として Monero を使用していますが、暗号資産(仮想通貨)のほとんどでブロックチェーンのネットワーク検知が可能です。これは、ブロックチェーンネットワークの分散性によるもので、詳細は 以前のブログでご覧いただけます。
ネットワーク検知
Monero ネットワークは、個人貢献者による分散型 P2P ネットワークであり、私たち自身も容易に接続することができます。Monero ネットワークをマッピングすることで、信頼性の高い IOC(ノード IP アドレスなど)を取得し、他よりも接続性が高いノードハブの潜在的なアクティビティを特定することができます。
この情報を使用して、マイニング操作を検知および調査することができます。また、ネットワークに脆弱性がないか、ブロックチェーン攻撃にさらされていないかを評価することもできます。図 1 は、Monero のマイニングネットワークを視覚的に表現したもので、ヒートマップには地理的領域ごとのノードの密度が示されています。世界中どこでもアクセス可能なノードには、赤色のドットを付けました。
ネットワークは、分散型のピアノードで構成されているため、 クリプトマイナーは、地図上にある世界中のおよそ 30,000 のサーバーのいずれかと直接または間接的にやり取りする必要があります。このマップは、クリプトマイナーのサンプルハンティングと、ブロックチェーンへの直接ネットワーク接続の検知に非常に役立つことがわかりました(詳細は Akamai の GitHub リポジトリをご覧ください。ブロックチェーンのクローリングやマップ生成のソースコードも含まれています)。
ネットワークに対するクリプトマイナーの相互参照
Monero ネットワークをマッピングすることで得られたさまざまな指標を使用して、ブロックチェーンネットワークとやり取りするサンプルを特定することができます。 たとえば、VirusTotal Livehunt を使用すると、既知のノードアドレスを含むファイルを識別できます。これにより、アクティブなクリプトマイナーキャンペーンを検知できます (図 2)。
他のセキュリティ同様、万能なハンティング手法というわけではありません。このアプローチのみを使用すると、サーバーが専用のブロックチェーンノードでない場合にフォールス・ポジティブ(誤検知)を引き起こす可能性があります。また、マップが検知していないノードもあるため、可視性の欠如が発生する可能性もあります。ただし、この手法を他の指標と組み合わせると、真陽性検知率が向上します。
このマップには、公的にアクセス可能なノードと最近アクセス可能になったノードが含まれています。一部のノードは、Monero ノードよりも多く使用されており、たとえば、Python の Python Package Index(パイソン・パッケージ・インデックス) リポジトリまたはその他のサービスのミラーとして機能します。図 3 は、複数のサービスを提供するサーバーの例であり、ハンティングプロセスで混乱を引き起こすことがあります。これらのサーバを分析から排除し、潜在的なフォールス・ポジティブ(誤検知)の可能性を低減しました。
脅威ハンティングにおいて、関連性のないサンプルを特定することは、関連性のあるサンプルの特定と同様に重要です。ネットワーク分析と相互参照アプローチを組み合わせることで、ボットネットを介してオーケストレートされたクリプトマイナーやマイニング活動全体を明らかにすることができます。ハードコードされたウォレットアドレスの照合など、追加の静的分析手法を組み込むことで、最も関連性の高い悪性のサンプルに効率的に焦点を当てることができます。
クリプトマイナーのサンプルの分析
クリプトマイニングの性質上、ノイズが多いため、「肉眼」でも簡単に操作を検知できます。警告を受けた IT プロフェッショナルは、高度なアンチマルウェアツールがなくても、クリプトマイナーが生成した異常を検知できます。技術系以外の人でも、マシンのベースラインパフォーマンスを認識し、パフォーマンスが低下した場合は、専門家に分析してもらうことで根本原因を簡単に特定できるでしょう。このため、多くのクリプトマイナーではマルウェアを分析や検知から保護するのではなく、標的を絞らない大量感染の戦略を実行します。
次のケーススタディでは、当社が実際に特定したクリプトマイナーのサンプルをいくつか取り上げ、その動作やふるまいに関して最も興味深い内容について調べます。2 つの主要な要因を基にして、以下のケーススタディを選択しました。(1) このシリーズの最初のブログ記事に記載されている該当するコインと(2)悪用されたマイニングトポロジー。
ケーススタディ #1:永続的で大規模なキャンペーン
この調査の一環として、さまざまなクリプトマイナーのサンプルを分析しました — そのうちの 1 つは 6 年間にわたるキャンペーンでした。長期的な活動によく見られるように、組織的な運用またはサードパーティのクリプトマイナーを展開するマルウェア配信サービスのようです。
そのサンプルの分析 から、 5.6 Mh/sのハッシュレートに累積する複数のプロキシがあることがわかり、これは 何千台もの侵害されたマシンに相当します (図 4)。大規模で永続的な攻撃であり、ハッシュレートが安定しているため、おそらくほとんどの被害者がマルウェアを検知できておらず、マルウェアは妨げられることなく継続的に実行されます。このような攻撃は、攻撃者にとって非常に有利なキャンペーンです。
このキャンペーンは、少なくとも 2018 年 6 月以降活動を続けており、ロシアと中国の脅威アクターによる共同の取り組みである可能性を示す指標(例:サンプルで使用されている言語)が含まれています。この理論は、コマンド & コントロール(C2)サーバーの分析もサポートされていましたが、この記事の公開日時点では完全には確認されていません。
執筆時点では、攻撃者は少なくとも 1,702 XMR を蓄積し、これは現在の為替レートで約 28 万米ドルに相当します。この 1 つのキャンペーンから、6 年間にわたって年間平均約 47,000 米ドルを得ています。
このキャンペーンにリンクされているほとんどのサンプルでは、初期ローダーおよびダウンローダーとして、被害者のオペレーティングシステムに対応するスクリプト言語を使用します。ルーティングや紛らわしいネットワーク接続に大きく依存しており、悪性ファイルを C2 サーバーから分離しようとした場合に発生する可能性があります。
キャンペーンのサンプルを分析した結果、PowerShell を使用し、 r77ルートキットを使用したステルス方式でローダーという実行可能ファイルを展開することが特定されました。複雑なドロッパーを分析しなくても、このクリプトマイナーには複数のバージョンがあることが確認できます。
一部のバージョンでは、クリプトマイナー自体に config.json ファイルが含まれており、このファイルにマイニング設定が保持されています。その他のサンプルでは、 OracleLoader スクリプトを使ってクリプトマイナーが削除され、設定がセットアップされます。 このマルウェアには、セキュリティ侵害が発生した場合にボットネットを回復できる更新メカニズムもあります (表 1)。
特性 |
値 |
備考 |
---|---|---|
マルウェア名 |
Oracle Loader |
|
現在のバージョン |
1.1.72.0 |
<5.133.65.53>/Oracle/ver$77_loader.exe.txt |
関連コンポーネント |
|
表 1:Oracle Loader の特性
このマルウェアはポート 999 でもリッスンし、XMRig の HTTP API 機能を公開します。 これにより、攻撃者は被害者のマイナーにアクセスし、マイニングプロセスを監視できます。被害者のマシンがインターネットに直接接続されていて、ネットワークアドレス変換(NAT)ルーターや外部ファイアウォールの背後にない場合、理論的には Shodan のようなネットワーク監視サービスを使用して被害者を見つけることができます。図 5は、潜在的な被害者を検出するために使用される Shodan クエリーの結果を示しています。
XMRig 作業者モニター Web アプリを使用して、被害者のマイナーを監視し、CPU モデルやハッシュレートなどの情報の開示が可能です。このインターフェイスでは情報のクエリーのみが可能であり、アクティビティは確認できますが、マイナーの操作や停止は行うことができません(図 6)。
マイニングプールのダッシュボードで確認できるとおり、安定したハッシュレートは、被害者が世界中にいることを示唆しています。被害者がいない場合、ハッシュレートはタイムゾーンのアクティブな時間帯に応じて代わる代わる発生することが予想されるためです。もう 1 つの説明として、攻撃者がサーバーを標的にしており、他のクリプトマイナーのキャンペーンのように消費者を標的にしていないことが考えられます。
ケーススタディ #2:Zephyr クリプトマイナーで使用されたパブリック・プール・トポロジー
ケーススタディ #1 のように、長期的なキャンペーンを展開して多額の利益を得ている意欲的で巧妙な攻撃者もいますが、こうした攻撃者が脅威の大部分を占めているわけではありません。最も一般的なのは、パブリックプールを使用するクリプトマイナーです。これらのクリプトマイナーには、難読化や分析回避技術などの高度な機能は含まれていません。プレーンテキストのウォレットアドレスを使用して直接プールに接触するのが典型的な手口です。また、一般的には影響力や利益が小さい傾向にあります。
暗号通貨市場では、マイニング収益性やコイン価値などさまざまな要因に基づいて、攻撃者は複数の選択肢を持つことになります。クリプトマイニングに内在する金銭的要素にもかかわらず、 通貨のマイニング収益性は、多くの攻撃者にとって最重要検討事項とは考えられません。Zephyr コインは Monero よりも収益性が低く、脅威アクターの間でよく使われます。暗号市場の価格変動は、攻撃者と合法的な暗号資産購入者が同様に考慮すべき重要な要因です。他の暗号資産(仮想通貨)よりも特定の暗号資産が魅力的に感じるのは長期的な価値が 見込める からかもしれません。
最大のゼファーキャンペーン として当社で確認できているのは、アクティブな被害者が 1,400 以上、総ハッシュレートが 800 Kh/s、総利益が 906.3 ZEPH(現在の 2,528 米ドルに相当)のキャンペーンでした。
ボットネットのハッシュレートを時間軸で分析すると、攻撃者が特定の地域を標的としたタイミングを把握できます。この例は、ロシア語を話すユーザーをターゲットにしたと 思われる 、直接接続によるマルウェアを組み合わせてプロキシを使用する別の監視対象キャンペーンで示します(図 7)。
定期的に変化が見られる場合、被害者のほとんどがサーバーではなく人間のユーザーであることを示している可能性があります。これは、個人用マシンは定期的にオフになる可能性が高いためです。 ハッシュレートの頻度を分析すると、周期が 24 時間であることがわかります。また、低い部分が夜間であると仮定すると、被害者の大部分が住んでいるタイムゾーンを特定できます(図 8)。
時間間隔のみでは被害者の位置を確実に特定することはできませんが、私たちの理論は Hashvault プールの IP ジオロケーション検索機能によって裏付けられました。これをマルウェア分析とゲーム関連のマルウェア配信名(Fortnite、Solara Executor for Roblox など)と組み合わせて使用することで、仮説の精度を上げることができます。 マルウェアは、プレイヤーに見つけてもらいやすいように不正なエンジンを装っているためです。ソーシャルメディアやメッセージングアプリケーション、たとえば Telegram や Discord などを通じても広がったと考えられます。
ケーススタディ #3:マイニング・プロキシ・トポロジーを使用したクリプトマイナー
Monero ネットワークマップを使用して 25,000 ノードを超える情報を収集しましたが、直接到達できるのはわずか 10% でした。逆に、ネットワークに接続されていない既知のクリプトマイナーの除外にも、このマップを使用しました。2022 年 4 月以降にアクティブとなった キャンペーン の検出はこの方法で行いました。
図 9 は、マルウェアの攻撃ベクトルを示しています。XMRig-proxy のようなマイニングプロキシを使用し、クラックされた Internet Download Manager(IDM)などの海賊版ソフトウェアを通じてクリプトマイナーを配布します。
キャンペーン・マルウェア・サンプル間で、攻撃フローは類似しています。一般に、 crackingcity.comから、ドライブごとにダウンロードが開始され、これによってペイロードチェーンが適用されます。そして、最終段階でクリプトマイナー dlIhost.exe を展開します。 これは、 custompool.xyzでホストされているプロキシへの接続を行うファイルです。 攻撃者は、回避手法として、環境変数を使用して文字列を引数とし、子プロセス(主にバッチファイル)に渡します。これは、埋め込みアーカイブを復号化し、Defender 除外リストを操作した後でスクリプトまたはファイルを実行することによって機能します。
攻撃者は、2022 年 4 月 29 日に以下の名前でプロキシドメインを登録しました。 custompool.xyz 。 最初の検知からわずか 3 日後 (VirusTotal 上での検知)です。最初のサンプルである VScan.exeは、2 つのバッチファイルを使用する自己解凍アーカイブです。1 つ目は、 main.batです。これは環境変数に隠されたパスワードを使用して、2 段階目のバッチファイル VS.batを抽出します。デバッガを使用して非表示の情報を抽出するには次の 2 つの方法があります。「l3」という名前の環境変数にアクセスしてブレークする方法(図 10)か、環境変数を変更するたびにブレークする方法です。
パスワードとして 「un#912345678@rar」を使用すると、もう 1 つの C2 ドメイン crackingcity.comに接続する第 2 段階のローダーを抽出することができます。最終段階では、マルウェアが dlIhost.exe (基本的に、 custompool.xyz プールに設定が組み込まれた修正済み XMRig クライアント)を実行し、この時点では直接 IP となります(図 11)。
ここで、サーバーのタイプについて質問があります。プライベートプールですか?マイニングプロキシでしょうか?それともプライベートプールと同じと見なされる何らかの種類のカスタムノードでしょうか。これらの質問に回答するには、サーバーからいくつかの識別子を抽出する方法が必要です。専用ノードを使用したソロマイニングには、 デーモン モードで動作するマイナーが必要(RPC リクエストが HTTP 経由で送信される場合)ですが、この設定には存在しないため、このケースは明らかに当てはまりません。
JSON 構造はシリアライゼーション間で保持されるため、XMRig-proxy がサポートするさまざまなストラタムメソッドを送信して、サーバーから応答を取得することができます。サーバーからの応答がキーと値の順序と一致する場合は、サーバーが XMRig-proxy を使用しているか、これに基づいていることを強く示している可能性があります。
XMRig は、3 つの Stratum プロトコルメソッドをサポートしています。
- Login :マイニングワーカーが開始する最初のリクエスト。通常はログインとしてウォレットが含まれています
- Keepalived :単に接続を維持します
- Submit :有効な共有が見つかったら、結果を送信します
無効なメソッドが要求されると、XMRig-proxy はエラーで応答します(図 12)。 プールなどの他のサービスではエラーアウトではなくバッドリクエスト(Bad Request)を無視するため、これがサーバータイプを示している場合があります。これらの要素を組み合わせると、XMRig-Proxy に関する結論に至ります。
送信メソッドを XMRig プロキシから明示的なエラーを返す 3 つのケースに分割しました(表 2)。
難易度の低い共有とは、マイナーが予想されたターゲットよりも低い値を持つハッシュを送信することです。
無効なノンスとは、NiceHash 設計による範囲外のノンスの結果です。
最も難易度の高いハッシュとは、あらゆるジョブのターゲットを満たすと思われる特別に作成されたハッシュのことです。この場合、XMRig プロキシの難易度の検証をバイパスしてプールに直接送信し、これによってプールエラーが返されます。
リクエスト |
XMRig-proxy |
MoneroOcean |
HashVault |
Nanopool |
SupportXMR |
C3Pool |
ログイン |
(ベースライン) |
✕ |
✕ |
✕ |
✕ |
✕ |
Keepalived |
(ベースライン) |
≈ |
✅ |
≈ |
✕ |
≈ |
不明 |
(ベースライン) |
✕ |
✕ |
✕ |
✕ |
✕ |
送信:低難易度 |
(ベースライン) |
✕ |
✕ |
✕ |
✕ |
✕ |
送信:無効なノンス |
(ベースライン) |
NA:ブロック対象の IP |
✕ |
✕ |
✕ |
✕ |
送信 — 最大難易度 |
プール応答メッセージを繰り返します |
NA:ブロック対象の IP |
✅ |
✕ |
✅ |
✅ |
表 2:Stratum プロトコルリクエストの XMRig-proxy とさまざまなパブリックプール間での比較。✅ はベースラインと同じことを示し、✕ は異なるデータ、≈ は順序が異なる同じデータを示す
XMRig-proxy と一般的に使用されるプールを区別できるだけでなく、プール自体を区別することもできます。この情報は、リバースプロキシなどの他のネットワークコンポーネントを経由してプールにルーティングする場合に便利です。このケースでは、 最高の難易度でマイニング結果を送信すると、プロキシではなくバックエンドプールからエラーが発生します。この情報を活用することで、攻撃者が Nanopool を使用していることがわかりますが、ウォレットアドレスが不明なため、このキャンペーンの被害者数や利益を評価することはできません。
ケーススタディ #4:Stratum プロキシトポロジーを使用した隠されたブロックチェーン通信
Stratum プロトコルプロキシは、ウォレットアドレスを変更せずに別のサーバに直接 Stratum プロトコル要求を転送することで、ネットワークレベルで動作します。これにより、各マイナーの作業がそれぞれのウォレットに振り込まれます。Stratum プロキシの実装は、基本的なトランスポート層ネットワークプロキシまたはプロトコルを理解して処理する特殊なアプリケーションプロキシを使用して実現できます。
当社が検知した アクティブキャンペーン は、このトポロジーを使用し、Stratum プロキシを介してパブリックプールに接続します。ネットワークレベルのリバースプロキシであるかどうか、または Stratum プロトコル自体を傍受してアプリケーションプロキシとして動作するかどうかは特定できませんでした。いずれの場合も、Stratum メッセージをリダイレクトしてバックエンドプールまたはノードを非表示にします。指定されたウォレットをスキャンした結果、 MoneroOcean パブリックプールとの接続が確認されました。
キャンペーンは少なくとも 4 か月間はアクティブで、その総利益は1.158 XMR(約 180 米ドル)です。これ自体では、キャンペーンは大成功とは言えませんが、脅威アクターによる取り組みが行われていることは明らかであり、キャンペーン全体の開発を含む、より大規模な計画の可能性(インフラ、クリプトマイナー、さまざまな悪性ファイルのドロップ)を示しています。攻撃者は、サードパーティに頼ることなくキャンペーンを配布し、暗号化や難読化などを含むリバースエンジニアリング防止メカニズムを実装しています(図 13)。
キャンペーンに遅延が発生している可能性はありますが、特に難読化プロセスでは、マルウェアが十分に実行されていることがわかります。 マルウェアは、実行時にアーカイブをダウンロードし、正規のシステムファイル名でプロセスを実行することで、ペイロードを非表示にしようとします。
検知
一般的に検知に関しては、いくつかの異なる方法を使用できます。各メソッド自体では機能しませんが、他の検知メカニズムと併用すると、有効な結果を期待できます。クリプトマイナーも例外ではありません。実際には、その無害な特性から検知するのが難しいマルウェアの一部である可能性があります。多くのオペレーティングシステムでは、特殊な許可が不要な唯一のリソースとして計算能力(CPU 時間)を活用しています。
ネットワークへの接続
これらのマイナーを検出するために、ブロックチェーンネットワーク(前にスクレイピングした Monero ネットワークなど)を、ファイアウォールやセグメンテーションソリューションなどのネットワーク可視化ツールから取得したデータと相互参照できます。すべてのノードまたはプールは、Monero ブロックチェーンとやり取りする必要があるため、ネットワーク管理者はネットワークからのトラフィックに関する極めて貴重な知見を得ることができます。ネットワークポートと組み合わせると、ほとんどのクリプトマイナーは 999、3333、7777 などの個別のポート番号を使用するため、検知が非常に簡単になります。 このケーススタディでは Monero を使用しますが、ブロックチェーンネットワークのマッピングは、すべての proof-of-work(プルーフオブワーク、PoW)ベースのネットワークで使用できます。
ただし、Monero ノードへのすべてのトラフィックが必ずしも暗号化されているわけではないことに注意してください。これらのノードは複数のサービスを提供することがあるからです。たとえば、 IP 157[.]90[.]212[.]53 は、当社の Monero ネットワークマップに記載されていますが、Tor network の exit node でもあります。Monero ノードが他のサービスを提供している理由としては、不正使用されているか、または単に意図的に多目的に利用されているなど、さまざまな事情が考えられます。いずれにしても、追加情報なしでネットワークへの接続を使用すると、ブロックチェーンへの接続が弱くなり、誤検知が発生する可能性があります。これは、 正確な検知にポート番号情報が極めて重要であるもう一つの理由です。
誤検知のもう一つの理由は、マップの更新率が低いことです。正規のサーバーには、以前に Monero ノードで使用されていた IP アドレスを割り当てることができ、マップが最新でない場合は誤検知が発生します。
この検知は単独では実行できませんが、より包括的な検知ロジックまたは調査のトリガーとして使用できます。クリプトマイナーの操作では、マイニングジョブの割り当てのために Stratum サーバーと通信する必要があります。通常は、一般に知られているマイニングプールで動作しますが、場合によっては、ネットワークマップに表示されないプロキシを使用して非表示にすることもできます。
アルゴリズム実行の検出
クリプトマイナーが被害者のコンピューティングリソースを集中的に使用するため、システムの使用量の急増を監視することで感染の兆候がわかります。しかし、ネットワークマップの相互参照のように、この検知も単独では正確な検知にはなりません。
複数の検知可能な IOC を組み合わせると、検知信頼度が向上します。つまり、誤検知を低減します。マイニング操作の成功には、必須のカウンターパートが必要です。クリプトマイナーは、作業の証拠としてコンセンサスアルゴリズムを使用して、選択したコインを採掘する必要があります。このようなアルゴリズムにはどれも、実行時にシステムに固有のフィンガープリントがあり、これらの特徴を抽出することで、悪性のクリプトマイナーを検知する確かな方法を確立できます。
ASIC 耐性アルゴリズム、たとえば RandomXには通常、一意に識別できる複雑な一連のオペレーションが実装されています。たとえば、RandomX の開発者が、まさにその前提に基づいて 検知ツール を作成したとします。システムで実行中のスレッドを反復することで、CPU レジスタの値を含むスレッドの状態を調査できます。RandomX は、 CPU の最新機能の多くを使用して実装されるため、RandomX の開発者による検知ツールなどで Rounding Control の設定を使用することは、その一つの方法です。
実際、ハードウェア AES オペレーションや hugepage 設定などの他の指標と組み合わせすると、検知率が向上します。要約すると、 SSE 登録で一意の AES キーを探すか、またはスレッドの アクセストークンの権限を照会することで検知することができます。
これらの方法は、他のオペレーティングシステムにも拡張できます。 クリプトマイナーのほとんどが、プラットフォームに依存しないことを目標にしていて、 異なるオペレーティングシステムでも同じように動作する必要があるためです。1 つのオペレーティングシステムに限定されないということは、ターゲット数が大幅に増加するため、キャンペーンの成功率を高めることができます。
プロセスメモリー内のウォレットの特定
クリプトマイナーがプロキシ経由ではなくマイニングプールと直接通信する場合は、マイナーのウォレットがプロセスのメモリ内に存在する必要があります。これは、Stratum プロトコルでは、マイナーがサーバーを認証し、有効な共有の送信で報酬を受けるアカウントを通知する必要があるためです。通常はウォレットアドレスを使用し、Monero の採掘では特に、マイナーはおそらく XMRig ソフトウェアに基づいています。これらの前提条件を適用すると、さまざまなソケット API に接続してプールに送信されたウォレットを見つけて傍受できます。また、理論的には、マイナーが送信した認証メッセージを傍受するために、中間者(MITM)「攻撃」を使用できます。
また、プロセスの割り当てられたメモリ全体を、単純な正規表現を使用して厳密な形式に従って 95 文字のウォレットアドレスを検索することもできます。4 または 8 で始まり、BASE58 の有効な文字で構成されます。そのため、このタスクではパターン /[48][1-9A-HJ-NP-Za-km-z]{94}/ で十分であり、YARA ルールにも組み込むことができます。 クリプトマイナーがプールに最初に接続した後、いつでもスキャンを実行できます。これは、再接続する必要がある場合に備えて、マイナーがウォレットアドレスを使用できるようにする必要があるためです。
最後になりますが、前述のいずれかの方法を使用して、Stratum プロトコルに関連する他の文字列を検索し、内部からウォレットを解析できます。このような指標は、プロトコルの JSON 構造がよりユニークであるため、誤検知を減らすことができます。たとえば、図 14 のログイン要求を参照してください。より正確な検知のために複数のキーを含む強力なシグニチャを作成できます。
{
"id": 1,
"jsonrpc": "2.0",
"method": "login",
"params": {
"login": "<wallet address>",
"pass": "<Usually the worker name>",
"agent": "<Usually xmrig agent>",
"algo": [
"rx/0"
]
}
}
図 14:ログイン要求の例。パターンを一致させることでより正確な検出が可能になる。
結論
Akamai の研究者は、悪性のキャンペーンとその背後にいる脅威アクターを暴き続け、IOC を特定してお客様と一般の人々の両方の保護を支援します。
3 部構成のクリプトマイナーに関するブログシリーズの 第 2 部であった今回は、マイニングプロキシの背後にあるマイニングプールの特定や、クリプトマイナーのボットネットのハッシュレートを経時的に分析してキャンペーンの地理的な運用を特定するなど、各種のキャンペーンに関するさまざまな手口について詳しく紹介しました。
よく知られている Monero とともに Zephyr を使用した悪性のクリプトマイナーを発見しました。さまざまなマイニングトポロジーを使用することで、クリプトマイナーは情報を非表示にして、識別情報と不正な指標の数を最小限に抑えることができました。
異なるクリプトマイナーの構造とマイニングプロセスを把握した後、おおむね以下のような疑問が提起されました。クリプトマイナーボットネットのマイニング操作を停止できますか。マイニング操作を効果的に停止すると、被害者のマシンに感染してリソースを消費するクリプトマイナーが停止します。この質問については、私たちのシリーズの最終回で詳しく説明します。
このシリーズや他の最新の セキュリティリサーチを追跡するためには、当社のセキュリティ・リサーチ・ページをチェックして、 ソーシャルメディアをフォローしてください。