Skip to content
InfraHunter
All research
Threat ResearchTLP:CLEARTLP:CLEAR — Disclosure is not limited. This material may be shared publicly without restriction.

Exposed Opendir Reveals APT DONOT Cyber Espionage Toolkit Targeting Pakistan's Nuclear and Energy Sectors

Exposing a APT Donot multi-stage toolkit featuring Go-based reverse shells, Inveigh credential harvesting, internal network reconnaissance, and targeting indicators associated with Pakistan's nuclear, energy, and industrial control sectors.

Published
Reading time
13 min
Analyst
@volrant136
Region
South Asia / PAKISTAN
  • Cyber Espionage
  • APT
  • SCADA
  • Open Directory
cover

An exposed Open Directory hosted at 193.29.104[.]84:8099 has revealed a collection of tools and scripts potentially associated with an intrusion targeting Pakistan's strategic sectors. The scripts contain hardcoded references to Pakistan's nuclear infrastructure, power sector, and industrial control systems (ICS), including PAEC, Chashma, KANUPP, SCADA, and Modbus.

Using VirusTotal and StrikeReady post, the investigation draws a connection to DoNot APT (APT-C-35), adding a significant dimension to the investigation.

This research examines the exposed toolkit, its development timeline, associated infrastructure, execution capabilities, and targeting indicators to assess the nature and possible objectives of the activity.

Key Findings

  • Pakistan-focused reconnaissance: Recovered scripts contain references to PAEC, Chashma, KANUPP, SCADA, Modbus, and other strategic-sector terminology.
  • Credential harvesting: Multiple Inveigh configurations demonstrate attempts to capture NetNTLM hashes through LLMNR, NBNS, and mDNS poisoning.
  • OGDCL impersonation: Some scripts modify domain-related environment variables to impersonate OGDCL.
  • Internal reconnaissance and lateral movement: Scripts enumerate user profiles, search for potentially sensitive documents, map internal networks, and test credentials against administrative shares.
  • Continued toolkit development: Changes observed between October 9 and October 14, 2026, indicate that the exposed collection evolved over several days.

Infrastructure Details

The IP address 193.29.104[.]84 is hosted on the network of M247 Europe SRL (AS9009). According to Hunt.io (opens in a new tab), the IP belongs to the 193.29.104.0/24 network and is geolocated to Saint-Denis, Île-de-France, France.

Image
Figure 01: Hunt.io scan results for 193.29.104[.]84.

An examination of the exposed directory revealed 48 files totaling about 12 MB, with no subdirectories.

Image
Figure 02: Opendir hosted at 193.29.104[.]84:8099, displaying 48 files totaling approximately 12 MB of data.

The interesting part was the reconnaissance scripts, which revealed clues about the actor’s targets through hardcoded paths and keyword searches.

Evolution of the Exposed Staging Infrastructure

The earliest identified files in the exposed collection date to October 9, 2026, with an initial batch of 34 files. The additional files appeared over the following days, including a plaintext credential, updated reverse shells, and modified Inveigh configurations.

The most notable changes are summarized below.

Mermaid diagram (1)
Figure 03: Timeline of staging server activity, showing file additions and toolkit updates between October 9 and 14, 2026.

The October 10 upload of ad_pwd.txt suggests possible credential exposure, although its origin and operational use remain unconfirmed. The October 14 files reference OGDCL spoofing in the Inveigh configurations. It highlights continued development of the toolkit several days after the initial upload, indicating continued development of configurations for LLMNR/NBNS poisoning.

Targeting Indicators: Pakistan's Nuclear, Energy, and ICS Infrastructure

The analysis of the recovered batch scripts revealed references to Pakistan’s nuclear infrastructure, power grid, and industrial control systems.

contenthunt.bat searches user files for keywords such as PAEC, Chashma, KANUPP, SCADA, and Modbus, while hunt88.bat checks browser-related artifacts and other system locations for additional information. A third script, invgo2.bat, configures the environment to impersonate OGDCL before launching Inveigh.

Mermaid diagram (2)
Figure 04: Relationship between recovered scripts and the Pakistani nuclear, power, industrial-control, and oil-and-gas references identified in their contents.

Note: These findings suggest a focused interest in Pakistan’s nuclear and energy sectors, although the scripts alone do not confirm the identity of the victim organization or the actor’s ultimate objective.

Inside the Attacker's Toolkit

Remote Access and Reverse-Shell Capabilities

The actor used multiple scripts to establish and maintain reverse-shell access. rev.ps1 and revcmd.ps1 connect to 179.43.145[.]232:61135, while rev106.ps1 connects to the staging server at 193.29.104[.]84:45600. The tcptest.ps1 and t.ps1 scripts check connectivity to these endpoints and the additional address 31.7.61[.]8:443. Batch files repeatedly relaunch payloads, with rv88b.bat downloading the executable again on each iteration.

Reverse Shell Network Flowchart
Figure 05: Reverse-shell scripts, network endpoints, connectivity checks, and batch-based execution loops identified on the staging server.

Credential Harvesting with Inveigh

A substantial portion of the toolkit focuses on credential capture using Inveigh (opens in a new tab), a PowerShell tool that poisons LLMNR/NBNS/mDNS responses to capture NetNTLM credential hashes from hosts on the same network segment.

The actor went through at least ten iterations of Inveigh configurations across the operation. Early scripts (inv3.ps1 through inv10.ps1) tested different combinations of protocols, output directories, and verbosity levels.

inv12.ps1 represents the most sophisticated approach: it launches Inveigh inside a hidden child PowerShell process with all stdio redirected, making it invisible to any user watching the screen.

Image
Figure 06: PowerShell launches Inveigh.ps1 in a hidden, non-interactive process, bypassing the execution policy and redirecting standard output and error streams for controlled execution.

It writes the child PID to C:\inv12pid.txt so the operator can kill it cleanly later.

inv8.ps1 and inv9.ps1 spoof environment variables before running Inveigh to make it appear as a workgroup machine:

PowerShell

1$env:USERDOMAIN = "WORKGROUP"
2$env:USERDNSDOMAIN = "workgroup.local"

The later batch files (invgo2.bat, tinv2.bat, tinv3.bat) switched from WORKGROUP to spoofing OGDCL specifically, which is more convincing on a network where OGDCL machines are expected to be present.

Image
Figure 07: invgo2.bat launches Inveigh with LLMNR, NBNS, mDNS, HTTP, and SMB enabled, redirects console output to C:\inv\console2.txt, and configures file-based logging.

Host and Network Reconnaissance

recon88.bat runs four commands (arp -a, route print, net share, and nbtstat -S) and appends everything to C:\Windows\Temp\recon88.txt.

hunt88.bat and hunt88b.bat both focus entirely on the ELECTRICAL user account. hunt88b.bat walks the user's entire profile, collecting directory listings from Recent files, Desktop, Documents, Chrome user data, browser history, and network shortcuts. hunt88.bat adds keyword searches on top of that, specifically looking for nuclear and ICS-related content in those same locations.

Batch File Data Collection Flowchart
Figure 08: Flowchart comparing hunt88.bat keyword-based searches and hunt88b.bat user-profile enumeration, highlighting collected locations and output files.

contenthunt.bat searches every file in C:\Users\ELECTRICAL\Documents\ for the 15 keywords listed earlier and writes matching filenames to C:\Windows\Temp\contenthunt.txt. The script appears designed to identify potentially sensitive documents for subsequent collection.

Lateral Movement

lantest.bat cycles through 30 hosts on 192.168.6.0/24 and attempts to connect to C$ using three credential sets. All output goes to C:\Windows\Temp\lantest.txt.

Image
Figure 09: lantest.bat scans selected LAN hosts and tests hardcoded credentials against administrative shares, logging successful access attempts.

C2 Infrastructure and Executable Functionality

Seven executable files were identified, comprising five potentially malicious tools and two legitimate curl binaries. The five executables found in the opendir break into three categories.

  • rvb80_232.exe, rvb61135.exe, and rvb_new.exe are Go reverse shells compiled weeks apart, each one incrementally more hardened than the last.
  • Beacon-trydnd1.exe is a custom HTTP C2 implant.
  • rv88b.exe is a minimal loader wrapping a stock Metasploit x64 payload.
  • curl_x64.exe and curl_x86.exe are clean curl 7.40.0-DEV binaries and are not covered here.

After analysis with IDA Pro, I summarise the identified executable groups, their C2 infrastructure, and their primary functionality as shown below:

Mermaid diagram (5)
Figure 10: Overview of the identified malicious executable groups, their command-and-control (C2) infrastructure, communication mechanisms, and primary capabilities.

The Go-based reverse shells (rvb80_232.exe, rvb61135.exe, and rvb_new.exe) establish outbound connections to 179.43.145[.]232 (ports 80 and 61135) and 193.29.104[.]84 (port 45600), providing remote command execution through cmd.exe. After analysis, a progression in the attacker’s tooling, with symbol stripping introduced in the second sample and TLS encryption and a change in C2 infrastructure observed in the third, was found.

Malware Evolution Timeline Infographic
Figure 11: Evolution of Go-based reverse shell executables, highlighting changes in build dates, Go versions, communication ports, symbol stripping, TLS usage, and C2 infrastructure.

The Beacon-trydnd1.exe implant communicates with 179.43.145[.]232 through HTTP polling, retrieves commands from HTTP response headers, and supports process injection.

In contrast, rv88b.exe functions as a Metasploit x64 shellcode loader, executing a reverse shell payload that provides remote command execution.

Mermaid diagram (3)
Figure 12: Execution flow illustrating the entry-point initialization, modification of memory permissions, execution of the embedded Metasploit x64 API resolver, and activation of the reverse shell payload.

The following table provides a consolidated comparison of all identified executables:

BinaryTypeCompilerC2PortTLSStrippedUpload
rvb80_232.exeGo reverse shellGo 1.20.2179.43.145[.]23280NoNoOct 09
Beacon-trydnd1.exeHTTP C2 implantMinGW/GCC179.43.145[.]232(HTTP)NoNoOct 09
rvb61135.exeGo reverse shellGo 1.20.14179.43.145[.]23261135NoYesOct 11
rvb_new.exeGo reverse shellGo 1.26.7193.29.104[.]8445600YesYesOct 11
rv88b.exeMetasploit loaderC (x64)(in shellcode)(unknown)N/AYesOct 14

Attribution Assessment: Indicators Linking the Activity to DoNot APT (APT-C-35)

The investigation identified a significant potential connection between the exposed infrastructure and activity associated with DoNot APT (also tracked as APT-C-35 and SectorE02).

The third C2 IP, 31.7.61[.]8 (port 443, used in tcptest.ps1), resolves to pakdw.orchidheaven.online in VirusTotal passive DNS (opens in a new tab) as of September 18, 2025.

Image
Figure 13: VirusTotal — IP address relations: Show 31.7.61[.]8 and the passive-DNS record for pakdw.orchidheaven[.]online.

The same domain was referenced in a StrikeReady Labs post (opens in a new tab) discussing an India-linked APT campaign, which also identified a malicious PowerPoint document named File Copy.ppt (SHA-256: bfaec98e7fdcf93c1bce3cc592f29e098e1facef0387cdccf8b0d7e5fa87c5ee).

Image
Figure 14: StrikeReady Labs post: Show the post identifying the domain, the PowerPoint filename, and its APT assessment.

The analysis of the mentioned file on VirusTotal is given below:

Image
Figure 15: VirusTotal — PPT sample: Show the SHA-256, detection ratio (21/62), and macro behavior information.

The file File Copy.ppt behavior maps directly onto documented DoNot macro techniques:

BehaviorFile Copy.pptDoNot documentation
VBA triggerAuto_Open() on PPT openworkbook_open / document_open macros
Payload decodeBase64 decode at runtimeBase64 used in payload chains
Batch generationMacro writes .bat to diskpkhfg.bat, tbreah.bat released from macros
Scheduled task namesyfda, mxfd (random 4-letter)schtasks-based persistence chains
Staging path%PUBLIC%\Music\C:\Users\Public\Music\aco confirmed in QianXin Heavy Shadows report
Payload deliverycurl downloads twas.exe, tewsc.batURLDownloadToFile / HTTP delivery

The %PUBLIC%\Music\ staging path is a specific DoNot fingerprint. The QianXin Heavy Shadows report (opens in a new tab) on recent DoNot techniques lists C:\Users\Public\Music\aco explicitly as a DoNot staging directory alongside C:\Users\Public\Videos\nota. That same report confirms DoNot's use of macro-released batch files running schtasks commands, matching the yfda/mxfd task creation in the PPT lure.

Pakistan nuclear and energy sector targeting is consistent with DoNot's documented focus on South Asian government and defense organizations, including prior Pakistani campaigns documented by Rewterz (opens in a new tab) (APT-C-35 targeting Pakistani official organizations) and Cyble (opens in a new tab) (DoNot targeting Pakistan's defense manufacturing sector).

These connections strongly pointed to APT DoNot Group.

Conclusion

The operation follows a straightforward playbook once initial access was achieved on the ELECTRICAL account.

First, environment checks. tp.bat verifies PowerShell execution and retrieves the username and PS version. tcptest.ps1 confirms which C2 endpoints are reachable. ptest.bat checks that C:\Windows\Temp and C:\loot are writable.

Second, payload staging. go.bat uses the bundled curl to download Inveigh and the initial Inveigh wrapper from the staging server into %USERPROFILE%\Wallet\Hunrd\. This directory is used as the persistent local toolkit location throughout the campaign.

Third, shells. Multiple reverse shell paths run in parallel loops: the PowerShell variants connecting to 179.43.145[.]232:61135 and the Go binary connecting to 179.43.145[.]232:80.

Fourth, recon. recon88.bat maps the network. hunt88.bat and hunt88b.bat catalog the ELECTRICAL user's files. contenthunt.bat searches for nuclear and ICS documents.

Fifth, credential harvesting. Inveigh runs on the local network segment, poisoning LLMNR/NBNS/mDNS queries and capturing NetNTLM hashes from other machines. The October 14 addition of OGDCL domain spoofing shows the actor refining this step to be more convincing.

Sixth, lateral movement. lantest.bat tries the harvested credentials against 30 hosts on 192.168.6.0/24.

The infrastructure correlation and similarities to publicly documented DoNot APT tradecraft provide a credible basis for assessing a potential APT-C-35 connection.

MITRE ATT&CK

TechniqueIDFile
PowerShellT1059.001rev.ps1, revcmd.ps1, all inv*.ps1
Web ProtocolsT1071.001Beacon-trydnd1.exe, rvb80_232.exe
System Information DiscoveryT1082tp.bat
Query RegistryT1012hunt88.bat (MountPoints2)
Peripheral Device DiscoveryT1120hunt88.bat (USB mount points)
LLMNR/NBT-NS PoisoningT1557.001All Inveigh scripts and wrappers
SMB/Windows Admin SharesT1021.002lantest.bat
File and Directory DiscoveryT1083hunt88b.bat, contenthunt.bat
Credentials in FilesT1552.001ad_pwd.txt
Ingress Tool TransferT1105go.bat, run115.bat (curl + certutil)
Process InjectionT1055Beacon-trydnd1.exe
MasqueradingT1036invgo2.bat, tinv2.bat, tinv3.bat (OGDCL spoof)
Data Staged: Local Data StagingT1074.001C:\loot, C:\Windows\Temp*.txt

Indicators of Compromise

Network

IndicatorPortRole
193.29.104[.]848099Open directory / staging server
193.29.104[.]8445600Reverse shell listener (rev106.ps1)
179.43.145[.]23261135Primary C2 (PowerShell shells + rvb61135.exe)
179.43.145[.]23280Go reverse shell C2 (rvb80_232.exe)
31.7.61[.]8443Third C2 (tcptest.ps1)
pakdw.orchidheaven[.]online-Attribution Link

Host Artifacts

PathDescription
%USERPROFILE%\Wallet\Hunrd\Actor toolkit staging directory
C:\lootData collection directory on victim
C:\Windows\Temp\Inveigh.ps1Cached Inveigh script
C:\Windows\Temp\rv88b.exeReverse shell binary (Oct 14 variant)
C:\Users\Public\Videos\rvb61135.exeReverse shell binary (Oct 11 variant)
C:\Windows\Temp\recon88.txtNetwork recon output
C:\Windows\Temp\hunt88.txtKeyword search output
C:\Windows\Temp\hunt88b.txtFile listing output
C:\Windows\Temp\contenthunt.txtDocument keyword hits
C:\Windows\Temp\lantest.txtLateral movement attempt log
C:\inv\console.txtInveigh output
C:\inv2\console.txtInveigh output (alternate path)
C:\inveigh_console.txtInveigh output (alternate path)
C:\inv12pid.txtPID of hidden Inveigh process
USERDOMAIN=OGDCLDomain spoof in Inveigh wrappers

File Hashes (SHA-256)

FilenameSHA-256First Seen
Beacon-trydnd1.exe393bc7084ac943861135a222c32f720df4e4fbb73ac0cfb2a6cf4ab67282f7d22026-10-09
Inveigh.ps1cc7dd1d68dc3cc41f385afd000a516145cee2284b2526ee79dfd5e72278e2a232026-10-09
Inveigh_pub.ps1cc7dd1d68dc3cc41f385afd000a516145cee2284b2526ee79dfd5e72278e2a232026-10-09
ad_pwd.txt8126be8d793c4b1c2f377e056a19c351bbf90c3ddc1b180b041e0a073256cebc2026-10-10
contenthunt.bat2bec79043f55175f632fc8760c53a722357eec52fc3b37181237287f2b55d1842026-10-09
curl_x64.exe9c500cfe5fec24ea0cd06e18b1034dc3809233954976d3a29937d4719d139d272026-10-09
curl_x86.exe78dbe1fbbc7e5f51fa385be08bb679251e46b43be690fbc49c412d9d4f647a102026-10-09
go.bat23817da7a93a1ebae204f86438842e0a9a4e72ba25fad2a992ef03ce23b916e52026-10-09
go2.bat90bc7e727088ac3f54b5741e950e183ed33042612d9300c351956c453f58ed5a2026-10-09
hunrdloop.bate5f58614d9fef5609e02dcc3a7b03610a5e566e55ca2dcbbc0f21e99420e3b582026-10-14
hunt88.bat0c2e135c9d782af2c15031628d408e5585d1d63c4a059c5b92c7a340e2c7dc4b2026-10-09
hunt88b.bat8fdafa606326b1d53c4ffff9414050064b0318087e6154af059ad9720c5233fb2026-10-09
inv10.ps196c962abe22d2ab3f74698070ad9210ffab2c684be5be5e817ee9886db7fbd6b2026-10-09
inv12.ps140b9dfd4beaf3b9f3922584e80ef77dc2274e707f27031104ac22a7d74d127782026-10-09
inv13.ps18e9cfd427efc7df647e4cd0f3cff6b51f8ec0a9b41d6de073b8d77a55a2883bb2026-10-09
inv3.ps1701387d51eb1daef68a39b1964c05a8133295f540286690dee482ecd62fcf2ce2026-10-09
inv4.ps1db56d38f075746d92f37da5445b486af5f720b934ba41733e087ba9d540cdc082026-10-09
inv6.ps18e9cfd427efc7df647e4cd0f3cff6b51f8ec0a9b41d6de073b8d77a55a2883bb2026-10-09
inv7.ps1d591126dc7d844cc01dc500a498b48a1387e528a6ed7dd7d8fba27f2cf72a2512026-10-09
inv8.ps1a5f78bf5056c43d03cbdd30039a6be51158701ec92abe8888b38a3e622442d422026-10-09
inv9.ps1f00976def17340f329a4f1b443a344ebf7326965481895f9269553240f3f0f072026-10-09
invdbg.bat5bc32f94ab1ddb6e71fab3d0d4ecc39b88e8048e1116b322589bfaaa6453ac602026-10-09
inveigh.bat8b7cc7fa0c1d587f49b356f598f9c64ac67b346c1f28aac7ceeeb44c224173582026-10-09
invgo.bat59a65879e97a3110d6c17b5837901b1d55f273a76974b5785f3840a8bcbf49b82026-10-14
invgo2.bated264ed0a89ae2050a1fc90b6990469a18dba642eeacc3ff421dbd9ebda778632026-10-14
invrun.batb9c84474f87a0ee06bfee8967b1e89e2016ff70fde26b695496c505ada16d26a2026-10-14
invrun.ps1114c1b82ddf8632a09932e6522ea3fa65ab082accc9a62b3d69d74be39c00cdb2026-10-09
invtest.bat0175c1b2c3fb7400e2aaa78a60fcc24741d0cfbddff06a7adb3e895ae578e3692026-10-09
invtry.batac5994d0c962815e5837de7e8a4a5bd903c7f937298d0f0e864b791f2c4f7fd32026-10-09
lantest.bat0f3b433672ca747273c03572c296e32715e49ff8049a124304752740144ff6fb2026-10-09
ptest.bat6061c4214407f6ad89825cacb7db5c518dc99b1b7306d45bd4ead8ef8a48bc7a2026-10-09
recon88.batc04761d9d1491e7cc6fdde4893a8c189a55a831f9417edb9dbddbc1ca705d7a72026-10-09
rev.ps11c9706602a5edec07943ef8f1a6077f7a82186e5870db82cf70ad33fb9f62f612026-10-09
rev106.ps1bd6735f902dbf4483aa557cd1f535c984e530b3ec7ba8d638cd6234c77ec12222026-10-11
revcmd.ps1dbbd28a151e0ded943dfcd89ad8ccdcc82b9624420cfc8026341fd438eee6eeb2026-10-09
revloop.batf69b79d19182843048bb97877429a6f8729d902cb3eec9c9ff0efc1e007bb4662026-10-09
run115.bat3a28d424ef15812f47817de93dc01b1e973ee0b7a06c6af099c79a04acf827fd2026-10-11
rv88b.bat608c6ef36e3bc504750b18df8aa4f5b18be97276cc81dd9c82afccbf9f9fbc662026-10-14
rv88b.exea9c3d5b4a8e9458b12305b1eb7df4c2087d0a0697b904cddcd22282ae613b2282026-10-14
rvb61135.exe40b3fd6b7f355d9186840337d3fbea7a130cb60d556c71bfac242fbadad76bcf2026-10-11
rvb80_232.exe7b3570b9c01b40a840d16ce5639988607b86bb4550b781a384a9ed9907d83df22026-10-09
rvb_new.exe00ea396ca1d9ac288701449748a28d30a2d180dfd3c2a8e3ea2d76b6232b949e2026-10-11
rvbloop.bat14ea9d7f141d9dfbd857bfc12eed4609d7258e9a6035ccf002ad9d82940d2e742026-10-09
t.ps109ef5d350ee8521fa7b123752a0475efa364623ad5b37cbf76cd0e2d987b8ad22026-10-11
tcptest.ps1501128d49fe306cead27cefc69060aafdfaf68c355a58a7f3b53753843d717052026-10-09
tinv2.bat22d38a4d2026c0628c369f4c0915104b3117db84ee03f8ff20863a67718e47112026-10-14
tinv3.bat71779722c204a8847076813b1cccf6c4fad2c6fc2c684e5e74e31a487872a0732026-10-14
tp.bat88bb72a9a27268ecf6f81b671f7bd6d66202370bf212d9948c9185bba3bc80a92026-10-09

Share

X(opens in a new tab)

Published by @volrant136


  • cover
    Threat Research

    From JBRJ to JUCEC: Exposed Infrastructure Reveals a Broad Brazilian Government Intrusion Campaign

    Hunt.io Attack Capture identified three exposed directories on a Malaysian VPS containing tooling and evidence linked to multiple Brazilian public-sector targets. The recovered material reveals a confirmed compromise of Brazil's Jardim Botânico do Rio de Janeiro, an extensive intrusion toolkit targeting Ceará's state Board of Trade, credential and session harvesting, persistence mechanisms, and a staged Linux kernel privilege-escalation exploit.

    34 minutes to read
  • cover
    Threat Research

    One Host, Six Operations: How Two Open Directories Exposed a Multi-Target Campaign

    Two open directories on a single Singapore host exposed the working files behind six separate operations. The recovered data shows a mix of LLM gateway fraud, government and military reconnaissance, credential spraying, SQL injection attempts, proxy infrastructure, and a confirmed compromise of a Mexican web application.

    20 minutes to read
  • cover
    Threat Research

    Nigerian and Kenyan Government Portals Targeted by Suspected Chinese-Speaking Operator in Multi-Stage Credential Harvesting Campaign

    An exposed server uncovered a collection of scripts, credentials, session artifacts, and exploitation tooling targeting government portals across several countries. This investigation traces the infrastructure from DeHashed searches and WordPress testing to Java deserialization payloads and a Telegram-controlled automation framework.

    17 minutes to read