攻撃者は、感染したサイトのWebページに悪意のあるコードを挿入する方法を常に改善しています。 静的コンテンツまたはphp-scripts CMSの変更であった場合、より複雑な手法を使用するようになりました。
最近では、Webサーバーが最も頻繁に感染しています。悪意のあるモジュールがインストールされたり、悪意のある共有オブジェクトが導入されたり、実行可能ファイルが悪意のある機能で再コンパイルされたりします。 悪意のあるJavaScriptの導入には、たとえばFlash が積極的に使用されています。
2013年の終わりに、ロボットはページに悪意のあるFlashオブジェクトが埋め込まれた多数の悪意のあるサイトを検出し始めました。 このページはそのようなコードをホストしていました。
NB:投稿内のすべての悪意のあるコードはスクリーンショットの形式で提供されているため、ロボットはこのページが感染していることを発見できません。
このフラッシュムービーはサイト訪問者のブラウザにロードされ、ActionScriptを実行し、フォームのアドレスにリクエストを送信しました。
hxxp://rdomn1394028305.hopto.me/gray-bg.png?img = <ランダム番号>、
例えば:
hxxp://rdomn1394089507.hopto.me/gray-bg.png?img = 0.28730966709554195
このリクエストに応えて、データが送信されました:
これらは、 evalオペレーターによって復号化および実行される暗号化されたJavaScriptコードでした。 その結果、 Flashムービーはzzbdbqs.podzone.net/ytydhdy9.htmlの形式のURLを持つiframeを形成しました 。
フレームセットがiframeにロードされ、 Neutrino Exploit Kitの ランディングページがユーザーのブラウザーにロードされました。
次のランディングページは次のように機能しました。 fshciym.jsスクリプトは、 jQueryバージョン1.9.1フレームワークです。 彼は、メインスクリプトサブルーチンのコンパクトな本体で実行された難読化解除プロセスに積極的に参加しました。
wdb()関数は、入力パラメーターに応じて異なるjs-operatorsを返しました。 したがって、メインルーチンはコードに変換されました。
このコードは、エクスプロイトパックのホストからamnjzvktkqdbjドキュメントをロードし、それをijvb関数の入力に渡します。ijvb関数はdecodeURIComponentを実行し、その後ドキュメントの復号化を実行しました 。 その結果、 PluginDetectとコードから複雑なスクリプトが形成されました 。
このコードは、ユーザーがインストールしたプログラム( MS Office、VLC Player、Java、Flash )を判別し、結果に応じて、適切なエクスプロイトでページをロードしました。 ユーザーのブラウザで実行される悪質なコードの興味深い構造に加えて、このケースはサーバーの感染方法の面でも興味深いものです。
テクニカルサポートに連絡した数人のウェブマスターが、感染したサーバーへのルートアクセスを許可することに同意しました。 これには、 Apache用の悪意のあるモジュールが使用されていることがわかりました。 これは別個の.so (通常はmod_status.soという名前)であり、 Apache Webサーバーの構成に書き込まれます。 検出と削除をより困難にするために、攻撃者はモジュールを他のモジュールの構成スクリプト(たとえば、 perl.conf )にロードするように命令しました。 変更された構成ファイルは、これらのファイルの変更を禁止するためにchattrユーティリティを使用して設定されました。 chattrユーティリティ自体は使用後に削除されました。 代わりに、削除を禁止する同じ名前と属性で空のファイルが書き込まれました。
初期化中に、モジュールは関数を呼び出していくつかのフックをインストールしました。
ap_hook_log_transaction、
ap_hook_post_config、
ap_hook_insert_filter、
ap_register_output_filter
post_config_hookプロシージャが呼び出されたとき( ap_hook_post_configを呼び出して設定 )、モジュール構成が復号化されてロードされました。 ファイルマッピングも作成され、後でプロセス間通信に使用されました。 この段階の後、プロセスの特権がチェックされ、 ルート特権がある場合は分岐し、無限ループが開始されました。 このモジュールでは、ルート権限と禁止されたプロセスを使用してシステム内のユーザーセッションの存在を確認し、必要に応じてリモートサーバーへのバックコネクトを行い、攻撃者がリモートで制御できるようにしました。
サーバーのHTTP応答への悪意のあるコードの挿入は、 Apache Webサーバーの出力フィルターとして設定された関数で発生しました。 実装の直前に、悪意のあるモジュールは、HTTP要求が制御しているかどうか、モジュールのリモート制御が許可されているかどうか、およびその構成を更新する必要があるかどうかをチェックしました。 その後、一連のチェックが行われました。悪意のあるコードを導入する時間が切れたかどうか、構成に含まれているかどうかです。
結果が正の場合、システム内のルート権限または禁止されたプロセスを持つアクティブなユーザーセッションを通知するフラグがチェックされました。 その後、リクエストとレスポンスのパラメータがチェックされました-User-Agent、Content-Type、Referer 、サブストリングの存在、悪意のあるコードの導入の前後。 これらのチェックがすべて成功した場合、悪意のあるコードがHTTP応答に埋め込まれました。
悪意のあるモジュールにより、攻撃者はサーバーをリモートで制御することもできました。 これを行うには、特別な値を持つ「プラグマ」ヘッダーを含むHTTP要求を送信する必要がありました。 このような要求の処理中、この値はBase64アルゴリズムを使用してデコードされ、値の最初の8バイトが復号化され、最初の4バイトが定数0xDEADBEEFと等しいかどうかがチェックされました。 この8バイトブロックの2番目の4バイトはコマンドでした。 表のコマンドの種類とその説明:
チームの価値 | 説明 |
---|---|
10001時間 | ステータスを取得 |
10002h | 構成を更新する |
10003時間 | HTTP応答でのコードインジェクションを再開する |
10004時間 | HTTP応答でのコードインジェクションの一時停止 |
10005h | リモートサーバーへの接続を戻します |
Pragma値の残りは、コマンドのペイロードです。 データは、 ECBモードで XTEAアルゴリズム(11ラウンド)を使用して暗号化された構成更新パッケージを除き、明確な形式で送信されました。
さらに、悪意のあるモジュールには、システムで実行中のプロセスとルート権限を持つユーザーセッションの存在を監視する機能が含まれていました。
不要なプロセスを監視するプロセスで、モジュールは/ proc /ディレクトリの内容を読み取り、
/proc/%d/cmdline
読み取ることで実行中のプロセスのコマンドラインを受け取りました。 取得されたコマンドラインの値は、悪意のあるモジュールの構成にリストされている禁止されたプロセスの名前を確認しました。 不要なプロセスが検出された場合、サーバーのHTTP応答への悪意のあるコードの導入は一時的に停止されます。
同様の方法で、 root権限を持つユーザーセッションがチェックされました。 悪意のあるモジュールは、実行中のプロセスのIDと、プロセスごとに
/proc/%d/status
読み取ってそのステータスを受け取りました。 さらに、受信したデータから、モジュールはUIDを受信し、それらを0と比較しました。プロセスがこの条件を満たしている場合、モジュールは
/proc/%d/fd
を見て、サブストリングptsを探しました。 このサブストリングが見つかったファイル記述子については、最後の変更の時刻が取得されました。 現在の時刻と受信した時刻の差が構成で定義された値より小さい場合、モジュールはシステムにルートユーザーセッションがあると見なし、悪意のあるコードの導入を一時的に停止しました。
悪意のあるモジュールの初期構成
更新されたマルウェアモジュールの構成(HTTP応答に埋め込むための悪意のあるコードが内部に表示されます)
悪意のあるコードを導入するために、攻撃者はますます新しいメソッドを考え出し、個別のページとスクリプトの開始からWebサーバーの実行可能ファイルの使用に移行します。これにより、従来の方法による悪意のあるコードの検出が複雑になります。 サーバーでこのような感染が発生している場合、 VirusTotalサービスを使用してすべてのApacheモジュールをチェックすることにより、悪意のあるモジュールの検出に役立ちます。
Webサーバーとそれらのサイトを追跡して、感染、トラフィックの損失、およびホスティングの場合(顧客の大規模な流出)を防ぎます。 問題のサイトのマークアップを観察します。これのために、Yandex.Webmasterにサイトを登録し、標準のメールアドレスに送信する感染レターを読むことができます。 あなたの会社が適切なソフトウェアをホストまたは開発している場合、 セーフブラウジングAPIを使用する方が便利かもしれません。 セーフブラウジングAPIは、新しいPHP SDKを最近リリースしたか、Webmaster APIの 「ウイルス」パラメータです。
ユーザー、サイト、サーバーに注意してください!