Обзор эксплойтов Крис Касперски ака мыщъх Хакер, номер #092, стр. 092-050-6 Запускаем sniffer и смотрим на содержимое отправляемых пакетов. Видно, что адрес 0.0.0.0 вообще не попадает в «навязанный» список узлов, и вместо него там оказывается destination-адрес, продублированный в соответствующем поле IP-заголовка. Не исключено, что в какой-то конфигурации, которую мне так и не удалось воспроизвести, это вызывает помешательство NT, и она начинает посылать пакеты сама себе, проваливаясь в бесконечный цикл, завершающийся переполнением стека. Но как бы там ни было, Microsoft все-таки выпустила patch и представляет большой интерес распотрошить его и посмотреть, что же все-таки изменилось? Сейчас я продемонстрирую интересную технику поиска различий, которая неоднократно пригодится нам, хакерам, в будущем. Берем в руки файл Windows2000-KB917953-x86-RUS.EXE (для XP он будет слегка иным, но общий принцип действий останется неизменным), загружаем его в hiew и ищем строку «MSCF» (Microsoft Cab-File), следующую за длинной последовательностью «PADDINGXXX». Перемещаем курсор на первый символ «MSCF» и нажимаем <*> (начало выделения блока), а затем топчем <CTRL-END> для перемещения в конец файла. Нажимаем <*> еще раз и записываем блок в файл клавишей <F2>. Называем его, ну, скажем, TCP.CAB и открываем любым подходящим архиватором, например, RAR'ом. Там, среди прочего потребительского барахла, присутствующего во всех обновлениях, мы обнажим TCPIP.SYS – то, что нужно! Вытаскиваем его из архива и сравниваем с имеющейся у нас версией. Сразу же бросается в глаза, что длины файлов не совпадают — 320,176 байт старой версии против 320,336 байт у новой, - поэтому прямое побайтовое сравнение невозможно! Очевидно, что драйвер был перекомпилирован, - и необходимо прибегнуть к дизассемблированию, сравнивая версии на уровне мнемоник машинных команд (вряд ли весь исходный текст драйвера был изменен). Дизассемблируем оба драйвера с помощью IDA Pro и сохраняем полученные листинги в файлы old.lst и new.lst (от экспорта в аsm-формат лучше воздержаться, поскольку у него не ладится с табуляцией, и мы не сможем отрезать операнды машинных инструкций, когда нам это будет необходимо). При отсутствии IDA Pro можно воспользоваться утилитой DUMPBIN из комплекта поставки Microsoft Visual Studio, запустив его с ключом /DISASM. Полученные листинги можно сравнить либо «продвинутой» графической утилитой windiff, также входящий в состав Microsoft Visual Studio, либо простой консольной fc.exe, позаимствованной из штатной поставки Windows NT. Тут же обнаружится следующая пренеприятнейшая проблема: поскольку после рекомпиляции многие смещения изменились, то утилиты сравнения выдают ворох ложных срабатываний, в котором очень легко утонуть, так и не добравшись до истины. Например: Листинг 3: Различные версии файлов имеют разные смещения функций/глобальных переменных, выдавая множество ложных срабатываний ***** new.lst |