Анализируем сетевую кровь

Иван Скляров (www.sklyaroff.ru)

Хакер, номер #080, стр. 080-102-1

Возможности утилиты tcpdump от А до Я

Сеть напоминает кровеносную систему, а движущиеся по ней пакеты сродни тромбоцитам, лейкоцитам и прочим клеткам крови. Однако не все, что плавает в крови, несет пользу. Периодически в кровь проникает зараза, которая стремится навредить или даже убить весь организм. Чтобы обнаружить и вовремя устранить заболевание, необходимо сдавать кровь на анализы. С аналогичной целью следует анализировать "сетевую кровь". Стандартным инструментом для такого анализа в *nix является утилита tcpdump.

[виртуозное владение опциями командной строки]

Утилита tcpdump представляет собой сетевой анализатор пакетов, разработанный Lawrence Berkeley National Laboratory. Если tcpdump запустить без каких-либо параметров, она будет перехватывать все сетевые пакеты и выводить о них информацию. С помощью параметра '-i' можно указать сетевой интерфейс, с которого следует принимать данные:

# tcpdump -i eth2

Таким образом, с интерфейса eth2 будет осуществляться захват пакетов. Если требуются лишь пакеты, получаемые или отправляемые от определенного хоста, то его имя или IP нужно указать после ключевого слова host:

# tcpdump host namesrv

Если же нужны пакеты, которыми обмениваются, например, хосты namesrv1 и namesrv2, то можно использовать такой фильтр:

# tcpdump host namesrv1 and namesrv2

Для отслеживания только исходящих пакетов от какого-либо узла нужно указать сочетание "src host":

# tcpdump src host namesrv

А для отслеживания только входящих пакетов - "dst host":

# tcpdump dst host namesrv

Ключевые слова "src port" и "dst port" позволяют указывать порт отправителя и порт получателя, например:

# tcpdump dst port 513

Если нужно отслеживать один из трех протоколов tcp, udp, icmp, то его имя можно просто указать в командной строке. С помощью булевых операторов and (&&), or (||) и not (!) можно задавать фильтры произвольной сложности. Ниже приведен пример фильтра, отслеживающего только ICMP-пакеты, приходящие из внешней сети:

# tcpdump icmp and not src net localnet

Можно проверять конкретные биты или байты в заголовках протоколов, для чего используется такой формат: proto[expr:size], где proto - один из протоколов ether, fddi, tr, ip, arp, rarp, tcp, udp, icmp или ip6; expr - смещение в байтах от начала заголовка пакета; size - дополнительное поле, указывающее, сколько байт рассматривать (может отсутствовать, тогда рассматривается 1 байт). Например, чтобы отбирать только TCP-сегменты, в которых установлен флаг SYN, следует использовать фильтр:

# tcpdump 'tcp[ 13 ]==2'

Здесь нужно знать, что с 13 байта заголовка TCP расположены 8 бит флагов (1 байт), где SYN является вторым битом по номеру. Так как он должен быть установлен в 1, то байт флагов в двоичном виде будет выглядеть как 00000010 (это 2 в dec). С помощью аргумента '-c' можно указать количество принимаемых пакетов:

# tcpdump -c 10

В итоге будет получено всего 10 пакетов. Параметр '-a' позволяет (если возможно) отображать IP-адреса в символьном виде (правда это довольно сильно замедляет работу утилиты):

# tcpdump -a

Содержание  Вперед на стр. 080-102-2
загрузка...
Журнал Хакер #151Журнал Хакер #150Журнал Хакер #149Журнал Хакер #148Журнал Хакер #147Журнал Хакер #146Журнал Хакер #145Журнал Хакер #144Журнал Хакер #143Журнал Хакер #142Журнал Хакер #141Журнал Хакер #140Журнал Хакер #139Журнал Хакер #138Журнал Хакер #137Журнал Хакер #136Журнал Хакер #135Журнал Хакер #134Журнал Хакер #133Журнал Хакер #132Журнал Хакер #131Журнал Хакер #130Журнал Хакер #129Журнал Хакер #128Журнал Хакер #127Журнал Хакер #126Журнал Хакер #125Журнал Хакер #124Журнал Хакер #123Журнал Хакер #122Журнал Хакер #121Журнал Хакер #120Журнал Хакер #119Журнал Хакер #118Журнал Хакер #117Журнал Хакер #116Журнал Хакер #115Журнал Хакер #114Журнал Хакер #113Журнал Хакер #112Журнал Хакер #111Журнал Хакер #110Журнал Хакер #109Журнал Хакер #108Журнал Хакер #107Журнал Хакер #106Журнал Хакер #105Журнал Хакер #104Журнал Хакер #103Журнал Хакер #102Журнал Хакер #101Журнал Хакер #100Журнал Хакер #099Журнал Хакер #098Журнал Хакер #097Журнал Хакер #096Журнал Хакер #095Журнал Хакер #094Журнал Хакер #093Журнал Хакер #092Журнал Хакер #091Журнал Хакер #090Журнал Хакер #089Журнал Хакер #088Журнал Хакер #087Журнал Хакер #086Журнал Хакер #085Журнал Хакер #084Журнал Хакер #083Журнал Хакер #082Журнал Хакер #081Журнал Хакер #080Журнал Хакер #079Журнал Хакер #078Журнал Хакер #077Журнал Хакер #076Журнал Хакер #075Журнал Хакер #074Журнал Хакер #073Журнал Хакер #072Журнал Хакер #071Журнал Хакер #070Журнал Хакер #069Журнал Хакер #068Журнал Хакер #067Журнал Хакер #066Журнал Хакер #065Журнал Хакер #064Журнал Хакер #063Журнал Хакер #062Журнал Хакер #061Журнал Хакер #060Журнал Хакер #059Журнал Хакер #058Журнал Хакер #057Журнал Хакер #056Журнал Хакер #055Журнал Хакер #054Журнал Хакер #053Журнал Хакер #052Журнал Хакер #051Журнал Хакер #050Журнал Хакер #049Журнал Хакер #048Журнал Хакер #047Журнал Хакер #046Журнал Хакер #045Журнал Хакер #044Журнал Хакер #043Журнал Хакер #042Журнал Хакер #041Журнал Хакер #040Журнал Хакер #039Журнал Хакер #038Журнал Хакер #037Журнал Хакер #036Журнал Хакер #035Журнал Хакер #034Журнал Хакер #033Журнал Хакер #032Журнал Хакер #031Журнал Хакер #030Журнал Хакер #029Журнал Хакер #028Журнал Хакер #027Журнал Хакер #026Журнал Хакер #025Журнал Хакер #024Журнал Хакер #023Журнал Хакер #022Журнал Хакер #021Журнал Хакер #020Журнал Хакер #019Журнал Хакер #018Журнал Хакер #017Журнал Хакер #016Журнал Хакер #015Журнал Хакер #014Журнал Хакер #013Журнал Хакер #012Журнал Хакер #011Журнал Хакер #010Журнал Хакер #009Журнал Хакер #008Журнал Хакер #007Журнал Хакер #006Журнал Хакер #005Журнал Хакер #004Журнал Хакер #003Журнал Хакер #002Журнал Хакер #001