A: Существует несколько способов заливки файлов через уязвимые скрипты. Даже если на сервере отсутствует wget, проверь наличие fetch или get. Можно использовать FTP-сценарий и вытянуть нужный файл через /usr/bin/ftp. При этом используй опцию –n, чтобы передать логин и пароль в одной строке. Сам сценарий запиши построчно в файл с помощью команды /bin/echo.
Q: Я коннекчусь к серверу через бэкдор, а затем запускаю логклинер. Процесс зачистки логов занимает около 5 минут, так как wtmp весит порядка 500 Мб. Можно ли как-нибудь ускорить очистку?
A: Ни в коем случае не удаляй /var/log/wtmp, так как администратор сразу почует неладное. Выбери другой логклинер. Дело в том, что логвайпер, который ты используешь, начинает искать записи с начала файла. Однако в сети много чистильщиков, которые ставят указатель в конец wtmp, а затем начинают поиск. Такой алгоритм используется, например, в утилите grlogwipe. Бьюсь об заклад, что ты юзаешь vanish2, так как именно он очищает wtmp с самого начала.
Q: Нашел старенький Linux в локальной сети. На сервере крутится DNS и больше ничего. У меня есть эксплоит для bind, но я не знаю его версию. Можно ли ее определить какой-нибудь утилитой?
A: Запусти утилиту dig с параметром «@адрес_сервера chaos txt version.bind», и увидишь версию сервера. Можно отфильтровать вывод по шаблону VERSION.BIND, тогда ответ займет всего одну строку. Набери man dig, и узнаешь, что еще можно сделать с помощью этой чудесной утилиты.
Q: Есть ли способ узнать, находится ли взломщик в консоли, если он установил руткит и логклинер?
A: Есть один верный способ, определяющий левых юзеров даже после зачистки логов. Выполни команду ls –la /dev/pts и сравни число открытых псевдоустройств с числом активных юзеров. Если ты обнаружишь пару лишних псевдотерминалов, знай, что на твоей машине хостится хакер :). Правда, некоторые процессы, например radius, берут для себя pts, но это исключение из правил.
Q: Посоветуй простой бэкдор, который бы удаленно открывал порт на взломанной через WWW машине.
A: Пожалуйста! Можешь воспользоваться моим любимым перловым бэкдором. Скрипт открывает порт 37900 и при подключении запускает /bin/sh в интерактивном режиме. Сценарий весит всего 317 байт, забирай его с моего сервера http://forb.convex.ru/bd.pl.
Глоссарий / Основные понятия по взлому *nix-систем
Докучаев Дмитрий aka Forb (forb@real.xakep.ru)
Бэкдор (backdoor) – небольшая программа, оставляющая лазейку для удачливого злоумышленика на взломанной им системе. Бэкдор может представлять собой уже скомпилированный файл или сценарий на подручном языке, например, на Perl. Как правило, бэкдор открывает порт на сервере и ожидает подключения. Если коннект произошел, запускается /bin/sh. Навороченные бэкдоры имеют возможность закрыть соединение по тайм-ауту в целях безопасности.
Руткит (rootkit) – комплект, предназначенный для сокрытия взломщиком своего пребывания на сервере. Благодаря установке руткита все действия хакера остаются засекреченными: открытые порты не светятся в netstat, /bin/ls не показывает определенные файлы, /bin/ps скрывает процессы и т.п. Если говорить о том, какими бывают руткиты, то можно выделить два вида: изготовленные в форме прекомпиленных бинарников либо изготовленные в форме ядерных модулей. Второй вариант предпочтительнее и безопаснее, ибо LKM подменяет системные вызовы, а затем стирает себя из таблицы загруженных модулей. Соответственно, все бинарники остаются старыми, а утилиты типа chkrootkit говорят, что система в полном порядке :) (это справедливо лишь для самых тривиальных утилит подобного рода – прим. AvaLANche'а).
Chkrootkit – специальная программа, позволяющая проверить систему на наличие установленного руткита. Прога поставляется с базой всех известных хакерских комплектов. По этой базе и ведется сканирование. Также chkrootkit обращает внимание на наличие сниферов и исследует MD5-сумму бинарных файлов. В случае ее изменения программа оповещает админа о возможном вторжении хакера.
Logwiper (logcleaner) – небольшая программа, позволяющая чистить системные журналы (логи). Обычно logwiper'ы создаются для бинарных логов (/var/log/wtmp, /var/run/utmp/, /var/log/lastlog), которые вычистить не так-то просто. Для обращения к этим логам нужно знать специальную структуру utmp, которая описана в хидере /usr/include/utmp.h. Именно поэтому большинство logwiper'ов написано на Си. В качестве примеров могу привести три хороших logcleaner'а: Vanish2, grlogwipe и Zap2.
Аккаунт (account) – учетная запись на сервере. Один из фактов взлома – получение валидного аккаунта. При этом слово «валидный» означает то, что юзер должен иметь хороший командный интерпретатор (/bin/sh, /bin/bash и т.д.) в качестве оболочки. В противном случае взломщику нет никакой выгоды от добытого аккаунта.