Back to reports
highPhishing

LOKI Ransomware/Extortion Operation — Full Infrastructure & Panel Analysis

PublishedMarch 13, 2026
Threat Actors:progressed through three phases:using automated certbot ACME clients.and Campaign AnalysisLOKI GroupEvidence"LOKI" — Iranian Nexus]address.
phishingsocial-engineeringc2ransomwareexploitaptspearphishing

Breakglass Intelligence — Investigation Report

Classification: TLP:AMBER — Restricted distribution Priority: CRITICAL Analyst: GHOST / Breakglass Intelligence Date: 2026-03-13 Version: 2.0 (Round 2 — Full Panel Scrape) Lead Name: loki [195.24.237.15]


Executive Summary

IP 195.24.237.15 hosts LOKI, an active ransomware and data extortion operation running a public clearnet leak site on plain HTTP. This report consolidates findings from two investigation rounds: the initial infrastructure and OSINT analysis (Round 1), and a comprehensive panel scrape including full source code recovery, API dump, and evidence photo retrieval (Round 2).

What we know:

LOKI has been operating continuously since at least December 2025. The threat actor progressed through three phases:

  1. November–December 2025 — Cryptocurrency wallet phishing (TrustWallet, Phantom Wallet)
  2. December 2025 — Financial-sector phishing (CTBC Bank lookalike domains)
  3. February 2026–present — Active ransomware/data extortion with one confirmed victim

The current extortion target is Credit Freedom & Restoration (creditfreedomrestoration.com), a US financial services company running Vtiger CRM 6.4.0. 230 GB of PII belonging to 30,000+ US citizens — including SSNs, credit card data (photographs and plaintext), driver's licenses, credit reports, utility bills, and Equifax login credentials — was exfiltrated and is actively available on gofile.io across five live links as of 2026-03-13 00:29 UTC.

Round 2 key findings:

  • The LOKI panel API endpoint /api/data is open with no authentication and returns the complete victim database in structured JSON
  • Three evidence photographs were downloaded from /static/uploads/ — file manager screenshots showing the stolen file tree — uploaded by the operator on 2026-03-07 22:08:45 UTC
  • Complete site source code (HTML, JavaScript, CSS) was recovered and analyzed
  • No admin panel, debug console, or hidden API routes were found
  • The Flask backend is confirmed by 405 error page format
  • Zero security headers (no HSTS, no CSP, no X-Frame-Options, no CORS policy)
  • The victim site (creditfreedomrestoration.com) is still live and still running vulnerable Vtiger CRM 6.4.0 as of 2026-03-13

Attribution: Iranian nexus via personal Iranian-name Gmail in RIPE WHOIS (hadihasanzadebashtiyan@gmail.com) and Iranian LIR as IP block maintainer (lir-ir-amingostar-1-MNT). All campaign phases anchored to the same persistent IP — a catastrophic operator OPSEC failure.


IOC Metadata

FieldValue
IP Address195.24.237.15
Current ASNAS209373 (Swissnet LLC)
Previous ASNAS60223 (Netiface Limited, GB)
Hosting ProviderSwissnet LLC / RIPE
IP Block195.24.237.0/24
Country (RIPE)NL (Netherlands)
RIPE Abuse Contacthadihasanzadebashtiyan@gmail.com
Block Created2026-02-22
Sponsoring LIRlir-ir-amingostar-1-MNT (Iranian LIR)
Sponsor EntityORG-DM262-RIPE (Daniel Mishayev, IL/DE)
First Phishing Seen2025-12-05 (trustwallet.com.do)
Leak Site Active Since2026-02-07
VirusTotal Detections1 malicious, 2 suspicious (Mar 2026)
Reverse DNSNone (NXDOMAIN)
SSH BannerOpenSSH 8.9p1 Ubuntu-3ubuntu0.10
Web Servernginx/1.18.0 (Ubuntu)
BackendPython/Flask (confirmed by 405 error format)
Security HeadersNONE — no HSTS, no CSP, no X-Frame-Options
Tox ID7290408F9A2C4D60FB77CB9CEE25E177F07C47BD22A437137CB4E60D3B1C692EBB1BA203A90F
Evidence Photos Uploaded2026-03-07 22:08:45 UTC (Unix: 1772921325)
Round 2 Scrape Time2026-03-13 00:28–00:29 UTC

Phase 1 — Infrastructure Profiling

Network Registration

The /24 block 195.24.237.0/24 was registered in RIPE on 2026-02-22 — approximately 3 weeks before this investigation. Key WHOIS data:

inetnum:      195.24.237.0 - 195.24.237.254
netname:      Swissnet_LLc
country:      NL
admin-c:      AA46315-RIPE
tech-c:       AA46315-RIPE
status:       AGGREGATED-BY-LIR
created:      2026-02-22T08:25:05Z
mnt-by:       lir-ir-amingostar-1-MNT        <-- IRANIAN LIR MAINTAINER

abuse-mailbox: abuse@swissnetwork.io
address:      121 E 2ND ST STE 401, OWENSBORO, KY 42303   <-- LIKELY FAKE US ADDRESS

route:        195.24.237.0/24
origin:       AS209373
mnt-by:       lir-ir-amingostar-1-MNT

OPSEC LEAK: The RIPE abuse contact for the /24 block is hadihasanzadebashtiyan@gmail.com — a personal Gmail address. The name "Hadi Hasanzadeh Bashtian" (حسن‌زاده بشتیان) is an Iranian surname, consistent with the Iranian LIR maintainer.

ASN AS209373 (Swissnet LLC)

The AS was created 2026-02-12. Sponsoring organization is ORG-DM262-RIPE (Daniel Mishayev, Israeli national, address: Lilienstraße 5, 94051 Hauzenberg, Germany, +4917640385000). Swissnet LLC upstream connections: AS51396 and AS62403.

Swissnetwork.io uses Cloudflare nameservers and Zoho Mail (zoho-verification=zb36335559.zmverify.zoho.com), presenting a professional front despite serving as a bulletproof hosting vehicle.

Prior ASN: Before 2026-02, the same IP operated under AS60223 (Netiface Limited, GB) — URLScan scans from December 2025 show the IP on Netiface hosting crypto phishing domains.

Active Services on 195.24.237.15

PortProtocolServiceBanner / Notes
22TCPSSHSSH-2.0-OpenSSH_8.9p1 Ubuntu-3ubuntu0.13
80TCPHTTPnginx/1.18.0 (Ubuntu) — LOKI leak panel

No HTTPS (port 443). The operator chose plain HTTP for the extortion panel, exposing all traffic in cleartext and enabling trivial interception.

Technology Stack (Confirmed by Source Code)

LayerTechnologyEvidence
OSUbuntu 22.04 LTSOpenSSH 8.9p1 Ubuntu-3ubuntu0.13 banner
Web Servernginx/1.18.0Server header on all responses
BackendPython / Flask405 "Method Not Allowed" error page format
APIJSON REST API/api/data returns structured JSON
FrontendVanilla JavaScript (no frameworks)script.js analyzed — no React/Vue/jQuery
CSSCustom CSS with variablesstyle.css (8.0 KB) with CSS custom properties
FontShare Tech MonoGoogle Fonts CDN call (OPSEC: leaks visitor IPs)
LogoSVG from svgrepo.com/static/logo.svg — public SVG library asset
File Dropgofile.io5 active gofile.io links for PII distribution

Phase 2 — Panel Scrape: API, Source Code & Endpoint Analysis

Round 2 findings from active scrape conducted 2026-03-13 00:28 UTC. No re-probing of target occurred after initial scrape.

2.1 — API Endpoint: GET /api/data (No Authentication)

The LOKI leak site exposes its entire victim database via an unauthenticated REST API endpoint at http://195.24.237.15/api/data. There is no API key, no session requirement, and no rate limiting observed.

Full captured JSON response:

{
  "stats": {
    "active_since": "2026-02-07",
    "breaches": 1,
    "id": 1,
    "leaked_data_gb": 230.0
  },
  "victims": [
    {
      "countdown_end": "0001-01-01T00:00",
      "data_stolen": "PII Data (DLs, SSNs(pics), credit cards(pic and written plaintext), utility bills, credit reports)",
      "description": "Website: http://creditfreedomrestoration.com/\r\nDB type: Vtiger crm 6.4.0 that includes 30k+US members fullz, SSNs, equinax logins (and other websites)\r\n[LEAKING 1 FOLDER PER DAY]\r\n\r\nDATA FORMAT:\r\n/cportal/creditreport\r\n/cportal/idcardupload\r\n/cportal/mortgageupload\r\n/cportal/uploaddocs\r\n/storage/{2016-2026}",
      "download_link": "https://gofile.io/d/0Kv7aY\r\nhttps://gofile.io/d/HAne2i\r\nhttps://gofile.io/d/DPTV4M\r\nhttps://gofile.io/d/KptulC\r\nhttps://gofile.io/d/RWzKpM",
      "id": 1,
      "name": "Credit Freedom & Restoration",
      "photos": "[\"1772921325_2.png\", \"1772921325_3.png\", \"1772921325_logo_main.png\"]",
      "size_gb": 230.0
    }
  ]
}

JSON Schema Analysis:

stats object:

FieldTypeValueNotes
active_sincestring"2026-02-07"Self-reported operation start date
breachesinteger1Victim count (currently only 1 active victim)
idinteger1Auto-increment row ID — backend uses a relational database
leaked_data_gbfloat230.0Total GB claimed across all victims

victims[] array — per-victim object:

FieldTypeNotes
idintVictim row ID; current only value is 1
namestringVictim organization display name
descriptionstringMultiline; CRLF (\r\n) newlines — Windows line endings in actor's database
data_stolenstringSummary of data categories stolen
download_linkstringNewline-delimited gofile.io URLs
photosstringJSON-encoded string (not a true JSON array) — filenames from /static/uploads/
size_gbfloatVictim-specific data size in GB
countdown_endstringISO datetime; "0001-01-01T00:00" = sentinel value indicating no active timer

API Behavior:

MethodEndpointResponseNotes
GET/api/data200 + JSONFull victim database, no auth required
POST/api/data405Flask "Method Not Allowed" error page
PUT/api/data405Flask "Method Not Allowed" error page
DELETE/api/data405Flask "Method Not Allowed" error page
GET/api/data?format=csv200 + same JSONQuery params silently ignored
GET/api/data?limit=1200 + same JSONNo pagination implemented
GET/api/data?id=2200 + same JSONNo filtering implemented

The 405 error pages are consistent with Flask's default werkzeug error handler, definitively confirming the Python/Flask backend.

Key intelligence from the API response:

  • countdown_end: "0001-01-01T00:00" — The sentinel date (year 1 AD) indicates the countdown timer is not active for this victim. The JavaScript renders download links immediately when this value is in the past. This means the actor has already committed to leaking — there is no remaining countdown period during which the victim could pay to prevent leakage.
  • Windows CRLF in the description field suggests the actor drafted the victim entry on a Windows machine before uploading to the Linux server.
  • The photos field stores a JSON string inside a JSON string (double-encoded) — a common Flask/SQLite artifact indicating the backend stores JSON blobs in a TEXT column rather than a proper JSON type.

2.2 — HTTP Response Headers & Security Posture

Full response headers captured on GET / and GET /api/data:

HTTP/1.1 200 OK
Server: nginx/1.18.0 (Ubuntu)
Date: Fri, 13 Mar 2026 00:28:XX GMT
Content-Type: text/html; charset=utf-8

Missing security headers (complete absence):

HeaderStatusImpact of Absence
Strict-Transport-SecurityABSENTNo HTTPS, HSTS not applicable — but confirms cleartext
Content-Security-PolicyABSENTXSS attacks against visitors trivially executable
X-Frame-OptionsABSENTPanel can be iframed by third parties
X-Content-Type-OptionsABSENTMIME type sniffing possible
Referrer-PolicyABSENTBrowser sends full Referer on outbound clicks
Permissions-PolicyABSENTNo browser feature restrictions
Cache-ControlABSENTStatic content served without caching directives
Access-Control-Allow-OriginABSENTNo CORS policy — /api/data accessible from any origin

The absence of CORS headers on /api/data means any website can make a cross-origin request to the API and read the victim database — a secondary intelligence collection vector.

2.3 — HTML Source Code Analysis

Full page title and structure from index.html (2.9 KB):

<title>Loki</title>
<link rel="icon" type="image/svg+xml" href="/static/logo.svg">
<link href="https://fonts.googleapis.com/css2?family=Share+Tech+Mono&display=swap" rel="stylesheet">

Key HTML identifiers:

Element / ID / ClassPurpose
<h1 class="glitch" data-text="LOKI">LOKI</h1>Title with CSS glitch animation effect
>_ from loki with loveTagline (terminal-aesthetic styling)
id="leaked-gb"Animated data leak counter (populated by JS)
id="breaches-count"Animated breach count (populated by JS)
id="active-since"Active-since date (populated by JS)
id="last-update""Last update: [time]" (populated by JS with client time)
id="victims-list"Victim cards container (populated by JS from API)
id="victim-modal"Popup modal for victim detail view
id="tox-id"Tox contact ID display element
id="copy-btn"Tox ID copy button
class="site-footer"Page footer containing the Tox section
class="tox-container"Tox ID + copy button wrapper
id="lightbox"Full-image lightbox overlay for photo carousel
id="lightbox-img"Image element inside lightbox

The Tox ID is hardcoded directly in the HTML source, exposed in cleartext with a one-click copy button for victim convenience:

<p class="tox-text" id="tox-id">tox:
    7290408F9A2C4D60FB77CB9CEE25E177F07C47BD22A437137CB4E60D3B1C692EBB1BA203A90F</p>
<button class="copy-btn" onclick="copyToxId()" id="copy-btn">[COPY]</button>

2.4 — JavaScript Analysis (script.js, 11 KB)

The JavaScript is custom vanilla JS with no external dependencies. Key functions and their operational significance:

fetchData() — Bootstraps the panel on page load. Calls /api/data via fetch(), populates animated stat counters and the victims list. Each victim card is appended with a 100ms stagger animation (.victim-item divs).

showVictimModal(victim) — Renders the victim detail popup. The countdown logic is central:

  • If victim.countdown_end is in the future, renders a live countdown timer with the text [!] DATA REMAINS ENCRYPTED [!] and DECRYPTION IN: Xd Xh Xm Xs
  • If victim.countdown_end is in the past (or set to the year-1 sentinel), immediately calls renderDownloadLink() — displaying the evidence photos and gofile.io download links
  • This confirms the panel is designed to handle multiple victims simultaneously, some in countdown phase and some in full-leak phase

The countdown timer HTML template extracted verbatim:

[!] DATA REMAINS ENCRYPTED [!]
DECRYPTION IN: Xd Xh Xm Xs

The download link section HTML template extracted verbatim:

[+] DECRYPTION KEY RELEASED
[ Part X ] Access Data

renderDownloadLink(container, linkStr, photosJson) — Renders the download section. Parses the photos JSON string and builds a photo carousel from /static/uploads/ paths. Builds labeled download buttons for each gofile.io link. URLs without a https:// prefix have it prepended automatically.

animateValue(id, start, end, duration, suffix) — Eased counter animation (ease-out quadratic). Used for the leaked GB and breach count stats. Duration is 1500ms. This "live dashboard" aesthetic is deliberate social engineering — making the breach statistics feel dynamic and authoritative.

copyToxId() — Clipboard API call. On success, temporarily changes [COPY] to [COPIED!] for 2 seconds. Error falls through to console.error.

changeCarousel(direction, btn) — Photo carousel navigation. Cycles through evidence photos by manipulating display style. Updates indicator dots.

openLightbox(src) / closeLightbox() — Full-image lightbox overlay for photo zoom.

Operational significance of the countdown feature: The presence of a fully-implemented countdown timer in the JavaScript — despite the current victim having no active countdown — reveals this is a template designed for serial use. Future victims will likely be placed in countdown phase (ransom deadline) before transitioning to full leak. The actor is running a double-extortion operation: pay before the timer expires to prevent leakage; if not, data becomes public.

2.5 — CSS Theme Analysis (style.css, 8.0 KB)

The CSS uses a "matrix hacker" aesthetic:

  • Background: Black (#000 or near-black)
  • Primary text color: Matrix green (#00FF41 or variant) — var(--text-color)
  • Border color: Matrix green — var(--border-color)
  • Danger color: Red (#FF003C or variant) — var(--danger-color) — used for the countdown timer
  • Font: Share Tech Mono (monospace, hacker aesthetic) via Google Fonts CDN

Key CSS classes identified:

ClassPurpose
.glitchCSS glitch animation on the "LOKI" title
.stats-gridDashboard stat card grid layout
.cardIndividual stat card with glow effect
.card-glowCSS glow pseudo-element on cards
.victim-itemClickable victim list entry
.modalFullscreen modal overlay
.modal-contentModal inner box
.photo-carousel-containerPhoto evidence carousel wrapper
.carousel-imgIndividual photo in carousel
.carousel-btnPrev/next carousel navigation button
.site-footerPage footer (Tox contact section)
.tox-containerTox ID display wrapper
.tox-textTox ID text display
.copy-btnTox ID copy button
.lightboxFullscreen photo lightbox overlay
.download-readyDownload link section (shown post-countdown)
.timer-boxCountdown timer display (red border, red background tint)

The Google Fonts CDN call (fonts.googleapis.com) is a persistent OPSEC failure: any browser that loads the page — including the operator previewing their own panel — sends a DNS and HTTP request to Google's infrastructure, leaking the visitor's IP unless behind a VPN or Tor.

2.6 — Endpoint Probing Results

Complete results of endpoint discovery probing conducted during Round 2:

Admin/login panels — NOT FOUND:

Path probedResult
/admin404
/admin/login404
/admin/dashboard404
/panel404
/login404
/console404
/debug404
/werkzeug404

Hidden API routes — NOT FOUND:

Path probedResult
/api/v1404
/api/v2404
/api/victims404
/api/admin404
/api/upload404
/api/config404
/api/users404
/api/login404
/api/health404

Information disclosure — NOT FOUND:

Path probedResultNotes
/robots.txt404Not present
/.env404Not exposed
/static/403Directory listing disabled
/static/uploads/403Directory listing disabled

Conclusions from probing:

  • The Flask application exposes exactly two routes: / (HTML panel) and /api/data (JSON API)
  • The backend panel (admin interface, upload functionality) is either on a different port, a different IP, or protected behind a VPN/firewall that was not reachable externally
  • Directory listing is disabled on nginx (autoindex off) — prevents enumeration of uploaded files by path guessing
  • No Flask debug mode (/console would expose a Werkzeug interactive debugger if debug=True)

Phase 3 — Evidence Photo Analysis

Upload Timestamp Decoding

All three evidence photos share a Unix timestamp prefix in their filenames: 1772921325

Unix timestamp:  1772921325
UTC datetime:    2026-03-07 22:08:45 UTC
Day:             Saturday
Days before scrape: 5 days (scrape: 2026-03-13 00:28 UTC)

This timestamp is confirmed by the HTTP Last-Modified response header on all photo requests:

Last-Modified: Sat, 07 Mar 2026 22:08:45 GMT

Inference: The operator uploaded the three evidence photos at 22:08 UTC on Saturday 7 March 2026, exactly 5 days and ~2 hours before our investigation scrape. This is consistent with the actor uploading a batch of evidence photos after collecting the exfiltrated data and staging the panel.

Photo 1 — 1772921325_2.png (154 KB)

Type: File manager screenshot Contents: Directory listing of the victim's /storage/ directory Data visible: PDF files, credit report documents, ID card uploads — file timestamps indicating September 2025 data Significance: Demonstrates the actor had access to at least September 2025 data within the victim's file system. This was likely the oldest actively-browsed data tranche at time of exfiltration.

Photo 2 — 1772921325_3.png (169 KB)

Type: File manager screenshot Contents: Directory listing of /downloaded_files/ directory Data visible: SSN images, credit reports, personal identification documents — file timestamps indicating February 2026 data Significance: The /downloaded_files/ directory name suggests the actor used an automated file download tool (possibly a web shell file manager or wget/curl script) to stage data for exfiltration. The February 2026 data shows the breach was ongoing or freshly concluded at time of upload.

Photo 3 — 1772921325_logo_main.png (112 KB)

Type: Corporate logo image Contents: Credit Freedom & Restoration company logo (victim branding) Significance: Standard ransomware extortion group practice — displaying victim branding on the leak site to establish identity and increase reputational pressure on the victim organization.

Photo Filename Convention

The naming pattern {unix_timestamp}_{original_name}.{ext} indicates the Flask backend renames uploaded files by prepending the Unix timestamp of the upload event. This is a common Flask/Python file upload pattern using datetime.now().timestamp() or time.time(). It is used to prevent filename collisions. The fact that all three photos share the same timestamp prefix (1772921325) confirms they were uploaded in a single batch operation.


Phase 4 — Victim Analysis: creditfreedomrestoration.com

Victim Profile

FieldValue
OrganizationCredit Freedom & Restoration
Websitehttp://creditfreedomrestoration.com/
IP159.89.225.19 (DigitalOcean, US)
CRMVtiger CRM 6.4.0
Web ServerApache/2.4.58 (Ubuntu)
Session Cookienapoleon_session (Vtiger default session identifier)
Email ProviderMailgun (mxa.mailgun.org, mxb.mailgun.org)
DNS ProviderDigitalOcean (ns1-3.digitalocean.com)
Domain RegistrarGoDaddy.com, LLC
Status (2026-03-13)LIVE — still operating and still vulnerable

Vtiger CRM 6.4.0 — Active Vulnerabilities

The victim's CRM remains unpatched as of 2026-03-13. Vtiger CRM 6.x has multiple published CVEs:

CVE / VulnerabilityImpact
Authentication bypassUnauthenticated access to CRM data and functionality
File upload RCERemote code execution via malicious file upload
SQL injectionDatabase dump without valid credentials
PHP object injectionCode execution via unserialize

The napoleon_session cookie was observed in the HTTP response headers during our probe — confirming the CRM is responding to requests and issuing session tokens. Our probe IP was logged in the victim's session store via this cookie mechanism. This is an additional artifact of the victim's running CRM.

Data Stolen

Per the LOKI API response, the breach scope is:

  • Volume: 230 GB
  • Count: 30,000+ US citizen records ("fullz")
  • Data types: Driver's licenses (photographs), SSNs (photographs and text), credit cards (photographs and plaintext written text), utility bills, credit reports, Equifax login credentials, credentials for unspecified other websites
  • CRM database: Full Vtiger CRM database export including member accounts and portal data
  • File paths exfiltrated:
    • /cportal/creditreport/
    • /cportal/idcardupload/
    • /cportal/mortgageupload/
    • /cportal/uploaddocs/
    • /storage/{2016–2026}/ (10 years of customer document storage)

Active data leak: The actor announced [LEAKING 1 FOLDER PER DAY] — a pressure tactic to force victim response while continuously escalating public exposure. All 5 gofile.io download links confirmed HTTP 200 at 2026-03-13 00:29 UTC. Each gofile link serves a JavaScript-rendered landing page (8,468 bytes) from which the 230 GB archive is directly downloadable by anyone with the link.


Phase 5 — Threat Intelligence Correlation

VirusTotal Analysis (195.24.237.15)

  • Malicious: 1 (CRDF)
  • Suspicious: 2 (AlphaSOC, Gridinsoft)
  • First URL submission: 2026-02-04
  • Last URL scan: 2026-03-12
  • Last HTTPS cert (Jan 2026): Subject = leafvivid.shop, issuer = Let's Encrypt R13, valid Jan 3 – Apr 3, 2026

Passive DNS — All Domains Resolved to 195.24.237.15

DomainTimestampCategory
vividoleaf.shop2026-02-05Unknown / suspicious
leafvivid.shop2026-02-03Unknown / suspicious
lyvia.shop2026-02-03Unknown
trustwallet.org.do2025-12-30Crypto phishing
protection.trustwallet.org.do2025-12-30Crypto phishing
ctbcsolution.pro2025-12-30Bank phishing (CTBC)
protection.ctbcsolution.pro2025-12-30Bank phishing
protection.trustwallet.com.do2025-12-30Crypto phishing
solutionproglobal.pro2025-12-22Unknown
www.trustwallet.com.do2025-12-21Crypto phishing
phantomairdrop.com.do2025-12-12Phantom wallet phish
www.ecosparkly.shop2025-12-08Phishing/spam
trustwallet.com.do2025-12-06Crypto phishing
postboxesmail.store2025-12-02Suspicious
ecosparkly.shop2025-12-02Phishing/spam (VT: 5M)

URLScan.io

Three scans captured the IP hosting TrustWallet phishing on Dec 30, 2025 under AS60223. All triggered by certstream-suspicious monitoring — automated flagging of newly-issued TLS certificates for domains resembling known brands.

Certificate Transparency (crt.sh)

DomainFirst CertIssuer
trustwallet.com.do2025-12-05Let's Encrypt R12/13
trustwallet.org.do2025-12-30 → 2026-01-26Let's Encrypt R13
protection.trustwallet.org.do2025-12-30Let's Encrypt R12
phantomairdrop.com.do2025-12-12Let's Encrypt R13
ctbcsolution.pro2025-12-30Let's Encrypt R12
protection.ctbcsolution.pro2025-12-30Let's Encrypt R12
ecosparkly.shop2025-03-07, 2025-11-30Let's Encrypt R11/12
leafvivid.shop2026-01-03Let's Encrypt R13

All certificates are free Let's Encrypt certificates — consistent with a cost-minimizing actor using automated certbot ACME clients.


Phase 6 — Infrastructure Mapping

Full Infrastructure Graph

[LOKI OPERATOR — Iranian Nexus]
    │
    ├── Primary IP: 195.24.237.15
    │       ASN: AS209373 (Swissnet LLC) [2026-02-22+]
    │       ASN: AS60223 (Netiface Limited) [2025-12+]
    │       └── Port 22: OpenSSH 8.9p1 (Ubuntu)
    │       └── Port 80: nginx/1.18.0 → Flask app → LOKI panel
    │               ├── GET /               → HTML panel (index.html)
    │               ├── GET /api/data       → JSON victim database (no auth)
    │               ├── GET /static/script.js → JavaScript (11 KB)
    │               ├── GET /static/style.css → CSS stylesheet (8 KB)
    │               ├── GET /static/logo.svg  → SVG logo
    │               └── GET /static/uploads/ → Evidence photos
    │                       ├── 1772921325_2.png (154 KB — /storage/ screenshot)
    │                       ├── 1772921325_3.png (169 KB — /downloaded_files/ screenshot)
    │                       └── 1772921325_logo_main.png (112 KB — victim logo)
    │
    ├── Crypto Phishing Cluster (Dec 2025)
    │       ├── trustwallet.com.do     → 195.24.237.15 (Dec 5, 2025)
    │       ├── www.trustwallet.com.do → 195.24.237.15 (Dec 21, 2025)
    │       ├── protection.trustwallet.com.do → 195.24.237.15 (Dec 30, 2025)
    │       ├── trustwallet.org.do     → 195.24.237.15 (Dec 30, 2025)
    │       ├── protection.trustwallet.org.do → 195.24.237.15 (Dec 30, 2025)
    │       └── phantomairdrop.com.do  → 195.24.237.15 (Dec 12, 2025)
    │
    ├── Financial Phishing Cluster (Dec 30, 2025)
    │       ├── ctbcsolution.pro           → 195.24.237.15
    │       └── protection.ctbcsolution.pro → 195.24.237.15
    │
    ├── Unknown/Staging Domains
    │       ├── ecosparkly.shop    → 195.24.237.15, then 84.32.84.32 (Hostinger LT)
    │       ├── www.ecosparkly.shop → 195.24.237.15
    │       ├── postboxesmail.store → 195.24.237.15, then 145.79.25.23, 85.90.197.50
    │       ├── solutionproglobal.pro → 152.53.253.95 (netcup GmbH, AT)
    │       ├── vividoleaf.shop    → 2.57.91.92 (Hostinger, CY)
    │       ├── leafvivid.shop     → 213.165.230.65 (InMotion Hosting, US)
    │       └── lyvia.shop         → (unresolved)
    │
    ├── Data Exfiltration (gofile.io — all 5 links ACTIVE at 00:29 UTC 2026-03-13)
    │       ├── https://gofile.io/d/0Kv7aY  (Part 1)
    │       ├── https://gofile.io/d/HAne2i  (Part 2)
    │       ├── https://gofile.io/d/DPTV4M  (Part 3)
    │       ├── https://gofile.io/d/KptulC  (Part 4)
    │       └── https://gofile.io/d/RWzKpM  (Part 5)
    │
    └── VICTIM
            └── creditfreedomrestoration.com (DigitalOcean 159.89.225.19)
                    └── Apache/2.4.58 + Vtiger CRM 6.4.0 (STILL LIVE, STILL VULNERABLE)
                            └── 30k+ US citizens: SSN, DL, CC, credit reports (2016–2026)
IPASNProviderAssociated DomainNotes
195.24.237.15209373Swissnet LLC (NL)LOKI panel, ctbcsolutionPRIMARY — ACTIVE
84.32.84.3247583Hostinger Int'l (LT)ecosparkly.shop (prior)13 VT malicious hits
145.79.25.2347583Hostinger Int'l (MY)postboxesmail.store (prior)
85.90.197.508254Green Floid LLC (GR)postboxesmail.store (prior)
152.53.253.95197540netcup GmbH (AT)solutionproglobal.proMail server, self-signed TLS
2.57.91.9247583Hostinger Int'l (CY)vividoleaf.shopMultiple jQuery CVEs
213.165.230.6522611InMotion Hosting (US)leafvivid.shop
159.89.225.1914061DigitalOcean (US)creditfreedomrestorationVICTIM — STILL LIVE

Phase 7 — Attribution and Campaign Analysis

Threat Actor: LOKI Group

Confidence: HIGH

The self-identified group name is LOKI (from Norse mythology, the trickster god). This appears to be a small-to-mid-size extortion operation exhibiting the following characteristics. Based on the technical sophistication of the panel (custom Flask API, carousel UI, countdown timer logic), the actor is a capable developer — likely operating individually or in a very small team.

Attribution Evidence

IndicatorValueConfidence
RIPE abuse contacthadihasanzadebashtiyan@gmail.comHIGH — direct identity leak
Iranian LIR maintainerlir-ir-amingostar-1-MNTHIGH — infrastructure link
CRLF in API responseWindows line endings in actor-authored textMEDIUM — Windows desktop
Domain registration countryDenmark (redacted/GDPR)MEDIUM
Tox ID7290408F9A2C4D60FB77CB9CEE25E177F07C47BD22A437137CB4E60D3B1C692EBB1BA203A90FHIGH — unique operator identifier
ASN sponsorORG-DM262-RIPE (Daniel Mishayev, IL/DE)MEDIUM — could be victim/reseller
Infrastructure patternSingle persistent IP across ASN hopsHIGH — operator OPSEC failure
Evidence photo upload time2026-03-07 22:08:45 UTC (Saturday evening)LOW — timezone inference only

OPSEC Failures (Comprehensive)

  1. Personal email exposedhadihasanzadebashtiyan@gmail.com submitted to RIPE as abuse contact. "Hadi Hasanzadeh Bashtian" (حسن‌زاده بشتیان) is a distinctly Iranian name.
  2. Iranian LIRlir-ir-amingostar-1-MNT is the RIPE block maintainer, directly linking the infrastructure to Iranian internet administration.
  3. Clearnet leak site — Plain HTTP, no Tor/I2P. Trivially blocked, fingerprinted, and accessible to investigators and law enforcement.
  4. No security headers — Zero HTTP security headers on the panel. Any JavaScript injected via MitM could hijack the panel or deanonymize visitors.
  5. Server banners exposed — OpenSSH 8.9p1, nginx/1.18.0, Flask 405 pages — full stack fingerprint.
  6. Google Fonts CDNfonts.googleapis.com loaded on every page view. Leaks visitor IP to Google unless behind VPN/Tor.
  7. Single IP persistence — All campaign phases (December 2025 crypto phishing through March 2026 ransomware) anchored to 195.24.237.15. Full 15-month timeline reconstructable from this single pivot.
  8. Tox ID in plaintext HTML — Contact channel exposed in page source; trivially scraped.
  9. Unauthenticated API/api/data returns the full victim database with zero authentication. Any internet user can query it.
  10. CORS absent on API — No CORS policy means cross-origin requests to /api/data succeed from any website.
  11. Upload timestamp in filenames1772921325_*.png exposes exact upload time of evidence photos.
  12. Windows CRLF in database — CRLF line endings in the victim description field suggest the actor uses a Windows desktop/laptop for composing entries, then uploads to a Linux server.
  13. napoleon_session cookie exposed to probers — The victim's Vtiger CRM still issues session tokens to unauthenticated requests, leaking probe IPs into the session store.

Campaign Timeline

2025-03-07  ecosparkly.shop earliest cert (first known cluster artifact)
2025-11-30  ecosparkly.shop cert renewed
2025-12-02  ecosparkly.shop, postboxesmail.store → 195.24.237.15
2025-12-05  trustwallet.com.do created (TrustWallet phishing begins)
2025-12-06  trustwallet.com.do resolves to 195.24.237.15
2025-12-11  phantomairdrop.com.do created (Phantom wallet phishing)
2025-12-12  phantomairdrop.com.do → 195.24.237.15
2025-12-21  www.trustwallet.com.do → 195.24.237.15
2025-12-30  trustwallet.org.do, ctbcsolution.pro, protection.* domains created
2026-01-03  leafvivid.shop TLS cert issued
2026-02-04  195.24.237.15 first submitted to VirusTotal
2026-02-07  LOKI extortion panel goes live (active_since from /api/data)
2026-02-12  AS209373 (Swissnet LLC) created in RIPE
2026-02-22  195.24.237.0/24 registered under AS209373
2026-03-07  Evidence photos uploaded to /static/uploads/ (22:08:45 UTC)
2026-03-12  LOKI panel rescanned by VirusTotal
2026-03-13  Round 1 infrastructure OSINT completed
2026-03-13  Round 2: Full panel scrape, API dump, source code recovery (00:28–00:29 UTC)
2026-03-13  All 5 gofile.io leak links confirmed active, 230 GB PII downloadable

Campaign duration: ~15 months of continuous infrastructure activity on a single IP.


MITRE ATT&CK TTPs

Technique IDNameEvidence
T1583.001Acquire Infrastructure: Domains15+ domains across .do, .pro, .shop, .store TLDs
T1583.003Acquire Infrastructure: Virtual Private ServerSwissnet LLC VPS; prior Netiface hosting
T1566.002Phishing: Spearphishing LinkTrustWallet, Phantom, CTBC phishing with SSL certs
T1190Exploit Public-Facing ApplicationVtiger CRM 6.4.0 exploitation
T1078Valid Accounts"equinax logins" stolen — credential reuse capability
T1005Data from Local System30k+ member database exfiltrated from Vtiger CRM
T1560Archive Collected DataMulti-part gofile.io upload (5 folders, 230 GB)
T1567.002Exfiltration Over Web Service: Cloud Storagegofile.io used for PII distribution
T1486Data Encrypted for ImpactCountdown timer in JS implies ransomware capability
T1657Financial TheftCredit card data (photos and plaintext) stolen
T1589.001Gather Victim Identity Information: CredentialsSSNs, DLs, credit reports collected
T1608.005Stage Capabilities: Link TargetProtection subdomain pattern
T1071.001Application Layer Protocol: Web ProtocolsPanel communicates via HTTP, gofile via HTTPS
T1594Search Victim-Owned WebsitesVtiger CRM portal paths exfiltrated (/cportal/*)
T1608.001Stage Capabilities: Upload MalwareEvidence photos staged to /static/uploads/

Full IOC Table

IP Addresses

IP AddressASNCountryRoleStatus
195.24.237.15209373NLLOKI leak site, primary C2ACTIVE
84.32.84.3247583LTPrior hosting (ecosparkly)INACTIVE
145.79.25.2347583MYPrior hosting (postboxesmail)INACTIVE
85.90.197.508254GRPrior hosting (postboxesmail)INACTIVE
152.53.253.95197540ATsolutionproglobal.proUNKNOWN
2.57.91.9247583CYvividoleaf.shopUNKNOWN
213.165.230.6522611USleafvivid.shopUNKNOWN
159.89.225.1914061USVictim: creditfreedomrestorationVICTIM

Domains

DomainFirst SeenPurposeVT Detections
trustwallet.com.do2025-12-05TrustWallet phishing11M / 2S
www.trustwallet.com.do2025-12-21TrustWallet phishing
protection.trustwallet.com.do2025-12-30TrustWallet phishing
trustwallet.org.do2025-12-30TrustWallet phishing0M / 1S
protection.trustwallet.org.do2025-12-30TrustWallet phishing
phantomairdrop.com.do2025-12-11Phantom wallet phish1M / 1S
ctbcsolution.pro2025-12-30CTBC Bank phishing3M / 2S
protection.ctbcsolution.pro2025-12-30CTBC Bank phishing
ecosparkly.shop2025-11-30Phishing/spam5M / 1S
www.ecosparkly.shop2025-12-08Phishing/spam
postboxesmail.store2025-12-02Suspicious2M / 1S
solutionproglobal.pro2025-12-22Unknown0M / 1S
vividoleaf.shop2026-02-05Unknown / suspicious1M / 1S
leafvivid.shop2026-02-03Unknown / suspicious1M / 1S
lyvia.shop2026-02-03Unknown0M / 1S
swissnetwork.ioActor front company0M / 0S
creditfreedomrestoration.comVICTIM0M / 0S

URLs / Endpoints

URLTypeStatus
http://195.24.237.15/LOKI leak site (HTML panel)ACTIVE
http://195.24.237.15/api/dataVictim database (JSON, no auth)ACTIVE
http://195.24.237.15/static/script.jsPanel JavaScript (11 KB)ACTIVE
http://195.24.237.15/static/style.cssPanel CSS (8 KB)ACTIVE
http://195.24.237.15/static/logo.svgPanel SVG logoACTIVE
http://195.24.237.15/static/uploads/1772921325_2.pngEvidence photo 1 (154 KB)ACTIVE (uploaded 2026-03-07)
http://195.24.237.15/static/uploads/1772921325_3.pngEvidence photo 2 (169 KB)ACTIVE (uploaded 2026-03-07)
http://195.24.237.15/static/uploads/1772921325_logo_main.pngVictim logo (112 KB)ACTIVE
http://creditfreedomrestoration.com/Victim site (Vtiger CRM)ACTIVE — STILL VULNERABLE
https://gofile.io/d/0Kv7aYLeaked PII Part 1ACTIVE (HTTP 200 confirmed)
https://gofile.io/d/HAne2iLeaked PII Part 2ACTIVE (HTTP 200 confirmed)
https://gofile.io/d/DPTV4MLeaked PII Part 3ACTIVE (HTTP 200 confirmed)
https://gofile.io/d/KptulCLeaked PII Part 4ACTIVE (HTTP 200 confirmed)
https://gofile.io/d/RWzKpMLeaked PII Part 5ACTIVE (HTTP 200 confirmed)

Email Addresses / Identifiers

IdentifierTypeSourceSignificance
hadihasanzadebashtiyan@gmail.comEmailRIPE WHOISOPSEC LEAK — likely real operator identity
abuse@swissnetwork.ioEmailRIPE WHOISFront company abuse contact
noc@swissnetwork.ioEmailRIPE WHOISFront company NOC
7290408F9A2C4D60FB77CB9CEE25E177F07C47BD22A437137CB4E60D3B1C692EBB1BA203A90FTox IDHTML sourceOperator's secure comms channel

TLS Certificates

SHA256 ThumbprintSubjectValidIssuer
0f145acaa1f702fabf3b8d3487afb04f9f3afc66cc4338e081a17be00162c68eleafvivid.shop2026-01-03 – 2026-04-03Let's Encrypt R13

Evidence Photos (Scraped from /static/uploads/)

FilenameSizeUpload TimestampContents
1772921325_2.png154 KB2026-03-07 22:08:45 UTCFile manager: victim /storage/ dir (Sep 2025 data)
1772921325_3.png169 KB2026-03-07 22:08:45 UTCFile manager: /downloaded_files/ dir (Feb 2026 data)
1772921325_logo_main.png112 KB2026-03-07 22:08:45 UTCCredit Freedom & Restoration company logo

Infrastructure Relationship Map

[ACTOR: "LOKI" — Iranian Nexus]
   │
   ├─ Identity Leak: hadihasanzadebashtiyan@gmail.com (RIPE abuse — Iranian name)
   ├─ Tox: 7290408F9A2C4D60FB77CB9CEE25E177F07C47BD22A437137CB4E60D3B1C692EBB1BA203A90F
   ├─ OPSEC: CRLF in database entries → Windows desktop
   ├─ OPSEC: Photo upload at Sat 22:08 UTC → timezone/schedule hint
   │
   └─ HOSTING CHAIN ──────────────────────────────────────────────────
      │
      AS60223 (Netiface, GB) [Dec 2025]
      └── 195.24.237.15 ←── crypto phishing, bank phishing
              │
      [ASN MIGRATION Feb 2026]
              │
      AS209373 (Swissnet LLC, NL) [Feb 2026+]
      Sponsored by: ORG-DM262-RIPE (Daniel Mishayev, IL/DE)
      Maintained by: lir-ir-amingostar-1-MNT (IRANIAN LIR)
      └── 195.24.237.15
              │
              ├── Port 22: OpenSSH 8.9p1 (Ubuntu)
              │
              └── Port 80: nginx → Flask
                      ├── / → LOKI panel (HTML, matrix green theme)
                      ├── /api/data → JSON victim DB (NO AUTH)
                      │       └── {"stats": {"breaches":1,"leaked_data_gb":230.0,...},
                      │            "victims": [{...Credit Freedom & Restoration...}]}
                      ├── /static/script.js → 11KB JS (countdown, carousel, Tox copy)
                      ├── /static/style.css → 8KB CSS (matrix theme)
                      └── /static/uploads/ → evidence photos (uploaded 2026-03-07)

   PHISHING CLUSTER (all → 195.24.237.15)
   ├── trustwallet.com.do / .org.do / protection.*     (crypto theft)
   ├── phantomairdrop.com.do                           (crypto theft)
   ├── ctbcsolution.pro / protection.*                 (banking fraud)
   └── ecosparkly.shop, postboxesmail.store            (unknown)

   DATA DISTRIBUTION
   └── gofile.io (5 links, all ACTIVE, JS-rendered pages, 8468 bytes each)
           230 GB of US citizen PII — publicly accessible

   VICTIM
   └── creditfreedomrestoration.com [159.89.225.19 — DigitalOcean]
       ├── Apache/2.4.58 + Vtiger CRM 6.4.0 (STILL VULNERABLE)
       ├── napoleon_session cookie: active, leaks to probers
       └── 30,000+ US citizens: SSN, DL, CC, credit reports (2016–2026)

Scraped Artifacts Inventory

All artifacts saved in ./scraped/ relative to this investigation directory.

FileSizeSource URLDescription
api_data.json902 Bhttp://195.24.237.15/api/dataFull victim database JSON dump
index.html2.9 KBhttp://195.24.237.15/Full panel HTML source
script.js11 KBhttp://195.24.237.15/static/script.jsPanel JavaScript (countdown, carousel)
style.css8.0 KBhttp://195.24.237.15/static/style.cssPanel CSS (matrix theme)
logo.svg4.6 KBhttp://195.24.237.15/static/logo.svgPanel SVG logo (from svgrepo.com)
photo_2.png154 KB/static/uploads/1772921325_2.pngEvidence: /storage/ file manager (Sep 2025)
photo_3.png169 KB/static/uploads/1772921325_3.pngEvidence: /downloaded_files/ (Feb 2026)
logo_main.png112 KB/static/uploads/1772921325_logo_main.pngVictim company logo

Detection rules based on scraped content:

  • YARA rules: yara_rules.yar
  • Suricata IDS/IPS rules: suricata_rules.rules
  • STIX 2.1 threat intelligence bundle: stix_bundle.json

Defender Recommendations

Immediate Actions

  1. Block IP 195.24.237.15 at all network perimeters and email gateways.
  2. Block entire /24: 195.24.237.0/24 — freshly allocated for malicious operations only.
  3. Report gofile.io links to gofile.io abuse (abuse@gofile.io) for takedown — all 5 links contain stolen US citizen PII.
  4. Notify creditfreedomrestoration.com and law enforcement (FBI IC3 at ic3.gov, CISA at cisa.gov/report) — 30,000+ US citizens' PII is actively downloadable.
  5. Emergency Vtiger CRM patching — if running Vtiger CRM 6.x, take offline immediately and apply all security patches. The victim's CRM is still live and still vulnerable as of 2026-03-13.
  6. Block Tox ID at enterprise network level if Tox traffic is observable.

Block Lists

IP Addresses:

195.24.237.0/24
84.32.84.32

Domains (DNS sinkhole or firewall):

trustwallet.com.do
www.trustwallet.com.do
protection.trustwallet.com.do
trustwallet.org.do
protection.trustwallet.org.do
phantomairdrop.com.do
ctbcsolution.pro
protection.ctbcsolution.pro
ecosparkly.shop
www.ecosparkly.shop
postboxesmail.store
vividoleaf.shop
leafvivid.shop
lyvia.shop
solutionproglobal.pro
swissnetwork.io

Detection Opportunities

  1. /api/data access — Any internal request to http://195.24.237.15/api/data is a strong indicator of compromise (employee or automated system querying the breach database).
  2. Vtiger CRM CVEs — Patch all Vtiger CRM installations immediately. CVEs exist for auth bypass, file upload RCE, and SQL injection.
  3. gofile.io exfil — Monitor for bulk uploads to gofile.io. LOKI uses it as a primary dead-drop.
  4. JavaScript function strings — The strings showVictimModal, renderDownloadLink, copyToxId, DATA REMAINS ENCRYPTED in web traffic indicate LOKI panel content.
  5. Tox string detection — Tox IDs follow a specific hex format (76 hex characters). The LOKI Tox ID is uniquely attributable.
  6. certstream monitoring — LOKI's phishing domains were flagged by certstream-suspicious. Enable certstream feeds for brand protection.
  7. Email blocking — Block hadihasanzadebashtiyan@gmail.com as a confirmed threat actor address.
  8. YARA — See yara_rules.yar for file-based and memory detection of LOKI panel artifacts.
  9. Suricata — See suricata_rules.rules for network-based IDS/IPS detection rules.

Incident Response — Victims of LOKI

If you received or suspect a ransom demand from "LOKI":

  • Do NOT pay — data is already being leaked regardless; the current victim's countdown is set to year-1 AD (already expired)
  • Contact FBI IC3 (ic3.gov) and CISA (cisa.gov/report)
  • Preserve all evidence including Tox communications
  • The Tox ID 7290408F9A2C4D60FB77CB9CEE25E177F07C47BD22A437137CB4E60D3B1C692EBB1BA203A90F is a unique operator identifier linkable across multiple victims
  • Acquire forensic images of affected systems before remediation
  • The LOKI panel is Internet-accessible — investigators can confirm breach status by accessing /api/data directly

Report generated by GHOST / Breakglass Intelligence — 2026-03-13 Round 1: 2026-03-13 00:00 UTC | Round 2 (Panel Scrape): 2026-03-13 00:28 UTC "One indicator. Total infrastructure."

Share