Обзор эксплойтов Крис Касперски Хакер, номер #094, стр. 094-054-3 Exploit Не требуется Solution Отключи беспроводные устройства (задействуй их только при острой необходимости) или установи пакет обновления от Intel: support.intel.com/support/wireless/wlan/sb/CS-023065.htm, размер которого составляет порядка 100 Мб. Details Ритуал вызова бага, появление которого сопровождалось голубым экраном смерти, в общих чертах выглядел так: 1) Johnny Cache установил на жертву, снабженную картой беспроводного доступа Intel Centrino PRO, утилиту netcat (входит практически в любой LINUX-дистрибутив, бесплатный порт для Windows можно нарыть на www.vulnwatch.org/netcat), заставив ее слушать 2048 порт (в принципе, можно обойтись и без этого: прослушивание лишь увеличивает вероятность успешной атаки); 2) атакующий узел начал бомбардировать жертву UDP-пакетами размером 1400 байт, заполненных для наглядности CCh-байтами и поступающими на 2048 порт с интервалом в 400 микросекунд между ними. 3) одновременно с этим атакующий направил шторм disassociation-запросов («disassociation requests») с интервалом 4000 микросекунд. «Disassociation request» – это одно из 6-ти командных сообщений беспроводного протокола, черновое описание которого лежит на tools.ietf.org/wg/netlmm/draft-giaretta-netlmm-dt-protocol-00.txt; 4) BSOD не заставил себя долго ждать — и система рухнула. Эксперименты показали, что вероятность возникновения голубого экрана смерти зависит только от скважности пакетов, но отнюдь не от их содержимого, как и должно быть в ситуации с ошибкой синхронизации. Johnny Cache приложил к своему посту ссылки на дампы памяти Windows XP: www.802.11mercenary.net/~johnycsh/prone_to_deletion/dd/crash2.zip (BSOD без подмены EIP или, выражаясь его терминологией, unsuccessfully attempt to gain EIP) и www.802.11mercenary.net/~johnycsh/prone_to_deletion/dd/crash3.zip (BSOD с успешной подменой EIP). Готовой атакующей программы с shell-кодом на борту предоставлено не было, но ее сможет написать каждый желающий, однако прежде, чем погружаться в анализ дампов, занимающих в своей совокупности свыше 200 Мб, мы должны рассмотреть механизм обработки прерываний в NT, иначе ничего не будет понятно. Прерываниями называются события, поступающие от оборудования, генерируемые процессором или операционной системой в определенные моменты времени, например, когда DMA-контроллер завершает передачу данных или таймер говорит «щелк». Обработка прерываний происходит в соответствии с их приоритетом: прерывания с более высоким приоритетом прерывают менее приоритетные прерывания (извиняюсь за тавтологию :)), возвращая им управление после того, как они будут обработаны. Аппаратные контроллеры прерываний обеспечивают до 256 уровней приоритетов, однако NT не поддерживает их, предпочитая использовать свою собственную систему приоритетов, известную под аббревиатурой IRQL (Interrupt Request Levels – Уровни запроса прерываний). |