Как да стартирате дистанционно улавяне на пакети с Wireshark и tcpdump
Wireshark е мощен инструмент, но има своите ограничения. Освен ако нямате професионално мрежово оборудване, е трудно да анализирате трафик, който не включва вашия компютър.
Понякога най-лесното решение е да използвате tcpdump за улавяне на трафика на отдалечения сървър и след това да стартирате Wireshark, за да го разгледате.
Какво представляват Wireshark и tcpdump?
Въпреки че Wireshark върши чудесна работа за улавяне на всеки мрежов пакет, който преминава покрай него, в някои случаи ще трябва да анализирате сесия от отдалечен сървър. Освен ако нямате специално мрежово оборудване, това може да е трудно. Понякога е по-лесно да заснемете трафик на отдалечения сървър, след което да го анализирате на вашия работен плот.
Докато Wireshark върши страхотна работа за улавяне на всеки пакет, който преминава покрай него, в някои случаи ще трябва да анализирате сесия от отдалечен сървър. Освен ако нямате специално мрежово оборудване, това може да е трудно. Понякога е по-лесно да заснемете трафик на отдалечения сървър, след което да го анализирате на вашия работен плот.
tcpdump е анализатор на пакети от командния ред. Не е толкова лесен за използване като Wireshark, но е също толкова способен да улавя трафик. Тъй като командата tcpdump се изпълнява в терминален режим, възможно е да я стартирате чрез SSH сесия. С правилните опции на командния ред можете да експортирате tcpdump сесия, която е съвместима с Wireshark. Можете да разгледате нашите tcpdump измамен лист за да научите повече за инсталирането, улавяне на пакети , логически операции, протоколи и др.
Вижте също: Алтернативи на Wireshark
Преди да започнеш
За да следвате указанията в това ръководство, ще ви трябва следното:
- Отдалечен компютър с инсталиран SSH сървър и tcpdump
- Root достъп
- Услуги, които генерират мрежов трафик, като Apache или node.js, работещи на отдалечения компютър
- Локален компютър с инсталиран SSH клиент и Wireshark
Целта е да се използват tcpdump команди на отдалечения компютър, чрез SSH, за улавяне на мрежов трафик. След това заснетият трафик може да бъде копиран на локалния компютър за анализ с Wireshark.
Това е полезно, когато нямате физически достъп до отдалечената машина или я използвате „без глава“, т.е. без клавиатура и монитор.
Прихващане на пакети с tcpdump дистанционно през SSH
За да уловите трафик с командата tcpdump, ще трябва да се свържете с отдалечения компютър чрез SSH. Ще ви е необходим и root достъп, в противен случай tcpdump няма да може да улови трафик и ще видите съобщение за грешка Нямате разрешение за заснемане на това устройство .
След като се свържете, изпълнете следната команда, за да започнете да улавяте трафик с tcpdump:
|_+_|Опциите на командния ред, които използвах за заснемане на тази сесия, ще бъдат обяснени по-долу. Накратко, горната команда ще улови целия трафик на Ethernet устройството и ще го запише във файл с име tcpdump.pcap във формат, съвместим с Wireshark.
След като приключите със заснемането на трафик, прекратете сесията tcpdump с Ctrl+C . Ще видите кратко показание, показващо информация за сесията за заснемане.
Преди да можете да копирате трафика от вашия отдалечен компютър към локалния за анализ с Wireshark, ще трябва да промените разрешенията. По подразбиране tcpdump сесиите, заснети от root потребителя, не могат да бъдат копирани. Използвайте тази команда:
|_+_|Това ще ви позволи да копирате файла на вашата локална машина с помощта на scp, както е описано в следващата стъпка.
Копиране на tcpdump сесия за анализ
След като завършите сесия за заснемане с командата tcpdump, оставате с проблем. Как го копирате на машината, работеща с Wireshark, за анализ? Има много начини, но мисля, че най-лесният е с scp. Тъй като вече сте уловили мрежови пакети на машина без глава, използвайки SSH, всичко, от което се нуждаете, за да използвате scp, вече е инсталирано и работи.
Потребителите на Windows ще трябва изтеглете pscp , след което копирайте файла в C:WindowsSystem32. Повечето потребители на Mac и Linux вече имат всичко необходимо.
В Mac или Linux отворете терминален прозорец и изпълнете следната команда, за да копирате файла за заснемане на сесия:
|_+_|Или в Windows отворете PowerShell и изпълнете тази команда:
|_+_|Заменете с вашата информация, където е подходящо. Ще бъдете подканени да въведете паролата си. Командите, които използвах, са на екранната снимка по-горе за справка.
Проверете дали файлът е копиран според очакванията и сте готови да анализирате tcpdump сесията с Wireshark.
Анализиране на заснета tcpdump сесия с Wireshark
Анализът работи по същия начин, както при всяко традиционно улавяне на Wireshark; единственото нещо, което трябва да знаете е как да импортирате файла.
Стартирайте Wireshark, след което импортирайте заснетата сесия от tcpdump, като използвате Файл -> Отвори и потърсете вашия файл. Можете също кликнете два пъти tcpdump файла за заснемане, за да го отворите в Wireshark, стига да има файлово разширение *.pcap . Ако сте използвали -във когато изпълните командата tcpdump, файлът ще се зареди нормално и ще покаже трафика.
В моя случай изпълнявам Apache сървър на отдалечения хост и се интересувам от разглеждане на HTTP данни. Зададох подходящия филтър за изглед на Wireshark и мога да преглеждам заснетите кадри както обикновено.
Като тест вградих елемент в HTML кода, който не се показва на страницата. Трябва да мога да го намеря в потока от данни и да го прегледам с Wireshark.
Както можете да видите, Wireshark може да анализира всеки кадър и да показва данните добре. Елементът, който скрих, се показва в примера по-горе. Процесът на заснемане е малко по-ангажиран, когато използвате командата tcpdump, но всичко в Wireshark работи както обикновено.
Използване на опции на командния ред за tcpdump
През повечето време, когато стартирате tcpdump, ще искате известен контрол върху това как улавяте пакетите и къде съхранявате сесията. Можете да контролирате такива неща, като използвате опциите на командния ред. Това са някои от най-полезните опции на командния ред за tcpdump.
tcpdump -w
The -във опцията на командния ред позволява изход за заснемане, съвместим с Wireshark. Отнема една променлива, която е името на изходния файл на tcpdump. Регистрационни файлове за заснемане, запазени с помощта на тази опция, няма да могат да се четат извън Wireshark, тъй като се съхраняват в двоичен, а не в ASCII формат.
tcpdump -C
The -° С опцията на командния ред ви позволява да зададете максимален размер на файла в байтове. Тази опция работи само заедно -във . Например командата tcpdump -C 1048576 -w capture.pcap определя максимален размер на заснемане от 1 MB (1 048 576 байта) изход към файла capture.pcap .
Ако сесията генерира по-голямо количество изход, тя ще създаде нови файлове, в които да ги съхрани. Така че 3MB заснемане ще генерира capture.pcap , capture1.pcap , и capture2.pcap всеки с размер на файла 1 MB.
tcpdump -s
The -с опцията на командния ред задава максимална дължина на пакета за всеки в байтове и съкращава пакета, когато се достигне максимумът. Командата tcpdump -s 0 задава неограничена дължина, за да гарантира, че цялото съдържание на пакета е уловено.
tcpdump -i
The -и опцията на командния ред указва кое мрежово устройство искате tcpdump да наблюдава. Ако не е указан интерфейс, по подразбиране се използва интерфейсът с най-нисък номер, който се изпълнява в момента.
tcpdump -списък-интерфейси
Опцията на командния ред tcpdump -списък-интерфейси ще отпечата списък на всички интерфейси, които са налични за tcpdump за прикачване. Обърнете внимание, че това не стартира сесия за заснемане, но ще ви даде списък с интерфейси, които да използвате с -и опция по-горе.
tcpdump -c
The -° С опцията на командния ред казва на tcpdump да излезе от сесията след улавяне на определен брой пакети.
tcpdump -n
The -н опцията на командния ред инструктира командата tcpdump не за преобразуване на IP адреси в имена на хостове. Това е полезно при отстраняване на неизправности в уебсайтове зад сървър за балансиране на натоварването и в няколко други случая, когато използването на име на хост би дало двусмислени резултати.
tcpdump -v | -vv | -vvv
Трите опции на командния ред, -във , -vv , и -туристически офис ви позволяват да увеличите подробността на вашата сесия за заснемане. -във ще запази TTL стойности за всеки пакет, заедно с информация за ToS. -vv ще изведе TTL и ToS заедно с допълнителна информация в NFS пакети. И -туристически офис ще регистрира всичко, което правят първите две опции, заедно с допълнителна информация от telnet сесии.
tcpdump -F
The -Ф опцията на командния ред инструктира командата tcpdump да използва филтри за улавяне от посочения файл. Повече информация относно писането на файл за заснемане може да бъде намерена в следващия раздел.
Използване на филтри за улавяне за tcpdump
Филтрите за улавяне ви позволяват да стесните данните, които tcpdump съхранява в сесия. Те са полезен начин да направите анализа на данните малко по-лесен и да запазите файловете за заснемане малки. Ето някои от най-полезните филтри за улавяне за tcpdump.
домакин
Този филтър указва, че трябва да се улавя само трафик към и от целевия хост. Той приема IP адрес или име на хост като аргумент.
нето
Мрежовият филтър ще каже на вашия компютър да улавя трафик само в дадена подмрежа и приема IP адрес като аргумент. Например 192.168.1.0/24 указва, че трафикът към или от всички хостове в подмрежата ще бъде уловен. Обърнете внимание, че се изисква маска на подмрежа в нотация с наклонена черта.
dst хост
Подобен на домакин , този филтър за улавяне указва, че ще бъде уловен само трафик с дестинация на дадения хост. Може да се използва и с нето .
src хост
Както по-горе, но този филтър улавя само трафик, произхождащ от посочения хост или IP адрес. Може да се използва и с нето .
порт
Този филтър казва на tcpdump да улавя трафик към и от даден номер на порт. Например, порт 443 ще улови TLS трафик.
portrange
Подобно на порт филтъра, portrange установява диапазон от портове, на които се улавя трафик. За да използвате филтъра portrange, посочете началния и крайния порт, разделени с тире. Например, портандж 21-23 .
шлюз
Филтърът за шлюз указва, че вашият компютър трябва да улавя само трафик, който използва дадено име на хост като шлюз. Името на хоста трябва да бъде намерено в /etc/hosts .
излъчване
Филтърът за излъчване указва, че tcpdump трябва да улавя само трафик, който се излъчва към всички хостове в подмрежа.
IP мултикаст
Този филтър казва на tcpdump да улавя само мултикаст трафик в подмрежата на хост машината.
и/или/не оператори
Филтрите могат да бъдат свързани верижно с помощта на и , или , или не оператори. Например, за да заснемете целия уеб трафик на даден хост, можете да използвате филтъра порт 80 или порт 443 . Или можете да уловите целия трафик в дадена подмрежа, с изключение на излъчваните пакети, като използвате филтъра net 192.168.1.0/24 и не се излъчва.
На практика е много често да се използват филтърни оператори, тъй като те осигуряват допълнителен слой детайлност на вашите заснемания. Можете да уловите точно трафика, от който се нуждаете, без много допълнително мрежово бърборене.
Сложни изрази с множество оператори
Дори по-сложни изрази могат да бъдат изградени чрез обграждане на множество операции в единични апостроф и скоби. Например, можете да наблюдавате целия пощенски трафик, включително SMTP, IMAP, IMAP през TLS, POP3 и POP3 през TLS, в множество хостове и подмрежи, като използвате команда като тази:
|_+_|Сложните изрази с множество оператори могат да бъдат много полезни, но те обикновено се записват във филтърен файл за повторна употреба, тъй като една печатна грешка ще доведе до неуспех при заснемането. Често те ще трябва да бъдат подготвени предварително и да бъдат отстранени грешки.
Вижте също: Урок за подмрежова маска с променлива дължина
Използване на филтърни файлове за tcpdump
Филтрите по-горе могат да се изпълняват от командния ред, когато tcpdump се стартира, но често е полезно да се създаде филтърен файл. Филтърният файл улеснява възпроизвеждането на настройките на филтъра между заснеманията, тъй като може да се използва повторно. Ето стъпките за писане и използване на филтърен файл.
Напишете филтърния файл
Филтърните файлове използват точно същата нотация като командния ред. Те не изискват специални знаци или магически числа в горната част на файла.
Например, ето един филтърен файл, който съм написал, който ще улови целия изходящ уеб трафик от моя Apache сървър към даден хост. В този случай Chromebook, на който пиша.
Докато файлът може да се чете от потребителя, изпълняващ командата tcpdump, програмата ще се опита да анализира всичко във филтърния файл и да го използва като валиден филтър. Когато филтърен файл се използва заедно с филтрирането от командния ред, всички филтри от командния ред ще бъдат игнорирани .
Инструктирайте tcpdump да използва даден филтърен файл, като използва -Ф опция на командния ред, последвана от пътя до файла. В примера по-горе филтърният файл се намира в същата директория, в която изпълнявам tcpdump.
Ето необработения изход за улавяне на пакет от филтрираната сесия. Можете да видите, че единствените регистрирани пакети произхождат от порт 80 или 443 и са изходящи към хоста на 192.168.1.181.
След като видите, че вашият филтър работи по предназначение, заснемете сесия, която да бъде анализирана с Wireshark, като използвате команда, подобна на тази:
|_+_|Wireshark и tcpdump
Освен ако не използвате управляван комутатор с административен порт, рано или късно ще трябва да уловите трафик на отдалечен сървър. Когато Wireshark сам по себе си няма да свърши работата, Wireshark с tcpdump е популярен избор. Двете работят много добре заедно и с няколко прости опции на командния ред tcpdump ще експортира сесии за заснемане, които лесно могат да бъдат анализирани в Wireshark.
Wireshark tcpdump ЧЗВ
Как да направя tcpdump на IP адрес?
Хост филтърът ще намали tcpdump до трафика само за един IP адрес, използвайте домакин филтър. Това трябва да бъде последвано от IP адреса. Например, tcpdump хост 192.168.0.10 . За да намалите допълнително изхода, можете да укажете само трафик, произхождащ от този IP адрес с src опция или само трафик, отиващ към този IP адрес с dst опция, напр. tcpdump src хост 192.168.0.10 .
Как да използвам tcpdump на определен порт?
Можете да изберете целия трафик за конкретен порт с филтър на командата tcpdump. Този метод също така ще ви даде специфичен протоколен трафик, стига да знаете порта, използван за този протокол. Филтърът е порт и е възможно да посочите само TCP или UDP трафик с опциите tcp и udp . Примери: tcpdump порт 53 или tcpdump udp порт 53 .
Какво представлява протоколът за отдалечено улавяне на пакети?
Протокол за отдалечено улавяне на пакетие програма, наречена RPCAPD.EXE. Това е внедрено като демон и е част от WinPCap. Демонът на Remote Packet Capture Protocol действа като агент на един компютър, позволявайки пакетите да бъдат заснети от него според команди, издадени на друг компютър.
Защо tcpdump не улавя пароли като ftp и ssh за разлика от Wireshark?
Възможно е да се уловят ftp пароли с tcpdump. Бягай tcpdump -nn -v порт ftp или ftp-данни и потърсете изхода за ПОТРЕБИТЕЛ за да получите потребителското име и МИНАВАНЕ за да получите паролата. Дори Wireshark няма да дешифрира SSH сесия, включително идентификационните данни за вход, без вече да знае ключа, използван за криптиране на връзката. Нито tcpdump, нито Wireshark могат да получат потребителското име или паролата за SFTP или FTPS сесия.