Как сделать socks5 своими руками

Поднимаем собственный SOCKS5 сервер

На днях я решил поднять личный SOCKS5 proxy.
Вы спросите «Зачем, ведь можно и в интернете найти такие сервера«. Ну не знаю, я привык ко всему собственному и личному. Разбрасываться трафиком налево и направо плохая затея. Тем более на неизвестные сервера.

Для начала нам потребуется собственный VPS-сервер.

Если у Вас пока такогвого нет, то можете попробовать хостинг от DigitalOcean, по данному варианту регистрации и после успешного прохождения регистрации Вам будет начислено 25$ которых хватит на 5 месяцев самого простого сервера.

На данный момент, часть серверов забанена РКН: Франкфурт, Сингапур, Амстердам, при создании сервера имейте это в виду.

Создавать прокси-сервер рекомендую на Ubuntu, т.к. последующий мануал будет заточен под эту операционные систему. В репозиториях для Debian, к сожалению, нет собранного пакета, поэтому советую перейти ко второмо варианту.

Вариант 1

Заходим на сервер посредством SSH, и устанавливаем Dante прокси:

Если все прошло успешно, далее необходимо добавить в конец конфигурационного файла /etc/danted.conf следующюю конфигурацию:

Где eth0 — интерфейс с которого рпиходит интернет на Ваш сервер, а port — это порт, к которому мы хотим потом подключаться.

Теперь необходимо создать пользователя, через которого мы будем регистрироваться.

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

Если у Вас все прошло успешно, то после всех манипуляций Вы можете запустить сервер командой:

Вариант 2

В этом варианте попробуем развернуть прокси-сервер при помощи Docker
Для этого подходит любая операционная система установленная на Вашем сервере.

Устанавливаем Docker и Git если его нет
Для Debian/Ubuntu

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

Переходим в папку, и собираем через docker-compose контейнер:

После успешной сборки, можете запустить сервер командой

Теперь Ваш сервер доступен по порту 7080 с логином sockd и паролем sockdpasswd. Эти данные Вы можете изменить в любое время в файле .env.
После изменения логина и пароля, необходимо снова придется пересобрать контейнер командами:

Ну а теперь можно ввести свои данные в настройки Телеграмма и поделиться с друзьями.

P.S. Также, если Вы хотите посмотреть статистику по Вашему серверу (сколько кушает ресурсов и какой трафик был использован, то можно воспользоваться командой:

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

Источник

Пишем Reverse socks5 proxy на powershell.Часть 1

История об исследовании и разработке в 3-х частях. Часть 1 — исследовательская.
Буков много — пользы еще больше.

Постановка задачи

В ходе проведения пентестов и RedTeam кампаний не всегда удается воспользоваться штатными средствами Заказчиков, такими как VPN, RDP, Citrix и т.д. в качестве закрепления для захода во внутреннюю сеть. Где-то штатный VPN работает по MFA и в качестве второго фактора используется железный токен, где-то он жестоко мониторится и наш вход по VPN сразу же становится виден, как говорится — со всеми вытекающими, а где-то таких средств попросту нет.

В подобных случаях постоянно приходится делать так называемые «обратные туннели» — соединения из внутренней сети к внешнему ресурсу или контролируемому нами серверу. Внутри такого туннеля мы уже можем работать с внутренними ресурсами Заказчиков.

Существуют несколько разновидностей таких обратных туннелей. Самый известный из них, конечно же, Meterpreter. Так же большим спросом в народных хакерских массах пользуются SSH-туннели с обратным пробросом портов. Средств осуществления обратного туннелирования достаточно много и многие из них хорошо изучены и описаны.

Читайте также:  Как сделать матрас более жестким своими руками

Конечно же, со своей стороны разработчики защитных решений не стоят в стороне и активно детектируют подобные действия.

К примеру, MSF-сессии успешно детектируются современными IPS от Cisco или Positive Tech, а обратный SSH- туннель можно задетектить практически любым мало-мальским нормальным файерволлом.

Следовательно, для того чтобы остаться незамеченным в хорошей RedTeam кампании — нам необходимо строить обратный туннель нестандартными средствами и максимально близко подстраиваться под реальный режим работы сети.

Давайте попробуем найти или изобрести нечто подобное.

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

Понятно, что для каждого случая такие требования могут сильно отличаться, но по опыту работы можно выделить основные:

  • работа на ОС Windows-7-10. Так как в большинстве корпоративных сетях используется именно винда;
  • клиент соединяется с сервером по SSL для исключения тупого прослушивания средствами ips;
  • при соединении клиент должен поддерживать работу через прокси-сервер с авторизацией, т.к. во многих компаниях выход в интернет происходит через прокси. На самом деле, клиентская машина может об этом даже ничего и не знать, а прокси используется в транспарентном режиме. Но такой функционал мы должны заложить;
  • клиентская часть должна быть лаконична и портабельна;
    Понятно, что для работы внутри сети Заказчика на клиентской машине можно установить OpenVPN и поднять полноценный туннель до своего сервера (благо что клиенты openvpn умеют работать через прокси). Но, во-первых, это не всегда получится, так как мы можем не быть там локальными админами, а во-вторых, это наделает так много шуму, что порядочный SIEM или HIPS тут же на нас «настучит куда надо». В идеале наш клиент должен быть так называемой inline командой, как например реализованы многие bash-шеллы, и запускаться через командную строку, например, при выполнении команд из word-макроса.
  • наш туннель должен быть многопоточным и поддерживать множество соединений одновременно;
  • соединение клиент-сервер должно иметь какую-либо авторизацию, чтобы туннель устанавливался только для нашего клиента, а не для всех, кто придет к нам на сервер по указанному адресу и порту. В идеале, для «сторонних пользователей» должна открываться лендинг-страница с котиками или профессионально тематикой, связанной с исходным доменом.
    Например, если Заказчиком выступает медицинская организация, то для администратора информационной безопасности, решившего проверить ресурс, на который обращался сотрудник клиники, должна открыться страница с фармацевтическими товарами, википедия с описанием диагноза или блог доктора Комаровского и т.д.

Анализ существующих инструментов

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

Гугление в интернете (гуглим мы вроде нормально), а также поиск по гитхабу по ключевым словам «reverse socks» не дал особо много результатов. В основном, все сводится к построению ssh-туннелей с обратным пробросом портов и всего, что с этим связано. Помимо SSH-туннелей можно выделить несколько решений:

github.com/klsecservices/rpivot
Давняя реализация обратного туннеля от ребят из Лаборатории Касперского. По названию понятно, для чего предназначен этот скрипт. Реализован на Python 2.7, туннель работает в cleartext режиме (как модно сейчас говорить — привет РКН)

github.com/tonyseek/rsocks
Еще одна реализация на питоне, так же в cleartext, но возможностей больше. Написан в виде модуля и есть API для интеграции решения в свои проекты.

github.com/llkat/rsockstun
github.com/mis-team/rsockstun
Первая ссылка — изначальная версия реализации реверс сокса на голанге (не поддерживается разработчиком).

Вторая ссылка — уже наша доработка с дополнительными фишками, также на голанге. В нашей версии мы реализовали SSL, работу через прокси с NTLM-авторизацией, авторизацию на клиенте, лендинг-страницу при неверном пароле (вернее — редирект на лендинг-страницу), многопоточный режим (т.е. с туннелем могут работать несколько человек одновременно), систему пингов клиента на предмет того — живой он или нет.

Читайте также:  Алмазная вышивка как сделать рамку своими руками

github.com/jun7th/tsocks
Реализация обратного сокса от наших «китайских друзей» на питоне. Там же для ленивых и «бессмертных» лежит уже готовый бинарь (exe), собранный китайцами и готовый к использованию. Тут один только китайский бог знает, что в этом бинаре может быть еще, кроме основного функционала, так что используйте на свой страх и риск.

github.com/securesocketfunneling/ssf
Довольно-таки интересный проект на С++ для реализации обратного сокса и не только. Помимо обратного туннеля, он может делать проброс портов, создание командного шелла и т.д.

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

Все вышеописанные инструменты работают по схожей технологии: на машине внутри сети запускается заранее подготовленный исполняемый бинарный модуль, который устанавливает соединение с внешним сервером. На сервере запускается SOCKS4/5 сервер, принимающий подключения и транслирующий их на клиента.

Недостатком всех вышеперечисленных инструментов является то, что либо на клиентской машине необходим установленный Python или Golang (часто ли вы встречали установленный Python на машинах, к примеру, директора компании или офисных работников?), либо на эту машину необходимо тащить заранее собранный бинарь (фактически python и скрипт в одном флаконе) и запускать этот бинарь уже там. А загрузка exe с последующим его запуском — это еще та сигнатура для местного антивируса или HIPS.

В общем, вывод напрашивается сам собой — нам нужно решение на powershell. Сейчас в нас полетят помидоры — мол powershell — это уже все избито, он мониторится, блокируется и т.д. и т.п. На самом деле — далеко не везде. Ответственно заявляем. Кстати, существует уйма способов обойти блокировки (тут опять модная фраза про привет РКН 🙂 ), начиная от тупого переименования powershell.exe -> cmdd.exe и заканчивая powerdll и т.п.

Начинаем изобретать

Понятное дело, что сперва мы посмотрим в гугл и… не найдем ровным счетом ничего по этой теме (если кто-то нашел — кидайте ссылки в комменты). Есть только реализация Socks5 на powershell, но это обычный «прямой» сокс, имеющий ряд своих недостатков (о них поговорим позднее). Можно, конечно, легким движением руки превратить его в обратный, но это будет только однопоточный сокс, что для нас не совсем то, что надо.

Итак, мы не нашли ничего готового, поэтому нам придется все-таки изобрести свой велосипед. За основу нашего велосипеда мы возьмем нашу разработку обратного сокса на голанге, а клиента к нему реализуем на powershell.

Итак, как же работает rsockstun?

В основе работы RsocksTun (далее по тексту — rs) лежат два программных компонента — Yamux и Socks5 сервер. Socks5 сервер — это обычный локальный socks5, он запускается на клиенте. А мультиплексирование соединений к нему (помните про многопоточность?) обеспечивается с помощью yamux (yet another multiplexer). Такая схема позволяет запускать несколько клиентских socks5 серверов и распределять внешние подключения к ним, пробрасывая их через одно единственное TCP-соединение (почти как в meterpreter) от клиента к серверу, реализуя тем самым многопоточный режим, без которого нам просто не получится полноценно работать во внутренней сети.

Суть работы yamux’а заключается в том, что он вводит дополнительный сетевой уровень стримов, реализуя его в виде 12-байтного заголовка для каждого пакета. (Здесь мы намеренно используем слово «стрим», а не поток, чтобы не путать читателя с программным потоком «thread» — это понятие мы так же будем использовать в данной статье). Внутри yamux заголовка содержатся номер стрима, флаги для установки/завершения стрима, количество передаваемых байт, размер окна передачи.

Помимо установки/завершения стрима в yamux реализован механизм keepalive’ов, позволяющий отслеживать работоспособность установленного канала связи. Работа механизма keeplive-сообщений настраивается при создании Yamux-сессии. Собственно, из настроек там только — два параметра: enable/disable и периодичность отсылки пакетов в секундах. Keepalive-сообщения может отсылать yamux-сервер, так yamux-клиент. При получении keepalive-сообщения удаленная сторона обязана ответить на него посылкой точно такого же идентификатора сообщения (фактически — числа), который она приняла. В общем, keepalive — это тот же пинг, только для yamux.

Читайте также:  Изготовление лестниц для дачи своими руками

Подробно вся техника работы мультиплексора: типы пакетов, флаги установки и завершения соединений механизм передачи данных описана в спецификации к yamux.

Источник

Как создать и настроить прокси сервер SOCKS5

вкл. 10 Январь 2019 . Опубликовано в Android — Общее

Как создать и настроить прокси сервер SOCKS5. В этой статье для «чайников» доступно объясняем как создать прокси-сервер SOCKS5 для обхода блокировок Telegram / Вконтакте / Яндекс / Одноклассники и других сайтов.

Как создать и настроить прокси сервер SOCKS5

Создание прокси-сервер SOCKS5

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

Регистрация у Хостинг провайдера

Самые выгодные тарифы и стабильность/производительность у провайдера DigitalOcean . Переходим по данной ссылке и регистрируемся:

  • Вводим свой Email
  • Придумываем и вводим пароль

  • Нажимаем кнопку Create an Account
  • Зайти на свой электронный почтовый ящик и закончить регистрацию, перейдя по ссылке которая была указана в письме

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

Подключение дебетовой/кредитной карточки

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

Все данные вводим на английском языке.

Далее переходим к третьему этапу — это выбор и создание сервера.

Создание личного сервера

Теперь о том, как создать личный сервер (на данном сервере вы также можете создать сайт, либо личный облачный диск по типу Yandex Disk или DropBox), провайдер DigitalOcean называет их Droplet.

Нажмите на кнопку Create Droplet, после чего вы попадете на страницу создания конфигураций сервера:

  • в разделе Choose an image выберите дистрибутив Ubuntu (рекомендуется 16.04 x64)
  • Выбираем тарифный план $5 в месяц или 0,007 центов в час.

  • Выбираем расположение сервера, которое в дальнейшем будет эмулировать ваше расположение (если выбрать города США, то IP будет американским). Стоить также отметить, что чем ближе находиться сервер, тем быстрей у вас будут загружаться страницы и файлы.

  • В конце нажимаем кнопку CREATE, чтобы создать Droplet (сервер)

Создание будет происходить в течение 2-5 минут. После чего на электронную почту вам придет письмо с IP адресом сервера, логином (обычно root) и паролем.

Вы также можете узнать IP на основной странице управления Droplet.

Переходим к предпоследней части, создание из обычного сервера в VPN. Превращаем наш простой VPS в vpn server ubuntu.

Создание VPN сервера

Подключение

Для того, чтобы как-то управлять сервером (командная строка), необходим какой-то инструмент, в нашем случае это утилита PuTTY , которую надо скачать и установить.

После установки запускаем PuTTY, указываем IP адрес и нажимаем кнопку OPEN

  1. Далее вам необходимо ввести логин (root)
  2. Полученный пароль, который сразу вас попросят поменять

  • password — «старый», текущий пароль
  • (Curent) UNIX password — повторить еще раз пароль
  • Enter new UNIX password — ввести новый пароль
  • Retype new Unix password — повторить новый пароль

Обновим программное обеспечение сервера Ubuntu:

Настройка Dante

Скачаем Dante с сервера:

Загрузим дополнительный пакет gdebi и установим Dante

Будут сыпаться ошибки, игнорируем их!

Теперь нам необходимо узнать на каком сетевом интерфейсе наш IP, для этого вводим команду:

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

В данном примере интерфейс eth0. Запишите СВОЙ сетевой интерфейс в блокнот.

Теперь займемся настройкой конфигурации прокси-сервера, очистите конфиг, вводим команду:

И внесем изменения с помощью текстового редактора nano :

Вносим свою конфигурацию:

в строке «external: eth0» вы должны указать свой интерфейс! Сохраняем внесенные изменения!

Запустим прокси-сервер SOCKS5 Dante:

Как добавить логин и пароль для конфиденциальности?

Создайте логин ( пользователя Linux ) и пароль:

измените снова файл /etc/danted.conf, вводим команду:

изменяем строку socksmethod с none на username:

Источник

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