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

Завоевание интернета

Крис Касперски ака мыщъх

Спецвыпуск: Хакер, номер #059, стр. 059-066-4


Cisco наступила на грабли. И скоро получит в лоб. Она выиграла тактическое сражение, но проиграла стратегическую войну. Попытка удержать информацию под спудом породила скандал, а скандал породил интерес. Хакеры всколыхнулись и бросились штурмовать ISO. "Причина, по которой мы это делаем, заключается в том, что кто-то сказал: «Вы не сделаете этого»", - сказал один из них. "Линн не ограничился только идеями, хотя и не сообщил всех деталей. Но он сказал достаточно, чтобы люди могли понять, как им действовать, и они сделали это", - добавил другой.

Всплеск интереса к IOS обещает принести множество новых дыр, так что следующий год должен быть весьма "урожайным". Но как подступиться к маршрутизатору? Монитора нет, клавиатуры нет… Какие инструменты нам понадобятся? Какие машинные языки следует изучить? Короче, для начала исследований нам нужен хороший стартовый толчок.

Внутри маршрутизатора

Архитектурно Cisco состоит из материнской платы, процессора, памяти, шины и интерфейса ввода/вывода. Процессоры довольно разнообразны. В зависимости от модели маршрутизатора, в них может быть установлен и традиционный Intel, и Мотороллер, и MIPS. В частности, на дизассемблерных фрагментах, приведенных в презентации Майкла, легко узнаются PowerPC, так что поклонники x86 отдыхают или в срочном порядке изучают ассемблеры для остальных платформ. Перечень используемых процессоров приведен в таблице 1.

Полностью укомплектованный Cisco несет на своем борту четыре вида памяти:

1) Энергонезависимую перезаписываемую FLASH, содержащую сжатый образ операционной системы (для сжатия используется библиотека zlib);

2) Энергонезависимую перезаписываемую NVRAM со стартовой конфигурацией (startup-config);

3) Энергозависимую перезаписываемую DRAM/SRAM (обычная оперативная память);

4) Энергонезависимую неперезаписываемую постоянную память типа BootROM, содержащую ROMMON-код, включающий себя процедуру начального тестирования POST, первичный загрузчик IOS - короче говоря, ПЗУ в его обычном понимании.

В усеченных конфигурациях NVRAM может отсутствовать. Подробности можно найти в материале "Cisco Router Forensics" (http://cansecwest.com/core03/CSWcore03-RouterForensics-DDoS-v101.ppt).

Если процессор - сердце маршрутизатора, то операционная система - его душа. В оборудовании Cisco главным образом используются две операционных системы: CatOS и IOS (Internet Operation System), причем последняя намного более популярна, это операционная система реального времени, скомпилированная gcc и подозрительно похожая на BSD. Она основана на монолитной архитектуре ядра, то есть загружаемых модулей нет, во всяком случае, пока. По соображениям быстродействия в ранних версиях оси все процессы работали с одним и тем же образом (image) и разделяли единое адресное пространство (share memory space). Никакой защиты от воздействий со стороны одного процесса на код/данные, обрабатываемые другим процессом, не предусматривалось, что существенно облегчало написание shell-кода. Также имелся псевдомногозадачный планировщик невытесняющего типа "run to completion" (выполнение до завершения). Другими словам, если в NT операционная система сама переключает потоки без участия со стороны программиста, то в IOS поток должен явно вызвать системную функцию для передачи управления. А это значит, что shell-код может легко захватить власть над системой и не давать удалять себя, впрочем, радоваться по этому поводу слишком рано. Начиная с IOS-XR поддерживается и защита памяти между процессами, и вытесняющая многозадачность. (Подробности о структуре IOS можно почерпнуть из книжки "Inside Cisco IOS software architecture" издательства Cisco Press, которую легко найти в любом парнокопытном.)

Назад на стр. 059-066-3  Содержание  Вперед на стр. 059-066-5