Работа с новым форматом файловой базы данных, начиная с «1С:Предприятие» 8.3.8
Начиная с версии платформы «1С:Предприятие» 8.3.8 появилась поддержка нового формата файловых баз данных (включая работу в режиме совместимости с предыдущими версиями). Новый формат файловых баз данных предназначен для ускорения процесса открытия и работы с информационной базой, поэтому, начиная с версии платформы 8.3.9, новый формат используется по умолчанию при создании новых файловых баз данных.
В новом формате (версии » 8.3.8″ ) появились следующие возможности:
Наибольший эффект от использования нового формата файловых баз данных ожидается в следующих сценариях:
При создании новых файловых баз данных рекомендуется использовать настройки формата базы по умолчанию (версия формата » 8.3.8 «, размер страницы файла 8Кб ). Если Вы используете базу данных, созданную в предыдущих версиях платформы, и наблюдаете недостаточно высокую производительность при старте и во время работы программы, то рекомендуется сконвертировать базу данных на новый формат файла.
Если Вы не можете найти утилиту CNVDBFL.EXE в папке » \bin «, проверьте, что Вы используете версию «1С:Предприятие» 8.3.8 и выше.
Если Вы хотите проверить параметры Вашей файловой базы данных, используйте следующий вызов утилиты (указав в команде правильный путь к Вашей базе данных):
При этом утилита выведет версию формата файла и размер страницы.
Версия формата » 8.3.8 » указывает на то, что используется новый формат файла. Версия формата » 8.2.14 » означает, что формат – старый, и имеет смысл выполнить конвертацию базы данных в новый формат.
Для конвертации файловой базы данных Вы можете использовать следующую команду:
ВНИМАНИЕ!
Напоминаем, что чтобы избежать риска потери Ваших данных, всегда имейте свежую резервную копию Вашей файловой базы данных перед выполнением операции конвертации файлов.
Использование «Дата акселератора»
В составе платформы «1С:Предприятие» версии 8.3.14 доступны два новых механизма для работы с данными:
Совместное использование этих механизмов позволяет:
Технология Дата акселератора реализована в виде сервиса кластера серверов «1С» и обладает рядом специфических особенностей:
1. Требования к среде для работы сервиса
Сервис недоступен при использовании режима совместимости 8.3.13 и ниже.
Минимальные системные требования:
1.1. Изменение стратегии управления памятью в Linux
За стратегию управления выделением памяти отвечает параметр overcommit_memory. Значение по умолчанию – 0.
Для того чтобы политика выделения памяти оставалась такой же и после перезагрузки сервера необходимо сделать следующее:
1.2. Управление файлом подкачки
2. Варианты развертывания сервиса «Дата акселератора»
Возможны два основных варианта развертывания сервиса Дата акселератора :
Рекомендуемые настройки требований назначения функциональности для кластера из двух серверов следующие:
Рабочий сервер, выделенный под Дата акселератор:
3. Управление копиями баз данных
Для управления копиями баз данных необходимо через меню Все функции вызвать соответствующую стандартную обработку.
В открывшемся окне можно управлять копиями баз данных и составом метаданных, хранящихся в них.
Важно обратить внимание на следующие параметры:
Справа, в дереве метаданных, необходимо указать те объекты метаданных, для которых будет создана копия.
При нажатии на кнопку Обновить копию начнется обновление текущей выделенной копии базы данных. Обновление копии выполняется в синхронном вызове, т.е. клиентское приложение после нажатия кнопки не будет отвечать, пока не будет полностью выполнен перенос данных. По окончании переноса клиентское приложение снова станет доступно.
Параллельное обновление копий баз данных невозможно. При попытке выполнения одновременного обновления будет возвращена ошибка «Параллельное обновление копии невозможно».
Для управления копиями баз данных из встроенного языка необходимо использовать менеджер «КопииБазыДанных».
4. Использование возможностей «Дата акселератора».
Использование возможностей Дата акселератора доступно только:
В запросе за использование копии баз данных отвечают свойства:
5. Автоматическое добавление объектов метаданных в копию
Для того чтобы отчет мог выполниться на копии, необходимо чтобы все таблицы, используемые при формировании отчета, были расположены в копии базы данных. Отчеты могут обращаться к множеству объектов метаданных. В некоторых случаях эти объекты метаданных могут явно не встречаться в тексте запроса на языке «1С», поэтому настройка списка объектов метаданных для размещения в копии может вызывать трудности.
По полученным данным обработка выбирает для копирования в копию необходимые объекты метаданных и запускает процесс обновления данных в копии так, чтобы она была готова к выполнению запроса.
Ниже приводится инструкция для сбора данных и использования этой обработки.
5.1. Сбор информации о запросах
5.1.1. Из технологического журнала
Необходимо узнать тип СУБД, на котором размещена база данных. Для этого можно воспользоваться консолью администрирования, посмотрев свойства информационной базы.
Далее потребуется понять, к каким таблицам идет обращение на СУБД при выполнении отчета. Сделать это можно с помощью технологического журнала. Ознакомиться с тем, что такое технологический журнал можно по ссылке https://its.1c.ru/db/v83doc#bookmark:adm:TI000000446
Настройки технологического журнала (logcfg.xml):
В конфигурационном файле необходимо указать следующие параметры:
Копировать в буфер обменаВыполняем отчет один раз. Убеждаемся, что в каталоге технологического журнала появился каталог рабочего процесса (rphost), содержащий не пустой файл логов.
5.1.2. Из текста запроса
Найдите нужный текст запроса в конфигурации. Получите его текст запроса и скопируйте в буфер обмена.
5.1.3. Из отчета конфигурации
Определите имя отчета в терминах метаданных конфигурации.
5.2. Добавление таблиц в копию
В поле Имя базы в Дата акселераторе необходимо указать имя копии базы данных. Можно указать как имя существующей копии, так и имя новой копии – при необходимости обработка создаст новую копию. Существующую копию можно выбрать по кнопке выбора.
В зависимости от выбранного способа получения информации о запросах в п 5.1. выполняем следующие действия:
По окончании работы в нижней табличной части будет указан список метаданных в терминах «1С» и СУБД, а также выдана информация о произведённых действиях или сообщение об ошибке в случае ее возникновения.
5.3. Проверка выполнения отчета в копии баз данных
Запустите выполнение отчета.
По окончании его формирования в заголовке табличного документа будет указана копия базы данных, из которой получены данные и дата актуальности данных.
6. Примеры настроек
Данные о конфигурации кластера:
Настраиваем требования назначения функциональности (см. раздел 2):
Применяем настроенные требования.
6.1. Пример для выполнения запроса в «Дата акселераторе»
6.2. Пример для выполнения отчета в «Дата акселератор».
7. Устранение неполадок
Ошибка возникает, потому что для выполнения операции не хватило виртуальной памяти. Проблема решается в зависимости от используемой операционной системы:
Такая проблема может возникнуть, потому что нет ни одной копии, в которой бы располагались все таблицы, необходимые для выполнения запроса, либо данные в копиях устарели. Способы решения проблемы:
8. Обращение в техподдержку
В случае, если настройки выполнены корректно, а устранить проблему своими силами не получается, необходимо отправить информацию в техническую поддержку.
Для этого необходимо предоставить следующую информацию:
Собранный технологический журнал может быть большого размера, поэтому не рекомендуется собирать его дольше 15 минут либо более того времени, которого достаточно для воспроизведения проблемы.
Отправлять собранные данные необходимо на электронный адрес betaplatform@1c.ru с отметкой «DBDA» в теме письма.
ВЫ МОЖЕТЕ ПРЯМО СЕЙЧАС СКАЧАТЬ ОБРАБОТКУ «Подбор таблиц для Дата акселератора»
НА ЖЕСТКИЙ ДИСК ВАШЕГО КОМПЬЮТЕРА
Набор отверток администратора 1С
За несколько лет сначала вынужденного, а потом и вполне занимательного администрирования 1С у меня накопился набор решений под большинство особенностей продукта. Предлагаю отложить в сторону высокие материи про кластеры и тюнинг SQL, и перетряхнуть запасы скриптов и механизмов, которые облегчают жизнь с 1С.
Будут как простые инструменты создания новых пользователей и мониторинга «все ли вышли из базы», так и более изощренные интерфейсы проверки целостности базы и ее перемещения.
Чистый кэш и крепкое здоровье
Как у большинства сложных приложений, у 1С через некоторое время работы вылезают странные ошибки, и возникает порой необъяснимое поведение. Специальные люди по 1С советуют в таких случаях почистить кэш.
Если запустить 1С с параметром /ClearCache, то будут очищены только клиент-серверные запросы. Локальные метаданные останутся и их нужно удалять отдельно на уровне файлов и папок. Эти данные хранятся в профиле пользователя, в папках с длинными названиями из GUID баз данных. Если баз на сервере немного, то такой кэш нетрудно удалить руками. Но если БД исчисляется десятками, то чистке вручную вы не обрадуетесь.
В подобных ситуациях выручит скрипт на Powershell, который запускается каждый раз при выходе пользователя из системы:
И никаких связанных со старым кэшем проблем.
Исправляем ошибки
Для исправления испорченной файловой базы в поставку 1С входит утилита chdbfl.exe, которая просто считывает содержимое базы во временный файл. Если какие-то данные считать не может — пропускает. При этом у нее нет ключей запуска для автоматизации, и проверку приходится запускать вручную.
Вообще, правильнее запускать проверку БД конфигуратором, но этот процесс проходит значительно дольше. Если же использовать только проверку физической целостности средствами chdbfl.exe, то не забывайте делать резервную копию из-за возможной потери данных.
Для баз 8.1 Андрей Скляров создал хороший инструмент Check1CD, с двумя параметрами запуска: «исправлять найденные ошибки» и “путь к базе”.
Но в Check1CD не хватает двух вещей:
Раз есть «хотелка» и немного свободного времени, то почему бы не попробовать решить вопрос самостоятельно?
Доработать код для передачи параметров через ключи командной строки — дело техники.
С выходом 1С 8.2 возникла проблема — путь к chdbfl менялся с установкой нового релиза. Что ж, дополним скрипт:
Надо сказать, недавно был опубликован исходный код Check1CD. Да, тоже на AutoIT.
Аналогичный механизм можно применять и для автоматического запуска различных регламентных механизмов, где нужно запускать 1С и ждать завершения операции.
Выкидываем из базы с выдумкой
Можно использовать штатную возможность подключения к 1С через COMConnector и скрипт на AutoIT. Код написан под 1С 8.1 и позволяет выкинуть пользователей из базы с записью в журнал.
Но операцию иногда нужно проворачивать по просьбе самого пользователя, который запустил «тяжелый» отчет и повесил 1С. Если не хотите решать эти вопросы самостоятельно, то просто выведите любителям “тяжелых” отчётов ярлык на скомпилированный скрипт:
Еще COMConnector помогает проверить наличие обновлений конфигурации, получить какую-то информацию из базы, и автоматизировать заведение пользователей в 1С.
Технологичное создание новых пользователей
На мой взгляд, создавать новых пользователей 1С должен системный администратор, а не программист 1С. Но последнему нужно сделать процесс максимально простым. Чтобы администратору не приходилось «заглядывать» в каждую базу отдельно, можно использовать еще один скрипт.
Юрлиц развелось слишком много — нужно разбивать на столбцы.
Занятно, но после смены нескольких поколений администраторов в одной компании из далекого прошлого новенькие уже не знали как создать пользователя вручную.
Автоматическое перемещение баз
Если нужно перенести базу 1С: Предприятия вместе с ее данными в SQL на другой сервер, то делать это вручную целесообразно только для 1-2 БД.
На этом набор заканчивается
Конечно, это далеко не все, что можно автоматизировать в связке с 1С. Но разного рода обмены, получение real-time информации из 1С в других приложениях и прочие сценарии не попали в этот обзор из-за узкой направленности и специфики.
Наверняка у вас тоже есть свой набор «ноу хау» для администрирования 1С — будет здорово если поделитесь с коллегами в комментариях.
Скрипты и ноу-хау предоставлены avelor, за что ему огромное спасибо!
Пока расследование не разлучит нас: малварь, которая может сидеть в сети компании годами
Недавно мы расследовали АРТ-атаку на одну российскую компанию и нашли много занятного софта. Сначала мы обнаружили продвинутый бэкдор PlugX, популярный у китайских группировок, АРТ-атаки которых обычно нацелены на похищение конфиденциальной информации, а не денег. Затем из скомпрометированной сети удалось вытащить несколько других схожих между собой бэкдоров (nccTrojan, dnsTrojan, dloTrojan) и даже общедоступных утилит.
Программы, используемые в этой преступной кампании, не отличаются сложностью, за исключением, может быть, PlugX. К тому же три из четырех вредоносов использовали при запуске давно известную технику DLL hijacking. Тем не менее, как показало наше исследование, даже при таких условиях злоумышленники могут годами оставаться в скомпрометированных сетях.
Мы решили изучить обнаруженный софт и поделиться своими наблюдениями.
PlugX
PlugX — сложная вредоносная программа. Мы постараемся рассказать о ее основных функциях, а более подробное описание малвари можно найти в отчете Dr. Web.
Запуск PlugX
PlugX, как правило, распространяется в виде самораспаковывающихся архивов, содержащих:
Такой набор характерен для техники DLL hijacking, при которой злоумышленник заменяет легитимную DLL на вредоносную. При этом малварь получает возможность работать от имени легитимного процесса и обходить таким образом средства защиты (рис. 1).
Рис. 1. Наглядное представление техники DLL hijacking
Рассмотрим в качестве примера один из экземпляров PlugX, характеристики которого приведены в табл. 1.
| Свойство | EXE | DLL | Зашифрованная нагрузка |
|---|---|---|---|
| Имя файла | mcut.exe | mcutil.dll | mcutil.dll.bbc |
| Тип файла | PE32 executable (EXE) | PE32 executable (DLL) | None |
| Размер (в байтах) | 140 576 | 4 096 | 180 358 |
| Время компиляции | 13 июня 2008 года 02:39:28 | 9 декабря 2014 года 10:06:14 | — |
| MD5 | 884d46c01c762ad6ddd2759fd921bf71 | e9a1482a159d32ae57b3a9548fe8edec | 2d66d86a28cd28bd98496327313b4343 |
| SHA-1 | d201b130232e0ea411daa23c1ba2892fe6468712 | a2a6f813e2276c8a789200c0e9a8c71c57a5f2d6 | 7bcf4f196578f2a43a2cd47f0b3c8d295120b646 |
| SHA-256 | 3124fcb79da0bdf9d0d1995e37b06f7929d83c1c4b60e38c104743be71170efe | 2f81cf43ef02a4170683307f99159c8e2e4014eded6aa5fc4ee82078228f6c3c | 0c831e5c3aecab14fe98ff4f3270d9ec1db237f075cd1fae85b7ffaf0eb2751 |
Вот что происходит при запуске невредоносного исполняемого файла (EXE) из пакета.
Сначала одна из импортируемых им библиотек (отдельная DLL) заменяется вредоносной. После загрузки в память процесса DLL открывает третий файл из пакета PlugX, который обходит средства защиты за счет отсутствия видимого исполняемого кода. Тем не менее он содержит шелл-код, после исполнения которого в памяти расшифровывается еще один дополнительный шелл-код. Он с помощью функции RtlDecompressBuffer() распаковывает PlugX (DLL). При открытии мы видим, что сигнатуры MZ и PE в исполняемом файле PlugX заменены на XV (рис. 2) — скорее всего, это тоже нужно, чтобы скрыть модуль от средств защиты.
Рис. 2. Исполняемый файл PlugX в распакованном виде с измененными сигнатурами MZ и PE
Наконец, запускается распакованная вредоносная библиотека, и управление передается ей.
В другом экземпляре PlugX мы обнаружили интересную особенность: малварь пыталась скрыть некоторые библиотечные вызовы от песочниц. При восстановлении импортов вместо адреса импортируемой функции сохранялся адрес тремя байтами ранее. Результат для функции SetFileAttributesW() виден на рис. 3.
Рис. 3. При получении адреса функции SetFileAttributesW() сохраняется адрес 0x7577D4F4
В табл. 2 приведены характеристики этого экземпляра.
| Свойство | EXE | DLL | Зашифрованная нагрузка |
|---|---|---|---|
| Имя файла | mcut.exe | mcutil.dll | mcutil.dll.bbc |
| Тип файла | PE32 executable (EXE) | PE32 executable (DLL) | None |
| Размер | 140 576 | 4 096 | 179 906 |
| MD5 | 884d46c01c762ad6ddd2759fd921bf71 | 12ee1f96fb17e25e2305bd6a1ddc2de9 | e0ae93f9cebcba2cb44cec23993b8917 |
| SHA-1 | d201b130232e0ea411daa23c1ba2892fe6468712 | bf25f1585d521bfba0c42992a6df5ac48285d763 | f0efdb723a65e90afaebd56abe69d9f649ca094c |
| SHA-256 | 3124fcb79da0bdf9d0d1995e37b06f7929d83c1c4b60e38c104743be71170efe | 97ad6e95e219c22d71129285299c4717358844b90860bb7ab16c5178da3f1686 | 81e53c7d7c8aa8f98c951106a656dbe9c931de465022f6bafa780a6ba96751eb |
б)
Рис. 4. Фрагмент декомпилированного кода (а) и соответствующий ему фрагмент листинга перехваченных инструкций (б), где встречается вызов функции SetFileAttributesW()
Основная нагрузка PlugX не сохраняется в расшифрованном виде на диске.
Работа PlugX
После запуска вредоносная программа расшифровывает конфигурацию, которая содержит адреса серверов управления, а также информацию, необходимую для дальнейшего функционирования (например, способ закрепления в системе или путь, по которому копируются файлы малвари).
При этом данные для конфигурации могут браться из основного загрузчика или из отдельного файла в текущей рабочей директории. Из того же файла может быть подтянута новая конфигурация при ее обновлении в ходе взаимодействия с сервером управления.
То, как вредонос будет вести себя дальше, во многом определяет его конфигурация.
В зависимости от значения check_flag в конфигурации PlugX вредоносная программа может начать поиск в зараженной системе сетевого адаптера, MAC-адрес которого совпадает с адресом, заданным в самой малвари. В случае совпадения вредоносная программа завершит свое исполнение. Вероятно, таким образом она пытается обнаружить виртуальную среду.
Если значение mode_flag равно 0, вредоносная программа закрепляется в системе (подробнее в разделе «Закрепление в системе»). Затем она переходит к инициализации плагинов и взаимодействию с сервером управления (подробнее в разделе «Функциональность плагинов и исполнение команд»).
Если значение mode_flag равно 2, вредоносная программа сразу переходит к инициализации плагинов и взаимодействию с сервером управления.
Если значение mode_flag равно 3, вредоносная программа внедряет шелл-код в Internet Explorer. Передача управления вредоносному коду осуществляется с помощью функции CreateRemoteThread(). Также производится инициализация плагинов, и создается именованный пайп, через который вредоносная программа получает команды, предназначенные для исполнения плагинами.
Закрепление в системе
Если конфигурация PlugX предусматривает закрепление вредоноса в зараженной системе, то в ней прописан каталог, в который будут скопированы компоненты малвари.
Анализируемый образец выбирает одну из следующих директорий в зависимости от разрядности малвари:
В зависимости от persistence_flag PlugX может закрепляться:
Помним, что малварь может и не закрепляться вовсе.
В зависимости от конфигурации вредоносная программа может также попытаться создать процесс с повышенными привилегиями с последующим внедрением в него кода. В конфигурации могут быть перечислены до четырех целевых процессов.
Функциональность плагинов PlugX и исполняемые команды
Основная функциональность бэкдора реализована с помощью так называемых плагинов. Фрагмент функции, в которой производится инициализация плагинов, приведен на рис. 5.
Рис. 5. Фрагмент инициализации плагинов PlugX
PlugX может управлять процессами и службами, работать с файловой системой, вносить изменения в реестр. Он также имеет компоненты кейлоггера и скринлоггера и может получать удаленный доступ к зараженной системе — все это дает обширные возможности злоумышленникам в скомпрометированной сети.
Полный перечень функций вредоносной программы, доступной через плагины, приведен в табл. 3.
Табл. 3. Функциональность PlugX, доступная через плагины
| Плагин | Команда | Функциональные возможности |
| DISK | Собрать информацию по всем дискам (тип и свободное пространство) | |
| Перечислить файлы в директории | ||
| Перечислить файлы | ||
| Прочитать файл | ||
| Создать директорию и сохранить в нее файл | ||
| Создать директорию | ||
| Создать новый рабочий стол и запустить процесс | ||
| Копировать, переместить, переименовывать или удалить файл | ||
| Получить значение переменной окружения | ||
| KeyLogger | Отправить данные кейлоггера на сервер управления | |
| Nethood | Перечислить сетевые ресурсы | |
| Установить соединение с сетевым ресурсом | ||
| Netstat | Получить таблицу TCP | |
| Получить таблицу UDP | ||
| Установить состояние TCP | ||
| Option | Заблокировать экран компьютера | |
| Отключить компьютер (принудительно) | ||
| Перезагрузить компьютер | ||
| Отключить компьютер (безопасно) | ||
| Показать окно с сообщением | ||
| PortMap | Возможно, запустить маппинг портов | |
| Process | Получить информацию о процессах | |
| Получить информацию о процессе и модулях | ||
| Завершить процесс | ||
| Regedit | Перечислить подразделы ключа реестра | |
| Создать ключ реестра | ||
| Удалить ключ реестра | ||
| Скопировать ключ реестра | ||
| Перечислить значения ключа реестра | ||
| Задать значение ключа реестра | ||
| Удалить значение из ключа реестра | ||
| Получить значение из ключа реестра | ||
| Screen | Использовать удаленный рабочий стол | |
| Сделать скриншот | ||
| Найти скриншоты в системе | ||
| Service | Получить информацию о сервисах в системе | |
| Изменить конфигурацию сервиса | ||
| Запустить сервис | ||
| Управлять сервисом | ||
| Удалить сервис | ||
| Shell | Запустить cmd-шелл | |
| SQL | Получить список баз данных | |
| Получить список описаний драйверов | ||
| Выполнить SQL-команду | ||
| Telnet | Настроить Telnet |
Фрагмент функции обработки команд, полученных от сервера управления приведена на рис. 6.
Рис. 6. Команды сервера управления, которые получает PlugX
Описание команд приведено в табл. 4.
Табл. 4. Команды сервера управления, которые получает PlugX
| Команда | Описание |
|---|---|
| 0x1 | Отправить на сервер управления данные о зараженной системе: — имя компьютера; — имя пользователя; — информация о CPU; — текущее использование памяти системой; — информация об операционной системе; — системные дата и время; — системная информация; — язык системы |
| 0x5 | Самоудалиться (удалить службу, очистить реестр) |
| 0x3 | Передать команды плагинам со сменой протокола взаимодействия |
| 0x6 | Отправить текущую конфигурацию PlugX на сервер управления |
| 0x7 | Получить с сервера управления новую конфигурацию и обновить текущую |
| 0x8 | Отправить список процессов с внедренным шелл-кодом |
| default | Передать команды плагинам |
nccTrojan
Один из обнаруженных нами бэкдоров найден в отчете VIRUS BULLETIN и назван авторами nccTrojan по константному значению в коде основного пейлоада. Характеристики попавшегося нам образца малвари приведены в табл. 5.
| Свойство | EXE | DLL |
|---|---|---|
| Имя файла | instsrv.exe | windowsreskits.dll |
| Тип файла | PE32 executable (EXE) | PE32 executable (DLL) |
| Размер (в байтах) | 83 968 | 514 048 |
| Время компиляции | 18 декабря 2019 года 03:13:03 | 21 марта 2020 года 15:19:04 |
| MD5 | c999b26e4e3f15f94771326159c9b8f9 | 056078b1c424667e6a67f9867627f621 |
| SHA-1 | ec12c469463029861bd710aec3cb4a2c01907ad2 | 5bd080285a09c0abf742fb50957831310d9d9769 |
| SHA-256 | 07d728aa996d48415f64bac640f330a28e551cd565f1c5249195477ccf7ecfc5 | 3be516735bafbb02ba71d56d35aee8ce2ef403d08a4dc47b46d5be96ac342bc9 |
Запуск nccTrojan
Работа nccTrojan
nccTrojan расшифровывает конфигурацию, хранящуюся по определенному смещению в оверлее. Конфигурация зашифрована с помощью алгоритма AES-CFB-256, он же используется для шифрования взаимодействия с сервером управления. Пары «ключ шифрования + вектор инициализации» захардкоржены и различны для шифрования конфигурации и взаимодействия с сервером управления.
Расшифрованная конфигурация содержит информацию о сервере управления и выглядит следующим образом:
Если соединение установлено, то на сервер управления отправляется следующая информация:
При этом из собранных данных формируется строка, которая дальше зашифровывается и отправляется на сервер управления. Формат создаваемой строки:
Далее вредоносная программа переходит к взаимодействию с сервером управления и может исполнять команды, приведенные в табл. 6.
Табл. 6. Команды, исполняемые nccTrojan
| Команда | Назначение |
|---|---|
| 0x2 | Запустить сmd-шелл |
| 0x3 | Выполнить команду через cmd-шелл |
| 0x4 | Записать данные в файл |
| 0x5 | Получить информацию о дисках C-Z (тип, свободный объем памяти) |
| 0x6 | Получить информацию о файлах |
| 0x8 | Запустить процесс |
| 0xA | Удалить файл или директорию |
| 0xC | Прочитать файл |
| 0xF | Проверить наличие файла |
| 0x11 | Сохранить файл |
| 0x13 | Получить список запущенных процессов |
| 0x15 | Завершить процесс |
| 0x17 | Скопировать файл |
| 0x1A | Переместить файл |
| 0x1D | Запустить cmd-шелл с правами пользователя |
dnsTrojan
Следующий бэкдор мы обнаружили впервые: на момент расследования мы не нашли упоминаний о нем в отчетах других экспертов. Его отличительная особенность — общение с сервером управления через DNS. В остальном по своей функциональности вредоносная программа схожа с бэкдором nccTrojan. Чтобы сохранить единообразие в названиях найденной малвари, назвали ее dnsTrojan.
| Свойство | EXE |
|---|---|
| Имя | a.exe.ok |
| Тип файла | PE32 executable (EXE) |
| Размер (в байтах) | 417 280 |
| Время компиляции | 13 октября 2020 года 20:05:59 |
| MD5 | a3e41b04ed57201a3349fd42d0ed3253 |
| SHA-1 | 172d9317ca89d6d21f0094474a822720920eac02 |
| SHA-256 | 826df8013af53312e961838d8d92ba24de19f094f61bc452cd6ccb9b270edae5 |
Запуск dnsTrojan
После запуска вредоносная программа извлекает из ресурсов, распаковывает и сохраняет в рабочей директории два файла:
Работа dnsTrojan
Все свои действия вредоносная программа логирует в файл %ProgramData%\logD.dat, при этом записанные данные похожи на отладочную информацию для злоумышленников (рис. 7).
Рис. 7. Фрагмент файла logD.dat
Взаимодействие с сервером управления осуществляется с использованием DNS-туннелирования. Данные передаются серверу управления в виде DNS-запроса TXT-записи в зашифрованном виде.
Сразу после запуска на сервер управления отправляются следующие данные:
Из них формируется сообщение вида 8SDXCAXRZDJ;O0V2m0SImxhY;6.1.1;1;00-13-d2-e3-d6-2e;2020113052831619.
Все передаваемые на сервер управления данные преобразуются следующим образом:
При формировании домена, для которого запрашивается TXT-запись, после каждого 64-го символа ставится точка. Запросы, отправляемые вредоносной программой, можно увидеть на рис. 8.
В ответ на запрос, отправленный на предыдущем шаге из TXT-записей, dnsTrojan получает команды сервера и может исполнить их (табл. 8).
| Команда | Назначение |
|---|---|
| 0x1 | Получить онлайн-данные |
| 0x2 | Запустить сmd-шелл |
| 0x3 | Выполнить команду через cmd-шелл |
| 0x4 | Получить информацию о дисках C–Z (тип, свободный объем памяти) или файлах |
| 0x6 | Прочитать файл |
| 0x7 | Скопировать файл |
| 0x8 | Удалить файл |
| 0x9 | Проверить наличие файла |
| 0xA | Сохранить файл |
| 0xB | Установить время бездействия программы (в минутах) |
| 0xD | Самоудалиться (очистить реестр) |
dloTrojan
dloTrojan — еще одна обнаруженная в процессе расследования вредоносная программа, которую мы классифицировали как бэкдор. Эта малварь не относится ни к одному из известных семейств вредоносов.
Характеристики файлов исследуемого нами образца приведены в табл. 9.
| Свойство | EXE | DLL |
|---|---|---|
| Имя | ChromeFrameHelperSrv.exe | chrome_frame_helper.dll |
| Тип файла | PE32 executable (EXE) | PE32 executable (DLL) |
| Размер (в байтах) | 82 896 | 240 128 |
| Время компиляции | 12 июля 2013 года 19:11:41 | 14 сентября 2020 года 16:34:44 |
| MD5 | 55a365b1b7c50887e1cb99010d7c140a | bd23a69c2afe591ae93d56166d5985e1 |
| SHA-1 | 6319b1c831d791f49d351bccb9e2ca559749293c | 3439cf6f9c451ee89d72d6871f54c06cb0e0f1d2 |
| SHA-256 | be174d2499f30c14fd488e87e9d7d27e0035700cb2ba4b9f46c409318a19fd97 | f0c07f742282dbd35519f7531259b1a36c86313e0a5a2cb5fe1dadcf1df9522d |
Запуск dloTrojan
На сцену опять выходит DLL hijacking.
Итак, вредоносная программа dloTrojan состоит из двух компонентов:
После запуска исполняемого EXE-файла подгружается код вредоносной DLL. При этом библиотека проверяет имя процесса, в который она загружена, и оно должно соответствовать имени ChromeFrameHelperSrv.exe. В противном случае, вредоносный код завершит свое исполнение.
Далее библиотека расшифровывает вредоносный исполняемый файл, код которого внедряется в еще один запущенный процесс ChromeFrameHelperSrv.exe с использованием техники Process Hollowing.
Работа dloTrojan
Вредоносная программа пытается получить данные значения с именем TID из одного из двух ключей реестра (это зависит от имеющихся привилегий в системе):
Если же значение в реестре отсутствует, создается один из указанных ключей реестра. В параметре TID прописывается строка из 16 произвольных символов, которую в дальнейшем можно рассматривать как ID зараженной системы.
Строки во вредоносной программе зашифрованы методом простого сложения по модулю двух с одним байтом (отличается для различных строк).
Затем малварь расшифровывает адрес сервера управления. В зависимости от конфигурации вредоносная программа может иметь несколько адресов, в текущей конфигурации адрес сервера управления один.
Теперь dloTrojan устанавливает соединение с сервером управления. Если подключиться к серверу не удалось, малварь пытается найти настроенные прокси-серверы одним из способов:
Далее на сервер управления отправляется следующая информация о зараженной системе:
Данные передаются на сервер управления в зашифрованном виде.
В конце концов вредоносная программа получает возможность исполнять команды сервера управления: запускать cmd-шелл, создавать и удалять файлы, собирать информацию о дисках.
Перечень возможных команд приведен в табл. 10.
Табл. 10. Команды, исполняемые dloTrojan
| Команда | Назначение |
|---|---|
| 0x1 | Получить количество миллисекунд, прошедших с момента запуска системы |
| 0x2 | Запустить сmd-шелл |
| 0x3 | Выполнить команду через cmd-шелл |
| 0x4 | Закрыть cmd-шелл |
| 0x5 | Проверить существование файла. Если файла нет, создать его |
| 0x6 | Создать файл |
| 0x7 | Получить данные файла (размер, временные метки) |
| 0x8 | Прочитать файл |
| 0x9 | Получить информацию о дисках C–Z (тип, объем свободной памяти) |
| 0xA | Перечислить файлы |
| 0xB | Удалить файл |
| 0xC | Переместить файл |
| 0xD | Запустить процесс |
| 0xE | Сделать скриншот |
| 0xF | Перечислить сервисы |
| 0x10 | Запустить сервис |
| 0x11 | Перечислить процессы и модули |
| 0x12 | Завершить процесс, затем перечислить процессы и модули |
| 0x13 | Закрыть сокет |
И еще несколько программ, которые мы раскопали в ходе расследования
Вернемся к общедоступным утилитам, найденным на зараженных системах. С их помощью можно залезть в систему, утащить конфиденциальные данные и выполнить другие вредоносные действия. Ловите краткое описание каждой.
GetPassword
GetPassword предназначена для получения паролей из зараженной системы. Раньше исходный код утилиты лежал в репозитории MimikatzLite, но сейчас его почему-то удалили. Можем только поделиться скриншотом на рис. 9.
Рис. 9. Скриншот работы утилиты GetPassword
Quarks PwDump
Еще одна утилита для извлечения паролей из ОС Windows.
Исходный код можно найти в репозитории 0daytool-quarkspwdump. Скриншот утилиты приведен на рис. 10.
Рис. 10. Скриншот работы утилиты Quarks PwDump
wpmd v 2.3 (beta)
wpmd (windows password and masterkey decrypt) также предназначена для получения паролей в ОС Windows. Увы, источник мы не нашли, поэтому можем только показать скриншот (рис. 11).
Рис. 11. Скриншот работы утилиты wpmd v 2.3 (beta)
os.exe
os.exe позволяет определить версию ОС Windows (рис. 12). Источник тоже не найден 🙁
Рис. 12. Скриншот работы утилиты os.exe
nbtscan 1.0.35
nbtscan — утилита командной строки, предназначенная для сканирования открытых серверов имен NETBIOS в локальной или удаленной TCP/IP-сети. Она обеспечивает поиск открытых общих ресурсов (рис. 13). Доступна на ресурсе Unixwiz.net.
Рис. 13. Скриншот работы утилиты nbtscan
Это расследование в очередной раз убедило нас, что даже заезженные и понятные техники способны доставить жертвам много неприятностей. Злоумышленники могут годами копаться в IT-инфраструктуре жертвы, которая и подозревать ничего не будет. Думаем, выводы вы сделаете сами 🙂
PlugX (SHA256: EXE, DLL, Shell-code)
PlugX-executor: (SHA256: EXE)
nccTrojan (SHA256: EXE, DLL)
dnsTrojan (SHA256: EXE)
dloTrojan (SHA256: EXE, DLL)






















