7 วิธีที่ผู้คุกคามส่งมัลแวร์ ใช้โจมตี macOS ในองค์กร
การตรวจสอบมัลแวร์ macOS ในปี 2022 ของเราเผยให้เห็นว่าภัยคุกคามที่ธุรกิจและผู้ใช้ที่ใช้ macOS endpoints เผชิญอยู่ รวมถึงการเพิ่มขึ้นของ backdoor และกรอบการโจมตี cross-platform ภัยคุกคามอย่าง CrateDepression และ PyMafka ใช้การพิมพ์โจมตีที่เก็บข้อมูลแพ็คเกจเพื่อแพร่เชื้อใส่ผู้ใช้ ในขณะที่ ChromeLoader และอื่น ๆ เช่น oRAT ใช้ประโยชน์จากการโฆษณาที่ไม่เหมาะสมเป็นสื่อในการแพร่ระบาด
อย่างไรก็ตาม ยังไม่ทราบเวกเตอร์การติดไวรัสที่ใช้โดยภัยคุกคามอื่นๆ ของ macOS SysJoker, OSX.Gimmick, CloudMensis, Alchimist และ Operation In(ter)ception ที่มาจาก Lazarus เป็นเพียงบางส่วนที่นักวิจัยยังไม่ทราบว่าเหยื่อถูกโจมตีอย่างไรในตอนแรก ในกรณีเหล่านี้และกรณีอื่นๆ นักวิจัยพบมัลแวร์ทั้งจากการวิเคราะห์หลังการติดหรือโดยการค้นพบตัวอย่างในคลังเก็บมัลแวร์ เช่น VirusTotal ซึ่งเส้นทางการเคลื่อนที่ของตัวอย่างจากผู้คุกคามผ่านเหยื่อไปจนถึงการค้นพบนั้นส่วนใหญ่ไม่สามารถติดตามได้
แม้ว่าช่องโหว่นี้จะป้องกันไม่ให้เราสร้างภาพรวมของแคมเปญการโจมตีใด ๆ ก็ตาม แต่โชคดีที่เราในฐานะผู้ป้องกันสามารถระบุวิธีที่เป็นไปได้ที่มัลแวร์สามารถบุกรุกระบบ macOS และวิเคราะห์ว่ามัลแวร์ใช้พาหะเหล่านี้ในอดีตอย่างไร ด้วยความรู้นี้ เราสามารถสร้างการป้องกันที่ยืดหยุ่นมากขึ้นและนโยบายความปลอดภัยเพื่อป้องกันภัยคุกคามที่จะเข้ามา
1. การล่อลวงด้วยฟรี Content
มีมัลแวร์ macOS มากมายที่เผยแพร่ผ่านไซต์ดาวน์โหลดฟรี Content เช่น ไtorrent sites, shareware sites, cracked app sites หรือ free 3rd party app distribution sites
Torrent สำหรับ file utility นี้จะดาวน์โหลดตัวติดตั้ง adware
รวมถึง Content ที่ใช้ล่อลวง:
- Cracked Software
- Website Live สดกีฬา
- VPNs โฆษณาว่าสำหรับ ‘ความเป็นส่วนตัว’ และการหลีกเลี่ยง geofencing
- Website ดาวน์โหลดภาพยนตร์ ทีวี เกม และเพลง การหลีกเลี่ยง DRM
- Website ลามกอนาจารและบริการทางเพศ
การหลอกล่อด้วยฟรี Content ส่วนใหญ่จะใช้เพื่อเพิ่มการติดไวรัส adware และ bundleware แต่ cryptominers เช่น LoudMiner ก็ได้รับการเผยแพร่ด้วยวิธีนี้เช่นกัน
สถานการณ์ที่พบบ่อยที่สุดคือผู้ใช้เสนอ Application Version ฟรีหรือ Crack ผู้ใช้เริ่มดาวน์โหลดไฟล์อิมเมจของดิสก์โดยอ้างว่ามี Application นั้น แต่เมื่อติดตั้งแล้วพบว่ามีชื่อบางอย่างเช่น “Flash Player”, “AdobeFlashPlayer.app” หรือที่คล้ายกัน ไฟล์เหล่านี้มักจะ Unsign และผู้ใช้จะได้รับคำแนะนำเกี่ยวกับวิธีการแทนที่ macOS Gatekeeper เพื่อเปิดใช้งาน
การล่อลวงด้วย Adobe Photoshop version crack นำไปสู่โปรแกรมติดตั้ง adware
ดังที่แสดงในภาพด้านบน นี่เป็นเคล็ดลับง่ายๆ ใน Finder ที่แม้แต่ผู้ใช้ที่ไม่ใช่ผู้ดูแลระบบก็สามารถใช้หลบเลี่ยงกลไกความปลอดภัยในตัวของ Mac ได้
เมื่อเร็ว ๆ นี้มีผู้พบเห็นผู้คุกคามบางคนที่สั่งให้ผู้ใช้ไปยังเทอร์มินัลเพื่อแทนที่ Gatekeeper ที่นั่น โดยน่าจะเป็นวิธีแก้ปัญหาการควบคุมความปลอดภัยเพิ่มเติมที่ผู้ดูแลระบบขององค์กรอาจปรับใช้ผ่าน MDM (การจัดการอุปกรณ์เคลื่อนที่)
ผู้ใช้บางรายค้นหา Content ที่ถูกต้องตามกฎหมาย แต่ถูกดึงเข้าสู่ไซต์ที่เป็นอันตรายผ่านการโฆษณาโดยข้อตกลงและข้อเสนอที่ ‘ดีเกินจริง’ หลักฐานโดยสังเขปชี้ให้เห็นว่ามีการรับรู้อย่างกว้างขวางในหมู่ผู้ใช้ Mac ว่าการคลิกลิงก์ดังกล่าวไม่ได้เป็นอันตรายด้วย Content เนื่องจาก Mac นั้น “ปลอดภัย” และ “ไม่ติดไวรัส” อย่างไรก็ตาม ลักษณะของไซต์เหล่านี้และการใช้ป๊อปอัป ไอคอนที่ทำให้เข้าใจผิด และลิงก์เปลี่ยนเส้นทางอย่างต่อเนื่องอาจทำให้ผู้ใช้จากการค้นหาที่ปลอดภัยไปสู่การดาวน์โหลดที่เป็นอันตรายได้อย่างรวดเร็ว
แม้ว่าการล่อด้วย “Flash Player” ส่วนใหญ่จะถูกใช้โดยแคมเปญ adware และ bundleware แต่ก็ยังพบเห็นได้ในแคมเปญที่ดำเนินมายาวนานโดยผู้คุกคามชาวจีนที่เผยแพร่ macOS.Macma แคมเปญอื่นๆ ที่ใช้เวกเตอร์นี้อย่างมีนัยสำคัญ ได้แก่ OSX.Shlayer, Pirrit และ Bundlore ภัยคุกคามเหล่านี้ตรวจพบโดยผู้ให้บริการด้านความปลอดภัย แต่มักพลาดโดย XProtect เทคโนโลยีการตรวจจับในตัวของ Apple
วิธีป้องกันการโจมตีผ่านฟรี Content
- การควบคุมสิทธิ์ที่เกี่ยวข้องกับการดาวน์โหลดซอฟต์แวร์หรือการเปิดใช้ผ่าน MDM และ/หรือรายการอนุญาต/ปฏิเสธแอปพลิเคชันโดยผลิตภัณฑ์รักษาความปลอดภัย
- การจำกัดการเข้าถึงเทอร์มินัลผ่านโซลูชัน MDM หรือผลิตภัณฑ์รักษาความปลอดภัย
- การจำกัดหรือป้องกันการเรียกใช้ unsigned code ด้วยผลิตภัณฑ์รักษาความปลอดภัย
- การใช้ Software ป้องกันปลายทางเพื่อป้องกันและตรวจจับมัลแวร์ที่รู้จัก
2. มัลแวร์โฆษณากับผู้ใช้ Mac
โฆษณาที่ออกแบบมามุ่งร้ายบนหน้าเว็บสามารถเรียกใช้โค้ดที่ซ่อนอยู่ภายในเบราว์เซอร์ของผู้ใช้ โดยเปลี่ยนเส้นทางเหยื่อไปยังไซต์ที่แสดงป๊อปอัปพร้อมการอัปเดตซอฟต์แวร์ปลอมหรือคำเตือนการสแกนไวรัส ในช่วง 12 เดือนที่ผ่านมา แคมเปญมัลแวร์โฆษณาที่เป็นที่รู้จักซึ่งมุ่งเป้าไปที่ผู้ใช้ macOS ได้แก่ ChromeLoader และ oRAT
ChromeLoader หรือที่เรียกว่า Choziosi Loader หรือ ChromeBack ใช้รูปแบบของส่วนขยาย Chrome ที่เป็นอันตรายซึ่งเป็นการขโมยการค้นหาของเครื่องมือค้นหาของผู้ใช้ ติดตั้งตัวฟังเพื่อสกัดกั้นทราฟฟิกเบราว์เซอร์ขาออก และให้บริการแอดแวร์แก่ผู้ที่ตกเป็นเหยื่อ
oRAT เป็นการฝังข้อมูลลับๆ ที่เขียนด้วย Go และถูกดาวน์โหลดไปยังเครื่องของเหยื่อในรูปของ Unsigned disk image (.dmg) ซึ่งปลอมแปลงเป็นคอลเล็กชันของ Bitget Apps โดย Disk image มีแพ็คเกจชื่อ Bitget Apps.pkg และตัวระบุการแจกจ่าย com.adobe.pkg.Bitget
ข้อมูล Encrypted blob จะถูกผนวกเข้ากับไบนารีที่เป็นอันตรายซึ่งมีข้อมูลการกำหนดค่า เช่น ที่อยู่ IP C2
Encrypted blob ของ oRAT และข้อความธรรมดาที่ถอดรหัสแล้ว
วิธีป้องกันการโจมตีจากมัลแวร์โฆษณา
การใช้การควบคุมไฟร์วอลล์และตัวกรองเว็บเพื่อบล็อกการเข้าถึงเว็บไซต์ที่เป็นอันตราย ในกรณีที่ละเอียดอ่อนมาก ไฟร์วอลล์สามารถจำกัดการเข้าถึงเฉพาะชุด IP ที่ได้รับอนุญาตเท่านั้น
การใช้ซอฟต์แวร์บล็อกโฆษณา: ตัวบล็อกโฆษณาสามารถป้องกันไม่ให้โฆษณาส่วนใหญ่แสดง แต่สิ่งนี้อาจส่งผลกระทบต่อประสิทธิภาพและการเข้าถึงข้อมูลบางอย่าง
ปรับใช้ซอฟต์แวร์ป้องกันปลายทางเพื่อป้องกันและตรวจจับการดำเนินการของโค้ดที่เป็นอันตรายที่ส่งผ่านโฆษณาที่เป็นอันตราย
3. Poisoned Developer Projects
Developer เป็นเป้าหมายที่มีมูลค่าสูงสำหรับผู้คุกคามที่มองหาการติดไวรัสจำนวนมาก การโจมตี Supply chain การจารกรรม และเครื่องมือทางการเมือง การโจมตี Developer ของ Apple ที่ประสบความสำเร็จมากที่สุดในปัจจุบันอย่างไม่ต้องสงสัยคือ XcodeGhost ซึ่งเป็นเวอร์ชันที่เป็นอันตรายของ Xcode IDE ของ Apple ที่โฮสต์บนเซิร์ฟเวอร์ในประเทศจีนในปี 2015 Developer ชาวจีนจำนวนหนึ่งเลือกที่จะดาวน์โหลดสิ่งที่พวกเขาเชื่อว่าเป็น Local mirror ของ Xcode เนื่องจากการดาวน์โหลด เวอร์ชันที่ถูกต้องจากเซิร์ฟเวอร์ของ Apple ในสหรัฐอเมริกานั้นช้ามาก
XcodeGhost แทรกโค้ดที่เป็นอันตรายลงในแอป iOS ใดๆ ที่สร้างมาพร้อมกับมัน และแอปที่ติดไวรัสจำนวนหนึ่งก็ถูกเผยแพร่ใน App Store ของ Apple ในเวลาต่อมา แอพที่ติดไวรัสสามารถขโมยข้อมูลที่ละเอียดอ่อน เช่น ตัวระบุเฉพาะของอุปกรณ์และ Apple ID ของผู้ใช้ และเรียกใช้รหัสโดยอำเภอใจบนอุปกรณ์ iOS ที่ติดไวรัส
โดยทั่วไปและเมื่อเร็วๆ นี้ ผู้ก่อภัยคุกคามพยายามแพร่ไวรัสให้ Software Developer โดยใช้โค้ดที่ใช้ร่วมกัน เนื่องจาก Developer ต้องการเพิ่มประสิทธิภาพการทำงานโดยไม่ ‘คิดค้นสิ่งใหม่ๆ’ พวกเขามักจะค้นหารหัสที่ใช้ร่วมกันแทนที่จะพยายามเขียนการใช้งานไลบรารีที่ยุ่งยากหรือการเรียก API ที่ไม่คุ้นเคย
โค้ดที่เป็นประโยชน์สามารถพบได้ในที่เก็บข้อมูลสาธารณะที่โฮสต์บนไซต์ต่างๆ เช่น Github แต่โค้ดเหล่านี้อาจแฝงมากับมัลแวร์หรือโค้ดที่เปิดประตูลับจากสภาพแวดล้อมของนักพัฒนาไปยังผู้โจมตี มัลแวร์ XCSSET และ XcodeSpy ต่างใช้ประโยชน์จากโครงการ Xcode ที่ใช้ร่วมกันเพื่อประนีประนอมผู้พัฒนาซอฟต์แวร์ macOS และ iOS
ใน XCSSET โปรเจ็กต์ .xcodeproj/project.xcworkspace/contents.xcworkspacedata ได้รับการแก้ไขให้มีการอ้างอิงไฟล์ไปยังไฟล์ที่เป็นอันตรายซึ่งซ่อนอยู่ในโฟลเดอร์ xcuserdata ของโปรเจ็กต์ การสร้างโปรเจกต์ทำให้มัลแวร์ถูกดำเนินการ ซึ่งทำให้การติดไวรัสแบบหลายขั้นตอนลดลงในเครื่องของผู้พัฒนา ซึ่งรวมถึงแบ็คดอร์ด้วย
ใน XcodeSpy ผู้คุกคามได้แจกจ่ายโครงการโอเพ่นซอร์สที่ถูกต้องตามกฎหมายซึ่งมีอยู่บน GitHub Build Phases ของโปรเจกต์รวม Run Script ที่คลุมเครือซึ่งจะดำเนินการเมื่อเปิดตัวเป้าหมายการสร้างของ Developer
สคริปต์ที่คลุมเครือที่พบในตัวอย่าง XcodeSpy
สคริปต์สร้างไฟล์ที่ซ่อนอยู่ที่ /private/tmp/.tag ซึ่งมีคำสั่งเดียว: mdbcmd สิ่งนี้จะถูกส่งผ่านย้อนกลับไปยังผู้โจมตี C2 เส้นทางของไฟล์เชื่อมโยงกับแบ็คดอร์ EggShell แบบกำหนดเองสองรายการที่พบใน VirusTotal
ในการดำเนินการ ไบนารี EggShell ที่กำหนดเองจะปล่อย LaunchAgent ที่
~/Library/LaunchAgents/com.apple.usagestatistics.plist or ~/Library/LaunchAgents/com.apple.appstore.checkupdate.plist. This plist checks to see if the original executable is running; if not, it creates a copy of the executable from a ‘master’ version at ~/Library/Application Support/com.apple.AppStore/.update then executes it.
Persistence agent ที่ใช้ EggShell backdoor ที่เชื่อมโยงกับ XcodeSpy
วิธีป้องกันการโจมตีผ่าน Poisoned Developer Project
- การแยก Development environments ออกจาก Production environments
- กำหนดให้โครงการของ Developer ที่ใช้ร่วมกันทั้งหมดต้องได้รับการตรวจสอบและอนุญาตก่อนที่จะดาวน์โหลดหรือสร้างบนอุปกรณ์ของบริษัท
- การใช้แนวทางปฏิบัติในการพัฒนาที่ปลอดภัย เช่น แนวทางการเข้ารหัสที่ปลอดภัย การตรวจสอบโค้ด และการเป็นเพื่อนกับโค้ด
- ให้ความรู้แก่ Developer เกี่ยวกับอันตรายของโครงการนักพัฒนาที่มาจากภายนอก
- ตรวจสอบการดำเนินการโค้ดที่น่าสงสัยและเป็นอันตรายด้วยซอฟต์แวร์ป้องกันปลายทาง
4. Open Source Package Repositories
สิ่งต่าง ๆ เริ่มรุนแรงขึ้นเมื่อผู้คุกคามกำหนดเป้าหมายที่เก็บแพ็คเกจโอเพ่นซอร์ส รหัสที่ใช้ร่วมกันผ่านสิ่งเหล่านี้ถูกใช้อย่างกว้างขวางในหลาย ๆ โครงการในองค์กร และการตรวจสอบความปลอดภัยนั้นทั้งมีจุดอ่อนและยาก มีการใช้งานมากมายในแพลตฟอร์มและภาษาต่างๆ รวมถึง:
- Python Package Index (PyPI)
- Crates.io (Rust)
- Node Package Manager (NPM)
- Go Module Index (Go)
- NuGet Gallery (.NET)
- RubyGems (Ruby)
- Packagist (PHP)
- Chocolatey (Windows)
- Scoop (Windows)
- Homebrew (macOS)
- CocoaPods (Swift, iOS)
- Carthage (Swift, macOS)
- Fedora Package Database (Linux)
- CentOS Package Repository (Linux)
- Arch Linux User Repository (Linux)
- Ubuntu Package Repositories (Linux)
- Alpine Package Repository (Linux)
- Maven Central (Java)
ที่เก็บแพ็คเกจอาจอ่อนแอต่อการโจมตี Typosquatting และการโจมตี Dependency confusion ในบางกรณี ความเป็นเจ้าของของแพ็คเกจที่ถูกกฎหมายถูกแย่งชิงหรือโอนไปยังผู้มุ่งร้าย
ในเดือนพฤษภาคม 2022 แพ็คเกจ PyPI ยอดนิยม “PyKafka” ตกเป็นเป้าหมายในการโจมตีด้วยการพิมพ์โดยใช้แพ็คเกจชื่อ “PyMafka” แพ็คเกจ PyMafka มีสคริปต์ Python ที่สำรวจโฮสต์และกำหนดระบบปฏิบัติการ
หากอุปกรณ์ใช้ macOS อุปกรณ์จะเข้าถึง C2 และดาวน์โหลดไบนารี Mach-O ที่เรียกว่า ‘MacOs’ และเขียนไปที่ /private/var/tmp ด้วยชื่อ ‘zad’ ไบนารีบรรจุ UPX และทำให้ยุ่งเหยิงและทิ้งบีคอน Cobalt Strike
ก่อนหน้านี้ Crates.io ที่เก็บ Rust ก็ตกเป็นเป้าหมายของผู้คุกคามที่พิมพ์แพ็คเกจ ‘rust_decimal’ ที่ถูกต้องด้วยแพ็คเกจ ‘rustdecimal’ ที่เป็นอันตราย สภาพแวดล้อมเป้าหมายหลังด้วยไปป์ไลน์ GitLab Continuous Integration (CI) และทิ้งเพย์โหลด Poseidon ที่คอมไพล์ด้วย macOS ที่เขียนด้วย Go
เมื่อปิดฉากปี 2022 ผู้บุกรุกซึ่งภายหลังอ้างว่าเป็น ‘นักวิจัย’ ได้กำหนดเป้าหมายไปที่แพ็คเกจ PyTorch บน PyPI ด้วยการโจมตี Dependency confusion
การโจมตีด้วย Dependency confusion ใช้ประโยชน์จากข้อเท็จจริงที่ว่าบางแพ็คเกจมีการพึ่งพาที่โฮสต์บนเซิร์ฟเวอร์ส่วนตัว ตามค่าเริ่มต้น ผู้จัดการแพ็กเกจจะจัดการคำขอการ Dependency ของลูกค้าโดยค้นหาที่เก็บข้อมูลสาธารณะก่อน หากชื่อของแพ็คเกจการ Dependency ไม่มีอยู่ใน repo สาธารณะ ผู้โจมตีสามารถอัปโหลดแพ็คเกจที่เป็นอันตรายของตนเองไปยัง repo สาธารณะและสกัดกั้นคำขอจากลูกค้า
มัลแวร์หลุดเข้ามาโจมตี PyTorch ที่รวบรวมและกรองข้อมูลสำคัญต่างๆ จากเครื่องของเหยื่อเพื่อถ่ายโอนไปยัง URL ระยะไกล รวมถึงเนื้อหาของ ~/.gitconfig/ และ ~/.ssh/
PyTorch เป็นไลบรารีแมชชีนเลิร์นนิงแบบโอเพ่นซอร์สยอดนิยมสำหรับ Python ซึ่งคาดว่าจะมีการดาวน์โหลดประมาณ 180 ล้านครั้ง ในช่วง 5 วันระหว่างวันคริสต์มาสและวันปีใหม่ที่โฮสต์แพ็คเกจที่เป็นอันตรายบน PyPI มีการดาวน์โหลดถึง 2,300 ครั้ง
วิธีป้องกันการโจมตีผ่านที่ Package Repositories
การบรรเทาภัยคุกคามที่กระจายผ่านเวกเตอร์นี้มีคำแนะนำหลายอย่างเช่นเดียวกับการป้องกันโครงการนักพัฒนาร่วมที่เป็นอันตราย นอกจากนี้ ทีมรักษาความปลอดภัยยังสามารถปฏิบัติตามคำแนะนำต่อไปนี้:
- การใช้ที่เก็บส่วนตัวและการกำหนดค่าตัวจัดการแพ็กเกจไม่ให้เป็นค่าดีฟอลต์เป็นที่เก็บสาธารณะ
- ตรวจสอบความถูกต้องของแพ็คเกจผ่านการ Code signing
- การตรวจสอบและยืนยัน Code ที่มาจากภายนอกเป็นระยะ