Издательский дом ООО "Гейм Лэнд"СПЕЦВЫПУСК ЖУРНАЛА ХАКЕР #60, НОЯБРЬ 2005 г.

Охота на КАИНа

payhash[Wolf D.A.]

Спецвыпуск: Хакер, номер #060, стр. 060-064-2


Допустим, на хост пришел UDPIP-пакет. На хосте, куда пришел пакет, настроен файрвол, который запрещает UDP-протокол. Обработает ли ОС такой пакет, и как она поступит с ним?

Да, действительно, такой пакет обработается ядром: сначала пакет помещается в область памяти, затем ядро проверяет, какие правила есть для такого типа пакета. Если тип пакета запрещен, он просто удаляется из памяти.

Теперь решим такую задачу: файрвол настроен так, что он запрещает все, кроме определенных портов. Опять же, если придет другой тип пакета, он в любом случае обработается ядром (пакет уже попал в операционную систему). Теперь для нас стало ясно, зачем пишутся и продаются ОС с закрытым кодом ядра :). Ты уверен, что твоя ОС с закрытым кодом ядра надежна? Да? Поздравляю. На самом деле никто не может дать гарантии того, что ОС с закрытым кодом ядра в определенное время не сможет сделать того, что ей не положено.

Как я уже сказал, в сетевом стеке IP/TCP (UDP) есть необязательные поля (имеется в виду, что в этих полях может содержаться любое значение этого типа), такие как ip_id, ip_tos, ip_offset. ОС в любом случае получит такой пакет и обработает его. Можно, конечно, возразить, что эти поля очень малы и в них невозможно записать много зловредной информации? А зачем записывать много? Сколько можно скомбинировать секретных команд в 8 бит? Правильно, 256 - не так уж и мало. Ядро получило пакет с определенным номером команды, которое, например, содержится в поле TOS. И тут – бац! - сгорела наша "мать", процессор, винчестер или завелся пользователь с нужными привилегиями ;). Всем стало весело.

Теперь пришла пора привести некоторые доказательства моим словам – рассмотрим программу, которая будет слушать сетевой трафик и при получении определенного пакета IP создаст пользователя с правами Administrator.

Усложним задачу, настроив в системе файрвол (OUTPOST или Kerio) и убедимся в их бесполезности в случае непредвиденных ситуаций ;). Разбирать весь код программы не будем, я заострю твое внимание на определенных моментах. Первое, что нужно написать, - это сетевой анализатор. Способ работы с RAW-сокетами выберем по вкусу: ws2_32, Berkley sockets, LIBPCAP etc. Так как 80% населения нашей страны использует ОС Windows[XY], а эта статья посвящена использованию операционных систем с закрытым кодом, будем использовать ws2_32.lib.

Назад на стр. 060-064-1  Содержание  Вперед на стр. 060-064-3