
Invoke-ArgFuscator is an open-source, cross-platform PowerShell module that helps generate obfuscated command-lines for common system-native executables.
░█░█▄░█░█▒█░▄▀▄░█▄▀▒██▀░▒░ ▄▀▄▒█▀▄░▄▀▒▒█▀░█▒█░▄▀▀░▄▀▀▒▄▀▄░▀█▀░▄▀▄▒█▀▄░ ░█░█▒▀█░▀▄▀░▀▄▀░█▒█░█▄▄░▀▀░█▀█░█▀▄░▀▄█░█▀░▀▄█▒▄██░▀▄▄░█▀█░▒█▒░▀▄▀░█▀▄░
Invoke-ArgFuscator — это открытый кроссплатформенный модуль PowerShell, который помогает генерировать обфусцированные командные строки для распространённых системных исполняемых файлов в Windows, Linux и macOS.
👉 Используйте интерактивную версию ArgFuscator на ArgFuscator.net 🚀
Обфускация командной строки (T1027.010) — это маскировка истинного намерения команды путём манипулирования командной строкой процесса. В Windows, Linux и macOS многие приложения разбирают переданные аргументы командной строки неожиданными способами, что приводит к ситуациям, когда вставка, удаление и/или замена определённых символов не меняет поток выполнения программы. Успешная обфускация командной строки, вероятно, затруднит защитные меры, такие как AV и EDR-решения, а в некоторых случаях полностью обойдёт обнаружение.
Хотя предыдущие исследования подчёркивали риски обфускации командной строки, в основном на отдельных примерах уязвимых (системных) приложений, вокруг этой техники существует пробел в знаниях. Этот проект призван восполнить его, предоставляя централизованный ресурс, который документирует и демонстрирует различные техники обфускации командной строки и фиксирует подверженность популярных приложений каждой из них.
brew, выполните brew install powershell/tap/powershell, чтобы установить последнюю версию PowerShell. Альтернативные варианты установки см. в документации Microsoft.Самый простой способ установить этот модуль — выполнить следующую команду PowerShell:
Install-Module -Name Invoke-ArgFuscator
Чтобы использовать модуль, вызовите функцию Invoke-ArgFuscator из PowerShell, например:
a. Чтобы передать команду, которую вы хотите обфусцировать, в качестве аргумента командной строки (при условии, что она поддерживается ArgFuscator.net):
# Windows
powershell /c "Invoke-ArgFuscator -Command 'certutil /f /urlcache https://www.example.org/ homepage.txt'"
# macOS and Linux
pwsh -c "Invoke-ArgFuscator -Command 'certutil /f /urlcache https://www.example.org/ homepage.txt'"
b. Чтобы использовать собственные файлы моделей1:
# Windows
powershell /c "Invoke-ArgFuscator -InputFile path\to\file.json"
# macOS and Linux
pwsh -c "Invoke-ArgFuscator -InputFile path/to/file.json"
Клонируйте этот репозиторий на своё устройство.
Вызовите Invoke-ArgFuscator.ps1 через PowerShell, например:
a. Для интерактивного запуска передайте путь к файлу модели1 через стандартный ввод (stdin):
# Windows
powershell .\Invoke-ArgFuscator.ps1
# macOS and Linux
pwsh ./Invoke-ArgFuscator.ps1
b. Чтобы передать путь к файлу модели1 в качестве аргумента командной строки:
# Windows
powershell .\Invoke-ArgFuscator.ps1 -InputFile "path\to\file.json"
# macOS and Linux
pwsh ./Invoke-ArgFuscator.ps1 -InputFile "path/to/file.json"
c. Чтобы передать команду, которую нужно обфусцировать, в качестве аргумента командной строки:
Обратите внимание, что для этого папка models/ должна находиться в той же папке, что и Invoke-ArgFuscator.ps1.
# Windows
powershell .\Invoke-ArgFuscator.ps1 -Command "certutil /f /urlcache https://www.example.org/ homepage.txt"
# macOS and Linux
pwsh ./Invoke-ArgFuscator.ps1 -Command "certutil /f /urlcache https://www.example.org/ homepage.txt"
Поскольку Invoke-ArgFuscator является модулем PowerShell, вы можете добавить функциональность этого проекта в свой собственный проект PowerShell.
Чтобы использовать Invoke-ArgFuscator, добавьте
Import-Module Invoke-ArgFuscator
в ваш файл PowerShell и вызовите его одним из следующих способов:
Invoke-ArgFuscator -InputFile $InputFile -n $n
Invoke-ArgFuscator -Command $Command -Platform $Platform -n $n
где
$InputFile — string, содержащий (относительный/абсолютный) путь к файлу модели, $Profile — целое число, большее или равное 0, представляющее индекс профиля в указанном пути к файлу, который должен быть использован (необязательно), и $n — integer больше 0 для количества обфусцированных эквивалентов командной строки, которые должны быть созданы (необязательно); или,$Command — string, содержащий команду, которую вы хотите обфусцировать, $Platform — string с соответствующей платформой (например, windows, необязательно), и $n — integer больше 0 для количества обфусцированных эквивалентов командной строки, которые должны быть созданы (необязательно).Их можно сгенерировать через ArgFuscator.net с помощью опции 'Скачать' или загрузить с GitHub. ↩ ↩2 ↩3