Logo

TryHack3M: Bricks Heist

Crack the code, command the exploit! Dive into the heart of the system with just an RCE CVE as your key.

TryHack3M: Bricks Heist

TryHackMe: Прохождение комнаты Bricks Heist.

Часть модуля TryHack3M Special.

Дан скомпрометированный сервер, необходимо его взломать и разобраться, что именно произошло.


What is the content of the hidden .txt file in the web folder?

При открытии сайта очевидно использование WordPress. Для данной CMS существует ряд специализированных сканеров, неплохим решением будет проведение сканирования с помощью WPScan:

$ wpscan --url "https://bricks.thm" --disable-tls-checks --no-banner
Используемая тема

Внимание привлекает используемая тема Bricks версии 1.9.5. Проблема у данной версии в том, что она уязвима для выполнения произвольного кода. Готовый эксплоит расположен здесь. Он предоставляет шелл доступ:

$ pip install -r requirements.txt
$ python exploit.py --url https://bricks.thm
Первый флаг

Первый флаг расположен в файле 650c844110baced87e1606453b93f22a.txt.


What is the name of the suspicious process?

Просмотр запущенных процессов, необычный процесс в самом конце:

$ ps axf
Подозрительный процесс

What is the service name affiliated with the suspicious process?

Отображение всей информации по сервису которому принадлежат подозрительные процессы с прошлого шага:

$ systemctl status $(pgrep -n <redacted>)
Подозрительный сервис

What is the log file name of the miner instance?

Получение в директории где расположен подозрительный процесс списка всех файлов которые не являются исполняемыми:

$ find /lib/NetworkManager -maxdepth 1 ! -perm -111
Лог

What is the wallet address of the miner instance?

Поле id в лог файле выглядит довольно подозрительно и явно означает какой-то идентификатор. Судя по отсутствию букв далее чем f это запись в шестнадцатеричной системе счисления.

Если перевести данную запись в строку

$ echo <ID> | xxd -plain -revert

то получится визуально вполне узнаваемая кодировка base64. Если её декодировать, то получится ещё одна строка в данной же кодировке.

$ echo <base64> | base64 --decode

Ещё один цикл декодирования и получается строка напоминающая адрес биткоин кошелька (начинается на bc1q - верный признак P2WPKH), правда слишком большой.

Полный цикл декодирования:

Адрес кошелька

Если присмотреться, то это две одинаковые подстроки, но во второй добавлен ещё один байт.


The wallet address used has been involved in transactions between wallets belonging to which threat group?

Если сделать запрос в сети по данному адресу, ожидаемо ничего не находится, данный адрес является промежуточным.

Используя BlockCypher API можно посмотреть куда с данного кошелька были сделаны переводы. С помощью jq фильтр по трём самым крупным переводам:

$ curl https://api.blockcypher.com/v1/btc/main/addrs/bc1qy<REDACTED>/full -s | 
   jq '.address as $addr | [.txs[] | select(.inputs[].addresses[] == $addr) |
       .outputs[] | {value: .value, address: .addresses[]}] | sort_by(.value) |
       .[-3:]'
Адреса куда выведено больше всего

Сразу привлекает внимание адрес 32pTj-1nVJM (в формате P2SH; на нём, к слову, имеется более 105₿), если сделать запрос в сети по данному адресу, сразу же можно найти его владельца и аффилированную хакерскую группу.


На этом всё,
другие части модуля здесь.