君は心理学者なのか?

大学時代に心理学を専攻しなぜかプログラマになった、サイコ(心理学)プログラマかろてんの雑記。

マルウェアとは何か〜WordPressに設置されていたマルウェアを解析してみた結果、恐ろしいソフトがでてきた〜

結論

WordPressのドキュメントルート上に、

wp-includes/wp-pages.lib.php

https://www.japan-secure.com/entry/how-to-perform-wordpress-security-measures.html

がもし設置されていたら、それはマルウェアなので

直ぐに削除すること。

※ 抜本的な対策ではないので、以下の対策も実行しましょう。

www.japan-secure.com

マルウェアとは

概要

マルウェアとは|マルウェアの脅威とその対策

マルウェア(Malware)とは、不正かつ有害な動作を行う意図で作成された悪意のあるソフトウェアや悪質なコードの総称です。

感染者

  • 利用者のPC

  • webサーバ

今回はwebサーバが被害にあった。

どんな攻撃をされるか

  • 情報漏えい

  • サイト改ざん

  • 不正な機能実行

  • 他サイトへの攻撃

基本的に、OSコマンド・インジェクション攻撃と同じです。

※ 徳丸本より

今回解析して出てきたソフトの概要

f:id:karoten512:20171126164158p:plain

※ 安全のため、ローカル上での実行&不完全な実行をしております

マルウェアを解析してみた結果、中身はこんなソフトだった。

画面を見てみると、このような機能があることがわかった。

基本データの収集

f:id:karoten512:20171126164436p:plain

ファイル操作

f:id:karoten512:20171126164810p:plain

f:id:karoten512:20171126164929p:plain

このファイルにアクセスしさえすれば、すきなphpファイルをuploadできるようなので、

実質サーバに対してはなんでもできる。

恐ろしい。

いきさつ

友人のwordpressサイトが攻撃され、サイトが全く見れなくなった。

マルウェアと思わしき怪しいファイルがあったので解析してみた。

解析

ファイルのパーミッションを確認

wp-includes/wp-pages.lib.php

他のphpファイルのパーミッションは644だが、

このファイルだけ755。怪しさ満点。

中身を見てみる

f:id:karoten512:20171126163330p:plain

怪しさ満点の難読文字列。

f:id:karoten512:20171126163340p:plain

base64_decodeとeval。

PHP: base64_decode - Manual

PHP: eval - Manual

まず、base64コードで普通は書かない。

この時点で「内容を知られたくないから難読化」していることがわかる。

そして、evalはとても危険。

evalに渡された文字列はphpとして実行されてしまうからだ。

どんな文字列も渡すことができるので、

実質phpでできることならなんだって出来てしまう。

evalをechoに変えて出力

f:id:karoten512:20171126163629p:plain

またbase64_decodeがでてきた。どうやら何重にもbase64_encodeをしているようだ。

この作業をひたすら繰り返していく。5〜6回繰り返した気がする。

php関数もencodeされていた

f:id:karoten512:20171126163843p:plain

どんどん解析してくと、普段使っているphp関数がbase64_encodeされていた。

ものすごい執念を感じる。

http://manual.xwd.jp/function.gzinflate.html

こちらの関数はdeflate圧縮されたものを解答する関数。

なんらかのソフトウェアっぽい雰囲気が出てきた。

phpコードがでてきた

更に解析をすすめると、phpコードがでてきた。

f:id:karoten512:20171126165716p:plain

変数名にランダムなアルファベットを使用していたので、わかりやすくかえた。

PHPリファレンス(ord())

冒頭のランダム文字列を1文字ずつ読み込んで、ASCII文字コードに変換している。

PHP関数 - ASCIIコードを特定の文字に変換 - chr() - PHP入門 - Webkaru

さらにそれを文字に変換している。

さらにphpコードがでてきた

f:id:karoten512:20171126170130p:plain

f:id:karoten512:20171126170141p:plain

また大量の文字列がでてきた。

これをまたechoすると、また大量の文字列。

f:id:karoten512:20171126171528p:plain

ここでgzinflateがでてきたので、おそらく後ろのbase64_decodeが本体ファイルと思われる。

ここまで難読化されていると、マルウェアであることは確実と思われる。

ただ、結局このままではどのようなマルウェアがわからないので、

安全な状況を確保してから解凍することにした。

安全な状況を(出来る限り)確保してから解凍する

最悪な状況にそなえ、

普段使わない(そして壊れてもいい)windows + dockerにて、php実行環境を構築し、

スタンドアローンで実行。

※ 良い子は真似しちゃダメ

冒頭のソフトが現れた。

まとめ

マルウェアはすごく難読化されている。

phpで出来ているものの場合、evalやbase64_decode + 意味不明な文字列

が含まれていると怪しい。

マルウェア対策については、別の記事に書こうと思います。

追記

FilesMan? 運営サイトがハッキングされバックドアがサーバーに設置される! ( Twitter ) - 無題な濃いログ - Yahoo!ブログ

有名なバックドアだということが判明。