• XSS.stack #1 – первый литературный журнал от юзеров форума

Терминальный сервер + 1С

Карина 5:17

floppy-диск
Пользователь
Регистрация
26.06.2006
Сообщения
9
Реакции
0
Задались вопросом максимально обезопасить данную связку.
Типа пользователи заходят в терминал через RDC, дальше автоматом запускается 1С с конкретной базой. Внешние отчеты не дает открывать.
Нет ни десктопа нихрена кроме окна 1С, при закрыти 1С терминал логаутится и закрывается. В диалоговом окне открыть\сохранить нет доступа к дискам, контекстное меню отключено.
Связки Win+X отключены.
Win 2003+ все патчи, и фаеры грамотно настроены.

Вот примерна такой сервак.
Вопрос кто какие способы предложит по проникновению внутрь, ну и соответственно методы защиты.

Сама вот как делала:
1) В 1Ске открываем любую печатную форму, затем диалоговое окно печать, и смотрим на доступные принтеры. Если принтеры есть, лезем в их свойства. В свойствах ищем что нить типа "О программе", "О Драйвере" итп. Обычно на этих вкладках есть либо ссылы на сайт производителя либо кнопочки обновить програмное обеспечение. Жмякаем по ним и запускается браузер по умолчанию.
Через браузер естественно лазим па дискам. Далее по ситуации, в своем случае я в програм файлз обнаружила установленный The Bat. В браузере вбила чота типа mailto:blahblahblah@blah.blah И успешно запустила Bat, а в нем планировщик заданий. Там cmd и фсё
:holloween:
Не фулл акцес но базу спереть можна.

2) Еще так мона. В 1Ске открываем любую печатную форму, затем диалоговое окно печать, кликаем добавить принтер. В появившемся окошке есть ссыла "справка" - жмем туда. Открывается chm'ная справка :holloween:
Потом так Параметры -> Параметры Интернета ->
Пункт Временные файлы интернета, жмем на параметры , потом на просмотр обьектов.
А дальше появляется рабочий стол :)

+ Есть еще пара способов, но хотела бы услышать вашы варианты по взлому терминала. И желательно без всяких там 0дэйсплойтз, ручками ручками.

Спасибо
;)
 
+ Есть еще пара способов, но хотела бы услышать вашы варианты по взлому терминала. И желательно без всяких там 0дэйсплойтз, ручками ручками.
Может быть я не прав,но по-моему,таким мало кто интересуется на этом форуме.
 
Не ну почему.. для общего т.с. развития можно ;)
я вот даже статейку на компе откопал.. свежая вроде.
1C: Получаем доступ к бд с максимальными привилегиями
---
ЭТА ИСТОРИЯ НАЧАЛАСЬ ОЧЕНЬ ПРОСТО. В ОДИН ПРЕКРАСНЫЙ ДЕНЬ ШЕФ ВЫЗВАЛ МЕНЯ К СЕБЕ И ПОСТАВИЛ ЗАДАЧУ: ПРОВЕСТИ АУДИТ БЕЗОПАСНОСТИ 1С И ПОПЫТАТЬСЯ ПОЛУЧИТЬ ДОСТУП К БАЗЕ ДАННЫХ, ЖЕЛАТЕЛЬНО С МАКСИМАЛЬНЫМИ ПРИВИЛЕГИЯМИ

Мой опыт 1С-ника показывает, что злоумышленники в основном пытаются ломать файл users.usr. Он находится по адресу: каталог_с_базой\usrdef \users.usr и хранит информацию о пользователях и их паролях. Пароли хранятся в виде хэшей: MD5(pass), поэтому просмотреть пароль просто так не выйдет. Существуют брутфорсеры MD5 (именно для 1С), а также есть возможность скинуть пароли всех пользователей. Однако сброс всех паролей мгновенно вызовет подозрение админов или бухгалтеров. Я протестировал такой брутфорсер и пришел к выводу, что числовые пароли взламываются очень быстро, но достаточно подключить символы и ограничить длину 8-10 символами — и уже становится невесело, так как дело попахивает долгими часами перебора. Ты скажешь: «Да бухгалтеры для пароля всегда свой год рождения пишут!» В чем-то правильно, но… Последние тенденции в корпорациях и даже мелком бизнесе показывают стремление защитить информацию (данные о клиентах, поставщиках, оборотах предприятия) от кражи и от глаз весьма заинтересованных конкурентов. В борьбе за сохранность данных создаются службы безопасности, вводятся административные меры наказания, минимальные требования к длине пароля и т.п. К примеру, в фирме, где работал я, мы сами задавали пароли и ставили вот такие условия:

Длина = восемь символов

Цифры + буквы + одна заглавная в английской раскладке.

[для промежуточного вывода] могу сказать, что атака на users.usr имеет несколько недостатков:

1 ПОДБОР ПАРОЛЯ ПЕРЕБОРОМ НЕ ВСЕГДА ОСУЩЕСТВИМ В КОРОТКИЕ СРОКИ, ОСОБЕННО ЕСЛИ ОСТАЛОСЬ РАБОТАТЬ ДВЕ НЕДЕЛИ :).

2 ВРЯД ЛИ ПОЛУЧИТСЯ УДАЛИТЬ ФАЙЛ. ЛЮБОЙ НОРМАЛЬНЫЙ АДМИН ПОСТАВИТ НА ЭТОТ ФАЙЛ АТРИБУТ READONLY (ТОЛЬКО ДЛЯ ЧТЕНИЯ). И ЕСТЕСТВЕННО, ПОДМЕНИТЬ ХЭШ-СУММУ ТОЖЕ НЕ ПОЛУЧИТСЯ.

Ну что ж, придется поступить хитрым образом. Учитывая свой опыт реверсера, я решил поковыряться в 1CV7s.exe (25-й релиз). Как выяснилось, не зря. Буква S в конце имени файла указывает на SQL-версию, локальную и сетевую. Мой выбор пал именно на нее, одну из самых распространенных, неслучайно: она превосходно работает на Терминале, поддерживает как DBF, так и SQL-базы, освобождает от головной боли насчет электронных ключей (кто видел голубые экраны при установке эмуляторов хаспов, тот поймет).

[перейдем к практике] Представим ситуацию, когда есть база данных по сотрудникам, помимо личных данных в ней хранится информация по кредитным картам. Конечно, мы не допущены к справочнику доступа, и, соответственно, нет доступа к документам на перевод/начисление денежных средств. Пора получить его. Первое, что приходит в голову, — убрать проверку пароля и входить под любым пользователем.

Запускаем отладчик (я использовал OllyDbg), в списке выбираем нужную базу и пытаемся авторизоваться как «Админ» (рис. 1). Получаем сообщение об ошибке (рис. 2.).

Пойдем по классической схеме, ставим брэйкпоинт на MessageBoxA (с учетом регистра): BP MessageBoxA.

Теперь на кнопку ОК, и мы вывалились в:

77D2BC33 > 833D E>CMP [DWORD DS:77D5F2E4],0

77D2BC3A 0F85 F>JNZ USER32.77D3C23E

Это системная библиотека USER32.dll, а защита находится в коде самой программы (долго прыгать по библиотекам сейчас не время, так как лишние мучения в 1С’ке, многослойном пироге с кучей используемых библиотек, ни к чему). Мои исследования привели к библиотеке: UserDef.dll. Имя Dll совпадает с названием каталога, в котором хранятся пароли пользователей. Вполне логично, что разработчики вынесли авторизацию пользователей именно в нее. Итак, <Ctrl>+<F9>, закроем сообщение об ошибке ОК. Теперь ставим бряк на секцию кода dll, чтобы не прыгать по библиотекам и не терять свое время. Теперь <F9> — и мы находимся тут:

260296AB E8 C4B>CALL <JMP.&MFC42.#1199> ; Вывод сообщения об ошибке

260296B0 68 2CF>PUSH USERDEF.2604F62C

260296B5 8BCF MOV ECX,EDI

Поднимемся чуть выше:

26029691 50 PUSH EAX ; хэш от настоящего пароля

26029692 51 PUSH ECX ; хэш от пароля, введенного нами

26029693 FF15 2>CALL [DWORD DS:<&MSVCRT._mbscmp>] ; msvcrt._mbscmp ; эта процедура сравнивает две строки и возвращает в регистре EAX ноль, если строки равны, и -1, если строки различаются

26029699 83C4 0>ADD ESP,8

2602969C 85C0 TEST EAX,EAX

2602969E 5D POP EBP

2602969F 5B POP EBX

260296A0 74 23 JE SHORT USERDEF.260296C5 ; если строки равны, продолжаем работу

Итак, мы можем внести изменения в работу этого участка и заставить 1С думать, что ты вводишь пароль. Один из рецептов — передать в процедуру сравнения указатели на одну и ту же строку:

26029691 50 PUSH EAX ; хэш от настоящего пароля

26029692 50 PUSH EAX ; хэш от настоящего пароля

26029693 FF15 2>CALL [DWORD DS:<&MSVCRT._mbscmp>]

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

[использование личных каталогов] — достаточно распространенное явление. Значит, мы должны убрать текущую проверку. Действуем по указанной выше схеме (бряк на MessageBoxA и несколько раз на <Ctrl>+<F9>, пока не окажешься в самом 1Cv7S.exe).

00409075 . E8 6C>CALL <JMP.&MFC42.#800>

0040907A . 8A45 >MOV AL,[BYTE SS:EBP-61]

0040907D . 84C0 TEST AL,AL

0040907F . 74 13 JE SHORT 1CV7s.00409094 ; если каталог не занят, прыгаем

00409081 . 6A FF PUSH -1

00409083 . 6A 10 PUSH 10

00409085 . 68 6C>PUSH 706C

0040908A . E8 2D>CALL <JMP.&MFC42.#1199> вывод сообщения об ошибке

0040908F . E9 84>JMP 1CV7s.0040AF18

Естественно, поменяв переход, мы пропускаем проверку и оказываемся в базе.

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

[в этой статье] я рассмотрел версию 1С 7.7. Почему не восьмерку? Во-первых, 7.7 до сих пор очень распространена, 95% моих знакомых пользуются именно ей. Во-вторых, восьмерка не менее дырявая, чем 7.7. К такому выводу я пришел посмотрев на подход 1С к безопасности продуктов. Чуть позже проверим еще раз. Администраторам же советую использовать терминал с отключенным маппингом дисков или, при работе в обычном сетевом режиме, запускать 1С с правами другого пользователя (тогда не получится пропатчить чужой процесс), а на исполняемые файлы 1С однозначно ставить атрибут ReadOnly. Только не на всю папку, иначе она примется падать при запуске.
---
 
Может быть я не прав,но по-моему,таким мало кто интересуется на этом форуме.
Это как раз очень интересно и актуально... 1С сейчас стоит всюду.... Я например завтра попробую поискать какие-нибудь способы для решения проблемы топикстартера...
 
Это как раз очень интересно и актуально... 1С сейчас стоит всюду.... Я например завтра попробую поискать какие-нибудь способы для решения проблемы топикстартера...

Значит был не прав.Сейчас глядишь тема разовьётся и эксплойты писать начнут под 1C :)
 
что-то не очень активно

Чтобы хоть как то поддержать тему ,приведу ссылки на некоторую полезную информацию.Может быть,ещё не все читали.
lДоступ к данным 1С: Предприятия из Microsoft Excel
http://www.docflow.ru/analytic_full.asp?param=30674


О безопасности 1С администраторам и опытным пользователям
http://www.docflow.ru/analytic_full.asp?param=30673

Взлом и защита 1С:Предприятия. Анализ проблемы инсайдерского взлома для менеджеров
http://www.docflow.ru/analytic_full.asp?param=30672
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх