Продолжаю публикацию решений отправленных на дорешивание машин с площадки HackTheBox.
В данной статье долго блуждаем в ресурсах SMB, находим альтернативные потоки NTFS и реверсим приложение на С#.
Подключение к лаборатории осуществляется через VPN. Рекомендуется не подключаться с рабочего компьютера или с хоста, где имеются важные для вас данные, так как Вы попадаете в частную сеть с людьми, которые что-то да умеют в области ИБ :)
Организационная информация
Чтобы вы могли узнавать о новых статьях, программном обеспечении и другой информации, я создал канал в Telegram и группу для обсуждения любых вопросов в области ИиКБ. Также ваши личные просьбы, вопросы, предложения и рекомендации рассмотрю лично и отвечу всем.
Вся информация представлена исключительно в образовательных целях. Автор этого документа не несёт никакой ответственности за любой ущерб, причиненный кому-либо в результате использования знаний и методов, полученных в результате изучения данного документа.
Вся информация представлена исключительно в образовательных целях. Автор этого документа не несёт никакой ответственности за любой ущерб, причиненный кому-либо в результате использования знаний и методов, полученных в результате изучения данного документа.
Recon
Данная машина имеет IP адрес 10.10.10.178, который я добавляю в /etc/hosts.
10.10.10.178 nest.htb
Первым делом сканируем открытые порты. Так как сканировать все порты nmap’ом долго, то я сначала сделаю это с помощью masscan. Мы сканируем все TCP и UDP порты с интерфейса tun0 со скоростью 500 пакетов в секунду.
masscan -e tun0 -p1-65535,U:1-65535 10.10.10.178 --rate=500
Теперь для получения более подробной информации о сервисах, которые работают на портах, запустим сканирование с опцией -А.
nmap -A nest.htb -p445,4386
Первым делом обратим внимание на ресурс SMB. Попробуем войти от имени гостя.
sauna
И обнаруживаем доступные ресурсы. Давайте рекурсивно посмотрим все доступное нам содержимое.
Из приведенных файлов, наиболее интересна записка «Welcome Email.txt». Подключимся к ресурсу и сохраним себе на локальную машину данный файл.
А в самом сообщении на сообщается ресурс и учетные данные для подключения к нему.
Посмотрим все содержимое ресурса, но уже с использованием найденных учетных данных.
В данном случае нас всегда должны интересовать файлы конфигураций, так как в них можно находить названия ресурсов, служб или даже учетные данные. Поэтому снова подключаемся к ресурсу и забираем все конфиги.
И в одном файле находим название закрытого ресурса «Secure$», а в другом — учетные данные пользователя.
Но пароль не подходит, видимо он зашифрован. Но выходит обратиться к найденному ресурсу с уже имеющимися учетными данными.
Но мы не можем просмотреть содержимое директории IT, благо имеем одну имеющуюся внутри директорию (следует из конфига). Смотрим все содержимое \Secure$\IT\Carl\.
Там расположен проект VisualBasic. Я подключился через проводник и скопировал папку с проектом на локальную машину.
Открываем проект и находим место, где из конфига считывается пароль и расшифровывается.
После беглого просмотра в сам принцип шифрования лезть не особо хотелось, поэтому загружаем проект в Visual Studio и изменяем код, чтобы узнать пароль при отладке.
Так мы узнаем реальный пароль пользователя. Подключаемся и забираем токен.
ROOT
Осматриваемся дальше в рабочей директории пользователя.
Из файла конфигураций мы понимаем, что работает на втором порте.
Но подключившись и посмотрев help, понимаем, что нужен пароль.
Заходим в директорию и скачиваем приложение, возможно, проанализировав его, мы сможем найти пароль.
Повезло, что данное приложение написано на C#, это позволит нам легко декомпилировать весь проект с помощью dnSpy.
Таким образом программа, программа принимает на вход файл конфигураций, откуда достает определенные параметры.
Но в проекте ничего не находим. Далее было потрачено много времени, пока не пришло осознание всмотреться “глужбе” в пустой файл “Debug Mode Password.txt”. Подключим сетевой ресурс.
А теперь посмотрим все потоки данного файла. И определяем, что поток Password хранит 15 символов.
Прочитаем его, находим пароль для debug режима (затупил… бывает).
Снова подключаемся, вводим данный пароль и смотрим справку.
Далее стоило немного побродить в приложении, ведь нужно найти для декомпилированного проекта какой-то конфиг.
Судя по названию приложения, идем в LDAP.
И снова находим уже имеющееся у нас приложение и конфиг файл.
Вот и те параметры которые преобразуются в приложении. Найдем функцию расшифровывания, и сделаем вывод значения в консоль, перед его возвратом.
Ну и изменим одно из условий, чтобы приложение не останавливалось, при проверке наличия файла.
Перекомпилируем проект и запустим приложение, указав конфиг в качестве аргумента.
И получаем пароль администратора. Далее успешно подключаемся с помощью psexec.
Имеем полный контроль над машиной.
Вы можете присоединиться к нам в Telegram. Там можно будет найти интересные материалы, слитые курсы, а также ПО. Давайте соберем сообщество, в котором будут люди, разбирающиеся во многих сферах ИТ, тогда мы всегда сможем помочь друг другу по любым вопросам ИТ и ИБ.
catBasilio
Как-то педствлял работу хакеров немного по-интеллектуальнее что-ли.
Думал там контроль будет добываться через meltdown, spectre, или вообще найти 0-day уязвимость софте и поэксплуатировать ее.
А тут банально пошариться по помойке и найти файл в котором пароль написан. Даже дизассемблером ничего не пришлось делать. Необфусцированный c# — это вообще ниочем.
Greendq
Особенно повеселил момент, что программа расшифровывает пароли для проверки. Первое правило безопасности — фарш обратно не проворачивать! Т.е. использовать только необратимые (и солёные) хеши.
NordeN17
Особенно повеселил тот момент, когда взрослые дядьки всерьез обсуждают ctf задания, да еще и уровня Easy, предназначенные для обучения студентов ИБ первого-второго курса. Попросил бы профили ваши глянуть на hackerone, да уверен что там пусто. Так уверены в своих силах — регистрация на той платформе бесплатная, попробуйте хоть одну машину уровня Insane пройти)
RIPEMD160
два теоретика детектед, бомбит с вас сильно в данную секунду.