Malware Fighting Technique — DNS Sinkhole

1 ในเทคนิคการป้องกัน malware ที่ implement ได้ง่ายและมีประสิทธิผลสูงสำหรับงาน Incident Handling ก็คือเทคนิคที่เรียกว่า DNS Sinkhole

Infection Pattern ของ Malware

โดยส่วนใหญ่แล้วการโจมตีหรือการแพร่ของ malware ไปสู่ endpoint หรือผู้ใช้งานนั้นมักจะเกิดขึ้น 2 steps
1. ขั้นแรกเป็นวิธีการที่เรียกว่า Drive by Downloads: วิธีการนี้นิยมโจมตีผ่าน Browser บนเครื่องของผู้ใช้งาน เช่น Users ไป visit เว็บไซด์หนึ่งซึ่งหน้า page ของเว็บไซด์นั้นมีการเชื่อมต่อไปสู่ Landing page* ของ malware ทำให้ Browser ของผู้ใช้ติดต่อกับ Infected Page ของ malware นั้นๆ โดยทางเทคนิคแล้วถ้าเกิดรูปแบบนี้ขึ้นมาเครื่องผู้ใช้งานมักจะถูกโจมตีผ่าน Exploitation Kits ซึ่งถ้าหากมี Environment ที่ไม่ดีพอเช่น antivirus ไม่สมบูรณ์, OS ไม่มีการ Update Patch และ Application ของเครื่องขาดการ Update มีช่องโหว่อยู่ เครื่องก็จะถูก Compromised
domain_exploit
จาก Graph ด้านบนสังเกตว่า Page ของหน้าที่เป็น Domain .go.th นั้นมี Link ไปหลายๆ Page ที่มี Domain .cc ซึ่งเป็นของหมู่เกาะ Cocos** และ Page เหล่านี้พบว่าเป็น Landing Page ของ Exploitation Kit ที่ชื่อว่า Redkit***

* Landing Page คือ Page ที่ทำการเปิดการเชื่อมต่อหรือมีการ Redirect ไปยัง Page ที่มี Payload อยู่เพื่อทำการ Exploit เครื่องของเหยื่อที่หลงเข้ามา จะมี Logic เช็คว่าเครื่องนั้นๆเหมาะสมกับการถูกโจมตีหรือไม่ด้วย ซึ่งเงื่อนไขนั้นขึ้นอยู่กับจุดประสงค์ของการโจมตี
** .cc เป็น Top Level Country Code ที่ CyberCrime ชอบใช้ อาจจะเป็นเพราะว่าประเทศนี้กฎระเบียบด้าน Security อ่อนและ .cc มันเท่ห์แทนคำว่า Command and Control
*** Redkit เป็นหนึ่งใน Exploitation Kits ตัวแสบที่โจมตี Users ทั่วโลกอยู่ ณ เวลานี้ และมีอีกตัวชื่อว่า Blackhole หน้าเว็บภายในประเทศไทยหลายแหล่งมีไอ้เจ้านี่ฝังอยู่เยอะเลยครับ

2. ขั้นตอนถัดมาเครื่องที่ Infected ทำการติดต่อกับ C2 (Command&Control Server) เพื่อ Maintain Connection: เครื่องที่ทำการติดต่อกับ C2 อาจจะเกิดขึ้นได้หลายกรณีเช่น เป็น zombie ใน BotNet, ติดต่อกับ C2 เพื่อ update configuration, ถูก control จาก Master ผ่าน RAT (Remote Access Trojan), มี Loader (Malware ที่ทำหน้าที่ไป download Malware หรือ Executable file อื่นๆมา install ที่เครื่องเพิ่มเติม) อยู่ในเครื่อง และอื่นๆอีกมากขึ้นอยู่กับเทคนิคของ Malware และ Environment นั้นๆ

จากรูปแบบดังกล่าว Malware มักจะทำการติดต่อโดยอาศัยการอ้างอิงชื่อผ่าน Authoritative DNS (DNS ที่ทำการ set อยู่ที่เครื่องนั่นแหละ) ของเครื่องที่ถูกโจมตี พวกแก๊งค์ CyberCrime มักจะจด Domain อยู่เป็นจำนวนมากและหากเครื่อง Controller ถูกปิดหรือถูก Banned จาก Network พวกเค้าก็แค่ไปเปลี่ยน IP ใหม่เท่านั้น Domain Name ยังคงใช้ชื่อแบบเดิมได้ หรือตั้ง Subdomain Name ใหม่ ผลก็คือเครื่องที่ Infected ก็ยังคงมีการเชื่อมต่อกับ C2 ได้เหมือนเดิม

เทคนิค DNS Sinkhole

Concept ของ DNS Sinkhole ก็คือป้องกันการเชื่อมต่อระหว่างเครื่องที่ Infected และ C2 หรือ Malicious Domain ด้วยการ Blind พวกมันผ่าน Name Resolving ของ DNS

Infrastructure แบบที่ไม่มี DNS Sinkhole
sinkhole1
Infrastructure แบบนี้การป้องกัน Malware ขึ้นอยู่ว่า Policy ของ Firewall เป็นอย่างไร หรือ IPS เห็นหรือไม่ ซึ่งส่วนใหญ่แล้วไม่เพียงพอและ Maintain ยาก บางองค์กรอาจจะมีการติดตั้ง Antivirus Gateway เพิ่มขึ้นมาด้วยก็ดีขึ้นครับ แต่ก็ต้อง Tradeoff กับเรื่อง Performance

Infrastructure แบบมี DNS Sinkhole
sinkhole2
Malicious Domain จะถูก DNS Resolve ไปที่เครื่อง Sinkhole ซึ่งมีการ Run อะไรบางอย่างอยู่แล้วแต่เทคนิค เช่น Run socat, packet analyser, proxy, หรือ honeypot ดักเอาไว้ หากมีการเชื่อมต่อก็ให้ทำการ alert ว่ามาจากเครื่องไหน และติดต่อไปที่ Port อะไร แค่นี้เราก็จะ Containment เครื่องที่ Infected ได้ และทำให้กระบวนการ Incident Handling ของ Admin เร็วขึ้น

ข้อจำกัดของ DNS Sinkhole

1. ต้องมีการ update Malicious Domain สม่ำเสมอ ซึ่งไม่ได้ยากมากครับ เนื่องจากมีคนทำให้อยู่แล้วเช่น
Malware Threat Center
malware-domains.com
Zeus Blocklist
2. ป้องกัน Malware ที่สามารถแก้ไข Host file บนเครื่องที่ Infected ไม่ได้ (ส่วนใหญ่แล้วการโจมตีด้วย Exploitation Kit ใน Stage เบื้องต้น Malware มักจะ Connect ไปภายนอกเพื่อ Update หรือ Download EXE เพิ่มเติมมา Run ก่อนที่มันจะทำอย่างอื่นครับ DNS Sinkhole จึงค่อนข้างใช้ได้ผล โดยส่วนตัวผมไม่ค่อยเจอ Malware ที่แอบเปลี่ยน Host File เท่าไรแล้วครับเนื่องจากมันเปิดเผยมากเกินไป IOC-Indicator of Compromise โจ๋งครึ่มมาก)
3. Firewall ที่ใช้ในองค์กรต้องบังคับไม่ให้ DNS Traffic ของเครื่อง Clients ไป Resolve Name ที่อื่น

Homeuse ทำ DNS Sinkhole ได้มั้ย?

คำตอบคือไม่ต้องทำครับ มีบริการดีๆ และฟรีอยู่ลองใช้ได้เลยเช่น
Norton ConnectSafe
OpenDNS

สำหรับงาน Forensics อยากทำ DNS Sinkhole แบบเร็วๆบนเครื่องที่ Infected เพื่อดูว่า เครื่องนั้น connect ไปที่ไหนบ้าง สามารถทำได้หรือไม่?

ทำได้แน่นอน tool ที่อยากจะแนะนำให้ใช้คือ apatedns ของ Mandiant ที่จะ control DNS Response ตามใจเราได้

สุดท้ายนี้ อยากฝากหน่วยงานของรัฐหรือเจ้าหน้าที่ที่เกี่ยวข้อง ช่วย Control ISP ให้ ISP ทำ DNS Sinkhole บ้างครับ(เราเชื่อมั่นว่ายังไม่ได้ทำ สถิติมันฟ้องครับ) เนื่องจากเราไม่อยากเห็นประเทศไทยของเราเป็นเครือข่าย Botnet ลำดับต้นๆของโลก
sinkhole3

Extract SMTP data from PCAP

ปกติแล้วชีวิตประจำวันสำหรับคนเล่น Internet นั้นคงหนีไม่พ้นการใช้งาน Web Site และ EMail ซึ่งทุกวันนี้ผมเองก็มักได้ยินแต่คนส่วนใหญ่แนะนำว่าเข้าใช้งาน Web ให้ระวังจะ Login ต้องมีดูที่ Address Bar ว่าต้องเป็น HTTPS ก่อนนะ แล้ว EMail ล่ะ ทำไมไม่ค่อยมีคนพูดถึงกันเลย ซึ่งผมคิดว่า EMail ก็ควรระมัดระวังในการใช้ด้วยเหมือนกัน

EMail Security ส่วนมากนั้นมักจะได้ยินเกี่ยวกับการทำ Encryption และ Digital Signature ซึ่งนั่นไม่ค่อยสนุกเท่าไรนัก ดังนั้นเลยคิดว่ามาลองนั่งแกะ SMTP packet ดีกว่า หากเรามี Packet ที่มีข้อมูล SMTP เราจะดูอะไรได้บ้างกันนะ ซึ่งโดยทั่วไปหากดูผ่าน Wireshark ก็คงจะนั่งไล่ Flow กันสนุกเลยทีเดียว

ตัวอย่างที่เอามาวันนี้ยืมมาจาก http://forensicscontest.com/2009/10/10/puzzle-2-ann-skips-bail ซึ่งถ้าเข้า Web ตามไปจะมี File PCAP ให้โหลด (PCAP = Packet Capture) เอามาเปิดดูด้วย WireShark จะพบข้อมูลตามด้านล่าง

รูปตัดมาเฉพาะช่วง Authentication ของ SMTP สิ่งที่เห็นคือช่วงตั้งแต่เริ่ม Authenticate กับ Server จนสำเร็จ ซึ่ง Key หลักของรูปนี้คงจะไม่ยากเท่าไร หากรู้จักกับ SMTP เป็นอย่างดีอยู่แล้ว โดย Password นั้นถูก Encode[1] ในรูปแบบของ Base64  ซึ่งปัจจุบันผมยังเห็น Email Server ตามองค์กรต่างๆหลายที่ยังเปิดใช้งานให้คุยแบบ Plaintext อยู่ซึ่งนั่นถือเป็นความเสี่ยงอย่างร้ายแรงพอสมควร เนื่องจากอาจทำให้ข้อมูลส่วนตัว หรือความลับบริษัทรั่วไหลได้ บางคนอาจคิดว่าถ้าได้ Password แล้วจะทำอะไรได้ หาก Sender ส่งเมล์แล้วไม่ได้ Save ไว้ เข้า Email ไปได้ก็ไม่มีประโชยน์ แต่มันคงจะไม่จริงไปซะหมด เพราะว่าเราสามารถได้ข้อมูลเพิ่มเติมจากอีก เช่น

สามารถอ่านเนื้อ Email ได้จาก WireShark ด้วย

แต่หากมี Attachment ใน Mail ไปด้วย การแยก Attachment นั้นโดยใช้ WireShark คงจะทำได้ยาก เนื่องจากสิ่งที่เห็นใน WireShark นั้นจะเป็น Binary Data แล้วถูกตัดออกเป็นส่วนๆ ตามรูปด้านล่าง ซึ่งคงจะลำบากหากเราต้องมานั่งรวม Data แล้วสร้างเป็น File ขึ้นมาใหม่

ดังนั้นจึงขอแนะนำ Tool ชื่อ “Network Miner” http://sourceforge.net/projects/networkminer/

ที่สามารถช่วยในการวิเคราะห์ Packet ให้เราได้รวมถึงสามารถสร้าง Reconstruct File ให้ได้ด้วย

สุดท้ายแล้วเราก็จะสามารถได้ Attachment มาครอบครอง หากใครสนใจ ลองไปดูโจทย์ที่ผ่านมาแล้วลองทำเพื่อความบันเทิงได้ที่ http://forensicscontest.com/ ครับ

เพิ่มเติม

Encode[1] คือ การแปลงรูปแบบการแสดงผลให้อยู่ในรูปแบบอื่นๆ ซึ่งแตกต่างจาก Encrypt ที่หมายถึงการเข้ารหัส การถอดรหัส (Decrypt) นั้นต้องอาศัย Key ในการถอดรหัส แต่การ Decode นั้นไม่จำเป็นต้องใช้ Key