Посмотрите, какой файл начал процесс в 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 подозрительные скрипты.

Другие вопросы по тегам