DGA คืออะไรและจะตรวจจับได้อย่างไร?

Domain Generation Algorithms (DGA) เป็นคลาสของอัลกอริทึมที่สร้างชื่อโดเมนจำนวนมากเป็นระยะ ๆ และแบบไดนามิก โดยปกติโดเมนจะถูกใช้โดยมัลแวร์และบ็อตเน็ตเป็นจุดนัดพบเพื่ออำนวยความสะดวกในการติดต่อกลับไปยังเซิร์ฟเวอร์ Command & Control ของนักแสดงที่ประสงค์ร้าย DGA ช่วยให้มัลแวร์สร้างโดเมนได้หลายหมื่นโดเมนต่อวันซึ่งส่วนใหญ่ไม่ได้ลงทะเบียน โดเมนที่ไม่ได้ลงทะเบียนจำนวนมหาศาลถูกใช้เพื่อปลอมแปลงโดเมนที่ลงทะเบียนทำให้บ็อตเน็ตที่ติดไวรัสสามารถหลบเลี่ยงการตรวจจับและยับยั้งโดยระบบตรวจจับความปลอดภัยตามลายเซ็นหรือชื่อเสียง IP

ตระกูลมัลแวร์ที่รู้จักกันเป็นกลุ่มแรกที่ใช้ DGA คือ Kraken ในปี 2008 ต่อมาในปีนั้นหนอน Conflicker ได้ผลักดันกลยุทธ์ DGA ให้กลายเป็นเรื่องอื้อฉาว แม้จะผ่านไป 10 ปีแล้ว แต่ก็ยังสามารถพบ Conflicker หรือตัวแปรอย่างใดอย่างหนึ่งในเครือข่ายบางเครือข่ายในปัจจุบัน

ควบคู่ไปกับการแพร่กระจายของมัลแวร์ที่เพิ่มขึ้นการใช้งาน DGA จึงแพร่หลายมากขึ้น

วัตถุประสงค์ของการตรวจจับ DGA

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

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

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

ตัวอย่างเช่น DGA อาจสร้างโดเมนได้ 1000 โดเมนจาก xyzwer1, xyzwer2 … ถึง xyzwer1000 แฮ็กเกอร์จำเป็นต้องลงทะเบียนโดเมนเดียวเท่านั้นเช่น xyzwer500 ไม่ใช่อีก 999 โดเมน หากสามารถระบุโดเมนที่ลงทะเบียนและ IP ที่เกี่ยวข้องได้ข้อมูลสามารถใช้เพื่อปิดกั้นช่องทางการสื่อสารระหว่างระบบเป้าหมายและเซิร์ฟเวอร์ Command & Control นอกจากนี้ Intel ควรจะแพร่กระจายไปยังระบบป้องกันหรือระบบตรวจจับอื่น ๆ ทั้งหมดเพื่อขัดขวางการโทรกลับไปยังเซิร์ฟเวอร์นั้นจากระบบใด ๆ ในเครือข่าย

วัตถุประสงค์สุดท้ายที่สำคัญที่สุดของระบบตรวจจับ DGA คือการตรวจสอบว่าการโทรกลับประสบความสำเร็จกับโดเมนที่ลงทะเบียนหรือไม่และมีการติดต่อระหว่างระบบที่ติดไวรัสและเซิร์ฟเวอร์ Command & Control หรือไม่ หากตรวจพบกิจกรรมดังกล่าวอาจเกิดความเสียหายบางส่วนไปแล้ว บางทีมัลแวร์ในเครือข่ายของคุณได้รับการอัปเดตหรือมีการติดตั้งมัลแวร์ใหม่ ข้อมูลที่ละเอียดอ่อนอาจถูกลบออก

DGA Detection ทำงานอย่างไร?

กิจกรรม DGA ถูกตรวจพบโดยการจับและวิเคราะห์แพ็กเก็ตเครือข่ายโดยปกติจะอยู่ในห้าขั้นตอนทั่วไป

ขั้นตอนที่ 1 - ตรวจหาแอปพลิเคชัน DNS
การตรวจจับเริ่มต้นผ่านคำขอ DNS และ / หรือข้อความตอบกลับ DNS เป็นโปรโตคอลพื้นฐานของอินเทอร์เน็ตและไฟร์วอลล์ส่วนใหญ่มีนโยบายที่จะอนุญาตการรับส่งข้อมูล DNS ขาออกบนพอร์ตที่สงวนไว้ 53 อย่างไรก็ตามแฮ็กเกอร์อาจใช้ประโยชน์จากพอร์ต 53 เพื่อส่งการรับส่งข้อมูลโดยไม่ยึดติดกับรูปแบบข้อความ DNS มาตรฐาน การโจมตีนี้เรียกว่า DNS tunneling ขอแนะนำให้ใช้ Deep Packet Inspection (DPI) Engine เพื่อระบุแอปพลิเคชัน DNS อย่างแม่นยำยิ่งขึ้น

ขั้นตอนที่ 2 - แยกชื่อโดเมน
เมื่อระบุแอปพลิเคชันเครือข่ายเป็น DNS แล้วจะต้องแยกชื่อโดเมนในแบบสอบถาม DNS และข้อความตอบกลับ ในการแยกชื่อโดเมนที่ถูกต้องเนื้อหาของข้อความ DNS จะต้องได้รับการแยกวิเคราะห์อย่างรอบคอบและต้องใช้เอ็นจิ้น DPI เพื่อทำงานนี้

ขั้นตอนที่ 3 - ตรวจหา DGA ใด ๆ
ต้องดำเนินการวิเคราะห์กับโดเมนที่แยกจากข้อความ DNS เพื่อตรวจสอบว่าเป็น DGA หรือไม่ นี่อาจเป็นขั้นตอนที่ซับซ้อนที่สุด ความท้าทายคือการลดทั้งผลบวกปลอมและเชิงลบเท็จ กลไกการตรวจจับมีการพัฒนาอย่างมากในช่วง 10 ปีที่ผ่านมา
กลไกบางอย่างขึ้นอยู่กับ Shannon Entropy ที่ค่อนข้างง่าย
https://www.splunk.com/blog/2015/10/01/random-words-on-entropy-and-dns.html
กลไกบางอย่างขึ้นอยู่กับ Ngrams ที่ซับซ้อนมากขึ้นตามที่ Fyodor นำเสนอในการประชุม Hitb
เมื่อไม่นานมานี้การเรียนรู้ของเครื่องได้รับความนิยมจึงนำวิธีการดังกล่าวไปใช้กับการตรวจจับ DGA ด้วย การเรียนรู้ของเครื่องสามารถรวมคุณสมบัติของ Ngrams, Shannon Entropy ตลอดจนความยาวของชื่อโดเมนเพื่อมีอิทธิพลต่อการตัดสินใจ มีการทดลองใช้โมเดลแมชชีนเลิร์นนิงหลายรุ่น มีบล็อกโพสต์ที่ดีมากโดย Jay Jacobs ในปี 2014 อธิบายกระบวนการนี้
นี่คือเครื่องตรวจจับ DGA แบบโอเพ่นซอร์สที่ใช้ Machine Learning กับ Markov Chain:
https://github.com/exp0se/dga_detector

ขั้นตอนที่ 4 - ตรวจหาโดเมน DGA ที่ลงทะเบียน
ในการตรวจพบว่ามีการลงทะเบียนชื่อโดเมน DGA หรือไม่จำเป็นต้องตรวจสอบการตอบสนองของ DNS การติดตามคำขอ DNS เพียงอย่างเดียวไม่เพียงพอ - ระบบตรวจจับควรติดตามธุรกรรมทั้งหมดเพื่ออำนวยความสะดวกในการเชื่อมโยงระหว่างข้อมูลต่างๆ

ขั้นตอนที่ 5 - ตรวจจับการรับส่งข้อมูลไปยังโดเมน DGA ที่ลงทะเบียน
เมื่อระบบตรวจจับ DGA ที่มีอยู่ส่วนใหญ่มุ่งเน้นไปที่การตรวจสอบว่าชื่อโดเมนเป็นโดเมน DGA หรือไม่พวกเขามักจะลืมคำถามสุดท้ายคำถามที่สำคัญที่สุดคือมีการรับส่งข้อมูลใด ๆ ที่ถูกส่งไปยังโดเมน DGA ที่ลงทะเบียนหรือไม่ ในการตรวจจับสิ่งนี้อย่างทันท่วงทีการตรวจจับโดเมน DGA ต้องควบคู่ไปกับการตรวจสอบการรับส่งข้อมูลบนเครือข่ายอย่างแน่นหนา ผลลัพธ์จะต้องสะท้อนกลับไปที่เครื่องมือตรวจสอบสภาพการจราจรทันทีก่อนที่จะเกิดความเสียหายใด ๆ

ขั้นตอนที่ 6 - การบล็อกการรับส่งข้อมูลไปยังโดเมน DGA ที่ลงทะเบียน
แม้ว่าในทางเทคนิคจะไม่ได้เป็นส่วนหนึ่งของการตรวจจับ แต่หากมีการผสานรวมกับระบบป้องกันเช่น Firewall หรือ IPS ควรใส่กฎทันทีเพื่อบล็อกการรับส่งข้อมูลทั้งหมดไปยังโดเมนที่ลงทะเบียน

ระบบตรวจจับ DGA ที่ยอดเยี่ยมควรดำเนินการทั้ง 5 ขั้นตอน ระบบตรวจจับ DGA ที่ยอดเยี่ยมควรมีขั้นตอนที่ 6 ด้วยน่าเสียดายที่ทุกวันนี้ระบบตรวจจับ DGA ส่วนใหญ่หยุดอยู่ที่ขั้นตอนที่ 3 หรือขั้นตอนที่ 4

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

แหล่งข้อมูล

ที่เก็บใน Github โดย Andrey Abakumove มีอัลกอริทึมสำหรับสร้างชื่อโดเมนตลอดจนพจนานุกรมของชื่อโดเมนที่เป็นอันตราย

เลื่อนไปที่ด้านบน