Как подключиться к локальному компьютеру из внешней сети?
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"

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

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

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

Что если нагрузка из примера не сработала
1. Зайди на https://www.revshells.com/
2. Подставь в IP и порт нужные тебе строки
- На сайте поставлено ограничение в 15 символов для строки IP, которое можно убрать зайдя в код элемента и изменив/удалив значение maxlength

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