Доступ в корп сеть через 1C без exploit's.

animi

Green Team
06.12.2016
52
46
BIT
0
Введение.

Бывают ситуации когда не можешь продвинуться в сети и закрепится. Есть только вход через Wi-Fi. А дальше не получается. Машины есть, но сервисов на них не крутится, не считая шар. Можно попробовать MITM, брут, социальную инженерию. Но это все привлечет лишнее внимание чего не хотелось бы.
Читая новости можно натолкнуться на интересное решение:
  • 1C.Drop.1 использует 1С для выполнения вредоносного кода.
  • Украину заразили вирусом Petya через бухгалтерскую программу.
Отличная задумка 1С как троянский конь. Она нас пустить внутрь и позволит закрепиться. Не только же в ней можно вести учет))).
Хочу описать пример как можно проникнуть в сети небольшой фирмы и закрепиться там. Тут не будет примеров с metasploit, empire. Эти все инструменты хороши, но только в том случае если у пользователя стоит не обновленная windows без антивируса. Что в наше время большая редкость. Даже бесплатные антивирусы спокойно блокирует meterpreter, payloads, пытается блокировать MITM.

1.png


Да, возможно социальная инженерия, есть вариант, что это сработает. Пользователя очень сильно будет удивляет если его браузер бесконечно будет просить установить flash либо что-то в этом духе.
Во многих организация есть практика не держать своего админа, а быть на обслуживании у организации которая этим занимается. Так что сканировать все подряд, запускать exploit's, проводить MITM, брутить сервисы плохая идея. Велик шанс, что это заметят и примут меры даже админ с малым опытом поставит firewall либо антивирус, поменяет пароли и будет наблюдать за происходящем.

Вся информация предоставлена исключительно в ознакомительных целях. Ни ресурс codeby, ни автор не несут ответственности за любой возможный вред, причиненный материалами данной статьи.
Возьмем пример сети небольшой организации.
2.png


Работают от 10 до 20 человек. Админ может быть приходящий либо на сопровождении у организации. И тот кто обслуживает бухгалтерию (торговлю, зарплату) организации. Значительная часть РФ сидит на 1С: Бухгалтерии (имею в виду большой %, а не все 100%) и страны ближнего зарубежья. Так вот будем сегодня это использовать в своих целях.
У любой организации есть сервер (слабенький или ПК главного бухгалтера) на котором крутится БД.
В большинстве случаев БД поднимают 1с'ники дают общий доступ на директорию всем пользователям (чтоб не звонили по пустякам) и на этом дело заканчивается. Дальше задача админа настроить права и доступ пользователям. Все прекрасно знают то что работает, лучше не трогать, по этому как настроили так и оставили и нам это на руку.
Оказались мы в некоторой сетки где есть общая сетевая директория с файлами:
27.png

Наша цель это единственный файл 1Cv8.1CD. Есть конечно и директория с логами, но нам мало интересно какой документ проводил пользователь. В этом файле хранится вся финансово-хозяйственная деятельность организации.
Поставить платформу 1С на kali можно, но придется возиться с ключом, проще поставить ее на windows и там все сделать, так мы и поступим. Начинаем гуглить где скачать платформу 1С, встает интересный вопрос какую из платформ брать 8.0,8.1,8.2,8.3,8.4. На текущий момент 90% всех конфигураций 1С работают на платформе 8.3, еще косвенный признак это директория "1Cv8JobScheduler" появилась в 8.3. Нам понадобится еще одна утилита Tool_1CD с ее помощь мы увидим hex пароля пользователя 1С.
Теперь у нас есть база, платформа, Tool_1CD. Давайте откроем "нашу" базу.
5.png

После 5 мин перебора паролей пользователей в ручную понятно, что это может затянуться на долго. Можно брутить пароли, но это долго и не факт, что в списке он окажется. Пойдем чуть другим путем и посмотрим его через утилиту Tool_1CD. Программа позволяет просматривать структуру базы выгружать конфигурации, но не менять значения в БД что печально.
6.png

Находим таблицу v8users, видим список пользователей нажимаем на колонку DATA с типом IMAGE, видим следующую структуру. Про нее можно прочитать в интернете, нас интересует часть строка в кавычках "QL0AFWMIX8NRZTKeof9cXsvbvu8=" наверное уже понятно что это sha1. Копируем в поисковик если есть совпадения радуемся. Иначе пробуем все остальные либо брутим. Нам нужен доступ в базу с полными правами обычно они есть у админа, программиста, бухгалтера. Конечно можно загуглить "как скинуть пароль в 1с" будет целая куча статей как это сделать. Но когда мы будем внедрять свои доработки для продвижения по сети не будем же их скидывать пользователей и пароли. Tool_1CD пишет версия БД 8.3.8.0 это отлично так как наша доработка будет работать с версии 8.3.6. Есть конечно и другой вариант, но про него сегодня не буду рассказывать.
Получили доступ в базу это отлично, но что же дальше? 1с это среда разработки бизнес приложений. Соответственно в ней можно кодить! С версией платформы 8.3.6 появился интересный механизм это расширения. Описывать его не буду, в сети куча инфы как на официальном сайте так и на сторонних, от того за чем оно до того как его использовать .
И еще одна замечательная вещь это клиент-сервер . Это значит что мы можем разделить выполнения кода на сервере и на клиенте, что нам тоже важно. В данном случае это не имеет значения ведь база файловая (а так можно и сервер под контроль взять).
Логин и пароль у нас есть заходим в базу пункт меню конфигурация->Открыть конфигурацию. В нашем случае это Управление торговлей 11, правой кнопкой по названию, выбираем пункт "Открыть модуль управляемого приложения"
7.png

В открытом модуле мы видим процедуры нас интересуют несколько из них это:
8.png

  • ПередНачаломРаботыСистемы
  • ПриНачалеРаботыСистемы
  • ПередЗавершениемРаботыСистемы
Из названия процедур становится понятно что какая делает. Типовую конфигурацию трогать не будем, сделаем свое расширение и подключим его.
9.png

Открывается окно расширений, добавляем новое расширение и ни чего не меняем. Чем проще тем меньше подозрений.
10.png

Должно получиться вот так.
11.png

Галки "Безопасный режим" и "Защита от опасных действий" срезу снимаем так как это не позволит нам запустить скрипты и обращаться к файловой системе клиентского ПК.
Расширение у нас есть осталось теперь написать код для проверки работоспособности идеи. Кликаем на расширение, перед нами открывается еще одно дерево метаданных выбираем в нем пункт "Открыть модуль управляемого приложения".
12.png

Модуль открылся пустым, так и должно быть сейчас напишем одну строчку для проверки. Для этого кликаем на лупу либо Ctrl+Alt+P.
14.png

Откроется список предопределенных процедур которые можно создать в модуле.
15.png

Будем использовать "ПриНачалеРаботыСистемы" это когда отработала процедура ПередНачаломРаботыСистемы у пользователя отрисовывается интерфейс, но база еще грузится.
В следующем окне выбираем "вызов после"
16.png

  • Вызвать перед - означает что вначале будет вызвана процедура из расширения кофигурации затем основная процедура из конфигурации 1С.
  • Вызвать после - тут понятно вначале процедура 1С, а потом наша
  • Вызвать вместо - тут тоже все понятно мы замещаем свой процедурой родную процедуру ПриНачалеРаботыСистемы есть большой шанс что при старте вылетит гора ошибок. Так как из этой процедуры стартуют многие другие по заполнению настроек пользователя, выведению рекламы))) и много чего еще.
Мы остановимся на том случае когда штатная процедура отработала, затем запустилась наша.
Пишем следующую строчку "Сообщить("Проверка расширения");" Должно получится так.
17.png

Затем наживаем F5 если 1С попросит сохранить изменения, соглашаемся))). Открывается интерфейс УТ 11 в низу мы видим наш текст.
18.png

Отлично, код работает значит можно продолжать. Осталось только пояснить одну вещь. Этот модуль компилируется на стороне клиента, а не сервера. Теперь спокойно можем доставить на клиент все что хотим. Но перед этим нужно снять всем пользователям галки "Защита от опасных действий". Иначе мы не получим доступа к файловой системе пользователя, а нам это нужно для сохранения скриптов или payload.
19.png

Теперь пора получать доступ к машин пользователей это может быть скрипт на чем угодно лишь бы windows его мог выполнить. Покажу маленький пример с netcat как его отправить пользователю и выполнить на его машине.
Для этого в дереве конфигурации расширения находим общие макеты.
23.png

Добавим свой макет который будет nc.exe, назовем его estart_exe дальше мы его переименуем в коде. Ставим переключатель что это двоичные данные и указываем путь до нашего файла.
22.png

Так как 1С это клиент-сервер есть ограничения. Мы не можем получить макет на клиенте нам нужно попросить сервер вернуть макет клиенту (хоть в данном случает мы сервер и клиент в одном лице). Для этого нам понадобится общий серверный модуль который вернет нам estart_exe. По аналогии с макетом создадим общий модуль в ветке общие модули.
24.png

В модуле всего одна строчка кода.
25.png

Функция возвращает макет с сервера на клиент, остается все упаковать и запустить.
26.png

Тут все понятно и просто. Создается временный каталог на подобии "b5b8f730-dc06-4749-9309-bd1c2621f2e6". В него записывается наш макет nc.exe под именем 1cestart.exe создается vbs скрипт который будет запускать слушателя. Скрипт смотрит нет ли такой задачи как 1cestart.exe если нет то запускает netcat.

Настало время подключить доработку к базе. Есть несколько проблем:
  • ПК отключают в ночное время или Wi-Fi
  • Может быть открыт сеанс конфигуратора или есть пользователи в БД.
Первая проблема решается в рабочее время, со второй сложнее. Может оказаться что наша версия платформы будет отличаться от используемой в организации.
1.png

Возможно рядом с БД будет находится директория windows (частенько бывает). Это и есть платформа 1С. Если же ее нет придется качать версии и проверять (фирма 1С часто выпускает платформы).

Есть вариант когда забыли закрыть конфигуратор или программист 1С его оставил открытым на сервере.
2.png

Не проблема, можем подключить расширение из режима предприятия.
Нажимаем на стрелку в верхнем левом углу выбираем сервис->параметры->отображать команду "Все функции"
3.png


4.png

Далее стрелка->Все Функции->Управление расширениями конфигурации
6.png

Открывается форма списка расширений. Добавляем наше расширение снимаем галки безопасности вот и все))).
7.png


“Нет стремления более естественного, чем стремление к знанию…”
Монтень​
Это маленький пример как можно через корпоративное ПО получить доступ ко все сети. Тут только фантазия и знания ограничивают.

Спасибо за внимание.​
 

Вложения

  • 7.png
    7.png
    21 КБ · Просмотры: 695
  • 28.png
    28.png
    4,1 КБ · Просмотры: 309
Последнее редактирование:
R

remez

Замечательная статья, описано все толково и понятно. И главное редкая по содержанию. Однозначно +
 

SooLFaa

Platinum
15.07.2016
898
1 560
BIT
36
Поехали. Перепутаны в принципе понятия. Сервер у 1С один, говоря, выполним код на клиенте, это значит выполним код у себя. Используя толстый или тонкий клиент мы все равно остаемся КЛИЕНТОМ и это без вариантов. С Сервером можно взаимодействовать даже без гуя. Далее самое главное обо что в принципе разбивается статья и замечательная утилита - это, а ЧТО ДЕЛАТЬ ЕСЛИ КОНФИГУРАЦИЯ 1С НЕ НА ЛОКАЛЬНОЙ ТАЧКЕ И ДОСТУПА К ФАЙЛАМ И ФАЙЛОВЫЙ СИСТЕМЫ НЕТ?! Ибо если есть доступ к файловой системе к чему вообще заход через 1С? Можно так же ломать и брутить сервер базы данных напрямую (ибо именно он представляет интерес, а 1С как средство), будь он локально или удаленно. Не раскрыта тема RCE, что то куда нажмем что то вставим, что то выполним, а что вставим, для чего нажмем, какой смысл имеет код? Плюс очень много воды. Становится скучно и хочется быстрее промотать на самый сок. И напоследок, замечательный способ пиарить свои какие то материалы, через "зашквар" других: "Чувак, статья гавно, а вот гляньте как круто у меня". Но прежде чем так делать, я бы рекомендовал убедиться, что статья действительно крутая, чтобы привлекать к ней внимания всего форума. Перед тем как о чем то писать, я следую своим же рекомендациям, а именно смотрю, нет ли такого материала уже на форуме. И да, обоснованная критика хорошо, черный пиар - плохо.
 

m0nstr

Green Team
19.06.2018
95
71
BIT
0
Отлично! На Окнах реализовалось. Как теперь на Макаках/Линуксах реализовать запуск скрипта? Я думаю тут же WScript.Shell не прокатит, и в худшем случае - троянчик спалица....

пысы эта статья лучше. она информативней и без надуманных айтишников, которые rly забывают ставить пароли на консоли Агентов 1с. При 0таке все средства хороши: RCE это, или скрипткидинг!
 

animi

Green Team
06.12.2016
52
46
BIT
0
Поехали. Перепутаны в принципе понятия. Сервер у 1С один, говоря, выполним код на клиенте, это значит выполним код у себя. Используя толстый или тонкий клиент мы все равно остаемся КЛИЕНТОМ и это без вариантов. С Сервером можно взаимодействовать даже без гуя. Далее самое главное обо что в принципе разбивается статья и замечательная утилита - это, а ЧТО ДЕЛАТЬ ЕСЛИ КОНФИГУРАЦИЯ 1С НЕ НА ЛОКАЛЬНОЙ ТАЧКЕ И ДОСТУПА К ФАЙЛАМ И ФАЙЛОВЫЙ СИСТЕМЫ НЕТ?! Ибо если есть доступ к файловой системе к чему вообще заход через 1С? Можно так же ломать и брутить сервер базы данных напрямую (ибо именно он представляет интерес, а 1С как средство), будь он локально или удаленно. Не раскрыта тема RCE, что то куда нажмем что то вставим, что то выполним, а что вставим, для чего нажмем, какой смысл имеет код? Плюс очень много воды. Становится скучно и хочется быстрее промотать на самый сок. И напоследок, замечательный способ пиарить свои какие то материалы, через "зашквар" других: "Чувак, статья гавно, а вот гляньте как круто у меня". Но прежде чем так делать, я бы рекомендовал убедиться, что статья действительно крутая, чтобы привлекать к ней внимания всего форума. Перед тем как о чем то писать, я следую своим же рекомендациям, а именно смотрю, нет ли такого материала уже на форуме. И да, обоснованная критика хорошо, черный пиар - плохо.

Ну допустим у тебя есть доступ к файловой систему. Че ты с ней сделаешь? Файлы посмотришь скопируешь? а дальше что? Как ты под контроль файловый сервер возьмешь? Копированием БД? Как ты выполнишь серверный код без клиента? А понял ты на прямую ragent.exe отправишь код)))) Есть пример этого? или ты имеешь ввиду через com?
Да ладно тонкий и толстый клиент это одно и тоже))) мат часть давно учил? Директивы компиляции смотрел? Какой толк если код будет выполняться на твоей тачке? Свою статью нормально напиши, а потом только советы давай ))))
Давай закроем уже эту тему. Если ты написал хорошо свою статью, а не бутерброд, претензий не было бы. Не могу понят чего сложно изменить скрины и сказать людям что это будет работать если платформа 8.1, а на 8.2 и 8.3 не будет.

И это не пиар. Если начал делать так делай хорошо!
 
Последнее редактирование:

animi

Green Team
06.12.2016
52
46
BIT
0
Отлично! На Окнах реализовалось. Как теперь на Макаках/Линуксах реализовать запуск скрипта? Я думаю тут же WScript.Shell не прокатит, и в худшем случае - троянчик спалица....

пысы эта статья лучше. она информативней и без надуманных айтишников, которые rly забывают ставить пароли на консоли Агентов 1с. При 0таке все средства хороши: RCE это, или скрипткидинг!

По поводу ставить ли платформу, можно не ставить есть один интересный проект onescript. Советую его его рассмотреть, парни очень хорошо постарались, есть небольшие косяки с com, но это можно прочитать на wiki.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!