Всем привет!
Последняя статья на тему данной программы была 21 июня. Проект не обновлялся, но всё же я снова вернулся к обновлению программы. Сегодня я решил рассказать про новое обновление, ну и в целом про обновление v1.2.1-v1.3.
В любом случае я буду стараться поддерживать проект и добавлять что-то новое.
Поэтому в данной статье я подробно всё опишу и в выводе будет сказано, что будет дальше!

Что же было исправлено в данной программе?
Планировщик задач
Первым делом я решил обновить планировщик задач, т.к. он не обновлялся аж с версии v1.0 и был очень плохим и неудобным. Покажу вам для сравнения, как планировщик изменился:
v1.2 (и ниже):

И вот, что вышло в v1.2.1:

Как видите теперь планировщик задач стал более удобным и читаемым. Теперь вы с лёгкостью можете просматривать задачи и при желании экспортировать их (раньше нельзя).
COM-объекты дают прямой программный доступ к API планировщика Windows с полным контролем над каждой задачей и её свойствами. В то время как если использовать CSV-данные, то их приходится парсить (и например из-за локализации всё может сломаться).
Также были созданы свойства задач:

Теперь вы можете использовать планировщик задач прямо в Threatbit Simple Scanner и просматривать задачи. Вы также при желании сможете легко экспортировать задачу в формате .xml.
Карантин

Как работает карантин в данной программе?
Благодаря библиотеке cryptography, Fernet каждый файл, который попадает в карантин шифруется с помощью AES-256 (кто не знает для гарантированного получения ключа нужно перебрать 2²⁵⁶ комбинаций). То есть всё содержимое шифруется и не подлежит выполнению (программа просто не запустится) и соответственно не представляет опасности.
random_bytes = os.urandom(32)
Ключ для шифрования генерируется с помощью os.urandom (считается Cryptographically Secure Pseudo-Random Number Generator). Он считается безопасным и криптографически непредсказуемым. Затем он кодирует 32 байта в Base64 строку и шифрует ключ через DPAPI.dll
encrypted_key = win32crypt.CryptProtectData(self.key, None, None, None, None, 0)
И после того, как файл попал в карантин, то его имя меняется на его же хэш, а расширение меняется на .thrlock
Вот пример:

metadata.json выглядит примерно так:
{ "files": [ { "original_path": "C:\\ProgramData\\Microsoft\\Windows\\Start Menu\\Programs\\Startup\\ThreatbitScanner.exe", "original_name": "ThreatbitScanner.exe", "quarantine_path": "C:\\Users\\%username%\\Documents\\Threatbit\\Quarantine\\34eaf973e5a34bf0169f324d5be008af.thrlock", "hash_sha256": "34eaf973e5a34bf0169f324d5be008af4509c95e3d35103250594ae1e3f3d405", "quarantined_at": "2026-08-20T22:41:01.988699", "size": 96702976 } ] }
key.bin это всего лишь DPAPI-блоб, содержащий зашифрованный ключ Fernet. Даже если вдруг скопировать всю папку Threatbit и попробовать расшифровать на другом устройстве, то ничего не выйдет.
Если вы переустановите Windows или смените пользователя, то вы также не расшифруете файл.
Главное! Если ваш файл в карантине, то не меняйте key.bin и metadata.json, а также не редактируйте зашифрованный .thrlock файл. При нажатии "Восстановить" файл вернётся на прежнее место и успешно расшифруется при нормальных условиях.

Таким образом файл действительно попадает в карантин и ничего не сможет сделать
Проверка подписей файлов
В v1.3 появилась проверка цифровых подписей 14 критических системных файлов. Сделано на случай, если вредоносное ПО подменит важный файл.
Список файлов, которые проверяются:
ntdll.dllkernel32.dlluser32.dlladvapi32.dllshell32.dllws2_32.dllwinlogon.exelsass.exeservices.exesvchost.execsrss.exesmss.exeexplorer.exedwm.exe
Теперь если вдруг какой-то из этих файлов будет не подписан, то он отобразится как подозрительная угроза.
Как работает проверка?
Каждый файл проверяется через PowerShell Get-AuthenticodeSignature. Если файл:
Если файл не подписан - то будет обозначен как NotSigned
Если хэш не совпадает - то будет обозначен как (HashMismatch)
Если ошибка проверки - то будет обозначен как (UnknownError)
Таким образом если важный файл подменят, то это будет обозначено.
Regback (WIP)

В v1.3 появилась возможность создать резервную копию реестра перед сканированием. Хоть все изменения и безопасны, но на всякий случай вы можете создать копию.
Экспортируется 5 кустов реестра:
SOFTWARE: настройки программ
SYSTEM: системные параметры
SAM: база учётных записей
SECURITY: политики безопасности
HKCU: настройки текущего пользователя
Данная опция находится в разработке и скоро выйдет окончательная полная версия.
Прочие детали
1. Новая структура папок

Теперь всё хранится в Documents\Threatbit.
Все файлы, которые попали в карантин, или записанные логи и RegBack'и попадают теперь в папку Threatbit. Вы сможете легко искать ваши файлы и использовать их по назначению.
2. Кнопки обновить

В v1.3 во всех вкладках ручных инструментов появились кнопки "Обновить".
Вы можете спросить, мол, а зачем это нужно? Раньше, чтобы увидеть актуальный список (например, после добавления новой задачи в планировщик или установки программы с автозапуском), нужно было перезапускать всю программу.
Теперь этого не нужно делать! Просто нажмите кнопку обновить в нужной вкладке и всё.
Подведём итоги
Теперь после перечисленных нововведений можно подытожить:
Теперь в программе есть рабочий карантин с использованием CSPRNG для генерации ключа и AES-256 для шифрования файла.
В v1.2.1 был обновлён планировщик задач и стал более удобным и читаемым.
Были добавлены небольшие введения по типу сортировки по папкам и кнопки обновить
Добавлен первоначальный RegBack, который будет вскоре дополняться и становиться ещё лучше
Таким образом Threatbit Simple Scanner будет становится лучше, главное высказывайте свои идеи и я буду стараться их реализовывать постепенно.
Полезные ссылки:
Репозиторий на GitHub
Сайт с проектом
Скачать Depends для использования Nuitka

