
Стаття розкриває процес проходження віртуальної машини Nest на платформі HackTheBox. Читач дізнається, як використовувати сучасні інструменти для сканування мережі (nmap, masscan), досліджувати SMB-ресурси, аналізувати приховані дані в альтернативних потоках NTFS і проводити реверс-інжиніринг C#-додатків. Також у статті детально показано, як знайдену інформацію можна використовувати для ескалації привілеїв і отримання доступу до закритих ресурсів.
Ця машина має IP адресу 10.10.10.178, яку додаємо в /etc/hosts.
10.10.10.178 nest.htb
Спершу проводиться сканування відкритих портів. Щоб пришвидшити процес, для початкового сканування використовується masscan, оскільки nmap виконує цю задачу значно довше. Виконується сканування всіх 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. Спробуємо увійти від імені гостя.
Виявляються доступні ресурси, після чого виконується рекурсивний перегляд усього вмісту, до якого відкрито доступ.
З наведених файлів найцікавіша записка «Welcome Email.txt». Підключимося до ресурсу та збережемо собі на локальну машину цей файл.
Весь вміст ресурсу, але з використанням знайдених облікових даних.
У цьому випадку особливу увагу слід звертати на конфігураційні файли, оскільки в них часто містяться назви ресурсів, служб або облікові дані. Тому здійснюється повторне підключення до ресурсу для завантаження всіх конфігураційних файлів.
І в одному файлі знаходимо назву закритого ресурсу “Secure$”, а в іншому – облікові дані користувача.
Однак вказаний пароль не підходить, ймовірно, він зашифрований. Водночас з використанням знайдених облікових даних вдалося отримати доступ до виявленого ресурсу.
Перегляд вмісту директорії IT виявляється недоступним, проте завдяки інформації з конфігураційного файлу стає відомо про одну з наявних вкладених директорій. Виконується перегляд усього вмісту шляху \Secure$\IT\Carl.
У вказаній директорії знаходиться проект, написаний на Visual Basic. Для подальшого аналізу папку з проектом було скопійовано на локальну машину через провідник.
Відкриваємо проект і знаходимо місце, де з конфіга зчитується пароль та розшифровується.
Поглиблене вивчення принципу шифрування не проводилося. Натомість проект було завантажено у Visual Studio, де код було змінено з метою виявлення пароля під час налагодження.
Так ми дізнаємось про реальний пароль користувача. Підключаємось і забираємо токен.
Оглядаємось далі у робочій директорії користувача.
З конфігураційного файлу стає зрозуміло, що робота здійснюється через другий порт.
Але підключившись і подивившись help, розуміємо, що потрібний пароль.
Заходимо в директорію і завантажуємо програму, можливо, проаналізувавши її, ми зможемо знайти пароль.
На щастя, додаток створений на C#, що дає можливість легко декомпілювати весь проект за допомогою інструмента dnSpy.
Таким чином програма приймає на вхід файл конфігурацій, звідки дістає певні параметри.
Але у проекті не вдалося знайти нічого корисного. Значний час було витрачено на пошуки, поки не стало очевидним звернути увагу на порожній файл із назвою “Debug Mode Password.txt”. Після цього виконується підключення до мережевого ресурсу.
А тепер подивимося всі потоки файлу. І визначаємо, що потік Password зберігає 15 символів.\
Після прочитання файлу вдалося знайти пароль для режиму debug. Незважаючи на пропущену деталь, ця інформація стала ключем для подальшої роботи.
Знову підключаємося, вводимо пароль і дивимося довідку.
Далі варто було трохи поблукати у додатку, адже потрібно знайти для декомпільованого проекту якийсь конфіг.
Судячи з назви програми, йдемо до LDAP.
Ось і ті параметри, які обробляються додатком. Для подальшого аналізу знаходиться функція розшифрування, до якої вносяться зміни: додається виведення значення в консоль перед його поверненням.
Ну і змінимо одну з умов, щоб програма не зупинялася, при перевірці наявності файлу.
Перекомпілюємо проект і запустимо додаток, вказавши конфіг як аргумент.
Отримується пароль адміністратора, після чого здійснюється успішне підключення до системи за допомогою утиліти psexec.