LinuxForum.Fans
Тема

Поломали. Как?

Автор: aelfwine 46 сообщений 11316 просмотров
#37363

В наличии сервер под управлением CentOS
uname -a
Linux xxx.xx 2.6.18-92.1.6.el5 #1 SMP Wed Jun 25 13:45:47 EDT 2008 x86_64 x86_64 x86_64 GNU/Linux

На нем крутится корпоративный сайт и несколько специализированных программ, также смотрящие в мир.

Есть такая проблема: С недавних пор в директории нашего сайта начали появляться папки и файлы с различными, не несущими смысла, именами типа .p/p.php либо ведущие на левые испанские сайты, либо содержащие странички с предложением ввести логин/пароль. Пришли уведомления из разных мест, в том числе cert.ru что наш сервер занимается фишингом. Действительно, если не прибивать эти файлы, то появляются еще файлы с длинными списками е-мэйлов, собранных видимо этими страничками (кроме е-мэйлов правда нет ничего). Всё это мною регулярно прибивается, но дыра не найдена, что напрягает.

В тех логах которые смотрел, ничего криминального не увидел. На root пароль менял, но не помогло.

Какую информацию надо предоставить чтобы понять где может быть дыра?

text

netstat -lpn
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name
tcp        0      0 127.0.0.1:3306              0.0.0.0:*                   LISTEN      5129/mysqld
tcp        0      0 127.0.0.1:783               0.0.0.0:*                   LISTEN      3095/spamd.pid
tcp        0      0 0.0.0.0:111                 0.0.0.0:*                   LISTEN      2766/portmap
tcp        0      0 0.0.0.0:851                 0.0.0.0:*                   LISTEN      2789/rpc.statd
tcp        0      0 xxx.xxx.xxx.xxx:53          0.0.0.0:*                   LISTEN      25710/named
tcp        0      0 yyy.yyy.yyy.yyy:53               0.0.0.0:*                   LISTEN      25710/named
tcp        0      0 0.0.0.0:21                  0.0.0.0:*                   LISTEN      16363/vsftpd
tcp        0      0 0.0.0.0:34007               0.0.0.0:*                   LISTEN      3269/LBstatd
tcp        0      0 127.0.0.1:953               0.0.0.0:*                   LISTEN      25710/named
tcp        0      0 0.0.0.0:34010               0.0.0.0:*                   LISTEN      3269/LBstatd
tcp        0      0 0.0.0.0:34011               0.0.0.0:*                   LISTEN      3269/LBstatd
tcp        0      0 yyy.yyy.yyy.yyy:411              0.0.0.0:*                   LISTEN      6464/verlihub
tcp        0      0 :::80                       :::*                        LISTEN      4570/httpd
tcp        0      0 :::22                       :::*                        LISTEN      29467/sshd
tcp        0      0 ::1:953                     :::*                        LISTEN      25710/named
tcp        0      0 :::443                      :::*                        LISTEN      4570/httpd
udp        0      0 0.0.0.0:54670               0.0.0.0:*                               25710/named
udp        0      0 0.0.0.0:1812                0.0.0.0:*                               4072/LBircd
udp        0      0 0.0.0.0:1813                0.0.0.0:*                               4073/LBircd
udp        0      0 0.0.0.0:54177               0.0.0.0:*                               25710/named
udp        0      0 0.0.0.0:3362                0.0.0.0:*                               -
udp        0      0 0.0.0.0:64688               0.0.0.0:*                               25710/named
udp        0      0 0.0.0.0:56625               0.0.0.0:*                               25710/named
udp        0      0 xxx.xxx.xxx.xxx:53          0.0.0.0:*                               25710/named
udp        0      0 yyy.yyy.yyy.yyy:53               0.0.0.0:*                               25710/named
udp        0      0 0.0.0.0:19013               0.0.0.0:*                               25710/named
udp        0      0 0.0.0.0:69                  0.0.0.0:*                               3068/xinetd
udp        0      0 0.0.0.0:47944               0.0.0.0:*                               25710/named
udp        0      0 0.0.0.0:845                 0.0.0.0:*                               2789/rpc.statd
udp        0      0 0.0.0.0:848                 0.0.0.0:*                               2789/rpc.statd
udp        0      0 0.0.0.0:22097               0.0.0.0:*                               25710/named
udp        0      0 0.0.0.0:1234                0.0.0.0:*                               29343/LBccd
udp        0      0 0.0.0.0:61909               0.0.0.0:*                               25710/named
udp        0      0 0.0.0.0:34008               0.0.0.0:*                               3956/LBarcd
udp        0      0 0.0.0.0:34009               0.0.0.0:*                               3955/LBarcd
udp        0      0 0.0.0.0:14814               0.0.0.0:*                               25710/named
udp        0      0 0.0.0.0:50788               0.0.0.0:*                               25710/named
udp        0      0 0.0.0.0:55913               0.0.0.0:*                               25710/named
udp        0      0 0.0.0.0:56429               0.0.0.0:*                               25710/named
udp        0      0 0.0.0.0:111                 0.0.0.0:*                               2766/portmap
udp        0      0 0.0.0.0:27129               0.0.0.0:*                               -
udp        0      0 0.0.0.0:25467               0.0.0.0:*                               25710/named
udp        0      0 :::56626                    :::*                                    25710/named
Active UNIX domain sockets (only servers)
Proto RefCnt Flags       Type       State         I-Node PID/Program name    Path
unix  2      [ ACC ]     STREAM     LISTENING     8309   3322/xfs            /tmp/.font-unix/fs7100
unix  2      [ ACC ]     STREAM     LISTENING     439872643 24442/gam_server    @/tmp/fam-root-
unix  2      [ ACC ]     STREAM     LISTENING     6841   2867/dbus-daemon    /var/run/dbus/system_bus_socket
unix  2      [ ACC ]     STREAM     LISTENING     7137   3025/acpid          /var/run/acpid.socket
unix  2      [ ACC ]     STREAM     LISTENING     311475 5129/mysqld         /var/lib/mysql/mysql.sock
unix  2      [ ACC ]     STREAM     LISTENING     244076 4274/hald           @/var/run/hald/dbus-898AKS6yf5
unix  2      [ ACC ]     STREAM     LISTENING     7582   3197/gpm            /dev/gpmctl
unix  2      [ ACC ]     STREAM     LISTENING     244075 4274/hald           @/var/run/hald/dbus-o4jApRGxG3

Здесь ^^ можно увидеть некие левые процессы с именем "-". Как узнать что это? Они скоротечны и засечь можно не всегда. Почему named слушает так много портов? Что еще здесь есть криминального?

Заранее спасибо.

#37364

поменяй все пароли всех пользователей, удостоверься что на ftp закрыт доступ анонимусам, а лучше вообще его выключи до окончания разбирательства.
проверь права доступа на все папки где лежит сайт.

#37369

можно добавить:
либо злоумышленник заимел доступ к шеллу, либо эксплуатирует дыру в php движку.
diff движка что взяли у программиста с нынешним состоянием, если дыра в движке (а может и бекдор =)) карайте анально программера
ну а ежели подобрали пароль к шеллу.. увольтесь?

#37372

Хозяин у появляющихся файлов - root, имеет ли смысл менять пароли у остальных пользователей?
ftp прибил пока
права 755, с меньшими сайт не работает.

Кстати, есть свежие левые файлы не только в папке сайта, но и выше.

system-root написал:
можно добавить:
либо злоумышленник заимел доступ к шеллу, либо эксплуатирует дыру в php движку.
diff движка что взяли у программиста с нынешним состоянием, если дыра в движке (а может и бекдор =)) карайте анально программера
ну а ежели подобрали пароль к шеллу.. увольтесь?

пароль к шеллу = пароль root? он вида bh9BmH8n и после этого менялся.
как выявить дыру в php? Как выявить бэкдор?
Сайт куплен два года назад, претензии поздновато предъявлять, хотя если окажется так, то антирекламу фирме сделаю.

#37374
aelfwine написал:
Сайт куплен два года назад, претензии поздновато предъявлять, хотя если окажется так, то антирекламу фирме сделаю.

Однозначно связывайтесь с теми кто делал сайт. Пока лучше без претензий, а с просьбой прояснить ситуацию. Ни одной уважающей себя фирме такие проблемы ник чему, наверняка помогут разобраться. Как минимум выясните что сайт не при чём.

#37376

А вот еще: один из этих левых файлов удалить не могу.
rm -rf .p
rm: невозможно удалить `.p/p.php': Отказано в доступе

Хотя и могу удалить содержимое этого файла. Остальные файлы, в т.ч. позже созданные, удаляются без проблем.

#37377

перезапиши его из /dev/random :)

#37378

Вот еще что сделал:
Сделал чтоб сайт не открывался по вводу ip сервера, ибо вспомнил что в абузах ссылки были именно вида *ip_сервера*/*путь_к_файлу*
Сейчас по умолчанию открывается моя страничка хотящая логин/пароль.

#37381
aelfwine написал:
А вот еще: один из этих левых файлов удалить не могу.
rm -rf .p
rm: невозможно удалить `.p/p.php': Отказано в доступе

измените права доступа (разрешите модификацию каталога .p/) даже рут не может менять файлы под запретом (за то может снять запрет).

aelfwine написал:
пароль к шеллу = пароль root? он вида bh9BmH8n и после этого менялся.

и ещё раз смените.

aelfwine написал:
Сайт куплен два года назад, претензии поздновато предъявлять, хотя если окажется так, то антирекламу фирме сделаю.

зачем антирекламу? антирекламу делайте тогда(если), когда вас там грубо пошлют

#37384

Что интересно - эти левые файлы и папки не удалял, но перемещал в другое место, не видное из интернета. Удалили.

drBatty написал:
[quote=aelfwine]А вот еще: один из этих левых файлов удалить не могу.
rm -rf .p
rm: невозможно удалить `.p/p.php': Отказано в доступе

измените права доступа (разрешите модификацию каталога .p/) даже рут не может менять файлы под запретом (за то может снять запрет).
[/quote]

chmod 777 .p
chmod: изменение прав доступа для `.p': Операция не позволяется

drBatty написал:

[quote=aelfwine]Сайт куплен два года назад, претензии поздновато предъявлять, хотя если окажется так, то антирекламу фирме сделаю.

зачем антирекламу? антирекламу делайте тогда(если), когда вас там грубо пошлют
[/quote]
да-да, пока естественно до выяснения изначальной причины ничего такого. Написал что в случае подтверждения - это единственное средство.

#37420

aelfwine,

Loky написал:
поменяй все пароли всех пользователей

Следовали этой рекомендации? на 2.6.18 ядро можно найти эксплоит повышающий привилегии до рутовых.

Также интересно будет почитать записи в журнале /var/log/auth.log примерно в то время, когда были созданы файлы. Раз они появляются сами, то наверняка злоумышленник не сам их раскладывает, а доверил все скрипту. Значит по времени разница между входом и созданием файлов может быть небольшой.

Еще проверться утилитами rkhunter и chkrootkit.

#37464

elve, нет, всем пароли пока не поменял.
В логах авторизации левого нет ничего, это первое куда смотрел, только мои логины, и логины сотрудников, которые легко отслеживаются.
В посте №10 показал случай что человек там руками тоже ползает, если часть файлов - удалены.

В первом посте привет список процессов слушающих порты, этот список создан после того как поубивал процессы, которые я посчитал ненужными. Был там squid, который судя по логам поставили месяц назад (не я), также по логам видно что он активно использовался как прокси.

утилиты поищу, да.

#37488
aelfwine написал:
chmod 777 .p
chmod: изменение прав доступа для `.p': Операция не позволяется

вот тут даже и не знаю. может ещё какие атрибуты? что пишет stat и lsattr ?

aelfwine написал:
В логах авторизации левого нет ничего, это первое куда смотрел, только мои логины, и логины сотрудников, которые легко отслеживаются.

злоумышленник легко мог и подчистить за собой логи - я это могу сделать одной простой командой :)

aelfwine написал:
утилиты поищу, да.

:O я проверяю при любом подозрении, и просто от нефиг делать...

#37504

Результаты chkrootkit, оставлено только заслуживающее внимания, остальное "nothing found" и "not infected"

text

Searching for suspect PHP files...
/tmp/bb/send.php

это уже от меня: cat /tmp/bb/send.php <?php include("ini.inc"); $mail_header = "From: PromoBBVA@Premio-BBVAnetOFFice.net\n"; $mail_header .= "Content-Type: text/html\n"; $subject="Promo - BBVA net OFFICE!"; $body=loadini("test.htm"); if (!($fp = fopen("list.txt", "r"))) exit("Unable to open $listFile."); $i=0; print "Start time is "; print date("Y:m:d H:i"); print "\n"; while (!feof($fp)) { fscanf($fp, "%s", $name); $i++; mail($name, $subject, $body, $mail_header); } print "End time is "; print date("Y:m:d H:i"); print "\n"; print "$i"; print "emails sent."; print"\n"; ?>

Результаты rkhunter

text

cat /var/log/rkhunter.log | grep Warn
[19:17:28] Warning: Checking for prerequisites               [ Warning ]
[19:17:28] Warning: WARNING! It is the users responsibility to ensure that when the '--propupd' option
[19:17:33] /usr/bin/GET                                      [ Warning ]
[19:17:33] Warning: The command '/usr/bin/GET' has been replaced by a script: /usr/bin/GET: perl script text executable
[19:17:33] /usr/bin/groups                                   [ Warning ]
[19:17:33] Warning: The command '/usr/bin/groups' has been replaced by a script: /usr/bin/groups: Bourne shell script text executable
[19:17:33] /usr/bin/ldd                                      [ Warning ]
[19:17:33] Warning: The command '/usr/bin/ldd' has been replaced by a script: /usr/bin/ldd: Bourne shell script text executable
[19:17:36] /usr/bin/whatis                                   [ Warning ]
[19:17:36] Warning: The command '/usr/bin/whatis' has been replaced by a script: /usr/bin/whatis: Bourne shell script text executable
[19:17:37] /sbin/ifdown                                      [ Warning ]
[19:17:38] Warning: The command '/sbin/ifdown' has been replaced by a script: /sbin/ifdown: Bourne-Again shell script text executable
[19:17:38] /sbin/ifup                                        [ Warning ]
[19:17:38] Warning: The command '/sbin/ifup' has been replaced by a script: /sbin/ifup: Bourne-Again shell script text executable
[19:18:44]     Checking '/etc/xinetd.d/tftp' for enabled services [ Warning ]
[19:18:44]   Checking for enabled xinetd services            [ Warning ]
[19:18:44] Warning: Found enabled xinetd service: /etc/xinetd.d/tftp
[19:20:43]   Checking if SSH root access is allowed          [ Warning ]
[19:20:43] Warning: The SSH configuration option 'PermitRootLogin' has not been set.
[19:20:43]   Checking for hidden files and directories       [ Warning ]
[19:20:43] Warning: Hidden directory found: /etc/.java
[19:20:43] Warning: Hidden directory found: /dev/.udev
[19:20:43] Warning: Hidden file found: /usr/share/man/man1/..1.gz: gzip compressed data, from Unix, max compression
[19:20:57]   Checking version of Bind DNS                    [ Warning ]
[19:20:57] Warning: Application 'named', version '9.3.4-P1', is out of date, and possibly a security risk.
[19:20:57]   Checking version of OpenSSL                     [ Warning ]
[19:20:57] Warning: Application 'openssl', version '0.9.8e', is out of date, and possibly a security risk.
[19:20:57]   Checking version of ProFTPd                     [ Warning ]
[19:20:57] Warning: Application 'proftpd', version '1.3.1', is out of date, and possibly a security risk.
[19:20:57]   Checking version of OpenSSH                     [ Warning ]
[19:20:57] Warning: Application 'sshd', version '4.3p2', is out of date, and possibly a security risk.
drBatty написал:
[quote=aelfwine]chmod 777 .p
chmod: изменение прав доступа для `.p': Операция не позволяется

вот тут даже и не знаю. может ещё какие атрибуты? что пишет stat и lsattr ?
[/quote]
stat p.php
File: `p.php'
Size: 0 Blocks: 0 IO Block: 4096 пустой обычный файл
Device: 801h/2049d Inode: 124682651 Links: 1
Access: (0777/-rwxrwxrwx) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2010-05-04 19:42:41.000000000 +0400
Modify: 2010-05-04 13:26:47.000000000 +0400
Change: 2010-05-04 13:26:47.000000000 +0400

lsattr p.php
------------- p.php

#37508

aelfwine, жуть какая... может забекапить данные, и всё с чистого листа?...

aelfwine написал:
stat p.php

а что в каталоге с этим файлом? в .p/

*точнее, что с правами на этот каталог?

#37511
drBatty написал:
и всё с чистого листа?...

дык его завтра опять ломанут. пусть лучше на курсы RHL от предприятия пойдет, а пока отобрать пропуск в серверную..

#37522
system-root написал:
дык его завтра опять ломанут. пусть лучше на курсы RHL от предприятия пойдет, а пока отобрать пропуск в серверную..

жестоко... может и не ломанут так сразу...

aelfwine, забыл сказать: удаление и создание файлов не зависит от прав на файл - что-бы удалить файл, достаточно права модификации каталога (в котором этот файл).

И ещё: враг может изменить любой файл, даже не имея права этого делать - достаточно сделать изменённую копию этого файла там-же, удалить исходный, и установить имя и права на копию как у исходного.

Да и вообще враг может многое... А в вашем случае - всё, что пожелает. Даже если вы все пароли поменяете :(

#37534
drBatty написал:
aelfwine, жуть какая... может забекапить данные, и всё с чистого листа?...

Нет, там критичные для конторы сервисы, с чистого листа не проще.

drBatty написал:

[quote=aelfwine]stat p.php

а что в каталоге с этим файлом? в .p/

*точнее, что с правами на этот каталог?[/quote]
stat .p
File: `.p'
Size: 4096 Blocks: 8 IO Block: 4096 Каталог
Device: 801h/2049d Inode: 41877507 Links: 2
Access: (0755/drwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2010-05-04 19:44:03.000000000 +0400
Modify: 2010-05-03 11:43:47.000000000 +0400
Change: 2010-05-03 11:44:00.000000000 +0400

system-root написал:
[quote=drBatty]и всё с чистого листа?...

дык его завтра опять ломанут. пусть лучше на курсы RHL от предприятия пойдет, а пока отобрать пропуск в серверную..[/quote]
По делу есть что сказать? От вас по сути не услышал ничего, от других - услышал. Постойте в стороне пока люди мне дело говорят.

#37540
aelfwine написал:
Device: 801h/2049d Inode: 41877507 Links: 2
Access: (0755/drwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)

значит рут может там удалять файлы (и только он). если конечно lsattr чего не запретит...

aelfwine написал:
это уже от меня: cat /tmp/bb/send.php

это ваш спамо-рассыльщик? или вам его внедрили? и откуда он в /tmp?

aelfwine написал:
Warning: The SSH configuration option 'PermitRootLogin' has not been set.

вот это ещё закройте. ну и софт обновите... а что делать с целой кучей непонятных сервисов - не знаю...

#37543
drBatty написал:
[quote=aelfwine]Device: 801h/2049d Inode: 41877507 Links: 2
Access: (0755/drwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)

значит рут может там удалять файлы (и только он). если конечно lsattr чего не запретит...
[/quote]
lsattr .p
------------- .p/p.php

drBatty написал:

[quote=aelfwine]это уже от меня: cat /tmp/bb/send.php

это ваш спамо-рассыльщик? или вам его внедрили? и откуда он в /tmp?
[/quote]

Внедрили. Как - этим топиком и пытаюсь узнать.

drBatty написал:

[quote=aelfwine]Warning: The SSH configuration option 'PermitRootLogin' has not been set.

вот это ещё закройте. ну и софт обновите... а что делать с целой кучей непонятных сервисов - не знаю...
[/quote]

Угу, займусь обновлением софта. А какие сервисы из перечисленного неизвестное? Вроде стандартные...

Войдите или зарегистрируйтесь, чтобы ответить.