Посмотрите, какой файл начал процесс в Linux
Один из моих серверов начал рассылать спам в больших количествах. Сервер использует ISPConfig 3, и один из веб-пользователей, скорее всего, имеет брешь в безопасности.
Я определил пользователя, и один файл как-то запускает Perl-скрипт, который отправляет спам.
Однако я не могу найти файл (ы), которые затронуты, так как, скорее всего, все выполняется в памяти.
Очевидно, этот файл создает службу с именем "mail", которая запускается на сервере и привязывается к основным IP-адресам.
Ниже я опубликую некоторую информацию относительно моих результатов, так как у меня нет идей о том, как отследить проблему.
ps aux | grep mail
web24 5101 1.8 0.3 35580 7944 ? Ss 10:45 6:01 mail
web24 5102 1.6 0.2 34628 5160 ? Ss 10:45 5:28 mail
netstat -nalp | grep :25
tcp 0 1 x.x.x.x:50774 194.54.81.164:25 SYN_SENT 5102/mail
tcp 0 1 x.x.x.x:47849 194.54.81.163:25 SYN_SENT 5101/mail
Скорее всего, скрипт запускается вручную, так как он запускается случайным образом после закрытия.
Я хотел бы знать, как отследить, какой файл запустил этот процесс (скорее всего, мне придется анализировать дампы памяти).
После запуска lsof на PID я получаю следующее:
lsof -p 31459
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
perl 31459 web24 cwd DIR 0,34 4096 18735409 /
perl 31459 web24 rtd DIR 0,34 4096 18735409 /
perl 31459 web24 txt REG 0,34 7360 19644668 /usr/bin/perl
perl 31459 web24 mem REG 253,0 19644668 /usr/bin/perl (path dev=0,34)
perl 31459 web24 mem REG 253,0 20621055 /usr/lib/perl/5.10.1/auto/File/Glob/Glob.so (path dev=0,34)
perl 31459 web24 mem REG 253,0 20620896 /usr/lib/perl/5.10.1/auto/POSIX/POSIX.so (path dev=0,34)
perl 31459 web24 mem REG 253,0 20621014 /usr/lib/perl/5.10.1/auto/Fcntl/Fcntl.so (path dev=0,34)
perl 31459 web24 mem REG 253,0 20627464 /usr/lib/perl/5.10.1/auto/Socket/Socket.so (path dev=0,34)
perl 31459 web24 mem REG 253,0 20621012 /usr/lib/perl/5.10.1/auto/IO/IO.so (path dev=0,34)
perl 31459 web24 mem REG 253,0 19628140 /lib/libcrypt-2.11.3.so (path dev=0,34)
perl 31459 web24 mem REG 253,0 19628224 /lib/libc-2.11.3.so (path dev=0,34)
perl 31459 web24 mem REG 253,0 19628216 /lib/libpthread-2.11.3.so (path dev=0,34)
perl 31459 web24 mem REG 253,0 19628144 /lib/libm-2.11.3.so (path dev=0,34)
perl 31459 web24 mem REG 253,0 19628220 /lib/libdl-2.11.3.so (path dev=0,34)
perl 31459 web24 mem REG 253,0 19644608 /usr/lib/libperl.so.5.10.1 (path dev=0,34)
perl 31459 web24 mem REG 253,0 19628132 /lib/ld-2.11.3.so (path dev=0,34)
perl 31459 web24 mem REG 253,0 5857281 /usr/lib/locale/locale-archive (path dev=0,34)
perl 31459 web24 0r CHR 1,3 0t0 19220558 /dev/null
perl 31459 web24 1w CHR 1,3 0t0 19220558 /dev/null
perl 31459 web24 2w CHR 1,3 0t0 19220558 /dev/null
perl 31459 web24 3u IPv4 5906021 0t0 TCP my.hostname.ro:46504->164.81.54.194.static.server.ua:smtp (SYN_SENT)
perl 31459 web24 4w FIFO 0,8 0t0 3061201 pipe
perl 31459 web24 5r FIFO 0,8 0t0 3061202 pipe
perl 31459 web24 6w FIFO 0,8 0t0 3061548 pipe
perl 31459 web24 7r FIFO 0,8 0t0 3061549 pipe
Я должен упомянуть, что подозрительного cronjob нет, и я уверен, что скрипт запускается вручную, поскольку теперь он имеет имя "httpd" вместо "mail", как я упоминал ранее.
Я мог бы решить проблему очень просто, просто закрыв учетную запись клиента и продолжив, но так как этот вид нарушения безопасности является моим первым, я не могу исправить, я хотел бы решить его для дальнейшего использования.
2 ответа
Я согласен с бегом lsof -p 5101
а также lsof -p 5102
чтобы увидеть, какие файлы действительно открываются этим процессом. Вы также сможете получить больше информации, запустив cat /proc/5101/environ
а также cat /proc/5102/environ
, Найдите переменную SCRIPT_FILENAME, и она покажет ваше местоположение. Я видел много раз, что cat /proc/PID/environ
не вернет никакого вывода - это потому, что злоумышленники подделывают окружение. Так что можно с уверенностью сказать, что lsof -p PID
ваша самая безопасная ставка в поиске местоположения. Как только вы найдете местоположение скрипта, перед его удалением вы должны запустить stat script.pl
или какое-либо имя, чтобы увидеть, когда скрипт был размещен на вашем сервере. Эта временная метка будет полезна при поиске записи в журнале, чтобы точно узнать, как это произошло.
Вы можете посмотреть, что показывает lsof.
lsof | grep mail
Проверьте, какие файлы открываются процессом:
lsof -p PID
и может быть, strace также может показать вам кое-что:
strace -p PID
Я также проверил бы, не добавлены ли в cron подозрительные скрипты.