Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР #69, СЕНТЯБРЬ 2004 г.

Вооружись своим руткитом

Докучаев Дмитрий aka Forb

Xakep, номер #069, стр. 069-064-4


Встречаются также шедевры, выполненные в виде sh-скрипта. Сценарий запускает бинарник ps и на лету фильтрует его вывод утилитой grep. Но такую простую подделку очень легко обнаружить.

Got root?

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

Бэкдор – составная часть твоего руткита

main() {

setuid(0);

setgid(0);

system("/usr/bin/traceroute6 xakep 0 0"); // traceroute6 – это логклинер, в моем случае vanish2 :).

system("/bin/bash");

}

Старайся указывать неприметное имя файла. Не думаю, что админ простит тебе суид на бинарнике /usr/bin/stdin и т.п. Я люблю называть подобный бэкдор именами traceroute6 или at, если файлов с такими именами не существует.

Комплектуем

Конечно, приведенный выше комплект нельзя назвать законченным. Например, я совсем ничего не сказал про патчинг coreutils (про бинарники du, ls и т.п.), а также про демоны sshd и syslogd. На мой взгляд, руководствуясь этой статьей, ты сможешь пропатчить остальные исходники самостоятельно. После того как ты создашь полноценный руткит, позаботься о грамотно написанном инсталляторе. Последний может выглядеть, как обычный sh- либо как продвинутый perl-скрипт. Это нужно только для удобства, представь: ты рутаешь сервер, а затем запускаешь всего один файл, и хакерские бинарники быстро копируются куда нужно. Надеюсь, я тебя убедил в том, что можно написать функциональный руткит без хорошего знания языка программирования. Поверь, это будет лучшим решением по сравнению с установкой публичного шпионского пакета. По крайней мере, никакой chrootkit тебя не обнаружит. Доказано Zanussi :).

Разбор полетов

Помимо вкусностей, данный руткит содержит и некоторые баги. Патч для iptables скрывает правила с определенными адресами, но, к сожалению, неправильно нумерует лист с рулесами. Что касается фикса к netstat’у, здесь тоже не обошлось без глюков: бинарник не фильтрует вывод инфы об udp-соединениях и открытых портах. При большом желании весь список неучтенных багов можно пофиксить, все зависит только от тебя. Кстати, описанный в февральском выпуске Х элитный бэкдор отлично уживается в комплекте с самопальными патчами.

Назад на стр. 069-064-3  Содержание  Вперед на стр. 069-064-5