LINUX.ORG.RU

Perl: получить информацию о процессе.

 , ,


0

3

Добрый день. Ситуация: заметил страный процесс от одного из рядовых пользователей.

/proc/$PID/exe - /usr/bin/perl /proc/$PID/cmdline - /sbin/syslogd (такой файл есть, но это бинарник, а не перл, да и не должен он запускаться от данного пользователя. В /proc/$PID/fd симлинки на IN, OUT, ERR и 1 сокет который ведет на совершенно левый ip-адрес. Если сказать strace -fp $PID, то там ничего кроме такого нет:

select(0, NULL, NULL, NULL, {0, 10000}) = 0 (Timeout)
select(8, [3], NULL, NULL, {0, 0})      = 0 (Timeout)
Собственно вопрос: как найти что это, откуда взялось. То есть не «как провести аудит аккаунта\сервера», а именно «как понять откуда взялся данный процесс, откуда он запустилса, как назывался и где лежал этот перловый скрипт (если он был) или какие переменные были переданы перлу при запуске».

Ваши советы/предложения?



Последнее исправление: yuriK (всего исправлений: 1)

Запустили perl скрипт, поменяли $0 на /sbin/syslogd и делают свое грязное дело связанное с сетью видимо. Я бы тоже менял $0, если бы хотел скрыть следы.

Вряд ли удастся выяснить откуда это взялось из /proc, можно посмотреть в логах/dmesg, может что-то осталось. Я не знаю способов получить читаемый скрипт обратно из памяти. Можно сдампить память процесса и погрепать строки похожие на IP/fqdn

disarmer ★★★
()
Ответ на: комментарий от disarmer

Ну и конечно стоит посмотреть до какого хоста открыты соединения от этого процесса, видимо там оставшаяся часть ботнета

disarmer ★★★
()
Ответ на: комментарий от disarmer

Можно заглянуть в /proc/$$/maps, там есть пути к загруженным .so, можно сделать некоторые выводы о используемых бинарных модулях

disarmer ★★★
()

Это либо bind shell либо backconnect shell. Искать его не имеет смысла, после запуска сам файл скрипта скорее всего был удален. А искать следует то, через что тебе это залили. Если ты скажешь кто такой «рядовой пользователь» и чем он занимается это многое прояснит.

PoMbl4
()

Ваши советы/предложения?

Подцепиться к нему отладчиком и снять корку.

$ gdb --pid $PID
...
(gdb) gcore
Saved corefile core.$PID
(gdb) detach

В корке можно строчки поискать, вдруг что интересное найдёшь.

i-rinat ★★★★★
()
Ответ на: комментарий от i-rinat

В корке можно строчки поискать, вдруг что интересное найдёшь.

Ничего интересного найти не удалось.

Можно заглянуть в /proc/$$/maps, там есть пути к загруженным .so, можно сделать некоторые выводы о используемых бинарных модулях

Опять же ничего интересного не нашлось акромя стандартных перл-либ.

Ну и конечно стоит посмотреть до какого хоста открыты соединения от этого процесса, видимо там оставшаяся часть ботнета

yuriK
() автор топика
Ответ на: комментарий от yuriK

Ну и конечно стоит посмотреть до какого хоста открыты соединения от этого процесса, видимо там оставшаяся часть ботнета

Ну какой-то ip в калифорнии, но он мне ничего не дает.

yuriK
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.