Как установить ngrok windows

Как поделиться своим локальным веб-сервером с Интернетом. Ngrok

Довольно часто у разработчика возникает необходимость показать свои наработки, расположенные на локальном компьютере. Если же приходится тестировать мобильные приложения, то доступ к API также нужен.

Конечно, можно купить ip-адрес, домен, хостинг, настроить всё это. Но проще, быстрее и доступнее использовать утилиту ngrok, создающую туннель к localhost.

Скачать ngrok можно по адресу: https://ngrok.com/

Программа доступна для Mac OS, Windows, Linux и FreBSD. В ограниченном режиме можно использовать бесплатно, которого, к слову сказать, хватает с лихвой в большинстве случаев.

Для начала нужно установить программу.

Установка Ngrok

Mac OS X 64-Bit:

Linux 64-Bit:

Linux 32-bit:

FreeBSD 64-Bit:

FreeBSD 32-Bit:

Например, для Xubuntu:

Если выдаёт ошибку, проверьте права на запись файлов в указанной директории.

Далее необходимо распаковать архив. В нашем случае с Xubuntu:

Или сделать распаковку в окне:

Теперь перемещаем утилиту:

Затем даём права на запуск скрипта:

Вывести помощь в терминале можно командой:

Создание туннеля в простейшем варианте (обратите внимание на порт, обычно он 80, у мена 8000):

Где http://370f2cc5.ngrok.io уникальный адрес в Интернет.

Можно в hosts файл прописать домен, например, mysite.local, после чего запустить туннель:

Если зарегистрироваться, то:

  • будет доступ через SSL
  • появится возможность защиты туннеля паролем
  • станет доступен выбор поддоменов с резервированием
  • будет возможно туннелирование TCP и UDP

Ngrok

Ngrok — это платформа, которая с помощью установленной утилиты, позволяет, организовать удалённый доступ на веб-сервер или какой-то другой сервис, запущенный ПК. Доступ организуется через созданный при запуске ngrok безопасный туннель. ПК, при этом, может находиться за NAT’ом, и не иметь статического IP адреса.

Совсем не обязательно тащить тестовый проект куда-то ещё, можно показать его заказчику прямо с локальной машины, или, например, с помощью Ngrok можно очень легко расшарить файлы лежащие на ПК.

Для начала, нам потребуется веб-сервер, запущенный на компьютере (конечно же, его нужно настроить при необходимости):

И непосредственно сам Ngrok. Его можно запускать от обычного пользователя, и со включенным selinux:

Сразу после запуска, можно увидеть, что сервис создал временный поддомен вида abcde123.ngrok.io для организации доступа на ПК, а локально по адресу 127.0.0.1:4040, была запущена панель, в которой отображаются данные по удалённым подключениям к туннелю. Пробуем открыть домен abcde123.ngrok.io из любого места, и получаем доступ к настроенной на веб-сервере директории.

При необходимости, мы можем указать регион, в котором будет запущен прокси:

Читайте также:  Error 1719 windows installer service что это

Или защитить запущенный туннель паролем для доступа:

В случае появления ошибки вида:

Стоит проверить, запущен ли веб-сервер локально, и работает ли он на 80 порте.

Полезно знать об Ngrok.

Авторизуемся. Если вы планируете использовать сервер часто, имеет смысл зарегистрироваться на ngrok.com, забрать со страницы настроек авторизации токен, и добавить его в локальный клиент с помощью команды:

Токен будет записан в файл

/.ngrok2/ngrok.yml и теперь, клиент при работе с сервисом будет авторизовываться на нём. Это позволит получить доступ к бесплатному тарифу, но с лимитами бОльшими, чем доступны не авторизованному пользователю. На платных тарифах имеются дополнительные возможности, делающие работу с сервисом удобной (резерв поддоменов, например), но в рамках данной заметки я рассматриваю только то, что пользователь может использовать без оплаты.

Проксируем на другие ПК в локальной сети. Совсем не обязательно держать веб-сервер на той же машине, где запускается Ngrok. Если сервис в локальной сети работает на отдельной машине, мы можем проксировать трафик туда:

Работаем не только с веб-сервером. На самом деле мы можем настроить удалённый доступ к любому tcp сервису, запущенному на ПК. Например, если мы хотим получить доступ по SSH, то можем сделать вот так:

При этом, от сервиса мы получим адрес вида tcp://0.tcp.ngrok.io:18211 -> localhost:22, и для доступа на ПК нам останется просто соединиться по SSH на хостнейм 0.tcp.ngrok.io и порт 18211. Любители поднимать игровые серверы могут поступать аналогично. Просто запускаете проксирование на нужный tcp порт, даёте координаты друзьям и приступаете к игре.

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

HackWare.ru

Этичный хакинг и тестирование на проникновение, информационная безопасность

Как без белого IP локальный веб-сервер сделать доступным из Интернета

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

Это фишинговый веб-сервер должен быть доступен из Интернета, а для этого требуется публичный IP. Многие клиенты Интернет-провайдеров выходят в Интернет через NAT, а это означает, что они никак не могут сделать свой веб-сервер публичным.

  • арендовать хостинг
  • арендовать внешний IP у своего Интернет-провайдера

В данной статье я покажу, как с помощью программы ngrok можно обойтись без внешнего IP адреса.

Программа ngrok работает следующим образом:

  • её нужно запустить на своём компьютере где установлен веб-сервер и указать порт, на который она должна перенаправлять трафик (например, 80й порт)
  • ngrok связывается с облачным сервисом и генерирует вам субдомен третьего уровня
  • при поступлении подключения к этому субдомену, программа перенаправляет трафик на ваш локальный компьютер, например, на ваш локальный веб-сервр

Чтобы было понятно, посмотрим как работает ngrok на конкретном примере:

У меня на компьютере с Windows установлен веб-сервер. Кстати, программа ngrok работает на Windows, Linux, Linux ARM и некоторые других операционных системах. Мой компьютер находится как минимум на одним NAT’ом — в моём роутере не настроена проброска портов на компьютер. Но, скорее всего, мой Интернет-провайдер также использует NAT, чтобы сразу большое количество пользователей могли выходить в Интернет через 1 IP адрес. В таких условиях я никак не смогу сделать свой веб-сервер публичным, даже если настрою форвардинг портов от роутера.

Читайте также:  Профиль разработчика mac os monterey

Так вот, в такой безвыходной ситуации и поможет ngrok. Чтобы мой веб-сервер стал доступным из Интернета, мне достаточно запустить такую команду:

На экране следующая информация:

Интересующие меня данные заключается в строках:

Она означает, что подключение к http://4b348924.ngrok.io и https://4b348924.ngrok.io (протоколы HTTP и HTTPS соответственно) будет перенаправлено на http://localhost:80. Проверим это: с другого компьютера (Linux), я открою ссылку https://4b348924.ngrok.io. Выведен список файлов в корневой директории веб сервера Windows:

Отрою файл i.php (у меня он имеет адрес https://4b348924.ngrok.io/i.php):

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

Вернёмся на компьютер Windows где запущены ngrok и веб-сервер:

После «HTTP Requests» показаны строки, которые запрашивал удалённый пользователь. Более подробную информацию можно просмотреть по ссылке http://127.0.0.1:4040 на которой запущен веб-интерфейс ngrok. Там можно анализировать отдельные запросы:

Или просматривать статус ngrok в целом:

Как установить ngrok

Установка ngrok в Kali Linux и в любой другой дистрибутив Linux

Установка в ngrok BlackArch

Установка ngrok в Windows

Перейдите на страницу официального сайта и скачайте ngrok для Windows: https://ngrok.com/download

Распакуйте скаченный архив, отройте командную строку и перейдите в папку с исполнимым файлом с помощью cd, например, у меня программа помещена в папку C:\Users\MiAl\Downloads\:

Для проверки выведите справку командой:

Как получить токен аутентификации ngrok (authtoken)

Программа ngrok является бесплатной, но предусматривает платные тарифы. Бесплатных состояний может быть два:

  • без регистрации
  • с регистрации

Без регистрации вы можете использовать ngrok сразу после скачивания исполнимого файла. Без регистрации вы сможете выполнить только простейшие действия, например, как приведённое выше — создать тоннель от домена третьего уровня до своего локального сервера. На самом деле, для многих этого достаточно.

С регистрацией открываются дополнительные возможности, например, можно перенаправлять трафик на 443 порт (используется протоколом HTTPS) локального или удалённого сервера.

После регистрации на странице https://dashboard.ngrok.com/auth вы найдёте свой токен аутентификации. Этот токен можно указывать при каждом запуске ngrok, но намного удобнее сохранить его в системе командой вида:

После этого токен ngrok будет сохранён в файле, и ngrok будет автоматически считывать его оттуда при каждом запуске.

Как узнать чужой IP

В качестве демонстрации применения ngrok рассмотрим пару примеров. Предположим, мне нужно узнать IP адрес пользователя, с которым я общаюсь, например, по чату или через email. Для этого мне достаточно, чтобы он зашёл на любую страницу моего веб-сервера.

На веб-сервере я делаю следующую подготовку:

1. Создаю папку hacked-accounts (допустим, предлог — ссылка в Интернете на базу данных утёкших учётных данных).

Читайте также:  Hp1320 драйвера windows 10

2. Создаю файл index.php с примерно следующим содержимым:

Суть работы скрипта очень проста — берутся все значения массива $_SERVER и сохраняются в файл со сгенерированным именем. Массив $_SERVER содержи HTTP заголовки и IP клиента, сделавшего запрос.

3. Дальше я просто отсылаю ссылку https://4b348924.ngrok.io/hacked-accounts/, можно добавить разные финтифлюшки в виде значений параметров https://4b348924.ngrok.io/hacked-accounts/?users=admin&sort=newest (эти «шашечки» ни на что не влияют).

При открытии этой ссылки пользователь увидит что-то вроде такого:

Но при каждой попытке открыть ссылку на веб-сервере будут создаваться новые файлы с информацией:

Пример содержимого файла:

Особый интерес представляют следующие строки:

  • HTTP_USER_AGENT (User Agent, программа, с помощью который была открыта ссылка)
  • HTTP_REFERER (с какой страницы пришёл пользователь)
  • HTTP_ACCEPT_LANGUAGE (языки, которые предпочитает User Agent пользователя)
  • HTTP_X_FORWARDED_FOR (самое важное — IP адрес здесь!)
  • QUERY_STRING (строка запроса — можно указать разные значения для разных людей, чтобы различать пришедшие запросы)

Что касается REMOTE_ADDR, то значением там всегда будет примерно «::1». В REMOTE_ADDR содержится IP адрес программы, сделавшей запрос, в данном случае запрос сделала программа ngrok, которая запущена на том же самом компьютере поэтому её IP адресом является loopback.

Как отправить файл без файлообменников и почты

Предположим, нужно переслать другому пользователю файл, но при этом не использовать файлообменники, почту или аналогичные сервисы. Это можно сделать с помощью ngrok.

Теперь выдуманная ситуация следующая — мне действительно нужно быстро и без файлообменников передать пользователю другой файл. Для этого на локальном компьютере даже не нужен веб-сервер — функции простого веб-сервера будет выполнять сам ngrok.

Для выполнения задуманного, мне нужно предоставить доступ к папке hacked-accounts-real, расположенной по пути C:\Server\data\htdocs\hacked-accounts-real\, тогда достаточно запустить следующую команду:

Обратите внимание, что перед папкой стоит строка «file:///».

При открытии вновь сгенерированной ссылки будет получен доступ ко всем файлам в указанной папке:

Прокси с ngrok

ngrok может создавать туннели не только до локальных сетевых служб, но и до любых других адресов в Интернете. При этом получается прокси.

Если нужно создать туннель до веб-сайта, то если на одном IP адресе работают много сайтов, то нужно заменять присылаемый заголовок на правильный, это можно сделать опцией -host-header. В следующем примере будет создана ссылка, при переходе на которую будет открываться сайт HackWare.ru:

Команды и опции ngrok

У ngrok много других примеров использования, в том числе на бесплатном пакете. Дополнительную информацию о командах и опциях вы найдёте на странице https://kali.tools/?p=5489.

Заключение

Итак, ngrok может использоваться как замена хостингу для разовых задач. Например, если на удалённом сервере обнаружена уязвимость Удалённое выполнение кода и есть возможность запустить команду для скачивания шелла, то этот шелл нужно где-то разместить на доступном публично сервере. В качестве очень быстрого решения можно использовать ngrok + ОС, настроенная для работы через Tor.

В следующей статье будет показан более интересный пример использования ngrok в социальной инженерии.

Оцените статью