BlackEnergyは、ここ数年で最も有名なDDoSボットネットです。このボットは現在も開発中であり、新しい機能が絶えず追加されることで、悪質さを増しています。セキュリティ研究者はBlackEnergyを監視し続けており、現在あるBlackEnergyへのコマンド&コントロール(C&C)トラフィックの分析では、このボットネットがロシアのサイバー犯罪市場で生み出された可能性があることが判明しました。その証拠は、ボットの実行ファイルでも確認されています。シリーズの1回目となる今回は、このBlackEnergyボットのビルダーツールキットについて分析します。
このボットネットには、DoS攻撃を仕掛けるさまざまな機能が組み込まれており、ロシアのWebサイトをターゲットにしていることが確認されています。最近McAfee Labsは、BlackEnergyのビルダーツールキットを入手しました。このツールキットは、従来バージョンのビルダーと異なり、ウイルス対策ソフトによる検出を回避する、ポリモルフィックバイナリを作成するオプションが用意されており、またデバッグ対策機能も組み込まれていました。ツールキットには、ボットネットをコントロールするためのPHPスクリプトや、MySQLデータベースのスキーマなどの情報を含む、Web機能が用意されています。
BlackEnergy DDoSボットビルダー :
以下のスクリーンショットは、通常、自動ダウンロードやスパムメールによって配布されるボットクライアントを構築するために使用される、ビルダーツールキットです。
以下は、ボットクライアントを構築するために使用されるデフォルトのパラメーターです。
Host: ボットクライアントと通信するC&Cサーバー
Request Rate: C&Cサーバーから新しいコマンドをフェッチする間隔を指定します
Build ID: 各ボット固有のビルドID。ビルダーツールキットが呼び出されるたびに変わります
Default Command: ボットクライアントがC&Cサーバーに接続できない場合に実行されるコマンド
Execute after: コマンドが実行されるまでの時間
Outfile : 最終的なボットクライアントの実行ファイル名
デフォルトのDDoSパラメーター:
ICMP Freq: 攻撃で送信されるICMPパケットの数
ICMP Size: 攻撃で送信されるICMPパケットのサイズ
Syn Freq: SYNフラッド攻撃で送信されるSYNパケットの数
HTTP Freq: HTTPフラッド攻撃で送信されるHTTPリクエストの数
HTTP Threads: 攻撃中に作成されるHTTPスレッドの数
TCP /UDP Freq: TCP/UDPフラッド攻撃中に送信されるTCP/UDPパケットの数
TCP Size: TCPペイロードのサイズ
UDP Size: UDPペイロードのサイズ
Spoof IP’s: フラッド攻撃中にIPスプーフィングを有効化/無効化するブール値
Use Crypt traffic: ボットクライアントの通信を暗号化するのに使われる可能性があります
Use polimorph exe: ウイルス対策ソフトウェアによる検出を回避するため、さまざまな暗号化ルーチンを挿入します
antidebug:デバッグ対策
すべての設定オプションを指定して「Build」ボタンをクリックすると、ボットクライアントが生成され、さまざまな手段で配布することが可能になります。
サーバーサイドのボットネットのコマンド&コントロールシステム
ツールキットには、ボットの感染を追跡するため、バックエンドに設置されているMySQLデータベースとやりとりするC&CサーバーサイドのPHPスクリプトが用意されています。ツールキットで確認されたファイルは以下の通りです。
Auth.php MySQL.php
Config.php Stat.php
Index.php db.sql
MySQL.php Readme.txt
C&Cシステムには、基本的なHTTPパスワード認証スキームが用意されています。Auth.phpで表示されるLogin/Password画面から、ボットマスターはボットネットをコントロールすることができます。
Admin、MySQL Loginの詳細は、以下のようにconfig.phpファイルに保存されます。
<?
// íàñòðîéêè áàçû
$opt[‘mysql_host’] = “localhost”;
$opt[‘mysql_user’] = “b0t2″;
$opt[‘mysql_pass’] = “2413038″;
$opt[‘mysql_base’] = “b0t2″;
// ëîãèí è ïàññ ê àäìèíêå
$opt[‘admin_pass’] = “admin”;
$opt[‘admin_login’] = “132″;
?>
ボットのC&Cシステムには簡単なデータベーススキーマが用意されており、SQLクエリーがdb.sqlファイルに保存されています。以下はファイルからの抜粋です。
–
– Table structure for table `opt`
–
CREATE TABLE `opt` (
`name` varchar(255) NOT NULL,
`value` varchar(255) NOT NULL,
PRIMARY KEY (`name`)
);
以下は、index.phpにアクセスしたときにUIに表示されるデフォルト値です。
–
– Dumping data for table `opt`
–
INSERT INTO `opt` (`name`, `value`) VALUES (‘attack_mode’, ’0′),
(‘cmd’, ‘wait’),
(‘http_freq’, ’100′),
(‘http_threads’, ’3′),
(‘icmp_freq’, ’10′),
(‘icmp_size’, ’2000′),
(‘max_sessions’, ’30′),
(‘spoof_ip’, ’0′),
(‘syn_freq’, ’10′),
(‘tcpudp_freq’, ’20′),
(‘tcp_size’, ’2000′),
(‘udp_size’, ’1000′),
(‘ufreq’, ’1′);
db.sql には、ボットネットのサイズを追跡する時に使用される「stat」という名前の重要なテーブル構造が保存されています。ボットクライアントによってポスト(POST)されるすべてのデータは、ボットクライアントからC&Cシステムに送り返されるビルドIDと一緒に、このテーブルに記録されます。
–
– Table structure for table `stat`
–
CREATE TABLE `stat` (
`id` varchar(50) NOT NULL,
`addr` varchar(16) NOT NULL,
`time` int(11) NOT NULL,
`build` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
);
Index.php は、SQLデータベースに接続し、GUIに表示される統計情報をフェッチするスクリプトです。以下は、このファイルで見つけたSQLクエリーの例です。
ボットネットのアーキテクチャー
BlackEnergyのコマンド&コントロールシステムを詳しく調べたところ、内部でスクリプトがどのようにやりとりしているかが判明しました。以下は、サーバーサイドのシステムが感染を追跡する他のモジュールとやりとりする様子です。
ボットネットのコマンド
ボットクライアントのC&Cコードのリバースエンジニアリングを行った結果、主に3つのタイプのコマンドで構成されていることが確認されました。また、これらのコマンドの引数がReadme.txt、cmdhelp.htmlファイルにまとめられており、このパッケージのロシア語版が付属していました。その他、ボットクライアントのバイナリの分析中に、ヘルプファイルに記載されていない4番目のコマンドもを発見しました。各コマンドを見てみましょう。
A ) flood:-
「Flood」コマンドは、ボットクライアントに複数のタイプのフラッド攻撃を仕掛けるよう指示します。このコマンドの引数は、先に図1で示した他のパラメーターと一緒に仕掛けるフラッド攻撃のタイプをボットに指示します。フラッド攻撃のタイプの引数の例は以下の通りです。
-ICMP
-UDP
-SYN
-HTTP
-Data
Floodコマンドと引数、その他のパラメーターは、Base-64でコード化された形式で、サーバーからボットクライアントに送信されます。以下は、ボットクライアントにポート80でTCP SYNフラッド攻撃を仕掛けるよう指示する、デコードされたコマンドの例です。
4500;2000;100;1;0;30;500;500;200;1000;2000#flood syn mail.ru 80 #10#xEN-XPSP1_80D1F15C
B )stop:-
Stopコマンドは、ボットクライアントにDDoSフラッド攻撃を一時的に停止するよう指示します。
C )die:-
Dieコマンドは、ボットクライアントに感染したシステムから自身を削除するよう指示します。ExitProcess APIを呼び出してプロセスを中断し、すべてのDDoS活動を停止します。
D ) open:-
これは、文書に記載されていないコマンドです。ボットクライアントのバイナリを分析したところ、他の実行ファイルをダウンロードしたり、ボットの実行ファイル自体を更新したりするのに使われる可能性があります。
E )wait:-
ボットクライアントに、活動を行わずに沈黙を守り、指定された時間が経過した後、C&Cサーバーとコンタクトをとり、新しいコマンドを確認するよう指示します。このコマンドのフォーマットは以下の通りです。
4500;2000;100;1;0;30;500;500;200;1000;2000#wait#10#xEN-XPSP1_80D1F15C
上記は、ボットクライアントに10分待機してから新しいコマンドを確認するよう指示しており、以下のスクリーンショットからわかる内容とまったく同じです。
ネットワーク通信
BlackEnergyのボットクライアントは、HTTPプロトコルを使って、C&Cサーバーと通信します。HTTP POSTリクエストを使用し、データをstat.phpページにポストするよう要求します。POSTリクエストのデータは、主にボット追跡に使用されるデータベースの「stat」テーブルに記録されます。HTTP POSTリクエストメッセージでボットクライアントが送信する情報には、IDとビルドIDがあります。
IDパラメーターは、SMBホスト名と感染マシンのC:\のボリューム情報を組み合わせたものです。以下のコードセクションから、IDパラメーターがどのように構築されているかがわかります。
Build_IDはボットビルダーがランダムに生成するパラメーターで、ボットネットの感染を追跡するために使用されます。リクエストを受け取ったC&Cサーバーは、以下のようにBase-64でコード化されたコマンドで応答します。
コマンドをデコードすると、以下が現れます。
4500;2000;100;1;0;30;500;500;200;1000;2000#wait#10#xEN-XPSP1_80D1F15C.
上記から、このボットネットで設定可能なDDoSパラメーターが分かります。#wait#コマンドでも、すべてのパラメーターが表示されます。同様に、以下のようなDoSコマンドがC&Cサーバーから発信されます。
# flood syn www.abc.com 25#10#
# flood http www.xyz.com#20#
# flood udp;dns;syn;1.1.1.1#10#
# flood icmp 1.1.1.1#5#
今回の分析により、ボットクライアントの実行ファイルを構築するのに使用されるツールキットにバックドアが設置されているということが判明しました。ツールキットの実行時、ビルダーのシステムのランダムなポートを受信待機モードで開きます。また、重要なシステム情報をリモートサーバーに送信することも確認されています。以下は、ボットを構築するツールキットを起動した際に撮影した、Base-64でコード化されたトラフィックのスナップショットです。
上記のトラフィックをデコードすると、このツールキットからツールキットの作者に送信されている情報が現れます。
また、ツールキットが以下のシステム情報を送信することも判明しました。
BlackEnergyに対するマカフィーの対応
McAfee Network Security Platformは、攻撃ID 0x48804c00 BOT: BlackEnergy Bot Traffic Detectedにより、BlackEnergyボットネットに対応しています。最新版をインストールしているユーザーは、BlackEnergyボットネットから保護されます。
関連記事
- [2011/05/27] 進化するDDoSボットネット 第2回:Darknessボット
関連情報
- ネットワーク不正侵入対策システム(IPS)McAfee Network Security Platform
※本ページの内容はMcAfee Blogの抄訳です。
原文:Evolving DDoS Botnets: 1. BlackEnergy