Nabigo ang turnout: ilantad natin si AgentTesla sa malinis na tubig. Bahagi 1

Nabigo ang turnout: ilantad natin si AgentTesla sa malinis na tubig. Bahagi 1
Kamakailan, nakipag-ugnayan ang isang European manufacturer ng electrical installation equipment sa Group-IB - nakatanggap ang empleyado nito ng kahina-hinalang sulat na may malisyosong attachment sa mail. Ilya Pomerantsev, isang espesyalista sa pagsusuri ng malware sa CERT Group-IB, ay nagsagawa ng isang detalyadong pagsusuri sa file na ito, natuklasan ang AgentTesla spyware doon at sinabi kung ano ang aasahan mula sa naturang malware at kung paano ito mapanganib.

Sa post na ito, binubuksan namin ang isang serye ng mga artikulo kung paano suriin ang mga potensyal na mapanganib na file, at naghihintay kami para sa pinaka-mausisa sa Disyembre 5 para sa isang libreng interactive na webinar sa paksa. "Pagsusuri ng Malware: Pagsusuri ng Mga Tunay na Kaso". Ang lahat ng mga detalye ay nasa ilalim ng hiwa.

Mekanismo ng pamamahagi

Alam namin na naabot ng malware ang makina ng biktima sa pamamagitan ng mga phishing na email. Ang nakatanggap ng sulat ay malamang na BCCed.

Nabigo ang turnout: ilantad natin si AgentTesla sa malinis na tubig. Bahagi 1
Ipinapakita ng pagsusuri sa mga header na na-spoof ang nagpadala ng liham. Sa katunayan, ang sulat na iniwan vps56[.]oneworldhosting[.]com.

Nabigo ang turnout: ilantad natin si AgentTesla sa malinis na tubig. Bahagi 1
Ang email attachment ay naglalaman ng isang WinRar archive qoute_jpeg56a.r15 na may malisyosong executable file QOUTE_JPEG56A.exe sa loob

Nabigo ang turnout: ilantad natin si AgentTesla sa malinis na tubig. Bahagi 1

Malware ecosystem

Ngayon tingnan natin kung ano ang hitsura ng ecosystem ng malware na pinag-aaralan. Ang diagram sa ibaba ay nagpapakita ng istraktura nito at ang mga direksyon ng pakikipag-ugnayan ng mga bahagi.

Nabigo ang turnout: ilantad natin si AgentTesla sa malinis na tubig. Bahagi 1
Ngayon tingnan natin ang bawat isa sa mga bahagi ng malware nang mas detalyado.

Loader

Orihinal na file QOUTE_JPEG56A.exe ay isang pinagsama-sama AutoIt v3 script.

Nabigo ang turnout: ilantad natin si AgentTesla sa malinis na tubig. Bahagi 1
Upang i-obfuscate ang orihinal na script, isang obfuscator na may katulad PElock AutoIT-Obfuscator katangian.
Ang deobfuscation ay isinasagawa sa tatlong yugto:

  1. Pag-alis ng obfuscation Sapagkat kung

    Ang unang hakbang ay ibalik ang control flow ng script. Ang Control Flow Flattening ay isa sa mga pinakakaraniwang paraan upang maprotektahan ang binary code ng application mula sa pagsusuri. Ang nakakalito na mga pagbabagong-anyo ay kapansin-pansing nagpapataas sa pagiging kumplikado ng pagkuha at pagkilala ng mga algorithm at istruktura ng data.

    Nabigo ang turnout: ilantad natin si AgentTesla sa malinis na tubig. Bahagi 1

  2. Pagbawi ng hilera

    Dalawang function ang ginagamit upang i-encrypt ang mga string:

    • gdorizabegkvfca - Nagsasagawa ng Base64-like decoding

      Nabigo ang turnout: ilantad natin si AgentTesla sa malinis na tubig. Bahagi 1

    • xgacyukcyzxz - simpleng byte-byte XOR ng unang string na may haba ng pangalawa

      Nabigo ang turnout: ilantad natin si AgentTesla sa malinis na tubig. Bahagi 1

    Nabigo ang turnout: ilantad natin si AgentTesla sa malinis na tubig. Bahagi 1

  3. Pag-alis ng obfuscation BinaryToString ΠΈ Isakatuparan

    Nabigo ang turnout: ilantad natin si AgentTesla sa malinis na tubig. Bahagi 1

Ang pangunahing load ay naka-imbak sa isang hinati na form sa direktoryo Font mga seksyon ng mapagkukunan ng file.

Nabigo ang turnout: ilantad natin si AgentTesla sa malinis na tubig. Bahagi 1
Ang pagkakasunud-sunod ng gluing ay ang mga sumusunod: TIEQHCXWFG, EMI, SPDGUHIMPV, KQJMWQQAQTKTFXTUOSW, AOCHKRWWSKWO, JSHMSJPS, NHHWXJBMTTSPXVN, BFUTIFWWXVE, HWJHO, AVZOUMVFRDWFLWU.

Ang WinAPI function ay ginagamit upang i-decrypt ang nakuhang data CryptoDecrypt, at ang session key na nabuo batay sa value ay ginagamit bilang key fZgFiZlJDxvuWatFRgRXZqmNCIyQgMYc.

Ang decrypted executable file ay ipinapadala sa function input RunPE, na nagsasagawa ProcessInject Π² RegAsm.exe gamit ang built-in ShellCode (kilala din sa RunPE ShellCode). Ang akda ay pag-aari ng gumagamit ng Spanish forum mga hindi matukoy[.]net sa ilalim ng palayaw na Wardow.

Nabigo ang turnout: ilantad natin si AgentTesla sa malinis na tubig. Bahagi 1
Nabigo ang turnout: ilantad natin si AgentTesla sa malinis na tubig. Bahagi 1
Ito ay nagkakahalaga din na tandaan na sa isa sa mga thread ng forum na ito, isang obfuscator para sa AutoIt na may mga katulad na katangian na natukoy sa panahon ng pagsusuri ng sample.

Siya mismo ShellCode medyo simple at nakakaakit ng atensyon na hiniram lamang mula sa pangkat ng hacker na AnunakCarbanak. API call hashing function.

Nabigo ang turnout: ilantad natin si AgentTesla sa malinis na tubig. Bahagi 1
Nabigo ang turnout: ilantad natin si AgentTesla sa malinis na tubig. Bahagi 1

Alam din namin ang mga kaso ng paggamit Frenchy Shellcode iba't ibang bersyon.
Bilang karagdagan sa inilarawan na pag-andar, natukoy din namin ang mga hindi aktibong function:

  • Pag-block ng manu-manong pagwawakas ng proseso sa task manager

    Nabigo ang turnout: ilantad natin si AgentTesla sa malinis na tubig. Bahagi 1

  • I-restart ang proseso ng bata kapag natapos na ito

    Nabigo ang turnout: ilantad natin si AgentTesla sa malinis na tubig. Bahagi 1

  • I-bypass ang UAC

    Nabigo ang turnout: ilantad natin si AgentTesla sa malinis na tubig. Bahagi 1

  • Sine-save ang payload sa isang file

    Nabigo ang turnout: ilantad natin si AgentTesla sa malinis na tubig. Bahagi 1

  • Pagpapakita ng modal windows

    Nabigo ang turnout: ilantad natin si AgentTesla sa malinis na tubig. Bahagi 1

  • Naghihintay na magbago ang posisyon ng cursor ng mouse

    Nabigo ang turnout: ilantad natin si AgentTesla sa malinis na tubig. Bahagi 1

  • AntiVM at AntiSandbox

    Nabigo ang turnout: ilantad natin si AgentTesla sa malinis na tubig. Bahagi 1

  • Pagsira sa sarili

    Nabigo ang turnout: ilantad natin si AgentTesla sa malinis na tubig. Bahagi 1

  • Pumping payload mula sa network

    Nabigo ang turnout: ilantad natin si AgentTesla sa malinis na tubig. Bahagi 1

Alam namin na ang gayong pag-andar ay tipikal para sa tagapagtanggol CypherIT, na, tila, ay ang bootloader na pinag-uusapan.

Nabigo ang turnout: ilantad natin si AgentTesla sa malinis na tubig. Bahagi 1

Pangunahing module ng software

Susunod, maikling ilalarawan namin ang pangunahing module ng malware, at isaalang-alang ito nang mas detalyado sa pangalawang artikulo. Sa kasong ito, ito ay isang application sa . NET.

Nabigo ang turnout: ilantad natin si AgentTesla sa malinis na tubig. Bahagi 1
Sa panahon ng pagsusuri, natuklasan namin na isang obfuscator ang ginamit ConfuserEX.

Nabigo ang turnout: ilantad natin si AgentTesla sa malinis na tubig. Bahagi 1

IELlibrary.dll

Ang library ay naka-imbak bilang pangunahing mapagkukunan ng module at isang kilalang plugin para sa AhenteTesla, na nagbibigay ng functionality para sa pagkuha ng iba't ibang impormasyon mula sa Internet Explorer at Edge browser.

Ang Agent Tesla ay isang modular spying software na ipinamahagi gamit ang malware-as-a-service na modelo sa ilalim ng pagkukunwari ng isang lehitimong produkto ng keylogger. Ang Agent Tesla ay may kakayahang mag-extract at mag-transmit ng mga kredensyal ng user mula sa mga browser, email client at FTP client patungo sa server sa mga umaatake, mag-record ng data ng clipboard, at makuha ang screen ng device. Sa oras ng pagsusuri, ang opisyal na website ng mga developer ay hindi magagamit.

Ang entry point ay ang function GetSavedPasswords klase InternetExplorer.

Nabigo ang turnout: ilantad natin si AgentTesla sa malinis na tubig. Bahagi 1
Sa pangkalahatan, linear ang pagpapatupad ng code at hindi naglalaman ng anumang proteksyon laban sa pagsusuri. Tanging ang hindi natupad na pag-andar ang nararapat pansin GetSavedCookies. Tila, ang pag-andar ng plugin ay dapat na pinalawak, ngunit hindi ito nagawa.

Nabigo ang turnout: ilantad natin si AgentTesla sa malinis na tubig. Bahagi 1

Pag-attach ng bootloader sa system

Pag-aralan natin kung paano nakakabit ang bootloader sa system. Ang ispesimen sa ilalim ng pag-aaral ay hindi nakaangkla, ngunit sa mga katulad na kaganapan ito ay nangyayari ayon sa sumusunod na pamamaraan:

  1. Sa folder C:UsersPublic nilikha ang script Visual Basic

    Halimbawa ng script:

    Nabigo ang turnout: ilantad natin si AgentTesla sa malinis na tubig. Bahagi 1

  2. Ang mga nilalaman ng loader file ay nilagyan ng null character at nai-save sa folder %Temp%
  3. Ang isang autorun key ay nilikha sa registry para sa script file HKCUSoftwareMicrosoftWindowsCurrentVersionRun

Kaya, batay sa mga resulta ng unang bahagi ng pagsusuri, naitatag namin ang mga pangalan ng mga pamilya ng lahat ng bahagi ng malware na pinag-aaralan, nasuri ang pattern ng impeksyon, at nakakuha din ng mga bagay para sa pagsulat ng mga lagda. Ipagpapatuloy namin ang aming pagsusuri sa bagay na ito sa susunod na artikulo, kung saan titingnan namin ang pangunahing module nang mas detalyado AhenteTesla. Huwag palampasin!

Sa pamamagitan ng paraan, sa Disyembre 5 iniimbitahan namin ang lahat ng mga mambabasa sa isang libreng interactive na webinar sa paksang "Pagsusuri ng malware: pagsusuri ng mga totoong kaso", kung saan ang may-akda ng artikulong ito, isang espesyalista sa CERT-GIB, ay magpapakita online sa unang yugto ng pagsusuri ng malware - semi-awtomatikong pag-unpack ng mga sample gamit ang halimbawa ng tatlong totoong mini-case mula sa pagsasanay, at maaari kang makilahok sa pagsusuri. Ang webinar ay angkop para sa mga espesyalista na mayroon nang karanasan sa pagsusuri ng mga nakakahamak na file. Ang pagpaparehistro ay mahigpit mula sa corporate email: magparehistro. Naghihintay sa iyo!

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
}

Hashes

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

890E643316E9276156EDC8A

uri I-archive ang WinRAR
laki 823014
Pangalan QOUTE_JPEG56A.exe
MD5 329F6769CF21B660D5C3F5048CE30F17
SHA1 8010CC2AF398F9F951555F7D481CE13DF60BBECF
SHA256 49F94293F2EBD8CEFF180EDDD58FA50B30DC0F08

C05B5E3BD36FD52668D196AF

uri PE (Compiled AutoIt Script)
laki 1327616
Orihinal na Pangalan Hindi kilala
DateStamp 15.07.2019
Link Microsoft Linker(12.0)[EXE32]
MD5 C2743AEDDADACC012EF4A632598C00C0
SHA1 79B445DE923C92BF378B19D12A309C0E9C5851BF
SHA256 37A1961361073BEA6C6EACE6A8601F646C5B6ECD

9D625E049AD02075BA996918

uri ShellCode
laki 1474

Pinagmulan: www.habr.com

Magdagdag ng komento