Взлом и защита 1С: Предприятия

О проблеме взлома 1С:Предприятия администраторам и  пользователям

Владимир Иванов (www.ivn.newmail.ru)

 

О безопасности 1С администраторам и опытным пользователям

Взлом и защита 1С в локальной и сетевой версии  

Взлом и защита 1С для Терминального Сервера  

Взлом и защита 1С для Microsoft SQL Server  

Взлом и защита 1С для Microsoft SQL Server под Microsoft Terminal Server

Взлом без взлома

Общие выводы

Данная статья содержит обсуждение проблем защиты 1С, в том числе криптозащиты, однако это не означает, что Поликом Про поставляет криптографические решения подлежащие лицензированию ФАПСИ.

 

О безопасности 1С администраторам и опытным пользователям

Данная статья рассчитана на 2х лиц в компании использующей 1С: Предприятие.

Первое лицо, это ключевые пользователи (обычно менеджеры), которые обеспокоены проблемами несанкционированного доступа к коммерческой информации. Данной категории лиц следует внимательно изучить подразделы «Взлом» ниже. В данных разделах содержится информация о том как рядовой пользователь может организовать взлом БД. Вы можете проверить закрыты ли данные возможности похищения данных или нет, т.е. сделать небольшой аудит системы безопасности. Если вы видите, что доступ не закрыт, обратитесь к администратору с просьбой срочно решить данную проблему.

Второе лицо, это системные администраторы, обеспечивающие безопасность 1С: Предприятия. Анализируя разделы взлом вы сможете получить представление о типовых атаках. В разделах «Защита» содержатся рекомендации по организации противодействия взлому.

 

Взлом и защита 1С в локальной и сетевой версии

Взлом

Взлом обычно состоит из 2х стадий. Первая стадия это похищение базы методом копирования, вторая стадия это анализ похищенной базы. Для копирования базы пользователь обычно использует штатные средства Windows типа Explorer, с помощью которых копирует на дискету DBF-файлы базы.

Анализ похищенной базы обычно производится с помощью помошника-студента. Как правило, анализ производят в Excel (см. статью о доступе через Excel к данным 1С)

Защита

Обратите внимание, данному методу взлома невозможно противодействовать используя программные решения на языке 1С. Похитителю не нужно взламывать пароли и обходить программу, он получает доступ к данным сразу мимо 1С. Это важный комментарий относительно "детского сада" в защите 1С. Мне приходилось встречать шарлатанов, которые предлагают сделать "примочку" в конфигурации 1С для "100% защиты". Это просто потерянные деньги, защита должна прикрывать данные.

Перейдем теперь к защите. Ситуация тяжелая: база данных 1С не зашифрована, хранится в известном формате,  закрыть доступ пользователей к ней нельзя, т.к. они с ней работают. Можно попытаться наложить на файлы базы атрибут hidden, но сами понимаете это защита только от дурака. Если у вас 1С работает под Windows NT (Windows 2000, Windows XP) можно закрыть от модификации пользователями конфигурацию и файл паролей, но данные не закрыть. Можно ввести драконовские правила работы и изъять дисководы у пользователей. Однако пользователи могут отправить похищенную базу по почте, проанализировать ее на месте без выноса из фирмы или просто прийти с Notebook или своим дисководом.

Вывод

Надежно защитить базу даже от неопытных пользователей в таком варианте фактически невозможно.

 

Взлом и защита 1С для Терминального Сервера

Microsoft Terminal Server пользуется заслуженной репутацией хорошего решения, если с 1С работают 5-10 пользователей и у многих плохие компьютеры. В случае использования терминала пользователь работает с программой не на своей машине, а на терминальном сервере. Управляет пользователь программой через специальное окно терминала. Терминал удобен тем, что позволяет работать 1С на слабых и старых машинах. Другой аспект терминала - это возможность повысить безопасность 1С. Повышение безопасности не происходит автоматически с установкой терминала, требуется настройка, причем серьезная. Смысл настройки состоит в том, что бы спрятать на терминале от пользователя средства копирования файлов и дать ему работать только с 1С. Если терминал настроен правильно, то после регистрации пользователь сразу оказывается в 1С, именно такой вариант мы и рассмотрим.

Взлом

Уверенность многих менеджеров в надежности защиты MS Terminal Server только облегчает задачу. Взлом базы под терминалом также обычно состоит в копировании базы и последующем ее анализе. Если анализ в целом делается также, то копирование базы требует некого трюкачества от пользователя. Первое что проверяет взломщик, это то, что администратор схалтурил в настройке терминала. Запуск 1С при старте терминала можно настроить на клиенте и на сервере. На клиенте проще настроить и большинство администраторов идут таким путем. Для снятия автозапуска 1С с клиента требуется войти в Client Connection Manager, зайти в свойства соединения и убрать галочку "Start the following program". После этого взломщик входит в терминал, но попадает не в 1С, а на Desk Top и копирует базу.

Если администратор хорошо поработал над безопасностью, тогда может сработать один из следующих методов. Оказавшись в 1С пользователь нажимает Ctrl+O или Ctrl+S, появляется окно запроса файла. В имя файла вводят *.DBF, затем переходят в каталог базы 1С, выделяют ее, удерживая клавишу Shift, и копируют в Clipboard нажав Ctrl+Ins. Затем листают в окне каталоги наверх пока не найдут Network Neighborhood (Сетевое окружение). Обычно открывают по сети свою машину и копирую базу на ее сетевую папку нажав Shift-Ins. Сетевая папка может быть создана и на дисководе через закладку Sharing в свойствах папки дискеты.

Кроме данного способа пользователь может, используя полудокументированные возможности 1С сделать следующее: запустить из 1С удаленно файл-менеджер Far, запустить специальную конфигурацию или отчет 1С., которые тайно копируют базу, заставить саму 1С скопировать базу, через команды вручную.

Прослушивание сети. Многие питают иллюзию относительно того, что информацию, которую передает терминал по сети не прослушать. Вытащить из терминального протокола какой пароль в 1С набирает пользователь элементарная задача, если используется устаревший Windows NT Server Terminal Edition (STE).

Защита

Некоторые мероприятия по защите мы уже затронули рассматривая нападение. Первое что нужно сделать это настроить "Start the following program at logon" на сервере. Правда тут есть тонкий момент, при настройке "в лоб", пользователи потеряют доступ к ресурсам домена. Стоит подумать и проконсультироваться перед установкой терминала, тем более, что неправильно поставленные лицензии терминала фактически "прогорают".

Следующий момент, мы можем закрыть от пользователя ненужные приложения через средства NTFS. Однако, как видно выше, пользователь может использовать средства копирования фактически ни чего не запуская на сервере. Интересный момент, отключить в 1С панель  "Файл" с ее Ctrl+O и Ctrl+S нельзя. Единственно надежный вариант это закрыть файловый порт на терминальном сервере. Но в данном случае перестанет работать печать по сети, резервное копирование на аварийный сервер и т.д. Для небольшой организации это серьезная проблема, т.к. сервер дорогая штука и хочется его использовать многофункционально, а для средней организации отсутствие сетевой печати это просто не серьезно.  Я уже не говорю о том, что придется наложить запрет на использование Microsoft Office совместно с 1С. В противном случае, даже с закрытым портом, базу распотрошат на сервере без копирования. В общем, чем больше мы отключим сервисов, тем безопаснее сервер, можно его и вообще выключить, он будет совсем безопасным, только кому он такой нужен? Для нормальной работы придется открыть целый ряд портов: 25, 53, 80, 110, 119 и др. Все это потенциальные дыры в защите сервера, да и по самому порту терминала (3389) можно провести атаку класса DoS.

Прослушивание сети. Следует отметить, что наиболее распространенный терминальный сервер STE легко прослушать, многоуровневое шифрование терминала реализовано в Windows 2000. Решение с высокой безопасность обычно собирают на базе Citrix MetaFrame, т.к. данный продукт имеет целый набор серьезных средств защиты (Citrix Secure Gateway, SSL 128bit, SecureICA, Socks 4/5, Ticketing и др.) Однако даже для 10 рабочих мест эта система вам обойдется примерно в $5000. Прибавьте сюда еще апгрейд сервера.  Терминальный сервер Microsoft идет бесплатно в Windows 2000, но за клиентские места все равно надо платить по $400 за каждый пакет из 5 лицензий.

Внимание! В РФ использование криптографии требует лицензирования ФАПСИ. Использование криптографических средств без данной лицензии является преступлением.

Вывод

Терминальный сервер как минимум позволяет повысить трудоемкость взлома, повышение безопасности данного решение требует изъятия у пользователей целого ряда сервисных функций и возможностей. Другой аспект – чрезвычайно высокая стоимость решений с высоким уровнем безопастности на базе терминального решения: от $5000 до $10000.

 

Взлом и защита 1С для Microsoft SQL Server

Если Microsoft Terminal Server не является специализированным средством предназначенным для защит баз данных, то Microsoft SQL Server (MS SQL) содержит в себе самые мощные средства безопасности, какие только можно применить к 1С.

Однако стандартное 1С: Предприятие не использует средства разграничения доступа MS SQL и каждый пользователь работает с базой с полными правами (Database Owner, DBO). На первый взгляд это ужасает, но не все так плохо. Логин и пароль DBO простой пользователь не знает, он хранится в зашифрованном виде в файле 1CV7.DBA. Подобный подход 1С к организации безопасности на MS SQL кажется дилетантизмом только на первый взгляд. Многие конкуренты 1С производящие программы под MS SQL заявляют как свое конкуретное преимущество, то что авторизация пользователей в их приложении делается средствами самого MS SQL. Тонкость заключается в том, что для эффективной организации защиты средствами MS SQL требуется исключить доступ пользователей к таблицам базы, а разрешить только манипуляции через так называемые представления (view) и хранимые процедуры (stored procedure). Хотя частенько заявляется, что это все есть, а реально этого нет, программисты не успевают делать новые функции, куда им до защиты данных. Если в вашей организации используется подобная программа под MS SQL, вы можете убедится в отсутвии ее безопасности просто подключившись к базе через Microsoft Query используя своего пользователя и его пароль. Вероятность 90%, что вы сможете просматривать таблицы. Как видим подход 1С надежнее, причем MS SQL 2000 включает в себя средства для поддержки аналогичного вида безопасности (Application Security Role).

Проблема защиты 1С для MS SQL, точнее общая проблема защит класса Application Security Role, заключается в том, что даже теоретически не обеспечить надежную шифрацию логина и пароля DBO. Любая криптостойкая защита базируется на том, что программа не содержит в себе всей информации необходимой для расшифровки данных. Обычно отсутвующие данные - это пароль пользователя.

Если взломщик знает пароль хоть одного пользователя 1С, при любой криптозащите он сможет расшифровать пароль DBO, т.к. владеет 100% исходной информации для расшифровки.

Взлом

Взлом 1С для SQL обычно состоит из 2х стадий. Первая стадия это дешифрация пароля DBO. Вторая стадия это анализ данных через прямое подключение к MS SQL с помощью Microsoft Query и Excel. Вторая стадия может состоять и в копировании базы, но это делают реже.

Дешифрация пароля DBO. Надо сказать, что специалисты 1С представляя безнадежность защиты пароля DBO применили совсем слабый метод криптования (XOR-шифрация). Поэтому дешифрация пароля производится очень легко. Для этого обычно пытаются скопировать файл 1CV7.DBA и затем его дешифровывают программами типа unsql.exe. Другой метод не требует копирования файла, а строится на запуске троянской конфигурации или внешнего отчета 1С, которые на макроязыке 1С содержат алгоритм дешифрации пароля.

Хочется надеяться, что специалисты 1С хотя бы зашифруют пароль DBO через пароль пользователя или его HASH-код. Это хотя бы повысит стоимость взлома до $100-$200. За такие деньги обычно нанимают программиста, который за день в пошаговом режиме трассирует 1С. Если программист имеет в своем распоряжении файл паролей users.usr и пароль хоть одного пользователя, он сможет отследить работу механизма аутентификации 1С в штатном режиме и просто дойти до того места, где 1С сама расшифрует пароль DBO. Хакер после такой трассировки может написать автоматическую программу взлома пароля DBO для 1С.  

Следует отметить, что использование криптографических средств в 1С потребует лицензирования ФАПСИ. 

После получения пароля DBO взломщик обычно приступает к анализу данных в базе используя Microsoft Query и Excel (см. статью о доступе через Excel к данным 1С).

Скопировать базу MS SQL не слишком простое занятие, т.к. это не сделать путем копирования файлов. Требуется специальная программа, например Data Migration Wizard, с помощью которой можно скопировать базу 1С из SQL в виде DBF-файлов себе на диск.

Также следует отметить, что возможен взлом 1С для SQL путем анализа временных файлов, в которых 1С содержит значительную часть БД.

Защита

Надо сказать, что в случае MS SQL администратор может развернуть средства аудита, которые позволят заметить несанкционированный доступ к базам из Microsoft Query и копировщиков данных.  Это можно сделать используя SQL Profiler. Однако требуется специальная и очень серьезная настройка профайлера. В противном случае можно не заметить взлом среди тысяч легальных команд, и кроме того, без настройки профайлер в несколько раз снижает скорость работы БД.

MS SQL позволяет задействовать шифрование при передаче данных через SSL. Однако помните, что данная деятельность требует лицензирования ФАПСИ..

Другой важный момент, это настройка входа в базу не под sa, а под отдельным пользователям. Следующее действие, это разделение системы на несколько отдельных баз 1С. Такими средствами можно минимизировать ущерб, но в целом дыры для взлома остаются.

Для решения проблем безопасности 1С для SQL требуется задействовать режим Row Level Security из MS SQL. Однако для этого требуется специальный продукт.

Вывод

1С: Предприятие для SQL является самой защищенной версией данного приложения. Однако, на текущий момент существуют методы взлома 1С для SQL, которые в состоянии реализовать опытные пользователи.

Для обеспечения безопасности базы для MS SQL требуется независимый аудит сервера и разворачивание серьезной защиты поверх 1С. В качестве примера такой защиты можно привести «Защита 1С: Предприятия для SQL»

 

Взлом и защита 1С для Microsoft SQL Server под Microsoft Terminal Server

Использование 1С под Microsoft SQL Server под Microsoft Terminal Server одновременно позволяет сочетать защиту данных систем. Описанные ранее методы взлома и защиты в целом верны для данного комплекса. Отметим только несколько отличительных моментов. Взлом и защита строятся вокруг расшифровки пароля DBO, на данном этапе ключевой момент защита 1CV.DBA от копирования средствами Microsoft Terminal Server. Как и в случае с DBF под Microsoft Terminal Server абсолютной защиты тут не построить. Далее защита строится на блокирования доступа к MS SQL. Один из основных методов тут закрытие порта MS SQL, если MS SQL и Microsoft Terminal Server стоят на одной машине. Вариант далеко не идеальный с точки зрения стоимости оборудования и потребительских качеств системы. Хотя абсолютной защиты и в данном случае нет, наиболее устойчивые к взлому варианты можно построить с помощью продуктов,  которые задействуют встроенные средства безопастности MS SQL.

 

Взлом без взлома

Как то ни удивительно, но в большинстве случаев пользователю вообще не требуется что-то взламывать для получения конфиденциальной информации.  Стандартные средства безопасности 1С позволяют разграничить доступ на уровне типа документа, но не подмножества документов. Например, можно дать или не дать право пользователю на доступ к справочнику клиентов, однако нельзя указать, что требуется доступ только к части справочника.

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

1)       Несколько баз данных 1С. Например, по одной базе для каждого подразделения. Такой подход быстро реализуется, но затем возникают проблемы с повторным вводом информации, переброской данных между базами и получением консолидированной отчетности. В случае использования баз под управлением MS SQL можно использовать службу DTS для передачи информации между конфигурациями, но это только отчасти решает проблему.

2)       Доработка конфигурации 1С с реализацией разграничения. Следует отметить, что это достаточно дорогой проект. Также следует отметить, что такое решение не гарантирует разграничение доступа на физическом уровне. В результате появляется много дыр. Самая большая проблема это то, что приходится вручную программировать доступ во всех документах, отчетах и журналах. Очень велика вероятность, что из-за ошибки программиста пользователь сможет подобрать такие настройки отчета или журнала, которые дадут ему доступ к нужной инфорации. Другая проблема, это возможность анализа временных файлов 1С и прослушивания сети для взлома.

3)       Формирование отчетов в Excel на базе системы OLAP из MS SQL. Смысл заключается в том, что отчеты можно получать не в 1С,  а в Microsoft Excel через сервис OLAP, который входит в MS SQL. Данный сервис позволяет сконфигурировать безопастность для пользователей. Например, можно указать статистику по каким клиентам может просматривать пользователь, а по каким нет. Важное замечание, большинство настольных OLAP-решений с маркой «1С: Совместимо» не используют средства OLAP из MS SQL и не безопасны с точки зрения доступа к данным.

4)       Использование безопасности на уровне записей базы данных (Row Level Security). В данном случае пользователю 1С для SQL закрывается доступ к части объектов на уровне сервера. Такое решение быстро и дешево внедряется, не требуется изменения конфигурации 1С. Однако для включения Row Level Security с 1С требуется установка специальной программы, например «Защита 1С: Предприятия для SQL». В основе Row Level Security лежит использование Restricted View.

 

 

Общие выводы

Все версии 1С на основе DBF-файлов достаточно легко могут быть взломаны. Организовать эффективное противодействие этому чрезвычайно сложно.  Можно организовать некоторое противодействие взлому с помощью MS Terminal Server и Citrix MetaFrame. Однако данное решение будет стоит довольно дорого и потребует изъятия у пользователей целого ряда возможностей.

1С: Предприятие для SQL может обеспечить надежную защиту данных, но только в случае если будут закрыты пробелы в его безопасности. Для решения данной проблемы можно использовать продукт «Защита 1С: Предприятия для SQL».

1С под терминалом вскрывают через "Ctrl+O"...
Противодействие в статье 

Пароль 
1С для SQL легко узнать... 
Противодействие в статье 

Rambler's Top100Рейтинги сайта: 1C:TOP-100

SpyLOG

TopList Rambler's Top100