マルウェアとは何か〜WordPressに設置されていたマルウェアを解析してみた結果、恐ろしいソフトがでてきた〜
結論
WordPressのドキュメントルート上に、
wp-includes/wp-pages.lib.php
https://www.japan-secure.com/entry/how-to-perform-wordpress-security-measures.html
がもし設置されていたら、それはマルウェアなので
直ぐに削除すること。
※ 抜本的な対策ではないので、以下の対策も実行しましょう。
マルウェアとは
概要
マルウェア(Malware)とは、不正かつ有害な動作を行う意図で作成された悪意のあるソフトウェアや悪質なコードの総称です。
感染者
利用者のPC
webサーバ
今回はwebサーバが被害にあった。
どんな攻撃をされるか
情報漏えい
サイト改ざん
不正な機能実行
他サイトへの攻撃
基本的に、OSコマンド・インジェクション攻撃と同じです。
※ 徳丸本より
今回解析して出てきたソフトの概要
※ 安全のため、ローカル上での実行&不完全な実行をしております
マルウェアを解析してみた結果、中身はこんなソフトだった。
画面を見てみると、このような機能があることがわかった。
基本データの収集
ファイル操作
このファイルにアクセスしさえすれば、すきなphpファイルをuploadできるようなので、
実質サーバに対してはなんでもできる。
恐ろしい。
いきさつ
友人のwordpressサイトが攻撃され、サイトが全く見れなくなった。
マルウェアと思わしき怪しいファイルがあったので解析してみた。
解析
ファイルのパーミッションを確認
wp-includes/wp-pages.lib.php
このファイルだけ755。怪しさ満点。
中身を見てみる
怪しさ満点の難読文字列。
base64_decodeとeval。
まず、base64コードで普通は書かない。
この時点で「内容を知られたくないから難読化」していることがわかる。
そして、evalはとても危険。
evalに渡された文字列はphpとして実行されてしまうからだ。
どんな文字列も渡すことができるので、
実質phpでできることならなんだって出来てしまう。
evalをechoに変えて出力
またbase64_decodeがでてきた。どうやら何重にもbase64_encodeをしているようだ。
この作業をひたすら繰り返していく。5〜6回繰り返した気がする。
php関数もencodeされていた
どんどん解析してくと、普段使っているphp関数がbase64_encodeされていた。
ものすごい執念を感じる。
http://manual.xwd.jp/function.gzinflate.html
こちらの関数はdeflate圧縮されたものを解答する関数。
なんらかのソフトウェアっぽい雰囲気が出てきた。
phpコードがでてきた
更に解析をすすめると、phpコードがでてきた。
変数名にランダムなアルファベットを使用していたので、わかりやすくかえた。
冒頭のランダム文字列を1文字ずつ読み込んで、ASCII文字コードに変換している。
PHP関数 - ASCIIコードを特定の文字に変換 - chr() - PHP入門 - Webkaru
さらにそれを文字に変換している。
さらにphpコードがでてきた
また大量の文字列がでてきた。
これをまたechoすると、また大量の文字列。
ここでgzinflateがでてきたので、おそらく後ろのbase64_decodeが本体ファイルと思われる。
ここまで難読化されていると、マルウェアであることは確実と思われる。
ただ、結局このままではどのようなマルウェアがわからないので、
安全な状況を確保してから解凍することにした。
安全な状況を(出来る限り)確保してから解凍する
最悪な状況にそなえ、
普段使わない(そして壊れてもいい)windows + dockerにて、php実行環境を構築し、
スタンドアローンで実行。
※ 良い子は真似しちゃダメ
冒頭のソフトが現れた。
まとめ
マルウェアはすごく難読化されている。
phpで出来ているものの場合、evalやbase64_decode + 意味不明な文字列
が含まれていると怪しい。
マルウェア対策については、別の記事に書こうと思います。
追記
FilesMan? 運営サイトがハッキングされバックドアがサーバーに設置される! ( Twitter ) - 無題な濃いログ - Yahoo!ブログ
有名なバックドアだということが判明。