BHEK2 を悪用した国内改ざん事件の続報

前回の BHEK に関するブログの続報です。今回はインストールされるマルウェアの解析結果や、ドライブバイダウンロードの入り口サイトとなった Web サーバへの侵入手段などを紹介しています。

改ざんと侵入手段

トレンドマイクロのブログでは、マルウェアに感染させる不正な Web サイト (マルウェア感染サイト) へ誘導するコンテンツが挿入された Web サイト (入り口サイト) は、悪性の Apache モジュールがインストールされ、それが原因で改ざんが発生していたことが報告されています。

IIJ で確認したところ、改ざんされたコンテンツにアクセスしたユーザは、マルウェア感染サイトに誘導されました。その感染サイトのコンテンツにより、Java、Adobe Flash、Adobe Reader などのブラウザプラグインの脆弱性を悪用し、マルウェアのダウンロードを行います。

これら入り口サイトの Web サーバの多くには Plesk Panel と呼ばれるサーバ管理ソフトウェアが導入されていたという情報があります。ただし被害にあった Web サーバのすべてに Plesk Panel がインストールされていたわけではありません。また悪性モジュールのインストールには Apache の設定ファイルを書き換える必要があるため、管理者権限が必要になります。このことから攻撃者は、例えば ftp や ssh に対する辞書攻撃を行う、もしくは一般アカウント権限を奪取し、侵入した後に特権昇格の脆弱性を使うなど、別の手段で管理者権限を奪取した可能性が高いと考えられます。また、一度はマルウェア感染サイトに誘導されたことが確認されたケースでも、繰り返し同じ IP アドレスから入り口サイトにアクセスしなおすと、マルウェア感染サイトに誘導するための悪性コンテンツが応答されず、マルウェアに感染しない現象を確認しています。この点からも単純にコンテンツそのものを改ざんする手法ではなく、入り口サイトでアクセス元について状態管理が行われ、動的にコンテンツを制御していることが分かります。

マルウエア感染サイトにおいては、1 つの IP アドレスから異なる入り口サイトを経由して、マルウェア感染サイトに複数回アクセスした場合、2度目以降は 502 (Bad Gateway) のエラーコードが応答され、マルウェアがダウンロードされません。これは、マルウェア感染サイト間でアクセス元情報などを共有しているためでであると考えられます。またこのため、インシデントレスポンスや調査の際に事象の再現やマルウェア検体の入手が困難になります。

今回の事件は日本国内の事件として報じられていますが、同様の改ざんは世界中で起っています。たとえば複数の外部の情報で、2012年6月から Plesk Panel の脆弱性を悪用して、BHEK へ誘導する事件があったことが報告されています[1] … Continue reading。また、IIJ の調査では、1月の段階で日本国内における BHEK2 によるマルウェア感染を検出しており、総量は多くないものの、増減を繰り返しながら継続していました。

インストールされるマルウェア

IIJ が3月15日の調査時に入手したマルウェアは Pony と呼ばれるダウンローダ兼アカウント情報を窃取するマルウェアと、このダウンローダがダウンロードするスケアウェア (Harddisk Antivirus) の2つを確認しています。スケアウェアは偽のセキュリティソフトウェアで、ユーザを脅して直接金銭を窃取するマルウェアです。加えて、外部情報では BHEK2 経由で感染させられるマルウェアは、ZeuS 亜種 (Citadel 含む)、ZeroAccess など多岐に渡る[2]ZeuS については IIR vol.16、Citadel については IIR vol.18 で詳細に言及している。また BHEK と ZeroAccess の関連は … Continue readingため、今回もこれらのマルウェアが配布された可能性があります。

Pony の主な機能はマルウェアのダウンロード及び端末上に保存されたアカウント情報を窃取することです。これらの動作が終わると継続して活動することなく、自己削除を行います。今回の Pony はバージョン1.9であり、MASM でアセンブルされています。Windows 98 以上のすべての Windows (サーバを含む) での動作が可能であり、32bit だけではなく、64bit 版でも WoW64 (Windows on Windows) によって動作します。

アカウント情報の窃取の対象となるのは以下の100近くのクライアントソフトウェアです。FTP クライアントを中心に、主要な Web ブラウザ、メーラ、ssh クライアント、RDP (リモートデスクトップ) クライアントなどが対象となっています。特筆すべき点は、FFFTP や Becky! など、国産のソフトウェアも対象になっている点です。この点からこのマルウェアは日本国内を対象のひとつとしていると言えるでしょう。なお FFFTP に関しては ru:8080[3]ru:8080 については IIR vol.7 で詳細に言及している。 に使われていた一部のマルウェアにおいても対象になっていました。また、アカウント情報はアカウント名、パスワードだけでなく、証明書およびその秘密鍵も窃取します。

* FAR Manager
* Total Commander
* WS_FTP
* CuteFTP
* FlashFXP
* FileZilla
* FTP Commander
* BulletProof FTP
* SmartFTP
* TurboFTP
* FFFTP
* CoffeeCup FTP
* CoreFTP
* FTP Explorer
* Frigate3 FTP
* SecureFX
* UltraFXP
* FTPRush
* WebSitePublisher
* BitKinex
* ExpanDrive
* ClassicFTP
* Fling
* SoftX
* Directory Opus
* FreeFTP
* DirectFTP (FreeFTP)
* LeapFTP
* WinSCP
* 32bit FTP
* NetDrive
* WebDrive
* FTP Control
* Opera
* WiseFTP
* FTP Voyager
* Firefox
* FireFTP
* SeaMonkey
* Flock
* Mozilla Suite Browser
* LeechFTP
* Odin Secure FTP Expert
* WinFTP
* FTP Surfer
* FTPGetter
* ALFTP
* Internet Explorer
* Dreamweaver
* DeluxeFTP
* Google Chrome
* Chromium
* SRWare Iron (Chromium)
* ChromePlus
* Bromium (Yandex Chrome)
* Nichrome
* Comodo Dragon
* RockMelt
* K-Meleon
* Epic
* Staff-FTP
* AceFTP
* Global Downloader
* FreshFTP
* BlazeFTP
* NETFile
* GoFTP
* 3D-FTP
* Easy FTP
* Xftp
* FTP Now
* Robo-FTP
* LinasFTP
* Cyberduck
* Putty
* Notepad++ (NppFTP)
* CoffeeCup Visual Site Designer
* CoffeeCup Sitemapper (CoffeeCup FTP)
* FTPShell
* FTPInfo
* NexusFile
* FastStone Browser
* CoolNovo
* WinZip
* Yandex.Internet
* MyFTP
* sherrod FTP
* NovaFTP
* Windows Mail
* Windows Live Mail
* Pocomail
* Becky!
* IncrediMail
* The Bat!
* Outlook
* Thunderbird
* FastTrackFTPCode language: Markdown (markdown)

さらに今回の Pony には、実在する会社の正規のコード署名がされていることが特徴の一つとして挙げられます。これはこの企業から証明書が盗み出され、悪用された可能性があることを示唆しており、本稿執筆時点でも有効なコード署名です。

マルウェアの入手を困難にさせる手法

前述のとおり、検体の入手のしにくさから、解析を行う事自体が困難であるといえます。それに加えて、BHEK2 の Java Exploit はマルウェアをダウンロードする際に、ランダム関数を使って難読化のキーを生成し、マルウェア感染サイトにマルウェアをリクエストします。マルウェア感染サイトはそのキーを元にリアルタイムでマルウェアをエンコードして返すため、インシデントレスポンス時にマルウェアを入手しようとした場合、Java のダウンロードキャッシュから復元するのが困難な状態でした。

以下は Java Exploit のコードの一部です。Random クラスが呼び出されています。

Java Exploit は次のようなリクエストを発行しますが、この際、Random クラスで取得した値が変数としてサーバに渡されます。

サーバはその値を元にリアルタイムでマルウェアのエンコードを行い、クライアントに返します。その後、Java Exploit では、以下のようなロジックで加算や XOR などを行いますが、ここでも特定の値とともに前述の値が用いられるため、インシデントレスポンス時に Java のキャッシュフォルダから取得しようとしても、エンコードしたマルウェアしか取得することができません。

今回に関しては、キーとなる値が GET のパラメータにあるため、Java の IDX ファイルが残されていればそれから再現可能だったことや、最終的にキーとなる値が1バイトになることから、総当たりすることで復元できる程度の空間でした。しかし、今後複雑化されていくと、感染した際のパラメータなどが入手できなければ、検体を復元することが困難になることが予想されます。

復旧方法

今回の事件の対策は複数の場所で行う必要があります。

まず、悪性の Apache モジュールをインストールされた Web サーバの管理者は、復旧を行う場合、管理者権限が奪取されていることを考慮して対処する必要があります。たとえば、Web サーバをクリーンインストールし、アプリケーションの脆弱性をすべて塞いだ上ですべてのアカウントのパスワードを変更するなどの対策が必要です。

入り口サイトの Web サーバを閲覧し、感染してしまったユーザのクライアントにおいては、感染した端末には複数のマルウェアが存在している可能性があることに留意し、画面上に現れているスケアウェアのみを駆除して対応を完了したと判断しないようにしてください。すべてのマルウェアを駆除した後は、Java や Adobe Reader などの Web プラグインを含めた OS、ソフトウェアを最新版にアップデートし、再度の感染を防ぎます。

また、今回発見したマルウェアはパスワード情報や証明書などの認証に使われる情報を盗むことが判明したため、感染した場合にはこれらの情報を悪用され、今後外部のサーバやサービスが勝手に利用される可能性があります。このため、感染中に入力したすべてのパスワードや、端末上に保存しておいたパスワードはすべて変更することを推奨します。同様に、クライアント上に証明書を保存してた場合には、発行元の認証局に対して失効処理を依頼してください。

脚注

シェアする