Skip to content
Эта страница создана и переведена с помощью ИИ. Если вы заметили неточности, помогите нам улучшить её. Редактировать на GitHub

Поддерживаемые типы файлов

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

Матрица типов файлов

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

Тип файлаРасширенияМагические байтыХешYARAЭвристикаРекурсия архивов
PE (Windows).exe, .dll, .sys, .scr, .ocx4D 5A (MZ)ДаДаДа--
ELF (Linux).so, .o, (без расш.)7F 45 4C 46ДаДаДа--
Mach-O (macOS).dylib, .bundle, (без расш.)FE ED FA CE/CF или CE FA ED FE/CFДаДаДа--
Universal Binary(без расш.)CA FE BA BEДаДаДа--
PDF.pdf25 50 44 46 (%PDF)ДаДаДа--
Office (OLE).doc, .xls, .pptD0 CF 11 E0ДаДаДа--
Office (OOXML).docx, .xlsx, .pptx50 4B 03 04 (ZIP) + [Content_Types].xmlДаДаДаИзвлечение
ZIP.zip50 4B 03 04ДаДаОграниченнаяРекурсивно
7-Zip.7z37 7A BC AF 27 1CДаДаОграниченнаяРекурсивно
tar.tar75 73 74 61 72 со смещения 257ДаДаОграниченнаяРекурсивно
gzip.gz, .tgz1F 8BДаДаОграниченнаяРекурсивно
bzip2.bz242 5A 68 (BZh)ДаДаОграниченнаяРекурсивно
xz.xzFD 37 7A 58 5A 00ДаДаОграниченнаяРекурсивно
RAR.rar52 61 72 21 (Rar!)ДаДаОграниченнаяРекурсивно
CAB.cab4D 53 43 46 (MSCF)ДаДаОграниченнаяРекурсивно
ISO.iso43 44 30 30 31 со смещения 32769ДаДаОграниченнаяРекурсивно
Shell-скрипт.sh, .bash23 21 (#!)ДаДаПаттерн--
Python.py, .pycТекст / 42 0D 0D 0AДаДаПаттерн--
JavaScript.js, .mjsОпределение текстаДаДаПаттерн--
PowerShell.ps1, .psm1Определение текстаДаДаПаттерн--
VBScript.vbs, .vbeОпределение текстаДаДаПаттерн--
Batch.bat, .cmdОпределение текстаДаДаПаттерн--
Java.class, .jarCA FE BA BE / ZIPДаДаОграниченнаяРекурсия .jar
WebAssembly.wasm00 61 73 6DДаДаОграниченная--
DEX (Android).dex64 65 78 0A (dex\n)ДаДаОграниченная--
APK (Android).apkZIP + AndroidManifest.xmlДаДаОграниченнаяРекурсивно

Легенда уровней обнаружения

УровеньЗначение
ХешХеш SHA-256/MD5 проверяется по базе данных сигнатур
YARAПолный набор правил YARA применяется к содержимому файла
Эвристика: ДаПолный эвристический анализ с учётом типа файла (см. Эвристику)
Эвристика: ОграниченнаяТолько базовые проверки энтропии и структуры
Эвристика: ПаттернТекстовое сопоставление паттернов для подозрительных команд и обфускации
Рекурсия архивовСодержимое извлекается и каждый файл сканируется индивидуально

Определение по сигнатуре

PRX-SD читает первые 8192 байт каждого файла для определения его типа. Этот подход надёжнее, чем определение по расширению:

File: invoice.pdf.exe
Extension suggests: PDF
Magic bytes: 4D 5A → PE executable
PRX-SD identifies: PE (correct)

Несоответствие расширения

Когда расширение файла не совпадает с определённым по сигнатуре типом, PRX-SD добавляет примечание в отчёт о сканировании. Несоответствия расширений — распространённый приём социальной инженерии (например, photo.jpg.exe).

Приоритет определения по сигнатуре

Когда несколько сигнатур могут совпадать (например, магические байты ZIP для .zip и .docx), PRX-SD использует более глубокую проверку:

  1. Читает магические байты со смещения 0
  2. Если неоднозначно (например, ZIP), инспектирует внутреннюю структуру
  3. Для форматов на основе ZIP проверяет наличие [Content_Types].xml (OOXML), META-INF/MANIFEST.MF (JAR), AndroidManifest.xml (APK)
  4. Возвращается к универсальному типу контейнера

Рекурсивное сканирование архивов

Когда PRX-SD встречает архив (ZIP, 7z, tar, gzip, RAR и т.д.), он извлекает содержимое во временный каталог и сканирует каждый файл индивидуально через полный конвейер обнаружения.

Глубина рекурсии

НастройкаПо умолчаниюОписание
max_archive_depth5Максимальное количество уровней вложенности архивов
max_archive_files10 000Максимальное количество файлов для извлечения из одного архива
max_archive_size_mb500Максимальный общий размер извлечённых данных перед остановкой

Эти ограничения предотвращают исчерпание ресурсов от zip-бомб и глубоко вложенных архивов.

toml
# ~/.config/prx-sd/config.toml
[scanning]
max_archive_depth = 5
max_archive_files = 10000
max_archive_size_mb = 500

Zip-бомбы

PRX-SD обнаруживает zip-бомбы (архивы с экстремальным коэффициентом сжатия) и останавливает извлечение до чрезмерного потребления дискового пространства или памяти. Обнаружение zip-бомбы отображается как SUSPICIOUS в результатах сканирования.

Защищённые паролем архивы

PRX-SD не может извлекать защищённые паролем архивы. Они отображаются как skipped в результатах сканирования с примечанием о шифровании. Сам файл архива по-прежнему проверяется по базам данных хешей и YARA.

Обнаружение скриптов

Для текстовых файлов скриптов (шелл, Python, JavaScript, PowerShell, VBScript, batch) PRX-SD применяет эвристику на основе паттернов:

ПаттернБаллыОписание
Обфусцированные строки10-20Команды в кодировке base64, чрезмерная конкатенация строк
Скачивание + выполнение15-25curl/wget с передачей в bash/sh, Invoke-WebRequest + Invoke-Expression
Обратный шелл20-30Известные паттерны обратного шелла (/dev/tcp, nc -e, bash -i)
Доступ к учётным данным10-15Чтение /etc/shadow, хранилищ учётных данных браузера, keychain
Механизмы persistence10-15Добавление cron-заданий, сервисов systemd, ключей реестра

Неподдерживаемые файлы

Файлы, не соответствующие ни одному известному сигнатуре, всё равно проверяются по базам данных хешей и YARA. Эвристический анализ не применяется к неизвестным типам файлов. Распространённые примеры:

  • Необработанные двоичные данные
  • Проприетарные форматы без публичных сигнатур
  • Зашифрованные файлы (если контейнерный формат не распознан)

Такие файлы отображаются как type: unknown в отчётах о сканировании и получают только сканирование по хешам + YARA.

Следующие шаги

Released under the Apache-2.0 License.