TGViewer
Codeby Codeby @codeby_sec · 37K subscribers
Post #9188 4.26K
💥 EntropyReducer

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

✏️Принцип работы
Алгоритм EntropyReducer определяется значениями BUFF_SIZE и NULL_BYTES

1️⃣Алгоритм обфускации
Инструмент проверяет, имеет ли входная необработанная полезная нагрузка размер, кратный BUFF_SIZE, и, если нет, дополняет её до нужного размера. Затем он берёт каждый фрагмент BUFF_SIZE из полезной нагрузки и создаёт для него узел связанного списка, используя функцию InitializePayloadList, которая инициализирует полезную нагрузку как связанный список. Созданный узел будет иметь пустой буфер размером NULL_BYTES, который будет использоваться для снижения энтропии. Затем он продолжает рандомизировать порядок каждого узла в связанном списке, нарушая исходный порядок полезной нагрузки. Этот шаг выполняется с помощью алгоритма сортировки слиянием, реализованного в функции MergeSort.

Сортированный связанный список находится в случайном порядке, потому что значение, в котором сортируется связанный список, представляет собой значение XOR первых трёх байтов необработанной полезной нагрузки. Это значение определяет его позицию в реорганизованном связанном списке. Поскольку сохранение связанного списка в файл невозможно из-за того, что он связан указателями, он проходит сериализацию с помощью Obfuscate.

2️⃣Алгоритм Деобфускации
Поскольку последним шагом в Obfuscation Algorithm была сериализация связанного списка, первое, что нужно сделать теперь, это десериализовать зашифрованную полезную нагрузку, создав на её основе связанный список. Этот шаг выполняется в функции Deobfuscate. Следующий шаг — сортировка связанного списка по идентификатору узла, которая выполняется с помощью того же алгоритма сортировки слиянием. Теперь связанный список находится в правильном порядке, чтобы восстановить исходные байты полезной нагрузки. Далее из него удаляются исходные байты полезной нагрузки из каждого узла и освобождаются выделенные узлы.

Использование
EntropyReducer считывает исходный файл полезной нагрузки из командной строки и записывает зашифрованную версию в тот же файл с префиксом «.ER». Размер конечной зашифрованной полезной нагрузки варьируется в зависимости от значений BUFF_SIZE и NULL_BYTES.

Инструмент можно включать в свои проекты, для этого необходимо добавить файлы EntropyReducer.c и EntropyReducer.h в проект и вызвать функцию Deobfuscate.

😱 Тесты
⏺️x64 calc shellcode сгенерированный в metasploit имеет энтропию 5.883;
⏺️Тот же файл, зашифрованный с помощью AES, имеет энтропию 7.110;
⏺️Тот же файл, зашифрованный с помощью RC4 - 7.210;
⏺️EntropyReducer - 4.093.

❗️Инструмент необходимо использовать исключительно в образовательных целях или в рамках проведения работ по анализу защищенности❗️
  • 👍 18
  • ❤ 6
  • 🔥 5
  • 😱 1
  • 🏆 1
More from @codeby_sec
  1. Oct 6, 2026Противостояние ФБР и ShinyHunters. На прошлой неделе ShinyHunters заявили о взломе взломе…
  2. Oct 6, 2026⚡️ Твоё резюме на codeby.net теперь прокачивается само. Пока ты решаешь задачи на HackerLa…
  3. Oct 6, 2026Arsenal-NG: лаунчер команд для пентеста Arsenal-NG — лаунчер команд для пентеста, написанн…
  4. Oct 5, 2026❗️Новости недели (28 сентября — 4 октября) Пять главных событий от роста атак на туристиче…
  5. Oct 5, 2026Post #10492
  6. Oct 3, 2026Команда HackerLab заняла 4 место на Кибербитве GIS DAYS 2026! 30 сентября и 1 октября в Са…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →