ช่องทางเริ่มต้นคือช่องโหว่ SQL injection ในแอปพลิเคชัน Java ที่รันบน Apache Tomcat ที่เปิดให้บริการสู่สาธารณะ ฟีเจอร์ค้นหาอัตโนมัติ (autocomplete) ของแอปพลิเคชันไม่สามารถตรวจสอบอินพุตจากผู้ใช้ได้อย่างถูกต้อง ทำให้ผู้โจมตีสามารถฉีดคำสั่ง SQL ผ่านการเชื่อมต่อ JDBC ไปยังฐานข้อมูล Oracle ได้ นักวิจัยของ Huntress ระบุว่า นี่ไม่ใช่ช่องโหว่ชนิดใหม่ — การโจมตีแบบ SQL injection มีมานานหลายทศวรรษแล้ว และมักเกิดจากการจัดการอินพุตของผู้ใช้ที่ส่งไปยังเซิร์ฟเวอร์ SQL ที่ไม่ถูกต้อง ความล้มเหลวของแอปพลิเคชันในการกรองช่องค้นหาง่าย ๆ ก็เพียงพอที่จะเริ่มต้นห่วงโซ่การบุกรุก
แทนที่จะใช้ไฟล์มัลแวร์แบบดั้งเดิมบนเซิร์ฟเวอร์ที่ถูกบุกรุก ผู้โจมตีใช้ Java Virtual Machine (JVM) ที่ติดตั้งมาพร้อมกับ Oracle และคำสั่ง CREATE JAVA SOURCE เพื่อคอมไพล์และจัดเก็บชุดเครื่องมือหลังการแสวงหาประโยชน์ทั้งหมดเป็นวัตถุ Java schema ภายในฐานข้อมูล Oracle วิธีนี้ทำให้เครื่องมือมองไม่เห็นระบบป้องกันระดับ OS ทั่วไป เนื่องจากเครื่องมือ EDR และ Antivirus มุ่งเน้นไปที่กระบวนการ, ไบนารี และไฟล์บนระบบปฏิบัติการ — โดยทั่วไปแล้วจะไม่ตรวจสอบคลาส Java และ PL/SQL wrapper ที่เก็บไว้ภายใน Oracle
ชุดเครื่องมือ khunt ประกอบด้วยส่วนประกอบเหล่านี้ ซึ่งแต่ละส่วนจะถูกจัดเก็บเป็นวัตถุฐานข้อมูล:
| ส่วนประกอบ | หน้าที่ |
|---|---|
| KhuntCmd | โหลด cmd.exe และเรียกใช้คำสั่ง OS ตามอำเภอใจโดยฝังไว้ในคำสั่ง SQL ที่ส่งไปยังฐานข้อมูล |
| KhuntHash | ดึงชื่อผู้ใช้และแฮชรหัสผ่านจากตารางผู้ใช้ภายในของ Oracle และบันทึกลงในไฟล์ |
| KhuntFS / KhuntFS2 | โปรแกรมสำรวจไฟล์สำหรับแสดงรายการ, อ่าน, ค้นหา และตรวจสอบขนาดไฟล์บนระบบที่ถูกบุกรุก |
| KhuntT | เครื่องมือ "ping" อย่างง่ายเพื่อยืนยันว่าติดตั้งชุดเครื่องมือแล้วและสามารถเข้าถึงได้ก่อนดำเนินการต่อ |
| KhuntUnzip | ยูทิลิตี้สำหรับแตกไฟล์ zip |
| khunt_ PL/SQL wrappers* | โพรซีเดอร์ PL/SQL ที่ใช้เรียกเมธอด Java ที่อยู่เบื้องหลัง |
ผู้โจมตีไม่ได้หยุดแค่การเข้าถึงระดับฐานข้อมูล พวกเขาใช้ชุดเครื่องมือ khunt เพื่อขยายขอบเขตจากชั้นฐานข้อมูลไปยังระบบปฏิบัติการ Windows ที่อยู่เบื้องหลังในหลายขั้นตอน:
cmd.exe /c whoami ซึ่งยืนยันว่าพวกเขากำลังทำงานด้วยสิทธิ์ SYSTEM บนเซิร์ฟเวอร์ Windows ทำให้เกิดการเรียกใช้โค้ดระยะไกล (RCE) จากฐานข้อมูลไปยัง OS reg.exe และคัดลอกรีจิสทรี hive ของ SECURITY และ SYSTEM โดยบันทึกเป็น khuntSECURITY.hiv และ khuntSYSTEM.hiv ใน F:\Oracle\ tasklist /svc และบันทึกผลลัพธ์เป็น khunttasks.txt esentutl.exe เพื่อคัดลอก SAM และ SECURITY hive ชุดที่สอง โดยบันทึกเป็น khuntSAM.hiv และ khunt_SECURITY.hiv รีจิสทรี hive ที่ถูกส่งออกไปสามารถใช้แบบออฟไลน์เพื่อดึงและถอดรหัสแฮชรหัสผ่านสำหรับบัญชีท้องถิ่นทั้งหมดบนระบบ
การสืบสวนของ Huntress เผยให้เห็นจุดบอดที่สำคัญหลายประการที่ทำให้การโจมตีครั้งนี้สำเร็จและหลบเลี่ยงการตรวจจับได้:
จากการโจมตีครั้งนี้ Huntress แนะนำมาตรการบรรเทาผลกระทบหลายประการ :
การโจมตีครั้งนี้เป็นเครื่องเตือนใจที่ชัดเจนว่าเอ็นจิ้นฐานข้อมูลที่มีสภาพแวดล้อมการเขียนโปรแกรมในตัว (เช่น Oracle JVM) สามารถกลายเป็นแพลตฟอร์มการโจมตีที่แฝงตัวได้ เมื่อรวมกับฟิลด์อินพุตที่ไม่ผ่านการตรวจสอบแม้แต่ฟิลด์เดียว ทีมรักษาความปลอดภัยต้องขยายการตรวจสอบให้เกินกว่าระบบปฏิบัติการเพื่อรวมชั้นวัตถุฐานข้อมูลด้วย