Back to Intelligence

TinstaPorn Flutter Gambling Malware: OTX Pulse Analysis — Enterprise Detection Pack

SA
Security Arsenal Team
November 10, 2026
9 min read

A live AlienVault OTX pulse (TLP:WHITE, modified 2026-11-10) details an illegal Android gambling application built with Flutter and tracked under the malware family TinstaPorn. The campaign operates a rigged casino platform disguised as a Macau casino clone, monetizing victims through mathematically stacked games while harvesting phone numbers and geolocation data. Although this campaign primarily targets consumers, enterprise exposure is real: BYOD devices, sideloaded APKs on corporate handsets, and credential reuse from gambling accounts create a path into enterprise identity infrastructure.

Threat Summary

The pulse describes a multi-tiered criminal infrastructure: configuration servers deliver runtime settings to the malware, registration servers onboard victims and capture phone numbers, and game servers host the rigged casino content. The application is built in Flutter, which complicates traditional Android static analysis because business logic is compiled into Dart AOT snapshots rather than easily decompiled Java/Kotlin bytecode.

The attack chain:

  1. Lure — Victims are directed to download an APK posing as a legitimate Macau casino app (outside Google Play).
  2. Install & Registration — The app captures the victim's phone number during fake account registration.
  3. Configuration Pull — The malware retrieves its active server list from configuration endpoints (e.g., api.cloudfareproxy2618.xyz, line.yongli250627linecfg.xyz).
  4. Exfiltration & Monetization — Geolocation and device data are exfiltrated; the victim is funneled into rigged games engineered so odds favor the operators, exploiting gambling addiction loops for sustained revenue.
  5. Traffic Protection — Communications use AES encryption with HMAC authentication, frustrating passive network inspection and replay.

Objective: financial fraud at scale via rigged gambling, plus theft of PII (phone numbers, geolocation) that can be resold or reused for smishing, SIM-swap pretexting, and follow-on targeting.

Threat Actor / Malware Profile

Family: TinstaPorn (attribution: Unknown) Platform: Android (Flutter/Dart)

  • Distribution: Sideloaded APKs promoted as a Macau casino clone, typically via direct download links, messaging apps, and affiliate promotion channels. Not distributed through official app stores.
  • Payload behavior: Presents a functional gambling UI to maintain cover while executing fraudulent game logic. Harvests phone number at registration and device geolocation during operation.
  • C2 communication: Multi-tier architecture separating config, registration, and game servers. Traffic is protected with AES-encrypted payloads and HMAC-signed requests, meaning defenders cannot rely on plaintext string matching in transit; detection must key on destination infrastructure, JA3/JA4 fingerprints, and traffic timing patterns.
  • Persistence: Standard Android app persistence — survives reboot as an installed package; may request permissions enabling background execution and autostart. Watch for Accessibility or notification-listener abuse in variants.
  • Anti-analysis: Flutter's Dart AOT compilation defeats many Java-level decompilers; encrypted/HMAC-signed C2 blocks trivial replay; configuration-server indirection allows the operators to rotate active C2 domains without repackaging the APK.

Enterprise relevance: compromised BYOD devices leak employee phone numbers and location; gambling-debt victims are classic recruitment targets for insider-threat and social-engineering operations.

IOC Analysis

The pulse contains 34 indicators across four types:

  • File hashes (MD5/SHA1/SHA256): 70766c883b45404adb65a8f4580dc00f, 283cc2f06267ecf2ce70135604ab2ce8deaee9dc, d9020e64482821585245bf29fc96a046395b33d8e1830e17eeb949a2eb16a4d0 — use SHA256 as primary (MD5/SHA1 retained for legacy tool matching). Push to mobile threat defense (MTD), EDR blocklists, and VirusTotal/OTX cross-reference for variant discovery.
  • Hostname: zc.nationbj.com — sinkhole/block at DNS; note the operators favor lookalike naming (e.g., cloudfareproxy).
  • URLs: https://api.cloudfareproxy2618.xyz, https://api.testylhg24.online, https://hsreg.youkureg510.xyz, https://line.yongli250627linecfg.xyz — these map to the config/registration tiers. Block at secure web gateway and DNS; alert on any corporate-network resolution.

Operationalization: feed domains/URLs into DNS filtering and proxy block lists with retroactive query (7–30 days) to catch pre-block resolution; hash-match against any APK files seen in email gateways, MDM sideload logs, or cloud storage. Tooling: OTX pulses ingest directly into most SIEMs via API; use apktool/jadx (limited on Flutter), blutter or reFlutter for Dart snapshot analysis, and Wireshark/Zeek with JA3/JA4 for encrypted C2 fingerprinting.

Detection Engineering

YAML
---
title: TinstaPorn Gambling Malware C2 Domain Resolution
id: 7a3f1c2e-9b4d-4e6a-8c1f-2d5e7a9b0c11
status: experimental
description: Detects DNS resolution or network connection to known TinstaPorn Flutter gambling malware configuration, registration, and game server infrastructure identified in OTX pulse (2026-11-10).
author: Security Arsenal Threat Intelligence
references:
  - https://www.fortinet.com/blog/threat-research/analyzing-an-illegal-android-gambling-app-built-with-flutter
  - https://otx.alienvault.com
date: 2026/11/10
tags:
  - attack.command_and_control
  - attack.t1071.001
  - attack.exfiltration
  - attack.t1041
logsource:
  category: dns
  product: windows
detection:
  selection_domain:
    query|contains:
      - 'nationbj.com'
      - 'cloudfareproxy2618.xyz'
      - 'testylhg24.online'
      - 'youkureg510.xyz'
      - 'yongli250627linecfg.xyz'
  condition: selection_domain
falsepositives:
  - Threat intelligence validation lookups by security analysts
level: high
---
title: TinstaPorn Malware Sample Hash Execution or Download
id: 8b4e2d3f-0c5e-5f7b-9d2a-3e6f8b0c1d22
status: experimental
description: Detects creation or execution of files matching known TinstaPorn Flutter gambling malware APK hashes from OTX pulse (2026-11-10).
author: Security Arsenal Threat Intelligence
references:
  - https://www.fortinet.com/blog/threat-research/analyzing-an-illegal-android-gambling-app-built-with-flutter
date: 2026/11/10
tags:
  - attack.execution
  - attack.t1204.002
  - attack.t1105
logsource:
  category: file_event
  product: windows
detection:
  selection_sha256:
    Hashes|contains:
      - 'd9020e64482821585245bf29fc96a046395b33d8e1830e17eeb949a2eb16a4d0'
  selection_md5:
    Hashes|contains:
      - '70766c883b45404adb65a8f4580dc00f'
  selection_sha1:
    Hashes|contains:
      - '283cc2f06267ecf2ce70135604ab2ce8deaee9dc'
  selection_name:
    TargetFilename|endswith: '.apk'
  condition: (selection_sha256 or selection_md5 or selection_sha1) and selection_name
falsepositives:
  - Malware research sandbox detonation
level: critical
---
title: Suspicious APK Sideload Download via Browser or Messaging Client
id: 9c5f3e4a-1d6f-6a8c-0e3b-4f7a9c1d2e33
status: experimental
description: Detects download of Android APK files by desktop browsers or messaging clients, consistent with TinstaPorn distribution via direct-download casino lure links. Tighten with proxy/EDR URL telemetry for the listed C2 domains.
author: Security Arsenal Threat Intelligence
references:
  - https://www.fortinet.com/blog/threat-research/analyzing-an-illegal-android-gambling-app-built-with-flutter
date: 2026/11/10
tags:
  - attack.initial_access
  - attack.t1189
  - attack.t1204.002
logsource:
  category: file_event
  product: windows
detection:
  selection_file:
    TargetFilename|endswith: '.apk'
  selection_process:
    Image|endswith:
      - '\chrome.exe'
      - '\msedge.exe'
      - '\firefox.exe'
      - '\brave.exe'
      - '\Telegram.exe'
      - '\WhatsApp.exe'
      - '\WeChat.exe'
  condition: selection_file and selection_process
falsepositives:
  - Legitimate mobile application development or QA teams downloading APK builds
level: medium
KQL — Microsoft Sentinel / Defender
// TinstaPorn Flutter Gambling Malware — Infrastructure & Download Hunt
// OTX Pulse 2026-11-10 | Hunt window: 30 days retroactive
let C2Domains = dynamic(["zc.nationbj.com", "api.cloudfareproxy2618.xyz", "api.testylhg24.online", "hsreg.youkureg510.xyz", "line.yongli250627linecfg.xyz"]);
let NetHits = DeviceNetworkEvents
    | where TimeGenerated > ago(30d)
    | where RemoteUrl has_any (C2Domains)
    | project TimeGenerated, DeviceName, RemoteUrl, RemoteIP, InitiatingProcessFileName, InitiatingProcessCommandLine
    | extend HuntType = "C2 Connection";
let DnsHits = DeviceEvents
    | where TimeGenerated > ago(30d)
    | where ActionType == "DnsQueryResponse" or AdditionalFields has_any (C2Domains)
    | extend QueriedDomain = tostring(parse_json(AdditionalFields).DnsQueryString)
    | where QueriedDomain has_any (C2Domains)
    | project TimeGenerated, DeviceName, QueriedDomain, InitiatingProcessFileName
    | extend HuntType = "DNS Resolution";
let ApkDownloads = DeviceFileEvents
    | where TimeGenerated > ago(30d)
    | where FileName endswith ".apk"
    | where InitiatingProcessFileName in~ ("chrome.exe", "msedge.exe", "firefox.exe", "brave.exe", "telegram.exe", "whatsapp.exe", "wechat.exe")
    | project TimeGenerated, DeviceName, FileName, FolderPath, SHA256, InitiatingProcessFileName
    | extend HuntType = "APK Sideload Download";
let HashMatch = DeviceFileEvents
    | where TimeGenerated > ago(30d)
    | where SHA256 == "d9020e64482821585245bf29fc96a046395b33d8e1830e17eeb949a2eb16a4d0"
       or MD5 == "70766c883b45404adb65a8f4580dc00f"
       or SHA1 == "283cc2f06267ecf2ce70135604ab2ce8deaee9dc"
    | project TimeGenerated, DeviceName, FileName, FolderPath, SHA256
    | extend HuntType = "Known Malware Hash";
union NetHits, DnsHits, ApkDownloads, HashMatch
| sort by TimeGenerated desc
PowerShell
# TinstaPorn Flutter Gambling Malware — IOC Hunt Script
# OTX Pulse 2026-11-10 | Run via RMM/Intune/PS remoting across endpoints
# Requires: elevated rights for full DNS cache + proxy log coverage

$C2Indicators = @(
    'zc.nationbj.com',
    'api.cloudfareproxy2618.xyz',
    'api.testylhg24.online',
    'hsreg.youkureg510.xyz',
    'line.yongli250627linecfg.xyz'
)
$MalwareHashes = @{
    'SHA256' = 'd9020e64482821585245bf29fc96a046395b33d8e1830e17eeb949a2eb16a4d0'
    'SHA1'   = '283cc2f06267ecf2ce70135604ab2ce8deaee9dc'
    'MD5'    = '70766c883b45404adb65a8f4580dc00f'
}
$Findings = @()

Write-Host '[*] Checking DNS client cache for C2 resolutions...' -ForegroundColor Cyan
Get-DnsClientCache -ErrorAction SilentlyContinue | ForEach-Object {
    foreach ($ioc in $C2Indicators) {
        if ($_.Entry -like "*$ioc*") {
            $Findings += [PSCustomObject]@{ Type='DNS Cache'; Host=$env:COMPUTERNAME; Indicator=$_.Entry; Detail="Data: $($_.Data)" }
        }
    }
}

Write-Host '[*] Scanning user download directories for APK files and hash matches...' -ForegroundColor Cyan
$UserProfiles = Get-ChildItem 'C:\Users' -Directory -ErrorAction SilentlyContinue
foreach ($profile in $UserProfiles) {
    $searchPaths = @("$($profile.FullName)\Downloads", "$($profile.FullName)\Desktop", "$($profile.FullName)\Documents")
    foreach ($path in $searchPaths) {
        if (Test-Path $path) {
            Get-ChildItem $path -Recurse -Include *.apk -ErrorAction SilentlyContinue | ForEach-Object {
                $sha256 = (Get-FileHash $_.FullName -Algorithm SHA256 -ErrorAction SilentlyContinue).Hash
                $verdict = if ($sha256 -eq $MalwareHashes['SHA256']) { 'KNOWN MALWARE - TinstaPorn' } else { 'APK present - triage required' }
                $Findings += [PSCustomObject]@{ Type='APK File'; Host=$env:COMPUTERNAME; Indicator=$_.FullName; Detail="SHA256: $sha256 | $verdict" }
            }
        }
    }
}

Write-Host '[*] Checking active network connections to C2 IPs...' -ForegroundColor Cyan
foreach ($ioc in $C2Indicators) {
    try {
        $resolved = Resolve-DnsName $ioc -ErrorAction Stop | Where-Object { $_.IPAddress }
        foreach ($r in $resolved) {
            $conns = Get-NetTCPConnection -ErrorAction SilentlyContinue | Where-Object { $_.RemoteAddress -eq $r.IPAddress -and $_.State -eq 'Established' }
            foreach ($c in $conns) {
                $proc = (Get-Process -Id $c.OwningProcess -ErrorAction SilentlyContinue).ProcessName
                $Findings += [PSCustomObject]@{ Type='Active Connection'; Host=$env:COMPUTERNAME; Indicator="$ioc ($($r.IPAddress))"; Detail="PID $($c.OwningProcess) - $proc" }
            }
        }
    } catch {}
}

Write-Host '[*] Checking hosts file for tampering...' -ForegroundColor Cyan
$hostsFile = "$env:SystemRoot\System32\drivers\etc\hosts"
if (Test-Path $hostsFile) {
    Get-Content $hostsFile | ForEach-Object {
        foreach ($ioc in $C2Indicators) {
            if ($_ -match [regex]::Escape($ioc)) {
                $Findings += [PSCustomObject]@{ Type='Hosts File Entry'; Host=$env:COMPUTERNAME; Indicator=$ioc; Detail=$_ }
            }
        }
    }
}

if ($Findings.Count -gt 0) {
    Write-Host "[!] $($Findings.Count) finding(s):" -ForegroundColor Red
    $Findings | Format-Table -AutoSize
    $Findings | Export-Csv ".\TinstaPorn_Hunt_$(Get-Date -Format 'yyyyMMdd_HHmmss').csv" -NoTypeInformation
} else {
    Write-Host '[+] No TinstaPorn indicators found on this host.' -ForegroundColor Green
}

Response Priorities

Immediate (0–4h):

  • Block all listed domains/URLs at DNS resolver, secure web gateway, and egress firewall; add nationbj.com, cloudfareproxy2618.xyz, testylhg24.online, youkureg510.xyz, yongli250627linecfg.xyz to blocklists with wildcard coverage.
  • Push the SHA256 hash to EDR/MTD blocklists; retroactively hunt DNS and proxy logs for 30 days.
  • Query MDM/MTD for the malicious package on managed and BYOD Android fleets; force-uninstall if found.

24 hours:

  • The malware harvests phone numbers and registration data — treat any user with a confirmed infection as PII-compromised. Verify no corporate accounts share the phone number used for gambling registration; enforce MFA re-verification and watch for smishing/SIM-swap attempts against affected users.
  • Review identity logs for impossible-travel or new-device authentications from users with infected devices.
  • Notify HR/security awareness of the insider-risk angle: employees deep in gambling fraud losses are elevated social-engineering and recruitment targets.

1 week:

  • Harden mobile architecture: enforce MDM policies blocking APK sideloading (unknown sources) on corporate-enrolled devices; extend MTD coverage to BYOD work profiles.
  • Deploy JA3/JA4-based detection for encrypted C2 patterns at egress, since AES/HMAC-protected traffic defeats payload inspection.
  • Add Flutter-APK detection rules to email/web gateways (block .apk attachments and direct APK downloads for non-developer roles).
  • Feed OTX indicators into continuous threat-intel pipelines and set variant-detection alerting on the operators' naming patterns (*proxy*.xyz, *reg*.xyz, *linecfg*.xyz).

Related Resources

Security Arsenal Incident Response Managed SOC & MDR Services AlertMonitor Threat Detection From The Dark Side Intel Hub

Is your security operations ready?

Get a free SOC assessment or see how AlertMonitor cuts through alert noise with automated triage.