การผจญภัยของมัลแวร์ที่เข้าใจยาก ตอนที่ XNUMX: ฟิลด์ DDE และเอกสาร Word

การผจญภัยของมัลแวร์ที่เข้าใจยาก ตอนที่ XNUMX: ฟิลด์ DDE และเอกสาร Word

บทความนี้เป็นส่วนหนึ่งของชุดมัลแวร์ไร้ไฟล์ ส่วนอื่น ๆ ทั้งหมดของซีรีส์:

ในบทความนี้ ฉันจะเจาะลึกสถานการณ์การโจมตีแบบไร้ไฟล์แบบหลายขั้นตอนที่ซับซ้อนยิ่งขึ้นด้วยการปักหมุดบนระบบ แต่แล้วฉันก็พบกับการโจมตีที่ไม่ต้องใช้โค้ดที่เรียบง่ายอย่างเหลือเชื่อ—ไม่ต้องใช้มาโคร Word หรือ Excel! และสิ่งนี้พิสูจน์ได้อย่างมีประสิทธิภาพมากขึ้นว่าสมมติฐานดั้งเดิมของฉันที่เป็นรากฐานของบทความชุดนี้: การทำลายขอบเขตด้านนอกขององค์กรใด ๆ ไม่ใช่เรื่องยากเลย

การโจมตีครั้งแรกที่ฉันจะอธิบายเป็นการใช้ประโยชน์จากช่องโหว่ของ Microsoft Word ที่เป็นพื้นฐาน เก่า โปรโตคอลการแลกเปลี่ยนข้อมูลแบบไดนามิก (ดีดี). เธอเป็นแล้ว ที่ตายตัว. ประการที่สองใช้ประโยชน์จากช่องโหว่ทั่วไปใน Microsoft COM และความสามารถในการถ่ายโอนวัตถุ

กลับไปสู่อนาคตด้วย DDE

มีใครจำ DDE ได้บ้างคะ? อาจจะไม่มาก มันเป็นหนึ่งในคนแรกๆ โปรโตคอลการสื่อสารระหว่างกระบวนการที่อนุญาตให้แอปพลิเคชันและอุปกรณ์ถ่ายโอนข้อมูล.

ฉันคุ้นเคยกับมันนิดหน่อยเพราะฉันเคยตรวจสอบและทดสอบอุปกรณ์โทรคมนาคม ในเวลานั้น DDE อนุญาตให้ผู้ดำเนินการศูนย์บริการทางโทรศัพท์ถ่ายโอนหมายเลขผู้โทรไปยังแอปพลิเคชัน CRM ซึ่งท้ายที่สุดแล้วจะเปิดบัตรลูกค้า ในการดำเนินการนี้ คุณต้องเชื่อมต่อสาย RS-232 ระหว่างโทรศัพท์กับคอมพิวเตอร์ นั่นคือวันนั้น!

ปรากฎว่า Microsoft Word ยังคงอยู่ รองรับ ดีดี.

สิ่งที่ทำให้การโจมตีนี้มีประสิทธิภาพโดยไม่ต้องใช้โค้ดก็คือ คุณสามารถเข้าถึงโปรโตคอล DDE ได้ โดยตรง จากฟิลด์อัตโนมัติในเอกสาร Word (ยกเว้น SensePost สำหรับ การวิจัยและการตีพิมพ์ เกี่ยวกับมัน).

รหัสฟิลด์ เป็นอีกหนึ่งคุณสมบัติโบราณของ MS Word ที่ให้คุณเพิ่มข้อความไดนามิกและการเขียนโปรแกรมเล็กน้อยลงในเอกสารของคุณ ตัวอย่างที่ชัดเจนที่สุดคือฟิลด์หมายเลขหน้า ซึ่งสามารถแทรกลงในส่วนท้ายได้โดยใช้ค่า {PAGE *MERGEFORMAT} ซึ่งช่วยให้สามารถสร้างหมายเลขหน้าได้โดยอัตโนมัติ

การผจญภัยของมัลแวร์ที่เข้าใจยาก ตอนที่ XNUMX: ฟิลด์ DDE และเอกสาร Word
คำแนะนำ: คุณจะพบรายการเมนูฟิลด์ใต้ส่วนแทรก

ฉันจำได้ว่าตอนที่ค้นพบฟีเจอร์นี้ใน Word ครั้งแรก ฉันรู้สึกประหลาดใจมาก และจนกว่าแพตช์จะปิดการใช้งาน Word ยังคงรองรับตัวเลือกฟิลด์ DDE แนวคิดก็คือ DDE จะอนุญาตให้ Word สื่อสารโดยตรงกับแอปพลิเคชัน เพื่อที่จะสามารถส่งผ่านเอาต์พุตของโปรแกรมไปยังเอกสารได้ ในเวลานั้นเป็นเทคโนโลยีที่ยังใหม่มาก - รองรับการแลกเปลี่ยนข้อมูลกับแอปพลิเคชันภายนอก ต่อมาได้รับการพัฒนาเป็นเทคโนโลยี COM ซึ่งเราจะดูด้านล่างด้วย

ในที่สุดแฮกเกอร์ก็ตระหนักว่าแอปพลิเคชัน DDE นี้อาจเป็นเชลล์คำสั่ง ซึ่งแน่นอนว่าเปิดตัว PowerShell และจากนั้นแฮกเกอร์ก็สามารถทำทุกอย่างที่พวกเขาต้องการได้
ภาพหน้าจอด้านล่างแสดงวิธีที่ฉันใช้เทคนิคการซ่อนตัวนี้: สคริปต์ PowerShell ขนาดเล็ก (ต่อไปนี้จะเรียกว่า PS) จากฟิลด์ DDE จะโหลดสคริปต์ PS อื่น ซึ่งจะเริ่มการโจมตีระยะที่สอง

การผจญภัยของมัลแวร์ที่เข้าใจยาก ตอนที่ XNUMX: ฟิลด์ DDE และเอกสาร Word
ขอบคุณ Windows สำหรับคำเตือนป๊อปอัปว่าฟิลด์ DDEAUTO ในตัวกำลังพยายามเริ่มเชลล์อย่างลับๆ

วิธีที่ต้องการในการใช้ประโยชน์จากช่องโหว่คือการใช้ตัวแปรกับฟิลด์ DDEAUTO ซึ่งจะเรียกใช้สคริปต์โดยอัตโนมัติ เมื่อเปิด เอกสารเวิร์ด
ลองคิดดูว่าเราจะทำอะไรได้บ้างเกี่ยวกับเรื่องนี้

ในฐานะแฮ็กเกอร์มือใหม่ คุณสามารถส่งอีเมลฟิชชิ่งโดยอ้างว่าคุณมาจาก Federal Tax Service และฝังฟิลด์ DDEAUTO ด้วยสคริปต์ PS ในขั้นตอนแรก (โดยพื้นฐานแล้วคือหยด) และคุณไม่จำเป็นต้องทำการเข้ารหัสมาโครจริง ๆ ฯลฯ เหมือนที่ฉันทำ บทความก่อนหน้านี้
เหยื่อเปิดเอกสารของคุณ สคริปต์ที่ฝังไว้ถูกเปิดใช้งาน และแฮกเกอร์ก็เข้าไปอยู่ในคอมพิวเตอร์ ในกรณีของฉัน สคริปต์ PS ระยะไกลเพียงแค่พิมพ์ข้อความ แต่สามารถเปิดไคลเอนต์ PS Empire ได้อย่างง่ายดาย ซึ่งจะช่วยให้สามารถเข้าถึงเชลล์ระยะไกลได้
และก่อนที่เหยื่อจะมีเวลาพูดอะไรแฮกเกอร์ก็จะกลายเป็นวัยรุ่นที่ร่ำรวยที่สุดในหมู่บ้าน

การผจญภัยของมัลแวร์ที่เข้าใจยาก ตอนที่ XNUMX: ฟิลด์ DDE และเอกสาร Word
เชลล์ถูกเปิดใช้งานโดยไม่มีการเขียนโค้ดแม้แต่น้อย แม้แต่เด็กก็ทำได้!

DDE และฟิลด์

ไมโครซอฟท์ได้ปิดการใช้งาน DDE ใน Word ในภายหลัง แต่ไม่ก่อนที่บริษัทจะระบุว่าคุณลักษณะนี้ถูกใช้ในทางที่ผิด การไม่เต็มใจที่จะเปลี่ยนแปลงสิ่งใดเป็นสิ่งที่เข้าใจได้ จากประสบการณ์ของฉัน ฉันเองได้เห็นตัวอย่างที่อัปเดตฟิลด์เมื่อเปิดใช้งานเอกสาร แต่มาโคร Word ถูกปิดใช้งานโดยฝ่ายไอที (แต่แสดงการแจ้งเตือน) อย่างไรก็ตาม คุณสามารถค้นหาการตั้งค่าที่เกี่ยวข้องได้ในส่วนการตั้งค่า Word

อย่างไรก็ตาม แม้ว่าจะเปิดใช้งานการอัปเดตฟิลด์แล้ว Microsoft Word จะแจ้งเตือนผู้ใช้เพิ่มเติมเมื่อฟิลด์ร้องขอการเข้าถึงข้อมูลที่ถูกลบ เช่นเดียวกับกรณีของ DDE ข้างต้น Microsoft เตือนคุณจริงๆ

แต่ส่วนใหญ่แล้วผู้ใช้จะยังคงเพิกเฉยต่อคำเตือนนี้และเปิดใช้งานการอัปเดตฟิลด์ใน Word นี่เป็นหนึ่งในโอกาสที่หาได้ยากในการขอบคุณ Microsoft สำหรับการปิดใช้งานคุณลักษณะ DDE ที่เป็นอันตราย

การค้นหาระบบ Windows ที่ไม่ได้รับการติดตั้งในปัจจุบันนั้นยากเพียงใด

สำหรับการทดสอบนี้ ฉันใช้ AWS Workspaces เพื่อเข้าถึงเดสก์ท็อปเสมือน ด้วยวิธีนี้ ฉันได้เครื่องเสมือน MS Office ที่ยังไม่ได้แพตช์ ซึ่งอนุญาตให้ฉันแทรกฟิลด์ DDEAUTO ได้ ฉันไม่สงสัยเลยว่าในทำนองเดียวกัน คุณสามารถค้นหาบริษัทอื่นๆ ที่ยังไม่ได้ติดตั้งแพตช์รักษาความปลอดภัยที่จำเป็นได้

ความลึกลับของวัตถุ

แม้ว่าคุณจะติดตั้งแพตช์นี้แล้ว แต่ก็ยังมีช่องโหว่ด้านความปลอดภัยอื่นๆ ใน MS Office ที่ทำให้แฮกเกอร์ทำสิ่งที่คล้ายกับที่เราทำกับ Word ได้ ในสถานการณ์ต่อไป เราจะได้เรียนรู้ ใช้ Excel เป็นเหยื่อล่อการโจมตีแบบฟิชชิ่งโดยไม่ต้องเขียนโค้ดใดๆ

เพื่อให้เข้าใจสถานการณ์นี้ เรามาจำ Microsoft Component Object Model หรือเรียกสั้นๆ กัน COM (โมเดลวัตถุส่วนประกอบ).

COM มีมาตั้งแต่ปี 1990 และถูกกำหนดให้เป็น "โมเดลส่วนประกอบเชิงวัตถุที่เป็นกลางทางภาษา" โดยยึดตามการเรียกขั้นตอนระยะไกลของ RPC เพื่อความเข้าใจทั่วไปเกี่ยวกับคำศัพท์เฉพาะของ COM โปรดอ่าน โพสต์นี้ บน StackOverflow

โดยพื้นฐานแล้ว คุณสามารถนึกถึงแอปพลิเคชัน COM ว่าเป็นไฟล์ปฏิบัติการ Excel หรือ Word หรือไฟล์ไบนารีอื่นๆ ที่ทำงานอยู่

ปรากฎว่าแอปพลิเคชัน COM สามารถทำงานได้เช่นกัน สถานการณ์ — จาวาสคริปต์หรือ VBScript ในทางเทคนิคเรียกว่า สคริปต์เล็ต. คุณอาจเคยเห็นนามสกุล .sct สำหรับไฟล์ใน Windows ซึ่งเป็นส่วนขยายอย่างเป็นทางการสำหรับสคริปต์เล็ต โดยพื้นฐานแล้ว พวกมันคือโค้ดสคริปต์ที่รวมอยู่ใน wrapper 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 และสคริปต์เล็ตด้วยเช่นกัน

ฉันสามารถส่ง scriptlet ไปยังยูทิลิตี้ Windows ที่เขียนด้วย VBS ที่เรียกว่า pubprn ได้ ตั้งอยู่ในส่วนลึกของ C:Windowssystem32Printing_Admin_Scripts อย่างไรก็ตามมียูทิลิตี้ Windows อื่น ๆ ที่ยอมรับวัตถุเป็นพารามิเตอร์ มาดูตัวอย่างนี้กันก่อน

การผจญภัยของมัลแวร์ที่เข้าใจยาก ตอนที่ XNUMX: ฟิลด์ DDE และเอกสาร Word
เป็นเรื่องปกติที่เชลล์สามารถเปิดใช้งานได้แม้จะใช้สคริปต์การพิมพ์ก็ตาม ไปไมโครซอฟต์!

จากการทดสอบ ฉันได้สร้างสคริปต์เล็ตระยะไกลง่ายๆ ที่เรียกใช้เชลล์และพิมพ์ข้อความตลกๆ “คุณเพิ่งได้รับสคริปต์!” โดยพื้นฐานแล้ว pubprn จะสร้างอ็อบเจ็กต์ scriptlet ขึ้นมา ทำให้โค้ด VBScript เรียกใช้ wrapper ได้ วิธีการนี้ให้ข้อได้เปรียบที่ชัดเจนแก่แฮกเกอร์ที่ต้องการแอบเข้าไปซ่อนในระบบของคุณ

ในโพสต์ถัดไป ผมจะอธิบายว่าแฮกเกอร์สามารถใช้สคริปต์ COM ได้อย่างไรโดยใช้สเปรดชีต Excel

สำหรับการบ้านของคุณลองดู วิดีโอนี้ จาก Derbycon 2016 ซึ่งอธิบายอย่างชัดเจนว่าแฮกเกอร์ใช้สคริปต์เล็ตอย่างไร แล้วก็อ่านด้วย บทความนี้ เกี่ยวกับสคริปต์เล็ตและชื่อเล่นบางประเภท

ที่มา: will.com

เพิ่มความคิดเห็น