ผลิตภัณฑ์ล้มเหลว: ให้ AgentTesla สัมผัสกับน้ำสะอาด ส่วนที่ 3

ผลิตภัณฑ์ล้มเหลว: ให้ AgentTesla สัมผัสกับน้ำสะอาด ส่วนที่ 3

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

วันนี้ Ilya Pomerantsev ผู้เชี่ยวชาญด้านการวิเคราะห์มัลแวร์ที่ CERT Group-IB จะพูดถึงขั้นตอนแรกของการวิเคราะห์มัลแวร์ - การแกะตัวอย่าง AgentTesla แบบกึ่งอัตโนมัติ โดยใช้ตัวอย่างเคสขนาดเล็กสามเคสจากการปฏิบัติงานของผู้เชี่ยวชาญของ CERT Group-IB

โดยทั่วไปแล้ว ขั้นตอนแรกในการวิเคราะห์มัลแวร์คือการลบการป้องกันในรูปแบบของ Packer, Cryptor, Protector หรือ Loader ในกรณีส่วนใหญ่ ปัญหานี้สามารถแก้ไขได้ด้วยการเรียกใช้มัลแวร์และดำเนินการถ่ายโอนข้อมูล แต่มีบางสถานการณ์ที่วิธีนี้ไม่เหมาะสม ตัวอย่างเช่น หากมัลแวร์เป็นตัวเข้ารหัส หากมัลแวร์ปกป้องพื้นที่หน่วยความจำจากการถูกทิ้ง หากโค้ดมีกลไกการตรวจจับเครื่องเสมือน หรือหากมัลแวร์รีบูตทันทีหลังจากเริ่มทำงาน ในกรณีเช่นนี้ จะใช้สิ่งที่เรียกว่าการแกะกล่องแบบ "กึ่งอัตโนมัติ" กล่าวคือ ผู้วิจัยสามารถควบคุมกระบวนการได้อย่างสมบูรณ์และสามารถแทรกแซงได้ตลอดเวลา ลองพิจารณาขั้นตอนนี้โดยใช้ตัวอย่างของตระกูล AgentTesla สามตัวอย่าง นี่เป็นมัลแวร์ที่ค่อนข้างไม่เป็นอันตรายหากคุณปิดการเข้าถึงเครือข่าย

ตัวอย่างหมายเลข 1

ไฟล์ต้นฉบับเป็นเอกสาร MS Word ที่ใช้ประโยชน์จากช่องโหว่ CVE-2017-11882

ผลิตภัณฑ์ล้มเหลว: ให้ AgentTesla สัมผัสกับน้ำสะอาด ส่วนที่ 3
เป็นผลให้เพย์โหลดถูกดาวน์โหลดและเปิดใช้งาน

การวิเคราะห์แผนผังกระบวนการและเครื่องหมายพฤติกรรมแสดงให้เห็นการแทรกเข้าไปในกระบวนการ RegAsm.exe.

ผลิตภัณฑ์ล้มเหลว: ให้ AgentTesla สัมผัสกับน้ำสะอาด ส่วนที่ 3
ผลิตภัณฑ์ล้มเหลว: ให้ AgentTesla สัมผัสกับน้ำสะอาด ส่วนที่ 3
มีตัวบ่งชี้พฤติกรรมของ AgentTesla

ผลิตภัณฑ์ล้มเหลว: ให้ AgentTesla สัมผัสกับน้ำสะอาด ส่วนที่ 3
ตัวอย่างที่ดาวน์โหลดมานั้นเป็นไฟล์ปฏิบัติการ NET.-file ป้องกันโดยตัวป้องกัน .NET เครื่องปฏิกรณ์.

ผลิตภัณฑ์ล้มเหลว: ให้ AgentTesla สัมผัสกับน้ำสะอาด ส่วนที่ 3
มาเปิดในยูทิลิตี้กันดีกว่า ดีเอ็นสปาย x86 และก้าวไปสู่จุดเข้า

ผลิตภัณฑ์ล้มเหลว: ให้ AgentTesla สัมผัสกับน้ำสะอาด ส่วนที่ 3
โดยไปที่ฟังก์ชั่น วันที่และเวลาออฟเซ็ตเราจะพบรหัสเริ่มต้นสำหรับรหัสใหม่ NET.-โมดูล. มาใส่กันเถอะ เบรกพอยต์ ในบรรทัดที่เราสนใจและเรียกใช้ไฟล์

ผลิตภัณฑ์ล้มเหลว: ให้ AgentTesla สัมผัสกับน้ำสะอาด ส่วนที่ 3
ในบัฟเฟอร์ที่ส่งคืนตัวใดตัวหนึ่ง คุณสามารถดูลายเซ็น MZ (0x4D 0x5A- มาบันทึกไว้กันเถอะ

ผลิตภัณฑ์ล้มเหลว: ให้ AgentTesla สัมผัสกับน้ำสะอาด ส่วนที่ 3
ไฟล์ปฏิบัติการที่ถูกทิ้งคือไลบรารีไดนามิกที่เป็นตัวโหลด เช่น แยกเพย์โหลดออกจากส่วนทรัพยากรแล้วเปิดใช้งาน

ผลิตภัณฑ์ล้มเหลว: ให้ AgentTesla สัมผัสกับน้ำสะอาด ส่วนที่ 3
ในขณะเดียวกัน ทรัพยากรที่จำเป็นเองก็ไม่มีอยู่ในดัมพ์ พวกเขาอยู่ในตัวอย่างหลัก

คุณประโยชน์ ดีเอ็นสปาย มีฟังก์ชันที่มีประโยชน์อย่างยิ่งสองฟังก์ชันซึ่งจะช่วยให้เราสร้าง "แฟรงเกนสไตน์" จากไฟล์ที่เกี่ยวข้องสองไฟล์ได้อย่างรวดเร็ว

  1. วิธีแรกช่วยให้คุณสามารถ "วาง" ไลบรารีแบบไดนามิกลงในตัวอย่างหลักได้

    ผลิตภัณฑ์ล้มเหลว: ให้ AgentTesla สัมผัสกับน้ำสะอาด ส่วนที่ 3

  2. ประการที่สองคือการเขียนโค้ดฟังก์ชันใหม่ที่จุดเริ่มต้นเพื่อเรียกวิธีการที่ต้องการของไลบรารีแบบไดนามิกที่แทรกไว้

    ผลิตภัณฑ์ล้มเหลว: ให้ AgentTesla สัมผัสกับน้ำสะอาด ส่วนที่ 3

เราบันทึกชุด "แฟรงเกนสไตน์" ของเราไว้ เบรกพอยต์ บนบรรทัดส่งคืนบัฟเฟอร์พร้อมทรัพยากรที่ถอดรหัส และสร้างดัมพ์โดยการเปรียบเทียบกับสเตจก่อนหน้า

การถ่ายโอนข้อมูลครั้งที่สองเขียนอยู่ใน VB.NET ไฟล์ปฏิบัติการที่ได้รับการป้องกันโดยตัวป้องกันที่เราคุ้นเคย สับสนเช่น.

ผลิตภัณฑ์ล้มเหลว: ให้ AgentTesla สัมผัสกับน้ำสะอาด ส่วนที่ 3
ผลิตภัณฑ์ล้มเหลว: ให้ AgentTesla สัมผัสกับน้ำสะอาด ส่วนที่ 3
หลังจากถอดตัวป้องกันออกแล้ว เราจะใช้กฎ YARA ที่เขียนไว้ก่อนหน้านี้ และตรวจสอบให้แน่ใจว่ามัลแวร์ที่คลายแพ็กนั้นเป็น AgentTesla จริงๆ

ผลิตภัณฑ์ล้มเหลว: ให้ AgentTesla สัมผัสกับน้ำสะอาด ส่วนที่ 3

ตัวอย่างหมายเลข 2

ไฟล์ต้นฉบับเป็นเอกสาร MS Excel แมโครที่มีอยู่แล้วภายในทำให้เกิดการเรียกใช้โค้ดที่เป็นอันตราย

ผลิตภัณฑ์ล้มเหลว: ให้ AgentTesla สัมผัสกับน้ำสะอาด ส่วนที่ 3
ด้วยเหตุนี้ สคริปต์ PowerShell จึงถูกเปิดใช้งาน

ผลิตภัณฑ์ล้มเหลว: ให้ AgentTesla สัมผัสกับน้ำสะอาด ส่วนที่ 3
ผลิตภัณฑ์ล้มเหลว: ให้ AgentTesla สัมผัสกับน้ำสะอาด ส่วนที่ 3
สคริปต์ถอดรหัสรหัส C# และถ่ายโอนการควบคุมไปยังรหัสนั้น ตัวโค้ดเองนั้นเป็นโปรแกรมโหลดบูต ดังที่เห็นได้จากรายงานแซนด์บ็อกซ์

ผลิตภัณฑ์ล้มเหลว: ให้ AgentTesla สัมผัสกับน้ำสะอาด ส่วนที่ 3
ผลิตภัณฑ์ล้มเหลว: ให้ AgentTesla สัมผัสกับน้ำสะอาด ส่วนที่ 3
เพย์โหลดเป็นไฟล์ปฏิบัติการ NET.-ไฟล์.

ผลิตภัณฑ์ล้มเหลว: ให้ AgentTesla สัมผัสกับน้ำสะอาด ส่วนที่ 3
การเปิดไฟล์ใน ดีเอ็นสปาย x86คุณจะเห็นว่ามันสับสน การลบความสับสนโดยใช้ยูทิลิตี้ de4dot และกลับสู่การวิเคราะห์

เมื่อตรวจสอบโค้ด คุณอาจค้นพบฟังก์ชันต่อไปนี้:

ผลิตภัณฑ์ล้มเหลว: ให้ AgentTesla สัมผัสกับน้ำสะอาด ส่วนที่ 3
บรรทัดที่เข้ารหัสนั้นน่าทึ่ง จุดเข้าใช้งาน и ขอร้อง- เราใส่ เบรกพอยต์ ไปที่บรรทัดแรก รันและบันทึกค่าบัฟเฟอร์ ไบต์_0.

การถ่ายโอนข้อมูลเป็นแอปพลิเคชันอีกครั้ง NET. และได้รับการคุ้มครอง สับสนเช่น.

ผลิตภัณฑ์ล้มเหลว: ให้ AgentTesla สัมผัสกับน้ำสะอาด ส่วนที่ 3
ผลิตภัณฑ์ล้มเหลว: ให้ AgentTesla สัมผัสกับน้ำสะอาด ส่วนที่ 3
เราลบความสับสนโดยใช้ de4dot และอัพโหลดไปที่ ดีเอ็นสปาย- จากคำอธิบายไฟล์เราเข้าใจว่าเรากำลังเผชิญอยู่ ตัวโหลด CyaX-Sharp.

ผลิตภัณฑ์ล้มเหลว: ให้ AgentTesla สัมผัสกับน้ำสะอาด ส่วนที่ 3
ตัวโหลดนี้มีฟังก์ชันป้องกันการวิเคราะห์ที่ครอบคลุม

ผลิตภัณฑ์ล้มเหลว: ให้ AgentTesla สัมผัสกับน้ำสะอาด ส่วนที่ 3
ฟังก์ชันการทำงานนี้รวมถึงการข้ามระบบป้องกัน Windows ในตัว การปิดใช้งาน Windows Defender รวมถึงกลไกการตรวจจับแซนด์บ็อกซ์และเครื่องเสมือน คุณสามารถโหลดเพย์โหลดจากเครือข่ายหรือจัดเก็บไว้ในส่วนทรัพยากรได้ การเปิดตัวจะดำเนินการผ่านการฉีดเข้าไปในกระบวนการของตัวเอง เข้าไปในกระบวนการที่ซ้ำกันของตัวมันเอง หรือเข้าสู่กระบวนการ MSBuild.exe, vbc.exe и RegSvcs.exe ขึ้นอยู่กับพารามิเตอร์ที่ผู้โจมตีเลือก

อย่างไรก็ตามสำหรับเราแล้วสิ่งเหล่านี้มีความสำคัญน้อยกว่า ต่อต้านการถ่ายโอนข้อมูล-ฟังก์ชั่นที่เพิ่ม สับสนเช่น- สามารถดูซอร์สโค้ดได้ที่ GitHub.

หากต้องการปิดใช้งานการป้องกัน เราจะใช้โอกาสนี้ ดีเอ็นสปายซึ่งช่วยให้คุณแก้ไขได้ IL-รหัส.

ผลิตภัณฑ์ล้มเหลว: ให้ AgentTesla สัมผัสกับน้ำสะอาด ส่วนที่ 3
ผลิตภัณฑ์ล้มเหลว: ให้ AgentTesla สัมผัสกับน้ำสะอาด ส่วนที่ 3
บันทึกและติดตั้ง เบรกพอยต์ ไปที่บรรทัดการเรียกใช้ฟังก์ชันถอดรหัสเพย์โหลด ตั้งอยู่ในคอนสตรัคเตอร์ของคลาสหลัก

ผลิตภัณฑ์ล้มเหลว: ให้ AgentTesla สัมผัสกับน้ำสะอาด ส่วนที่ 3
เราเปิดใช้งานและถ่ายโอนข้อมูลเพย์โหลด เมื่อใช้กฎ YARA ที่เขียนไว้ก่อนหน้านี้ เราตรวจสอบให้แน่ใจว่านี่คือ AgentTesla

ผลิตภัณฑ์ล้มเหลว: ให้ AgentTesla สัมผัสกับน้ำสะอาด ส่วนที่ 3

ตัวอย่างหมายเลข 3

ไฟล์ต้นฉบับเป็นไฟล์ปฏิบัติการ VB เนทีฟ PE32-ไฟล์.

ผลิตภัณฑ์ล้มเหลว: ให้ AgentTesla สัมผัสกับน้ำสะอาด ส่วนที่ 3
การวิเคราะห์เอนโทรปีแสดงให้เห็นถึงการมีอยู่ของข้อมูลที่เข้ารหัสจำนวนมาก

ผลิตภัณฑ์ล้มเหลว: ให้ AgentTesla สัมผัสกับน้ำสะอาด ส่วนที่ 3
เมื่อวิเคราะห์แบบฟอร์มใบสมัครแล้ว โปรแกรมถอดรหัส VB คุณอาจสังเกตเห็นพื้นหลังเป็นพิกเซลแปลกๆ

ผลิตภัณฑ์ล้มเหลว: ให้ AgentTesla สัมผัสกับน้ำสะอาด ส่วนที่ 3
ผลิตภัณฑ์ล้มเหลว: ให้ AgentTesla สัมผัสกับน้ำสะอาด ส่วนที่ 3
กราฟเอนโทรปี BMP-image เหมือนกับกราฟเอนโทรปีของไฟล์ต้นฉบับ และมีขนาด 85% ของขนาดไฟล์

ผลิตภัณฑ์ล้มเหลว: ให้ AgentTesla สัมผัสกับน้ำสะอาด ส่วนที่ 3
ลักษณะทั่วไปของภาพบ่งบอกถึงการใช้สุริยคติ

มาดูลักษณะของแผนผังกระบวนการรวมถึงการมีเครื่องหมายฉีดด้วย

ผลิตภัณฑ์ล้มเหลว: ให้ AgentTesla สัมผัสกับน้ำสะอาด ส่วนที่ 3
ผลิตภัณฑ์ล้มเหลว: ให้ AgentTesla สัมผัสกับน้ำสะอาด ส่วนที่ 3
นี่แสดงว่ากำลังทำการแกะกล่อง สำหรับตัวโหลด Visual Basic (aka VBKrypt หรือ VBInjector) การใช้งานทั่วไป เชลล์โค้ด เพื่อเริ่มต้นน้ำหนักบรรทุกและทำการฉีดเอง

วิเคราะห์ใน โปรแกรมถอดรหัส VB แสดงให้เห็นการมีอยู่ของเหตุการณ์ โหลด ที่แบบฟอร์ม เฟกาตาสซ็อคแอร์บอลลูน2.

ผลิตภัณฑ์ล้มเหลว: ให้ AgentTesla สัมผัสกับน้ำสะอาด ส่วนที่ 3
ไปกันเถอะ ไอดีโปร ไปยังที่อยู่ที่ระบุและศึกษาการทำงาน รหัสมีความสับสนอย่างมาก ส่วนที่เราสนใจแสดงไว้ด้านล่าง

ผลิตภัณฑ์ล้มเหลว: ให้ AgentTesla สัมผัสกับน้ำสะอาด ส่วนที่ 3
ที่นี่พื้นที่ที่อยู่ของกระบวนการจะถูกสแกนเพื่อหาลายเซ็น วิธีนี้น่าสงสัยอย่างยิ่ง

ขั้นแรก ที่อยู่เริ่มต้นการสแกน 0x400100- ค่านี้เป็นค่าคงที่และจะไม่ถูกปรับเมื่อฐานถูกเลื่อน ในสภาวะเรือนกระจกในอุดมคติ เรือนกระจกจะบ่งบอกถึงการสิ้นสุด PE- ส่วนหัวของไฟล์ปฏิบัติการ อย่างไรก็ตาม ฐานข้อมูลไม่คงที่ ค่าสามารถเปลี่ยนแปลงได้ และการค้นหาที่อยู่จริงของลายเซ็นที่ต้องการ แม้ว่าจะไม่ทำให้เกิดตัวแปรล้น แต่ก็อาจใช้เวลานานมาก

ประการที่สอง ความหมายของลายเซ็น iWGK- ฉันคิดว่าเห็นได้ชัดว่า 4 ไบต์เล็กเกินไปที่จะรับประกันความเป็นเอกลักษณ์ และหากคำนึงถึงประเด็นแรกความน่าจะเป็นที่จะผิดพลาดก็ค่อนข้างสูง

ในความเป็นจริงชิ้นส่วนที่ต้องการจะติดอยู่ที่ส่วนท้ายของชิ้นส่วนที่พบก่อนหน้านี้ BMP- รูปภาพโดยชดเชย 0xA1D0D.

ผลิตภัณฑ์ล้มเหลว: ให้ AgentTesla สัมผัสกับน้ำสะอาด ส่วนที่ 3
การปฏิบัติ เชลล์โค้ด ดำเนินการในสองขั้นตอน ตัวแรกถอดรหัสเนื้อหาหลัก ในกรณีนี้ กุญแจจะถูกกำหนดโดยใช้กำลังดุร้าย

ผลิตภัณฑ์ล้มเหลว: ให้ AgentTesla สัมผัสกับน้ำสะอาด ส่วนที่ 3
ทิ้งอันที่ถอดรหัสแล้ว เชลล์โค้ด และดูที่เส้น

ขั้นแรก ตอนนี้เราทราบฟังก์ชันในการสร้างกระบวนการย่อยแล้ว: CreateProcessInternalW.

ผลิตภัณฑ์ล้มเหลว: ให้ AgentTesla สัมผัสกับน้ำสะอาด ส่วนที่ 3
ประการที่สอง เราเริ่มตระหนักถึงกลไกการตรึงในระบบ

ผลิตภัณฑ์ล้มเหลว: ให้ AgentTesla สัมผัสกับน้ำสะอาด ส่วนที่ 3
กลับไปที่กระบวนการเดิมกันเถอะ มาใส่กันเถอะ เบรกพอยต์ บน CreateProcessInternalW และดำเนินการต่อไป ต่อไปเราจะเห็นการเชื่อมต่อ NtGetContextThread/NtSetContextThreadซึ่งเปลี่ยนที่อยู่เริ่มต้นการดำเนินการเป็นที่อยู่ เชลล์โค้ด.

ผลิตภัณฑ์ล้มเหลว: ให้ AgentTesla สัมผัสกับน้ำสะอาด ส่วนที่ 3
เราเชื่อมต่อกับกระบวนการที่สร้างขึ้นด้วยดีบักเกอร์และเปิดใช้งานกิจกรรม ระงับการโหลด/ยกเลิกการโหลดไลบรารีให้ดำเนินการต่อและรอการโหลด NET.-ห้องสมุด

การใช้งานต่อไป กระบวนการแฮกเกอร์ พื้นที่ถ่ายโอนข้อมูลที่มีการแกะออก NET.-แอปพลิเคชัน.

เราหยุดกระบวนการทั้งหมดและลบสำเนาของมัลแวร์ที่ฝังอยู่ในระบบ

ผลิตภัณฑ์ล้มเหลว: ให้ AgentTesla สัมผัสกับน้ำสะอาด ส่วนที่ 3
ผลิตภัณฑ์ล้มเหลว: ให้ AgentTesla สัมผัสกับน้ำสะอาด ส่วนที่ 3
ไฟล์ที่ทิ้งได้รับการคุ้มครองโดยตัวป้องกัน .NET เครื่องปฏิกรณ์ซึ่งสามารถลบออกได้อย่างง่ายดายโดยใช้ยูทิลิตี้ de4dot.

ผลิตภัณฑ์ล้มเหลว: ให้ AgentTesla สัมผัสกับน้ำสะอาด ส่วนที่ 3
การใช้กฎ YARA ที่เขียนไว้ก่อนหน้านี้ เราตรวจสอบให้แน่ใจว่านี่คือ AgentTesla

เพื่อสรุปผล

ดังนั้นเราจึงสาธิตโดยละเอียดเกี่ยวกับกระบวนการแกะตัวอย่างแบบกึ่งอัตโนมัติโดยใช้เคสขนาดเล็กสามเคสเป็นตัวอย่าง และยังวิเคราะห์มัลแวร์ตามเคสเต็มรูปแบบ โดยพบว่าตัวอย่างที่อยู่ระหว่างการศึกษาคือ AgentTesla ซึ่งสร้างฟังก์ชันการทำงานและ รายการตัวบ่งชี้การประนีประนอมทั้งหมด

การวิเคราะห์วัตถุที่เป็นอันตรายที่เราดำเนินการต้องใช้เวลาและความพยายามอย่างมาก และงานนี้ควรดำเนินการโดยพนักงานพิเศษในบริษัท แต่ไม่ใช่ทุกบริษัทที่พร้อมจะจ้างนักวิเคราะห์

หนึ่งในบริการที่ Group-IB Laboratory of Computer Forensics and Malicious Code Analysis มอบให้ คือการตอบสนองต่อเหตุการณ์ทางไซเบอร์ และเพื่อให้ลูกค้าไม่ต้องเสียเวลาในการอนุมัติเอกสารและหารือท่ามกลางการโจมตีทางไซเบอร์ Group-IB จึงเปิดตัว ตัวยึดการตอบสนองต่อเหตุการณ์ซึ่งเป็นบริการตอบสนองเหตุการณ์แบบสมัครสมาชิกล่วงหน้าซึ่งรวมถึงขั้นตอนการวิเคราะห์มัลแวร์ด้วย ข้อมูลเพิ่มเติมเกี่ยวกับเรื่องนี้สามารถพบได้ ที่นี่.

หากคุณต้องการศึกษาอีกครั้งเกี่ยวกับวิธีการแกะตัวอย่าง AgentTesla และดูว่าผู้เชี่ยวชาญของ CERT Group-IB ทำได้อย่างไร คุณสามารถดาวน์โหลดบันทึกการสัมมนาผ่านเว็บในหัวข้อนี้ได้ ที่นี่.

ที่มา: will.com

เพิ่มความคิดเห็น