Компютри и модерни джаджи

Информация (ENG):
SmartSniff е помощна програма за наблюдение на мрежата, която ви позволява да улавяте TCP/IP пакети, които преминават през вашия мрежов адаптер, и да преглеждате заснетите данни като последователност от разговори между клиенти и сървъри. Можете да преглеждате TCP/IP разговорите в режим Ascii (за текстови протоколи, като HTTP, SMTP, POP3 и FTP.) или като шестнадесетичен дъмп. (за нетекстови базови протоколи, като DNS)
SmartSniff предоставя 3 метода за улавяне на TCP/IP пакети:
Необработени гнезда (Само за Windows 2000/XP или по-нова): Позволява ви да улавяте TCP/IP пакети във вашата мрежа, без да инсталирате драйвер за заснемане. Този метод има някои ограничения и проблеми.
WinPcap Capture Driver: Позволява ви да улавяте TCP/IP пакети на всички операционни системи Windows. (Windows 98/ME/NT/2000/XP/2003/Vista) За да го използвате, трябва да изтеглите и инсталирате WinPcap Capture Driver от този уеб сайт. (WinPcap е безплатен драйвер за заснемане с отворен код.)
Този метод обикновено е предпочитаният начин за улавяне на TCP/IP пакети със SmartSniff и работи по-добре от метода Raw Sockets.
Драйвер за мрежов монитор на Microsoft (само за Windows 2000/XP/2003): Microsoft предоставя безплатен драйвер за заснемане под Windows 2000/XP/2003, който може да се използва от SmartSniff, но този драйвер не е инсталиран по подразбиране и трябва да го инсталирате ръчно го, като използвате една от следните опции:
Вариант 1: Инсталирайте го от CD-ROM на Windows 2000/XP според инструкциите в уеб сайта на Microsoft
Опция 2 (само за XP): Изтеглете и инсталирайте инструментите за поддръжка на Windows XP Service Pack 2. Един от инструментите в този пакет е netcap.exe. Когато стартирате този инструмент за първи път, драйверът за мрежов монитор автоматично ще бъде инсталиран на вашата система.
Драйвер 3 за мрежов монитор на Microsoft: Microsoft предоставя нова версия на драйвера за мрежов монитор на Microsoft (3.x), който също се поддържа под Windows 7/Vista/2008. Започвайки от версия 1.60, SmartSniff може да използва този драйвер за улавяне на мрежовия трафик.
Новата версия на Microsoft Network Monitor (3.x) е достъпна за изтегляне от уеб сайта на Microsoft.

Системни изисквания
SmartSniff може да улавя TCP/IP пакети на всяка версия на операционната система Windows (Windows 98/ME/NT/2000/XP/2003/2008/Vista/7/8), стига драйверът за заснемане WinPcap да е инсталиран и да работи правилно с вашата мрежа адаптер

Можете също да използвате SmartSniff с драйвера за улавяне на Microsoft Network Monitor, ако е инсталиран на вашата система.
Под Windows 2000/XP (или по-нова версия) SmartSniff също ви позволява да улавяте TCP/IP пакети, без да инсталирате драйвер за заснемане, като използвате метода „Необработени гнезда“. Този метод на улавяне обаче има някои ограничения и проблеми:
* Изходящите UDP и ICMP пакети не се улавят.
* В Windows XP SP1 изходящите пакети изобщо не се улавят – Благодарение на грешката на Microsoft, която се появи в актуализацията на SP1... Тази грешка беше коригирана при актуализацията на SP2, но под Vista Microsoft върна грешката с изходящите пакети на XP/SP1.
* В Windows Vista/7/8: Имайте предвид, че методът Raw Sockets не работи правилно на всички системи. Това не е грешка в SmartSniff, а в API на операционната система Windows. Ако виждате само изходящия трафик, опитайте да изключите защитната стена на Windows или добавете smsniff.exe към списъка с разрешени програми на защитната стена на Windows.

Снифърът не винаги е злонамерен. Всъщност този тип софтуер често се използва за анализиране на мрежовия трафик с цел откриване и премахване на аномалии и осигуряване на гладка работа. Снифърът обаче може да се използва със злонамерени намерения. Снифърите анализират всичко, което минава през тях, включително некриптирани пароли и идентификационни данни, така че хакерите с достъп до снифъра могат да получат личната информация на потребителите. В допълнение, снифърът може да бъде инсталиран на всеки компютър, свързан към локалната мрежа, без да е необходимо да го инсталирате на самото устройство - с други думи, той не може да бъде открит през цялото време на връзката.

Откъде идват сниферите?

Хакерите използват снифъри, за да откраднат ценни данни, като наблюдават мрежовата активност и събират лична информация за потребителите. Обикновено нападателите се интересуват най-много от потребителски пароли и идентификационни данни, за да получат достъп до онлайн банкиране и акаунти в онлайн магазини. Най-често хакерите инсталират снифери на места, където се разпространяват незащитени Wi-Fi връзки, например в кафенета, хотели и летища. Снифърите могат да се маскират като свързано с мрежа устройство в така наречената спуфинг атака, за да откраднат ценни данни.

Как да разпознаем снифър?

Неоторизираните снифъри са изключително трудни за виртуално разпознаване, тъй като могат да бъдат инсталирани почти навсякъде, представлявайки много сериозна заплаха за мрежовата сигурност. Обикновените потребители често нямат шанс да разпознаят, че снифър проследява мрежовия им трафик. Теоретично е възможно да инсталирате свой собствен снифър, който да следи целия DNS трафик за наличието на други снифъри, но за обикновения потребител е много по-лесно да инсталира анти-снифър софтуер или антивирусно решение, което включва защита на мрежовата активност, за да спре всяко неразрешено проникване или скриване на вашите мрежови дейности.

Как да премахнете снифър

Можете да използвате високоефективна антивирусна програма за откриване и премахване на всички видове зловреден софтуер, инсталиран на вашия компютър за целите на подслушване. Въпреки това, за да премахнете напълно снифера от вашия компютър, трябва да изтриете абсолютно всички папки и файлове, свързани с него. Също така е силно препоръчително да използвате антивирусна програма с мрежов скенер, който ще провери щателно локалната мрежа за уязвимости и ще инструктира за по-нататъшни действия, ако бъдат открити.

Как да не станете жертва на снифър
  • Шифровайте цялата информация, която изпращате и получавате
  • Сканирайте вашата локална мрежа за уязвимости
  • Използвайте само проверени и сигурни Wi-Fi мрежи
Защитете се от надушници

Първото нещо, което потребителят може да направи, за да се защити от снифъри, е да използва висококачествена антивирусна програма, като безплатната антивирусна програма Avast, която е в състояние да сканира щателно цялата мрежа за проблеми със сигурността. Допълнителен и изключително ефективен начин за защита на информацията от подслушване е криптирането на всички изпратени и получени онлайн данни, включително имейли. поща. Avast SecureLine ви позволява сигурно да шифровате всички обмени на данни и да извършвате онлайн действия при 100% анонимност.

Програмата Wireshark ще бъде отличен помощник за тези потребители, които трябва да извършат подробен анализ на мрежови пакети - компютърен мрежов трафик. Снифърът лесно взаимодейства с такива общи протоколи като netbios, fddi, nntp, icq, x25, dns, irc, nfs, http, tcp, ipv6и много други. По време на анализ ви позволява да разделите мрежовия пакет на съответните компоненти, според конкретен протокол, и да извеждате четлива информация в цифрова форма на екрана.
поддържа огромен брой различни формати на предавана и получена информация и може да отваря файлове, които се използват от други помощни програми. Принципът на работа е, че мрежовата карта преминава в режим на излъчване и започва да прихваща мрежови пакети, които са в нейната зона на видимост. Може да работи като програма за прихващане на wifi пакети.

Как да използвате wireshark

Програмата изучава съдържанието на информационните пакети, които преминават през мрежата. За да стартирате и използвате резултатите от снифера, не се нуждаете от специални познания, трябва само да го отворите в менюто "Старт" или да кликнете върху иконата на работния плот (стартирането му не се различава от всяка друга програма на Windows) . Специална функция на помощната програма му позволява да улавя информационни пакети, внимателно да дешифрира съдържанието им и да ги връща на потребителя за анализ.

След като стартирате wireshark, на екрана ще видите главното меню на програмата, което се намира в горната част на прозореца. Използва се за управление на помощната програма. Ако трябва да заредите файлове, които съхраняват данни за пакети, уловени в предишни сесии, както и да запишете данни за други пакети, уловени в нова сесия, тогава ще ви трябва разделът "Файл", за да направите това.

За да стартира функцията за улавяне на мрежови пакети, потребителят трябва да щракне върху иконата "Capture", след което да намери специална секция от менюто, наречена "Interfaces", с която можете да отворите отделен прозорец "Wireshark Capture Interfaces", където трябва да се появят всички налични мрежови интерфейси се покаже, чрез което ще се уловят необходимите пакети данни. В случай, че програмата (снифер) може да открие само един подходящ интерфейс, тя ще покаже цялата важна информация за него на екрана.

Резултатите от работата на помощната програма са пряко доказателство, че дори ако потребителите не са ангажирани самостоятелно (в даден момент) в предаването на каквито и да е данни, обменът на информация в мрежата не спира. В края на краищата принципът на работа на локална мрежа е, че за да се поддържа в режим на работа, всеки от нейните елементи (компютър, комутатор и други устройства) непрекъснато обменя служебна информация помежду си, следователно такива мрежови инструменти са предназначени да прихващат такива пакети.

Има и версия за Linux системи.

трябва да бъде отбелязано че Снифърът е изключително полезен за мрежовите администратории услуги за компютърна сигурност, тъй като помощната програма ви позволява да идентифицирате потенциално незащитени мрежови възли - вероятни области, които могат да бъдат атакувани от хакери.

В допълнение към пряката си цел, Wireshark може да се използва като инструмент за наблюдение и допълнителен анализ на мрежовия трафик, за да се организира атака срещу незащитени зони на мрежата, тъй като прихванатият трафик може да се използва за постигане на различни цели.


В тази статия ще разгледаме създаването на прост снифър за Windows OS.
Който се интересува, добре дошъл в кат.

Въведение

Мишена:напишете програма, която ще улавя мрежовия трафик (Ethernet, WiFi), предаван по IP протокола.
Съоръжения: Visual Studio 2005 или по-нова версия.
Описаният тук подход не принадлежи лично на автора и се използва успешно в много комерсиални, както и напълно безплатни програми (здравей, GPL).
Тази работа е предназначена предимно за начинаещи в мрежовото програмиране, които обаче имат поне основни познания в областта на сокетите като цяло и в частност Windows сокетите. Тук често ще пиша добре познати неща, защото темата е специфична, ако пропусна нещо, ще ми е каша в главата.

Надявам се да ви е интересно.

Теория (четенето не е задължително, но се препоръчва)

В момента по-голямата част от съвременните информационни мрежи се основават на основата на протоколния стек TCP/IP. TCP/IP протоколният стек (Transmission Control Protocol/Internet Protocol) е сборно наименование за мрежови протоколи от различни нива, използвани в мрежите. В тази статия ще се интересуваме основно от IP протокола - маршрутизиран мрежов протокол, използван за негарантирана доставка на данни, разделени на така наречените пакети (по-правилен термин е дейтаграма) от един мрежов възел до друг.
От особен интерес за нас са IP пакетите, предназначени за предаване на информация. Това е доста високо ниво на мрежовия модел на данни OSI, когато можете да се изолирате от устройството и средата за предаване на данни, работейки само с логическо представяне.
Напълно логично е рано или късно да се появят инструменти за прихващане, наблюдение, запис и анализ на мрежовия трафик. Такива инструменти обикновено се наричат ​​анализатори на трафика, анализатори на пакети или снифери (от английски to sniff - подушвам). Това е анализатор на мрежов трафик, програма или хардуерно-софтуерно устройство, предназначено да прихваща и впоследствие да анализира или само да анализира мрежов трафик, предназначен за други възли.

Практика (разговор по същество)

В момента е създаден доста софтуер за слушане на трафика. Най-известният от тях: Wireshark. Естествено, целта не е да жънем лаврите му - интересуваме се от задачата да прихванем трафика, като просто „слушаме“ мрежов интерфейс. Важно е да разберете, че няма да хакваме и прихващаме непознаттрафик. Просто трябва да видим и анализираме трафика, който минава през нашия хост.

Защо това може да е необходимо:

  1. Вижте текущия трафик през мрежовата връзка (входящ/изходящ/общо).
  2. Пренасочване на трафика за последващ анализ към друг хост.
  3. Теоретично можете да опитате да го използвате за хакване на WiFi мрежа (няма да го направим, нали?).
За разлика от Wireshark, който е базиран на библиотеката libpcap/WinPcap, нашият анализатор няма да използва този драйвер. Нещо повече, ние изобщо няма да имаме драйвер и няма да напишем собствен NDIS (о, ужас!). Можете да прочетете за това в тази тема. Той просто ще бъде пасивен наблюдател, използващ самоБиблиотека WinSock. Използването на драйвер в този случай е излишно.

Как така? Много просто.
Ключовата стъпка при превръщането на просто мрежово приложение в мрежов анализатор е да превключите мрежовия интерфейс в безразборен режим, което ще му позволи да получава пакети, адресирани до други интерфейси в мрежата. Този режим принуждава мрежовата карта да приема всички рамки, независимо към кого са адресирани в мрежата.

Започвайки с Windows 2000 (NT 5.0), стана много лесно да се създаде програма за слушане на мрежов сегмент, т.к. неговият мрежов драйвер ви позволява да настроите сокета да получава всички пакети.

Активиране на безразборния режим
дълъг флаг = 1; ГНЕЗДА гнездо; #define SIO_RCVALL 0x98000001 ioctlsocket(сокет, SIO_RCVALL, &RS_Flag);
Нашата програма работи с IP пакети и използва Windows Sockets библиотека версия 2.2 и необработени сокети. За да получите директен достъп до IP пакет, сокетът трябва да бъде създаден, както следва:
Създаване на необработен сокет
s = сокет (AF_INET, SOCK_RAW, IPPROTO_IP);
Тук вместо константа SOCK_STREAM(TCP протокол) или SOCK_DGRAM(UDP протокол), използваме стойността SOCK_RAW. Най-общо казано, работата с необработени сокети е интересна не само от гледна точка на улавянето на трафика. На практика получаваме пълен контрол върху формирането на пакета. Или по-скоро го формираме ръчно, което позволява например да изпратим конкретен ICMP пакет...

Продължавай. Известно е, че IP пакетът се състои от заглавка, служебна информация и всъщност данни. Съветвам ви да погледнете тук, за да опресните знанията си. Нека опишем IP хедъра под формата на структура (благодарение на отличната статия за RSDN):

Описание на структурата на IP пакета
typedef struct _IPHeader ( unsigned char ver_len; // версия на заглавката и дължина unsigned char tos; // тип услуга unsigned short length; // дължина на целия пакет unsigned short id; // Id unsigned short flgs_offset; // флагове и отместване unsigned char ttl; // доживотен неподписан char протокол; // протокол unsigned short xsum; // контролна сума unsigned long src; // IP адрес на изпращача unsigned long dest; // IP адрес на местоназначение unsigned short *params; // параметри (до 320 bits) unsigned char *data; // данни (до 65535 октета) )IPHeader;
Основната функция на алгоритъма за слушане ще изглежда така:
Функция за улавяне на единичен пакет
IPHeader* RS_Sniff() ( IPHeader *hdr; int count = 0; count = recv(RS_SSocket, (char*)&RS_Buffer, sizeof(RS_Buffer), 0); if (count >= sizeof(IPHeader)) ( hdr = (LPIPHeader )malloc(MAX_PACKET_SIZE); memcpy(hdr, RS_Buffer, MAX_PACKET_SIZE); RS_UpdateNetStat(count, hdr); return hdr; ) else return 0; )
Тук всичко е просто: получаваме част от данните, използвайки стандартната функция на сокет прихи след това ги копирайте в структура като IPHeader.
И накрая, започваме безкраен цикъл за улавяне на пакети:
Нека уловим всички пакети, които достигат до нашия мрежов интерфейс
while (true) ( ​​​​IPHeader* hdr = RS_Sniff(); // обработка на IP пакета if (hdr) ( // отпечатване на заглавката в конзолата) )
Малко офтопик
Тук и по-долу авторът е направил префикса RS_ (от Raw Sockets) за някои важни функции и променливи. Направих проекта преди 3-4 години и ми хрумна луда идея да напиша пълноценна библиотека за работа с raw сокети. Както често се случва, след получаване на някои значими (за автора) резултати, ентусиазмът избледня и въпросът не отиде по-далеч от пример за обучение.

По принцип можете да отидете по-далеч и да опишете заглавките на всички следващи протоколи, разположени по-горе. За да направите това, трябва да анализирате полето протоколв структурата IPHeader. Погледнете примерния код (да, трябва да има превключвател, по дяволите!), където заглавката е оцветена в зависимост от това какъв протокол пакетът е капсулирал в IP:

/* * Маркиране на пакет с цвят */ void ColorPacket(const IPHeader *h, const u_long haddr, const u_long whost = 0) ( if (h->xsum) SetConsoleTextColor(0x17); // ако пакетът не е празен иначе SetConsoleTextColor(0x07) ; // празен пакет if (haddr == h->src) ( SetConsoleTextColor(BACKGROUND_BLUE | /*BACKGROUND_INTENSITY |*/ FOREGROUND_RED | FOREGROUND_INTENSITY); // "роден" пакет за връщане ) else if (haddr == h->dest ) ( SetConsoleTextColor(BACKGROUND_BLUE | /*BACKGROUND_INTENSITY |*/ FOREGROUND_GREEN | FOREGROUND_INTENSITY); // "роден" получава пакет) if (h->protocol == PROT_ICMP || h->protocol == PROT_IGMP) ( SetConsoleTextColor (0x70) ; // ICMP пакет ) else if(h->protocol == PROT_IP || h->protocol == 115) ( SetConsoleTextColor(0x4F); // IP-in-IP пакет, L2TP ) else if(h - >протокол == 53 || h->протокол == 56) ( SetConsoleTextColor(0x4C); // TLS, IP с криптиране ) if(whost == h->dest || whost == h->src) ( SetConsoleTextColor (0x0A); ) )

Това обаче е значително извън обхвата на тази статия. За нашия пример за обучение ще бъде достатъчно да погледнете IP адресите на хостовете, от които и към които идва трафикът, и да изчислите количеството му за единица време (готовата програма е в архива в края на статията) .

За да покажете данни от IP заглавката, трябва да приложите функция за преобразуване на заглавката (но не и данните) на дейтаграмата в низ. Като пример за изпълнение можем да предложим следната опция:

Преобразуване на IP хедър в низ
inline char* iph2str(IPHeader *iph) ( const int BUF_SIZE = 1024; char *r = (char*)malloc(BUF_SIZE); memset((void*)r, 0, BUF_SIZE); sprintf(r, "ver=% d hlen=%d tos=%d len=%d id=%d flags=0x%X offset=%d ttl=%dms prot=%d crc=0x%X src=%s dest=%s", BYTE_H (iph->ver_len), BYTE_L(iph->ver_len)*4, iph->tos, ntohs(iph->length), ntohs(iph->id), IP_FLAGS(ntohs(iph->flgs_offset)), IP_OFFSET (ntohs(iph->flgs_offset)), iph->ttl, iph->protocol, ntohs(iph->xsum), nethost2str(iph->src), nethost2str(iph->dest)); return r; )
Въз основа на основната информация, дадена по-горе, получаваме тази малка програма (страховито име ss, съкратено от simple sniffer), която реализира локално слушане на IP трафик. Интерфейсът му е показан на фигурата по-долу.

Предоставям изходния и двоичния код такъв, какъвто е, както беше преди няколко години. Сега ме е страх да го гледам, но все пак е доста четиво (разбира се, не можеш да си толкова самоуверен). Дори Visual Studio Express 2005 ще бъде достатъчен за компилация.

С какво завършихме:

  • Снифърът работи в потребителски режим, но изисква администраторски права.
  • Пакетите не се филтрират и се показват така, както са (можете да добавите персонализирани филтри - предлагам да разгледате тази тема подробно в следващата статия, ако се интересувате).
  • WiFi трафикът също се улавя (всичко зависи от конкретния модел чип, може да не работи за вас, както беше за мен преди няколко години), въпреки че има AirPcap, който може да направи това чудесно, но струва пари.
  • Целият поток от дейтаграми се регистрира във файл (вижте архива, прикачен в края на статията).
  • Програмата работи като сървър на порт 2000. Можете да се свържете с хоста с помощта на помощната програма telnet и да наблюдавате потоците от трафик. Броят на връзките е ограничен до двадесет (кодът не е мой, намерих го в интернет и го използвах за експерименти; не го изтрих - жалко)
Благодаря ви за вниманието, поздравявам жителите на Хабровск и Хабровка и всички, Весела Коледа!

SmartSniffви позволява да прихващате мрежов трафик и да показвате съдържанието му в ASCII. Програмата улавя пакети, преминаващи през мрежовия адаптер и показва съдържанието на пакетите в текстов вид (http, pop3, smtp, ftp протоколи) и като шестнадесетичен дъмп. За да улови TCP/IP пакети, SmartSniff използва следните техники: необработени сокети - RAW Sockets, WinCap Capture Driver и Microsoft Network Monitor Driver. Програмата поддържа руски език и е лесна за използване.

Снифър програма за улавяне на пакети


SmartSniff показва следната информация: име на протокол, локален и отдалечен адрес, локален и отдалечен порт, локален възел, име на услуга, обем данни, общ размер, време на заснемане и време на последния пакет, продължителност, локален и отдалечен MAC адрес, държави и пакет с данни съдържание. Програмата има гъвкави настройки, изпълнява функцията на филтър за улавяне, разопаковане на http отговори, конвертиране на IP адреси, помощната програма е сведена до минимум до системната област. SmartSniff генерира отчет за пакетните потоци като HTML страница. Програмата може да експортира TCP/IP потоци.

Ако забележите грешка, изберете част от текста и натиснете Ctrl+Enter
ДЯЛ:
Компютри и модерни джаджи