- Установка и использование Ngrok на Kali Linux
- Что такое Ngrok
- Как установить Ngrok на Kali Linux
- Загрузка Ngrok на Kali Linux
- HackWare.ru
- Этичный хакинг и тестирование на проникновение, информационная безопасность
- Как без белого IP локальный веб-сервер сделать доступным из Интернета
- Как установить ngrok
- Установка ngrok в Kali Linux и в любой другой дистрибутив Linux
- Установка в ngrok BlackArch
- Установка ngrok в Windows
- Как получить токен аутентификации ngrok (authtoken)
- Как узнать чужой IP
- Как отправить файл без файлообменников и почты
- Прокси с ngrok
- Команды и опции ngrok
- Заключение
- Связанные статьи:
Установка и использование Ngrok на Kali Linux
В предыдущей статье, посвященной инструменту для скрытого удаленного контроля телефона меня просили показать настройку Ngrok на Kali Linux. По просьбам трудящихся, в этой статье я покажу, как скачать, настроить и использовать Ngrok на Kali Linux.
Что такое Ngrok
Ngrok — это мультиплатформенное приложение, которое позволяет создавать туннели на локальный компьютер пользователя. Простыми словами, создается публичный адрес, все обращения по которому пробрасываются на локальный порт. Это позволяет избежать проброса портов. Вы же в курсе, что открывать порты на роутере не рекомендуется?
Статья написана в образовательных целях, для обучения пентестеров (белых хакеров). Для демонстрации работы, были использованы наши личные устройства. Использование данного инструмента, в незаконных целях, влечет уголовную ответственность. Ни редакция spy-soft.net, ни автор не несут ответственность за ваши действия.
Кстати, инструмент зачастую используют разработчики, для демонстрации проектов клиентам перед запуском. Так что, его можно использовать, не только для пентеста.
Как установить Ngrok на Kali Linux
Для установки Ngrok на Kali Linux следуйте инструкции.
Загрузка Ngrok на Kali Linux
Откройте браузер и зайдите на официальную страницу загрузки Ngrok. Нажмите на кнопку Download for Linux (Загрузить для Linux).
Откройте терминал и используя следующую команду, перейдите в «Загрузки»:
HackWare.ru
Этичный хакинг и тестирование на проникновение, информационная безопасность
Как без белого IP локальный веб-сервер сделать доступным из Интернета
Выполнение атак социальной инженерии требует наличие веб-сервера, на котором запущен сайт или размещена страница, которая пытается перехитрить пользователя и сделать так, чтобы он ввёл определённые данные или совершил какое-либо действие.
Это фишинговый веб-сервер должен быть доступен из Интернета, а для этого требуется публичный IP. Многие клиенты Интернет-провайдеров выходят в Интернет через NAT, а это означает, что они никак не могут сделать свой веб-сервер публичным.
В данной статье я покажу, как с помощью программы ngrok можно обойтись без внешнего IP адреса.
Программа ngrok работает следующим образом:
- её нужно запустить на своём компьютере где установлен веб-сервер и указать порт, на который она должна перенаправлять трафик (например, 80й порт)
- ngrok связывается с облачным сервисом и генерирует вам субдомен третьего уровня
- при поступлении подключения к этому субдомену, программа перенаправляет трафик на ваш локальный компьютер, например, на ваш локальный веб-сервр
Чтобы было понятно, посмотрим как работает ngrok на конкретном примере:
У меня на компьютере с Windows установлен веб-сервер. Кстати, программа ngrok работает на Windows, Linux, Linux ARM и некоторые других операционных системах. Мой компьютер находится как минимум на одним NAT’ом — в моём роутере не настроена проброска портов на компьютер. Но, скорее всего, мой Интернет-провайдер также использует NAT, чтобы сразу большое количество пользователей могли выходить в Интернет через 1 IP адрес. В таких условиях я никак не смогу сделать свой веб-сервер публичным, даже если настрою форвардинг портов от роутера.
Так вот, в такой безвыходной ситуации и поможет ngrok. Чтобы мой веб-сервер стал доступным из Интернета, мне достаточно запустить такую команду:
На экране следующая информация:
Интересующие меня данные заключается в строках:
Forwarding http://4b348924.ngrok.io -> http://localhost:80 Forwarding https://4b348924.ngrok.io -> http://localhost:80
Она означает, что подключение к 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
wget `curl -s https://ngrok.com/download | grep -o -E 'https://bin.equinox.io/c/[A-Za-z0-9]/ngrok-stable-linux-amd64.zip'` unzip ngrok-stable-linux-amd64.zip chmod +x ./ngrok ./ngrok -h
Установка в 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 authtoken ВАШ_AUTHTOKEN
После этого токен ngrok будет сохранён в файле, и ngrok будет автоматически считывать его оттуда при каждом запуске.
Как узнать чужой IP
В качестве демонстрации применения ngrok рассмотрим пару примеров. Предположим, мне нужно узнать IP адрес пользователя, с которым я общаюсь, например, по чату или через email. Для этого мне достаточно, чтобы он зашёл на любую страницу моего веб-сервера.
На веб-сервере я делаю следующую подготовку:
1. Создаю папку hacked-accounts (допустим, предлог — ссылка в Интернете на базу данных утёкших учётных данных).
2. Создаю файл index.php с примерно следующим содержимым:
$value) < $string = $string . "$key: $value\r\n"; >file_put_contents (time(), $string); die ('Connection dropped. Please try later.'); // Another option: redirect to any web site. // header ('Location: https://google.com');
Суть работы скрипта очень проста — берутся все значения массива $_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\, тогда достаточно запустить следующую команду:
.\ngrok http file:///C:\Server\data\htdocs\hacked-accounts-real\
Обратите внимание, что перед папкой стоит строка «file:///».
При открытии вновь сгенерированной ссылки будет получен доступ ко всем файлам в указанной папке:
Прокси с ngrok
ngrok может создавать туннели не только до локальных сетевых служб, но и до любых других адресов в Интернете. При этом получается прокси.
ngrok http https://157.245.118.66
Если нужно создать туннель до веб-сайта, то если на одном IP адресе работают много сайтов, то нужно заменять присылаемый заголовок на правильный, это можно сделать опцией -host-header. В следующем примере будет создана ссылка, при переходе на которую будет открываться сайт HackWare.ru:
ngrok http https://hackware.ru -host-header=hackware.ru
Команды и опции ngrok
У ngrok много других примеров использования, в том числе на бесплатном пакете. Дополнительную информацию о командах и опциях вы найдёте на странице https://kali.tools/?p=5489.
Заключение
Итак, ngrok может использоваться как замена хостингу для разовых задач. Например, если на удалённом сервере обнаружена уязвимость Удалённое выполнение кода и есть возможность запустить команду для скачивания шелла, то этот шелл нужно где-то разместить на доступном публично сервере. В качестве очень быстрого решения можно использовать ngrok + ОС, настроенная для работы через Tor.
В следующей статье будет показан более интересный пример использования ngrok в социальной инженерии.