Недавно коллеги из PT рассказывали про 1С Shell, который позволяет выполнять произвольные команды на Windows и на Linux, читать файлы и много чего еще.
Сегодня хотим поделиться с вами обзором утилиты для статического анализа на примере одного шелла. Она поможет определить функциональность шелла и узнать полезные подробности для команды реагирования — например, что выполненные через этот шелл команды записываются в файл
%TEMP%\res.txt.1C shell — это контейнер 1С (расширения файлов CF, EPF, ERF, CFE). Формат уже давно разобран, например, здесь и здесь.
Основные особенности контейнеров 1С
— Имеют заголовок
FF FF FF 7F;— Представляют из себя нечто вроде виртуальной файловой системы: контейнер хранит в себе различные документы, которые состоят из блоков;
— Большинство данных упакованы алгоритмом Deflate, из-за чего в файле почти нет полезных читаемых строк, кроме нескольких UUID строчек.
Для анализа такого файла можно загрузить его в 1С, но если под рукой нет этого ПО, можно воспользоваться утилитами — сегодня разберем pfCFTools.
Как работает утилита pfCFTools для анализа контейнеров
pfCFTools — это утилита для работы с файлами CF/CFE/CFU/EPF/ERF и подобными.
Для сборки нужно загрузить IDE Free pascal и запустить команду:
fpc.exe pfCFTool.lpr
Использование:
pfCFTool.exe -u Обработка.epf -c auto -d res_dir -r
-u – unpack;
-c – compression;
-d – directory to unpack;
-r – recurse processing.
В каталоге
res_dir появляются распакованные файлы и каталоги.Вспомогательные файлы для работы с метаданными:
—
version.deflate – информация о версии контейнера;—
versions.deflate — пары id метаданного (связанная совокупность файлов) и id-версии метаданного;—
root.deflate — id файла с описанием структуры метаданных для контейнеров CF, EPF, ERF (форматы файлов 1С);—
copyinfo.deflate — информация об изменениях в формате внутренних данных 1С.Остальные файлы:
—
uuid.deflate (ce244e8a-6d30-4e49-a244-c6d80d2ea085.deflate);—
uuid.type.deflate (ce244e8a-6d30-4e49-a244-c6d80d2ea085.0.deflate), где 0 — это постфикс модуля объекта, где как раз располагается 1С-код шелла — самый полезный файл;—
каталоги c uuid.Для чего нужен каждый файл, например, описано здесь. В файле
ce244e8a-6d30-4e49-a244-c6d80d2ea085.0.deflate на 3283 строке начинается код модуля, который реализует функционал шелла. Выжимка из кода:
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
УстановитьПривилегированныйРежим(Истина);
СисИнфо = Новый СистемнаяИнформация;
Платформа = СисИнфо.ТипПлатформы;
ВерсияОС = СисИнфо.ВерсияОС;
ИмяКомпьютера = ИмяКомпьютера();
ПапкаВременныхФайлов = КаталогВременныхФайлов();
Объект.ИмяФайлаВывода = КаталогВременныхФайлов() + ""res.txt"";
Объект.Способ = ""WScript.Shell"";
Платформа2 = ""Windows"";
Объект.Кодировка1 = ""cp866"";
Объект.Кодировка2 = ""cp866"";
…
КонецПроцедуры
У утилиты pfCFTools есть один минус: нужно копаться в непонятных файлах и искать код шелла.
Ставьте ⚡️, если нужен разбор еще двух утилит для анализа 1C шелла.