Kamakailan lamang, Seqrite Nakakita ang Lab ng isang kampanyang phishing na naghahatid ng mga nagnanakaw ng formbook sa pamamagitan ng mga email attachment. Ang Formbook, na nakikita simula noong 2016, ay umunlad sa maraming paraan mula sa mga stealth feature hanggang sa mga evasion technique. Dahil ibinebenta sa mga hacking forum bilang Malware as a Service, makakakita tayo ng ilang variant. Bagama't nananatiling pareho ang evasion technique, maraming layer ang ginagamit bago i-deploy ang payload, at nilo-load lamang ang mga ito sa memory upang maiwasan ang pagkakilala. Tulad ng ibang variant, gumagamit din ito ng steganography upang itago ang mga malisyosong file sa loob ng mga imahe, i-decrypt ang mga ito upang i-load at i-invoke sa memory.
Naglalaman ang variant na ito ng tatlong yugto bago ang huling payload
- Bumili ng Order.exe/XXXI.exe
- Arthur.dll
- Montero.dll
- MASM(Final Payload)

Teknikal na Pagtatasa:
Nagsisimula ito sa isang spear phishing email na naglalaman ng purchase order kasama ng isang attachment ng zip file. Sa pagkuha nito ay naglalaman lamang ng isang solong pe file na PurchaseOrder.exe na isang dotnet compiled binary.

Stage 1 (Purchase Order.exe):
Itinatago ng variant na ito ang stage 2 at stage 3 malware sa resource ng Purchase Order.exe. Pangalan ng mapagkukunan "Hkyl” gaya ng ipinapakita sa Fig 2 ay stage 3 binary.
Sa una, natutulog ang malware ng siyam na segundo bago magpatuloy sa pag-decrypt ng stage 2 payload. Tulad ng ipinapakita sa Fig 3, kinukuha nito ang stage 2 na naka-encrypt na data mula sa App resource na nasa resource ng Purchase Order.exe at iniimbak ito sa bytes array. Nag-iimbak din ito ng 16 bytes ng decryption key para sa stage 2 payload na "AP7H9H5OI4478F8CH05FGA".


Bago i-decrypt ang stage 2 payload, gaya ng ipinapakita sa Fig 4, lumilikha ito ng ikatlong array na may sukat na 256 bytes at ini-initialize ito na may halagang mula 0 hanggang 255.

Pagkatapos nito ay nagse-set up ito ng array3 sa pamamagitan ng pagkopya ng 16 bytes key sa mga random na posisyon.

Kapag na-set up na nito ang array3 value, nagsasagawa ito ng xoring ng naka-encrypt na data gamit ang array3 at sine-save ito sa array2 na naglalaman na ngayon ng Stage 2 PE file arthur.dll,
Upang maisagawa ang stage 2 dll file, ginagamit nito ang InvokeMember() upang i-load ang decrypted assembly (Arthur.dll) sa memory gamit ang Load method. Gaya ng ipinapakita sa Fig 5, hindi nito direktang ginagamit ang Load function ngunit kinukuha nito ang value mula sa isang object, ang value ng HJ ay Load.

Stage 2 (Arthur.dll):
Kapag na-load na sa memorya, tatawagin nito ang MainForm.Justy() mula sa stage 2 PE file na may tatlong argumento. Ginagamit nito ang mga argumentong ito sa stage 2 PE file upang makuha ang stage 3 PE file.


- WA = “486B796C”=Hkyl (Resource in PurchaseOrder.exe, Fig 2)
- WZ = “62616F”=bao (Decryption Key para sa stage 3)
- @namespace = “AssessExampleCombatForm”[Pangalan ng Proyekto ng PurchaseOrder.exe]
Sa una, ang stage 2 na ito ay natutulog ng labing-apat na segundo bago magpatuloy sa pag-decrypt sa stage 3 nito.
Ang function na ito ay nagde-decrypt ng isang imahe sa pamamagitan ng paggamit ng isang key na ipinasa bilang isang argumento pagkatapos ay kinukuha nito ang pula, berde, at asul na mga halaga mula sa bawat hindi transparent na pixel sa isang imahe at gumagawa ng isang array.

Ang array na ito, kapag na-XOR gamit ang value[ bao ] na ipinasa noong stage 2, ay magdadala ng stage 3 montero.dll na nilo-load din sa memory gamit ang Assembly.Load methd. Matapos makuha ang main method na gnWmyvSdDoAS8VNPBy.ukHjJHqoK1 () ng stage 3 module , ito ay tinatawag.

Stage 3 (Montero.dll):
Sa stage 3 PE file na ito, bago gamitin ang main method na ukHjJHqoK1(), ide-decrypt ng constructor nito ang mga kinakailangang configuration setting. Ang mga setting na ito ay naglalaman ng decryption key ng final payload, pangalan ng mutex at mutex flag na pinagana o hindi, lokasyon ng pag-drop ng file, kung pinagana ba o hindi ang pag-download ng file, lokasyon ng pag-download ng file, atbp. Ang mga configuration setting na ito ay nakaimbak sa array na [gnWmyvSdDoAS8VNPBy.YiEuqBAod0]

Matapos i-decrypt ang mga setting ng configuration, sinusuri nito kung ang Mutex flag ay naka-enable sa ika-29 na lokasyon ng array na YiEuqBAod0. Kung totoo, gagawa ito ng mutex na may pangalang " zpkpGXyWHvBpdzNULuLRtAzq ". Kung mayroon nang mutex, magtatapos ito nang kusa. Karaniwang ipinapatupad ang pag-uugaling ito upang maiwasan ang pagtuklas ng mga security vendor at upang maiwasan ang pagpapatakbo ng pangalawang pagkakataon ng parehong malware. Pagkatapos ay bineberipika nito ang Sleep flag, kung naka-enable, mag-sleep ito upang maantala ang pagpapatupad nito para hindi makuha ng mga sandbox ang malisyosong pag-uugali nito.

Pagkatapos ay tinitingnan nito kung ang message box na nagpapakita ng flag ay naka-enable sa ika- 30 lokasyon ng array na YiEuqBAod0, kung naka-enable, ipapalabas nito ang message box upang linlangin ang user.

Pagkatapos nito, beripikahin nito ang ika- 10 lokasyon ng array na YiEuqBAod0 na ginagamit bilang kakayahan sa exclusions path. Kung naka-enable, idadagdag nito ang malware path sa mga exclusions at isasagawa ang cmdlet na ito gamit ang LOL binary[powershel.exe] sa mga hidden window attributes upang maiwasan ang pagtuklas ng AV vendor at maitago rin ang kanilang kilos mula sa biktima.

Sa ika- 5 lokasyon ng array na YiEuqBAod0, ang lokasyong ito ay ginagamit bilang pag-download ng isa pang payload o pag-update ng task feature. Kung naka-enable ang flag na ito, magda-download ito ng isa pang pamilya ng malware o tatanggap ng command mula sa threat actor C2 at ilalagay ang command na iyon sa XML file sa lokasyong %temp% at isasagawa ang file na iyon mula sa lokasyong %temp%. Ang xml na ito ay ibinibigay bilang import sa schedule task.

Sa pangalawang lokasyon ng array na YiEuqBAod0, ginamit ng threat actor ang lokasyong ito bilang file dropping. Kung naka-enable ang flag na ito, unang susuriin ng malware ang “qwwnzxGmN.exe” kung ang file ay nasa “C:\Users\username\AppData\Roaming” ng host ng biktima. Kung wala ang file na iyon sa lokasyong iyon, lilikha ito ng file na may nakatakdang nakatagong attribute, na self-copy ng parent file. Maaaring gamitin ng mga attacker ang property na ito upang itago ang presensya ng malware na ito upang maiwasan ang paghahanap nito sa mga administrator at user.

Kapag ang parent file ay nakopya na sa lokasyong “%appdata%Roaming” gaya ng nabanggit sa Fig 14, ang file na ito ay idadagdag sa exclusion path. Pagkatapos ay ide-decode nito ang base64 encoded data, na na-decrypt sa constructor ng main method ng stage 3, sa string na isang XML file. Ang XML file na ito ay naglalaman ng value na bumubuo ng task. Ang mga value na ito ay malware file hidden attribute, persistence, feature enabled, command execution of file path atbp.


Ang XML file na ito ay ginawa sa %temp% na lokasyon bilang "*.tmp", pagkatapos ay ina-update nito ang kanilang mga kinakailangang halaga sa XML file gaya ng '"Lokasyon" at "USERID" atbp. Pagkatapos nito, gagawa ito ng naka-iskedyul na gawain na may nakatagong katangian ng balo para itago ang kanilang pag-uugali mula sa biktima para sa pagtitiyaga gaya ng "mga update\qwwnzxGmN" at i-import ang XML file na iyon. Tinanggal ng threat actor ang tmp file para maiwasan ang mga bakas para sa security analyst.

Ipinapakita ng Fig 18 ang ika-3 yugto ng module na nagde-decrypt ng panghuling payload. Ang variable na gnWmyvSdDoAS8VNPBy.AtOuOF5iCk = “ 4kQLt8DIME ” ay ang pangalan ng resource (sa motero.dll). Ang gnWmyvSdDoAS8VNPBy.NJMuDv6Sv6 = “ pqDVZxpXC ” ay ang key. Nilo-load nito ang resource at ipinapasa ito sa decryption method na Pp62t2mj9p kasama ang KEY.
Iniimbak ng paraan ng decryption ang pangwakas na payload sa gnWmyvSdDoAS8VNPBy. w9Yu0dnomp.


Ang huling payload na ito ay isang 32-bit, MASM compiled binary na may lamang seksyong ".text". Ang napaka-obfuscated na file decrypting at encrypting code nito batay sa mga kinakailangan.

Kapag na-decrypt na ang huling payload sa buffer, sinusuri nito ang unang lokasyon ng array na YiEuqBAod0. Batay sa value na ito, pipiliin nito ang target na proseso para sa process hollowing. Ibinigay ng threat actor ang value na 0 hanggang 4. Kung ang value ay 4, nilo-load nito ang huling payload sa memory gamit ang assembly load method at isinasagawa ang entry point ng final payload.

Kung ang halaga ay " 1 ", pipiliin nito ang pangalan ng target na proseso bilang MSBuild.exe para sa process hollowing, kung ang halaga ay " 2 ", ang pangalan ng target na proseso ay vbc.exe, kung ang halaga ay " 3 ", ang pangalan ng target na proseso ay RegSvcs.exe. Kung wala sa mga halaga sa itaas ang nabanggit, pipiliin nito ang target na proseso bilang parent file.

Sa Stage 3 constructor, na-decryption nito ang API sequence para sa Process hollowing sa Paraang bLmuzQDIA5() na naka-imbak na CreateProcessA, ang malware na ito ay gumagawa ng naka-target na proseso batay sa value sa itaas na Fig 17 at ginagawa ang prosesong iyon sa suspendidong mode.
![]()

Ang pamamaraang je3uFjEe5y() ay nag-imbak ng WriteProcessMemory, na-decryption nito ang huling payload na ".text" na seksyon sa naka-target na memorya ng proseso .

IOCS:
6A9F890C529C410FA32793F496E7F200
0DA34A44EE4876DD5E35939AF02F1D32
D751816C3673935BF989716ABD0DAB21
F8EC1BE3F2BD8269DB033375ED1A841E
Mga pagtuklas:
Trojan.Formbook.S34651912
Panuntunan ni Yara:
import "pe"
tuntunin Formbook_varainat
{
mga kuwerdas:
$s1=”AP7H9H5OI4478F8CH05FGA” wide ascii
$s2 ={67 B7 76 87 0A C8 C4 5E 29 AC 76 8F 70 E8 6E 09 91 40 4A AE 28 D5 7F CE AB 90 4B D3 07 C1 A8 B2 A0 B3 88 B9 AE 58 F3 }
$s3 ={78 33 66 C6 4D CD 82 2F B8 D6 10 8A B7 E9 D5 65 8B 45 1A B7 ED 08 2E B3 89 2F 0B 89 75 F5 08 5D}
kondisyon:
lahat sila
}
Mga TTP ng MITER ATTACK:
| Pantaktika | Teknik / Pamamaraan |
| Paunang Pag-access | T1566.001: Spear phishing Attachment |
| Pagpapatupad | T1059.001:Command and Scripting Interpreter:PowerShell |
| T1053.005:Nakatakdang Gawain/Trabaho:Nakatakdang Gawain | |
| Pagtitiyaga | T1053.005:Nakatakdang Gawain/Trabaho:Nakatakdang Gawain |
| Pag-iwas sa Depensa | T1027.003:Obfuscated Files o Information:Steganography |
| T1036:Nagbabalatkayo | |
| T1497:Virtualization/Sandbox Evasion | |
| T1055.012:Proseso ng Pag-iniksyon: Proseso ng Hollowing | |
| Pagkatuklas | T1082:Pagtuklas ng Impormasyon ng System |
| T1083:Pagtuklas ng File at Direktoryo | |
| T1057:Pagtuklas ng Proseso |
Paghihinuha:
Sa malware bilang isang serbisyo, makakakita kami ng maraming bersyon ng formbook. Kadalasan ang wrapper ay patuloy na nagbabago ngunit ang huling kargamento ay nananatiling pareho, ito ay upang maiwasan ang AV detection. Inihahatid ng mga banta ng aktor ang malware na ito sa pamamagitan ng spear phishing mail kung saan nakalakip ang mga malisyosong dokumento o mga executable binary. Pinapayuhan ang mga user na iwasang magbukas ng mga kahina-hinalang email na may mga attachment. Ang variant na ito ay nagpapatupad ng mga diskarte sa pag-iwas upang mapanatili ang pagtitiyaga. Pag-iwas na mahuli ng system administrator o user sa pamamagitan ng pagtatago ng katangian ng file. Pagtitiyak na isang instance lang ng malware ang tumatakbo sa system sa pamamagitan ng paggawa ng mutex.
May-akda: Rumana Siddiqui at Manoj Kumar Neelamegam



