Побег через брандмаузер


Sniffer exploit или пассивное сканирование


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

По сети путешествует огромное количество снифферов для UNIX, в большинство своем распространяемых в исходных текстах и неплохо прокомментированных. Наиболее универсальный способ прослушивания трафика апеллирует к кросс-платформенной библиотеке libcap, портированной в том числе и под Windows95/98/ME/NT/2000/XP/CE (на сайте http://winpcap.polito.it/install/default.htm можно найти и сам порт библиотеки, и tcpdump для Windows – очень рекомендую). Если же на атакованном компьютере этой библиотеки нет (а червь не может позволить себе роскошь тащить ее за собой), мы будем действовать так: открываем сокет в сыром режиме, связываем его с прослушиваемым интерфейсом, переводим последний в "неразборчивый" (promiscuous) режим, в котором сокет будет получать все, проходящие мимо него пакеты, и… собственно, читаем их в свое удовольствие.

В различных операционных системах этот механизм реализуется по-разному. В LINUX начиная с версии 2.2 появились поддержка пакетных сокетов, предназначенных для взаимодействия с сетью на уровне драйверов и создаваемых вызовом socket (PF_PACKET, int type, int protocol), где type может принимать значения SOCK_RAW

("сырой" сокет) или SOCK_DGRAM ("сухой" сокет с удаленными служебными заголовками). Вызов ifr.ifr_flags |= IFF_PROMISC; ioctl (s, SIOCGIFFLAGS, ifr) активирует неразборчивый режим, где ifr – интерфейс, к которому сокет был привязан сразу после его создания (подробнее об этом можно прочитать в статье "анализатор сетевого трафика", опубликованной в октябрьском номере журнала "Системный Администратор" за 2002 год).

Под BSD можно открыть устройство "/dev/bpf" и после его перевода в неразборчивый режим – ioctl(fd, BIOCPROMISC, 0) – слушать пролетающий мимо узла трафик.


- Начало -  - Назад -  - Вперед -