Skip to content

About

just binary analyzer

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

4 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 

Repository files navigation

Universal Binary / Reverse-Engineering Analyzer

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

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

Важно: скрипт выполняет статический анализ файла и не запускает исследуемый бинарник.

Возможности

Скрипт выполняет несколько групп проверок:

  • базовая информация о файле;
  • размер и временные метки;
  • расширение файла;
  • MD5;
  • SHA-1;
  • SHA-256;
  • CRC32;
  • HEX-preview начала и конца файла;
  • ASCII-preview;
  • поиск magic/signature;
  • анализ PE-файлов;
  • определение архитектуры PE;
  • анализ секций PE;
  • entropy секций;
  • определение PE characteristics;
  • определение DLL characteristics;
  • анализ Data Directories;
  • поиск Rich Header;
  • обнаружение PE overlay;
  • поиск ASCII-строк;
  • поиск Unicode-строк;
  • определение ELF;
  • определение Mach-O;
  • статистический анализ данных;
  • оценка энтропии;
  • arithmetic mean;
  • chi-square;
  • serial correlation;
  • Monte Carlo estimation of Pi;
  • поиск известных криптографических констант;
  • эвристический анализ повторяющегося XOR;
  • попытка определения размера XOR-ключа;
  • CRC32-анализ.

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

Требования

  • Windows PowerShell 5.1 или совместимый PowerShell;
  • дополнительные модули не требуются;
  • дополнительные утилиты не требуются;
  • права администратора обычно не нужны.

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

Запуск

Перейдите в каталог со скриптом:

cd C:\Path\To\Analyzer

Разрешите выполнение скрипта только для текущего PowerShell-сеанса:

Set-ExecutionPolicy -Scope Process Bypass -Force

Запустите анализ:

.\analyze.ps1 .\file.name

Например:

.\analyze.ps1 .\sample.exe

или:

.\analyze.ps1 .\library.dll

Абсолютный путь

Можно передать абсолютный путь:

.\analyze.ps1 "C:\Samples\sample.exe"

Путь с пробелами необходимо заключать в кавычки.

Аргументы

Скрипт принимает один основной аргумент:

.\analyze.ps1 <Path>

Path — путь к анализируемому файлу.

Если аргумент не указан, используется значение по умолчанию:

.\real.dll

То есть:

.\analyze.ps1

эквивалентно попытке проанализировать:

.\real.dll

Пример полного запуска

Set-ExecutionPolicy -Scope Process Bypass -Force
.\analyze.ps1 .\sample.exe

После запуска результаты выводятся непосредственно в консоль.

Программа отображает анализ отдельными этапами:

[1] BASIC FILE INFO
------------------------------------------------------------

[2] HASHES
------------------------------------------------------------

[3] HEX / ASCII PREVIEW
------------------------------------------------------------

Нумерация последующих этапов зависит от версии скрипта и количества выполняемых анализов.

Что анализируется

1. Basic File Info

Выводится:

  • полный путь;
  • размер в байтах;
  • размер в MiB;
  • время создания в UTC;
  • время изменения в UTC;
  • расширение файла.

2. Hashes

Рассчитываются:

MD5
SHA1
SHA256
CRC32

Пример:

MD5        : ...
SHA1       : ...
SHA256     : ...
CRC32      : ...

Хэши удобно использовать для идентификации файла и последующего сравнения с другими образцами.

3. HEX / ASCII Preview

Показываются первые 64 байта в HEX и первые 128 байт в ASCII.

Также отображаются последние 64 байта файла.

Это позволяет быстро заметить:

  • известную сигнатуру файла;
  • текстовые заголовки;
  • мусор/обфускацию;
  • данные в конце файла;
  • возможный overlay.

4. Magic Signatures

Проверяются сигнатуры различных форматов.

В частности, поддерживается обнаружение таких форматов, как:

  • PE/DOS (MZ);
  • ELF;
  • Mach-O;
  • Java Class;
  • WebAssembly;
  • ZIP;
  • GZIP;
  • BZIP2;
  • 7-Zip;
  • RAR;
  • XZ;
  • ZSTD;
  • LZ4;
  • CAB;
  • OLE/Compound File;
  • PDF;
  • SQLite;
  • PNG;
  • JPEG;
  • GIF;
  • BMP;
  • ICO;
  • RIFF;
  • MP3;
  • FLAC;
  • OGG;
  • MP4/MOV;
  • TTF;
  • OTF;
  • и другие.

Наличие magic bytes не гарантирует, что файл является корректным экземпляром соответствующего формата.

PE-анализ

Для Windows PE-файлов анализатор извлекает информацию из PE-заголовков.

Определяются:

  • PE offset;
  • архитектура;
  • количество секций;
  • timestamp;
  • PE32 / PE32+;
  • Entry Point;
  • Image Base;
  • Subsystem;
  • DLL Characteristics;
  • PE Characteristics;
  • размер образа;
  • размер заголовков;
  • checksum;
  • Data Directories;
  • таблица секций;
  • entropy каждой секции.

Поддерживаются основные архитектуры PE, включая:

x86
x64 / AMD64
ARM
ARM64
ARMNT
IA64
MIPS
SH3
SH4
M68K
и другие

PE Sections

Для каждой секции собираются данные:

Name
VirtualSize
VirtualAddress
SizeOfRawData
PointerToRawData
Characteristics
Entropy

Entropy особенно полезна при первичном анализе упаковки и высокоэнтропийных областей.

Однако:

высокая entropy не означает автоматически наличие шифрования или упаковщика.

Сжатые данные, изображения, архивы и другие обычные бинарные данные также могут обладать высокой entropy.

Известные packer-секции

Скрипт содержит список известных имен секций, связанных с различными упаковщиками и протекторами.

Например:

UPX0
UPX1
UPX2
.aspack
.adata
.vmp0
.vmp1
.vmp2
.themida
MPRESS1
MPRESS2
.enigma1
.enigma2
.obsidium
.petite

Совпадение имени секции следует рассматривать как индикатор, а не как доказательство использования конкретного packer/protector.

Rich Header

Для PE-файлов выполняется поиск Rich header.

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

PE Overlay

Анализатор также проверяет наличие данных после логической структуры PE-файла.

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

Строки

ASCII

Ищутся последовательности печатных ASCII-символов.

Минимальная длина строки по умолчанию:

5 символов

Для найденных строк отображаются:

Offset
Length
String

Unicode

Также выполняется поиск UTF-16LE-подобных строк.

Это особенно полезно для Windows-бинарников, где текстовые строки часто представлены в Unicode.

ELF

Для ELF-файлов анализируются основные поля заголовка:

ELF32 / ELF64
Little-endian / Big-endian
OS ABI
File Type
Machine

Поддерживается определение распространённых архитектур:

x86
x86-64
ARM
AArch64
MIPS
PowerPC
PowerPC64
RISC-V

Mach-O

Для Mach-O определяется:

  • 32/64-bit;
  • порядок байтов;
  • CPU architecture;
  • тип файла;
  • количество load commands.

Поддерживаются распространённые варианты:

x86
x86-64
ARM
ARM64

Статистический анализ

Анализатор вычисляет ряд статистических характеристик байтового потока.

Entropy

Шенноновская entropy:

H = -Σ p(x) log2(p(x))

Высокое значение может встречаться у:

  • сжатых данных;
  • зашифрованных данных;
  • упакованных файлов;
  • случайноподобных данных.

Arithmetic Mean

Вычисляется среднее значение байтов.

Chi-Square

Вычисляется χ²-статистика распределения байтов.

Serial Correlation

Оценивается корреляция между соседними байтами.

Monte Carlo Pi

Выполняется Monte Carlo-оценка числа π на основе байтового потока.

Эти статистические показатели являются вспомогательными и предназначены для первичного анализа структуры данных.

Поиск криптографических признаков

Скрипт содержит статический поиск известных констант и таблиц, связанных с криптографическими алгоритмами.

В частности проверяются сигнатуры, связанные с:

AES
MD5
SHA-1
SHA-256
SHA-512
CRC32
Blowfish
TEA / XTEA
ChaCha20
Salsa20
Base64
RC4-like lookup tables

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

Например, таблица AES может находиться:

  • в библиотеке;
  • в мёртвом коде;
  • в другом компоненте программы;
  • как часть тестов;
  • в данных, которые не имеют отношения к криптографии.

XOR-анализ

Для данных выполняется эвристический анализ повторяющегося XOR.

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

Проверяемый диапазон размера ключа:

2–40 байт

Для анализа используются первые данные файла с ограничением размера выборки.

Результат является эвристикой и не гарантирует, что найденный ключ является реальным XOR-ключом.

Ограничения

Анализатор предназначен прежде всего для первичного статического исследования.

Он не является полноценной заменой:

  • IDA;
  • Ghidra;
  • Binary Ninja;
  • x64dbg;
  • WinDbg;
  • специализированным PE/ELF/Mach-O анализаторам;
  • sandbox/динамическому анализу.

Скрипт не выполняет полноценную:

  • дизассемблизацию;
  • декомпиляцию;
  • эмуляцию;
  • трассировку выполнения;
  • динамический анализ API;
  • поведенческий анализ процесса.

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

Безопасность

Анализируемый файл не запускается самим скриптом — он открывается как набор байтов для чтения и анализа.

Тем не менее рекомендуется соблюдать стандартные меры предосторожности при работе с неизвестными файлами:

  • не запускать исследуемый файл;
  • использовать отдельную VM при анализе потенциально вредоносных образцов;
  • не открывать подозрительные документы обычными приложениями;
  • не подключать ненужные сетевые ресурсы к среде анализа.

Само изменение:

Set-ExecutionPolicy -Scope Process Bypass -Force

действует только для текущего PowerShell-процесса и не изменяет постоянную политику выполнения PowerShell в системе.

Быстрый старт

Минимальный вариант:

Set-ExecutionPolicy -Scope Process Bypass -Force
.\analyze.ps1 .\file.name

Для .exe:

Set-ExecutionPolicy -Scope Process Bypass -Force
.\analyze.ps1 .\sample.exe

Для .dll:

Set-ExecutionPolicy -Scope Process Bypass -Force
.\analyze.ps1 .\sample.dll

Для файла по абсолютному пути:

Set-ExecutionPolicy -Scope Process Bypass -Force
.\analyze.ps1 "C:\Samples\unknown.bin"

Пример структуры проекта

analyzer/
├── analyze.ps1
└── README.md

Запуск из каталога проекта:

Set-ExecutionPolicy -Scope Process Bypass -Force
.\analyze.ps1 .\file.name

License

Если для проекта ещё не выбрана лицензия, этот раздел можно заменить на нужную лицензию, например MIT.

About

just binary analyzer

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages