Како користити Виресхарк филтере на Линук-у

Виресхарк, водећи аналитички алат за мрежне пакете, доступан је за Линукс, Виндоус и мацОС. Иако нуди изузетно флексибилне и прецизне филтере, њихова употреба понекад може бити збуњујућа. У овом чланку, размотрићемо кључне аспекте на које треба обратити пажњу.

Анализа мрежног саобраћаја са Виресхарком

Виресхарк се истиче као један од највреднијих алата отвореног кода. Професионалци и ентузијасти га користе за испитивање и решавање проблема са мрежама. Програмери софтвера га користе за детаљно анализирање и исправљање грешака у процесима комуникације. Стручњаци за безбедност га користе за праћење и идентификовање злонамерних активности на мрежи.

Типичан процес укључује покретање Виресхарка у режиму снимања, при чему он региструје мрежни саобраћај преко једног од мрежних интерфејса на рачунару. Прикупљени мрежни пакети се приказују у реалном времену. Детаљна анализа се врши након завршетка процеса снимања.

Прикупљени пакети се називају „траг“. Након завршетка снимања, траг се може детаљно анализирати, пакет по пакет. Корисник има могућност да прегледа сваки пакет до најситнијих детаља, прати мрежне интеракције између уређаја и користи филтере за укључивање или искључивање одређених пакета из анализе.

Виресхаркове филтерске могућности су изузетне, нудећи велику флексибилност и прецизност. Међутим, постоје суптилности у синтакси које могу довести до неочекиваних резултата ако се не разумеју у потпуности.

Ако не разумете како филтери функционишу у Виресхарку, нећете моћи да искористите пуни потенцијал овог моћног алата.

Инсталација Виресхарка

Током инсталације Виресхарка, бићете упитани да ли корисници без роот привилегија треба да имају могућност да прикупљају мрежне податке. Одбијање ове опције може бити привлачно због безбедносних разлога. Међутим, инсталирање Виресхарка тако да га могу користити само корисници са роот привилегијама значи да ће све компоненте радити са повишеним дозволама.

Виресхарк је сложен програм са више од 2 милиона линија кода који комуницира са вашим рачунаром на ниском нивоу. Препорука је да што мање кода ради са повишеним привилегијама, посебно на тако ниском нивоу.

Много је безбедније покренути Виресхарк са стандардним корисничким налогом. И даље можете контролисати ко има право да га користи. Ово захтева неколико додатних корака, али је то најбезбеднији начин. Компоненте Виресхарка за прикупљање података ће радити са роот привилегијама, док ће остатак апликације функционисати као нормалан процес.

За инсталацију на Убунту, користите следећу команду:

sudo apt-get install wireshark

На Федора дистрибуцији, користите следећу команду:

sudo dnf install wireshark

На Мањаро систему, користите ову команду:

sudo pacman -Syu wireshark-qt

Током процеса инсталације, видећете прозор који препоручује да не покрећете Виресхарк као роот. Притисните тастер „Таб“ да бисте преместили фокус на „“ и притисните размакницу.

У следећем прозору, притисните „Таб“ да бисте преместили фокус на „“ и притисните размакницу.

Да бисте покренули Виресхарк, морате бити члан „виресхарк“ групе, која се креира током инсталације. Ово вам омогућава да контролишете ко може да користи Виресхарк. Свако ко није у „виресхарк“ групи неће моћи да га покрене.

Да бисте се додали у групу „виресхарк“, користите следећу команду:

sudo usermod -a -G wireshark $USER

Да би ваше ново чланство у групи ступило на снагу, одјавите се и поново пријавите или употребите ову команду:

newgrp wireshark

Да бисте проверили да ли сте у новој групи, користите команду „groups“:

groups

Требало би да видите „виресхарк“ на листи група.

Покретање Виресхарка

Виресхарк се може покренути помоћу следеће команде. Симбол „&“ покреће Виресхарк у позадини, што вам омогућава да наставите да користите прозор терминала. Можете чак и затворити прозор терминала и Виресхарк ће наставити да ради.

Унесите следеће:

Wireshark &

Појавиће се Виресхарков интерфејс. Приказани су мрежни интерфејси на вашем рачунару, као и неки уграђени псеудо-уређаји.

Таласаста линија поред интерфејса означава да је он активан и да се мрежни саобраћај одвија преко њега. Равна линија значи да на интерфејсу нема активности. Прва ставка на листи, „енп0с3“, је жична веза за овај рачунар и, као што се и очекивало, приказује активност.

Да бисте започели снимање пакета, кликните десним тастером миша на „енп0с3“, а затим изаберите „Start Capture“ у контекстном менију.

Можете да подесите филтере да бисте смањили количину саобраћаја који Виресхарк снима. Ми више волимо да снимамо све и филтрирамо непотребан саобраћај током анализе. На овај начин, знамо да је све што се догодило укључено у траг. Не желите да случајно пропустите мрежни догађај који може објаснити ситуацију коју истражујете, због филтера за снимање.

Наравно, у мрежама са великим прометом, трагови могу брзо постати веома велики, па је филтрирање при снимању пожељно у таквим околностима. Или, то може бити једноставно ваш лични избор.

Важно је напоменути да се синтакса филтера за снимање разликује од оне за дисплеј.

Иконе приказане на горњој слици имају следећа значења, с лева на десно:

Пераје ајкуле: Када је плава, кликом на њу се покреће снимање пакета. Када Виресхарк снима пакете, ова икона ће бити сива.
Квадрат: Када је црвен, кликом на њега се зауставља активно снимање пакета. Када Виресхарк не снима пакете, ова икона ће бити сива.
Пераје ајкуле са кружном стрелицом: Када је зелено, кликом на њу се зауставља тренутно покренути траг. Ово вам даје могућност да сачувате или одбаците прикупљене пакете и поново покренете праћење. Када Виресхарк не снима пакете, ова икона ће бити сива.

Анализа трага

Кликом на икону црвеног квадрата зауставља се прикупљање података, што вам омогућава да анализирате пакете прикупљене у трагу. Пакети су приказани хронолошки и обојени су различитим бојама у зависности од протокола пакета. Детаљи одабраног пакета се приказују у два доња прозора у Виресхарк интерфејсу.

Један од једноставнијих начина да се олакша анализа трага је да Виресхарк пружи смислена имена за изворне и одредишне ИП адресе пакета. Да бисте то урадили, изаберите „View > Name Resolution“ и кликните на „Resolve Network Addresses“.

Виресхарк ће покушати да разреши имена уређаја који су слали и примали сваки пакет. Неће моћи да идентификује све уређаје, али они које идентификује помоћи ће вам да лакше разумете траг.

Померањем екрана налево, видећете више колона са десне стране. Колона са информацијама приказује све детаље које Виресхарк може да прикупи из пакета. У примеру испод, видимо неке захтеве и одговоре Пинг протокола.

Виресхарк подразумевано приказује све пакете по редоследу којим су прикупљени. Многи уређаји истовремено шаљу пакете, што значи да ће један разговор између два уређаја вероватно бити испреплетан пакетима од других уређаја.

Да бисте анализирали један разговор, можете га изоловати по протоколу. Протокол за сваки пакет је приказан у колони „Protocol“. Већина протокола које ћете видети припадају ТЦП/ИП групи. Можете да одредите тачан протокол или да користите Етернет као општији критеријум.

Кликните десним тастером миша на било који од пакета у секвенци коју желите да испитате, а затим кликните на „Filter conversation > Ethernet“. У примеру испод, одабрали смо пакет захтева Пинг протокола.

Низ пакета је приказан без других пакета између њих, јер је Виресхарк аутоматски генерисао филтер за то. Филтер је приказан у траци за филтере и обојен је зелено, што показује да је његова синтакса исправна.

Да бисте уклонили филтер, кликните на „X“ у траци за филтере.

Креирање сопствених филтера

Унесите једноставан филтер у траку за филтере:

ip.addr == 192.168.4.20

Овај филтер ће одабрати све пакете који су послати или примљени од уређаја са ИП адресом 192.168.4.20. Обратите пажњу на двоструке знакове једнакости (==) без размака између њих.

Да бисте видели пакете које шаље уређај (извор), можете користити ip.src; да бисте видели пакете који су стигли на уређај (одредиште), можете користити ip.dst, као што је приказано у наставку:

ip.dst == 192.168.4.20 && ip.src == 192.168.4.28

Обратите пажњу на употребу двоструког амперсанда (&&) за логички „и“. Овај филтер ће приказати пакете који су стигли на 192.168.4.20 са 192.168.4.28.

Корисници који су нови у Виресхарковим филтерима често греше, мислећи да ће филтер попут овог прикупити све пакете између две ИП адресе, али то није тачно.

Оно што овај филтер заправо ради је да филтрира све пакете који су послати на или са ИП адресе 192.168.4.20, без обзира на њихов извор или одредиште. Исто важи и за све пакете са ИП адресе 192.168.4.28. Једноставно речено, филтрира сав саобраћај на или са било које од наведених ИП адреса.

Можете претраживати и активности на другим протоколима. На пример, можете користити следећи филтер да бисте потражили ХТТП захтеве:

http.request

Да бисте искључили пакете који су стигли са или су послати на одређени уређај, користите знак узвика (!) и ставите филтер у заграде [()]:

!(ip.addr == 192.168.4.14)

Овај филтер ће искључити све пакете који су послати на или са 192.168.4.14.

Овај филтер је контраинтуитиван, јер садржи оператор једнакости (==). Можда сте очекивали да ћете филтер унети овако:

ip.addr != 192.168.4.14

Међутим, ово неће функционисати.

Такође можете претраживати стрингове у пакетима, по протоколу. Следећи филтер ће претраживати Трансмиссион Цонтрол Протоцол (ТЦП) пакете који садрже стринг „иоутубе“:

tcp contains youtube

Филтер који претражује поновне преносе је користан за проверу да ли постоји проблем са везом. Поновни преноси су пакети који се поново шаљу јер су оштећени или изгубљени током првобитног преноса. Превише поновних преноса указује на спору везу или уређај који споро реагује.

Унесите следеће:

tcp.analysis.retransmission

Почетак, ток и крај везе

Мрежна веза између два уређаја се покреће када један уређај успостави контакт са другим и пошаље СИН (синхронизован) пакет. Уређај који прима, шаље АЦК (потврда) пакет. Овај АЦК пакет указује да ли прихвата везу, слањем СИН пакета.

СИН и АЦК су, у ствари, два заставице у истом пакету. Први уређај потврђује СИН слањем АЦК пакета, након чега уређаји успостављају мрежну везу.

Овај процес се назива тространо руковање:

A -> SYN -> B

A  ACK -> B

На слици испод, корисник на рачунару „ностромо.лоцал“ успоставља Сецуре Схелл (ССХ) везу са рачунаром „убунту20-04.лоцал“. Тространо руковање је први део комуникације између два рачунара. Приметите да су две линије које садрже СИН пакете обојене тамно сивом бојом.

Померањем екрана удесно, видећете пакете тространог руковања: СИН, СИН/АЦК и АЦК.

Приметићете да се размена пакета између два рачунара смењује између ТЦП и ССХ протокола. Пакети података се преносе преко шифроване ССХ везе, док се пакети порука (као што је АЦК) шаљу преко ТЦП протокола. Ускоро ћемо филтрирати ТЦП пакете.

Када мрежна веза више није потребна, она се прекида. Редослед пакета за прекид везе је четворострано руковање.

Једна страна шаље ФИН (финиш) пакет. Друга страна шаље АЦК да би потврдила ФИН, а затим шаље и ФИН да би означила да се слаже да се веза прекине. Прва страна шаље АЦК за ФИН који је управо примила, након чега се мрежна веза раскида.

Ево како изгледа четворострано руковање:

A -> FIN -> B

A  ACK -> B

Понекад се првобитни ФИН пошаље заједно са АЦК пакетом, као што је приказано у наставку:

A -> FIN, ACK -> B

A  ACK -> B

То се дешава у овом примеру.

Ако желимо да видимо само ССХ саобраћај за овај разговор, можемо користити филтер који специфицира тај протокол. Унесите следеће да бисте видели сав саобраћај који користи ССХ протокол ка и са удаљеног рачунара:

ip.addr == 192.168.4.25 && ssh

Ово ће филтрирати све осим ССХ саобраћаја ка и са 192.168.4.25.

Корисни шаблони филтера

Када унесете филтер у траку за филтере, он ће остати црвен све док синтакса филтера не буде исправна. Када је филтер исправан и потпун, он постаје зелен.

Ако откуцате протокол, као што је tcp, ip, udp или ssh, након чега следи тачка (.), појавиће се мени. У њему ће бити наведени недавни филтери који су садржали тај протокол, као и сва поља која се могу користити у филтерима за тај протокол.

На пример, са „ip“, можете користити ip.addr, ip.checksum, ip.src, ip.dst, ip.id, ip.host и десетине других.

Користите следеће шаблоне филтера као основу за своје филтере:

Да бисте приказали само пакете ХТТП протокола: хттп
Да бисте приказали само пакете ДНС протокола: днс
Да бисте приказали само ТЦП пакете са 4000 као изворним или одредишним портом: tcp.port==4000
За приказ свих ТЦП пакета за ресетовање: http.request
Да бисте филтрирали АРП, ИЦМП и ДНС пакете: !(арп или ицмп или днс)
Да бисте приказали све поновне преносе у трагу: tcp.analysis.retransmission
Да бисте филтрирали заставице (као што су СИН или ФИН): Морате да наведете вредност поређења за њих: 1 значи да је заставица постављена, а 0 значи да није. Пример би био: tcp.flags.syn == 1.

Овде смо објаснили неке од основних принципа и примену филтера за дисплеј, али могућности су много веће.

Да бисте стекли увид у пуни обим и моћ Виресхарк филтера, погледајте његову онлајн референцу.