トロイの木馬(trojan horse)
トロイの木馬(trojan horse)
トロイの木馬とは?
トロイの木馬というのは、秘密裏に外部からPCをコントロールすることを目的に 作成されたプログラムの総称。通常有用な実行ファイルに見せかけてばら撒かれ ます。単純な悪戯目的のこともありますが、パスワードや秘密文書等を盗む目的で 悪用されることもあります。プラグラインを追加で インストールして機能拡張することができるようになっているものまであります。 またワーム自体がトロイの木馬の機能をもっていたり、キーロガーとしての 機能を併せもつものもあります。また感染したPCを次なる攻撃への踏み台として 悪用するものもあります。特にDOS攻撃への踏み台として悪用したり、スパム メールを送信するための基盤として悪用されることが多いようです。企業が 社員を監視するためにトロイの木馬的なものを利用するケースもあります。
日々更新されるアンチウィルスソフトのパターンファイルには、トロイの木馬に 対応するものが多く入っていて、現在でも多くのトロイの木馬が作成されている ことがわかります。
トロイの木馬という名前の由来
トロイの木馬という名前は、ある都市を攻略する際に味方の兵士を隠れさせた 巨大な木馬を敵方に贈りものとして贈って都市内部に侵入し、攻略したという ギリシャ神話に由来します。
トロイの木馬の感染経路
トロイの木馬の主な感染経路としては以下のようなものがあります。
1. 美味しいファイルを装って実行させる
商用アプリの不正コピー等を装って、ウェブサイト等にアップロード しておいて実行させるなんていうのはよくある手口です。
2. E-mailを介して感染
知り合いを装ってE-Mailを添付ファイル付きで送りつけて、トロイの木馬 を実行させるというのはよくある手口です。
3. ウェブブラウザのバグを悪用して拡大
なんらかの細工をしたHTMLを作成すると、HTMLを開いただけで攻撃側が 用意したEXEファイルを自動的にダウンロード、実行させてしまうことが できるようなバグが過去にいくつも報告されています。
トロイの木馬の一般的な動作
典型的なトロイの木馬は、実行される以下のような動作をします。
?@スタートアップ登録
トロイの木馬に感染すると、多くの場合該当PCが起動するたびに自動的に 実行されるようにPCの設定を変更します。多くの場合レジストリエントリを 変更してPC起動時に自動的に実行されるようにします。
?A感染PC上でサーバーを立てて外部からの接続を待ち受けます。
一般的なトロイの木馬は、クライアント・サーバーモデルに則って設計 されていて、特定のポートでListenします。この状態になると 外部のPCから感染PCに外部から接続することができるようになります。
※感染PCを広域的にスキャンして、特定のトロイの木馬に感染している PCを見つけ出して、悪用するツールなんていうものまで実在します。
?B攻撃者に感染を通知(IPアドレスを渡す)
通常PCをターゲットにしているので、IPアドレスは固定されていません。 従ってなんらかの手段で感染PCのIPアドレスを知るための仕組みを組み込んで おかないと攻撃者が感染PCに接続できなくなってしまいます。
また攻撃者はトロイの木馬がいつ実行されるかわかりませんし、さらに 言うならば誰が実行するのかさえわかりません。通常トロイの木馬は 特定の人間をターゲットにするというよりは、広くばら撒いておいて 誰かが実行するのを待つというような使い方をされるからです。
攻撃者側からみた場合、感染PCから通知がいくようにしておけば、 トロイの木馬に誰かが感染したことを知ることができますし、どのIPアドレスに 接続すればいいのかもわかって一石二鳥ということになります。
?B攻撃者がトロイの木馬に外部からアクセスしてターゲットPCを操作
この段階にまできたら、基本的に何でもできるようになっています。。 できることはトロイの木馬によってマチマチですが、感染PC上のファイルの ダウンロード、プログラムのアップロード及び実行なんてのは基本的な機能で、 どのようなトロイの木馬 にも備わっています。CD-ROMトレーを空けたり締めたりするなんていう ふざけた機能を持つものもありますし、特定時点のスクリーンキャプチャ を取ることができるようなものまであります。
トロイの木馬の検出
トロイの木馬に万が一感染してしまったかも知れないと思ったら、次のような チェックを行うのが定石でした
1. 現在起動しているプロセスリストをチェック
タスクマネージャを使って、現在起動中のプロセスのリストをチェックして 見たことがないようなプロセスがないかどうかをチェックします。
ただ最近のOSは起動プロセス数が増えてきているので どれかが怪しいか即座に判断することは難しくなっています。怪しいなと 思ったらプロセス名をキーワードにして検索してみるといいと思います。
ここまでの話だと意外と簡単そうですが、実は話はそう単純ではありません。 攻撃側も馬鹿ではないので、どういうチェックが行われるのかということは よく知っているので、感染後に正規のプロセスと似た名前や正規のプロセスと 全く同じ名前でトロイの木馬を起動します。このようなことをされると プロセス名でチェックするという方法はあまり有効ではなくなります。
広く知られたトロイの木馬の場合には、ある程度決まった名前で 起動する場合が多いのですが、あまり知られていないものだとどういう名前で 起動されるのか全く分からないということもあります。
さらに言うなら、プロセス隠蔽機能を持ったトロイの木馬も多く存在 します。そのような場合にはタスクマネージャやその他のプロセス列挙用のツールを使って も木馬の存在を確認することはできません。
2. Listenポートのチェック
コマンドプロンプトで netstat -an というコマンドを使って 怪しいポートでListenしていないかどうかをチェックします。 どのポートが正規のもので、どのポートが怪しいかっていうのは ある程度知識がないと判別できません。もし分からなければこれも サーチエンジンで調べるといいでしょう。
ただしWindows 2K 以前のnetstatは、特定のポートをどのプログラムが 開いているのかがわかりません。こういう情報を調べるためには Active Ports のようなツールを使用します。
Windows XP以降なら netstat -oを使って 特定のポートでListenしているプログラムを特定することができます。
3. レジストリエントリ等の自動スタートアップ登録をチェック
トロイの木馬に感染すると通常レジストリやINIファイルに自動スタート用の エントリを作成します。こうしておくことでPCが起動するたびに自動的にトロイの 木馬が起動するようになります。従ってそのようなエントリを削除してしまえば PC再起動後はトロイの木馬が起動しなくなります。これらの作業には通常regeditや syseditといった標準ツールを使います。
※私が知る限り自動スタート登録方法は10種類くらいあります
しかしながら上記の方法は、感染の痕跡を隠蔽する機能を持ったトロイの木馬には 通用しません。しかしRootKit化したトロイの木馬の場合、従来のような 方法で感染を検出することは出来ません。例えばレジストリ名に特定の名前が 含まれる場合に、該当エントリがRegdit等のツールから見えないようにすると いうようなことも簡単にできてしまうので、一般的なチェック用ツールで 自動スタート用のエントリを調べても、レジストリエントリが存在しないよう に見えます。
4. スニッファ(Sniffer) を使って通信を監視する
スニッファ(Sniffer)というのはネットワーク を流れるデータを捕捉するためのツールで、基本的にあらゆる通信データを捕まえることができます。 PCを複数所有している場合には感染が疑われるPCを起動した上で、別のPCでスニッファを起動して通信を 監視します。怪しい通信があったらパケットの中身をチェックします。
暗号化通信を実装しているトロイの木馬もあるので、この方法も万能では ありません。
※こういうチェックができる人間ならそもそもトロイの 木馬なんかに感染しないだろって話もあります。逆にいうとトロイの木馬に 感染しちゃうような人は自力では検出できない可能性が高いです。
トロイの木馬の新しい流れ
近年、ネットワーク環境の変化等に伴って新しい流れも生まれてきています。
1. Listen型からコールバック型へ
個人の家庭でもルーターを使うことが一般化したため従来のように 特定のポートでListenして外部からの接続を受け付けるという方式は あまり通用しなくなっています。というのも一般的なルーターでは外部からの 接続を受け付けるようにする為にはルーターの設定を変更する必要がある からです。
※図の矢印はどちらからどちらに向かって接続をはるのかという ことを示しています。接続に成功した場合データは双方向に流れます。矢印の根本から 見るとアップロードとダウンロードの両方が可能。
攻撃側から見たこのような問題は、感染PC上でポートをListenするという発想を 止めて、感染PCから外部のホストに接続して命令をダウンロードするという 発想に転換することで意外と簡単に解消することができます。ポート80なんか を塞いでいることはまずないので、HTTPプロトコル(ウェブブラウザが使用 するプロトコル)を使って外部のホストからなんらかのコマンドをダウンロード して実行する形式にすれば、感染PCがたとえルーターの背後にあったとして もリモートから簡単にコントロールすることができてしまいます。
※トロイの木馬にルーターの設定を変更させるという方法もあるでしょうが 各社の製品によって方法はマチマチなので、あまり有効な攻撃方法とは いえないでしょう。
※図の矢印はどちらからどちらに向かって接続をはるのかという ことを示しています。接続に成功した場合データは双方向に流れます。矢印の根本から 見るとアップロードとダウンロードの両方が可能。
2. P2Pネットワークを使った感染の拡大
ネットワーク回線が高速化して一般家庭でもADSLや光回線を利用することが できるようになった結果Winny等に代表されるP2Pネットワークは爆発的に拡大してきました。 攻撃者から見ると、長時間連続してネットワークに繋がっている可能性が高いPC というのは美味しいターゲットになります。そこで考え出されたのがP2Pネットワーク を介した感染です。今のところは感染経路としてだけP2Pネットワークを利用するものが ほとんどですが、攻撃側から感染PCに対して命令を送信する為にP2Pネットワークを 利用するものがそのうち出てくるかも知れません.
P2Pソフトはリソースを食う、特にCPUパワーを使うアプリなので アンチウィルスソフトを切った状態で使用している人の割合が高いという 事情もターゲットとして狙われる要因の1つになっています。
3. Rootkit化
近年のトロイの木馬はより検出が難しくなってきていて、RootKit化してきています。 RootKitというのは、単純なトロイの木馬とは異なりOSの機能を改変して、特定の プログラムの検出を難しくする技術のことです。RootKitを仕込まれると、従来トロイの 木馬を検出する方法はほぼ通用しなくなります。(逆にいうと従来の検出テクニック を無効化するためにRootKit化しているわけです。)
従来RootKitというとUnix系OSをターゲットにしたものだったわけですが、近年研究? が進んでWindows上のRootKit技術がかなり進歩して広く知られるようになってきた という事情もあります。
RootKitを検出できるアンチウィルスソフトもちらほら出てきていますが、今のところは それ程普及しているとは言いがたい状況にあります。
※RootKitはOS自体の機能改変してしまうという性質上、その検出はかなり困難です。
※詳しい説明は RootKitに関する項目を 参照




