Пишем простой сниффер под windows

Обновлено: 02.07.2024

ВНИМАНИЕ! Данная статья написана только в ознакомительных целях для специалистов в области IT безопасности. Перехват трафика был на примере собственных устройств в личной локальной сети. Перехват и использование личных данных может караться законом, поэтому мы не призываем использовать данную статью во вред окружающих. Мир во всем мире, помогаем друг другу!

Всем привет! В статье мы поговорим про WiFi сниффер. Вообще данный тип программ предназначен исключительно для перехвата трафика в локальной сети. Далее без разницы как именно жертва подключена к маршрутизатору, по кабелю или по Wi-Fi. Хочу показать перехват трафика на примере интересной программы «Intercepter-NG». Почему я выбрал именно её? Дело в том, что это sniffer приложение написана специально для Windows имеет достаточно приветливый интерфейс и проста в использовании. Да и Linux есть не у всех.

Возможности Intercepter-NG

Как вы знаете, в локальной сети постоянно используется обмен данными между роутером и конечным клиентом. При желании эти данные можно перехватывать и использовать в своих целях. Например, можно перехватить куки, пароли или другие интересные данные. Происходит все очень просто – компьютер отправляет запрос в интернет и получает данные вместе с ответом от центрального шлюза или маршрутизатора.

Программа запускает определенный режим, в котором компьютер клиент начинает отправлять запросы с данными не на шлюз, а именно на устройство с программой. То есть можно сказать он путает роутер с компьютером злоумышленника. Данная атака ещё называется ARP спуфингом. Далее, со второго компа, все данные используются в свои целях.

Обычная атака

Wi-Fi Sniffer для Windows: перехват трафика, логинов, паролей, Cookies в локальной сети

Скачиваем архив с версией или «v». Далее устанавливать ничего не нужно и достаточно просто разархивировать содержимое.

  1. В зависимости от того как вы подключены к сети, в левом верхнем углу будет отображаться соответствующий значок – нажимаем по нему.

Wi-Fi Sniffer для Windows: перехват трафика, логинов, паролей, Cookies в локальной сети

  1. Нужно выбрать свой работающий сетевой модуль. Я выбрал с тем, у которого уже присвоен локальны IP, то есть мой IP адрес.

Wi-Fi Sniffer для Windows: перехват трафика, логинов, паролей, Cookies в локальной сети

  1. На пустой области нажимаем правой кнопочкой и далее запускаем «Smarty Scan».

Wi-Fi Sniffer для Windows: перехват трафика, логинов, паролей, Cookies в локальной сети

  1. Далее вы увидите список IP адресов, а также MAC и дополнительную информацию об устройствах в сети. Достаточно выбрать одну из целей атаки, нажать по ней и далее из списка выбрать «Add as Target», чтобы программа закрепила устройство. После этого нажимаем на кнопку запуска в правом верхнем углу окна.

Wi-Fi Sniffer для Windows: перехват трафика, логинов, паролей, Cookies в локальной сети

  1. Заходим в раздел «MiTM mode» и нажимаем на значок радиации.

Wi-Fi Sniffer для Windows: перехват трафика, логинов, паролей, Cookies в локальной сети

  1. Процесс запуска запущен, теперь, чтобы посмотреть логины и пароли – перейдите в третью вкладку.

Wi-Fi Sniffer для Windows: перехват трафика, логинов, паролей, Cookies в локальной сети

  1. На второй вкладке вы увидите все переданные данные.

Wi-Fi Sniffer для Windows: перехват трафика, логинов, паролей, Cookies в локальной сети

Как видите тут можно только увидеть и засечь перехваченные ключи и имена пользователей, а также те сайты, которые посетила цель.

Перехват Cookies

Все делается достаточно просто, после запуска обычной атаки переходим в третью вкладку, нажимаем правой кнопкой по свободному полю и выбираем «Show Cookies».

Wi-Fi Sniffer для Windows: перехват трафика, логинов, паролей, Cookies в локальной сети

Вы должны увидеть нужные Cookies. Использовать их очень просто – просто нажимаем по нужному сайту правой кнопочкой и далее выбираем «Open in browser». После этого откроется именно сайт с чужой учетной страницы.

Wi-Fi Sniffer для Windows: перехват трафика, логинов, паролей, Cookies в локальной сети

Получение логина и пароля

Скорее всего после запуска программы клиент уже будет сидеть в той или иной учетной записи. Но можно заставить его снова ввести логин и пароль. Так как куки сами по себе не вечные – то это вполне нормальная практика. Для этого используется программа «Cookie Killer». После запуска у клиента полностью удаляются старые куки и ему приходится вводить логин и пароль заново, вот тут и включается перехват. По этому поводу есть отдельная видео инструкция:

Как то раз озадачили меня проблемой контроля посещений пользователей ресурсов интернет, - кто, куда и сколько раз заходил. Статистика подробная была не нужна, достаточно было

Покупать и устанавливать ПО для данной задачи было не целесообразным, ввиду безлимитного подключения, - глав бух попался дотошный, и не согласился выделить денги. Поэтому пришлось набросать простенький сниффер своими руками. Для этого я использовал полюбившийся мне C++ Builder 6 Все переменные определены, можно инициализировать WinSock

SOCKET s;
char name[128];
HOSTENT* phe;
SOCKADDR_IN sa;
IN_ADDR sa1;
unsigned long flag = 1;

WSAStartup(MAKEWORD(2,2), &wsadata);
s = socket( AF_INET, SOCK_RAW, IPPROTO_IP );
gethostname(name, sizeof(name));
phe = gethostbyname( name );
ZeroMemory( &sa, sizeof(sa) );
sa.sin_family = AF_INET;
sa.sin_addr.s_addr = ((struct in_addr *)phe->h_addr_list[0])->s_addr;
bind(s, (SOCKADDR *)&sa, sizeof(SOCKADDR));

Если инициализация прошла успешно включаем promiscuous mode.
ioctlsocket(s, SIO_RCVALL, &flag);

Осталось организовать бесконечный цикл приёма IP пакетов

int i=0;
while( i )
int count;
count = recv( s, Buffer, sizeof(Buffer), 0 );


if( count >= sizeof(IPHeader) )
IPHeader* hdr = (IPHeader *)Buffer;
strcpy(src,"Пакет: ");
CharToOem(src,dest);
printf(dest);

printf("From ");
sa1.s_addr = hdr->iph_src;
printf(inet_ntoa(sa1));

преобразуем в понятный вид адрес получателя
printf(" To ");
sa1.s_addr = hdr->iph_dest;
printf(inet_ntoa(sa1));

if(hdr->iph_protocol == IPPROTO_TCP) printf("TCP ");
if(hdr->iph_protocol == IPPROTO_UDP) printf("UDP ");

printf("Size: ");
lowbyte = hdr->iph_length>>8;
hibyte = hdr->iph_length<<8;
hibyte = hibyte + lowbyte;
printf("%s",itoa(hibyte,"",10));

Попробуем для начала разобраться с самим понятием
снифер. Откуда оно взялось и что это такое? Разберемся с терминологией. Слово sniffer (дословно с английского это можно перевести как "нюхатель") в самом общем смысле суть некое прослушивающее устройство, внедренное в сеть для перехвата передаваемых по ней данных. В некоторой литературе и документации, а также в электронных словарях типа Lingvo, термин sniffer (network sniffer) отождествляется с такими понятиями, как "анализатор сетевого трафика", "анализатор пакетов", "анализатор протоколов", "сетевой анализатор". А в более узком смысле - это ПО, созданное для мониторинга сетевого потока и/или его анализа. Изначально такие программы задумывались в помощь системным администраторам для анализа проблем сети. Но
сниферы, как большинство программного обеспечения для сисадминов, широко распространились и среди хакеров. Ведь такие вещи можно использовать и для перехвата паролей и другой незашифрованной информации, приходящей из сети, и исходящей в Сеть.

Что мы будем делать

Попробуем разобрать один из способов работы
снифера и напишем такую программу сами. Это будет несложная программа без всяких драйверов, работающая в системе Windows 2000 и выше и требующая прав администратора. Такие ограничения, конечно, не вдохновляют, но все же если писать программу не для корыстных целей, то такие условия достаточно приемлемы. В дальнейшем будет ясно, ЧТО и КАК нас ограничивает. Для перехвата входящего трафика нашему
сниферу не потребуются внешний *.sys и *.dll файлы. Будут использоваться исключительно возможности операционной системы. Условимся сразу, что наш
снифер должен отлавливать приходящие пакеты с самым популярным набором протоколов - таких, как IP, TCP, UDP, ICMP, IGMP, GGP, IPv6, ICMPv6.

Пишем простой снифер

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


Теперь перейдем к рассмотрению кода. Полный исходник нашей программы и ее рабочий вариант можно скачать по ссылке в конце статьи. Напишем программу на Visual C++ 6.0. Выбор этой среды разработки обоснован тем, что она мне по душе.

Начинаем, естественно, с инициализации сокетов. Пусть это будет WinSock 2.2:

WSADATA wsadata;
WSAStartup(MAKEWORD(2, 2), &wsadata);

Затем создаем сам сокет:

SOCKET s = socket(AF_INET, SOCK_RAW, IPPROTO_IP);

Получаем имя нашего локального хоста и информацию о нем:

CHAR szHostName[16];
gethostname(szHostName, sizeof szHostName);

HOSTENT *phe = gethostbyname(szHostName);

SOCKADDR_IN sa;
ZeroMemory(&sa, sizeof sa);
sa.sin_family = AF_INET;
sa.sin_addr.s_addr = ((struct in_addr*)phe->h_addr_list[0])->s_addr;

Теперь необходимо привязать локальный адрес к нашему сокету:

И, наконец, самое главное - включение режима promiscuous, о котором мы говорили ранее:

DWORD flag = TRUE;
ioctlsocket(s, SIO_RCVALL, &flag);

Здесь мы включаем режим приема всех приходящих из Сети пакетов, указанием в качестве команды сокету SIO_RCVALL. Объявление этой константы находится в заголовочном файле Mstcpip.h. Переменная flag включает и выключает режим (TRUE/FALSE). В документации Microsoft про эту команду сказано следующее:

Enables a socket to receive all IP packets on the network. The socket handle passed to the WSAIoctl function must be of AF_INET address family, SOCK_RAW socket type, and IPPROTO_IP protocol. The socket also must be bound to an explicit local interface, which means that you cannot bind to
INADDR_ANY.

Что в буквальном смысле означает: команда SIO_RCVALL позволяет сокету принимать все IP пакеты из Сети. Дескриптор сокета (в нашем случае это s), переданный в функцию WSAIoctl (мы используем просто ioctlsocket), должен быть из семейства адресов AF_INET (internetwork), тип этого сокета должен быть SOCK_RAW и протокол - IPPROTO_IP. Сокет также должен быть связан с явным локальным интерфейсом, т.е. нельзя его связать просто с INADDR_ANY. Соблюдая эти правила, мы и создаем сокет с дескриптором s. Очень важно понимать, что Raw-сокеты могут принимать множество неожиданных пакетов.

Заметим, что режим promiscuous включается только при активной системной плате или при выходе в Internet. В общем, он возможен, только когда есть какая-либо Сеть, будь то Internet или LAN. Если мы вызовем функцию ioctlsocket с параметром SIO_RCVALL на машине без сети, то получим ошибку.

Теперь попытаемся понять, почему наш снифер требует привилегий администратора. Microsoft пишет по этому поводу следующее:

Setting this ioctl requires Administrator privilege on the local computer. SIO_RCVALL is available in Windows 2000 and later versions of Windows.

Теперь должно быть ясно, что явно требуются привилегии администратора. Также выясняется и то, что команда SIO_RCVALL доступна, начиная с Windows 2000. Если
снифер запустит не администратор, функция bind не даст привязать сокет к локальному адресу. Она возвратит ошибку WSAEACCES (10013 в десятичной системе - не достаточно прав). Причем в MSDN сказано, что можно поднять свои привилегии включением опции сокета SO_EXCLUSIVEADDRUSE:

Possible reason for the WSAEACCES error is that when the bind function is called (on Windows NT 4 SP4 or later), another application, service, or kernel mode driver is bound to the same address with exclusive access. Such exclusive access is a new feature of Windows NT 4 SP4 and later, and is implemented by using the SO_EXCLUSIVEADDRUSE option.

Т.е. мы могли бы просто вызвать setsockopt с параметром SO_EXCLUSIVEADDRUSE следующим образом:

BOOL bOptVal = TRUE;
setsockopt(s, SOL_SOCKET, SO_EXCLUSIVEADDRUSE, (char*)&bOptVal, sizeof(BOOL));

Но, поэкспериментировав с этим, я не пришел к положительному результату, т.е. по-прежнему нам требуются привилегии администратора.

Итак, режим promiscuous включен. Как же нам получить входящие IP пакеты? Очевидно, нужно постоянно вызывать функцию recv (в нашем случае) или WSARecv. Но создавать отдельный поток и делать бесконечный цикл было бы не очень удобно. Гораздо лучше для нас использовать асинхронные сокеты. Тем более, что у нас GUI-программа. Впишем следующий вызов функции WSAAsyncSelect в обработчик кнопки "Start" (эта кнопка не будет доступна, пока promiscuous mode не включен):

case IDC_BUTTON_START:
CHAR szFileName[_MAX_FNAME];

GetDlgItemText(hwndDlg, IDC_EDIT_LOG_FILENAME, szFileName, _MAX_FNAME);

hLogFile = CreateFile(szFileName, GENERIC_WRITE, FILE_SHARE_READ|FILE_SHARE_WRITE, NULL, OPEN_ALWAYS, 0, 0);
if (hLogFile == INVALID_HANDLE_VALUE) //.
> else //.

SetFilePointer(hLogFile, 0, NULL, FILE_END);

//Связываем событие FD_READ с окном
WSAAsyncSelect(s, hwndDlg, WM_RECV, FD_READ);

В MSDN про вызов функции recv написано следующее:

Once the socket is bound and the ioctl set, calls to the WSARecv or recv functions return IP datagrams passing through the given interface. Note that you must supply a sufficiently large buffer.

case WM_RECV:
if (WSAGETSELECTEVENT(lParam) == FD_READ) // Буфер размера 64 Кб
CHAR btBuffer[65536];

// Получаем входящие данные
if (recv(s, btBuffer, sizeof(btBuffer), 0) >= sizeof(IPHeader)) IPHeader* hdr = (IPHeader*)btBuffer;

// Вычисляем размер. Т.к. в сети принят прямой порядок байт,
// а не обратный, то придется поменять байты местами.
WORD size = (hdr->iph_length << 8) + (hdr->iph_length >> 8);

// Записываем данные
WriteFile(hLogFile, "--Packet begin--\r\n", 18, &dwWritten, 0);

if (IsDlgButtonChecked(hwndDlg, IDC_CHECK_OPTION_LOG_TARGET_IP) == TRUE) IN_ADDR ia;

ia.s_addr = hdr->iph_dest;
CHAR *pszTargetIP = inet_ntoa(ia);

WriteFile(hLogFile, "To: ", 4, &dwWritten, 0);
WriteFile(hLogFile, pszTargetIP, lstrlen(pszTargetIP), &dwWritten, 0);
WriteFile(hLogFile, "\r\n", 2, &dwWritten, 0);
>

if (IsDlgButtonChecked(hwndDlg, IDC_CHECK_OPTION_LOG_SENDER_IP) == TRUE) IN_ADDR ia;

ia.s_addr = hdr->iph_src;
CHAR *pszSourceIP = inet_ntoa(ia);

WriteFile(hLogFile, "From: ", 6, &dwWritten, 0);
WriteFile(hLogFile, pszSourceIP, lstrlen(pszSourceIP), &dwWritten, 0);
WriteFile(hLogFile, "\r\n", 2, &dwWritten, 0);
>

if (IsDlgButtonChecked(hwndDlg, IDC_CHECK_OPTION_WRITE_PROTO_NAME) == TRUE) WriteFile(hLogFile, "Protocol: ", 10, &dwWritten, 0);

switch (hdr->iph_protocol) case IPPROTO_IP:
WriteFile(hLogFile, "IP\r\n", 4, &dwWritten, 0);
break;

case IPPROTO_ICMP:
WriteFile(hLogFile, "ICMP\r\n", 6, &dwWritten, 0);
break;

case IPPROTO_IGMP:
WriteFile(hLogFile, "IGMP\r\n", 6, &dwWritten, 0);
break;

case IPPROTO_GGP:
WriteFile(hLogFile, "GGP\r\n", 5, &dwWritten, 0);
break;

case IPPROTO_TCP:
WriteFile(hLogFile, "TCP\r\n", 5, &dwWritten, 0);
break;

case IPPROTO_PUP:
WriteFile(hLogFile, "PUP\r\n", 5, &dwWritten, 0);
break;

case IPPROTO_UDP:
WriteFile(hLogFile, "UDP\r\n", 5, &dwWritten, 0);
break;

case IPPROTO_IDP:
WriteFile(hLogFile, "IDP\r\n", 5, &dwWritten, 0);
break;

case IPPROTO_IPV6:
WriteFile(hLogFile, "IPv6\r\n", 6, &dwWritten, 0);
break;

case IPPROTO_ND:
WriteFile(hLogFile, "ND\r\n", 4, &dwWritten, 0);
break;

case IPPROTO_ICLFXBM:
WriteFile(hLogFile, "ICLFXBM\r\n", 9, &dwWritten, 0);
break;

case IPPROTO_ICMPV6:
WriteFile(hLogFile, "ICMPv6\r\n", 8, &dwWritten, 0);
break;
>
>

if (IsDlgButtonChecked(hwndDlg, IDC_CHECK_OPTION_WRITE_PACKET_LEN) == TRUE) CHAR szTemp[17];

WriteFile(hLogFile, "Packet length: ", 15, &dwWritten, 0);
wsprintf(szTemp, "%d\r\n", size);
WriteFile(hLogFile, szTemp, lstrlen(szTemp), &dwWritten, 0);
>

SetDlgItemInt(hwndDlg, IDC_EDIT_LOG_SIZE, GetFileSize(hLogFile, NULL), FALSE);
>
>
return TRUE;

Здесь, помимо приема пакета, у нас реализован фильтр по протоколу. Нам не составило бы труда реализовать и фильтр по размеру пакета, по IP адресам, но реализацию этих фильтров я оставляю читателю. Заголовок пакета описывается структурой IPHeader. Она выглядит следующим образом:

//Структура заголовка IP-пакета
typedef struct IPHeader UCHAR iph_verlen; // версия и длина заголовка
UCHAR iph_tos; // тип сервиса
USHORT iph_length; // длина всего пакета
USHORT iph_id; // Идентификация
USHORT iph_offset; // флаги и смещения
UCHAR iph_ttl; // время жизни пакета
UCHAR iph_protocol; // протокол
USHORT iph_xsum; // контрольная сумма
ULONG iph_src; // IP-адрес отправителя
ULONG iph_dest; // IP-адрес назначения
>IPHeader;

Тестирование снифера

Теперь посмотрим на получившуюся программу в работе. Для тестирования ее работы я решил использовать подключение к интернету, а также виртуальную локальную сеть. Virtual LAN удобно использовать
когда нет реальной LAN, а работу своей программы необходимо протестировать. Виртуальную LAN довольно удобно настраивать с помощью VMware Workstation (у меня версия 5.5.0). Смоделируем локальную сеть путем установки на виртуальную машину системы Windows 2000 Pro. На хост-машине пусть будет Windows XP SP2. После настройки LAN менеджером виртуальных сетей в VMware, получаем локальную сеть из 2-х компьютеров.


Перед тестированием нужно обязательно не забыть выключить Firewall, т.к. он блокирует входящие пакеты. Убедиться в этом можно, пропинговав машины в обе стороны.


. и посмотрим в созданные нашим снифером логи:

Мы рассмотрели один из самых простых способов создания программ перехвата входящего трафика. Полученные в результате прочтения данной статьи знания можно использовать в различных целях, будь то тестирование своих сетевых программ, наблюдение за кем-либо или просто ради интереса. Теперь мы точно знаем, что Microsoft предоставляет возможности для создания программ данного типа, хотя и с урезанными привилегиями. Но в большинстве случаев этого бывает достаточно для достижения поставленных целей.

Этичный хакинг и тестирование на проникновение, информационная безопасность

Что такое Intercepter-NG

Intercepter-NG – это программа для выполнения атак человек-посередине. Имеется большое количество программ для таких атак, главной особенностью, выделяющей Intercepter-NG среди остальных, является то, что программа изначально была написана для Windows и прекрасно работает именно в этой операционной системе. Также к особенностям программы можно отнести графический интерфейс, в котором собраны многочисленные функции и опции, связанные с атакой человек-посередине, а также с некоторыми другими задачами пентестинга.

Благодаря графическому интерфейсу, использовать Intercepter-NG легко. Но большое количество опций и фрагментированная документация могут запутать начинающего пользователя. Надеюсь, что эта инструкция заполнит пробел. Это руководство написано для самых начинающих пользователей, возможно, даже не имеющих опыта работы с аналогичными утилитами в Linux.

Что может Intercepter-NG

Главная задача Intercepter-NG – выполнение атаки человек-посередине. В практическом смысле, атака человек-посередине (её ещё называют атакой посредника) заключается в возможности просматривать передаваемые другими пользователями данные в локальной сети. Среди этих данных могут быть логины и пароли от сайтов. Также передаваемые данные можно не только анализировать и сохранять, но и изменять.

Чтобы описать техническую суть этой атаки, представьте себе локальную сеть. Такой локальной сетью могут быть несколько компьютеров в вашей квартире, которые подключены к роутеру. При этом неважно, подключены они по проводу или по Wi-Fi. Роутер получает запросы от компьютеров, перенаправляет их, например, в Интернет, а полученные ответы возвращает обратно компьютерам, отправившим запросы. В данной ситуации роутер является шлюзом.

Благодаря атаке, называемой ARP спуфингом, компьютер начинает считать шлюзом не роутер, а компьютер атакующего. Атакующий получает запросы от «жертвы» и передаёт их в пункт назначения (например, запрашивает содержимое веб-сайта в Интернете), получив ответ от пункта назначения, он направляет его «жертве». В этой ситуации атакующий становится посредником – отсюда другое название атаки человек-посередине – «атака посредника». Для реализации атаки ARP спуфинг необязательно понимать её детали. Но если вам интересно, почему это происходит, то в конце инструкции вы найдёте подробное описание этого процесса.

Кроме передачи данных, возможно их изменение, внедрение в код открываемых страниц JavaScript и принудительная загрузка пользователю файла.

Прежде чем подключиться к веб-сайту, компьютер обращается к DNS (серверу имён), чтобы узнать его IP адрес. Intercepter-NG умеет подменять ответы DNS (делать DNS спуфинг), что позволяет перенаправлять «жертву» на фальшивые копии сайтов для последующих атак.

Это далеко не все возможности программы. С другими возможностями мы познакомимся далее в этой инструкции.

Где скачать Intercepter-NG

  • файл с расширением .apk – это версия для Android (требует root прав)
  • с буквами CE – консольная версия
  • Intercepter-NG.v*.zip – основная версия для Windows

Скаченная программа не нуждается в установке – достаточно распаковать архив.

Атака человек-посередине в Intercepter-NG

Начнём с обычной атаки человек-посередине (атака посредника).

Сделаем небольшие настройки. В зависимости от того, подключены вы по Wi-Fi или по Ethernet (проводу), кликая на выделенную иконку перейдите в нужный режим (если соединены по проводу – выберите изображение сетевой карты, если по беспроводной сети, то выберите изображение с уровнем сигнала):



Кликните правой кнопкой по пустой таблице и выберите Smart Scan:


Будет отображён список целей:


Добавьте нужные в качестве целей (Add as Target):


Для начала сниффинга нажмите соответствующую иконку:


Перейдите на вкладку MiTM mode (это глобус с патч-кордами) и нажмите иконку ARP Poison (символ радиационной опасности):


Во вкладке Password Mode (символ — связка ключей), будут появляться захваченные учётные данные:


На вкладке Resurrection (кнопка с птицей Феникс) вы можете видеть, какие файлы были переданы:


Была рассмотрена базовая атака, позволяющая:

  • перехватывать логины и пароли;
  • видеть, какие сайты посещает пользователь и какие файлы скачивает.

Базовая атака включает в себя сканирование локальной сети, выбор целей, запуск сниффинга и запуск ARP-травления. С этих действий начинается и ряд других, более сложных атак.


Вы увидите перехваченную куки:


Кликните по записи правой кнопкой мыши и выберите Open in browser – откроется посещённая пользователем страница, при этом вы будете залогинены под пользователем, которому принадлежит куки.

Обнуление куки для провоцирования ввода логина и пароля

Куки могут со временем быть обновлены, и мы не сможем вновь зайти со старыми куки на сайт. Поэтому нам хотелось бы получить логин и пароль. Но пока куки действуют, пользователю не нужно вводить учётные данные каждый раз, поэтому хотя «жертва» и заходит на сайт, мы не можем их перехватить.

Чтобы не ждать, пока истечёт срок действия куки и на целевом компьютере понадобиться ввести учётные данные, мы можем ускорить этот процесс – обнулить куки. Для этого имеется специальная опция: Cookie Killer.

Cookie Killer — обнуляет кукиз, тем самым принуждая пользователя повторно авторизоваться — ввести логин и пароль, чтобы атакующий мог их перехватить. Функция Cookie Killer работает и для SSL соединений. Имеются черные (misc\ssl_bl.txt) и белые списки (misc\ssl_wl.txt). В них можно исключить или напротив жестко указать IP адреса или домены, к которым следует или не следует применять SSL MiTM. При указании extra ssl port нет необходимости указывать тип read\write, достаточно указать номер порта. Весь трафик пишется в ssl_log.txt.

О том, как воспользоваться этой опцией, показано в этом видео:

Примечание: во время тестирования мне не удалось заставить работать Cookie Killer, ни в виртуальной машине, ни с отдельным реальным компьютером.

Дополнительную информацию о различных атаках вы найдёте в видео:

Принудительная загрузка файлов:

Код упоминаемого в видео .vbs файла:

Если вам нужен только сам сертификат, то вы его найдёте в папке программы Intercepter-NG, файл misc\server.crt

Функция X-Scan:

FATE (фальшивые обновления и фальшивый веб-сайт):

Получение пароля от iCloud при помощи Intercepter-NG:

Ещё инструкции по Intercepter-NG

Далее даётся техническое описание ARP спуфинга.

Почему возможна атака ARP-spoofing

Каждое устройство, подключённое к сети, имеет MAC-адрес. Этот адрес присвоен любому сетевому оборудованию (сетевые карты, Wi-Fi адаптеры). Роутеры, телефоны и любые другие устройства, подключающиеся к сети, также имеют MAC-адрес, поскольку имеют встроенные сетевые карты. MAC-адрес состоит из шести пар символов, разделённых двоеточием или тире. В используемых символах присутствуют все цифры и латинские буквы от a до f. Пример MAC-адреса: 52:54:00:a6:db:99. Для подключения двух устройств, например, вашего компьютера к шлюзу, нужно знать не только IP адрес, но и MAC-адрес. Для определения MAC-адреса шлюза используется ARP (англ. Address Resolution Protocol – протокол определения адреса) – протокол в компьютерных сетях, предназначенный для определения MAC-адреса по известному IP-адресу. IP-адрес роутера (шлюз по умолчанию), известен или получается по DHCP.

Рассмотрим суть функционирования ARP на простом примере. Компьютер А (IP-адрес 10.0.0.1) и компьютер Б (IP-адрес 10.22.22.2) соединены сетью Ethernet. Компьютер А желает переслать пакет данных на компьютер Б, IP-адрес компьютера Б ему известен. Однако сеть Ethernet, которой они соединены, не работает с IP-адресами. Поэтому компьютеру А для осуществления передачи через Ethernet требуется узнать адрес компьютера Б в сети Ethernet (MAC-адрес в терминах Ethernet). Для этой задачи и используется протокол ARP. По этому протоколу компьютер А отправляет широковещательный запрос, адресованный всем компьютерам в одном с ним широковещательном домене. Суть запроса: «компьютер с IP-адресом 10.22.22.2, сообщите свой MAC-адрес компьютеру с МАС-адресом (напр. a0:ea:d1:11:f1:01)». Сеть Ethernet доставляет этот запрос всем устройствам в том же сегменте Ethernet, в том числе и компьютеру Б. Компьютер Б отвечает компьютеру А на запрос и сообщает свой MAC-адрес (напр. 00:ea:d1:11:f1:11) Теперь, получив MAC-адрес компьютера Б, компьютер А может передавать ему любые данные через сеть Ethernet.

Как мы только что увидели, ARP включает в себя запрос и ответ. MAC-адрес из ответа записывается в таблицу MAC/IP. При получении ответа он никак не проверяется на подлинность. Более того, даже не проверяется, был ли сделан запрос. Т.е. на целевые устройства можно прислать сразу ARP-ответ (даже без запроса), с подменёнными данными, и эти данные попадут в таблицу MAC/IP и они будут использоваться для передачи данных. Это и есть суть атаки ARP-spoofing, которую иногда называют ARP травлением, травлением ARP кэша.

Описание атаки ARP-spoofing

Во время атаки ARP-spoofing узел X (злоумышленник) отсылает два ARP ответа (без запроса) – узлу M и узлу N. ARP-ответ узлу M содержит IP-адрес N и MAC-адрес X. ARP-ответ узлу N содержит IP адрес M и MAC-адрес X.

Так как компьютеры M и N поддерживают самопроизвольный ARP, то, после получения ARP-ответа, они изменяют свои ARP таблицы, и теперь ARP-таблица M содержит MAC адрес X, привязанный к IP-адресу N, а ARP-таблица N содержит MAC адрес X, привязанный к IP-адресу M.

Тем самым атака ARP-spoofing выполнена, и теперь все пакеты(кадры) между M и N проходят через X. К примеру, если M хочет передать пакет компьютеру N, то M смотрит в свою ARP-таблицу, находит запись с IP-адресом узла N, выбирает оттуда MAC-адрес (а там уже MAC-адрес узла X) и передает пакет. Пакет поступает на интерфейс X, анализируется им, после чего перенаправляется узлу N.

Читайте также: