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

ผลิตภัณฑ์ล้มเหลว: ให้ AgentTesla สัมผัสกับน้ำสะอาด ส่วนที่ 1
เมื่อเร็ว ๆ นี้ ผู้ผลิตอุปกรณ์ติดตั้งระบบไฟฟ้าในยุโรปได้ติดต่อกับ Group-IB พนักงานของตนได้รับจดหมายที่น่าสงสัยพร้อมไฟล์แนบที่เป็นอันตรายทางไปรษณีย์ อิลยา โปเมอรานเซฟผู้เชี่ยวชาญด้านการวิเคราะห์มัลแวร์ที่ CERT Group-IB ได้ทำการวิเคราะห์ไฟล์นี้โดยละเอียด ค้นพบสปายแวร์ AgentTesla ที่นั่น และแจ้งสิ่งที่คาดหวังจากมัลแวร์ดังกล่าวและอันตรายอย่างไร

ในโพสต์นี้ เราจะเปิดชุดบทความเกี่ยวกับวิธีการวิเคราะห์ไฟล์ที่อาจเป็นอันตรายดังกล่าว และเรากำลังรอผู้ที่อยากรู้อยากเห็นมากที่สุดในวันที่ 5 ธันวาคมสำหรับการสัมมนาผ่านเว็บเชิงโต้ตอบฟรีในหัวข้อนี้ “การวิเคราะห์มัลแวร์: การวิเคราะห์กรณีจริง”. รายละเอียดทั้งหมดอยู่ภายใต้การตัด

กลไกการกระจาย

เรารู้ว่ามัลแวร์เข้าถึงเครื่องของเหยื่อผ่านอีเมลฟิชชิ่ง ผู้รับจดหมายอาจเป็นสำเนาลับ

ผลิตภัณฑ์ล้มเหลว: ให้ AgentTesla สัมผัสกับน้ำสะอาด ส่วนที่ 1
การวิเคราะห์ส่วนหัวพบว่าผู้ส่งจดหมายถูกปลอมแปลง อันที่จริงจดหมายฝากไว้ด้วย vps56[.]oneworldhosting[.]com.

ผลิตภัณฑ์ล้มเหลว: ให้ AgentTesla สัมผัสกับน้ำสะอาด ส่วนที่ 1
ไฟล์แนบอีเมลมีไฟล์เก็บถาวร WinRar qoute_jpeg56a.r15 ด้วยไฟล์ปฏิบัติการที่เป็นอันตราย QOUTE_JPEG56A.exe ข้างใน.

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

ระบบนิเวศของมัลแวร์

ตอนนี้เรามาดูกันว่าระบบนิเวศของมัลแวร์ที่อยู่ระหว่างการศึกษาจะเป็นอย่างไร แผนภาพด้านล่างแสดงโครงสร้างและทิศทางการโต้ตอบของส่วนประกอบต่างๆ

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

Loader

ไฟล์ต้นฉบับ QOUTE_JPEG56A.exe เป็นการเรียบเรียง ออโต้อิท v3 สคริปต์

ผลิตภัณฑ์ล้มเหลว: ให้ AgentTesla สัมผัสกับน้ำสะอาด ส่วนที่ 1
เพื่อทำให้สคริปต์ต้นฉบับสับสน obfuscator ที่คล้ายกัน PELock AutoIT-Obfuscator ลักษณะ
การถอดรหัสลดความสับสนจะดำเนินการในสามขั้นตอน:

  1. ขจัดความสับสน สำหรับ-ถ้า

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

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

  2. การกู้คืนแถว

    มีการใช้สองฟังก์ชันในการเข้ารหัสสตริง:

    • gdorizabegkvfca - ทำการถอดรหัสแบบ Base64

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

    • xgacyukcyzxz - XOR ไบต์ไบต์อย่างง่ายของสตริงแรกที่มีความยาววินาที

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

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

  3. ขจัดความสับสน BinaryToString и ดำเนินงาน

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

โหลดหลักจะถูกจัดเก็บในรูปแบบที่แบ่งออกเป็นไดเร็กทอรี แบบอักษร ส่วนทรัพยากรของไฟล์

ผลิตภัณฑ์ล้มเหลว: ให้ AgentTesla สัมผัสกับน้ำสะอาด ส่วนที่ 1
ลำดับการติดกาวมีดังนี้: TIEQHCXWFG, IME, SPDGUHIMPV, KQJMWQQAQTKTFXTUOSW, อ๊อชคริวัสโว, JSHMSJPS, NHHWXJBMTTSPXVN, BFUTIFWWXVE, ฮวาจโฮ, AVZOUMVFRDWFLWU.

ฟังก์ชัน WinAPI ใช้เพื่อถอดรหัสข้อมูลที่แยกออกมา CryptDecryptและคีย์เซสชันที่สร้างขึ้นตามค่าจะถูกใช้เป็นคีย์ fZgFiZlJDxvuWatFRgRXZqmNCIyQgMYc.

ไฟล์ปฏิบัติการที่ถอดรหัสจะถูกส่งไปยังอินพุตของฟังก์ชัน รันพีอีซึ่งดำเนินการ กระบวนการฉีด в RegAsm.exe โดยใช้บิวท์อิน เชลล์โค้ด (หรือที่เรียกว่า เรียกใช้ PE ShellCode). การประพันธ์เป็นของผู้ใช้ฟอรัมภาษาสเปน ตรวจไม่พบ[.]สุทธิ ภายใต้ชื่อเล่นว่า วอร์โดว์

ผลิตภัณฑ์ล้มเหลว: ให้ AgentTesla สัมผัสกับน้ำสะอาด ส่วนที่ 1
ผลิตภัณฑ์ล้มเหลว: ให้ AgentTesla สัมผัสกับน้ำสะอาด ส่วนที่ 1
นอกจากนี้ยังเป็นที่น่าสังเกตว่าในหนึ่งในกระทู้ของฟอรัมนี้ obfuscator สำหรับ AutoIt ด้วยคุณสมบัติที่คล้ายกันซึ่งระบุไว้ในระหว่างการวิเคราะห์ตัวอย่าง

เขาเอง เชลล์โค้ด ค่อนข้างเรียบง่ายและดึงดูดความสนใจที่ยืมมาจากกลุ่มแฮ็กเกอร์อนุนักคาร์บานักเท่านั้น ฟังก์ชันแฮชการเรียก API

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

เรายังตระหนักถึงกรณีการใช้งานอีกด้วย เฟรนช์ชี่ เชลล์โค้ด รุ่นที่แตกต่างกัน
นอกเหนือจากฟังก์ชันที่อธิบายไว้แล้ว เรายังระบุฟังก์ชันที่ไม่ได้ใช้งานด้วย:

  • การบล็อกการยกเลิกกระบวนการด้วยตนเองในตัวจัดการงาน

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

  • การรีสตาร์ทกระบวนการลูกเมื่อสิ้นสุด

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

  • บายพาส UAC

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

  • บันทึกเพย์โหลดลงในไฟล์

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

  • การสาธิตหน้าต่างโมดอล

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

  • รอให้ตำแหน่งเคอร์เซอร์ของเมาส์เปลี่ยน

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

  • AntiVM และ AntiSandbox

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

  • การทำลายตนเอง

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

  • สูบน้ำหนักบรรทุกจากเครือข่าย

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

เรารู้ว่าฟังก์ชันดังกล่าวเป็นเรื่องปกติสำหรับตัวป้องกัน ไซเฟอร์ไอทีซึ่งเห็นได้ชัดว่าเป็น bootloader ที่เป็นปัญหา

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

โมดูลหลักของซอฟต์แวร์

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

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

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

IELibrary.dll

ไลบรารีถูกจัดเก็บเป็นทรัพยากรโมดูลหลักและเป็นปลั๊กอินที่รู้จักกันดี ตัวแทนTeslaซึ่งมีฟังก์ชันในการดึงข้อมูลต่างๆ จากเบราว์เซอร์ Internet Explorer และ Edge

Agent Tesla เป็นซอฟต์แวร์สอดแนมแบบโมดูลาร์ที่เผยแพร่โดยใช้โมเดลมัลแวร์ในรูปแบบบริการภายใต้หน้ากากของผลิตภัณฑ์คีย์ล็อกเกอร์ที่ถูกกฎหมาย เจ้าหน้าที่ Tesla สามารถแยกและส่งข้อมูลประจำตัวผู้ใช้จากเบราว์เซอร์ ไคลเอนต์อีเมล และไคลเอนต์ FTP ไปยังเซิร์ฟเวอร์ไปยังผู้โจมตี บันทึกข้อมูลคลิปบอร์ด และจับภาพหน้าจอของอุปกรณ์ ในขณะที่วิเคราะห์ เว็บไซต์อย่างเป็นทางการของนักพัฒนาไม่สามารถใช้งานได้

จุดเริ่มต้นคือฟังก์ชัน รับรหัสผ่านที่บันทึกไว้ คลาส InternetExplorer

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

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

การแนบ bootloader เข้ากับระบบ

เรามาศึกษาวิธีการแนบ bootloader เข้ากับระบบ ตัวอย่างที่ศึกษาไม่ได้ยึดเหนี่ยว แต่ในเหตุการณ์คล้ายคลึงกันนั้นจะเกิดขึ้นตามรูปแบบต่อไปนี้:

  1. ในโฟลเดอร์ C:UsersPublic สคริปต์ถูกสร้างขึ้น ของ Visual Basic

    ตัวอย่างสคริปต์:

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

  2. เนื้อหาของไฟล์ตัวโหลดจะถูกเสริมด้วยอักขระ null และบันทึกลงในโฟลเดอร์ %ชั่วคราว%
  3. คีย์การทำงานอัตโนมัติจะถูกสร้างขึ้นในรีจิสทรีสำหรับไฟล์สคริปต์ HKCUSoftwareMicrosoftWindowsCurrentVersionRun

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

อย่างไรก็ตาม ในวันที่ 5 ธันวาคม เราขอเชิญผู้อ่านทุกคนเข้าร่วมการสัมมนาผ่านเว็บเชิงโต้ตอบฟรีในหัวข้อ “การวิเคราะห์มัลแวร์: การวิเคราะห์กรณีจริง” ซึ่งผู้เขียนบทความนี้ซึ่งเป็นผู้เชี่ยวชาญของ CERT-GIB จะแสดงขั้นตอนแรกของออนไลน์ การวิเคราะห์มัลแวร์ - การแกะตัวอย่างแบบกึ่งอัตโนมัติโดยใช้ตัวอย่างมินิเคสจริงสามกรณีจากการปฏิบัติ และคุณสามารถมีส่วนร่วมในการวิเคราะห์ได้ การสัมมนาผ่านเว็บนี้เหมาะสำหรับผู้เชี่ยวชาญที่มีประสบการณ์ในการวิเคราะห์ไฟล์ที่เป็นอันตรายอยู่แล้ว การลงทะเบียนนั้นมาจากอีเมลองค์กรอย่างเคร่งครัด: การลงทะเบียน. กำลังคอยคุณอยู่!

Yara

rule AgentTesla_clean{
meta:
    author = "Group-IB"
    file = "78566E3FC49C291CB117C3D955FA34B9A9F3EEFEFAE3DE3D0212432EB18D2EAD"
    scoring = 5
    family = "AgentTesla"
strings:
    $string_format_AT = {74 00 79 00 70 00 65 00 3D 00 7B 00 30 00 7D 00 0D 00 0A 00 68 00 77 00 69 00 64 00 3D 00 7B 00 31 00 7D 00 0D 00 0A 00 74 00 69 00 6D 00 65 00 3D 00 7B 00 32 00 7D 00 0D 00 0A 00 70 00 63 00 6E 00 61 00 6D 00 65 00 3D 00 7B 00 33 00 7D 00 0D 00 0A 00 6C 00 6F 00 67 00 64 00 61 00 74 00 61 00 3D 00 7B 00 34 00 7D 00 0D 00 0A 00 73 00 63 00 72 00 65 00 65 00 6E 00 3D 00 7B 00 35 00 7D 00 0D 00 0A 00 69 00 70 00 61 00 64 00 64 00 3D 00 7B 00 36 00 7D 00 0D 00 0A 00 77 00 65 00 62 00 63 00 61 00 6D 00 5F 00 6C 00 69 00 6E 00 6B 00 3D 00 7B 00 37 00 7D 00 0D 00 0A 00 73 00 63 00 72 00 65 00 65 00 6E 00 5F 00 6C 00 69 00 6E 00 6B 00 3D 00 7B 00 38 00 7D 00 0D 00 0A 00 5B 00 70 00 61 00 73 00 73 00 77 00 6F 00 72 00 64 00 73 00 5D 00}
    $web_panel_format_string = {63 00 6C 00 69 00 65 00 6E 00 74 00 5B 00 5D 00 3D 00 7B 00 30 00 7D 00 0D 00 0A 00 6C 00 69 00 6E 00 6B 00 5B 00 5D 00 3D 00 7B 00 31 00 7D 00 0D 00 0A 00 75 00 73 00 65 00 72 00 6E 00 61 00 6D 00 65 00 5B 00 5D 00 3D 00 7B 00 32 00 7D 00 0D 00 0A 00 70 00 61 00 73 00 73 00 77 00 6F 00 72 00 64 00 5B 00 5D 00 3D 00 7B 00 33 00 7D 00 00 15 55 00 52 00 4C 00 3A 00 20 00 20 00 20 00 20 00 20 00 20 00 00 15 55 00 73 00 65 00 72 00 6E 00 61 00 6D 00 65 00 3A 00 20 00 00 15 50 00 61 00 73 00 73 00 77 00 6F 00 72 00 64 00 3A 00}
condition:
     all of them
}

rule  AgentTesla_obfuscated {
meta:
    author = "Group-IB"
    file = "41DC0D5459F25E2FDCF8797948A7B315D3CB075398D808D1772CACCC726AF6E9"
    scoring = 5
    family = "AgentTesla"
strings:
    $first_names = {61 66 6B 00 61 66 6D 00 61 66 6F 00 61 66 76 00 61 66 79 00 61 66 78 00 61 66 77 00 61 67 6A 00 61 67 6B 00 61 67 6C 00 61 67 70 00 61 67 72 00 61 67 73 00 61 67 75 00}
    $second_names = "IELibrary.resources"
condition:
     all of them
}

rule AgentTesla_module_for_IE{
meta:
    author = "Group-IB"
    file = "D55800A825792F55999ABDAD199DFA54F3184417215A298910F2C12CD9CC31EE"
    scoring = 5
    family = "AgentTesla_module_for_IE"
strings:
    $s0 = "ByteArrayToStructure" 
    $s1 = "CryptAcquireContext" 
    $s2 = "CryptCreateHash" 
    $s3 = "CryptDestroyHash" 
    $s4 = "CryptGetHashParam" 
    $s5 = "CryptHashData"
    $s6 = "CryptReleaseContext" 
    $s7 = "DecryptIePassword" 
    $s8 = "DoesURLMatchWithHash" 
    $s9 = "GetSavedCookies" 
    $s10 = "GetSavedPasswords" 
    $s11 = "GetURLHashString"  
condition:
     all of them
}

rule RunPE_shellcode {
meta:
    author = "Group-IB"
    file = "37A1961361073BEA6C6EACE6A8601F646C5B6ECD9D625E049AD02075BA996918"
    scoring = 5
    family = "RunPE_shellcode"
strings:
    $malcode = {
      C7 [2-5] EE 38 83 0C // mov     dword ptr [ebp-0A0h], 0C8338EEh
      C7 [2-5] 57 64 E1 01 // mov     dword ptr [ebp-9Ch], 1E16457h
      C7 [2-5] 18 E4 CA 08 // mov     dword ptr [ebp-98h], 8CAE418h
      C7 [2-5] E3 CA D8 03 // mov     dword ptr [ebp-94h], 3D8CAE3h
      C7 [2-5] 99 B0 48 06 // mov     dword ptr [ebp-90h], 648B099h
      C7 [2-5] 93 BA 94 03 // mov     dword ptr [ebp-8Ch], 394BA93h
      C7 [2-5] E4 C7 B9 04 // mov     dword ptr [ebp-88h], 4B9C7E4h
      C7 [2-5] E4 87 B8 04 // mov     dword ptr [ebp-84h], 4B887E4h
      C7 [2-5] A9 2D D7 01 // mov     dword ptr [ebp-80h], 1D72DA9h
      C7 [2-5] 05 D1 3D 0B // mov     dword ptr [ebp-7Ch], 0B3DD105h
      C7 [2-5] 44 27 23 0F // mov     dword ptr [ebp-78h], 0F232744h
      C7 [2-5] E8 6F 18 0D // mov     dword ptr [ebp-74h], 0D186FE8h
      }
condition:
    $malcode 
}

rule AgentTesla_AutoIT_module{
meta:
    author = "Group-IB"
    file = "49F94293F2EBD8CEFF180EDDD58FA50B30DC0F08C05B5E3BD36FD52668D196AF"
    scoring = 5
    family = "AgentTesla"
strings:                                    
    $packedexeau = {55 ED F5 9F 92 03 04 44 7E 16 6D 1F 8C D7 38 E6 29 E4 C8 CF DA 2C C4 E1 F3 65 48 25 B8 93 9D 66 A4 AD 3C 39 50 00 B9 60 66 19 8D FC 20 0A A0 56 52 8B 9F 15 D7 62 30 0D 5C C3 24 FE F8 FC 39 08 DF 87 2A B2 1C E9 F7 06 A8 53 B2 69 C3 3C D4 5E D4 74 91 6E 9D 9A A0 96 FD DB 1F 5E 09 D7 0F 25 FB 46 4E 74 15 BB AB DB 17 EE E7 64 33 D6 79 02 E4 85 79 14 6B 59 F9 43 3C 81 68 A8 B5 32 BC E6}
condition:
     all of them
}

แฮช

Name qoute_jpeg56a.r15
MD5 53BE8F9B978062D4411F71010F49209E
SHA1 A8C2765B3D655BA23886D663D22BDD8EF6E8E894
SHA256 2641DAFB452562A0A92631C2849B8B9CE880F0F8F

890E643316E9276156EDC8A

ชนิดภาพเขียน เก็บถาวร WinRAR
ขนาด 823014
Name QOUTE_JPEG56A.exe
MD5 329F6769CF21B660D5C3F5048CE30F17
SHA1 8010CC2AF398F9F951555F7D481CE13DF60BBECF
SHA256 49F94293F2EBD8CEFF180EDDD58FA50B30DC0F08

C05B5E3BD36FD52668D196AF

ชนิดภาพเขียน PE (สคริปต์ AutoIt ที่คอมไพล์แล้ว)
ขนาด 1327616
ชื่อเดิม ไม่ทราบ
ประทับวันที่ 15.07.2019
linker ไมโครซอฟต์ลิงค์เกอร์ (12.0) [EXE32]
MD5 C2743AEDDADACC012EF4A632598C00C0
SHA1 79B445DE923C92BF378B19D12A309C0E9C5851BF
SHA256 37A1961361073BEA6C6EACE6A8601F646C5B6ECD

9D625E049AD02075BA996918

ชนิดภาพเขียน เชลล์โค้ด
ขนาด 1474

ที่มา: will.com

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