Проблема

Необходимо установить, какое конкретное приложение создало или отправило файл (например, для определения источника утечки, подлинности документа или вектора атаки).

Причины

- Разные программы внедряют собственные метаданные, структуру данных и артефакты в файл или окружение.
- ОС и файловые системы фиксируют ассоциации (атрибуты, журналы, ссылки) с создавшим процессом.
- При передаче через сеть (email, мессенджеры) добавляются заголовки, содержащие версию клиента, User-Agent, MIME-тип.

Решение


#### 1. Анализ метаданных файла (forensic-анализ источника файла по метаданным)
- EXIF / XMP (изображения, PDF): `exiftool -a -G1 file.jpg` — поле `Software`, `Creator Tool`, `Application Record Version`.
- Office-документы (docx, xlsx, pptx): распаковать ZIP → `docProps/app.xml` → тэг ``, ``.
- PDF: `pdfinfo file.pdf | grep Creator` или `exiftool -PDFCreator`.
- Медиа (mp4, mov): `ffprobe -show_format file.mp4 | grep encoder`.

#### 2. Проверка приложения-отправителя файла через файловую систему ОС
- Windows:
- Свойства файла → Details → поле “Program name” (только для exe/msi).
- `fsutil usn readdata C:\path\to\file` — содержит `FileAttributes`, но не само приложение.
- Анализ журнала USN Journal ($UsnJrnl) — связывает операции с PID, который можно сопоставить с Prefetch.
- Prefetch-файлы (.pf): `(Get-WinEvent -FilterHashtable @{LogName='Microsoft-Windows-TaskScheduler/Operational'})` — не прямой способ, но для поиска самого приложения лучше смотреть, какой процесс сгенерировал файл через Sysinternals Process Monitor (в реальном времени).
- Linux/macOS:
- `ls -l file` → время модификации; `stat -x file` → `BirthTime`, `ChangeTime`.
- `debugfs -R 'stat ' /dev/sda1` — журнал изменений (для ext4).
- Поиск по extended attributes: `getfattr -d file` — некоторые приложения (например, браузеры) записывают свой клас.

#### 3. Как узнать программу, создавшую файл, по сигнатурам и хешам
- Магические подписи: `hexdump -C file | head` — уникальные байты (например, JFIF для JPEG, %PDF, PK для ZIP/Office). Сопоставить с базой `file` (команда `file file.ext`).
- Strings: `strings -el file.ext | grep -iE '(app|client|user-agent|software)'` — может найти встроенное имя приложения/библиотеки.

#### 4. Определение источника файла при сетевой передаче (email, web, мессенджеры)
- Email: заголовки `Received:` (первый в списке — источник), `User-Agent:` (клиент отправки), `X-Mailer:`.
- HTTP-загрузка: `curl -I https://example.com/file.ext` → `Server:`, `X-Powered-By:` на стороне сервера, но не клиента. Для клиента — `User-Agent:` в логах сервера (при загрузке).
- Мессенджеры (Telegram, WhatsApp): файлы обычно преобразуются (сжатие, обрезка метаданных). Единственный способ — анализ логов клиента (с разрешения владельца устройства) — выходит за рамки легального OSINT без согласия.

#### Команды для быстрой проверки (примеры)
```bash

Определение приложения по EXIF

exiftool -Software -CreateTool image.jpg

Извлечение создателя PDF

strings pdf.pdf | grep -E '\/Creator|/Producer'

Анализ заголовков Office-документа (через unzip)

unzip -p file.docx docProps/app.xml | grep -oP '\K[^