Безпека 1С-систем. Як зміцнити захист вашого бізнесу

29 лютого 2024 1 хвилина Автор: D2-R2

У статті розглядаються різні аспекти системи 1С, включаючи її архітектуру, ключові системи, можливі негативні наслідки атак, такі як втрата фінансових коштів та витік персональних даних.

Вступ

Виходячи з існуючого досвіду, контролери домену є ключовими системами для типової організації, а критерієм ідентифікації потенційної комп’ютерної атаки з негативними наслідками для організації є отримання несанкціонованого доступу до облікового запису адміністратора домену.

Тим не менш, для підвищення якості тестування на проникнення має сенс розглянути інші ключові системи та пов’язані з ними підходи до побудови сценаріїв. Хорошим прикладом ключової системи, відмінної від контролерів домену, є 1С:Підприємство.

Щодо зазначеної ключової системи можна виділити такі негативні для Організації наслідки комп’ютерних атак:

  • втрата (розкрадання) коштів

  • порушення конфіденційності (відплив) персональних даних

Критеріями підтвердження можливості реалізації комп’ютерних атак, що призводять до негативних для Організації наслідків у цьому випадку можуть бути:

  • отримання адміністративного доступу до сервера, що забезпечує функціонування системи 1С:Підприємство;

  • отримання доступу до чинного адміністративного облікового запису до системи 1С:Підприємство.

Далі буде розглянуто низку сценаріїв комп’ютерних атак щодо 1С:Підприємство, а також наведено приклади підтвердження можливості реалізації зазначених атак на практиці.

Коротка інформація про 1C:Підприємство

1C:Підприємство призначене для автоматизації, управління та обліку в Організації різних видів діяльності та типів фінансування. 1С:Підприємство складається з технологічної платформи (ядра) та розроблених на її основі прикладних рішень (конфігурацій), наприклад:

  • 1С:Бухгалтерія

  • 1С:Документообіг

  • 1С:Зарплата та управління персоналом

  • 1C:ERP Управління підприємством

Усі прикладні рішення 1С мають однотипний інтерфейс та підпорядковуються загальним принципам роботи. Більше того, рішення можуть працювати спільно, а також здійснювати обмін даними.

Також технологічна платформа містить спеціальне середовище для створення та доопрацювання прикладних рішень. Ця частина платформи називається конфігуратором. Конфігуратор використовується програмістами для налаштування та оновлення програм.

За 30 років з моменту створення платформи 1С було випущено багато її версій. На даний момент остання версія платформи починається з ідентифікатора 8.3, тому вважається, що скрізь використовується саме вона.

На платформі 1С:Підприємство 8.3 можуть одночасно працювати тисячі користувачів. Для забезпечення масштабованості, балансування навантаження та відмовостійкості використовується кластерна архітектура.

Ілюстрація архітектури 1С

У першому наближенні зазначимо, що з використанням різних клієнтів можна підключитися до кластера серверів, що у свою чергу забезпечує взаємодію з різними СУБД. Таким чином, саме кластер серверів 1С є ключовою системою при побудові сценаріїв атак щодо системи 1С:Підприємство.

Сценарії комп’ютерних атак на 1С

Пошук кластера 1C

Знайти кластери серверів 1С:Підприємство можливо в результаті пошуку за такими портами:

  • 1540/tcp (rds) – порт робочого сервера

  • 1541/tcp (rds2) – порт кластера 1C

  • 1545

  • 80/tcp (http) – порт для підключення через веб-сервіс (може бути закритий, якщо веб-клієнти 1С не використовуються)

Загальна команда для пошуку кластерів серверів 1С:

nmap -p1540,1541,1545 'subnet/mask'

Також слід не забувати звертати увагу на імена DNS, що містять в назві “1С”. Якщо ж мова йде про домен, то можна пошукати відомості про 1С у коментарях облікових записів (дивись Сypher запити до BloodHoud нижче).

MATCH (c:Computer) WHERE ANY (x IN c.description WHERE toUpper(x) CONTAINS '1С') RETURN c

MATCH (c) WHERE toUpper(c.name) CONTAINS '1C' RETURN c.name

Отримання первинного доступу

Експлуатація відсутності пароля

Одним з основних недоліків, який часто зустрічається, є те, що за замовчуванням відсутній пароль для доступу до консолі управління кластером серверів 1С. Розглянемо кілька практичних способів використання цього недоліку. Припустимо, що кластер серверів виявлено. Досить просто спробувати підключитися до виявленого кластера і подивитися, чи немає пароля. Для підключення вам знадобиться утиліта “Адміністрування сервера 1С”: вам потрібна відповідна версія “Підприємства” для кластера 1С.

Якщо відкритий порт 1545(зустрічається рідко), то визначити версію клієнта 1С можна за допомогою утиліти rasoff, в іншому випадку завжди можна спробувати підключитися довільним клієнтом 1С і отримати помилку з інформацією про версію, що використовується.

Приклад виявлення версії клієнта з помилки з’єднання

Далі необхідно знайти та встановити клієнт відповідної версії. По-хорошому для цього необхідно мати платний доступ до порталу 1С, але також можна подивитися тут .

Крім того, доцільно подивитися файли, що розповсюджуються за допомогою групових політик, наприклад PingCastle. У цьому випадку можна знайти загальнодоступні мережеві папки, звідки одразу взяти необхідні клієнти, у тому числі й для інших кластерів 1С, якщо їх в Організації декілька.

Приклад виявлення установника клієнта 1С із групових політик

Допустимо установник клієнта з необхідною версією було отримано. Далі при встановленні треба додатково додати модуль адміністрування (див. нижче).

Перед першим запуском консолі її необхідно зареєструвати з використанням скрипта «Реєстрація утиліти адміністрування». По завершенню можна запускати зазначену утиліту:

Далі в інтерфейсі утиліти слід зазначити кластер серверів 1С. Для цього потрібні IP-адреса та порт, з’ясовані раніше в ході розвідки:

За відсутності пароля при підключенні до вказаного кластера серверів 1С буде отримана подібна картина:

 

За наявності вимог пароля буде відкрито наступне вікно:

Далі продовжимо розглядати випадок, коли пароль відсутній. Підключившись до кластера серверів 1С з використанням утиліти адміністрування можна:

  • дізнатися назви інформаційних баз, а також у ряді випадків при спробі підключення до них отримати список ідентифікаторів облікових записів (корисно при доборі паролів)

  • виявити тестові інформаційні бази в які можна зайти без пароля та залити “корисну” зовнішню обробку

  • створити нову інформаційну базу з конфігурацією, що емулює командний рядок і таким чином отримати можливість віддаленого виконання коду на кластері 1С з правами користувача від якого запущено відповідну службу

Найкращим варіантом постексплуатації є створення нової інформаційної бази, оскільки тоді немає перезапису раніше наявних даних. І тут загальний порядок дій наступний:

  1. Підготувати базу даних PostgresSQL на підконтрольному сервері, зокрема, можна використовувати свою віртуальну машину

  2. Створити на кластері 1С нову інформаційну базу із використанням встановленої бази даних PostgresSQL

  3. Завантажити конфігурацію з “корисним” навантаженням

Далі докладно розглянемо кожен із зазначених кроків.

Примітка: якщо все ж таки бажання створювати нову базу немає і хочеться скористатися наявною інформаційною базою, то важливо пам’ятати, що будь-яке завантаження нової конфігурації передбачає перезапис старих даних. Тому завантаження нової конфігурації в тестову застарілу непотрібну інформаційну базу краще попередньо узгоджувати з адміністратором. Крім того, слід зробити резервну копію бази, а також переконатися, що активні сесії користувача відсутні.

Цьому огляду передував опис архітектури платформи 1С. Створення інформаційної інфраструктури вимагає наявності бази даних під управлінням, а 1С може працювати з різними базами даних, включаючи MSSQL. Однак через безкоштовну модель розповсюдження зручніше використовувати PostgresSQL.

По-хорошому, будь-який дистрибутив PostgresSQL можна просто встановити, але навіть при такому простому процесі можуть з’явитися невеликі проблеми. Коли я встановив Windows-версію PostgresSQL, яку я отримав з офіційного сайту, я зіткнувся з помилками, пов’язаними з кодуванням. Можливо, в Linux все було б інакше, але в підсумку я вирішив встановити дистрибутив PostgresSQL, спеціально розроблений для роботи з 1С.

Перед установкою було відключено протокол IPv6

та включено службу “Вторинний вхід до системи”

Після успішного встановлення можна приступати до безпосереднього створення інформаційної бази:

У параметрах слід зазначити дані створеної СУБД:

Тепер у клієнті можна налаштувати підключення до створеної інформаційної бази:

В результаті створені налаштування підключення будуть збережені та додані до загального списку:

Для подальшої експлуатації залишається завантажити спеціальну інформаційну базу, яка містить корисне навантаження. Як приклад можна використовувати наступну конфігурацію за авторством компанії Крауд.

Таким чином, буде отримана можливість віддаленого виконання коду кластері 1С з правами користувача від якого запущена відповідна служба:

Існують різні варіанти. Перш за все, необхідно визначити, які права та дозволи має обліковий запис, що виконує команду. Насправді такі акаунти можуть мати права навіть на рівні адміністратора домену. Це можна перевірити в BloodHound.

Найчастіше на подібну удачу розраховувати не варто. Більш робочий варіант – подивитися наявність привілею SeImpersonatePrivilege, якого достатньо для локального підвищення (дивись PrintSpoofer ). Далі, локально підвищивши права, можна пошукати сесії адміністративних облікових записів та спробувати їх імпероанізувати.

Також, іноді обліковий запис з-під якого запущена служба 1С, може мати привілей на необмежене делегування.

Як альтернативний варіант постексплуатації можна завантажити нову зовнішню обробку, наприклад за авторством Levatein.

Подібна обробка стане в нагоді, якщо кластер запущений в операційній системі на базі Linux. Окремий інтерес при постекплуатації кластера 1С представляє вміст файлу 1СV8Clst.lst, як правило розташованого на шляху C:\Program Files\1cv8\srvinfo\reg_xxxx\:

У цьому файлі зберігаються ідентифікатори та шифровані паролі адміністративних облікових записів СУБД, які використовуються кластером 1С.

Важливою особливістю є те, що ключ шифрування та вектор ініціалізації є публічно відомими та постійними. Це дозволяє легко отримувати паролі у відкритому вигляді.

Для розшифрування паролів можна скористатися наступним посиланням:

Добуті облікові записи можна використовувати для подальшого просування та віддаленого виконання коду на серверах, що забезпечують функціонування СУБД:

Рекомендація: створити адміністратора кластера 1С та обмежити доступ до консолі адміністрування кластера 1С з використанням пароля.

Підбір облікових записів

Організації можуть отримати доступ до групи серверів 1С за допомогою WEB-сервера. Доступ до призначеного WEB-сервера також можна отримати з Інтернету. Це корисно, якщо вам потрібно надати віддалений доступ великій кількості співробітників або якщо вам потрібно використовувати мобільні клієнти. Доступ до такого WEB-сервера може бути тільки зсередини. У будь-якому випадку, при наявності веб-сервера 1С, існуючі облікові записи можуть бути атаковані за допомогою атак грубої сили.

Виявити WEB-сервера 1C можна за допомогою утиліти gowitness .

Для успішної автентифікації необхідно знати:

  • назва інформаційної бази

  • ідентифікатор облікового запису

  • пароль

Спершу, якщо найменування інформаційної бази невідоме, його необхідно підібрати, наприклад з використанням словників 1C-Finder від Kraud.

Крім того, якщо користувач активував параметр “Показувати у списку вибору”, його ідентифікатор буде відображатися при спробі підключення до виявленої бази даних. Таким чином, можна отримати частковий список імен облікових записів, який не завжди є повним:

Вивантажити весь список доступних ідентифікаторів можна за наступним URL:

http://<server-IP-or-DNS>:<port>/<db_name>/en_US/e1cib/users

Облікові дані передаються на WEB-сервер 1С POST-запитом на URL наступного виду:

http://<server-IP-or-DNS>:<port>/<db_name>/en_US/e1cib/login?version=8.3.XX.XXXX&cred=base64(идентификатор)08base64(пароль)

08- виступає як роздільник між ідентифікатором і паролем

Таким чином, традиційний фазер може використовувати метод POST для збору дійсних облікових записів із заданої URL-адреси; для автоматизації відбору можна використовувати такі інструменти, як Burp Suite, patator і ffuf. В 1С паролі не залежать від регістру.

Іншими словами, “пароль” і “пароль” еквівалентні. Крім того, в 1С часто недостатньо сувора політика паролів. У багатьох випадках адміністратори не вмикають перевірку складності паролів користувачів, не встановлюють кількість невдач аутентифікації або тривалість блокування у разі перевищення максимальної кількості невдач аутентифікації.

Приклад парольної політики з вимкненою перевіркою складності

До того ж, знаючи певний типовий для Організації пароль, можна навпаки спробувати підбирати до нього ідентифікатор, наприклад, взявши за основу перелік поштових адрес, отриманих за допомогою даного сайту .

Іноді при успішному підборі пароля з’ясовується, що він застарів і потрібно ввести новий пароль:

Також слід не забувати, що пароль до деяких облікових записів може бути зовсім порожнім. Рекомендація: використовувати строгу парольну політику.

Аналіз резервних копій

Часто достатньо перевірити захоплення домену, що містить вказаний кластер, щоб побачити, чи захоплений кластер 1С, але оскільки це тривіально, розглянемо випадок, коли кластер 1С в домені відсутній. Припустимо, що доступ до резервної копії інформаційної бази здійснюється якимось чином.

Припустимо, наприклад, у вас є права адміністратора домену і така копія знайдена у відкритому вигляді в системі резервного копіювання, яка є частиною зазначеного домену.

Бази 1С можуть зберігатися у наступних двох форматах: 1cdі dt.

У першому випадку за допомогою утиліти Tool_1CD можна одразу відкрити файл 1Cv8.1CD. Далі слід зліва вибрати таблицю v8users і виділити комірку зі стовпця DATA в рядку облікового запису, що цікавить. У вікні даних будуть закодовані за допомогою base64 SHA-1 хеші від регістр залежних та незалежних версій паролів.

Після декодування по SHA-1 хеш можна провести офлайн підбір паролів. Більше того для SHA-1 також існують райдужні таблиці .

Нижче для наочності наведено приклад підбору ряду паролів за допомогою сайту Crackstation . Для офлайн перебору за словником HashcatSHA-1 відповідає -m 100.

Як варіант, можна завантажити навчальну версію 1С (необхідна реєстрація за номером телефону на офіційному сайті) і спробувати імпортувати завантажену базу даних локально.остання версія 1С може вимагати пароль для входу в базу даних. Я не можу сказати точно, оскільки не пробував, але в цьому випадку, здається, якщо переписати хеш пароля адміністратора, можна отримати доступ до інформації, що зберігається в 1С, в тому числі до хешів інших облікових записів.

Якщо дані зберігаються у форматі dt, то для їх конвертації у формат 1cd можна використовувати утиліту . Після конвертації завдання зводиться до розглянутого раніше.

Примітка: Версія pfDTTools, розташована у відкритому доступі, не дозволяє виконати конвертацію на поточний момент. Автор утиліти збирався найближчим часом опублікувати закритий реліз, що містить вказану можливість.

РЕКОМЕНДАЦІЯ: Провести інвентаризацію підконтрольних інформаційних ресурсів щодо зберігання резервних копій 1С у відкритому форматі в місцях, доступних для звичайних користувачів (мережеві папки, сховища, файлові сервери). Наприклад, використовувати криптографічні контейнери та зберігати резервні копії 1С у захищеному форматі, ізольованому від основної мережі.

Замість ув’язнення

Mindmap за можливими атаками на 1С
Інші статті по темі
Знайшли помилку?
Якщо ви знайшли помилку, зробіть скріншот і надішліть його боту.