Конференция DEFCON 16. «Криминальная разработка iOS Cisco». Феликс Линднер, глава Recurity Labs +9


Следующий пункт моего выступления посвящается часто задаваемому вопросу о работе центров Cisco. Почему именно Cisco? Потому что они занимают 92% рынка продажи роутеров стоимостью от $1500 и 72% рынка свитчей. Мы также обсудим программное обеспечение Juniper, которое как с точки зрения взлома, так и с точки зрения защиты их безопасности представляют собой открытое ПО на основе FreeBSD. Поэтому для нас оно не интересно. Если с этих же точек зрения рассмотреть дешёвые домашние роутеры, то мы увидим, что в них встроен классический Linux.

Сегодня мы по порядку рассмотрим:

  • инфраструктуру IP маршрутизаторов и iOS Cisco;
  • внутреннюю операционную систему Cisco;
  • существующие подходы к проблемы взлома и безопасности продуктов компании;
  • новый аналитический подход: предложения, возможности, изменения;
  • публичное предложение;
  • будущую работу в этой области.

Интернет и корпоративные сети обычно используют сетевые протоколы IPv4 и IPv6 – первый чаще, второй внедряется слишком медленно. Дизайн IP-сетей использует интеллектуальные узлы для обеспечения маршрутизации. Такую конфигурацию протокола изменить невозможно.

«Плоские», одноранговые сети работают по своим собственным правилам.

Почему необходима криминалистика сетей? Её основной целью является исследование текущего состояния компьютеров и цифровых хранилищ информации. Как и любой вид криминалистики, она состоит из получения доказательств, извлечения из них информации и её анализа. Для существующих операционных систем компьютеров разработаны инструменты и методика проведения расследований, а для сетей ничего подобного не существует. Поэтому мы не можем сказать, по какой причине вышла из строя «коробочка» Cisco, пока не исследуем все обстоятельства.

Кому нужно взламывать роутеры? Если Вы взломаете обычный компьютер, то получите к нему доступ. Взломав главный компьютер, получите доступ к рабочей группе компьютеров. Если Вы взломали свитч, Вы получите доступ ко всем присоединённым к нему компьютерам. Если Вам удастся взломать роутер, Вы получите доступ ко всему, что есть в сети.

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



Если Вам удаётся взломать свитч, Вы получаете контроль над группой подключенных к нему компьютеров, причем остальная сеть не способна определить, кто захватил контроль над свитчем. Поэтому Вам будет предоставлен доступ к остальной сети, как будто бы Вы и есть авторизированный пользователь, имеющий на это право.



Если же Вы захватили контроль над роутером, в Ваших руках оказывается вся сеть. При этом приятным бонусом станет неограниченный доступ в Интернет. Сам интернет можно представить как огромное количество роутеров.



Ниже изображена схема кооперативной сети в стиле Cisco и сетевая безопасность. Здесь изображено множество автономных систем, объединённых вокруг одного ядра сети. Тут изображены всякие деловые здания, правительственные и частные дома.



А справа вверху показана группа, которая помечена символом (_x_). Если кто не в курсе, это международное обозначения слова «задница». Именно оттуда я попытаюсь взломать нашу сеть. На границах этих автономных систем расположены файерволы, IDS, IPS – они не всем нужны, но все ими пользуются. Если рассмотреть ядро сети, то мы увидим роутеры, соединённые с автономными системами и обеспечивающие маршрутизацию данных. В них есть входные и выходные фильтры, аутентификаторы пользователей сети и прочее, обеспечивающее защиту ядра от стороннего проникновения. Четыре роутера, расположенные в середине ядра, доверяют друг другу. Они обеспечивают взаимодействие всех участников сети и просто вынуждены доверять друг другу, иначе не смогут работать. Это говорит о том, что сеть представляет собой строгую иерархическую структуру, и её безопасность также подчинена иерархии.

Элемент системы может защищаться от подчинённых ему устройств, но противостоять вышестоящим устройствам очень трудно. Вы можете принять сообщение, проигнорировать его или вообще лишиться Интернета, вступив в спор с вышестоящим звеном. Способность защищаться от элемента с такими же правами вообще является большой редкостью, так как отсутствие доверия мешает работе. Захватив контроль над главным звеном иерархии, ядром сети, Вы сможете контролировать все нижестоящие структуры.

Если Вы сможете контролировать один из роутеров, который является равнозначным звеном ядра, то система станет Вашей. Для противодействия этому существуют протоколы безопасности. Они гарантируют, что никто не сможет модифицировать и реплицировать сообщения протокола или подделывать равноценные элементы системы. Но если кому-то всё-таки удастся это проделать, протокол безопасности не сможет ничего с ним сделать. Вы будете знать, что Вас взломали, протокол даст это понять, но Вы не сможете ничего с этим поделать. Поэтому пользователю приходится выбирать между доступностью сети и её безопасностью. Например, Вы можете встать с дивана и пойти в банк, чтобы провести платёж вручную, или оставаться на диване и проделать это через Интернет, зная, что Ваши деньги могут украсть в процессе их путешествия по сети.

Для компаний подобная ситуация намного опасней, потому что они не могут совершать какие-либо действия вне сети. И если отключат проверку протоколов безопасности, сеть просто перестанет работать.

Однако протокол безопасности предоставляет хакеру возможность отследить, по каким каналам идёт его распространение. Если пользователь сможет контролировать путь, по которому осуществляется его соединение, это можно назвать «источником маршрутизации», и он уверен, что больше никто в Интернете не использует этот маршрут, то пользователь получит нужную власть над сетью.

В IP сетях сетевые узлы, обладающие «интеллектом», принимают решения о пересылке информации, а граничные узлы, где расположены пользователи, не могут контролировать поток трафика. Если Вы взломаете сетевой узел, то получите контроль над сетью. Вот зачем нам нужна криминалистика сетей – мы находим возможность для взлома и способы ей противостоять.

Существует 3 типа сетевых атак:

  • атака на основе протоколов;
  • функциональная атака;
  • внедрение вредоносных кодов.

Атаки на основе протоколов представляют собой внедрение управляющих протокольных сообщений в сеть (атака протоколов маршрутизации), когда атакующий становится частью внутренней структуры сети и влияет на пересылку сообщений. Примером такого рода атаки является искажение протоколов ARP, DNS, внутренних протоколов OSPF, EIGRP и взлом внешних маршрутизаторов сети BGP.

Функциональные атаки заключаются в искажении функций сети. К проблемам конфигурации сети относятся ложные пароли и ложные протоколы управления сети SNMP, а также коды доступа, выложенные на общественных форумах. Людям часто приходят сообщения с просьбой поменять пароль для обеспечения безопасности, но они не всегда обращают внимание на отправителя такого сообщения. Человек меняет пароль по просьбе хакера, и тот получает доступ в сеть от его имени.

Далее следует взлом проверки системы доступа и перенаправление уязвимости, что позволяют проделывать над собой протоколы HTTP Cisco, начиная с 16 версии. Взлом проверки уязвимости может осуществляться с помощью протоколов проверки целостности информации SNMP v.3 HMAC или memsnp — myHMAC, PackHMAC, PackHMAC_len. Такой взлом заставляет систему думать, что в пакете находится проверенная, а не вредоносная информация. Кроме того, на сеть можно влиять через скрытые уязвимости. SNMP является самым популярным стандартом для роутеров, и люди не используют ничего другого.

Если в версиях SNMP v.1/2 использовался обычный пароль, то версия 3 использует шифрование. Если Вам удаётся внедрить туда собственное шифрование, всё в порядке. Если нет – подобрать пароль Вам не удастся. SNMP v.3 HMAC стал использоваться только с 2008 года.

HMAC это код проверки подлинности сообщений, использующий односторонние хеш-функции. В криптографии он проверяет целостность информации, чтобы доказать, что Ваш пароль именно Ваш, а не придуманный и вставленный хакером в Вашу веб-форму аутентификации. То есть что данные, хранящиеся в ненадёжной среде, подверженной атакам, не были изменены злоумышленником. Если хеш-алгоритм простой, его можно взломать, если он использует алгоритм с большей длиной шифрограммы, например, SHA256, придётся потрудиться. Однако большинство роутеров до сих пор используют простое шифрование, вот почему криптографы требуют регулярно обновлять операционную систему, чтобы усложнить его.

Люди также применяют роутеры, в которых используются пакетные ключи Debian SSH – сетевого протокола, позволяющего управлять роутером или компьютером удалённо через командную оболочку. Здесь шифруется абсолютно весь поток информации, включая передаваемые пароли.
Ещё одной уязвимостью Cisco является очерёдность обмена информацией. Пакеты данных, отправляемые устройствами, выстраиваются в очередь перед роутером, и если кто-то попытается выхватить какой-то пакет из очереди, вся передача остановится.

Рассмотрим использование двоичных кодов. К уязвимостям служб маршрутизации относятся:

  • использование эксплойта TFTP (простого протокола передачи данных) группы хакеров Phenoelite;
  • использование эксплойта HTTP (сетевого протокола) Phenoelite;
  • использование эксплойта FTP Энди Дэвиса.

К уязвимостям протокола маршрутизации относятся:

  • использование эксплойта OSPF (протокола динамической маршрутизации) Phenoelite;
  • использование эксплойта IPv6 (интернет протокола) Майкла Линна.

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

Рассмотрим, как осуществляется обнаружение и мониторинг угроз. Это можно делать с помощью следующих функций.

Например, в протоколах проверки целостности информации SNMP есть механизм голосования, который активирует всплывающие на экране уведомления (ловушки). Эти протоколы управляют роутерами и сообщают, что происходит с устройством в процессе работы.

Системный журнал Syslog также отправляет всплывающие уведомления свободной формы, и если обратить на это внимание, можно заметить, если кто-то пытается изменить конфигурацию Вашего роутера.

Сообщения конфигурации настройки тоже можно отследить, существует мониторинг путей маршрутизации в реальном времени, позволяющий увидеть изменения пути передачи данных. Последним средством является подсчёт объёма трафика. Он не разработан для наблюдения за безопасностью, а служит для предотвращения потерь трафика, за который заплатил клиент. Однако подсчёт количества трафика может указать, кто в сети использует самый большой объём данных, и возможно, производит таким образом сетевую атаку. Обычно провайдеры блокируют пользователя, если от его компьютера исходит слишком большой трафик.



Следующая таблица показывает, кто и какие угрозы может обнаружить.



Вредоносные атаки можно обнаружить с помощью SNMP, Syslog, наблюдения за маршрутизацией и подсчёта трафика. Внутренние атаки на роутер может засечь SNMP, реже – Syslog, наблюдения за маршрутизацией и подсчёта трафика.

Внешние атаки также детектируются с помощью SNMP, Syslog, наблюдения за маршрутизацией и подсчёта трафика.

Несанкционированное проникновение в настройки конфигурации роутера можно обнаружить с помощью SNMP, Syslog и диспетчера устройств, который выдаёт сообщения конфигурации. Угроза проверки доступа может быть обнаружена с помощью Syslog и сообщений конфигурации. Внедрение вредоносных бинарных кодов может обнаружить только мониторинг сообщений конфигурации, и то, если эти коды достаточно простые и затрагивают саму конфигурацию роутера. Таким образом, самыми опасными являются атаки с помощью бинарных кодов.
Что делают эти коды? Они искажают выполнение таких процедур, как скрытая идентификация доступа клиента, механизм входа в сеть (регистрации в сети) и нарушают функциональность файервола. Коды могут изменять структуру данных: менять уровень доступа к виртуальному интерфейсу Cisco VTY, добавлять ложный виртуальный интерфейс (атака Майкла Линна) и приостанавливать процессы передачи данных. Например, если Вам не нужны какие-то из происходящих в роутере процессов, Вы их прекращаете.



Однако обнаружить это можно только после того, как атака уже произошла. Что ещё могут делать бинарные коды?

  • изменять текущую конфигурацию и конфигурацию состояния машины, например, протокол сетевого управления SNMP;
  • загружать скрытые управляющие команды языка TCL (последние версии iOS поддерживают написание скриптов на этом языке);
  • перехватывать управление портами TCP с помощью этих команд, а в некоторых версиях iOS команды TCL позволяют даже «заморозить» процессы в виртуальном интерфейсе VTY.

Обычно к таким процедурам прибегают люди, которые были лишены права доступа к высшему уровню системы и пытаются его вернуть. Проще говоря, человек запускает вредоносный скрипт, который возвращает ему бывшие привилегии.

Что нужно для расследования случаев использования бинарного кода? Найти доказательства вмешательства в систему, восстановить информацию с необработанных данных и проанализировать эту информацию. Для этого нужно хорошо разбираться в особенностях iOS Cisco.

Какая память используется в устройствах операционной системы Cisco, например, в роутерах серии 5000? Операционная система загружается из режима ROMMON (ROM Monitor). В этом режиме работа роутера приостанавливается.



Образ операционной системы загружается из flash-накопителя или сети в оперативную память RAM. Этот образ может быть самораспаковывающимся и содержать фирменную прошивку для дополнительного оборудования роутера, то есть модульного «железа» — сетевых карт, файерволов, супервизоров.

Конфигурация загружается в виде текста ASCII из энергонезависимой памяти NVRAM или из сети. Она пребывает в «разобранном» состоянии и смешивается с образом версии в зависимости от настроек конфигурации по умолчанию. Например, для двух разных роутеров конфигурация по умолчанию тоже может быть разной.

Всё это содержится в RAM. Изменения конфигурации вызывают немедленный эффект, и новая конфигурация записывается обратно в NVRAM с помощью команды. Таким образом, если Вы собираетесь взломать роутер, это нужно делать во время загрузки системы. Изменения конфигурации автоматически нигде не сохраняются, поэтому у специалистов может возникать вопрос типа: «что же мы меняли в этой конфигурации в течение последних двух лет»?

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

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



Однако перезагрузка уничтожает все доказательства того, из-за чего возникла проблема в системе. Так что в системе Cisco тоже возможны не фиксируемые доказательства вмешательства.
Подобное случается в системе flash-файлов, если хакер статически модифицирует образ iOS, в энергонезависимой памяти NVRAM, если хакер изменяет конфигурацию и записывает её обратно в NVRAM, и в обеих этих областях, если хакер использует бинарные коды.

Хакеры не используют подобный подход, потому что можно оставить следы своего вмешательства в изменённом образе системы и в изменённой конфигурации загрузки, а прибегают к манипуляции с RAM, в которой не остаётся следов вмешательства.

Хорошей вещью является использование функций отладки для фиксирования доказательств. iOS может записывать полные дампы памяти ядра, то есть в определённых моментах делать снимки информации о состоянии системы. Цели дампа: неполадки TFTP, FTP, RSP, Flash. Полный дамп памяти включает в себя снимок главной памяти, снимок памяти IO и памяти слотов PCI. Дампы памяти могут представлять собой серьёзные доказательства для компьютерной криминалистики. Эту технологию широко используют инженеры Cisco для защиты своего оборудования.

Дамп памяти ядра заранее конфигурируется в настройках системы. Изменения конфигурации не оказывают влияния на функциональность или производительность роутера. Все iOS разных устройств конфигурируются для работы с дампом памяти ядра, расположенного на одном или нескольких центральных FTP-серверах.

Такой подход позволяет уменьшить требования к мониторингу системы, сохраняет доказательства вмешательств в работу системы и позволяет прослеживать взаимосвязь неполадок между различными роутерами. Вы можете записать в дамп памяти ядра всё, что происходит в ОС присоединённых роутеров. Это избавляет Вас от необходимости подскакивать ночью с постели, когда один из роутеров внезапно перезагружается или часть сети перестаёт функционировать. Вы можете выяснить, что произошло, придя утром на работу и проанализировав дамп памяти ядра системы.

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

Анализ информации памяти ядра заключается в том, что данные дампа должны быть переведены в понятную форму с помощью программы чтения дампа. Это позволяет получить ответы на вопросы:

  • что произошло с роутером, когда был сделан снимок памяти?
  • какие процессы управляли данными в этот момент?
  • откуда поступили эти данные?
  • какой пакет данных привёл к неполадкам роутера?

К программе-анализатору дампа памяти применяют следующие требования:

  • она должна быть 100% независимый – никаких кодов Cisco, никаких присоединённых баз для анализа. Потому что если Вы исследуете повреждённые коды Cisco, это не стоит делать с помощью самих же кодов Cisco;
  • должна быть непредвзятой (никаких абстрактных допущений о причине событий) и обладать способностью копировать большой объём повреждённых данных;
  • быть не зараженной самой, для чего такую программу не стоит писать на языке С;
  • если она обладает вышеперечисленными свойствами, её нужно использовать с таким полезным инструментом, как CIR – Cisco Incident Report, или журналом событий Cisco.

При анализе ядра вне системы iOS Cisco нужно иметь ввиду, что Вам предстоит работать с одним большим бинарным двоичным файлом ELF, который представляет собой образ системы. По существу, это большая, основанная на UNIX программа, которая загружается с помощью ROMMON, аналога BIOS. Она запускается прямо в главном процессоре роутера, и не позволяет регулировать приоритет исполнения, как это происходит в обычном компьютере с многоядерным процессором. Карта виртуальной памяти используется по минимуму.

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

Образ системы iOS в виде файла ELF содержит всю необходимую информацию об отображении памяти роутера. Образ служит своеобразным чертежом, на котором расположены файлы ядра. Использование неповреждённого образа гарантирует просмотр кодов и информации, которые разрешены только для чтения. Таким образом, мы можем обнаружить на этой карте пропатченные, переписанные данные, не принадлежащие «родной» системе, потому что в них были внесены запрещённые изменения. Мы просто сравниваем образ системы с дампом памяти и видим изменённые данные.

Разработанная нами программа Recurity Labs SIR успешно противодействует хакерской программе Topo’s DIK, так как анализирует несовпадение кодов виртуальных адресов в сегментах файла ELF и дампа памяти. У этой шпионской программы они составляют 4 элемента в каждом «испорченном» коде.

Далее мы выполняем реконструкцию всей «кучи» информации, которую использует ядро системы. Эта информация содержит в себе простые метаданные для процессов отладки, по 40 байт в одном блоке в версиях iOS до 12.3 и по 48 байт в iOS версии 12.4.

Реконструкция всего массива расширяет период действия события в реальном времени, что позволяет заметить малейшие отклонения, которые могли бы оставаться в тени нашего внимания. Наша программа как бы помещает проверенные данные на отдельный лист и проверяет следующие. И если в адресах данных есть отличия, это сказывается на объёме блока. Имеет место также эвристический анализ редко используемых областей массива, в которых также может быть вредоносный код. В результате мы находим блоки, при обработке которых наблюдался рост использования памяти, что в свою очередь, свидетельствует об их изменении. И мы можем определить, какие именно процессы «съедают» память, и прекратить их.

У нас также есть список процессов, извлечённых из общего списка процессов iOS. Он позволяет определить месторасположение стеков, в которых они происходили. Мы идентифицируем стек процесса и адрес, с которого поступила команда на его изменение, получаем историю использования процессора для выполнения данного процесса и описание события, которое обрабатывалось процессором. Мы сравниваем стек, память и процесс и выясняем, что было не в порядке.

Почти все описанные технологии анализа могут быть применены, если есть возможность реконструкции двух выше указанных структур данных.

Мы можем извлечь любой TCL-скрипт из дампа памяти, для чего используется декомпилятор TCL, который превращает, транслирует программный процесс в его исходный код.

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

Рассмотрим память для пересылки пакетов IOS. Операционная система позволяет использовать роутер как переключатель процессов, быстрый свитч, элемент системного процесса или аппаратный ускоритель свитча. Все эти функции, кроме аппаратного свитча, используют IO память. Она записывается в отдельный дамп памяти. По умолчанию, около 6% памяти роутера относится к виртуальной IO памяти. Увеличение размера виртуальной памяти может ускорить процесс передачи данных. Аппаратное обеспечение свитча использует PCI память. Она также записывается в отдельный дамп памяти ядра.

Так называемы кольцевые буферы памяти роутера группируются по размерам – маленький, средний, большой и огромный. Например, TCP пакеты используют большие буферы памяти, а эксплойты – маленькие. И эти маленькие пакеты остаются в памяти долгое время. Устройства интерфейса имеют свои собственные буферы памяти для локального управления трафиком. IOS старается не заносить пакеты в память, потому что новый трафик не стирает автоматически следы старого.

Чтобы освободить память, мы извлекаем трафик из виртуальной памяти в файл PCAP. Это файл, который содержит пакетные данные сети. Этот процесс происходит с помощью пакетных дампов CIR. При этом роутер отправляет трафик сам себе. Для проверки трафика используется технология совпадения списка доступа Access List Matching и маршрутизация трафика QoS. CIR также записывает в дамп памяти пакеты, проходящие через роутер, поэтому имеется возможность реконструировать их фрагменты. Таким образом мы можем засечь, при прохождении какого пакета произошёл сбой роутера.

Полезным является изучение отчёта критического события, которое вызвало крах системы. Здесь обычно находятся адреса, по которым можно отследить причину неполадок.

Как я уже говорил, нами специально для Cisco создана программа CIR – Cisco Incident Response, которую можно бесплатно скачать с нашего сайта http://cir.recurity-labs.com/. Здесь представлена версия CIR1.1. Эта программа позволяет производить анализ дампа памяти ядра iOS и может стать для вас полезным инструментом сетевой криминалистики. Вы можете использовать эту программу для анализа процессов, происходящих в Вашей собственной сети, использующей роутеры и свитчи компании Cisco.

Замечу, что любая попытка получить образ системы в сети Cisco вызовет перезагрузку роутера. Шанс проделать это успешно не превышает 1 на 100.000 попыток. Кроме того, данные каждый раз записываются в разные стеки памяти, причем адреса стеков варьируются даже в одном и том же образе системы.

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


Спасибо, что остаётесь с нами. Вам нравятся наши статьи? Хотите видеть больше интересных материалов? Поддержите нас оформив заказ или порекомендовав знакомым, 30% скидка для пользователей Хабра на уникальный аналог entry-level серверов, который был придуман нами для Вас: Вся правда о VPS (KVM) E5-2650 v4 (6 Cores) 10GB DDR4 240GB SSD 1Gbps от $20 или как правильно делить сервер? (доступны варианты с RAID1 и RAID10, до 24 ядер и до 40GB DDR4).

Dell R730xd в 2 раза дешевле? Только у нас 2 х Intel Dodeca-Core Xeon E5-2650v4 128GB DDR4 6x480GB SSD 1Gbps 100 ТВ от $249 в Нидерландах и США! Читайте о том Как построить инфраструктуру корп. класса c применением серверов Dell R730xd Е5-2650 v4 стоимостью 9000 евро за копейки?




К сожалению, не доступен сервер mySQL