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

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

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

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

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

Категории

Все категории
Loading categories
PowerShell-Obfuscation-Bible — Набор техник, примеров и немного теории для ручного обфусцирования PowerShell-скриптов с целью обхода антивирусов (AV evasion), собранный в образовательных целях. Содержимое этого репозитория — результат личного исследования, включая изучение материалов в интернете и проведение проб и ошибок в лабораторных условиях и при пентестах. | Kitploit
Инструменты/GitHubGitHub/t3l3machus/powershell-obfuscation-bible
Обход IDS/IPSТестирование на ПроникновениеОбучение и ОбразованиеRed TeamingПодобранные РесурсыРазработка Полезной Нагрузки
GitHubt3l3machus/powershell-obfuscation-bible

PowerShell-Obfuscation-Bible

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

Популярное

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

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

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

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

Смотреть все инструменты →

Описание

Набор техник, примеров и немного теории для ручного обфусцирования PowerShell-скриптов с целью обхода антивирусов (AV evasion), собранный в образовательных целях. Содержимое этого репозитория — результат личного исследования, включая изучение материалов в интернете и проведение проб и ошибок в лабораторных условиях и при пентестах.

Поделиться

Библия обфускации PowerShell

Python License

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

Видеопрезентация на YouTube: youtube.com/watch?v=tGFdmAh_lXE

⚠️ Отказ от ответственности: Использование техник и концепций, описанных в этом репозитории, для получения несанкционированного доступа к системам, на тестирование которых у вас нет разрешения, является незаконным. Вы несёте ответственность за свои действия. Не будьте злом.

Оглавление

  1. Энтропия
  2. Выявление триггеров детектирования
  3. Переименование объектов
  4. Обфускация логических значений
  5. Прерывание командлета кавычками
  6. Прерывание командлета символом крышки
  7. Техника Get-Command
  8. Замена циклов
  9. Замена команд
  10. Играемся со строками
  11. Добавление мусора
  12. Добавление и удаление комментариев
  13. Рандомизация регистра символов
  14. Перестановка компонентов скрипта
  15. Построчное выполнение скрипта

Энтропия

Научный термин entropy, который обычно определяется как мера случайности или беспорядка системы, важен в обходе антивирусов. Это связано с тем, что вредоносное ПО часто содержит код, который сильно рандомизирован, зашифрован и/или закодирован (обфусцирован), чтобы его было трудно анализировать и, следовательно, обнаруживать. Как один из различных методов, антивирусные продукты используют анализ энтропии для выявления потенциально вредоносных файлов и полезных нагрузок.

Важно понимать эту концепцию, потому что при обфускации кода следует учитывать изменение энтропии, создаваемое выбранными вами изменениями. Ломать сигнатуры легко, но если не обращать внимания на уровень энтропии, продвинутые AV/EDR увидят это насквозь.

Принцип, который стоит держать в уме: Чем больше энтропия, тем выше вероятность того, что данные обфусцированы или зашифрованы, и тем вероятнее, что файл/полезная нагрузка вредоносны. К счастью, есть способы её снизить.

Claude E. Shannon представил формулу в своей статье 1948 года A Mathematical Theory of Communication, которую можно использовать для измерения энтропии набора данных. Вот простая реализация Shannon Entropy на Python, которую вы можете использовать для измерения энтропии разрабатываемых полезных нагрузок:

#!/bin/python3
# Usage: python3 entropy.py <file>

import math, sys

def entropy(string):
    "Calculates the Shannon entropy of a UTF-8 encoded string"

    # decode the string as UTF-8
    unicode_string = string.decode('utf-8')

    # get probability of chars in string
    prob = [ float(unicode_string.count(c)) / len(unicode_string) for c in dict.fromkeys(list(unicode_string)) ]

    # calculate the entropy
    entropy = - sum([ p * math.log(p) / math.log(2.0) for p in prob ])

    return entropy


f = open(sys.argv[1], 'rb')
content = f.read()
f.close()

print(entropy(content))

Вы также можете использовать этот онлайн-калькулятор энтропии Шеннона или утилиту Microsoft Sigcheck.exe с опцией -a.

Выявление триггеров детектирования

Зрелый и элегантный подход перед тем, как бросаться в метод проб и ошибок с обфускацией, чтобы получить вариант полезной нагрузки, который не помечается, — это выявить части скрипта, которые вызывают детектирование вредоносного ПО. Особенно в коротких скриптах, таких как C2-команды, вы, возможно, сможете внести незначительные изменения и сразу же исчезнуть с радаров.

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

image

Вы также можете выявлять триггеры вручную, выполняя скрипт по частям.

Переименование объектов

При обфускации скриптов приоритетом должна быть замена имён переменных/классов/функций на случайные. Таким образом, в сочетании с другими техниками, вы сможете легко обойти детектирование. Но следует помнить об энтропии разрабатываемых полезных нагрузок. Обратите внимание на следующий стандартный reverse shell скрипт, который обычно обнаруживается большинством, если не всеми антивирусами:

image

Теперь рассмотрим следующую обфусцированную версию:

image

В этой версии все имена переменных заменены на случайные имена длиной 32 символа. Также я заменил (pwd).Path на $(gl). Полезная нагрузка имеет Shannon entropy 4.96. На момент написания этого текста она не обнаруживается MS Defender и рядом других продуктов:

image

Теперь рассмотрим эту версию:

image

В этом варианте также заменены все имена переменных, но на этот раз на имена, состоящие из x символов 'f', что приводит к значительному снижению энтропии полезной нагрузки. Здесь я также заменил (pwd).Path на $(gl). Опять же, на момент написания этот вариант не обнаруживается MS Defender. Полезная нагрузка имеет Shannon entropy 0.76.

image

⚡ Оба этих варианта обходят обычные антивирусы, но второй имеет более низкую энтропию и, вероятно, будет иметь больше шансов при обработке EDR и другими продвинутыми антивирусными движками. ⚠️ Я не утверждаю, что лучшая производительность второго варианта полезной нагрузки в этом примере обязательно связана с уровнем энтропии (я не могу этого знать наверняка; возможно, дело в длине, или в обоих факторах, или ещё в чём-то), но это важный аспект, который следует учитывать при обфускации, и этот пример призван подчеркнуть данную концепцию.

Вы можете использовать скрипт ниже для рандомизации имён переменных в PowerShell-скрипте. ⚠️ Скрипт не идеален! Если запустить его на больших сложных PowerShell-скриптах, он может сломать их функциональность, заменив то, что не нужно. Используйте с осторожностью и осознанно.

#!/bin/python3
#
# This script is an example. It is not perfect and you should use it with caution.
# Source: https://github.com/t3l3machus/PowerShell-Obfuscation-Bible
# Usage: python3 randomize-variables.py <path/to/powershell/script>
Скачать инструмент