Важно! Данный инструмент имеет исключительно служебное и проверочное назначение. Его использование допустимо только для внутреннего аудита безопасности с целью выявления слабых паролей в тестовых или контролируемых рабочих средах, с обязательного согласия администратора и руководства. Использование в противозаконных целях строго запрещено.
Как работает
-
Сбор данных: При открытии обработка автоматически загружает список всех пользователей из Информационной базы, у которых есть пароль, и отображает их вместе с сохраненными хешами паролей (полем
СохраняемоеЗначениеПароля).&НаСервере Процедура ЗаполнитьСписокПользователей() ТЧ.Очистить(); Для каждого ПользовательИБ Из ПользователиИнформационнойБазы.ПолучитьПользователей() Цикл Шифр = ПользовательИБ.СохраняемоеЗначениеПароля; //Зашифрованный пароль Если ЗначениеЗаполнено(Шифр) Тогда НСтр = ТЧ.Добавить(); НСтр.Пользователь = ПользовательИБ.ПолноеИмя; НСтр.Шифр = Шифр; КонецЕсли; КонецЦикла; КонецПроцедуры -
Процесс подбора: При запуске обработки (кнопка "Выполнить обработку") система начинает последовательный перебор числовых комбинаций — от 0 до 1 миллиона, а затем от 00 до 01 миллиона и так далее, до 6 нулей включительно.
&НаСервере Процедура ВыполнитьОбработкуНаСервере() Строка = ПолучитьДанныеПользователейВСтроку(); Ноль = ""; Для Счетчик1 = 0 По 6 Цикл Для Счетчик2 = 0 По 1000000 Цикл Значение = СтрЗаменить(Строка(Счетчик2)," ",""); ХешированиеДанных = Новый ХешированиеДанных(ХешФункция.SHA1); ХешированиеДанных.Добавить(Ноль+Значение); СохраняемоеЗначениеПароля = Base64Строка(ХешированиеДанных.ХешСумма); Позиция = СтрНайти(Строка, СохраняемоеЗначениеПароля); Если Позиция Тогда //Если нашли совпадающий хеш, тогда записываем УникальныйИдентификаторЧисло = ПолучитьСтрукуруДанных(Строка, Позиция - 1); СтрТЧ = ТЧ.НайтиПоИдентификатору(УникальныйИдентификаторЧисло); СтрТЧ.Пароль = Значение; КонецЕсли; КонецЦикла; Ноль = Ноль + "0"; КонецЦикла; КонецПроцедуры -
Проверка совпадения: Для каждого подбираемого числа (
Значение) вычисляется его хеш по алгоритму SHA-1, который затем кодируется в Base64. Полученная строка сравнивается с хешами пользователей из заранее сформированной строки.&НаСервере Функция ПолучитьДанныеПользователейВСтроку() //Формируем одну строку из нашей табличной части в вид: #ИдентификаторСтроки#Хеш Строка = ""; Для каждого Стр Из ТЧ Цикл Строка = Строка+"#"+Стр.ПолучитьИдентификатор()+"#"+Стр.Шифр; КонецЦикла; Возврат Строка; КонецФункции&НаСервере Функция ПолучитьСтрукуруДанных(Строка, Позиция) //Получаем из сформированной строки идентификатор строки для дальнейшей вставки данных в таблицу Символ = ""; УникальныйИдентификаторСтрока = ""; Пока Истина Цикл Позиция = Позиция - 1; Символ = Прав(Лев(Строка,Позиция),1); Если Символ = "#" Тогда Прервать; КонецЕсли; УникальныйИдентификаторСтрока = Символ + УникальныйИдентификаторСтрока; КонецЦикла; Возврат Число(УникальныйИдентификаторСтрока); КонецФункции -
Результат: Когда находится совпадение, подобранный числовой пароль записывается в соответствующую строку таблицы обработки в колонку "Пароль".
Инструкция по использованию
-
Подключение: Откройте обработку как внешнюю или добавьте в базу данных 1С и откройте её.
-
Загрузка списка: Сразу после открытия обработка автоматически заполнит таблицу списком пользователей и их хешами паролей.
-
Запуск анализа: Нажмите кнопку "Выполнить обработку". Процесс может занять какое-то время, результатом моих тестов было ~150 секунд для обычного кода и ~70 секунд для кода, который был записан в строку, а имена переменных были заменены на короткие (1-2 символа), так как выполняется перебор большого количества комбинаций.
-
Анализ результатов: После выполнения в колонке "Пароль" будут отображены найденные пароли для тех пользователей, чьи пароли являются числами в проверенном диапазоне.
Ключевые особенности и ограничения
-
Цель: Выявление слабых числовых паролей.
-
Метод: Перебор (Brute-force) числовых комбинаций длиной до 6 знаков включительно.
-
Алгоритм: Пароли проверяются по хешу SHA-1, закодированному в Base64, что соответствует внутреннему механизму хранения паролей в 1С.
-
Ограничение: Обработка ищет только числовые пароли. Она не проверяет пароли, содержащие буквы или специальные символы.
-
Производительность: Процесс подбора может быть очень медленным, так как выполняется в циклическом коде на языке 1С.
-
Универсальность: Обработка должно работать во всех информационных базах версий 8.n.
Вывод
Эта обработка является специализированным инструментом для администраторов и специалистов по безопасности 1С. Она наглядно демонстрирует уязвимость простых числовых паролей и необходимость соблюдения строгой парольной политики, требующей использования паролей смешанного типа (буквы, цифры, символы) достаточной длины.
Проверено на следующих конфигурациях и релизах:
- 1С:ERP Управление предприятием 2, релизы 2.5.22.124
Вступайте в нашу телеграмм-группу Инфостарт