?????????????? Linux ?????
今年 5 月、攻撃者が巧妙な手口を使って、大手のインターネットホスティングプロバイダに侵入し、内部の管理システムへのアクセスに成功しました。この攻撃者は、ユーザー名、電子メールアドレス、パスワードなどの顧客情報を狙っていたようです。内部の管理システムから顧客情報にアクセスしていましたが、攻撃が露見し、一定のセキュリティも実装していたため、侵害の範囲は抑えられました。顧客のパスワードはアクセス可能でしたが、ハッシュ化と salt 処理が行われていたため大量クラッキングは困難な状態でした。また顧客の財務情報にもアクセス可能でしたが、暗号化されていました。残念ながら、暗号化キーへのアクセスを防ぐことはできません。企業に対するデータ侵害と顧客データの大量ダンプがほぼ毎日のように報告されていますが、今回の攻撃はこれまでよりはるかに巧妙です。
攻撃者は、標的の環境が通常は十分に保護されていることを把握していました。特に、疑わしいネットワークトラフィックやファイルのインストールがあるとセキュリティ確認のきっかけになることがあるため、そのようなトラフィックやインストールを回避する方法が必要でした。その巧妙さを示すように、攻撃者はステルス性を備えた独自の Linux バックドアを考案し、セキュアシェル(SSH)や他のサーバープロセス内に自身を忍ばせていました。
攻撃者は、このバックドアを利用して(リモートコマンドの実行など)通常の機能を実行できますが、ここではネットワークソケットを開いたり、コマンド & コントロール(C&C)サーバーへの接続を試みたりすることはありません。代わりに、バックドアコードを SSH プロセスにインジェクトし、ネットワークトラフィックを監視してコロン、感嘆符、セミコロン、ピリオド(:!;.)という文字のシーケンスを探します。
このパターンが見つかると、バックドアは残りのトラフィックを解析し、Blowfish で暗号化され Base64 エンコードされたコマンドを抽出します。
図. インジェクトされるコマンドの例
こうすると、攻撃者は SSH やその他のプロトコルを介して通常の接続要求を行い、正規のトラフィック内に秘密のシーケンスを埋め込んで検出を回避できるようになります。コマンドが実行されると、結果が攻撃者に送り返されます。このバックドアコードは、セキュリティレスポンスがこれまでに解析してきた他の Linux バックドアと類似性はありません。
断片化されたファイルがライブラリを共有し、多くの関数をフックしているようです(read、EVP_CipherInit、fork、ioctl など)。コードが実行されると、以下の操作が実行されます。
- 以下の形式で、攻撃者が発行した任意のコマンドを実行する。
exec sh -c ‘[攻撃者のコマンド]’ >/dev/null 2>/dev/null - 事前に設定されたコマンドのいずれかを実行し、そのコマンドから出力を取得する。
- 個々の SSH 接続から以下のデータを取得する。
- 接続しているホスト名、IP アドレス、ポート
- ユーザー名とパスワードまたは SSH キー
- 盗み出したデータまたはコマンドの応答を blowfish で暗号化し、攻撃者に送信する。
このバックドアがネットワークに存在するかどうかを特定するには、”:!;.” という文字列(引用符を除く)が含まれるトラフィックを探してください。この文字列を含むトラフィックは、SSH ログには記録されません。SSHD プロセスをダンプし、その中から以下の文字列を検索する方法もあります([値] はさまざまな値を示します)。
key=[値]
dhost=[値]
hbt=3600
sp=[値]
sk=[値]
dip=[値]
シマンテックは、このバックドアを Linux.Fokirtor として検出し、お客様を保護します。
* 日本語版セキュリティレスポンスブログの RSS フィードを購読するには、http://www.symantec.com/connect/ja/item-feeds/blog/2261/feed/all/ja にアクセスしてください。