div.main {margin-left: 20pt; margin-right: 20pt}Взлом HTTP паролей с помощью программы Xavior.
родукт, о котором пойдёт речь в данном обзоре,
является довольно заурядным сниффером. Зачем же я буду описывать
продукт, подобных которому последнее время появилось очень много?
Ответ довольно прост: редакция получает очень много почты с просьбой
разъяснить на примере, что такое сниффер и какие функции он
выполняет.
Продукт, о
котором сейчас пойдёт речь, доступен для свободного скачивания со страницы
разработчика, и предназначен для платформ win95/98/NT. Как и
любой сниффер, программа переводит сетевую карту в режим promiscuous
(в таком режиме карта перехватывает весь внутрисегментный
ethernet-траффик, вне зависимости от того, какому mac-адресу
предназначен проходящий пакет). Понятное дело, что вручную разобрать
результат захвата всей каши, что творится в ethernet-сегменте, будет
весьма нелегко, поэтому встроенные средства фильтрации разбивают
пойманные пакеты по типам, фильтруют раздел с данными, сортируют
траффик по ip-адресам машин, либо по протоколам, которые указаны в
captured пакете.
Для чего
нужен перехват траффика? Ответ на этот вопрос двояк. Бесспорно, при
помощи таких средств (снифферов) можно очень легко обнаружить
ведущуюся на соседний хост атаку (хотя бы поставить фильтр-триггер
на содержание в tcp-пакетах слов AZZ, select, msadcs.dll для
обнаружения атак на NT при помощи эксплоита msadc2.pl). Но
большинство программ и сервисов (icq, telnet, ftp, http auth basic,
pop3 и т.д.) пересылают пароль и логин пользователя открытым текстом
(без всякой кодировки и шифровки), и работающий сниффер без труда
позволит перехватывать и такие сессии, посему снифферы с момента
появления накрепко попали в разряд "information warfare", т.е.
программного обеспечения, используемого хакерами в своей
работе.
Я не собираюсь
рассказывать здесь о всех функциях и особенностях данной программы
(spynet), а на конкретных примерах продемонстрирую некоторые
возможности перехвата данных, передающихся plaintextом. На
приведённой иллюстрации (рис 1) показан пример того, как сообщение
ICQ, посланное машиной с IP-адресом 24.28.73.321 cтало достоянием
общественности.
В программу встроен
нехитрый reverse=механизм, который позволяет из малоосмысленной для
неопытного взгляда каши данных восстановить прошедшие telnet, pop3 и
т.д. сессии. Например, на втором скриншоте приведён пример того, как
сниффер по захваченному траффику восстановил pop3-сессию с сервером
и показал пароль и логин пользователя.
Как вы видите,
автор не пожалел времени на написание процедур декодирования
захвата. Возможно даже полностью реконструировать web-страницы,
которые посещал пользователь из ethernet-сегмента, в котором
работает сниффер, на screenshot'e - фрагмент почтового ящика на
службе hotmail. Итак, можно попытаться сделать выводы. Как вы
видите, сниффер не является ни крякером интернета, ни "программой
для взлома провайдера", и возможности его действия ограничиваются
теми роутерами, между которыми вы зажаты ;) Но и то, что он может -
пока ещё сервисов, использующих plaintext при авторизации огромное
множество - впечатляет на первый взгляд.
Не стоит
думать, что сниффер - это инструмент, для написания которого
требуется быть большим светилом в программировании сетевых
приложений. Исходный текст небольшого сниффера для *nix прилагается
- как видите, он очень маленький и простой.
/* cниффер пишет на stdout всё, что захватывает */
#include <sys/socket.h>
#include <netinet/in.h>
#include <net/if.h>
#include <unistd.h>
#include <signal.h>
#include <stdio.h>
static volatile int done; void handler(int signum) { done = 1; } int main(int
argc, char **argv) { char buff[0x10000]; struct ifreq ifr; int s, n; if (argc
< 2) { fprintf(stderr, "Usage: %s <interface>
n", argv[0]); return 1; } s = socket(PF_INET, SOCK_PACKET, htons(0x0003));
if (s == -1) { perror("socket"); return 1; } strcpy(ifr.ifr_name,
argv[1]); if (ioctl(s, SIOCGIFFLAGS, &ifr) < 0) {
perror("ioctl(SIOCGIFFLAGS)"); return 1; } ifr.ifr_flags |=
IFF_PROMISC; // установка // режима перехвата // на
сетевой карте. if (ioctl(s, SIOCSIFFLAGS, &ifr) < 0) {
perror("ioctl(SIOCGIFFLAGS)"); return 1; } signal(SIGINT, handler);
puts("starting capturing:n"); fflush(stdout); for (done = 0; !done; )
{ n = read(s, buff, sizeof(buff)); //cчитываем //траффик в
буфер if ( n!=-1 ) write(STDOUT_FILENO, buff, n); } ifr.ifr_flags &= ~IFF_PROMISC;
if (ioctl(s, SIOCSIFFLAGS, &ifr) < 0) { perror("ioctl(SIOCGIFFLAGS)");
return 1; } close(s); printf("Finishedn"); return 0; }
Под *nix-системы существует большое
количество снифферов, которые работают скрытно - маскируясь, к
примеру, под named, и используются хакером после получения root'a на
какой-либо машине в ethernet-сегменте для лёгкого получения контроля
над другими. Для предотвращения подобных сценаривев как раз и
используется ssh, средства VPN, осуществляющие шифровку
траффика.
Автор - duke
|