Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
PowerShellArmoury — Арсенал PowerShell для специалистов по безопасности | Kitploit
Инструменты/GitHubGitHub/cfalta/powershellarmoury
Инструменты шифрования/дешифрованияГенерация полезной нагрузкиСкриптинг и автоматизацияТестирование на ПроникновениеУтилиты и фреймворкиRed TeamingArchived
GitHubcfalta/powershellarmoury

PowerShellArmoury

Арсенал PowerShell для специалистов по безопасности

Репозиторий
470692 лет назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

[!IMPORTANT]
Этот репозиторий теперь заархивирован. Хотя это было интересное путешествие, я думаю, что PSArmoury утратил свою полезность.


PowerShellArmoury

PowerShell Armoury предназначен для пентестеров, «вставьте-сюда-цвет»-тимеров и всех остальных, кто использует разнообразные PowerShell-инструменты во время своих заданий. Он позволяет загрузить и хранить все ваши любимые PowerShell-скрипты в одном обфусцированном файле.

Вам не нужно возиться с ручным обновлением Rubeus, PowerView и т.д. Просто создайте файл конфигурации один раз или используйте стандартный, включённый в инструмент. Отныне вам нужно лишь запустить «New-PSArmoury» перед следующим заданием. Кроме того, PSArmoury обфусцирует ваш код и содержит встроенный обход AMSI. Модульная конструкция должна упростить вам изменение кода обхода или обфускации в случае обнаружения.



Общая структура

Текущая версия PSArmoury отдаёт предпочтение модульной конструкции.

root@kitploit:~
 New-PSArmoury.ps1
 PSArmoury.json
 utilities
    ConvertTo-Powershell.ps1
    Invoke-Shuffle.ps1
 modules
    evasion.ps1
    obfuscation.ps1

Код разделён на основной скрипт-генератор с именем New-PSArmoury.ps1, который вы и запускаете. Код для обхода, обфускации и деобфускации хранится в отдельных файлах .ps1 в каталоге modules. Эти отдельные файлы вызываются основным скриптом и должны упростить изменение конкретных функций (например, обхода AMSI). Помимо каталога modules, существует также каталог utilities. Здесь вы найдёте отдельные скрипты, которые могут быть полезны в определённых сценариях.

Каталог modules

Путь к каталогу modules по умолчанию — .\modules, где точка относится к текущему рабочему каталогу вашей оболочки. Вы можете изменить путь к каталогу modules, используя аргумент -ModulesDirectory команды New-PSArmoury. Однако имена самих файлов скриптов жёстко закодированы в основном скрипте и всегда должны называться:

  • evasion.ps1
  • obfuscation.ps1

Давайте подробнее рассмотрим эти два файла.

evasion.ps1

Этот скрипт должен содержать код, предназначенный для обхода того, что вы намереваетесь обойти. По умолчанию он содержит широко известный обход AMSI (спасибо amsi.fail). Обратите внимание, что:

  • код здесь выполняется ДО всего остального (например, до деобфускации)
  • НИКАКОЙ ПРОВЕРКИ НЕТ! Всё, что вы сюда поместите, будет передано в IEX как есть.

obfuscation.ps1

Этот скрипт должен содержать код, используемый для обфускации и деобфускации. Стандартный obfuscation.ps1 использует шифрование RC2. Примеры готовых к использованию:

  • TEMPLATE_obfuscation_RC2.ps1 --> это стандартный вариант
  • TEMPLATE_obfuscation_byte_convert.ps1
  • TEMPLATE_obfuscation_empty.ps1

Обратите внимание, что TEMPLATE_obfuscation_empty.ps1 на самом деле ничего не делает и служит шаблоном для создания собственной функции.

Если вы хотите использовать любой из них, просто переименуйте его в «obfuscation.ps1» и удалите файл по умолчанию.

Если вы хотите создать настраиваемую версию, имейте в виду следующие моменты, касающиеся обфускации:

  • Имя функции ОБЯЗАТЕЛЬНО должно быть «Get-PSArmouryObfuscation» с единственным строковым параметром «Code», так как именно так основной скрипт будет вызывать любой элемент, который вы хотите поместить в арсенал.
  • Функция ДОЛЖНА возвращать обфусцированную версию кода в виде одного строкового значения. Основной код скриптов выполняет дополнительный цикл base64-кодирования/декодирования, чтобы мы могли обрабатывать и другие данные, которые вы ему передаёте, но было бы проще, если бы вы могли просто сделать строку ;-)
  • Соответствующая функция деобфускации ОБЯЗАНА понимать то, что вы возвращаете. Основной скрипт просто передаёт результаты — никакой магии здесь не происходит

И не забудьте учесть следующие моменты, касающиеся деобфускации:

  • Имя функции ОБЯЗАТЕЛЬНО должно быть Get-PSArmouryDeObfuscation без параметров, так как она перебирает фиксированную глобальную переменную.
  • Функция ДОЛЖНА возвращать деобфусцированную версию кода в виде одного строкового значения, готового к выполнению. Мы просто передаём всё, что вы возвращаете, в IEX, так что остальное зависит от вас.

Каталог utilities

Каталог utilities содержит полезные отдельные скрипты.

  • ConvertTo-Powershell.ps1
    • Преобразует консольное приложение c# в скрипт PowerShell. Для получения дополнительных сведений см. соответствующую запись в блоге.
  • Invoke-Shuffle.ps1
    • Простой скрипт обфускации, который преобразует одну строку кода в несколько переменных, содержащих части исходной строки, которые затем объединяются и вызываются во время выполнения.

Справочник по конфигурации

Файл конфигурации должен быть допустимым JSON, состоящим из одного массива с одним или несколькими объектами, где каждый объект интерпретируется как один источник скрипта. Каждый объект имеет следующие атрибуты:

Name (обязательный)

Имя по вашему выбору для идентификации скрипта, включённого в этот объект. Это просто для справки.

URL (обязательный)

Расположение для получения содержимого скрипта. Это может быть URL веб-ресурса (https://), локальный путь (C:) или сетевой ресурс (\...). URL передается в Net.Webclient или Get-Item PowerShell соответственно. Таким образом, практически любой формат, который один из них может обработать по умолчанию, должен работать.

Type (обязательный)

Это даёт подсказку о расположении скрипта для создателя арсенала. Существует три допустимых типа:

  • GitHub
    • Запрашивает учётные данные для аутентификации через API GitHub. Также пытается различить «сырой» URL, указывающий непосредственно на файл, и URL, указывающий на репозиторий. Если URL указывает на репозиторий, скрипт автоматически найдёт все файлы PowerShell в этом репозитории и включит их. Например: «https://github.com/cfalta/PoshRandom»
  • WebDownloadSimple
    • Означает файл, который можно загрузить без аутентификации с помощью HTTP GET. Например: «http://mywebserver.com/file.ps1»
  • LocalFile
    • Файл на диске, например «C:\temp\test.ps1». Если путь указывает на каталог, будут включены все файлы (рекурсивно) с расширением «.ps1».

FileInclusionFilter (необязательный)

Будет обрабатываться только для объекта типа «GitHub». Сравнивается с полным именем файла с помощью оператора сравнения PowerShell «like», поэтому имейте в виду, что вам нужно включить подстановочные знаки самостоятельно. Не забудьте включить звёздочку (*), если хотите сопоставить часть имени файла. «*.ps1» означает все файлы, заканчивающиеся на «.ps1», а «.ps1» означает просто «.ps1».

Вы не обязаны включать фильтр, но если вы это сделаете, его нужно использовать. Пустой InclusionFilter означает отсутствие файлов.

FileExclusionFilter (необязательный)

Как и InclusionFilter, но, очевидно, наоборот. Исключение имеет приоритет.

Аргументы

Подробнее см. встроенную справку PowerShell (man -full New-PSArmoury).

-Path

Путь к вашему новому файлу арсенала. По умолчанию «.\MyArmoury.ps1».

-FromFile

Загружает ваши PowerShell-скрипты непосредственно из локальной папки или файла, и вам не нужно предоставлять файл конфигурации.

-Config

Путь к вашему JSON-файлу конфигурации. Ознакомьтесь с образцом, поставляемым с этим скриптом, для идей.

-ModulesDirectory

Путь к каталогу modules. По умолчанию «.\modules». Если используется ModulesDirectory, параметры EvasionPath и ObfuscationPath использовать нельзя.

-EvasionPath

Путь к скрипту обхода. Если используются EvasionPath и ObfuscationPath, параметр ModulesDirectory использовать нельзя.

-ObfuscationPath

Путь к скрипту обфускации. Если используются EvasionPath и ObfuscationPath, параметр ModulesDirectory использовать нельзя.

-ValidateOnly

Используйте вместе с «-Config», чтобы скрипт проверил базовый синтаксис вашего JSON-файла конфигурации без его выполнения.

-GithubCredentials

Передайте имя пользователя GitHub и токен доступа в виде объекта учётных данных, чтобы скрипт не запрашивал их. Полезно, если вы многократно создаёте арсенал для тестирования.

Используйте так:

root@kitploit:~
$c = get-credential
New-PSArmoury -GithubCredentials $c

Токен доступа GitHub

Вы должны указать действительное имя пользователя GitHub, а также личный токен доступа, чтобы скрипт мог правильно использовать API GitHub. Не используйте имя пользователя/пароль, так как это всё равно не сработает, если у вас включена MFA (а MFA следует включить). Кроме того, доступ к API с использованием имени пользователя/пароля устарел.

Следуйте этому руководству, чтобы создать личный токен доступа.

Обратите внимание: единственное разрешение, которое нам нужно для токена доступа, — это public_repo в разделе repo.

Это необходимо только для того, чтобы GitHub не блокировал нас, когда мы анализируем большие репозитории (например, PowerSploit) на предмет файлов .ps1 для включения.

Примеры использования

Пример 1 – Все по умолчанию

Если вы хотите создать арсенал с настройками по умолчанию (обратите внимание: это не будет выполнять обфускацию, кроме base64-кодирования), просто выполните следующее.

root@kitploit:~
. .\New-PSArmoury.ps1
New-PSArmoury

Это создаст файл .ps1 с именем «MyArmoury.ps1» в текущем рабочем каталоге, используя:

  • стандартную конфигурацию «.\PSArmoury.json»
  • стандартный обход AMSI, находящийся в «.\modules\evasion.ps1»
  • стандартную обфускацию/деобфускацию (base64), находящуюся в «.\modules\obfuscation.ps1» и «.\modules\deobfuscation.ps1» соответственно.

Вы можете загрузить арсенал в текущий сеанс, используя:

root@kitploit:~
cat -raw .\MyArmoury.ps1 | iex

Загрузка арсенала выполняет следующие шаги:

  • Выполнение кода обхода
  • Передача управления функции деобфускации, которая, в свою очередь, должна
  • Пройтись по каждому обфусцированному элементу и
    • деобфусцировать
    • передать в IEX

После этого весь код PowerShell, который вы поместили в арсенал, будет доступен. Просто вызывайте командлеты как обычно, например:

root@kitploit:~
Invoke-Rubeus -Command "kerberoast /stats"
Get-DomainGroupMember -Identity "Domain Admins" -Recurse

Если случится так, что вы не помните, что поместили в арсенал, просто загрузите его и вызовите инвентаризацию :-)

root@kitploit:~
Get-PSArmoury

Пример 2 – Использование техники обфускации byte-convert/json-format, поставляемой с PSArmoury, и другого файла конфигурации

Запустите New-PSArmoury с параметрами -EvasionPath и -ObfuscationPath, как показано ниже:

root@kitploit:~
New-PSArmoury -Config C:\myarmouryconfig.json -ObfuscationPath .\modules\TEMPLATE_obfuscation_byte_convert.ps1 -EvasionPath .\modules\evasion.ps1

Пример 3 – Создание арсенала из локальной папки, содержащей скрипты PowerShell

Примечание: в этом случае будут добавлены все файлы .ps1 в папке, так как мы передаём путь к папке. Если мы передадим путь к одному файлу, будет обработан только этот файл.

root@kitploit:~
New-PSArmoury -FromFile C:\myscriptfolder
Скачать инструмент