Как сбросить пароль от хранилища 1с
Рано или поздно перед профессиональным разработчиком встает задача защиты модулей конфигурации и обработок.
- Какая защита существует?
- Какой способ защиты самый надежный?
- Как выбрать защиту 1С конфигурации и при этом не прогадать?
На эти вопросы отвечу в данном обзоре. Речь пойдет в основном об 1С:8.X
Начну же его с другого вопроса:
Зачем защищать код в 1С?
- Разрешить работу только определенной фирме/компании, купившей ваш продукт.
- Ограничить количество работающих пользователей в базе.
- Скрыть «особенные» и уникальные алгоритмы от потребителей или конкурентов.
- Закрыть модули от заказчика до оплаты им разработанного модуля (конфигурации, подсистемы).
- Создать демонстрационную конфигурацию с определенными ограничениями в использовании.
- Скрыть методы обмена с каким-то веб-сервисом, сайтом/CMS.
- Не допустить полной утечки разрабатываемой совместно конфигурации недобросовестными фрилансерами.
Требования, предъявляемые вами к защите конфигурации будут в той или иной мере определять дальнейший выбор.
Какие способы защиты предоставляет 1С:Предприятие стандартно?
- Пароль пользователя к базе и хранилищу конфигурации.
- Роли конфигурации.
- Веб-клиент ограничивает доступ к «Конфигуратору».
- Пароли на текст модуля.
- Поставка без текста модулей (скомпилированный код).
Надежность пароля пользователя
В целом пароль пользователя к базе данных одним из слабых звеньев в защите 1С, поскольку отсутствует обработчик события ошибки ввода. В случае использования простого пароля существует опасность его подбора полным перебора (методом brute force/»грубой силы»).
Из этого вытекают важные правила:
- у пользователя имеющего полные права никогда не должно быть простого пароля.
- такой пароль не следует хранить в командной строке запуска 1С.
- у рядовых пользователей пароли должны меняться регулярно, данные должны иметь максимальное ограничение видимости даже на просмотр.
- можно убрать пароли пользователя привязав их к пользователю операционной системы, в случае если используются надежные операционные системы с политикой частой смены.
- сокрытие пользователя из списка незначительно повышает защиту (при очевидных именах).
- система предупреждает, если пароль «простой»
В случае физического доступа к базе данных (при файловом или клиент-серверном вариантах) (для файлового, например при работе в режиме терминального доступа или с открытым доступом по сети, 1С без права на запись работать не может) у злоумышленника появляется возможность не просто повредить базу, но и сбросить механизм проверки паролей (как-будто пользователи вообще отсутствуют).
В данном случае рекомендуется создание механизма дополнительной проверки такого входа. На новых формата базы 8.3 не получилось проверить работоспособность данных средств (но не следует считать, что не существует новых)
Данный взлом работает не совсем корректно, так как блокирует создание новых пользователей — база становится не вполне полноценной.
Если вам требуется все-таки сбросить пароль по вполне оправданной причине, следует после этого перенести данные в новую чистую базу и создать пользователей в ней.
Для sql баз возможен перенос таблиц пользователей из другой (исправной) базы.
В связи с перечисленными выше особенностями защиты паролями пользователей можно выделить ряд правил.
Правила, повышающие парольную защиту
- в больших компаниях рекомендуется использовать клиент-серверный вариант, даже при достаточной производительности — для улучшения степени защищенности (серверная часть работает с базой по своему каналу).
прямой доступ к SQL базе должен быть также ограничен надежным паролем, внешний доступ к базе закрыт. - для уволенных сотрудников доступ должен сразу блокироваться, ни каких передач паролей приемникам.
- при длительных отпусках, командировках, болезнях доступ к базе должен приостанавливаться.
Пароль к хранилищу конфигурации.
Также имеет низкую защищенность, особенно при файловом хранилище.
- Рядовые программисты не должны иметь административных паролей к хранилищу. При увольнении, уходе в отпуск доступ должен блокироваться.
- Расположение хранилища это обычная файловая база, поэтому доступ должен быть ограниченным, лучше использовать для этого сервер хранилища. При работе с хранилищем не ведется журнал доступа к данным: только процесс захвата и помещения.
- Поэтому получив данные для подключения, злоумышленник может полностью скачать конфигурацию: а также любую доступную ее версию (отследить процесс разработки).
- Использование хранилища при разработке нового коммерческом продукта большой группой не желательно, либо следует задавать пароли для всех важных модулей (подробнее об этом ниже). Как вариант использовать хранилище только для версионного контроля.
- Это усложнит механизм взаимодействия.
Технология может быть такой:
- перед передачей на разработку устанавливается более простой, но уникальный пароль на затрагиваемые модули.
пароль сообщается одному разработчику. - После окончания и проверки разработки, устанавливается более сложный основной пароль.
Доступ к «Конфигуратору»
Конфигуратор работает в режиме толстого клиента, поэтому получить конфигурацию через браузер или веб-сервер невозможно, если не используется режим обновления платформы и конфигурации через веб.
Получить же доступ к данным вполне возможно при использовании не шифрованного подключения — есть случаи перехвата паролей по незащищенному каналу.
Пароли на текст модуля 1С
Устанавливается в «конфигураторе» в меню «Текст/Установить пароль».
Данная защита образует парадокс:
- Никто не берется взламывать пароль, так как используется надежное шифрование; по крайней мере в открытом доступе информация о таких случаях отсутствует.
- Если модуль идет без текста (поставка без текста), то оригинал его вообще не увидеть. (Меню «Конфигурация/Поставка/Настройка поставки»)
- Для корректного исполнения даже закрытого/отсутствующего модуля «1С» хранит модуль в формате байт-кодов(также называемых пи-кодами), для которых некоторые умельцы (например, Валерий Агеев/AWA,Samuray) создали работающие декомпиляторы данных модулей.
Первый — самый распространенный, максимально доработанный под реальные условия, второй даже найти трудно, но текст его открытый — что будет интересно. (Данные разработки не могу рекомендовать для скачивания с моего или иного сайта, так как они нарушают авторские права, как минимум фирмы «1С»).
В результате их работы получается тексты в которых отсутствуют комментарии, изначальное форматирование, но этого достаточно, чтобы понять алгоритм и логику закрытого модуля.
Как они работают:
Через средства чтения внутреннего формата файлов 1С, они получают доступ к данным модулям и далее разбирают его собственными алгоритмами.
Не стоит считать, что это единственные декомпиляторы на рынке: как говорится оправданность взлома определяется ценой, которую за это готовы заплатить. Если конфигурация дорога и востребована, ее будут всегда пытаться взломать или обойти ее защиту.
Получается защитить модуль никак нельзя?
Оказывается для байт-кода также возможна «обфускация» (запутывание) открытого кода, этим сохраняется исходная работоспособность, но вышеизложенные декомпиляторы обычно уже не могут раскрыть данные тексты.
Поэтому появились решения для защиты модулей:
Приведу (перескажу своими словами) информацию, которую урывками собирал с различных ресурсов.
Об wiseadvice:
- Первые версии до 2.0 включительно были достаточно быстро «распарсены» (обфускация не достаточно сильная, автор это признал).
- Разработчик говорит, что у него есть еще варианты усложнения обфускации (получается он их внедряет не сразу, а по мере, конечная версия не всегда максимально защищенная?).
- Валерий Агеев имеет не распространяемую публично версию декомпилятора (которая открывает текущую защиту wiseadvice).
- Если возможность алгоритма позволяет поместить важные данные в hasp-ключи, это бесспорно улучшить защиту, но при наличии ключа и такие конфигурации отучают. Если ваше решение конечное (не динамически меняющееся), то скорее всего оно будет уязвимо.
- «Непонятки» с ценой: на инфостарте старая версия продается по 12500, на одном сайте их сайте: цена от 15000 , на оригинальном сайте продукта 3.0.8 за 17500, раньше цена была 10000 (за 3-4 года выросла, но выросла ли настолько защищенность).
- Вроде пишут, что все просто и понятно, но на демо-версии пришлось потратить некоторое время, чтобы получить окончательный результат (так как версия ограниченная, полностью проверить не получается). Интерфейсно, согласен, очень удобное решение, но требования создать определенные имена функции, ошибки которые не понятные в процессе. Это придирки, может всё из-за демо-версии.
- Нельзя использовать «Выполнить\Вычислить» — с чем связано не понятно.
- Ключи следует покупать отдельно, и они достаточно дороги для простых решений.
- Оформляются документы на покупку решения (это может быть определяющим).
Набор данных фактов склонил меня к покупке второго обфускатора:
- привязка к ключам мне пока не нужна, в целом можно использовать их самостоятельно,
- можно скомбинировать решения (есть и такие случаи: используются библиотеки от первого, обфускация второго),
- цена его на момент покупки 7000 (достаточно дешево, чтобы просто попробовать),
- единственным минусом является то, что обфусцируются все защищенные модули без отбора.
Важно понимать, что при любой записи текста модуля его обфускация снимается: следует повторить ее процедуру.
Код модуля должен иметь как можно больше кода — это повышает надежность обфускации. В Wiseadvice даже есть встроенная проверка на это.
Следует надежно хранить свои модули при режиме поставки без модулей: в этом случае даже зная пароль, вы не сможете восстановить свои наработки.
Следует переписать код продукта под такую стратегию:
Существует риск, что 1С поменяет формат внутренних файлов или сделает алгоритм таких кодов неработоспособными, следует создавать тесты своих решений, для отладки (это гипотетические рассуждения).
Зачем нужны ключи в защите:
- организация демо версии /времени использования;
- ограничение работы по количеству пользователей;
- ограничение функционала;
- скрыть важные данные в ключе (небольшие объемы).
Внешние компоненты, как еще один вариант защиты:
Вынос исполнения кода, выполнение алгоритмов во внешние компоненты.
- Это не тиражные решение, может быть платформо-зависимым в отличии обускации п-кода.
- Достаточно много таких примеров на инфостарте.
Оценить надежность, пока не появится готовый продукт невозможно.
Почитать по теме защиты:
Потребитель и вправду может все еще воображать, что его действия отвечают его собственным потребностям об удовлетворении своих запросов. Однако суждение это, поверхностное и весьма приблизительное, является следствием иллюзий, сложившихся в процессе управления его желаниями.
— Джон Кеннет Гэлбрейт
Очень часто этой процедурой приходится заниматься у заказчика — пароль от единственного пользователя с полными правами «Администратор» безнадежно утерян, восстановить его не представляется возможным и его можно добыть только «взломом» или снятием пароля с пользователя. Как быть?
Ниже я расскажу, как сбросить или «взломать» пароль в 1С 8 как в файловом, так и в клиент-серверном режиме работы 1С.
Восстановление пароля 1С, если база файловая
Перед взломом пароля пользователя ОБЯЗАТЕЛЬНО сделайте резервную копию базы данных 1С, можно просто копированием файла «1Cv8.1CD». Важно, чтобы во время копирования в базе не было пользователей.
Для взлома пароля 1С 8.3 нам потребуется программа — HEX-редактор, например, WinHex (запускается без установки).
1 шаг
Устанавливаем и запускаем WinHex. Из программы открываем файл базы данных — 1Cv8.1CD. Лежит файл по адресу расположения базы, подвергаемой «взлому» пользователя, который прописан в списке выбора информационных баз:
2 шаг
Если вы только начинаете программировать в 1С или просто хотите систематизировать свои знания - попробуйте Школу программирования 1С нашего друга Владимира Милькина. Пошаговые и понятные уроки даже для новичка с поддержкой учителя.
Попробуйте бесплатно по ссылке >>
3 шаг
После того как мы нашли нужную строку в колонке со значением «6», меняем цифру «00» на «01»:
Пароли сняты, поздравляю!
Обновление от наших читателей для новых платформ 1С (например, 1С: Предприятие 8.3.5.1383):
Обновление №2 от нашего читателя Evil Grym от 07.10.2017:
Снятие пароля, если база 1С клиент-серверная
Если у Вас на предприятии клиент-серверный вариант 1С, необходимо действовать немного иначе.
Шаг 1
Запускаем утилиту для управления sql-сервером — Microsoft SQL Server Management Studio.
Шаг 2
Находим в списке таблицу «dbo.params«:
Шаг 3
Обновление: в релизе платформы 1С 8.3.5.1460 описанный выше способ не дает должного результата. Из опыта наших читателей известно, что необходимо попробовать удалить таблицу Usersv8.
Готово! Вы удалили пароли 1С!
Если же у Вас так и не получилось произвести взлом пароля от 1С самостоятельно, Вы всегда можете обратиться за помощью к специалисту 1С
Другие статьи по 1С:
Если Вы начинаете изучать 1С программирование, рекомендуем наш бесплатный курс (не забудьте подписаться на YouTube — регулярно выходят новые видео):
Хранилище конфигурации в 1С 8.2 и 8.3 — это инструмент для групповой разработки решения, встроенный в платформу 1С: Предприятие 8. Хранилище позволяет вести многопользовательскую разработку решений неограниченным количеством пользователей. С его помощью можно увидеть полную историю разработки конфигурации и каждый шаг разработчиков в подробностях.
Рассмотрим настройки и работу с хранилищем конфигурации подробнее.
Как работает хранилище 1С
Хранилище, по сути, это база данных, где хранятся изменения конфигурации. Каждый из разработчиков работает со своей информационной базой, подключенной к хранилищу. Рабочая база так же может быть подключена к хранилищу. Лучше всего общая схема изображена на этой картинке:
Так же в этой БД хранится информации о том, кем захвачен тот и или иной объект. Захват объекта — это метка, устанавливаемая разработчиком. Установленный захват позволяет избежать коллизий при групповой разработке. Пока объект захвачен, никто не может его редактировать.
Захватить можно как объект целиком (рекурсивно), так и отдельно объект или формы.
Если вы только начинаете программировать в 1С или просто хотите систематизировать свои знания - попробуйте Школу программирования 1С нашего друга Владимира Милькина. Пошаговые и понятные уроки даже для новичка с поддержкой учителя.
Попробуйте бесплатно по ссылке >>
После того как разработчик произвел какие-то действия над объектом, он обязан поместить доработки в хранилище. И тем самым снять пометку о том, что объект захвачен.
Как создать хранилище 1С
Создать хранилище достаточно просто, для этого необходимо выбрать в меню «Конфигурация — Хранилище конфигурации» пункт «Создать хранилище». В появившемся меню достаточно указать путь к будущему расположению хранилища и логин/пароль пользователя-администратора:
При создании сделайте обязательно резервную учетную запись с административными правами — очень часто это выручает.
Как подключиться к хранилищу 1С
Чтобы подключиться к хранилищу конфигурации, нужно выбрать в меню в меню «Конфигурация — Хранилище конфигурации» пункт «Подключиться к хранилищу». В появившемся окне необходимо указать путь к хранилищу и логин/пароль пользователя, нажать «Подключиться»:
В момент подключения Ваша конфигурация заменится конфигурацией из хранилища, будьте внимательны.
Администрирование хранилища конфигурации 1С
Для администрирования хранилища 1С необходимо выбрать в меню конфигурации следующий пункт — «Конфигурация — Хранилище конфигурации — Администрирование»:
- На вкладке «Пользователи» можно добавить или удалить новых пользователей, а также определить состав прав для каждого из них.
- На вкладке «Подключения» можно просмотреть всех пользователей, подключившихся к хранилищу, по необходимости отключить их.
- На вкладке «Отмена захвата» Вы можете снять захват любого пользователя на определенный объект, если конечно же Вы имеете права на это.
Как просмотреть историю хранилища 1С
Для просмотра истории надо зайти в меню «Конфигурация — Хранилище конфигурации», выбрать пункт «История хранилища»:
В истории хранилища 1С можно увидеть, когда, кем и что было изменено.
Разработка с хранилищем 1С 8.3
Работу с хранилищем условно можно разделить на основные действия:
-
конфигурации из хранилища конфигурации 1С;
- обновить статусы хранилища 1С;
- захват в хранилище;
- помещение в хранилище.
Остановимся подробнее на каждом действии:
Обновить статусы хранилища 1С
Производит получение последних статусов объектов (захвачен или нет).
Вызывается: «Конфигурация — Хранилище конфигурации — Обновить статусы».
Обновление конфигурации из хранилища конфигурации 1С
Действие позволит получить все измененные объекты конфигурации, которые были помещены в хранилище. Выполнение данной команды так же обновляет статусы объектов.
Вызывается: «Конфигурация — Хранилище конфигурации — Обновить конфигурацию из хранилища».
Захват в хранилище конфигурации 1С
С помощью этой команды можно заблокировать изменение данного объекта для других разработчиков: пока объект захвачен Вами, никакой пользователь не может изменить его до тех пор, пока Вы не поместите объект обратно.
Произвести захват можно, вызвав правой кнопкой контекстное меню у объекта метаданных:
В открывшемся окне можно установить некоторые настройки:
- Выполнять рекурсивно — позволяет захватить все подчиненные объекты — формы и т.д.
- Разрешать получать захваченные — позволяет получать другим пользователям промежуточные версии объекта
Помещение в хранилище 1С
После изменения объекта его необходимо поместить обратно в хранилище, делается это так же, как захват, только выбирается пункт «Поместить в хранилище»:
При помещении обязательно заполняйте поле «комментарий», это очень важно при групповой разработке. Через полгода Вы и не вспомните, зачем производили те или иные действия. Так же, как у захвата, у помещения есть свои специфичные настройки:
- Выполнять рекурсивно — позволяет поместить все подчиненные объекты — формы и т.д.
- Оставить захваченными — позволяет поместить «промежуточную» версию объекта, оставив при этом захват пользователем
Как добавить новый объект в хранилище 1С
Для этого необходимо захватить «корень» конфигурации, а после добавления объектов (справочников, регистров, перечислений и т.п.) поместить корень конфигурации обратно в хранилище.
Если Вы начинаете изучать 1С программирование, рекомендуем наш бесплатный курс (не забудьте подписаться на YouTube — регулярно выходят новые видео):
Сброс паролей пользователей для файловой, клиент-серверной базы 1С и хранилища конфигураций
Запрещается использование приложения для несанкционированного доступа к данным! Используя данное приложение Вы подтверждаете, что базы данных, к которым будет предоставлен доступ, принадлежат Вашей организации и Вы являетесь Администратором с неограниченным доступом к информации этих баз данных. Несанкционированный доступ к информации преследуются по ст. 1301 Гражданского кодекса РФ, ст. 7.12 Кодекса Российской Федерации об административных правонарушениях, ст. 146 Уголовного кодекса РФ.
Отказ от ответственности
Внутренний формат файловой базы 1С не документирован, поэтому алгоритмы основываются на предположениях и догадках. Корректная работа приложения не гарантируется.
Используя приложение вы принимаете на себя всю ответственность и риски за некорректную работу алгоритмов и повреждение баз данных.
Проверяйте в первую очередь на копии, а перед использованием на рабочей версии делайте бэкапы.
Огромная благодарность Валерию Агееву за его работу по разбору внутренних форматов 1С и утилиту Tool_1CD.
Краткое описание формата файлов *.1CD (файловых баз 1Сv8)
Спасибо Pavel Fomin за работу по анализу изменений в 8.3.8 - Формат баз 1CD - классические и 8.3.8.
В клиент-серверном варианте список пользователей хранится в таблице V8USERS, а хеш пароля в зашифрованном виде в поле DATA.
Приложение дешифрует строку из поля DATA, заменяет оба хеша (первый обычный, второй для пароля в верхнем регистре) на хеш введенной строки, шифрует строку с тем же ключем и записывает бинарные данные для указанного пользователя обратно в таблицу V8USERS.
Доступ к базе не требует монопольного режима.
В файловом варианте информационной базы логическая структура данных и алгоритмы обработки аналогичны, но данные упакованы в соответствии с внутренним форматом 1С.
Таблица пользователей считывается целиком, производится изменение в нужных строках, затем вся таблица BLOB данных для всех пользователей перезаписывается в файл информационной базы.
Требуется монопольный доступ для открытия ИБ и записи данных в нее.
В хранилище конфигурации 1С список пользователей хранится в таблице USERS, а некий хеш пароля в поле PASSWORD. Т.к. я не разобрал что это за формат хеша, то сделал только возможность установить пустой пароль (это фиксированная строка "d41d8cd98f00b204e9800998ecf8427e"). Таблица пользователей считывается целиком, производится изменение значений PASSWORD в нужных строках, затем вся таблица пользователей записывается в файл хранилища.
Требуется монопольный доступ для открытия ИБ и записи данных в нее.
Скриншоты с примерами
Файловая информационная база
Клиент-серверная информационная база
Хранилище конфигурации 1С
Поддержка и развитие
Предложения, вопросы, комментарии, а также обнаруженные ошибки оставляйте, пожалуйста, в Issues.
Что делать если пароль от конфигурации безвозвратно утерян и вспомнить (восстановить) его не представляется возможным?
Ниже я расскажу, как восстановить (сбросить) пароль для конфигурации, написанной для платформы 1С Предприятие 8.3, работающей в файловом режиме. Сброс пароля для клиент-серверного режима также возможен, но в данной статье он не рассматривается, так как такая необходимость возникает значительно реже.
Данная статья является прямым доказательством ненадежности парольной защиты конфигурации 1С. Она не является инструкцией по взлому (сбросу) пароля, а лишь демонстрирует, насколько проста такая операция. В этой связи в конце статьи я дам рекомендации по дополнительной защите конфигурации от подобных угроз.
Итак, у вас есть файл конфигурации 1С 8.3 (файл 1Cv8.1CD) и вы хотите сбросить пароль. Все действия выполняются в 5 простых шагов:
1 шаг. Устанавливаем и запускаем Hex Editor Neo. Это бесплатная программа для работы с шестнадцатеричными данными, которыми и является файл конфигурации 1С. Теперь в программе открываем файл нашей конфигурации ( 1Cv8.1CD ).
3 шаг. В найденной строке находим значение 09 и меняем значение слева с 00 на 01.
Например:
было: 00 09 00 73 00 79 00
меняем на: 01 09 00 73 00 79 00
Для конфигураций версии ниже 1С 8.3.5 вместо этого меняем значение с 00 на 01 в шестом столбце.
4 шаг. Нажатием сочетания клавиш Сtrl+F выбираем кодировку Unicode (как на картинке) и вводим в строку поиска v8users , а затем нажимаем кнопку Find.
В найденной строке (V.8.U.S.E.R.S) меняем цифру 8 на 7 чтобы получилось V.7.U.S.E.R.S. Теперь сохраняем внесенные изменения.
5 шаг. Запускаем конфигурацию в режиме Конфигуратора. Выбираем пользователя, а пароль оставляем пустым. В итоге конфигурация откроется. Теперь нам остается сделать выгрузку информационной базы ( Администрирование – Выгрузить информационную базу ), затем создать новую (чистую конфигурацию) и загружаем в неё сохраненную выгрузку ( Администрирование – Загрузить информационную базу ).
Читайте также: