クラウドコンピューティングが必要ですか? 今すぐ始める

ボットネットの無効化方法を偶然発見

Larry Cashdollar

執筆者

Larry Cashdollar

November 30, 2022

Larry Cashdollar

執筆者

Larry Cashdollar

Larry W. Cashdollar は、20 年以上にわたり脆弱性リサーチャーとしてセキュリティ分野に携わり、現在は Akamai の Security Intelligence Response Team の Principal Security Researcher を務めています。University of Southern Maine でコンピューターサイエンスを学びました。これまでに 300 件以上の CVE を文書化し、BotConf、BSidesBoston、OWASP Rhode Island、DEF CON で調査発表を行っています。余暇にはアウトドア活動や小型エンジンの修理を楽しんでいます。

Akamai リサーチャーは、クリプトマイニングボットネットの KmsdBot のリサーチを進める中で、現行バージョンを無効化する方法を確認しました。

エグゼクティブサマリー

  • Akamai リサーチャーは、クリプトマイニングボットネットの KmsdBot のリサーチを進める中で、作者がこのボットネットを誤って無効化する様子を目撃しました。

  • リサーチャーは管理された環境でコマンドをボットに送信し、その機能性と攻撃の特徴を検証していました。

  • この分析を進める中で、構文エラーでボットがコマンドを送信できなくなり、ボットネットを効果的に無効化できることを発見しました。

  • 結果として、このボットネットはシステムで存続できなくなり、システムに再感染しない限り攻撃できなくなることがわかりました。

概要

今月初めに、Akamai Security Research は、 KmsdBot に関するブログ記事を公開しました。これは SSH 経由で感染し、認証情報の脆弱化を図るクリプトマイニングボットネットです。リサーチャーは、ハニーポットの 1 つに感染したこのボットネットを直ちに分析し、報告しました。

記事の公開後も、このボットネットの監視を続けていましたが、無効化する方法など、新たな情報が得られたため、記事の内容を更新することになりました。この記事では、KmsdBot の検査手順の概要を解説し、コマンドを実行して最終的に無効化に至った経緯を説明します。

C2 の C2 機能を再現

あらゆる悪性要素の中で最も危険な要素は、コマンド & コントロール(C2)を獲得する機能です。KmsdBot には C2 機能があるため、その機能に関連するさまざまなシナリオを試しました。この検証作業において、KmsdBot の最新のサンプルを、RFC 1918 アドレス空間の IP アドレスとトークするように変更しました。

管理された環境で試した結果、独自のコマンドをボットに送信し、その機能性と攻撃の特徴を検証できました。興味深いことに、誤ったフォーマットのコマンドを 1 つ送信しただけで、ボットはコマンドの送信を停止しました。当然ながら、リサーチャーは検証を開始しました。攻撃者が自身のボットネットを自らクラッシュさせる場面を目撃することはめったにありません。 

どのように発見したか

まず、ボットネットが C2 用の IP アドレスとポートをどこに保存しているか見つける必要があります。sys.main.connect() 関数を検証し、逆アセンブルを出力することで発見できます(図 1)。
図 1:sys.main.connect() 関数の逆アセンブル

図 1:sys.main.connect() 関数の逆アセンブル

文字列スライスが 0x00632f19 のメモリアドレスに保存されていることを確認できます。このアドレスにバイナリでアクセスし、RFC 1918 空間のネットワークアドレス(管理対象の 192.168.0.0/24 など)を指定するようにコンテンツを変更します。

こうすることで、C2 のようにサンプル攻撃コマンドを送信し、ネットワークトラフィックをログできるターゲットに攻撃トラフィックを導くことができます。

図 2:16 進数のアドレス .861.291 をバックワードで記述(エンディアンのため)

図 2:16 進数のアドレス .861.291 をバックワードで記述(エンディアンのため)

新しい C2 が 192.168.0.31 のポート 57388 で設定されます(図 2)。C2 はクリアテキストでやり取りするため、マルウェアコマンドは Netcat を使用して送信できます。その後、2 つの仮想マシンを設定します。1 つはマルウェアを無効化するため、もう 1 つは自作した C2 として使用するためです。

テスト中に、誤ったフォーマットのコマンドを受信すると、ボットネットが攻撃コマンドの送信を停止することに気付きました。このようなコマンドです。

!bigdata www.bitcoin.com443 / 30 3 3 100 

注意深い方は、ターゲット Web サイトとポート間にスペースがないことに気付くでしょう。ボットのコードにはエラーチェック機能が組み込まれていないため、コマンドが正しくフォーマットされているかどうか確認できません。

そのため、誤ったフォーマットのコマンドで Go バイナリが発生し、「index out of range(範囲外のインデックス)」エラーというスタックトレースでクラッシュしますこれは間違った数の引数が指定されているからです。この動作を自作の C2 とボット設定でテストしました(図 3)。

図 3:C2 をエミュレートして誤ったフォーマットのコマンド送信を再現

図 3:C2 をエミュレートして誤ったフォーマットのコマンド送信を再現

図 4:間違った数の引数が指定されたことでボットがクラッシュ

図 4:間違った数の引数が指定されたことでボットがクラッシュ

この誤ったコマンドにより、感染したマシンで動作して C2 とトークするすべてのボットネットコードをクラッシュさせ、最終的にボットネットを無効化します。ボットは感染したマシンで存続できなくなります。復活させるには、再感染してボットネットを最初から再構築するしかありません。

結論

セキュリティ業界では、こうした事例はめったにありません。ゼロデイとバーンアウトの世界において、タイポのようなコーディングで緩和できる脅威を発見できるのは幸運です。このボットネットは、その後も大手のラグジュアリーブランドやゲーミング会社に感染しましたが、誤ったコマンド 1 つで無効化できました。これは、テクノロジーの気まぐれな性質を示す極端な例であり、脆弱性を悪用する攻撃者でさえ弱点を逆手に取られるという実例です。 

Akamai Security Research の目標は、新たな発見を追跡、検知、文書化、公開して、Akamai と Akamai の顧客、およびインターネット全体のセキュリティと安定性を守ることです。これからも、こうした攻撃の監視を続け、ブログを適宜更新していきます。リアルタイムのセキュリティリサーチの最新情報については、 Twitter で Akamai をフォローしてください。



Larry Cashdollar

執筆者

Larry Cashdollar

November 30, 2022

Larry Cashdollar

執筆者

Larry Cashdollar

Larry W. Cashdollar は、20 年以上にわたり脆弱性リサーチャーとしてセキュリティ分野に携わり、現在は Akamai の Security Intelligence Response Team の Principal Security Researcher を務めています。University of Southern Maine でコンピューターサイエンスを学びました。これまでに 300 件以上の CVE を文書化し、BotConf、BSidesBoston、OWASP Rhode Island、DEF CON で調査発表を行っています。余暇にはアウトドア活動や小型エンジンの修理を楽しんでいます。