Windows Error Reporting (CVE-2019–0863)

[Thai]Windows Error Reporting (CVE-2019–0863)

นักวิจัยด้านความมั่นคงปลอดภัยในนามแฝง ‘SandboxEscaper’ ได้เปิดเผยช่องโหว่ Zero-day ที่เกิดบน Windows Error Reporting (WER) ที่นำไปสู่การยกระดับสิทธิ์หากผู้โจมตีใช้ช่องโหว่ได้สำเร็จจะสามารถลอบรันโค้ดได้ในระดับ Kernel หรือตัวควบคุมและจัดการทรัพยากรต่างๆ ของระบบ และอาจนำไปสู่การติดตั้งโปรแกรม ดู เปลี่ยน ลบข้อมูล หรือแม้กระทั่งสร้างบัญชีระดับ Admin (ผู้ดูแล) ขึ้นมาใหม่ได้

Windows Error Reporting (WER) เป็นตัวจัดเก็บรายงานข้อผิดพลาด เมื่อโปรแกรมหรือระบบของ Windows 10 เกิดปัญหาขึ้น โดยที่จะทำการส่งข้อมูลที่เกิดปัญหาไปยัง Microsoft

ตัวอย่างการทำงานของ Windows Error Reporting (WER)

เมื่อ Windows พบปัญหาระบบล่มหรือล้มเหลว ระบบจะทำการสร้างไฟล์ Report.wer INI และจัดเก็บรายงานข้อผิดพลาดไว้ภายใต้ไดเรกทอรี ReportQueue ( C: \ ProgramData \ Microsoft \ Windows \ WER \ ReportQueue ) ซึ่งแต่ละรายงานจะได้รับไดเรกทอรีย่อยของตนเองและผู้ใช้ทุกคนมีสิทธิ์เข้าถึงไฟล์และสามารถเขียนไฟล์ได้ตามภาพประกอบที่ 1

ภาพที่ 1 Windows Error Reporting queue directory
ภาพที่ 2 ตัวอย่างไฟล์ Report.wer

หลังจากสร้างรายงานแล้วระบบจะส่งไปยัง Microsoft เพื่อการวิเคราะห์เพิ่มเติม หลังจากนั้นระบบจะมีการตอบสนองได้ในหลายวิธี หนึ่งในนั้นคือการเรียกใช้ Windows Error Reporting\QueueReporting ซึ่งอยู่ใน Task Schedule และสิ่งที่น่าสนใจของมันคือ

1. สามารถทำงานด้วยสิทธิ์ระบบตามที่กำหนดไว้ในส่วน ‘ตัวเลือกความปลอดภัย’

2. สามารถเรียกใช้ได้ตามความต้องการ

3. สามารถเรียกใช้จากคำสั่ง — wermgr.exe –upload

ภาพที่ 3 Windows Error Reporting Task Schedule

หลังจากเรียกใช้งานแล้ว wermgr.exe จะโต้ตอบกับไฟล์และไดเรกทอรีรายงานที่รอดำเนินการอยู่ หลังจากนั้นจะทำการอ่านไฟล์และคัดลอกไฟล์ไปยังไดเรกทอรีอื่น จนถึงตอนนี้ทุกคนยังมีสิทธิในการเข้าถึงและเขียนไฟล์ จากภาพที่ 1 จึงต้องดำเนินการอย่างระมัดระวังเพราะอาจทำให้เกิดช่องโหว่ด้านความปลอดภัยที่ร้ายแรง

ภาพที่ 4 wermgr.exe

wermgr.exe คือไฟล์ระบบปฏิบัติการของ Windows Error Reporting Manager เป็นกระบวนการที่รับผิดชอบในการจัดการข้อผิดพลาดที่เกิดขึ้นภายในระบบปฏิบัติการ Windows โดยวัตถุประสงค์หลักของมันคือการส่งรายงานข้อผิดพลาดและข้อผิดพลาดเพื่อหาว่าทำไมโปรแกรมของคุณล้มเหลว

Windows รองรับการเชื่อมโยงระบบไฟล์ประเภทต่างๆ ทำให้สามารถย้ายไฟล์และไดเรกทอรีไปยังไฟล์และไดเรกทอรีเป้าหมายอื่นๆ ได้ค่อนข้างง่าย เมื่อมีการเชื่อมโยงไฟล์ต่างๆ จะถูกสแกนและวิเคราะห์อีกครั้ง แต่ครั้งนี้ไฟล์จะถูกเชื่อมไปยังเส้นทางเป้าหมายตามที่แฮกเกอร์ต้องการด้วย ซึ่งเกิดจากการใช้ Hardlink และจุดเชื่อมต่อที่ไม่เหมาะสม เนื่องจากผู้ใช้สามารถเชื่อมโยงไปยังไฟล์หรือไดเรกทอรีที่พวกเขาไม่มีสิทธิ์ในการเขียนตั้งแต่แรก

ตัวอย่างด้านล่างนี้แสดงให้เห็นว่าผู้ใช้ที่ไม่มีสิทธิ์ในการเขียน kernel32.dll นั้นสามารถสร้างการเชื่อมโยงระหว่าง C: \ temp \ Dir \ x.dll และ C: \ Windows \ System32 \ kernel32.dll โดยจะสามารถเปลี่ยนเส้นทางไปยังส่วนอื่นๆ ตามที่แฮกเกอร์ต้องการเพื่อใช้สำหรับ อ่าน เขียน หรือลบไฟล์ที่สำคัญได้

ภาพที่ 5 การสร้าง hard link ไปยังไฟล์ที่ผู้ใช้ไม่มีสิทธ์ในการเขียน

CreateHardlink คือการเชื่อมต่อแบบใช้ I-node เดียวกับไฟล์ต้นฉบับ เหมือนกับมีการสร้างไฟล์ใหม่ แต่ยังคงใช้ค่า I-node เดิม หากแก้ไขไฟล์ใดไฟล์หนึ่งก็จะมีผลกระทบส่งถึงไฟล์ที่เชื่อมอยู่เช่นกัน เพราะข้อมูลถูกเก็บที่เดียวกัน แต่ข้อมูลต้องอยู่ที่ partition เดียวกัน

CreateMountpoint คือ การสร้างไดเรกทอรีที่ต้องการเอาไฟล์ที่จะเมาท์มาแสดง

หน้าที่หลักของ kernel32.dll คือการจัดการหน่วยความจำระบบการดำเนินงานอินพุต/เอาต์พุตและการขัดจังหวะ ไฟล์นี้ถูกโหลดลงในพื้นที่หน่วยความจำเมื่อ Windows เริ่มต้นทำงาน เพื่อป้องกันไม่ให้แอปพลิเคชันอื่นเข้ามาครอบครองพื้นที่เกินความจำเป็น

ภาพที่ 6 kernel32.dll permission

โดยปกติแล้ว kernel32.dll จะถูก run ด้วยสิทธิ์ User ไม่ได้ เนื่องจากเป็นไฟล์ระบบของ Windows จึงจะถูกกำหนดสิทธิ์แก้ไขให้เฉพาะ Trusted Installer เท่านั้นตามภาพประกอบที่ 6 ซึ่งถ้าหากคุณพยายามทำการเปลี่ยนชื่อหรือลบไฟล์ที่ถูกป้องกันโดยระบบ (System protected) การทำงานจะล้มเหลวโดยได้รับการแจ้งเตือน File Access Denied

ขั้นตอนการโจมตี

1. wermgr.exe เรียกใช้ฟังก์ชัน wermgr! DoCoreUpload ซึ่งจะแสดงรายการไดเรกทอรีย่อยทั้งหมดภายใต้ ReportQueue และส่งไปยัง Microsoft

2. เมื่อ wermgr.exe ตรวจพบไฟล์ Report.wer INI ที่เสียหายมันจะลบออก แต่ก่อนจะทำการลบนั้นผู้โจมตีต้องทำการเปลี่ยนแปลงคุณสมบัติของ DACL (Discretionary access control list) หรือสิทธิ์การอนุญาตในการเข้าถึงไฟล์ โดยเพิ่มสิทธิ์ผู้ดูแลระบบเพื่อลบไฟล์นี้

3. แฮกเกอร์จะใช้ประโยชน์จากช่องโหว่ที่เกิดขึ้นระหว่างที่ wermgr.exe อ่าน DACL ของไฟล์และเวลาที่ใช้ในการเพิ่มสิทธิ์ในการลบไฟล์ ถ้าแฮกเกอร์สร้างลิงค์ระหว่างไฟล์ดังกล่าวไปยังไฟล์อื่นๆ ในระบบจะทำให้หลังจากที่อ่าน DACL แล้วจะทำให้ wermgr.exe แก้ไขตัวบอกเกี่ยวกับความปลอดภัยของไฟล์อื่นๆ ไปด้วยอย่างไม่ถูกต้อง

แฮกเกอร์จะใช้ประโยชน์จากความสามารถของ Windows Error Reporting (WER) ในการเปลี่ยนสิทธิ์ไฟล์เพื่อกำหนดให้ตัวเองมีสิทธิ์ในการอ่าน เขียน แก้ไขและลบไฟล์อื่นๆ โดยใช้การเชื่อมโยงไฟล์ในไดเรกทอรีสำหรับรายงานข้อผิดพลาดไปยังไฟล์เป้าหมายต่างๆ บนคอมพิวเตอร์ ถึงแม้จะเป็นเรื่องยากมาก แต่แฮกเกอร์ก็จะพยายามทำซ้ำแล้วซ้ำอีกจนกว่าจะประสบความสำเร็จ แฮกเกอร์มีแนวโน้มจะเล็งไปที่ไฟล์ของระบบปฏิบัติการ (DLLs, EXEs หรือสคริปต์) และแทนที่ด้วยเพย์โหลดที่เป็นอันตรายเพื่อดำเนินการในภายหลังด้วยสิทธิ์ของผู้ดูแลระบบ

Microsoft Windows Version ที่ได้รับผลกระทบมีดังนี้

1. Windows 7

2. Windows 8.1

3. Windows Rt 8.1

4. Windows 10 x86 และ x64

5. Windows Server 2008

6. Windows Server 2012

7. Windows Server 2016

8. Windows Server 2019

วิธีแก้ไขเพื่อลดความเสี่ยงในการเกิดช่องโหว่

1. ติดตั้ง Security update สำหรับ Microsoft Windows ตาม version ของผู้ใช้งาน

2. บล็อกการเข้าถึงจากภายนอกขอบเขตเครือข่ายหากไม่จำเป็นต้องใช้การเข้าถึงจากภายนอก

3. คัดกรองการเข้าถึงคอมพิวเตอร์หรือจำกัดการเข้าถึงเฉพาะคอมพิวเตอร์และเครือข่ายที่เชื่อถือได้

4. เรียกใช้ซอฟแวร์ทั้งหมดด้วยสิทธิ์การเข้าถึงขั้นต่ำ

5. ปรับใช้ NIDS (Network Intrusion Detection System) หรือระบบตรวจจับการบุกรุกบนเครือข่าย สำหรับตรวจสอบการรับ-ส่งข้อมูลบนเครือข่ายเพื่อหาพฤติกรรมที่ผิดปกติและอาจเป็นอันตราย

6. ตรวจสอบสอบการเข้าถึงข้อมูลต่างๆ รวมไปถึงไม่เข้า links จากแหล่งที่มาที่ไม่รู้จักหรือไม่น่าเชื่อถือ

Reference

1 https://unit42.paloaltonetworks.com/tale-of-a-windows-error-reporting-zero-day-cve-2019-0863/?fbclid=IwAR3u7GxQTWbB0F_8RiPbLLhX8vtq5fyaCKkWofQVGdURtwGCF1KjEgO3eiY

2 https://docs.microsoft.com/en-us/windows/deployment/upgrade/windows-error-reporting

3 https://securityboulevard.com/2019/05/sandboxescaper-drops-four-windows-zero-days/

4 https://th.nex-software.com/what-is-kernel32-dll

5 http://www.saranitus.com/2016/06/how-to-take-ownership-and-change-permissions-of-file-or-folder-in-windows.html

6 https://www.jobpub.com/articles/showarticle.asp?id=89

WRITTEN BY

Attapon Wateerattanapanich

Leave a Reply