Приветствую вас, начинающие кибервоины!
В современных сценариях вторжений нахождение внутри системы часто не является самым сложным. Настоящая сложность начинается, когда нужно оставаться там незамеченным. Синие команды в хорошо защищённых средах используют непрерывный мониторинг, активное ведение журналов и инструменты SIEM, такие как Splunk или Elastic, для отслеживания активности. Они знают, как выглядит нормальное поведение пользователя, и создают оповещения о подозрительных отклонениях. Взломанная рабочая станция, которая внезапно начинает выполнять команды разведки, немедленно вызывает тревогу. В этот момент защитнику не нужно гадать. Расследование начинается, и вы рискуете остаться заблокированным ещё до того, как добьётесь хоть какого-то прогресса.
По этой причине хакерам приходится прибегать к обфускации. Хотя она не делает команды невидимыми, она значительно затрудняет их распознавание. Преобразуя полезные данные и команды в странные, некорректно выглядящие формы, можно проскользнуть мимо систем обнаружения, полагающихся на простое сопоставление с шаблоном. В этой статье мы рассмотрим три инструмента, которые обеспечивают обфускацию в PowerShell: psobf — обфускатор на Golang; Argfuscator, специализирующийся на сокрытии аргументов команд Windows; и PowerShell Script Obfuscator от I-Am-Jakoby, основанный на кодировании и многослойных преобразованиях. Вместе эти инструменты предоставляют вам гибкие способы скрывать действия и увеличивать время ожидания во враждебной среде.
Psobf (сокращение от PowerShell Obfuscator) — проект на Golang, выпущенный летом 2024 года и находящийся в активной разработке. Для работы инструмента требуется версия Go 1.25.0 или выше на Linux. После установки он позволяет быстро и гибко настраивать обфускацию полезных нагрузок PowerShell.
bash$ > rm -rf /usr/local/go && tar -C /usr/local -xzf go1.25.0.linux-amd64.tar.gz
bash$ > echo "export PATH=$PATH:/usr/local/go/bin" >> /etc/profile
bash$ > source /etc/profile
bash$ > go install <a href="http://github.com/TaurusOmar/psobf/cmd/psobf@latest">github.com/TaurusOmar/psobf/cmd/psobf@latest</a>
Затем добавьте эту строку к /etc/profile:
export PATH=$PATH:/root/go/bin
bash$ > psobf -i revshell.ps1 -o obf.ps1 -level 5
После перемещения к цели и выполнения замаскированная оболочка работает так, как и ожидалось, предоставляя нам более скрытое соединение, скрывая при этом истинную природу команды.
Argfuscator преобразует эти команды в внешне некорректные, но при этом функциональные версии. Инструмент использует сочетание случайных изменений регистра, трюков с кавычками, замен регулярных выражений, сокращённых расширений и других замен. Argfuscator изначально поддерживает обфускацию 68 команд Windows, чего достаточно для большинства базовых задач разведки и сохранения.
Полученный результат может выглядеть нечитаемым, но в этом-то и суть.
Фильтры SIEM менее эффективны, и команды успешно выполняются, несмотря на их внешний вид. Argfuscator особенно полезен для ежедневной скрытности во время длительного вторжения.
Например, обратную оболочку можно обернуть в Base64 и выполнить с флагом -e :
PS > powershell -e "..."
При прослушивании Netcat замаскированная полезная нагрузка обеспечивает ожидаемое соединение.
Настоящее преимущество достигается за счёт применения методов стекирования. Скрипт, прошедший двоичное кодирование, затем перестановку строк и, наконец, преобразование в Base64, будет выглядеть совершенно случайным до пошагового декодирования. Даже если защитники перехватят зашифрованный скрипт, время, необходимое для снятия нескольких слоёв, даёт хакеру передышку. Это дополнительное время может означать разницу между выполнением задач и остановкой операции.
Мы рассмотрели инструменты, которые позволяют по-разному добавить это препятствие, не меняя при этом базовое поведение кода. Один из них скрывает форму полезных данных PowerShell, другой искажает аргументы команд, так что простые правила ключевых слов не работают, а третий использует многослойное кодирование, так что скрипт выглядит бессмысленным до тех пор, пока не будет расшифрован. Совместное использование этих инструментов не гарантирует успеха, но повышает планку как для систем обнаружения, так и для специалистов, которые должны исследовать обнаруженные уязвимости.
В современных сценариях вторжений нахождение внутри системы часто не является самым сложным. Настоящая сложность начинается, когда нужно оставаться там незамеченным. Синие команды в хорошо защищённых средах используют непрерывный мониторинг, активное ведение журналов и инструменты SIEM, такие как Splunk или Elastic, для отслеживания активности. Они знают, как выглядит нормальное поведение пользователя, и создают оповещения о подозрительных отклонениях. Взломанная рабочая станция, которая внезапно начинает выполнять команды разведки, немедленно вызывает тревогу. В этот момент защитнику не нужно гадать. Расследование начинается, и вы рискуете остаться заблокированным ещё до того, как добьётесь хоть какого-то прогресса.
По этой причине хакерам приходится прибегать к обфускации. Хотя она не делает команды невидимыми, она значительно затрудняет их распознавание. Преобразуя полезные данные и команды в странные, некорректно выглядящие формы, можно проскользнуть мимо систем обнаружения, полагающихся на простое сопоставление с шаблоном. В этой статье мы рассмотрим три инструмента, которые обеспечивают обфускацию в PowerShell: psobf — обфускатор на Golang; Argfuscator, специализирующийся на сокрытии аргументов команд Windows; и PowerShell Script Obfuscator от I-Am-Jakoby, основанный на кодировании и многослойных преобразованиях. Вместе эти инструменты предоставляют вам гибкие способы скрывать действия и увеличивать время ожидания во враждебной среде.
Псобф
Репо:
https://github.com/TaurusOmar/psobfPsobf (сокращение от PowerShell Obfuscator) — проект на Golang, выпущенный летом 2024 года и находящийся в активной разработке. Для работы инструмента требуется версия Go 1.25.0 или выше на Linux. После установки он позволяет быстро и гибко настраивать обфускацию полезных нагрузок PowerShell.
Установка Go
bash$ > wget https://go.dev/dl/go1.25.0.linux-amd64.tar.gz bash$ > rm -rf /usr/local/go && tar -C /usr/local -xzf go1.25.0.linux-amd64.tar.gz
bash$ > echo "export PATH=$PATH:/usr/local/go/bin" >> /etc/profile
bash$ > source /etc/profile
Установка psobf
Теперь мы готовы установить инструмент. Судя по его странице на GitHub, установка проста и понятна:bash$ > go install <a href="http://github.com/TaurusOmar/psobf/cmd/psobf@latest">github.com/TaurusOmar/psobf/cmd/psobf@latest</a>
Затем добавьте эту строку к /etc/profile:
export PATH=$PATH:/root/go/bin
Обфускация обратной оболочки
Установив psobf, мы можем сгенерировать и обфусцировать обратный шелл, например, взятый с revshells.com. Обфускация так же проста, как выбор входного скрипта, выходного файла и уровня преобразования:bash$ > psobf -i revshell.ps1 -o obf.ps1 -level 5
После перемещения к цели и выполнения замаскированная оболочка работает так, как и ожидалось, предоставляя нам более скрытое соединение, скрывая при этом истинную природу команды.
Аргфускатор
Argfuscator разработан для обхода статических фильтров, применяемых специалистами по безопасности к распространённым командам. Службы безопасности часто устанавливают оповещения по определённым ключевым словам и аргументам. Например, они могут обнаружить whoami, net userили netstat -ano. Прямой запуск таких команд может мгновенно вас выдать.Argfuscator преобразует эти команды в внешне некорректные, но при этом функциональные версии. Инструмент использует сочетание случайных изменений регистра, трюков с кавычками, замен регулярных выражений, сокращённых расширений и других замен. Argfuscator изначально поддерживает обфускацию 68 команд Windows, чего достаточно для большинства базовых задач разведки и сохранения.
Полученный результат может выглядеть нечитаемым, но в этом-то и суть.
Фильтры SIEM менее эффективны, и команды успешно выполняются, несмотря на их внешний вид. Argfuscator особенно полезен для ежедневной скрытности во время длительного вторжения.
Обфускатор скриптов PowerShell
Обфускатор скриптов PowerShell от I-Am-Jakoby предоставляет более широкий набор преобразований. Он фокусируется не на аргументах, а на целых скриптах. Инструмент может обфусцировать код PowerShell, используя кодировки Base64, Hex, ASCII, URL, двоичные представления и даже перестановку строк. Благодаря использованию этих методов скрипты становятся нечитаемыми для человека и не поддаются простой проверке специалистами по безопасности.
Например, обратную оболочку можно обернуть в Base64 и выполнить с флагом -e :
PS > powershell -e "..."
При прослушивании Netcat замаскированная полезная нагрузка обеспечивает ожидаемое соединение.
Настоящее преимущество достигается за счёт применения методов стекирования. Скрипт, прошедший двоичное кодирование, затем перестановку строк и, наконец, преобразование в Base64, будет выглядеть совершенно случайным до пошагового декодирования. Даже если защитники перехватят зашифрованный скрипт, время, необходимое для снятия нескольких слоёв, даёт хакеру передышку. Это дополнительное время может означать разницу между выполнением задач и остановкой операции.
Краткое содержание
Избежать обнаружения непросто. В условиях пристального наблюдения такие необдуманные действия, как выполнение простых команд разведки или использование неизменённых скриптов, сразу же становятся поводом для расследования. Суть обфускации заключается в том, чтобы сделать ваши действия менее заметными с первого взгляда, заставить автоматизированные системы пропускать закономерности и заставить аналитиков тратить время на расшифровку шумов. Это даёт вам время выполнить задачи до того, как у защитников появится чёткая картина.Мы рассмотрели инструменты, которые позволяют по-разному добавить это препятствие, не меняя при этом базовое поведение кода. Один из них скрывает форму полезных данных PowerShell, другой искажает аргументы команд, так что простые правила ключевых слов не работают, а третий использует многослойное кодирование, так что скрипт выглядит бессмысленным до тех пор, пока не будет расшифрован. Совместное использование этих инструментов не гарантирует успеха, но повышает планку как для систем обнаружения, так и для специалистов, которые должны исследовать обнаруженные уязвимости.