auditor

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

Он похож на другие популярные инструменты (fsum, hashdeep, sha256sum и т. д.), но с функциями, которые упрощают и ускоряют аудит цифровых данных .

auditorПоддерживает несколько алгоритмов хеширования. По умолчанию используется sha256, рекомендованный NIST с 2015 года (см. Политику NIST в отношении хеш-функций ).

По умолчанию, Logothash method включен, но этот режим можно отключить.

Цепочка целостности

Используемый процесс аудита auditorоснован на концепции цепочки целостности , представленной файлами аудита, в которых хранится информация о целостности.

Термины, задействованные в этом процессе:
Audit_FullList: содержит ли файл аудита информацию о целостности каждого обработанного исходного файла данных.

Stamp: содержит ли файл аудита информацию о фактической целостности Audit_FullListфайла. Stampвсегда пересчитывается и отображается при выполнении соответствующих действий.

Audit_Stamp: хранит ли файл аудита информацию Stampо Audit_FullList, когда он был создан.

Цепочка целостности
Рис.1 - Файлы, участвующие в процессе

Цепочка целостности создается в следующем порядке (поведение по умолчанию):

Файлы данных внутри input_pathобрабатываются и генерируют информацию о целостности (хэш, размер, относительный путь к файлу и т. д.), которая сохраняется в Audit_FullList.

Audit_FullListтакже обрабатывается, генерируется Stamp, который печатается на терминале и сохраняется в Audit_Stamp.

Проверка цепочки целостности выполняется в порядке, обратном описанному выше процессу, путем повторной обработки файлов и проверки целостности по файлам аудита. Stampтакже пересчитывается, выводится на терминал и сравнивается с сохраненным в Audit_Stamp, чтобы проверить, совпадает ли он.

Чтобы приступить к созданию файлов аудита и гарантировать, что будущая проверка цепочки целостности будет проводиться правильно и безопасно, выполните следующие действия:

  1. Организуйте файлы данных в определённой папке (называемой input_path). После установки Auditor откройте командный терминал и выполните команду auditor hash input_path. По умолчанию эта команда создаст файлы аудита Audit_FullListв Audit_Stampкорневой папке input_path. (При необходимости это можно изменить.)
  2. Сохраните все данные, включая файлы аудита, и распечатайте содержимое файла Audit_Stampили подпишите его цифровой подписью .
    Если вы пропустите этот шаг, любой желающий сможет изменить данные и просто создать новые файлы аудита, что поставит под угрозу проверку целостности. Если у вас сейчас нет доступа к принтеру или цифровому сертификату, вы можете воспользоваться бесплатным центром временных меток для подписания файла онлайн, например, freetsa.org (с использованием онлайн-подписи) .
  3. При желании вы можете создать пакет (например, ZIP, TAR или другой контейнер), включающий как файлы данных, так и файлы аудита. Создайте несколько резервных копий этого пакета на разных носителях.
  4. Позже, когда кто-либо выполняет проверку с помощью auditor check, выполняется описанная выше цепочка проверки целостности. В конце процесса данные о целостности из Audit_FullListпересчитываются и выводятся на терминал. Они ДОЛЖНЫ точно совпадать со значением, выведенным на печать или подписанным цифровой подписью на предыдущем этапе. Если они не совпадают, проверка целостности недействительна .
  5. Вы также можете проверить целостность отдельных исходных файлов данных, используя данные в Audit_FullList. См. примеры в разделе использования auditor check.

Использование

Краткое руководство можно посмотреть здесь.

Установив auditorего в свою систему, вы можете использовать его следующим образом:

auditor subcommands: информация
hash
lock
check
info
clone
chkcopy

hashЭто первый этап судебной экспертизы. Он создаёт файлы аудита, позволяющие проверить целостность файлов.

Базовое использование хэша подкоманды

auditor hash input_path

Это позволит:

  1. Хешировать файлы input_pathс помощью алгоритма по умолчанию ( sha256)
  2. Сгенерировать файлы аудита (путь по умолчанию: внутри корня input_path):
    • Audit_FullList: содержит данные о целостности (хэш, размер, имя) файлов в input_path. Имя по умолчанию: _auditor_hashes.txt
    • Audit_Stamp: содержит только данные о целостности Audit_FullList. Имя по умолчанию: _auditor_stamp.txt.Это файл, который необходимо распечатать или подписать цифровой подписью, чтобы обеспечить проверку всей цепочки целостности.
  3. Показать данные о целостностиAudit_FullList
  4. После этого hashвы можете выполнить checkкоманду проверки целостности. Чтобы обеспечить надлежащую проверку целостности в будущем, прочтите раздел « Цепочка целостности» и следуйте приведенным там советам.

Другие примеры:

  1. Просто генерировать хеши, но не создавать никаких файлов (-l)

    auditor hash input_path -l
  2. Перезаписать файлы аудита (-o), используя быстрый диск (-z) с алгоритмом по умолчанию (полезно для SSD-дисков, чтобы ускорить):

    auditor hash input_path -o -z 
  3. То же, что и выше, но с включенным строгим режимом, чтобы гарантировать хеширование ВСЕХ файлов в input_path:

    auditor hash input_path -o -z --strict
  4. Перезаписать файлы аудита (-o) без использования метода thash (-d):

    auditor hash input_path -o -d 
  5. Перезаписать файлы аудита (-o), включить только файлы txt (-i "**/*.txt") только в корневой папке (-u 1) (флаги -i и -e используют шаблон glob, см. Примечания к подробностям).

    auditor hash input_path -o -i "**/*.txt" -u 1
  6. Перезаписать файлы аудита (-o), включить все файлы, кроме txt-файлов (-e "**/*.txt")

    auditor hash input_path -o -e "**/*.txt" 
  7. Перезаписать файлы аудита (-o), включить только файлы с именем «file1.doc» (-i «**/*/file1.doc») и «file2.xls» (-i «**/*/file2.xls»)

    auditor hash input_path -o -i "**/*/file1.doc"  -i "**/*/file2.xls" 
  8. Перезаписать файлы аудита (-o), включая ВСЕ файлы, кроме файлов в папках $RECYCLE.BIN и "System Volume Information". Примечание. Символ $ в $RECYLE.BIN принадлежит имени, и для корректного анализа его необходимо экранировать символом \.

    auditor hash input_path -o -e "**/\$RECYCLE.BIN/**" -e "**/System Volume Information/**" 
  9. Перезаписать файлы аудита (-o), включить все текстовые файлы (-i "**/*/*.txt"), за исключением тех, что находятся внутри каталога с именем folder1 (-e "**/*/folder1/*")

    auditor hash input_path -z -o -a blake3 -i "**/*/*.txt" -e "**/*/folder1/*" 
  10. Перезаписать файлы аудита (-o), использовать быстрый диск (-z) и алгоритм 'blake3' (очень быстро):

    auditor hash input_path -o -z -a blake3
  11. Перезаписать файлы аудита (-o), использовать blockSize 10 МБ и хэш-функцию «whirlpool»

    auditor hash input_path -o -b 10MB -a whirlpool
)

lockПолезно, когда необходимо сохранить существующие файлы аудита. Его можно использовать после команды hash и предотвратить случайное создание новых файлов аудита в input_path.

Базовое использование подкоманды lock

auditor lock input_path

Это позволит:

  1. _auditor_lock.txtСоздайте файл input_path с отметкой времени создания.
  2. Подкоманда Hash не будет выполнена над input_pathзаблокированным объектом.

Чтобы разблокировать input_path, вам нужно вручную удалить файл._auditor_lock.txt


)

checkЭто второй этап судебной экспертизы. Он проверяет целостность данных, используя информацию из файлов аудита, и может быть использован после хэширования.

Базовое использование подкоманды Check

auditor check input_path

Это позволит:

  1. Получить файлы аудита (путь по умолчанию: внутри корня input_path):
  2. Используйте данные о целостности, указанные в, Audit_Stampи сверяйте с ними Audit_FullList.
  3. Используйте данные о целостности, указанные в, Audit_FullListи сверьте их с исходными файлами в формате input_path.
  4. Показать пересчитанные данные целостности Audit_FullList.

Другие примеры:

  1. Проверьте в режиме быстрого диска (-z), используя файлы аудита по умолчанию.

    auditor check input_path -z 
  2. То же, что и выше, но с включенным строгим режимом, чтобы гарантировать проверку ВСЕХ файлов в input_path.

    auditor check input_path -z --strict
  3. Проверять только текстовые файлы (-i "**/*.txt"), используя файлы аудита по умолчанию (флаги -i и -e используют шаблон glob, см. Примечания к подробностям).

    auditor check input_path -i "**/*.txt"
  4. Проверка в тихом режиме (-q) и остановка при первой ошибке (-x) с использованием файлов аудита по умолчанию.

    auditor check input_path -q -x
  5. Проверьте F:\data_path, используя файлы аудита с определенными именами. (-f для <Audit_FullList> и -s для <Audit_Stamp>)

    auditor check F:\data_path -f C:\other_path\personal_fullList.txt -s C:\other_path\personal_stamp.txt -q -x 
  6. Проверьте целостность только одного файла в <input_path> по некоторому файлу аудита

    auditor check F:\data_path\file1.txt -f C:\other_path\some_audit.txt -q -x 

Примечание: проверка аудитора совместима с форматом fsum.

)

cloneиспользуется для копирования данных внутрь input_pathи dest_pathодновременной проверки целостности скопированных данных.

Базовое использование подкоманды clone

auditor clone input_path dest_path

Это позволит:

  1. Получить файлы из input_path, сгенерировать данные о целостности (хэш, размер, имя);
  2. Копировать файлы в dest_path;
  3. Проверьте целостность файлов, сверив dest_pathданные о целостности с данными, созданными в input_path.
  4. Если файлы аудита НЕ существуют, вы можете создать их в input_pathи/или с dest_pathпомощью параметра -g. Если файлы аудита существуют, вы не сможете их создать.

В случае ошибки будет предпринята повторная попытка (по умолчанию 3 раза, это можно изменить).

Другие примеры:

  1. В режиме быстрого диска (-z).

    auditor clone input_path dest_path -z 
  2. То же, что и выше, но с включенным строгим режимом, чтобы гарантировать клонирование ВСЕХ файлов в input_path:

    auditor clone input_path dest_path --strict
  3. В тихом режиме (-q) и остановка при первой ошибке (-x).

    auditor clone input_path dest_path -q -x
  4. Клонирование с генерацией файлов аудита как в input_path, так и в dest_path (см. примечания!).

    auditor clone input_path dest_path -g both 
  5. Клонирование с генерацией файлов аудита только в dest_path.

    auditor clone input_path dest_path -g dest 
  6. Клонирование с генерацией файлов аудита только в input_path.

    auditor clone input_path dest_path -g input 
  7. Вы можете использовать -i и/или -e для включения или исключения файлов процесса (нельзя использовать с --strict).

    auditor clone input_path dest_path -q -x -i "**/*.txt" -e "**/dir1/**/*

Примечания: Для создания файлов аудита input_pathне должно быть файлов аудита (Audit_FullList и Audit_Stamp)! Это сделано для предотвращения путаницы с существующими файлами аудита.

Просмотреть все параметры с помощью auditor clone --help

)


chkcopyиспользуется для проверки данных внутри input_pathпо файлам аудита и копирования в dest_path, а также для проверки целостности скопированных данных в dest_path.

Базовое использование подкоманды chkcopy

auditor chkcopy input_path dest_path

Это позволит:

  1. Получать файлы input_pathи проверять целостность данных из файлов аудита;
  2. Копировать файлы в dest_path;
  3. Проверьте целостность файлов, dest_pathсверив ее с данными о целостности из файлов аудита.
  4. Примечание: chkcopy не создает файлы аудита!

В случае ошибки будет предпринята повторная попытка (по умолчанию 3 раза, это можно изменить).

Другие примеры:

  1. В режиме быстрого диска (-z) для быстрых дисков, таких как SSD, M.2 и т. д.

    auditor chkcopy input_path dest_path -z 
  2. То же, что и выше, но с включенным строгим режимом, чтобы гарантировать проверку и копирование ВСЕХ файлов в input_path:

    auditor chkcopy input_path dest_path --strict
  3. В тихом режиме (-q) и остановка при первой ошибке (-x).

    auditor chkcopy input_path dest_path -q -x
  4. Вы можете использовать -i и/или -e для включения или исключения файлов процесса (нельзя использовать с --strict).

    auditor clone input_path dest_path -q -x -i "**/*.txt" -e "**/dir1/**/*

Примечание: input_path необходимо иметь файлы аудита (Audit_FullList / Audit_Stamp)!

)

infoНе выполняет проверку целостности хэша. Проверяет только файлы аудита и их содержимое, input_pathа также выводит полезную информацию. Может использоваться после выполнения хэширования.

Пример криминалистической информации

auditor info input_path

Это позволит:

  1. Получить файлы аудита (путь по умолчанию: внутри корня input_path):
  2. Проверьте наличие Audit_Stampи Audit_FullListналичие файлов аудита.
  3. Проверьте, существуют ли файлы, перечисленные в Audit_Stampи Audit_FullList, и соответствует ли указанный размер файлу в input_path.
  4. Проверьте, все ли файлы input_pathперечислены в Audit_FullList.
  5. Пересчитать данные о целостности Audit_FullList и сверить их с файлом аудитаAudit_Stamp
  6. Вывести отчет о размерах файлов и всех input_path.
)

Примечания

1: В PowerShell для Windows пути с именами, содержащими пробелы, должны быть заключены в кавычки без одинарного завершающего символа \. При желании используйте двойной обратный слеш в завершающем символе \\. Это связано с тем, что одинарный обратный слеш экранирует завершающие кавычки, и терминал не может правильно интерпретировать путь.

Это работает: "C:\My Data Path" или"C:\My Data Path\\"

Это не удается: "C:\My Data Path\"

2: Флаги -i и -e (включение и исключение шаблонов) используют синтаксис glob. Краткое руководство см. здесь!

Скачать

Загрузка и данные о целостности двоичных файлов (внутри zip-архива):

Отказ от ответственности: эта версия auditorпредоставляется как программное обеспечение на стадии разработки, БЕЗ каких-либо гарантий или поддержки и бесплатна только для некоммерческого использования . Используйте её на свой страх и риск.

Лицензия: Эта версия auditorлицензирована только для некоммерческого использования . Подробности см. в полных условиях лицензии .

Дополнительно

Формат файлов аудита

Формат файлов аудита прост. Каждая строка содержит:

hash_value ?ALGORITHM[<THASH-BlockSize>]|file_size[:hex]*relative_filepath
где [ ] необязательны:

hash_value: значение хэша.

ALGORITHM[<THASH-BlockSize>]: АЛГОРИТМ, используемый для хеширования, записанный заглавными буквами для обеспечения совместимости с некоторыми другими инструментами. Параметр <THASH-BlockSize> необязателен и указывает на использование метода thash и размера блока. Размер блока должен быть указан в КБ, МБ, ГБ или ТБ. Например: 10 МБ.

file_size: Размер исходного файла после хеширования. Полезно для проверки, чтобы повысить скорость, если размер не совпадает. Зачем хешировать большой файл, если уже известно, что его размер не совпадает с исходным?

[:hex]: Необязательный флаг, указывающий, что пути к файлам представлены в шестнадцатеричном формате. Это необходимо, поскольку символы '\n', '\r' или '\0' разрешены в некоторых ОС, а шестнадцатеричный формат позволяет избежать проблем с форматированием результатов.

relative_filepath: Относительный путь к хэшированному файлу.

Пример 1: использование метода thashс алгоритмом sha256 и BlockSize 50MB:

281d5d93464f1165ea7c403ca99d63ff4bf9a360864f8df4bd0e8e6c03774e98 ?SHA256<THASH-50MB>|500000*file_hashed.bin

Пример 2: использование обычного метода, только с алгоритмом blake3, с путем к файлу в шестнадцатеричном формате.

7357b67824d086dc53f5e1ded565f500456bea1812783f1fbcddc08fddc3944c ?BLAKE3|2233:hex*1aCb344356e4e2b2b6

Другие форматы могут быть реализованы в будущем.



Контрольные показатели

Используя сверхтонкие тесты между auditorБыли выполнены анализы fsum, rhash и hashdeep64, результаты показаны ниже.

Machine configs:
S.O.: Windows 11 Home 64bits
Processor: AMD Ryzen 7 (7800X3D 4.20 GHz)
RAM: 64 GB of RAM (Corsair Vengeance DDR5 64GB - 5200MHz)
Disk: SSD M.2 2TB (Corsair MP600 Pro NVMe)

Data Source 1:
Benchmarks
Benchmarks using Data Source 1: Benchmarks
Data Source 2
Benchmarks
Benchmarks using Data Source 2: Benchmarks
Есть предложения или нашли ошибку? Свяжитесь с нами: [email protected]