Как подключиться к локальному компьютеру из внешней сети?

Как подключиться к локальному компьютеру из внешней сети?

tokiakasus

В чём проблема?

Локальный компьютер находится в локальной сети, которая находится за NAT провайдера или фаерволом, не позволяющие подключиться внешним устройствам к локальным устройствам без внешнего (белого) IP-адреса. Обойти это можно с помощью утилиты ngrok, которой надо предоставить порт на локальном компьютере, после чего программа создаст туннель к своему публичному облаку, которое будет принимать и перенаправлять трафик на твой локальный компьютер.

Примеры использования ngrok:

  • запуск локального облака, с возможностью доступа извне
  • показ демо версий сайтов, без деплоя в прод
  • подключать целевой компьютер к локальному с помощью reverse shell

Как раз последний пример пригождается при решении CTF. Сам reverse shell обозначает подключение компьютера жертвы к атакующему. Чтобы жертве подключиться к машине атакующего

- атакующий должен установить слушателя на публичном сервере

- атакующий должен обладать возможностью перенаправлять трафик с публичного сервера на локальную машину

Второй вариант возможно реализовать с ngrok, без затрат на публичный сервер.

Как пользоваться на примере с reverse shell

1. Зарегистрируйся на https://ngrok.com/

2. Скачивай архив с ngrok с https://dashboard.ngrok.com/get-started/setup на локальный компьютер, к которой должны подключаться (не закрывай вкладку)

3. Распаковывай архив

4. Заходи на https://dashboard.ngrok.com/get-started/setup, копируй команду подключения аккаунта из 2 пункта и вставляй в терминале

команда для добавления токена аккаунта

- ВАЖНО: укажи путь до запускаемого бинарника ngrok, который был распакован из архива

5. При успешном выполнение появится сообщение на английском "Аккаунт добавлен"

6. Запускай ngrok с указанием порта и типа подключения (сюда будешь ставить слушателя)

   $ ngrok tcp 1234

      - ngrok создаст TCP туннель между твоим локальным портом 1234 и публичным портом на ngrok серверах

7. После успешного выполнения - окно терминала заполнится статусом ngrok, в котором видно "для подключения к локальному порту 1234 надо подключиться к 2.tcp.eu.ngrok.io:15958"

ngrok status

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

запуск слушателя через netcat

9. На целевом компьютере запускаешь команду для подключения к своей машине

запуск реверс шелла на целевой машине

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

локлаьный слушатель получил подключение с целевого компьютера

Что если нагрузка из примера не сработала

1. Зайди на https://www.revshells.com/

2. Подставь в IP и порт нужные тебе строки

   - На сайте поставлено ограничение в 15 символов для строки IP, которое можно убрать зайдя в код элемента и изменив/удалив значение maxlength

параметр, ограничивающий количество символов

3. Сгенерируй нагрузку для целевой системы, на основе имеющихся на ней ресурсов (ос, утилиты)


Пример обратной оболочки с помощью Python3 на целевой машине и msfconsole как слушателя

пример иной нагрузки


Report Page