Lecture 3: Malicious Software TK
Toothless dancing Malicious software หรือ Malware สามารถแบ่งออกเป็น 2 ประเภทคือ
Program fragments : โปรแกรมที่ต้องไปเกาะไฟล์ หรืออีกโปรแกรมนึง Independent self-contained programs : โปรแกแรมที่สามารถรันได้ด้วยตัวเอง โดย Operating system และก็สามารถแบ่งได้ด้วย malware ที่มันจะสร้างตัวเองเพิ่ม และ ไม่สามารถสร้างตัวเองเพิ่ม
Malware terminology คำศัพท์ที่เกี่ยวข้อง Virus : virus จะซ่อนตัวกับโปรแกรม และจะแพร่ตัวเองไปยังโปรแกรมอื่นๆ Worm : เป็นโปรแกรมที่แพร่ และ copy ตัวเองไปคอมเครื่องอื่น Logic bomb : เป็นโปรแกรมที่รอ ให้ Condition บ้างอย่างเกิดขึ้น Trojan horse : เป็นโปรแกรมที่จะมี Function ซ่อนอยู่ Backdoor / Trapdoor : เป็นโปรแกรมไว้ Bypass ระบบ Authentication Mobile code : เป็นโปรแกรม (เช่น Script, macro) ที่จะถูกรันในโปรแกรมต่างเช่น Spreadsheet, Docx, … Downloaders : เป็นโปรแกรมที่จะโหลดไฟล์อื่นๆ Auto-rooter : สามารถเข้าถึงคอมเครื่องอื่นๆ ได้ผ่านอินเตอร์เน็ต Kit (virus generator) : อุปกรณ์ไว้สร้าง Virus แบบอัตโนมัติ Spammer / Flooder : Spam Keyloggers : โปรแกรมจับการพิมพ์คียบอร์ด Rootkit : โปรแกรมที่จะเข้าถึง root-level access หรือ สิทธิ์ที่สูงที่สุดใน Unix system Zombie : 🧟♀️🧟♂️ Spyware : แอบเก็บข้อมูล Adware : แอบใส่โฆษณา Zero day attack : Malware ที่ยังไม่มีการรับมือ (no countermeasure) Multiple-threat malware Multipartie virus : จะสามารถโจมตีไฟล์ได้หลากหลายประเภท, การจัดการ virus (eradication) ก็จำเป็นจะต้องจัดการให้ครบทุกรูปแบบด้วย Blended attack : จะใช้หลายเทคนิคในการโจมตี เพื่อประสิทธิภาพและความเร็วในการทำร้ายล้างสูงสุด Virus โปรแกรมที่จะไปเกาะกับโปรแกรมอื่นๆ โดยที่ Virus จะดัดแปลงโปรแกรมเดิมและซ่อนตัวเองเข้าไป ซึ่ง Virus จะถูกรันเมื่อโปรแกรมนั้น (host program) ถูกรัน จะขึ้นอยู่กับ Operating system และ Hardware Virus จะมีขั้นตอนดังนี้Dormant : รอให้มีเหตุการเกิดขึ้น Propagation : แพร่ตัวเองไปโปรแกรมอื่นๆ / disks อื่นๆ Triggering : เมื่อมี Event บางอย่างเกิดขึ้น Payload (ตัวไวรัส) จะทำงาน Execution : Function จะถูกรัน Virus มีส่วนประกอบดังนี้Infection mechanism : กลไกการติดเชื้อ Trigger : event ที่จะทำให้เกิดการรัน (payload activate) Payload : virus นั้นจะทำอะไรกับระบบ? Virus จะสามารถติดได้ดังนี้One-time execution จะรันเพียงครั้งเดียว, Boot sector viruses, Memory-resident viruses, Application files, Code libraries Virus มันไปเกาะกับโปรแกรมได้ยัง?Appened : Virus ⇄ \rightleftarrows ⇄ Code Surrounded : Virus ⇄ \rightleftarrows ⇄ Code ⇄ \rightleftarrows ⇄ Virus Integrated : Virus จะแทรกแซงตามโค้ด, ซึ่งจำเป็นจะต้องมีความรู้ว่าโปรแกรมนั้นๆ ทำงานอย่างไร จึงจะรู้ว่าใส่ตรงไหนจะดีที่สุด การป้องกันBlock initial infection : ป้องกันแต่แรก Access controls : ควบคุมการเข้าถึงของแต่ละโปรแกรม ป้องกันการแพร่ไปโปรแกรมอื่นๆ แยกสิทธิ์ โครงสร้างของ Virus beginVirus // <..............> = optional ไม่ต้องมีก็ได้
1. Infection section:
<decrypt virus code using key> // ถอดรหัส (ไม่ต้องมีก็ได้)
if spread-condition met then // ถ้าสภาพการแพร่เชื้อเหมาะสม
find targets to be infected // หาเหยื่อ
<mutate virus code for copying> // กลายพันธุ์ (ไม่ต้องมีก็ได้)
<encrypt virus copy with random key> // เข้ารหัสไวรัส (ไม่ต้องมีก็ได้)
add/insert [mutated/encrypted] copy of virus into target // แทรกไวรัสที่กลายพันธุ์/เข้ารหัส ไปที่เหยื่อ
alter target to execute virus when initiated // ให้เหยื่อรันไวรัส
<stealth code to hide modification> // ซ่อนไวรัส
2. Damage section:
if trigger condition is met then // ถ้าสภาพการทำร้ายล้างเหมาะสม
execute damage code // ทำร้ายล้าง
else goto beginning of host program code // ถ้ายังไม่เหมาะสมก็รันโปรแกรมเดิมปกติ
endvirus
<decryption key>
Virus signature เป็น pattern ของ Code หรือข้อมูล ที่จะสามารถบงบอกได้ว่านี้คือ virus ซึ่งจะสามรถไว้ตรวจสอบ และบอกได้ว่านี้คือ virus อะไร Anti-virus จะทำการค้นหา Virus signature ในการตรวจสอบได้ ประเภทของ virus Boot sector infector : จะแทรกตัวเองใน Boot sector File infector : จะแทรกในไฟล์ที่ OS จะรัน Macro virus : จะแทรกตัวในไฟล์ Macro code ต่างๆ เช่น Spreadsheet, Docx, … Encrypted virus : ไวรัสที่เข้ารหัส Stealth virus : ไวรัสจะซ่อนตัวจาก Antivirus ซึ่งจะซ่อนทั้งหมดเลย ไม่ใช่แค่ใน Payload Polymorphic virus : ไวรัสที่จะมีการกลายพันธุ์ทุกครั้งที่มีการแพร่ ซึ่งการตรวจสอบด้วยวิธี Virus signature จะไม่สามารถใช้ได้ Metamorphic virus : ไวรัสที่จะเปลี่ยนรูปร่าง และ การทำงานของมัน เพื่อให้ยากต่อการตรวจสอบมากขึ้น การรับมือกับ Virus Prevention : ยากแต่ดีที่สุด 🙏 Detection Scanners ตรวจสอบด้วย Fixed signatures (static viruses) Heuristic scanning techniques จะสามารถตรวจสอบ Polymorphic ไวรัสได้ ด้วยการตรวจสอบโค้ดที่น่าจะมีการทำงานที่ผิดปกติ เช่น instruction jump ที่แปลกๆ หรือ พยายามที่จะอ่าน System file Activity monitoring : ตั้งพื้นที่ในหน่วยความจำ เพื่อที่จะรอเหตุการแปลกๆ ขึ้น Integrity checking : checksums หรือ hash values Identification Removal (disinfection) Advanced anti-virus techniques Generic decryption : สร้าง CPU emulator ขึ้นมาเพื่อรัน Virus และตรวจสอบ Virus signature บ่อยๆ เพื่อรอ Virus decrypt ใน CPU emulator Digital immune system (IBM) : ทำ server มารับหน้าที่รันโปรแกรมที่น่าสงสัยบน Sandbox ก่อนที่จะส่งไปยังคอมพิวเตอร์ Worms 🐛 โปรแกรมที่จะแพร่ตัวเองไปยังคอมเครื่องอื่นๆ ผ่าน Internet เช่น Email, Remote execution, Remote login มี 4 phases เหมือนกับ VirusDormant , Propagation , Triggering , Execution การรับมือกับ Worm แบบเดียวกับ Anti-virus Signature-based worm scan filtering Filter-based worm containment : ดูที่ worm content มากกว่าที่ signature Payload-classification-based worm containment : ดูจาก Packets ว่ามีความผิดปกติอะไรหรือป่าว? Threshold random walk scan detection Rate limiting & rate halting : ปิดการเชื่อมต่อทันที หากพบว่ามีการเชื่อมต่อ เข้าหรือออก ที่เยอะผิดปกติ Proactive worm containment : คล้ายๆ กับ Rate limiting Network based worm defense : คล้ายทั้ง Proactive และ Rate limiting แต่จะการส่งไปรันบน Honeypot หรือ Sandbox เพื่อตรวจสอบ และเมื่อสามารถระบุ Worm ได้แล้ว ก็จะสามารถแก้ไข และป้องกันได้ Bots 🤖 โปรแกรมที่จะควบคุม Computer เพื่อที่จะทำการโจมตีที่จะยากมากๆ ที่การตรวจจับ สามารถนำไปโจมตีได้หลากหลายแบบDistributed denial-of-service attacks Spamming Sniffing traffic Keylogging Spraeding new malware Installing adavertisement add-ins and browser helper objects (BHOs) Attacking IRC chat networks Manipulationg online polls/games Rootkits โปรแกรมที่จะเข้าถึง Root-access ของระบบ (สิทธิ์ที่สูงที่สุด) อาจจะเป็นPersistent (คงอยู่): จะทำงานทุกครั้งที่ระบบบูท, ซึ่งมักจะซ่อนตัวเองอยู่ใน Registry หรือ System file และแก้ไขให้ตัวเองถูกรัน โดยไม่ต้องผ่าน user Memory-based : ไม่คงอยู่ หากเมื่อ Reboot มันก็จะหายไป User-mode : ดักจับการเรียก API และแก้ไขผลลัทพ์ Kernel-mode : ดักจับ API ที่อยู่ใน Kernel mode และก็ยังสามารถลบตัวเอง จากรายชื่อที่ Process กำลังรันอยู่ได้อีกด้วย อาจจะเผลอติดตั้งโดย user ผ่าน Torjan horse หรือ ผู้บุกรุกระบบ Ransomware
WCry Ransomware เป็น malware ที่จะเข้ารหัสไฟล์ของเหยื่อ หรือ ล้อคคอมของเหยื่อไม่ให้ใช้งาน เพื่อเรียกร้องค่าไถ หลังจากได้ค่าไถ ก็จะได้รับ Decryption key เพื่อมาปลดล็อคข้อมูลหรือระบบ สามารถติดผ่านPhishing emails เข้าเว็บ Corrupted โหลดไฟล์ที่ Infected ช่องโหว่ใน System หรือ Network Remote Desktop Protocol (RDP) attack หลังจากที่โดนโจมตีด้วย ransomware การจ่ายเงินจะไม่ได้การันตีว่าจะได้ไฟล์คืน! แถมยังจะช่วยให้ส่งเสริมให้โจมตีต่ออีก Ransomware สามารถแบ่งออกได้ 4 แบบEncryption : เข้ารหัสไฟล์ จะทำให้ไม่สามารถเปิดไฟล์ได้ Lockers : ล้อคคอมไม่ให้ใช้งาน Scareware : เด้ง Pop-ups ต่างๆ เผื่อให้กลัวและซื้อโปรแกรมเรื่อยเปื่อย Doxware/Leakware : ขู่ที่จะเปอดเผยข้อมูล / ไฟล์ส่วนตัว หรือข้อมูลของบริษัท วิธีการป้องกันBackup ข้อมูล Update ระบบบ่อยๆ ติดตั้ง Antivirus และ Firewall Network segmentation เพื่อลดการแพร่กระจาย Email protection Application whitelist Endpoint security Limit user access privileges ทำ Sucurity testing บ่อยๆ ให้คำปรึกษา / อบรมด้าน Security awareness