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

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

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

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

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

Категории

Все категории
Loading categories
Stracciatella — OpSec-безопасное пространство выполнения PowerShell изнутри C# (также известный как SharpPick) с отключенными при запуске AMSI, Constrained Language Mode и Script Block Logging. | Kitploit
Инструменты/GitHubGitHub/mgeeky/stracciatella
Повышение привилегийФреймворки для эксплойтовОбход IDS/IPSЛатеральное перемещениеСкриптинг и автоматизацияПост-эксплуатацияТестирование на ПроникновениеКомандование и УправлениеRed TeamingРазработка Полезной Нагрузки
GitHub
543621014 лет назадПроверено Kitploit

Популярное

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

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

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

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

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

Stracciatella

OpSec-безопасное пространство выполнения PowerShell изнутри C# (также известный как SharpPick) с отключенными при запуске AMSI, Constrained Language Mode и Script Block Logging.

Репозиторий

Stracciatella v0.7

Пространство выполнения PowerShell из C# (техника SharpPick) с отключенными AMSI, ETW и Script Block Logging для вашего удовольствия.

В наши дни, когда PowerShell сильно инструментирован с помощью таких техник, как:

  • AMSI
  • ETW
  • Script Block Logging
  • Файл транскрипта
  • Логирование модулей
  • Ограниченный языковой режим (Constrained Language Mode)

Продвинутые атакующие должны находить способы обхода этих усилий для проведения сложных имитационных упражнений adversarial-симуляций. Чтобы помочь в этом, был создан следующий проект.

Эта программа построена на основе обходов для конкретных техник, включенных в:

  • Disable-Amsi.ps1
  • KillETW.ps1 by tandasat
  • Disable-ScriptLogging.ps1

Которые, в свою очередь, основаны на следующих исследованиях:

  • Matt Graeber: https://github.com/mattifestation/PSReflect
  • Matt Graeber: https://twitter.com/mattifestation/status/735261120487772160
  • Avi Gimpel: https://www.cyberark.com/threat-research-blog/amsi-bypass-redux/
  • Adam Chester: https://www.mdsec.co.uk/2018/06/exploring-powershell-amsi-and-logging-evasion/
  • Ryan Cobb: https://cobbr.io/ScriptBlock-Logging-Bypass.html
  • Ryan Cobb: https://cobbr.io/ScriptBlock-Warning-Event-Logging-Bypass.html

Идея SharpPick, то есть запуск скриптов PowerShell из сборки C# с помощью Runspaces, также не нова и была впервые реализована Lee Christensen (@tifkin_) в его:

  • UnmanagedPowerShell

Также исходный код заимствует реализацию CustomPSHost от Lee.

Этот проект наследует от вышеупомянутых исследований и замечательного сообщества безопасности, чтобы предоставить почти эффективное окружение PowerShell с отключенными защитами при запуске.

Теперь легко компилируется с .NET 4.0, тогда как при компиляции с .NET Framework 4.7.1+ включается дополнительная функциональность, позволяющая выгружать DLL, составляющие артефакты обхода CLM, и пытаться удалить их после этого (честно говоря, работает с трудом).

Лучший результат достигается при компиляции Stracciatella с .NET 4.0.

OpSec

  • Эта программа предоставляет возможность декодировать переданные параметры на лету с помощью однобайтового XOR
  • Перед запуском любой команды убеждается, что отключены AMSI двумя способами и ETW
  • Перед запуском любой команды убеждается, что отключено ведение журнала Script Block двумя способами
  • Эта программа не патчит ни одну системную библиотеку, нативный код системы (например, amsi.dll)
  • Были предприняты усилия, чтобы не хранить декодированные скрипты/команды чрезмерно долго, чтобы защитить себя от техник дампа памяти, контролируемых EDR и AV

Использование

Доступно несколько опций:

PS D:\> Stracciatella -h

  :: Stracciatella - Пространство выполнения PowerShell с отключенными AMSI, ETW и Script Block Logging.
  Mariusz Banach / mgeeky, '19-22 <[email protected]>
  v0.7

Использование: stracciatella.exe [опции] [команда]
  -s <путь>, --script <путь> - Путь к файлу, содержащему скрипт PowerShell для выполнения. Если опции не указаны, войдет в
                               псевдо-оболочку. Это также может быть HTTP(S) URL для загрузки и выполнения скрипта powershell.
  -v, --verbose              - Выводить подробную информацию
  -n, --nocleanup            - Не удалять остатки отключения CLM (DLL-файлы в TEMP и ключи реестра COM).
                               По умолчанию они всегда удаляются.
  -C, --leaveclm             - Не пытаться отключить CLM. Более скрытно. Позволит избежать оставления не удаленных артефактов отключения CLM.
  -f, --force                - Продолжить выполнение, даже если защиты PowerShell не были отключены.
                               По умолчанию мы выходим при сбое.
  -c, --command              - Выполняет указанные команды. Вы можете использовать -c или добавить команды после
                               параметров stracciatella: cmd> straciatella ipconfig /all
                               Если заданы и команда, и параметры скрипта, выполняется команда после запуска скрипта.
  -x <ключ>, --xor <ключ>    - Считать входные данные XOR-закодированными, где <ключ> - однобайтовый ключ в десятичном формате
                               (префикс 0x для шестнадцатеричного)
  -p <имя>, --pipe <имя>     - Читать команды powershell из указанного именованного канала. Команда должна начинаться с 4 байт
                               ее длины в little-endian (нотация Length-Value).
  -t <миллисек>, --timeout <миллисек>
                             - Указывает таймаут для операции чтения из канала (в миллисекундах). По умолчанию: 60 сек. 0 - бесконечно.
  -e, --cmdalsoencoded       - Считать входную команду (указанную в '--command') также закодированной.
                               Декодирует входную команду после декодирования и выполнения входного скрипта.
                               По умолчанию мы декодируем только входной файл и считаем команду переданной в открытом виде.

Программа принимает команду и путь к файлу скрипта в качестве входных данных. Оба опциональны; если ничего не указано, будет запущена псевдо-оболочка. Команда и скрипт могут быть дополнительно закодированы с помощью однобайтового XOR (вывод будет в Base64) для улучшения OpSec-опыта.

Вот несколько примеров использования:

  1. Псевдо-оболочка - запускается, когда не заданы ни команда, ни путь к скрипту:
PS D:\> Stracciatella.exe -v

  :: Stracciatella - Пространство выполнения PowerShell с отключенными AMSI, ETW и Script Block Logging.
  Mariusz Banach / mgeeky, '19-22 <[email protected]>
  v0.7

[.] Версия PowerShell: 5.1
[.] Языковой режим: FullLanguage
[+] Нет необходимости отключать Constrained Language Mode. Уже в FullLanguage.
[+] Script Block Logging отключен.
[+] AMSI отключен.
[+] ETW отключен.

Stracciatella D:\> $PSVersionTable

Name                           Value
----                           -----
PSVersion                      5.1.18362.1
PSEdition                      Desktop
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0...}
BuildVersion                   10.0.18362.1
CLRVersion                     4.0.30319.42000
WSManStackVersion              3.0
PSRemotingProtocolVersion      2.3
SerializationVersion           1.1.0.1
  1. XOR-закодированная (ключ = 0x31) команда и путь к файлу скрипта

Сначала, чтобы подготовить закодированные операторы, можно использовать встроенный скрипт encoder.py, который используется следующим образом:

PS D:\> python encoder.py -h
usage: encoder.py [options] <command|file>

positional arguments:
  command               Задает команду или путь к файлу скрипта для кодирования

optional arguments:
  -h, --help            показать это справочное сообщение и выйти
  -x KEY, --xor KEY     Задает ключ XOR для команды/файла (один байт)
  -o PATH, --output PATH
                        (необязательно) Выходной файл. Если не указан, выведет в stdout

PS D:\> python encoder.py -x 0x31 "Write-Host \"It works like a charm!\" ; $ExecutionContext.SessionState.LanguageMode"
ZkNYRVQceV5CRRETeEURRl5DWkIRXVhaVBFQEVJZUENcEBMRChEVdElUUkRFWF5fcl5fRVRJRR9iVEJCWF5fYkVQRVQffVBfVkRQVlR8XlVU

Затем передаем вывод encoder.py в качестве входных данных для закодированной команды Stracciatella:

PS D:\> Stracciatella.exe -v -x 0x31 -c "ZkNYRVQceV5CRRETeEURRl5DWkIRXVhaVBFQEVJZUENcEBMRChEVdElUUkRFWF5fcl5fRVRJRR9iVEJCWF5fYkVQRVQffVBfVkRQVlR8XlVU" .\Test2.ps1

  :: Stracciatella - Пространство выполнения PowerShell с отключенными AMSI, ETW и Script Block Logging.
  Mariusz Banach / mgeeky, '19-22 <[email protected]>
  v0.7
Скачать инструмент