ここから本文です

C2(C&C)とは

@IT 7月27日(水)7時10分配信

●用語解説「C2(C&C)」

 今回は“用語解説シリーズ”です。「C2(C&C)」について説明します。


宮田 セキュリティのアレ、第29回は用語解説シリーズです。テーマは「C2(シーツ―)」。「コマンド&コントロール(Command and Control)」です。私はよく「C&C(シー・アンド・シー)」という言い方をしてきたのですが、どちらが正しいのでしょうか?

辻氏 両方とも間違いではなく、人によって呼び方が違います。

根岸氏 どちらも使われますね。ちなみに以前、何かの記事で“コミュニケーション・アンド・コントロール”と呼んでいるのを見たことがありますが、一般的には「コマンド・アンド・コントロール」かと思います。

宮田 C2というのは、何をするものなのでしょうか?

辻氏 C2は、ニュース記事などで「指令サーバ」という言い方をされることもあるように、多くの場合は「攻撃者がマルウェアに感染したコンピュータに指令を送り、遠隔操作するために用いる仕組み」を指します。

 感染している大量のコンピュータを一手に“管理”する役割があり、中には感染しているコンピュータを確認したり、それらに対して操作を行ったりするインタフェースが付いているものもあります。そこから「一斉にここを攻撃」といった指示を行います。「ボットネット」にも近いものですね。

根岸氏 そうですね。例えば、大規模なDDoS攻撃などで「数千台、数万台というボットに、指令サーバ経由でコマンドを送る」といったように使われます。こういうマルウェアに感染すると、コンピュータはC2にアクセスして、攻撃者からの指令を待機する状態になります。

宮田 感染後にマルウェアが勝手に動くのではなく、何らかの指令を待つわけですか。

根岸氏 昔のワームなどのマルウェア、コンピュータウイルスでは、指令を受けず自律的に感染を広げたり、攻撃を仕掛けたりするものもありました。しかし最近のものは、指令を待ち受けるタイプが多くなっています。

宮田 だから、マルウェアに感染した後の不審な動きとして「外部との通信」が挙げられるわけですね。

根岸氏 はい。ただ、最近報道などでよく「外部との不正な通信が行われた」と言われますが、一口に外部との不正な通信と言ってもいろいろなパターンがあることには注意が必要です。

辻氏 最近多いですね。「ロシアと通信していた」とか。外部と通信していたからといって、C2の通信なのかどうかは分かりません。「外部との不正な通信があった」=「C2で遠隔操作されていた」=「標的型攻撃を受けていた」などと捉えられがちなのですが、必ずしもそうではありません。

 例えば、マルウェアが外部と行う通信には「設定ファイルをダウンロードしてくる」ようなものもあります。マルウェアの中には「金融機関のサイトなどにアクセスしたときに、本来は表示されないポップアップ画面などを出して、ID、パスワードを入力させる」ものがありますが、こういうマルウェアは、「このサイトにアクセスしたときに、このHTMLのポップアップ画面を表示させる」という設定ファイルを取得するために、外部と通信することがあります。

根岸氏 他にも、いわゆる「ダウンローダ」のように、「最初に感染したプログラムがマルウェア本体をダウンロードしてくる」通信もありますね。ダウンローダ自体は無害ですが、マルウェアをダウンロードする通信は不正です。

辻氏 最近のランサムウェア「Locky」も、始めにメールでJavaScript(.js)ファイルが届き、それが実行されるとjsファイル内のURLからランサムウェアをダウンロードするものでした。これも不正な通信の例です。

根岸氏 こういうものは、基本的にC2とは言わないですよね。

辻氏 私は、C2とは呼ばないですね。指令を送っていませんから。

根岸氏 ただ、JTBの件で出た「ELIRKS(エリークス)」というマルウェアは、感染後にまず一般的なブログにアクセスし、その中にエンコードされている“本当の”C2の接続先IPアドレスを取得してから、C2に通信をしにいくというものでした。

 これについては、最初のブログの方を“ファーストステージC2”、次の本当のC2の方を“セカンドステージC2”と呼んでいるセキュリティベンダーの解説がありました。「接続先のIPアドレスを知らせるのも指令の1つだ」と解釈すれば、確かにそうともとれます。

辻氏 ELIRKSのような場合は、ベンダーによって解釈が分かれるかもしれませんね。とはいえ、ニュースなどを読んでいて、「外部との不正な通信が行われた」と書かれていただけで、「C2の通信だ」と受け取ってほしくはないと思います。ここまで挙げてきたように、不正な通信にはC2以外にもさまざまな種類があります。

●不正な通信を止めることはできるのか

根岸氏 C2の通信の中にもいろいろ種類がありますよね。

辻氏 そうですね。C2にはWebサービスを立ち上げているものもあれば、実行(exe)ファイル単体がサーバとして動いているものもあります。また、既存のサービスを使うパターンもあります。例えば、“Twitterの特定アカウントのツイートが命令になっている”ケースや、“Gmailの受信ボックス内のメールを指令に使う”ケースなどがあります。

宮田 なるほど。企業から見れば、普通にSNSやメールを閲覧しているようにしか見えないと。

根岸氏 不正な通信だと見破られないための偽装の一種ですね。

辻氏 TwitterやGmailを見ていることまでは分かっても、基本的にHTTPS通信ですから、通信の中身まで見ることはありません。

根岸氏 ブラックリストなどでブロックしようにも、Twitterなどを閲覧することまでブロックするのはなかなか難しいところです。

宮田 指令を送るのに、IRC(Internet Relay Chat)を使うものもありましたよね?

根岸氏 はい。「Slack」など新しいチャットサービスがいろいろ出てきて、IRCは現在ではあまり使用されていないイメージがあるかもしれませんが、実は、意外と現役で使われています。

辻氏 私が自宅で運用しているハニーポットでも、いまだにIRCに参加させるためのボットプログラムをインストールしてくる攻撃が見られます。実際にIRCにログインして確認してみると、大体数百ぐらいのボットがいました。

根岸氏 アノニマスも「LOIC(Low Orbit Ion Cannon)」を用いた攻撃でIRCを使っていましたね。

宮田 企業がこうしたC2の通信を止めたいというときには、どんな手があるんでしょうか?

辻氏 マルウェアの種類にもよるのですが、全て止めるのは難しいと思います。JTBの事件でも使われた「PlugX」などの場合は、これまでのナレッジが蓄積されているので、マルウェア自体は検知できなくても通信の振る舞いから「おかしい」と判断することができます。ただ、SNSやブログを見にいくようなものは検知するのが難しい可能性があります。外部との通信だけで全てを検知しようとするよりも、その先も含めた一連の動きに対して網を張っていく方が現実的でしょう。

根岸氏 PlugXやEmdivi、Poison IvyのようなRAT(Remote Access Tool)は、過去の調査などを見る限り、半分程度がHTTPを使って外部と通信するようです。従って、見ようと思えば通信の中身を見ることはできるのですが、それで怪しいと気付けるかというと、「ものによる」と言わざるを得ません。これは推測ですが、JTBの事案でも、PlugXの通信は検知できたが、ELIRKSの方はできなかったのではないかと考えています。

辻氏 外部との通信というのは、最終的な被害を軽減するための1つの観点でしかないでしょうね。ログを見るなど他の方法も使うことで、RATを見つけられなかったとしても、その後入ってきた別のツールは見つけることはできるかもしれません。「全体を見て大きな網を張る」。難しいかもしれませんが、それが現実的だと思います。

根岸氏 それから、たとえ外部との通信を検知したとしても、「何をどこまでやられているか」を判断するのは簡単ではありません。最悪の場合、「検知したときには既に情報は取られてしまっている」可能性もあります。外部との通信を見つけて、それが重要な情報をやりとりしていなかったからといって、軽々に「大丈夫だ」と判断すると、影響を見誤る危険性があります。

辻氏 見つけたときが攻撃の始まりだとは限らない。

根岸氏 その通りです。「検知したときには既に侵入から何年もたっている」という可能性も十分にあります。

宮田 「外部との不正な通信」といってもその中にはいろいろな種類があり、その1つがC2の通信だということですね。これだけを見て全ての攻撃を検知するのは難しいかもしれませんが、この動画をきっかけに、C2やマルウェアの動作についていろいろ調べてみていただければと思います。

*@IT本サイトで、本編動画公開中です

最終更新:7月27日(水)7時10分

@IT