ในบล็อกโพสต์นี้ เราตรวจสอบการทำงานของ AceCryptor ซึ่งเดิมมีการบันทึกไว้ โดย Avast. cryptor นี้มีมาตั้งแต่ปี 2016 และเนื่องจาก – ตลอดการมีอยู่ของมัน – มันถูกใช้ในการแพ็คตระกูลมัลแวร์นับสิบตระกูล ส่วนทางเทคนิคจำนวนมากของมัลแวร์นี้ได้รับการอธิบายไว้แล้ว คุณอาจได้อ่านเกี่ยวกับ cryptor นี้แล้ว ซึ่งรู้จักกันในชื่อต่างๆ ความยุ่งเหยิงของ DJVU, ด่านของ SmokeLoader 1, สเตจ 1, 2 และ 3 ของผู้ขโมย RedLine, เครื่องบรรจุหีบห่อที่เรียบง่ายและเป็นที่นิยมและอื่น ๆ ... บล็อกโพสต์ที่เผยแพร่จำนวนมาก (แต่ไม่ใช่ทั้งหมด) ไม่รู้จักด้วยซ้ำว่า cryptor นี้เป็นตระกูลมัลแวร์ที่แยกจากกัน ดังนั้น ให้เราเชื่อมโยงจุดทั้งหมดให้คุณ ไม่เพียงให้การวิเคราะห์ทางเทคนิคของรูปแบบต่าง ๆ เท่านั้น แต่ยังรวมถึง ภาพรวมของตระกูลมัลแวร์ที่สามารถพบได้และ AceCryptor ที่แพร่หลายอยู่ในธรรมชาติ
สำหรับผู้เขียนมัลแวร์ การปกป้องการสร้างสรรค์ของตนจากการตรวจจับถือเป็นงานที่ท้าทาย Cryptors เป็นการป้องกันชั้นแรกสำหรับมัลแวร์ที่แพร่กระจาย แม้ว่าผู้ก่อภัยคุกคามจะสามารถสร้างและบำรุงรักษา cryptor แบบกำหนดเองของตนเองได้ แต่สำหรับผู้ก่อภัยคุกคามจาก crimeware มักจะเป็นงานที่ใช้เวลานานหรือยากทางเทคนิคในการบำรุงรักษา cryptor ของพวกเขาในสถานะที่เรียกว่า FUD (ตรวจไม่พบโดยสมบูรณ์) ความต้องการการปกป้องดังกล่าวได้สร้างขึ้นมากมาย cryptor-as-บริการ (CaaS) ตัวเลือกที่บรรจุมัลแวร์ การเข้ารหัสเหล่านี้สามารถรวมเอาเทคนิคต่อต้าน VM, การต่อต้านการดีบั๊ก และการป้องกันการวิเคราะห์หลาย ๆ อย่างเข้าด้วยกันเพื่อให้เกิดการปกปิดของเพย์โหลด
ประเด็นสำคัญของบล็อกโพสต์นี้:
- AceCryptor ให้บริการบรรจุแก่ตระกูลมัลแวร์ที่รู้จักกันดีนับสิบตระกูล
- ตัวอย่างของ AceCryptor นั้นแพร่หลายมากทั่วโลก เนื่องจากผู้คุกคามหลายรายที่ใช้มันแพร่กระจายมัลแวร์ที่อัดแน่นอยู่ในแคมเปญของพวกเขาเอง
- AceCryptor มีความซับซ้อนอย่างมากและตลอดหลายปีที่ผ่านมาได้รวมเอาเทคนิคมากมายเพื่อหลีกเลี่ยงการตรวจจับ
- AceCryptor มีหลายตัวแปรที่อธิบายไว้ในโพสต์บล็อกนี้
- แม้ว่าจะเป็นไปได้ที่จะพบการวิเคราะห์ทางเทคนิค (โดยส่วนใหญ่ที่การเข้ารหัสลับนี้ปรากฏเป็นส่วนหนึ่ง/ขั้นตอนของมัลแวร์อื่นๆ) ที่ทำโดยนักวิจัยคนอื่นๆ ESET Research มีเป้าหมายที่จะไม่เพียงแต่ให้ภาพรวมที่ครอบคลุมเกี่ยวกับฟังก์ชันการทำงานของ AceCryptor เท่านั้น แต่ยังรวมถึงประวัติและการแพร่กระจายของมันด้วย
- ในช่วงปี 2021 และ 2022 ESET ได้ปกป้องลูกค้ามากกว่า 80,000 รายที่ได้รับผลกระทบจากมัลแวร์ที่บรรจุโดย AceCryptor
สถิติและภาพรวมของครอบครัวที่แออัด
นับตั้งแต่การปรากฏตัวครั้งแรกของ AceCryptor ในปี 2016 ผู้เขียนมัลแวร์จำนวนมากได้ใช้บริการของรหัสลับนี้ แม้แต่ซอฟต์แวร์อาชญากรรมที่เป็นที่รู้จักดีที่สุดอย่าง Emotet เมื่อตอนที่มันไม่ได้ใช้รหัสลับของตัวเอง ในช่วงปี 2021–2022 ESET ตรวจพบตัวอย่าง AceCryptor ที่ไม่ซ้ำกันมากกว่า 80,000 ตัวอย่าง เนื่องจากตระกูลมัลแวร์ต่าง ๆ จำนวนมากบรรจุอยู่ภายใน เราถือว่า AceCryptor ถูกขายที่ไหนสักแห่งในรูปแบบ CaaS หากเราคำนึงถึงจำนวนของไฟล์ที่ไม่ซ้ำกันที่ตรวจพบ: แม้ว่าเราจะไม่ทราบราคาที่แน่นอนของบริการนี้ เราคิดว่ากำไรที่ได้รับจากผู้เขียน AceCryptor นั้นไม่สำคัญ
เนื่องจากตัวอย่างมีปริมาณมากในช่วงหลายปีที่ผ่านมา สถิติต่อไปนี้จึงอ้างอิงจากตัวอย่างที่ตรวจพบระหว่างปี 2021 และ 2022 เท่านั้น ดังที่เห็นในรูปที่ 1 การตรวจพบถูกกระจายอย่างเท่าเทียมกันตลอดสองปีนี้ ซึ่งคาดว่าจะได้จาก มัลแวร์ที่ใช้โดยผู้คุกคามจำนวนมากที่ไม่ซิงโครไนซ์แคมเปญของพวกเขา
หลังจากดูมัลแวร์ที่บรรจุโดย AceCryptor เราพบชื่อการตรวจจับ ESET มากกว่า 200 ชื่อ ตอนนี้ แน่นอนว่าตระกูลมัลแวร์หนึ่งตระกูลอาจมีชื่อการตรวจจับหลายชื่อในแต่ละสายพันธุ์ เนื่องจากการอัปเดตหรือการเปลี่ยนแปลงในการทำให้งงงวย เช่น MSIL/Spy.RedLine.A และ MSIL/Spy.RedLine.B ต่างก็เป็นการตรวจจับมัลแวร์ RedLine Stealer . ชื่อการตรวจจับสำหรับมัลแวร์อื่นๆ บางตัวไม่ได้แยกตามตระกูล แต่แยกตามคลาส (เช่น ClipBanker หรือ Agent) เนื่องจากตัวอย่างมัลแวร์ที่ไม่ได้แพ็คจำนวนมากคือตัวขโมยคลิปบอร์ดทั่วไป โทรจัน และอื่นๆ ที่ไม่แพร่หลายและ/หรือมีเพียงเล็กน้อย ตัวแปรที่แก้ไขของมัลแวร์ที่รู้จักอื่น ๆ ที่เผยแพร่ในที่เก็บข้อมูลสาธารณะต่างๆ หลังจากจัดกลุ่ม เราสามารถสรุปได้ว่าหลังจากแกะกล่องแล้ว กลุ่มมัลแวร์ที่พบได้แก่ SmokeLoader, RedLine Stealer, RanumBot, Raccoon Stealer, STOP ransomware, Amadey, Fareit, Pitou, Tofsee, Taurus, Phobos, Formbook, Danabot, Warzone และอื่นๆ อีกมากมาย … รูปที่ 2 แสดงภาพรวมของจำนวนตัวอย่างที่เป็นของตระกูลมัลแวร์ที่รู้จักกันดีและแพร่หลายซึ่งบรรจุโดย AceCryptor
การตรวจสอบกิจกรรมของผู้ให้บริการ CaaS เช่น AceCryptor มีประโยชน์สำหรับการตรวจสอบมัลแวร์ที่ใช้บริการของพวกเขา ตัวอย่างเช่น พิจารณา RedLine Stealer ที่เห็นครั้งแรกในไตรมาสที่ 1 ปี 2022 ดังที่เห็นได้ในรูปที่ 3 ผู้จัดจำหน่าย RedLine Stealer ใช้ AceCryptor ตั้งแต่จุดเริ่มต้นของการมีอยู่ของ RedLine Stealer และยังคงทำเช่นนั้นต่อไป ดังนั้น ความสามารถในการตรวจจับ AceCryptor (และ CaaS อื่นๆ) ที่เชื่อถือได้ไม่เพียงแต่ช่วยให้เรามองเห็นภัยคุกคามที่เกิดขึ้นใหม่เท่านั้น แต่ยังช่วยในการติดตามกิจกรรมของผู้คุกคามอีกด้วย
victimology
ตามที่ควรจะคาดหวังจากความหลากหลายของมัลแวร์ที่บรรจุใน AceCryptor และความสนใจที่หลากหลายของผู้เขียนมัลแวร์ที่แตกต่างกัน AceCryptor พบเห็นได้ทุกที่ในโลก ในช่วงปี 2021 และ 2022 ESET telemetry ตรวจพบมัลแวร์นี้มากกว่า 240,000 ครั้ง ซึ่งมีจำนวนมากกว่า 10,000 ครั้งทุกเดือน ในรูปที่ 4 คุณจะเห็นประเทศที่มีจำนวนการตรวจพบสูงสุดในช่วงปี 2021 และ 2022
ในช่วงปี 2021 และ 2022 ผลิตภัณฑ์ของ ESET ตรวจพบและบล็อกมัลแวร์สายพันธุ์ต่างๆ ที่บรรจุโดย AceCryptor ในคอมพิวเตอร์ของลูกค้ามากกว่า 80,000 เครื่อง เรายังค้นพบตัวอย่าง AceCryptor ที่ไม่ซ้ำกันกว่า 80,000 ตัวอย่าง ตอนนี้ แน่นอนว่าสามารถตรวจพบตัวอย่างใดๆ ในคอมพิวเตอร์หลายเครื่องหรือคอมพิวเตอร์เครื่องเดียวได้รับการปกป้องหลายครั้งโดยซอฟต์แวร์ ESET แต่จำนวนแฮชที่ไม่ซ้ำกันแสดงให้เห็นว่าผู้เขียน AceCryptor ทำงานอย่างไรในการทำให้งงงวยและการหลบเลี่ยงการตรวจจับ เราจะลงลึกในรายละเอียดทางเทคนิคของการทำให้งงงวยของ AceCryptor ใน การวิเคราะห์ทางเทคนิค ส่วนหนึ่งของบล็อกโพสต์นี้
สิ่งที่ควรค่าแก่การกล่าวถึงในที่นี้ก็คือ แม้ว่าจำนวนตัวอย่างที่ไม่ซ้ำกันของ AceCryptor จะสูงมาก แต่จำนวนตัวอย่างที่ไม่ซ้ำกันที่บรรจุอยู่ภายในนั้นน้อยกว่า 7,000 ตัวอย่าง สิ่งนี้แสดงให้เห็นถึงระดับที่ผู้เขียนมัลแวร์จำนวนมากพึ่งพาบริการของ cryptor และความสะดวกสบายสำหรับพวกเขาในการชำระค่าบริการประเภทนี้ แทนที่จะลงทุนเวลาและทรัพยากรเพื่อใช้งานโซลูชัน cryptor ของตนเอง
การกระจาย
เนื่องจาก AceCryptor ถูกใช้โดยผู้คุกคามหลายคน มัลแวร์ที่บรรจุโดยมันจึงกระจายไปในหลายวิธีเช่นกัน จากข้อมูลของ ESET telemetry อุปกรณ์ต่าง ๆ เผชิญกับมัลแวร์ที่บรรจุ AceCryptor ส่วนใหญ่ผ่านทางโปรแกรมติดตั้งโทรจันของซอฟต์แวร์ละเมิดลิขสิทธิ์ หรืออีเมลสแปมที่มีไฟล์แนบที่เป็นอันตราย
อีกวิธีหนึ่งที่บางคนอาจได้รับมัลแวร์ที่บรรจุ AceCryptor คือผ่านมัลแวร์อื่นที่ดาวน์โหลดมัลแวร์ใหม่ที่ป้องกันโดย AceCryptor ตัวอย่างคือบอตเน็ต Amadey ซึ่งเราสังเกตเห็นการดาวน์โหลด RedLine Stealer ที่บรรจุ AceCryptor
เราต้องการทราบว่าวิธีนี้ใช้ได้ทั้ง XNUMX วิธี และตระกูลมัลแวร์บางตัวที่ป้องกันโดย AceCryptor ยังสามารถดาวน์โหลดมัลแวร์ใหม่เพิ่มเติมได้อีกด้วย
การวิเคราะห์ทางเทคนิค
ปัจจุบัน AceCryptor ใช้สถาปัตยกรรมสามชั้นแบบหลายขั้นตอน มีสองเวอร์ชันที่รู้จักของเลเยอร์แรกที่ใช้อยู่ในปัจจุบัน – เวอร์ชันที่ใช้ ชา (อัลกอริธึมการเข้ารหัสขนาดจิ๋ว) เพื่อถอดรหัสเลเยอร์ที่สองและเป็นเวอร์ชันที่ใช้ เครื่องกำเนิดความสอดคล้องเชิงเส้น (LCG) จาก Microsoft Visual/Quick/C++ เพื่อถอดรหัสเลเยอร์ที่สอง ชั้นที่สองคือรหัสเชลล์ที่ใช้กลอุบายป้องกัน จากนั้นถอดรหัสและเรียกใช้ชั้นที่สาม สุดท้าย เลเยอร์ที่สามเป็นรหัสเชลล์เพิ่มเติมที่ดำเนินการกับกลอุบายต่อต้านการสืบสวน และหน้าที่ของมันคือเปิดเพย์โหลด เลเยอร์ที่สามที่รู้จักมีอยู่สองเวอร์ชัน: เวอร์ชันหนึ่งทำกระบวนการกลวง ในขณะที่อีกเวอร์ชันใช้ตัวโหลดแบบสะท้อนแสงและเขียนทับอิมเมจของตัวเองด้วย PE ของเพย์โหลดสุดท้าย
เลเยอร์ 1
แม้ว่าเลเยอร์ 1 จะมีสองเวอร์ชัน แต่ก็ทำงานคล้ายกันมาก สรุปภารกิจหลักได้ดังนี้
- โหลดเลเยอร์ 2 ที่เข้ารหัสลงในหน่วยความจำที่จัดสรร
- ถอดรหัสเลเยอร์ 2
- โทรหรือข้ามไปที่เลเยอร์ 2
ส่วนที่สำคัญที่สุดของขั้นตอนนี้คือการทำให้งงงวย ตลอดหลายปีที่ผ่านมา มีการเพิ่มการทำให้ยุ่งเหยิงใหม่ ๆ จนถึงจุดที่เกือบทุกส่วนของไบนารีถูกสุ่มและทำให้ยุ่งเหยิง สิ่งนี้จะทำให้เกิดปัญหาใหญ่สำหรับผู้ที่พยายามสร้างกฎ YARA หรือการตรวจจับแบบคงที่
ลูป
ผู้เขียนใช้ประโยชน์จากการวนลูปเพื่อทำให้งงงวยหลายครั้ง เทคนิคแรกและตรงไปตรงมาที่สุดคือการใช้ลูปกับรหัสขยะเพื่อทำให้การวิเคราะห์ยากขึ้น เราได้เห็นการใช้รหัสขยะตั้งแต่ปี 2016 เมื่อเราลงทะเบียนตัวอย่างแรกของ AceCryptor ลูปเหล่านี้เต็มไปด้วยการเรียกใช้ API จำนวนมาก ซึ่งไม่เพียงแต่ทำให้นักวิเคราะห์ที่ไม่รู้ว่าเกิดอะไรขึ้นช้าลงเท่านั้น แต่ยังทำให้บันทึกของแซนด์บ็อกซ์ที่เชื่อมต่อการเรียก API ล้นหลาม ซึ่งทำให้การเรียก API ไร้ประโยชน์ ลูปอาจมีคำสั่ง MOV และการดำเนินการทางคณิตศาสตร์จำนวนมาก อีกครั้งเพียงเพื่อสร้างความสับสนให้กับนักวิเคราะห์และทำให้เวลาในการวิเคราะห์ยาวนานขึ้น
การใช้ลูปที่สองคือการ บรรลุความล่าช้า. เราสังเกตเห็นว่า AceCryptor บางเวอร์ชันเปิดตัวเลเยอร์ 2 แทบจะทันที แต่บางเวอร์ชันมีการวนซ้ำซึ่งต้องใช้เวลามากจนทำให้การดำเนินการช้าลงแม้จะเป็นสิบนาที: การชะลอการดำเนินการของมัลแวร์บางส่วนเป็นเทคนิคที่ทราบกันดี แต่ การใช้การเรียก API เช่น Sleep อาจเพิ่มการตั้งค่าสถานะบางอย่างแล้ว แม้ว่าจะไม่ใช่ แต่แซนด์บ็อกซ์บางตัวก็ชอบ แซนด์บ็อกซ์นกกาเหว่า ใช้เทคนิคการข้ามการนอนหลับเพื่อหลีกเลี่ยงความล่าช้าและดำเนินการต่อไปยังส่วนที่น่าสนใจ การใช้การหน่วงเวลาผ่านลูปและการดำเนินการโค้ดขยะยังเป็นความยุ่งยากระหว่างการวิเคราะห์แบบไดนามิก เนื่องจากนักวิเคราะห์ต้องระบุว่าลูปใดเป็นลูปขยะ จึงสามารถข้ามไปได้
เทคนิคการทำให้งงงวยที่สามโดยใช้ลูปประกอบด้วยการซ่อนการดำเนินการที่สำคัญในนั้น ในบรรดา Junk Loops มีบางอย่างที่รอการวนซ้ำบางอย่างและระหว่างการวนซ้ำนั้นมีบางอย่างเกิดขึ้น โดยปกติแล้ว API จะถูกโหลดโดยใช้ รับที่อยู่ Procซึ่งใช้ในภายหลังหรือค่าคงที่บางอย่าง เช่น ค่าชดเชยของข้อมูลที่เข้ารหัสจะถูกเปิดโปง ถ้าการวนซ้ำนั้นไม่เกิดขึ้น ตัวอย่างจะพังในภายหลัง เมื่อใช้ร่วมกับโค้ดขยะ หมายความว่าในการวิเคราะห์มัลแวร์แบบไดนามิก ขั้นแรกต้องวิเคราะห์ว่าการวนซ้ำหรือการวนซ้ำใดที่สามารถข้ามได้และไม่สามารถข้ามได้ ซึ่งหมายความว่านักวิเคราะห์สามารถใช้เวลาในการวิเคราะห์รหัสขยะหรือรอจนกว่ารหัสขยะทั้งหมดจะถูกดำเนินการ ในรูปที่ 6 คุณจะเห็นการวนซ้ำสองลูป โดยที่อันแรกประกอบด้วยการดำเนินการที่สำคัญสำหรับการดำเนินการในภายหลัง และอีกอันเต็มไปด้วยโค้ดขยะ แน่นอนว่าสิ่งนี้อาจไม่ใช่ (และไม่ใช่ในตัวอย่างส่วนใหญ่) ที่มองเห็นได้ง่ายในลูปทั้งหมด โดยเฉพาะอย่างยิ่งหากลูปที่มีการดำเนินการที่สำคัญมีรหัสขยะอยู่ด้วย
การสุ่ม - คุณจะไม่ใช่ YARA
อีกส่วนที่สำคัญของเลเยอร์แรกคือการสุ่ม โค้ดขยะและลูปที่กล่าวถึงก่อนหน้านี้จะถูกสุ่มในแต่ละตัวอย่าง ในลักษณะที่:
- จำนวนการเปลี่ยนแปลงซ้ำ
- การเปลี่ยนแปลงการเรียก API
- จำนวนการเรียก API เปลี่ยนไป และ
- การเปลี่ยนแปลงคำสั่งทางคณิตศาสตร์ขยะหรือ MOV
การสุ่มทั้งหมดนี้อาจทำให้การระบุอัลกอริทึมและคีย์การถอดรหัสค่อนข้างซับซ้อน ในรูปที่ 7 และรูปที่ 8 คุณจะเห็นอัลกอริทึมของ TEA เวอร์ชันดั้งเดิมที่ไม่สร้างความสับสนและไม่ซับซ้อน ในเวอร์ชันที่คลุมเครือนั้นไม่ได้มีเพียงคำแนะนำทางคณิตศาสตร์ขยะเท่านั้น แต่ยังมีบางส่วนของอัลกอริทึมที่สรุปเป็นรูทีนย่อยและค่าคงที่ที่ทราบ (ผลรวมและเดลต้าในรูปที่ 7) ถูกปกปิดไว้ เพื่อให้การระบุอัลกอริทึมที่ถูกต้องไม่น่าจะเป็นไปได้หรือยากขึ้นอย่างแน่นอน .
รหัสไม่ใช่สิ่งเดียวที่ถูกสุ่ม โดยปกติแล้วเลเยอร์ 2 ที่เข้ารหัสและคีย์ถอดรหัสจะถูกเก็บไว้ใน .ข้อความ or .ข้อมูล ส่วน แต่ถูกซ่อนไว้โดยใช้การชดเชยบางอย่างที่เปลี่ยนแปลงระหว่างตัวอย่าง นอกจากนี้ หลังจากถอดรหัสเลเยอร์ 2 สำเร็จแล้ว: ในบางตัวอย่างโค้ดของเลเยอร์ 2 จะอยู่ที่จุดเริ่มต้นของข้อมูลที่ถอดรหัส แต่มีตัวอย่างที่คุณลงท้ายด้วยกลุ่มข้อมูลสุ่มที่จุดเริ่มต้น และคุณจำเป็นต้องรู้ออฟเซ็ตที่ถูกต้อง เพื่อค้นหาจุดเริ่มต้นของโค้ดของ Layer 2
ผู้เขียน AceCryptor ยังสุ่มลักษณะดังต่อไปนี้:
- เส้นทาง PDB จะเริ่มต้นด้วยเสมอ C:แต่เส้นทางที่เหลือจะเป็นแบบสุ่ม
- แหล่งข้อมูลที่มีชื่อและเนื้อหาแบบสุ่มดังแสดงในรูปที่ 9 ผู้เขียน AceCryptor เติมตัวอย่างด้วยทรัพยากรที่สร้างขึ้นแบบสุ่มซึ่งมีข้อมูลที่สร้างขึ้นแบบสุ่ม เราคิดว่าการดำเนินการนี้จะทำให้ตัวอย่างมีความน่าสงสัยน้อยลงและทำให้การค้นหาข้อมูลที่เข้ารหัสจริงทำได้ยากขึ้น ทรัพยากรสามารถประกอบด้วย:
- ตารางสตริง
- เมนู
- บิตแมป
- ข้อมูลไบนารี
- สตริงที่ใช้ในโค้ด
- ไอคอน – แม้ว่าไอคอนที่ใช้ในตัวอย่างจำนวนมากจะดูคล้ายกัน แต่จะมีการปรับเปลี่ยน/สุ่มเล็กน้อยเพื่อให้ไม่ซ้ำกัน
- ชื่อส่วนจำลองแบบสุ่ม
- ฟังก์ชันการจัดสรรหน่วยความจำสำหรับข้อมูลเลเยอร์ 2 – GlobalAlloc, LocalAllocและ VirtualAlloc.
- การใช้ API บางอย่างที่สำคัญต่อการดำเนินการโค้ด - อาจนำเข้าหรือได้รับแบบคงที่ผ่านทาง รับ ModuleHandleA และ รับที่อยู่ Proc.
รุ่นก่อนหน้านี้
ในช่วงหลายปีที่ผ่านมา ผู้เขียน AceCryptor มีความเชี่ยวชาญมากขึ้นในการพัฒนามัลแวร์ และตัวเข้ารหัสก็มีการเปลี่ยนแปลงและพัฒนาไป แม้ว่าจะมีการเปลี่ยนแปลง อัปเดต และปรับปรุงเล็กๆ น้อยๆ มากมาย แต่ฟีเจอร์ที่น่าสนใจของ Layer 1 เวอร์ชันเก่าก็มีดังต่อไปนี้:
- ในช่วงปี 2016 AceCryptor ใช้เวอร์ชันของเลเยอร์ 1 พร้อมอัลกอริทึมการเข้ารหัส XTEA
- ในช่วงปี 2017–2018 AceCryptor ใช้เวอร์ชัน Layer 1 อีกหนึ่งเวอร์ชัน โดยที่อัลกอริทึมการเข้ารหัสที่ใช้คือ RC4
- เลเยอร์ 1 (X)TEA และ LCG เวอร์ชันแรกปรากฏขึ้นในปี 2016 ซึ่งแตกต่างจากเวอร์ชัน LCG เวอร์ชัน XTEA เลิกใช้อย่างรวดเร็วและถูกแทนที่ด้วยเวอร์ชัน TEA
- ในเวอร์ชันเก่า เลเยอร์ 2 ที่เข้ารหัสอยู่ในทรัพยากรที่ซ่อนอยู่ในอิมเมจ BMP ภาพนี้สร้างขึ้นแบบสุ่มโดยมีความกว้างและความสูงแบบสุ่ม และตรงกลางของภาพถูกตัดออกและแทนที่ด้วยข้อมูลที่เข้ารหัส ต้องพบข้อมูลที่ออฟเซ็ตที่ถูกต้อง
เลเยอร์ 2
เลเยอร์ 2 ของ AceCryptor ปรากฏขึ้นในปี 2019 ก่อนหน้านั้น AceCryptor ได้เปิดตัวเลเยอร์ 3 โดยตรงจากเลเยอร์ 1 เลเยอร์นี้ทำหน้าที่เป็นการเข้ารหัสและการป้องกันเพิ่มเติมของเลเยอร์ 3 และดังรูปที่ 11 แสดงให้เห็น ประกอบด้วยสามส่วน:
- รหัสไม่ขึ้นกับตำแหน่ง
- โครงสร้างแบบกำหนดเองที่เราตั้งชื่อ L2_INFO_STRUCTซึ่งมีข้อมูลเกี่ยวกับเลเยอร์ 3 และ
- ข้อมูลของ Layer 3
ในขั้นตอนแรก AceCryptor ใช้เทคนิคทั่วไปเพื่อรับที่อยู่ฟังก์ชัน API บางอย่าง มันแก้ปัญหา รับที่อยู่ Proc และ โหลดไลบรารีA ฟังก์ชั่นโดยใช้ PEB_LDR_DATA เพื่อสำรวจผ่านโมดูลที่โหลด และโดยการเปรียบเทียบค่าแฮชของชื่อเอ็กซ์พอร์ตกับค่าฮาร์ดโค้ด ในฐานะฟังก์ชันตรวจสอบผลรวม AceCryptor ใช้ไฟล์ shl1_เพิ่ม ฟังก์ชั่นการใช้งานแล้วใน แฮชDbซึ่งทำให้สามารถระบุ API ที่ได้รับการแก้ไขได้เร็วขึ้น
Def hash(data): val = 0 for i in data: b = i b = 0xff & (b | 0x60) val = val + b val = val << 1 val = 0xffffffff & val return val
รูป 12 shl1_เพิ่ม กัญชา การดำเนินการ ใน Python
จากนั้น AceCryptor จะได้รับการจัดการสำหรับ kernel32.dll การใช้ โหลดไลบรารีA และใช้สิ่งนั้นและ รับที่อยู่ Proc เพื่อแก้ไข APIs เพิ่มเติม
สำหรับขั้นตอนต่อไป AceCryptor จะใช้ข้อมูลจากโครงสร้างแบบกำหนดเอง L2_INFO_STRUCT (แสดงในรูปที่ 13) ซึ่งสามารถพบได้ที่ส่วนท้ายของรหัสที่ไม่ขึ้นกับตำแหน่ง ดังที่เห็นได้ในรูปที่ 11
Struct __unaligned __declspec(align(1)) L2_INFO_STRUCT
{ DWORD encryptedDataSize; DWORD keySeed; BYTE compressionFlag; DWORD decompressedDataSize; … //empty fields (padding or reserved for future use) filled with zeros
}
รูปที่ 13. ภาพรวมของ L2_INFO_STRUCT จากเลเยอร์ 2
ในขั้นตอนถัดไป AceCryptor จะถอดรหัสเลเยอร์ 3 ซึ่งเข้ารหัสโดยใช้ LCG จาก Microsoft Visual/QuickC/C++ การถอดรหัสเกิดขึ้น ถ้า การบีบอัดแฟล็ก ถูกตั้งค่า AceCryptor จัดสรรหน่วยความจำด้วยไฟล์ VirtualAlloc API และขยายข้อมูลที่ถอดรหัสด้วยอัลกอริทึมการบีบอัด LZO_1Z หลังจากนี้ การดำเนินการจะข้ามไปยังเลเยอร์ 3 ที่ถอดรหัสและคลายการบีบอัดที่เลือกได้
ชั้นที่ 3 – กระบวนการกลวง
ในขั้นตอนแรก AceCryptor ได้รับที่อยู่ของ โหลดไลบรารีA และ รับที่อยู่ Proc APIs เหมือนกับใน ` 2 – โมดูลที่โหลดข้ามผ่าน ส่งออกข้ามผ่าน และใช้งาน shl1_เพิ่ม เช็คซัม จากนั้น AceCryptor จะได้รับที่อยู่ฟังก์ชัน API และตัวจัดการ DLL หลายตัว
ในขั้นตอนถัดไป AceCryptor ใช้ API GetFileAttributesก และตรวจสอบแอตทริบิวต์ระบบไฟล์ของไฟล์ที่เรียก apfHQ. แอตทริบิวต์จะถูกเปรียบเทียบกับ การรวมกันของธงที่ไม่มีอยู่ 0x637ADF และถ้าเท่ากัน โปรแกรมจะจบลงด้วยการวนซ้ำไม่สิ้นสุด เนื่องจากสิ่งนี้ถูกใช้ในเลเยอร์สุดท้าย ซึ่งถูกซ่อนไว้อย่างดี และเนื่องจากนี่ไม่ใช่เคล็ดลับเดียวที่นี่ เราจึงถือว่านี่ไม่ใช่เทคนิคอื่นที่ทำให้งงงวย แต่เป็นเคล็ดลับต่อต้านแซนด์บ็อกซ์/แอนตี้อีมูเลเตอร์ที่ไม่มีเอกสารเพื่อต่อต้านสิ่งที่ไม่รู้จัก แต่แซนด์บ็อกซ์/อีมูเลเตอร์เฉพาะที่ส่งคืนค่านี้
หากโปรแกรมดำเนินต่อไปได้สำเร็จ จะมีการตรวจสอบ anti-sandbox/anti-emulator อีกครั้ง ตอนนี้ AceCryptor ใช้ API ลงทะเบียนClassExA เพื่อลงทะเบียนชั้นเรียนด้วยชื่อชั้นเรียน โคตรดีโนซ่า9uin. จากนั้นจะพยายามสร้างหน้าต่างด้วยชื่อ mfoaskdfnoa โดยใช้โปรแกรม CreateWindowExA เอพีไอ ในขั้นตอนสุดท้ายของการตรวจสอบนี้ AceCryptor พยายามใช้ API โพสต์ข้อความก และ GetMessageก เพื่อส่งข้อความ เนื่องจาก API เหล่านี้ไม่ได้ใช้บ่อย การตรวจสอบนี้จึงช่วยในการหลบเลี่ยงแซนด์บ็อกซ์/อีมูเลเตอร์ที่ไม่ได้ใช้ API เหล่านี้ หรือเมื่อ API ที่จำลองทำงานไม่ถูกต้อง
หลังจากผ่านการตรวจสอบเหล่านี้เรียบร้อยแล้ว AceCryptor จะใช้ เทคนิคการเจาะกระบวนการ โดยจะสร้างอินสแตนซ์ใหม่ของกระบวนการปัจจุบัน (รับ CommandLineA, CreateProcessก) จับคู่เพย์โหลดสุดท้ายเข้ากับกระบวนการที่สร้างขึ้นใหม่ และเปิดใช้งาน
รุ่นก่อนหน้านี้
เคล็ดลับต่อต้านการสืบสวนโดยใช้ ลงทะเบียนClassExA, CreateWindowExA, โพสต์ข้อความก, GetMessageก อยู่ในเวอร์ชันก่อนหน้า (เช่น SHA-1: 01906C1B73ECFFD72F98E729D8EDEDD8A716B7E3) เห็นใช้ในเลเยอร์ 1 และใหม่กว่า (เมื่อได้รับการทดสอบและสถาปัตยกรรมของการเข้ารหัสลับพัฒนาขึ้น) มันถูกย้ายไปที่เลเยอร์ 3
ชั้นที่ 3 – ตัวโหลดแบบสะท้อนแสง
ขั้นตอนแรกเลเยอร์นี้คล้ายกับ เลเยอร์ 2 และ เลเยอร์ 3 – กระบวนการกลวงได้รับที่อยู่ของ รับที่อยู่ Proc และ โหลดไลบรารีA ฟังก์ชัน API ความแตกต่างคือครั้งนี้ ด้วยเหตุผลบางอย่าง ผู้เขียนไม่ได้ใช้ shl1_เพิ่ม ฟังก์ชัน checksum แต่ได้รับก่อน รับที่อยู่ Proc ผ่านการสำรวจโมดูลที่โหลด การสำรวจการส่งออก และการเปรียบเทียบสตริง จากนั้นใช้ รับที่อยู่ Proc พวกเขาได้รับ โหลดไลบรารีA การทำงาน. เมื่อใช้ API ทั้งสองนี้ AceCryptor จะโหลดที่อยู่ของฟังก์ชัน API เพิ่มเติมและแฮนเดิล kernel32.dll.
ในโค้ดมีเคล็ดลับ (แสดงในรูปที่ 17) โดยที่ AceCryptor จะผสมโค้ดกับข้อมูล AceCryptor ควบคุมค่าที่อยู่ในที่อยู่ผู้ส่งหลังจากการเรียกหนึ่งครั้ง ค่านี้ถูกตั้งค่าเป็นศูนย์โดยค่าเริ่มต้น และภายหลัง AceCryptor เขียนที่อยู่ของจุดเข้าใช้งานของเพย์โหลดสุดท้ายที่นั่น หากโปรแกรมได้รับการแก้ไขและตั้งค่าเป็นค่าที่ไม่ใช่ศูนย์ โปรแกรมจะข้ามไปยังที่อยู่ที่ชี้ไปโดยค่านั้นและหยุดทำงาน
ในขั้นตอนถัดไป AceCryptor ดำเนินการที่รู้จัก ต่อต้าน VM ตรวจสอบ มุ่งเป้าไปที่ Cuckoo sandbox, IDA Pro+Bochs และ Norman SandBox ในรูปที่ 19 จะเห็นได้ว่าธง SEM_NOALIGNMENTผิดพลาดยกเว้น ด้วยค่า 0x04 จะถูกตั้งค่าโดย Cuckoo sandbox เสมอ และด้วยเหตุนี้ การเรียกครั้งที่สองของ ตั้งค่าErrorMode ในโค้ดจากรูปที่ 18 จะไม่ส่งกลับค่าเดียวกันกับค่าที่กำหนดโดยการโทรครั้งก่อน
ในขั้นตอนสุดท้าย AceCryptor จะตรวจสอบก่อนว่าเพย์โหลดสุดท้ายได้รับการบีบอัดหรือไม่ (อีกครั้ง) และถ้าใช่ จะใช้การบีบอัด LZO_1Z คล้ายกับเลเยอร์ 2 ตัวโหลดแบบสะท้อนแสงเลเยอร์ 3 ใช้โครงสร้างแบบกำหนดเองซึ่งเราตั้งชื่อไว้ ENCRYPTED_DATA_INFO_STRUCT (รูปที่ 16) ซึ่งสามารถพบได้ระหว่างโค้ดที่ไม่ขึ้นกับตำแหน่งและเพย์โหลดสุดท้าย ซึ่งมีข้อมูลเช่น แฟล็กการบีบอัด จำนวนส่วนของเพย์โหลด (de) ขนาดเพย์โหลดที่ถูกบีบอัด ที่อยู่จุดเริ่มต้น ที่อยู่ของไดเร็กทอรีบางไดเร็กทอรี รูปภาพ ที่อยู่ตารางการย้ายถิ่นฐาน และอื่นๆ AceCryptor ใช้ข้อมูลนี้ (ไม่เหมือน ชั้นที่ 3 – กระบวนการกลวงซึ่งจะแยกวิเคราะห์ PE ของเพย์โหลดสุดท้าย) เพื่อทำเทคนิคการโหลดโค้ดแบบสะท้อน โดยรีแมป (ส่วนแผนที่ ภาพรีเบส …) ภาพของตัวเองกับอิมเมจของเพย์โหลดสุดท้าย และเปิดเพย์โหลดโดยเรียกจุดเข้าใช้งาน
สรุป
AceCryptor เป็นมัลแวร์เข้ารหัสที่แพร่หลายและแพร่หลายไปทั่วโลก เราคาดว่าจะมีการขายที่ไหนสักแห่งบนดาร์กเว็บ/ฟอรัมใต้ดินในรูปแบบ CaaS บริการของมัลแวร์นี้ถูกใช้โดยตระกูลมัลแวร์ต่างๆ นับสิบตระกูล และหลายตระกูลอาศัยการเข้ารหัสลับนี้เป็นหลักในการป้องกันการตรวจจับแบบคงที่
เนื่องจากมัลแวร์ถูกใช้โดยผู้คุกคามจำนวนมาก ทุกคนสามารถได้รับผลกระทบ เนื่องจากความหลากหลายของมัลแวร์ที่อัดแน่น จึงเป็นเรื่องยากที่จะประเมินว่าผลที่ตามมาจะรุนแรงเพียงใดต่อเหยื่อที่ถูกบุกรุก AceCryptor อาจถูกทิ้งโดยมัลแวร์ตัวอื่น ซึ่งทำงานอยู่แล้วในเครื่องของเหยื่อ หรือหากเหยื่อได้รับผลกระทบโดยตรง เช่น การเปิดไฟล์แนบอีเมลที่เป็นอันตราย มัลแวร์ใดๆ ภายในอาจดาวน์โหลดมัลแวร์เพิ่มเติม ดังนั้นจึงอาจเป็นเรื่องยากมากที่จะทำความสะอาดเครื่องที่ถูกบุกรุก
แม้ว่าในตอนนี้ การระบุแหล่งที่มาของ AceCryptor ให้กับผู้คุกคามรายใดรายหนึ่งนั้นเป็นไปไม่ได้ และเราคาดว่า AceCryptor จะยังคงถูกใช้งานอย่างกว้างขวางต่อไป การตรวจสอบอย่างใกล้ชิดจะช่วยในการป้องกันและค้นพบแคมเปญใหม่ของตระกูลมัลแวร์ที่บรรจุด้วย cryptor นี้
หากมีข้อสงสัยเกี่ยวกับงานวิจัยของเราที่เผยแพร่บน WeLiveSecurity โปรดติดต่อเราที่ [ป้องกันอีเมล].
ESET Research เสนอรายงานข่าวกรอง APT ส่วนตัวและฟีดข้อมูล หากต้องการสอบถามเกี่ยวกับบริการนี้ โปรดไปที่ ESET ภัยคุกคามอัจฉริยะ หน้า.
IOCs
ไฟล์
หมายเหตุ: ไฟล์ที่อยู่ในรายการเป็นการเลือกตัวอย่างที่เหมาะสมตลอดเวลา ซึ่งครอบคลุม AceCryptor เวอร์ชันต่างๆ หรือการบรรจุมัลแวร์ที่แตกต่างกัน
SHA-1 | ชื่อไฟล์ | ชื่อการตรวจจับ ESET | รายละเอียด |
---|---|---|---|
0BE8F44F5351A6CBEF1A54A6DE7674E1219D65B6 | N / A | Win32/Kryptik.HPKJ | เลเยอร์ 1 รุ่น TEA พร้อม SmokeLoader บรรจุอยู่ภายใน |
0BE56A8C0D0DE11E0E97B563CAE6D1EE164F3317 | N / A | Win32/Kryptik.GOFF | เวอร์ชัน LCG ของเลเยอร์ 1 ซึ่งบรรจุ SmokeLoader ไว้ข้างใน เคล็ดลับต่อต้านการสืบสวนบนเลเยอร์ 2 |
1E3D4230655411CB5F7C6885D7F947072B8F9F0F | N / A | Win32/Emotet.AW | เวอร์ชัน RC4 ของเลเยอร์ 1 พร้อม Emotet บรรจุอยู่ภายใน |
2FDD49A3F7D06FFFD32B40D35ABD69DEC851EB77 | N / A | Win32/Smokeloader.F | เลเยอร์ 1 รุ่น TEA พร้อม SmokeLoader บรรจุอยู่ภายใน |
3AC205BE62806A90072524C193B731A1423D5DFD | N / A | Win32/Kryptik.GPCG | เลเยอร์ 1 รุ่น TEA พร้อม SmokeLoader บรรจุอยู่ภายใน |
6ABF731B90C11FFBD3406AA6B89261CC9596FEFD | N / A | Win32/Kryptik.HRHP | เลเยอร์ 1 เวอร์ชัน TEA พร้อมตัวขโมย RedLine บรรจุอยู่ภายใน |
8E99A5EC8C173033941F5E00A3FC38B7DEA9DCB3 | N / A | Win32/Kryptik.FKYH | เลเยอร์ 1 เวอร์ชัน TEA ที่มี Filecoder.Q บรรจุอยู่ภายใน เลเยอร์ถัดไปในอิมเมจ BMP |
15ADFFDA49C07946D4BD41AB44846EB673C22B2B | N / A | WinGo/RanumBot.B | เลเยอร์ 1 เวอร์ชัน TEA ที่มี RanumBot อัดแน่นอยู่ภายใน สร้างความสับสน – พาธ PDB แบบสุ่ม |
47DB52AB94B9A303E85ED1AA1DD949605157417E | N / A | Win32/Smokeloader.A | เลเยอร์ 1 เวอร์ชัน TEA พร้อม SmokeLoader บรรจุอยู่ภายใน เคล็ดลับต่อต้านอีมูเลเตอร์ในเลเยอร์ 1 |
70BC8C2DC62CF894E765950DE60EC5BD2128D55B | N / A | Win32/Smokeloader.F | เลเยอร์ 1 รุ่น TEA พร้อม SmokeLoader บรรจุอยู่ภายใน |
88B125DDA928462FDB00C459131B232A3CD21887 | N / A | Win32/Kryptik.GDTA | เลเยอร์ 1 เวอร์ชัน TEA โดยมี Hermes อัดแน่นอยู่ภายใน สร้างความสับสน – กำบังค่า |
90A443787B464877AD9EB57536F51556B5BA8117 | N / A | Win32/Kovter.C | เวอร์ชัน XTEA ของเลเยอร์ 1 โดยมี Kovter บรรจุอยู่ภายใน |
249BED77C1349BE7EC1FC182AFCCB1234ADFACDF | N / A | Win32/Smokeloader.F | เลเยอร์ 1 รุ่น TEA พร้อม SmokeLoader บรรจุอยู่ภายใน |
3101B17D73031384F555AE3ACD7139BBBAB3F525 | N / A | Win32/TrojanDownloader.Amadey.A | เลเยอร์ 1 เวอร์ชัน TEA โดยบรรจุ Amadey ไว้ข้างใน |
8946E40255B57E95BAB041687A2F0F0E15F5FFCE | N / A | Win32/Kryptik.GKIN | เลเยอร์ 1 เวอร์ชัน LCG ซึ่งบรรจุ GandCrab ไว้ข้างใน ทำให้สับสน – ตั้งชื่อส่วนต่างๆ |
946082F225C76F2FFBE92235F0FAF9FB9E33B784 | N / A | Win32/Filecoder.Locky.C | รุ่น LCG ของ Layer 1 โดยบรรจุ Locky ไว้ด้านใน |
A8ACF307EA747B24D7C405DEEF70B50B2B3F2186 | N / A | MSIL/Spy.RedLine.B | เลเยอร์ 1 เวอร์ชัน LCG พร้อม RedLine Stealer บรรจุอยู่ภายใน |
F8039D04FF310CEF9CA47AC03025BD38A3587D10 | N / A | Win32/Smokeloader.F | เลเยอร์ 1 รุ่น TEA พร้อม SmokeLoader บรรจุอยู่ภายใน |
วัตถุที่มีชื่อ
ประเภทวัตถุ | ชื่อวัตถุ |
---|---|
ชั้น | โคตรดีโนซ่า9uin |
หน้าต่าง | mfoaskdfnoa |
เทคนิค MITER ATT&CK
ตารางนี้ถูกสร้างขึ้นโดยใช้ 12 รุ่น ของเทคนิคองค์กร MITER ATT&CK
ชั้นเชิง | ID | Name | รายละเอียด |
---|---|---|---|
การกระทำ | T1106 | API ดั้งเดิม | AceCryptor สามารถเริ่มกระบวนการโดยใช้ CreateProcessก API |
การหลบหลีกการป้องกัน | T1497.003 | Virtualization/Sandbox Evasion: การหลบเลี่ยงตามเวลา | AceCryptor ใช้การวนซ้ำด้วยรหัสที่กำหนดเองเพื่อชะลอการดำเนินการของฟังก์ชันหลัก |
T1497.001 | Virtualization/Sandbox Evasion: การตรวจสอบระบบ | AceCryptor ใช้เทคนิคหลายอย่างในการตรวจจับแซนด์บ็อกซ์และอีมูเลเตอร์ | |
T1140 | ถอดรหัสซอร์สโค้ดที่สร้างความสับสน/ถอดรหัสไฟล์หรือข้อมูล | AceCryptor ใช้การเข้ารหัส TEA, LCG, XTEA หรือ RC4 และการบีบอัด LZO_1Z เพื่อแยกรหัสที่ไม่ขึ้นกับตำแหน่งและเพย์โหลด | |
T1027 | ไฟล์หรือข้อมูลที่ทำให้สับสน | AceCryptor มาสก์ค่าต่างๆ เช่น ความยาวของเพย์โหลด ค่าคงที่ที่รู้จักของอัลกอริทึมการถอดรหัส หรือคีย์ถอดรหัส | |
T1055.012 | กระบวนการฉีด: กระบวนการกลวง | AceCryptor สามารถสร้างกระบวนการใหม่ในสถานะระงับเพื่อยกเลิกการแมปหน่วยความจำและแทนที่ด้วยเพย์โหลดที่ซ่อนอยู่ | |
T1620 | กำลังโหลดรหัสสะท้อนแสง | AceCryptor สามารถใช้ตัวโหลดแบบสะท้อนแสงเพื่อเขียนอิมเมจใหม่และแทนที่ด้วยเพย์โหลดที่ซ่อนอยู่ (Windows PE) |
- เนื้อหาที่ขับเคลื่อนด้วย SEO และการเผยแพร่ประชาสัมพันธ์ รับการขยายวันนี้
- PlatoData.Network Vertical Generative Ai เพิ่มพลังให้กับตัวเอง เข้าถึงได้ที่นี่.
- เพลโตไอสตรีม. Web3 อัจฉริยะ ขยายความรู้ เข้าถึงได้ที่นี่.
- เพลโตESG. ยานยนต์ / EVs, คาร์บอน, คลีนเทค, พลังงาน, สิ่งแวดล้อม แสงอาทิตย์, การจัดการของเสีย. เข้าถึงได้ที่นี่.
- BlockOffsets การปรับปรุงการเป็นเจ้าของออฟเซ็ตด้านสิ่งแวดล้อมให้ทันสมัย เข้าถึงได้ที่นี่.
- ที่มา: https://www.welivesecurity.com/2023/05/25/shedding-light-acecryptor-operation/