Inside the FortiBleed Open Directory: A Technical Analysis of What the Attacker Left Behind

Inside the FortiBleed Open Directory: A Technical Analysis of What the Attacker Left Behind
CloudSEK tracked FortiBleed, a large credential-compromise campaign targeting internet-facing Fortinet FortiGate firewalls and SSL VPN gateways, and found that its headline numbers were inflated by registration data, internal realm names, and non-Fortinet devices rather than verified company breaches. The exposed attacker directory revealed Hashtopolis-based cracking infrastructure, reused passwords, post-exploitation Active Directory tooling, and a revenue-sorted access-selling pipeline, with only a small fraction of the attributed entries confirming real internal compromise. #FortiBleed #FortiGate #Hashtopolis #FortiOS #Kerberos

Keypoints

  • The FortiBleed campaign targeted internet-facing Fortinet FortiGate firewalls and SSL VPN gateways worldwide.
  • The exposed attacker server contained 319 files showing the full workflow: scanning, cracking, enrichment, quality control, post-exploitation, and access resale.
  • The operators used a Hashtopolis 0.14.3 instance and rented Vast.ai GPU workers, with logs indicating about 36 GPUs in use.
  • The widely cited 21,632 figure was not a list of verified breached organizations; it mostly reflected FortiGuard registration data and internal Active Directory realm names.
  • Password reuse was extensive, with common credentials appearing across many unrelated brands and geographies.
  • The toolkit included Active Directory enumeration and spraying scripts such as ad_enum.py, spray_admin.sh, and spray_da.py, showing post-exploitation activity inside victim networks.
  • The final output was a revenue-sorted catalogue of SSH and VPN access for sale, and at least one live SSL VPN configuration proved active access into a victim network.

MITRE Techniques

  • [T1110.001] Password Guessing – Used in brute-force and password-spraying activity against exposed devices and internal accounts (‘brute force’ and ‘spray_admin.sh run Kerberos and SMB password spraying against internal domain controllers’).
  • [T1110.002] Password Cracking – Used offline hash cracking against captured credentials to build a validated dataset (‘offline hash cracking against exposed devices’ and ‘hashes were cracked on a ~45-GPU Hashtopolis cluster’).
  • [T1595.001] Active Scanning – Used scanners to locate exposed FortiGate interfaces and other web logins (‘scanning located exposed FortiGate interfaces’ and ‘the scanners that found targets’).
  • [T1210] Exploitation of Remote Services – Used working credentials and exposed management interfaces to access devices and pivot into victim networks (‘validated credentials were used to pivot into networks’ and ‘live SSL VPN configuration file pointing into a victim network’).
  • [T1078] Valid Accounts – Leveraged stolen or reused device credentials for authenticated access (‘a verified dataset of working device credentials’ and ‘validated credentials’).
  • [T1003.003] OS Credential Dumping: NTDS – Captured Kerberos-related authentication material and internal AD data from compromised environments (‘Kerberos pre authentication data’ and ‘captured from inside their networks’).
  • [T1087.002] Domain Account Discovery – Enumerated Active Directory objects and admin-related accounts (‘enumerate internal Active Directory environments over LDAP — pulling domain administrators’).
  • [T1046] Network Service Discovery – Tested SMB access and spidered network shares as part of internal reconnaissance (‘test SMB access and spider network shares’).
  • [T1021.001] Remote Services: Remote Desktop Protocol – No direct RDP evidence was described; not included.
  • [T1589.001] Gather Victim Identity Information: Credentials – Collected and organized credentials, email domains, and registration details for attribution and targeting (‘credential database text file maps each device login to a brand domain’ and ‘contact email supplied at FortiGuard registration’).
  • [T1566] Phishing – Not mentioned in the article; not included.
  • [T1105] Ingress Tool Transfer – Deployed tooling and scripts on exposed infrastructure, including automation and cracking components (‘tooling, automation scripts, connection strings, scheduled jobs’).

Indicators of Compromise

  • [IP address] Hashtopolis coordination and exposed attacker infrastructure – 85.11.187.8, 85.11.187.28, and 193.8.187.2
  • [IP address] Additional Hashtopolis worker/instance hosts – 185.229.26.83, 213.169.49.142, and other 3 IPs
  • [File name] Cracking and control scripts found on the exposed server – bot.py, hashpanel.log, and panel.js
  • [File name] Credential and target datasets – corps.txt, creds_with_pass.txt, and targets_300M_plus.txt
  • [File name] Post-exploitation and filtering tools – ad_enum.py, spray_admin.sh, and clean_honeypots.py
  • [File name] Live access configuration – vpn5.conf, described as a working SSL VPN into a victim network
  • [Hash format / credential artifact] Captured authentication material – legacy salted-SHA256 FortiOS hashes, PBKDF2 hashes, and krb5pa$18200 Kerberos entries
  • [Wordlist / file set] Password-spraying wordlists – pass_ahmad, pass_reza, and other named wordlists


Read more: https://www.cloudsek.com/blog/inside-the-fortibleed-open-directory-a-technical-analysis-of-what-the-attacker-left-behind