Video Screencast Help
Search Video Help Close Back
to help
Not able to make it to Vision this year? Get a sampling in the Best of Vision on Demand group.

分散型の VoIP クラッカー

Updated: 16 Feb 2011 | Translations available: English
Nicolas Falliere's picture
0 0 Votes
Login to vote

W32.Sality と、Sality に感染したホストで構成される分散型 P2P ボットネットについては、2010 年春のブログ記事で取り上げたことがありました。このボットネットは、別のマルウェアを誘導する URL の拡散に利用されています。最近、Sality の背後にいる集団は、SIP(Session Initiation Protocol)を使うシステム上の VoIP(Voice over IP)アカウント情報に対して総当たりをかけるツールを配布しています。SIP は、インターネット上の音声通話やビデオ通話の初期化と制御に広く使われているプロトコルです。

まず、2010 年 11 月のことを振り返ってみましょう。当時、SIP 関連のブログとメーリングリストのいくつかで、SIP サーバーに対する攻撃が報告されました。攻撃の内容は、ランダムと見られるアカウント名を利用した REGISTER の試行です。トラフィックがさまざまな IP から発信されているらしいという点で、攻撃元に目新しさはありましたが、特定のマルウェアを追跡してこの攻撃に行き着いたことはありませんでした。

最近になって、Sality が拡散するマルウェアをシマンテックは確認しました。これが数カ月間シマンテックの監視の目を逃れていたことは間違いなく、昨年 11 月に SIP 管理者を悩ませた原因はこれだったのです。このマルウェアは、分散型 SIP クラッカーですが、多くの点で新しい性質を持っています(既知の SIP クラッカーは、ツールにせよ PoC にせよ存在しますが、マルウェアとして広く確認されている例はなく、まして分散型の形で SIP クラック機能を実装しているものは皆無です)。

ボットがコマンド & コントロール(C&C)サーバーに接続すると、C&C サーバーは SIP に関連して実行すべき処理をボットに指示します。次の図は、ボット、C&C サーバー、そして標的となるコンピュータ(この例では SIP サーバー)の間における処理の関係を示したものです。

 

実装されている機能は、次のとおりです。

指定のサーバーに対する SIP ユーザーアカウントの検出

指示を受けると、ボットはまず、C&C からの指示に従って標的とするサーバーにランダムなユーザーアカウントを登録しようとします。そのサーバーが実際に SIP サーバーである場合、登録はほぼ確実に失敗し、404 Page Not Found のエラーコードが返されます。ボットは次に、10,000 個のユーザーアカウント(アカウント「0」から「9999」)の登録を試行します。ただし、このコマンドは実装が不完全なようで、使われていません。

偽装された REGISTER 要求は、一般的に次のような形になっています。

REGISTER sip:<ユーザー ID>@<サーバーアドレス> SIP/2.0
Via: SIP/2.0/UDP <サーバーアドレス>:5060;branch=<ランダムなブランチ>;rport
Content-Length: 0
From: <sip:<ユーザー ID>@<サーバーアドレス>>; tag=<ランダムなタグ>
Accept: application/sdp
User-Agent: Asterisk PBX
To: <sip:<ユーザー ID>@<サーバーアドレス>>
Contact: sip:<ユーザー ID>@<サーバーアドレス>
CSeq: 1 REGISTER
Call-ID: <ランダムな ID>
Max-Forwards: 70

SIP ユーザーアカウントのパスワードのクラック

SIP サーバーへの登録に、認証が必要な場合があります。ボットはこのコマンドを受け取るとき、クラック対象のユーザーアカウントのリストも受け取ります。続いてボットがパスワードのリストを要求し、試行する数十個のパスワードを C&C サーバーが返します。次にボットは、ユーザーアカウントごとに、標的とする SIP サーバーに対して登録を試みます。サーバーで認証が必要な場合には、試行のとき、先ほど受け取ったパスワードを使います。登録要求がサーバーで承認されると、ボットは有効なアカウントとパスワードの組み合わせを発見したという結果を C&C サーバーに通知します。

SIP サーバーと Web サーバーの検出

この命令に対し、ボットはベース IP アドレスを受け取りますが、これは SIP サーバーを指している場合と、そうでない場合があります。このベースアドレスと、それに続く 14 個のアドレスを精査して、そのアドレスが SIP サーバーと HTTP サーバーのどちらを示すものか判定します。その結果が、C&C サーバーに返されます。

Asterisk フロントエンドのクラック

最後はもっと新しく、現在ボットに指示されている機能です。検出段階で収集されたような IP アドレスを使って、C&C サーバーは標的となる IP アドレスと 30 個ほどのパスワードをボットに送信します。パスワードは、よく使われるパスワードのリストや、インターネット上で見つかる辞書から取得されたものです。次にボットは標的のアドレスを精査し、FreePBX Web サーバーをホストしているかどうか確認します。FreePBX は、Asterik PBX サーバーの管理に広く利用されているオープンソーススイートです。標的が FreePBX Web サーバーをホストしている場合、ボットは FreePBX の Web ページ(/ または /admin/ または /admin/config.php)に接続し、最終的にはよく知られたログイン名(admin、maint、root、freepbx など)とパスワードリストを使って、自身を認証します。認証の試行に成功すると、それが C&C サーバーに返されます。

これまでに、標的となった何百万という IP がこのボットに配布されています。これらは DSL/ケーブルプロバイダ、商用サービス、大学などの IP で、通常は Web サーバーを示すものです。現在のペースでは、この集団が標的として指定するアドレス空間全体が、5 ~ 6 時間でカバーされるようです。これが Sality ボットネットのサイズによって異なることは言うまでもありません(ボットネットが大きくなるほど、標的となる IP 全体をカバーするのに要する時間は短くなります)。

こうした攻撃の背後にあるのは、金銭的な動機であると考えられています。盗み出された SIP アカウントは、攻撃者自身が登録した有料サービスへの発信に利用できるからです。ユーザーの認証と、PSTN やその他の VoIP サーバーへのルーティングを管理する PBX が制御されてしまうので、クラックを受けた FreePBX アカウントはさらに危険な状況に陥る恐れもあります。

2 月 15 日の時点で、C&C サーバーが利用しているホストは英国内の IP のもので、シマンテックはこれについて ISP に連絡済みです。ボットクライアントとの通信は TCP ポート 2955 上で行われますが、これは変更可能です(実際に最近変更されました)。興味深いことに、ボットが使っているプロトコルは Sality の P2P プロトコル自体と共通する特性を多く備えており、その点がこの悪質なコードを作成したグループについて容疑者を絞り込める要因になっています。

シマンテックの最新の定義では、この SIP クラッカーを Hacktool として検出します。

 

* 日本語版セキュリティレスポンスブログの RSS フィードを購読するには、http://www.symantec.com/connect/ja/item-feeds/blog/2261/feed/all/ja にアクセスしてください。