Применительно к офисным документом OLE (Object Linking and Embedding) является технологией связи частей одного документа (или одного документа) с другим документом (например, диаграммы из Excel вcтравленные в презентацию Power Point будут обновляться при обновлении данных в исходном документе Excel).
OLE1 работала за счет DDE (Dynamic Data Exchange - технология динамического обмена данными).
OLE2 использует COM (объектно-ориентированная компонентная модель).
В свою очередь COM построена на DCR RPC.
DCOM в отличии от COM позволяет обмениваться данными процессами на разных хостах (используя удаленные вызовы RPC).
ActiveX это маркетинговое название для COM компонентов, используемых в веб.
Документы с расширением .doc, .xls, .ppt хранятся в формате CDF (OLE2) - файлы в композитном двоичном формате (то есть для изучения содержимого файлов такого формата требуются специальные утилиты).
В данном формате внутри одного файла скрыто несколько разных потоков данных (CDF файл - это аналог архива, а потоки являются аналогами файлов в этом архиве).
Также внутри потоков имеются хранилища (storage) - аналоги папок внутри которых размещаются потоки и другие хранилища.
Макросы (код на VBA) хранятся
Код макросов хранится в сжатом виде.
Для изучения двоичных офисных файлов MS можно использовать утилиты
Документы с расширением .docx, .xlsx, .pptx хранятся в виде нескольких запакованных в один архив XML файлов (то есть их можно легко изучать с помощью текстового редактора).
При этом макросы все равно хранятся в этих архивах в виде двоичных OLE файлов (vbaProject.bin - это имя может быть другим), поэтому для их исследования также необходимо использовать специальные утилиты.
Утилита oledump.py может открыть запароленные zip архивы с документами (пароль - infected)
Информация о потоках doc файла
oledump.py файл.doc
В выводе
oledump.py -s номер файл.doc
oledump.py -s номер -v файл.doc
oledump.py -s номер -v файл.doc > файл
oledump.py -p plugin_http_heuristics файл.doc
RTF документы не могут содержать макросы, но могут содержать в себе другие файлы (с помощью технологии OLE) .
Код макроса (VBA) может содержать двоичный код DLL, скрытый путем замены представляющих его текстовых символом (например, методом Chr(код)).
После обратного преобразования DLL код сохраняется макросом на диск и передается в качестве параметра на исполнение программе win32dll.exe.
Макросы имеют доступ к свойствам документа в котором они содержатся и могут обращаться к ним для извлечения своих частей.