![image](https://habrastorage.org/webt/1q/ca/yw/1qcaywxbp6rhhpdnvzrz962rtuq.png)
Продолжаю публикацию решений отправленных на дорешивание машин с площадки 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
![image](https://habrastorage.org/webt/xj/kx/xl/xjkxxlv08bbqnoe4gbgwtguoxps.png)
Теперь для получения более подробной информации о сервисах, которые работают на портах, запустим сканирование с опцией -А.
nmap -A nest.htb -p445,4386
![image](https://habrastorage.org/webt/m0/of/ri/m0ofrismd3eiavaq3pwsdwrnf5u.png)
Первым делом обратим внимание на ресурс SMB. Попробуем войти от имени гостя.
![image](https://habrastorage.org/webt/er/ja/sr/erjasr0e1z10xlk-viawzul3ztw.png)
sauna
И обнаруживаем доступные ресурсы. Давайте рекурсивно посмотрим все доступное нам содержимое.
![image](https://habrastorage.org/webt/eo/g7/m_/eog7m_ppephro2mox1k3qiiav4w.png)
Из приведенных файлов, наиболее интересна записка «Welcome Email.txt». Подключимся к ресурсу и сохраним себе на локальную машину данный файл.
![image](https://habrastorage.org/webt/pz/bj/np/pzbjnpsuibvqekhaw8srf-94ns8.png)
А в самом сообщении на сообщается ресурс и учетные данные для подключения к нему.
![image](https://habrastorage.org/webt/sa/j2/gh/saj2ghkvbfk8lny49jizvvawyfm.png)
Посмотрим все содержимое ресурса, но уже с использованием найденных учетных данных.
![image](https://habrastorage.org/webt/kx/ld/_8/kxld_8g1kwwcgrzgsjidyj8xi1o.png)
В данном случае нас всегда должны интересовать файлы конфигураций, так как в них можно находить названия ресурсов, служб или даже учетные данные. Поэтому снова подключаемся к ресурсу и забираем все конфиги.
![image](https://habrastorage.org/webt/n1/rr/zm/n1rrzmayhnjffj3qcrykh_fmsq0.png)
И в одном файле находим название закрытого ресурса «Secure$», а в другом — учетные данные пользователя.
![image](https://habrastorage.org/webt/b1/f0/wc/b1f0wciwt8jctq6xpggbn6h3-oi.png)
![image](https://habrastorage.org/webt/v7/gp/cz/v7gpcze1fwtf_5ktriy3x7tn3c4.png)
Но пароль не подходит, видимо он зашифрован. Но выходит обратиться к найденному ресурсу с уже имеющимися учетными данными.
![image](https://habrastorage.org/webt/9l/x0/bg/9lx0bgkmvtsdmun0mmxdbg4apo4.png)
Но мы не можем просмотреть содержимое директории IT, благо имеем одну имеющуюся внутри директорию (следует из конфига). Смотрим все содержимое \Secure$\IT\Carl\.
![image](https://habrastorage.org/webt/vq/pz/af/vqpzaftcpmf2e8fipswnp2m-p7q.png)
Там расположен проект VisualBasic. Я подключился через проводник и скопировал папку с проектом на локальную машину.
![image](https://habrastorage.org/webt/vh/x5/fj/vhx5fj_fhxvhyflzzj51sdjztvm.png)
Открываем проект и находим место, где из конфига считывается пароль и расшифровывается.
![image](https://habrastorage.org/webt/yl/rl/2t/ylrl2tkmtdg2m6cemcg7v12cy3q.png)
После беглого просмотра в сам принцип шифрования лезть не особо хотелось, поэтому загружаем проект в Visual Studio и изменяем код, чтобы узнать пароль при отладке.
![image](https://habrastorage.org/webt/d8/bm/5x/d8bm5xgp4myrmxhfarjrkptq-as.png)
![image](https://habrastorage.org/webt/-q/oq/nd/-qoqndiavdp-95wpjrqvscvbzbs.png)
Так мы узнаем реальный пароль пользователя. Подключаемся и забираем токен.
![image](https://habrastorage.org/webt/pg/xc/xq/pgxcxqkosw6yyvbxw9ylt7hehc0.png)
ROOT
Осматриваемся дальше в рабочей директории пользователя.
![image](https://habrastorage.org/webt/xq/82/ua/xq82uaot_ewfco-r8zoccjit8sg.png)
Из файла конфигураций мы понимаем, что работает на втором порте.
![image](https://habrastorage.org/webt/sc/e4/bu/sce4buc1y2ojoojs5afzfjgi72o.png)
Но подключившись и посмотрев help, понимаем, что нужен пароль.
![image](https://habrastorage.org/webt/5i/6t/x5/5i6tx5hboicu1cy54axpuwgby9m.png)
Заходим в директорию и скачиваем приложение, возможно, проанализировав его, мы сможем найти пароль.
![image](https://habrastorage.org/webt/kw/hz/r4/kwhzr41tyd7ycefdozvehrcxdpc.png)
Повезло, что данное приложение написано на C#, это позволит нам легко декомпилировать весь проект с помощью dnSpy.
![image](https://habrastorage.org/webt/vb/yv/je/vbyvjettxqh2e1kmkuy5uld6k9g.png)
![image](https://habrastorage.org/webt/b-/03/dd/b-03ddpj7wa36l3yquitc4qe4eu.png)
Таким образом программа, программа принимает на вход файл конфигураций, откуда достает определенные параметры.
![image](https://habrastorage.org/webt/ru/bh/4c/rubh4cc_xlxeuoeid_zbzrixlvy.png)
Но в проекте ничего не находим. Далее было потрачено много времени, пока не пришло осознание всмотреться “глужбе” в пустой файл “Debug Mode Password.txt”. Подключим сетевой ресурс.
![image](https://habrastorage.org/webt/lj/za/ww/ljzaww9bc1okdei5zb6ijm2mili.png)
А теперь посмотрим все потоки данного файла. И определяем, что поток Password хранит 15 символов.
![image](https://habrastorage.org/webt/jc/ex/ui/jcexuiyaeurfbkqtyifktjyl7l8.png)
Прочитаем его, находим пароль для debug режима (затупил… бывает).
![image](https://habrastorage.org/webt/h6/j-/zd/h6j-zdp23tjyzvghmvtavtueuvs.png)
Снова подключаемся, вводим данный пароль и смотрим справку.
![image](https://habrastorage.org/webt/kb/ow/qx/kbowqxqut1w80cxgj-emecsytv8.png)
![image](https://habrastorage.org/webt/2_/le/oz/2_leozjuut9uequuljlrsbipvre.png)
Далее стоило немного побродить в приложении, ведь нужно найти для декомпилированного проекта какой-то конфиг.
![image](https://habrastorage.org/webt/pc/ny/qy/pcnyqykndlb9rjh8sxkzxssa-q0.png)
Судя по названию приложения, идем в LDAP.
![image](https://habrastorage.org/webt/4k/sw/wl/4kswwl3l-kjdx_mxow_q4jb31pg.png)
И снова находим уже имеющееся у нас приложение и конфиг файл.
![image](https://habrastorage.org/webt/ix/kq/wf/ixkqwfnbqek_xvaqotvzb4ttp9i.png)
Вот и те параметры которые преобразуются в приложении. Найдем функцию расшифровывания, и сделаем вывод значения в консоль, перед его возвратом.
![image](https://habrastorage.org/webt/vj/ao/fr/vjaofrlr3cxfxlo45gwp1zntgk4.png)
Ну и изменим одно из условий, чтобы приложение не останавливалось, при проверке наличия файла.
![image](https://habrastorage.org/webt/7x/x-/f_/7xx-f_w2b8glnjotuipvuezzjbw.png)
Перекомпилируем проект и запустим приложение, указав конфиг в качестве аргумента.
![image](https://habrastorage.org/webt/fo/ug/s5/fougs58hhnawb91i6tpbsybm63s.png)
И получаем пароль администратора. Далее успешно подключаемся с помощью psexec.
![image](https://habrastorage.org/webt/_u/ty/ku/_utykuvl0nxpltgzolgmckr19eq.png)
Имеем полный контроль над машиной.
Вы можете присоединиться к нам в Telegram. Там можно будет найти интересные материалы, слитые курсы, а также ПО. Давайте соберем сообщество, в котором будут люди, разбирающиеся во многих сферах ИТ, тогда мы всегда сможем помочь друг другу по любым вопросам ИТ и ИБ.
catBasilio
Как-то педствлял работу хакеров немного по-интеллектуальнее что-ли.
Думал там контроль будет добываться через meltdown, spectre, или вообще найти 0-day уязвимость софте и поэксплуатировать ее.
А тут банально пошариться по помойке и найти файл в котором пароль написан. Даже дизассемблером ничего не пришлось делать. Необфусцированный c# — это вообще ниочем.
Greendq
Особенно повеселил момент, что программа расшифровывает пароли для проверки. Первое правило безопасности — фарш обратно не проворачивать! Т.е. использовать только необратимые (и солёные) хеши.
NordeN17
Особенно повеселил тот момент, когда взрослые дядьки всерьез обсуждают ctf задания, да еще и уровня Easy, предназначенные для обучения студентов ИБ первого-второго курса. Попросил бы профили ваши глянуть на hackerone, да уверен что там пусто. Так уверены в своих силах — регистрация на той платформе бесплатная, попробуйте хоть одну машину уровня Insane пройти)
RIPEMD160
два теоретика детектед, бомбит с вас сильно в данную секунду.