Коллектив авторов - Защита от хакеров корпоративных сетей
На момент своего опубликования программа Juggernaut была пионерской работой, у которой не было аналогов. Даже сегодня лишь немногие инструментальные средства пытаются перехватывать сессии так, как это делает программа Juggernaut.
Программа Juggernaut имеет два режима работы. Первый предназначен для работы в качестве одного из вариантов модуля проверки текущего состояния в сети, который реагирует на определенные биты в передаваемых данных. Второй режим работы называется Normal – стандартный режим работы программы. Он будет рассмотрен позднее. Ниже приведена предъявляемая в оперативном режиме подсказка команд программы:
[[email protected] Juggernaut]# ./juggernaut -h
Usage: ./juggernaut [-h] [-s TOKEN [-e xx] ] [-v] [-t xx]
-h terse help
-H expanded help for those “specially challanged”
people...
-s dedicated sniffing (bloodhound) mode, in which TOKEN
is found enticing
-e enticement factor (defaults to 16)
-v decrease verbosity (don’t do this)
-V version information
-t xx network read timeout in seconds (defaults to 10)
Invoked without arguments, Juggernaut starts in “normal”
mode.Показанный фрагмент – это короткая справка. Расширенная подсказка содержит более детальные объяснения, а также несколько примеров. Как можно увидеть из приведенной подсказки, у этой программы есть опции. Если программу запустить с опцией – s (специализированный режим работы программы, при котором проверяется текущее состояние сети с поиском заданных символов), то она будет работать как модуль проверки и регистрации текущего состояния сети. Например, можно задать программе символы, которые следует найти в паролях, определяемых ключевыми словами password и Password, и она будет регистрировать найденные пакеты согласно заданным символам. Количество зарегистрированных ее пакетов называется показателем захвата (enticement factor). По умолчанию эта величина равна 16, то есть программа по умолчанию регистрирует 16 найденных пакетов. При желании эту величину можно увеличить или уменьшить. Пока в исходном тексте программы не будет изменено имя файла, захваченные пакеты будут регистрироваться в файле, который называется juggernaut.log.snif. Этот файл расположен в директории, из которой была вызвана программа. Запуск программы без задания опций в командной строке приведет к запуску программы в стандартном режиме работы Normal. При этом на экран будет выведен список опций работы программы, как это показано ниже:
Juggernaut
+–+
?) Help
0) Program information
1) Connection database
2) Spy on a connection
3) Reset a connection
4) Automated connection reset daemon
5) Simplex connection hijack
6) Interactive connection hijack
7) Packet assembly module
8) Souper sekret option number eight
9) Step Down(Запуск программы без задания опций в командной строке приведет к отображению начального экрана программы с приведенной выше информацией. При указании восьмой опции ничего не делается.) При выборе первой опции, «База данных соединений» (Connection database), пользователю программы предъявляется список TCP-соединений, которые «увидела» программа. Ниже приведен пример Telnet-соединения:
Current Connection Database:
–
ref # source target
(1) 10.0.0.5 [2211] –> 10.0.0.10 [23]
–
Database is 0.20% to capacity.
[c,q] >Указанная внизу экрана опция q, как и в большинстве других мест программы, возвращает пользователя к пункту 9 основного меню. Опция c очищает базу данных соединений. Для работы ниже перечисленных функций необходимо, чтобы в базе данных соединений была записана какая-то информация о соединениях. Поэтому функции прослушивания или перехвата сессии не будут работать до тех пор, пока программа работает с выбранной первой опцией. Вторая опция, «Шпионить за соединением» (Spy on a connection), предназначена для снифинга. Выбор этой опции позволяет следить за соединениями, представленными в списке подключений. Следующий пример взят из того же Telnet-соединения, что и в предыдущем случае.
Current Connection Database:
–
ref # source target
(1) 10.0.0.5 [2211] –> 10.0.0.10 [23]
–
Choose a connection [q] > 1
Do you wish to log to a file as well? [y/N] > y
Spying on connection, hit “ctrl-c” when done.
Spying on connection: 10.0.0.5 [2211] –> 10.0.0.10 [23]C
Disk Usage (Jul 3 06:01): Mail – 1705 kilobytes
File Repository – 162 kilobytes
Fax Repository – 1 kilobytes
109 Message(s) In New Mail
[TECNET:Main menu]?Как можно увидеть, у пользователя программы появилась возможность занести перехваченные данные в журнал регистрации. Опция 5 – это «Односторонний перехват соединения» (Simplex connection hijack). При выборе данной опции программа перехватывает соединение и посылает команду без отображения результатов на экране злоумышленника. Например:
Current Connection Database:
–
ref # source target
(1) 10.0.0.5 [2211] –> 10.0.0.10 [23]
–
Choose a connection [q] > 1
Enter the command string you wish executed [q] >Напоследок рассмотрим опцию 6 «Интерактивный перехват соединения» (Interactive connection hijack). По своим функциям эта опция аналогична опции 5 («Односторонний перехват соединения»), но при ее выборе появляется возможность просмотреть результаты работы программы точно так же, как и при выборе опции 2 («Шпионить за соединением»). Вполне вероятно, что в большинстве случаев злоумышленник при перехвате соединения захочет воспользоваться именно этой опцией, для того чтобы иметь возможность видеть происходящее перед взломом. При этом если злоумышленник хочет работать скрытно, то вряд ли он будет использовать команду «echo + + > /.rhosts». С другой стороны, если пользователь в какой-то момент производит действия, приводящие к выводу большого количества данных, то злоумышленник, возможно, предпочтет работать вслепую, для того чтобы не загромождать свой экран выводом посторонних данных. Вот что может увидеть пользователь при выборе опции 6:
Current Connection Database:
–
ref # source target
(1) 10.0.0.5 [2211] –> 10.0.0.10 [23]
–
Choose a connection [q] > 1
Spying on connection, hit “ctrl-c” when you want to hijack.
NOTE: This will cause an ACK storm and desynch the client
until the connection is RST.
Spying on connection: 10.0.0.5 [2211] –> 10.0.0.10 [23]Автор программы Juggernaut больше не поддерживает и не улучшает ее. Создается впечатление, что никто не делает этого, по крайней мере открыто. Автор программы Juggernaut написал усовершенствованную версию Juggernaut++ и однажды показал, как выглядят экранные формы программы, но он никогда не выпускал версию этой программ для всеобщего использования.
К моменту написания книги программе Juggernaut исполнилось уже несколько лет. Это большой промежуток времени для инструментальных средств обеспечения безопасности, а особенно для программы, которая активно не разрабатывается. У программы есть некоторые ограничения. Например, нельзя осуществить повторную синхронизацию соединения, а также невозможно работать с соединениями, в которых участвуют хосты с запущенной на них программой Juggernaut. Тем не менее эта программа будет работать на любых TCP-портах. (Другие инструментальные средства работают с Telnet или аналогичными протоколами.) Программа Juggernaut уже не является лучшей в этом классе программ, но тем не менее с познавательной точки зрения до сих пор очень полезно прочитать о проведенных автором программы Juggernaut исследованиях. По этому поводу прочтите оригинальную статью в журнале «Phrack».
Программа Hunt
Программа Hunt была создана Павлом Краузом (Pavel Krauz). Ее текущая версия 1.5. Складывается впечатление, что на момент выхода книги активная разработка программы не велась. Версия программы 1.5 была выпущена 30 мая 2000 года. Ее можно найти по адресу: http://lin.fsid.cvut.cz/~kra/index.html#HUNT.
Hunt является более амбициозным проектом, нежели Juggernaut. По крайней мере, он развился в такой проект. В соответствии с файлом readme, поставляемым вместе с дистрибутивом, одной из причин разработки Краузом программы Hunt было желание реализовать некоторые возможности, которые не были доступны в Juggernaut.
Как и в программе Juggernaut, у программы Hunt есть режимы анализа сетевого трафика (снифинга) и перехвата сессий. В отличие от Juggernaut, в программе Hunt реализованы средства спуфинга при работе с протоколом разрешения адресов ARP. С их помощью можно переслать через атакующую машину данные, посылаемые машиной жертвой, а также избежать перегрузки сети уведомлениями ACK (ACK storm), обычно сопутствующей перехвату TCP сессии. Вот как выглядит программа Hunt при запуске:/*
* hunt 1.5
* multipurpose connection intruder / sniffer for Linux
* (c) 1998-2000 by kra
*/
starting hunt
– Main Menu – rcvpkt 0, 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 настроена на Telnet– и rlogin-соединения, но она написана таким образом, что можно легко добавить поддержку других типов соединений. Для этого в расположенном в файле hunt.c коде инициализации предусмотрена следующая строка:
add telnet rlogin policy();
Этафункция находится в файле addpolicy.c и выглядит следующим образом:
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);