Текст письма злоумышленника:
ВНИМАНИЕ!!!
ВАШИ ФАЙЛЫ ЗАШИФРОВАНЫ, И ЭТО ФАКТ. КОЛ-ВО ПОПЫТОК ВВОДА ПАРОЛЯ -10, ПОСЛЕ ЭТОГО ВОССТАНОВЛЕНИЕ ФАЙЛОВ
БУДЕТ НЕВОЗМОЖНО.
НЕ РЕКОМЕНДУЕТСЯ:
- ПРОВЕРЯТЬ КОМП АНТИВИРУСОМ;
- ПЕРЕУСТАНАВЛИВАТЬ ВИНДОВС;
- ПЫТАТЬСЯ ВОССТАНОВИТЬ ДАННЫЕ САМОСТОЯТЕЛЬНО.
ВСЕ ЭТИ ДЕЙСТВИЯ - БЕСПОЛЕЗНАЯ ТРАТА ВАШЕГО ВРЕМЕНИ И УСИЛИЙ, А ТАКЖЕ РЕАЛЬНЫЙ РИСК ПОТЕРЯТЬ ВСЮ ИНФОРМАЦИЮ НАВСЕГДА. НЕ УСЛОЖНЯЙТЕ СВОЕ ПОЛОЖЕНИЕ, ЛУЧШЕ ПИШИТЕ НА:
ufsupport@meta.ua
И ВСЕ БУДЕТ ХОРОШО. ДО СКОРОГО.
Вобщем дело было так.
Звонит пользователь, так мол и так, сообщение (введите пароль) на экране (пользователи по терминалке с ограниченными правами). Как я понял проникновение было подбором пароля (после недавней переустановки ПО не успели поработать по безопасности). На счастье нашел незакодированный архив (старый) в котором содержались некоторые файлы, которые повторялись в каталоге с базами данных в закодированном виде. Имменно благодаря сравнению удалось выяснить способ кодировки.
Кодировка начинается с 29 байта включительно (что бы осталась шапка файла, что бы файлы определялись по содержимому) и заканчивается на 1786639 включительно. Кодировка происходит переворачиванием (NOT) некоторых битов в байте (обычно один бит в старшей группе (биты 7-4) и один в младшей (биты 3-0)) в зависимости от того на каком месте они (байты) стоят (различаются 16 мест), т.е. через 16 байт способ кодировки повторяется.
Для начала я решил составить таблицу перекодировки, т.е., допустим, A5 соответствует B3 в первой позиции и т.д.:
позиции
1 | 2 | 3 | .... | 16 |
00-F0 | 00-E8 | 00-23 |
...
A5-B3 | A5-C7 | A5-9F |
A6-B2 | A6-C8 | A6-9E |
...
Т.о. получался массив из 16 позиций в каждой по 256 элементов соответствий (2 байта) или 3-мерный массив (16,256,2). Этот массив я заполнил из имеющихся пар файлов (оригинал-закодированный), мне повезло после того как я обработал пару десятков таких пар файлов весь массив у меня заполнился. Вначале я еще не знал по каким правилам можно заполнить соответствия, после заполнения видна явная закономерность (см.выше), хот она мне и не понадобилась, возможно, поможет кому то если файлов пар окажется недостаточно.
Имея на руках таблицу я принялся раскодировать (благо правила совпадали для всех файлов).
Когда начинал писать думал или Delphi или FoxPro, но т.к. я владел только DOS-овскими аналогами (TP 7 и FoxPro 2.0/2.6 которые не подходили - длинные имена русские буквы) быстрее оказалось написать на 1С v7 используя ВК binfiles (что конечно отразилось на скорости раскодировки, но все равно хорошо :) ). Написал 2 обработки: одна собирает таблицу перекодировки из пар файлов (находящихся в одном каталоге), другая раскодирует все файлы в каталоге по предварительно собранной таблице перекодировки. Для тех у кого отсутствуют пары файлов может подойдет и моя таблица перекодировки (если злоумышленник использует один способ).
Предлагаю ИБ 7.7 с обработками
ИБ - для хранения таблицы перекодировки, которая состоит из 2-ух справочников: "Матрица" (16 элементов-позиций) и подчиненный ему "Коды" (максимум по 256 элементов при полной таблице перекодировки) реквизит Код - байт оригинал, реквизит Наименование - кодированный байт (в виде 2-ух символьной строки - HEX-представлении байта). В справочнике Матрица есть реквизит Кол - количество подчиненных элементов (будет расти по мере заполнения таблицы перекодировки), в данной ИБ таблица перекодировки уже заполнена, поэтому для заполнения ее вашими файлами справочник Матрица предварительно очистите, если нет пар файлов попробуйте использовать заполненную таблицу перекодировки (вдруг повезет)
ЗаполнениеМатрицы.ert - заполняет таблицу перекодировки (в указанном каталоге должны содержаться пары файлов *.* - *.*.FKLOCK не кодированные - кодированные, обратите внимание размер должен совпадать). Так же убедитесь что содержимое пар файлов отличается после 28 байта.
ПроверкаСовпаденияКодов.ert - проверяет совпадают ли значения Код и Наименование справочника Коды. Совпадать не должны, если совпадают значит в качестве пар файлов вы положили одинаковые файлы по содержанию (например оба закодированы). Проверка выполняется до расшифровки (иначе расшифровка бессмысленна), если проверка нашла совпадения - Ваша таблица перекодировки неправильная, можете удалить и начать заполнение заново, предварительно выявив и удалив предательскую (совпадающую) пару файлов.
Расшифровка.ert - расшифровывает по заполненной таблице перекодировки (в т.ч. частично заполненной, т.к. возможно этого будет достаточно, но нет 100% гарантии), в.т.ч. возможность включить вложенные каталоги. Расшифровка копирует файл *.*.FKLOCK в *.* который и расшифровывает (т.е. FKLOCK файл не затрагивается), если при этом файл *.* уже есть, он переименовывается в *.*_ файл. Т.о. на диске должно быть свободное место для расшифровки от 1-го до 2-ух объемов FKLOCK файлов (закодированныз файлов).
P.S.
Думаю обработки могут подойти и для других расширений (LOCK, CRYPDER и т.д.)
BinFiles включен в архив.
Про права: бесплатно, никаких гарантий, надеюсь за BinFiles меня не засудят :)