autumn-sky
Published on

Malware Analysis: SeaMoon Bank Trojan (Fake eGOVph App)

Authors
  • avatar
    Name
    Comet
    Twitter

Executive Summary

A malicious Android application disguised as the Philippine government's official eGOVph app was obtained and subjected to full static reverse engineering analysis. We are tracking this threat as the SeaMoon Bank Trojan, named after the default IMEI fallback string seamoonabcdefghijklm hardcoded in its SDK. The application is a sophisticated banking trojan, spyware, and remote access tool that targets Filipino citizens through social engineering schemes involving the eGOVph platform.

Key findings:

  • The malware impersonates a legitimate Philippine government application to deceive victims into installing it on their mobile devices.
  • Once installed, it can steal banking credentials, intercept SMS messages and one-time passwords (OTPs), record the device screen in real time, activate the camera silently, exfiltrate contacts and personal data, and remotely control the device.
  • The malware's Command and Control (C2) server was live and operational at the time of analysis (19 February 2026), with its TLS certificate provisioned on 6 February 2026.
  • The C2 server's bank target list, obtained during live probing, contains 17 Philippine financial applications including GCash, Maya, BPI, BDO, UnionBank, Metrobank, LANDBANK, and others.
  • The total target list spans 87 financial applications across the Philippines, Malaysia, Indonesia, Vietnam, Cambodia, Thailand, Singapore, New Zealand, Saudi Arabia, and Bangladesh -plus cryptocurrency exchanges.
  • Analysis of the underlying malware toolkit (com.bw / common_release) reveals this is the product of a professionally organized, Chinese-speaking cybercrime group that has been operating since at least 2021. The toolkit was originally built for illegal online gambling platforms before being repurposed for banking fraud.
  • The malware APK was built on 16 February 2026, indicating this is an active, ongoing campaign.

2. BACKGROUND AND SCOPE

2.1 How the Sample Was Obtained

The malicious APK was obtained after a Facebook post surfaced publicly describing the scam. The post included a link to a fake government webpage at egov.vrph.cc, which was hosting the malware for download. The APK was retrieved directly from this distribution site for analysis.

Source code of the fake eGOVph website at egov.vrph.cc
Source code of the fake eGOVph website hosted at egov.vrph.cc, used to distribute the malicious APK.

2.2 Scope of Analysis

The analysis was conducted through static reverse engineering only -the malware was not executed on any device, and no victim data was accessed or modified. The analysis comprised:

  1. APK unpacking -The malware was protected with DPT-shell, an open-source Android packing framework. A custom unpacker was developed to restore all 63,713 method bodies from four DEX files, yielding 11,294 decompiled Java source files.
  2. Source code analysis -Full review of the decompiled application source, including the main malware package (io.mkvps.ujwxe), the reusable malware SDK (com.bw), and supporting libraries.
  3. Encryption reversal -Two encryption layers (DES-ECB for configuration, AES-256-ECB for API traffic) were fully reversed, enabling decryption of all C2 communications.
  4. Live C2 interaction -Using the reversed encryption, authenticated and unauthenticated endpoints on the live C2 server were probed to confirm operational status and gather additional intelligence, including the complete list of targeted financial applications.

3. SAMPLE INFORMATION

PropertyValue
FilenameeGOVph.apk
SHA-2565cad193cefa135f0ef651402732ba7e0c3fd4b906f76ef5cb87c5aba9da72cde
File Size23,440,726 bytes (23.4 MB)
Android Package Nameio.jtjyp.wxfcu
Internal Packageio.mkvps.ujwxe
App Version3.0 (version code: 3)
Build FlavorPhKjEgovTextEncrypt
Build Timestamp16 February 2026, 05:29 UTC
PackerDPT-shell (open-source DEX packing framework)
Malware SDKcom.bw / common_release v02170529
Campaign IdentifierPhKjEgov

4. SOCIAL ENGINEERING VECTOR

4.1 Attack Scenario

Based on the application's branding, configuration, and campaign identifier (PhKjEgov), the social engineering attack targets Filipino citizens through the following scenario:

  1. Initial Contact -Victims are contacted via phone call, SMS, or email by individuals claiming to represent a Philippine government agency.
  2. Pretext -The caller/message claims there is a problem with the victim's eGOVph account -e.g., that their account needs to be updated, verified, or reactivated.
  3. Installation -Victims are directed to download and install the fake "eGOVph" application from a link provided by the scammer. The app is not distributed through the Google Play Store.
  4. Permission Harvesting -Upon installation, the app requests extensive permissions including Accessibility Service access, SMS reading, camera, microphone, location, and contacts.
  5. Exploitation -Once permissions are granted, the malware silently begins stealing credentials, intercepting messages, and establishing persistent connections to the attacker's servers.

4.2 Why This Is Effective

  • The Philippine government's eGOVph is a legitimate and widely recognized platform, making impersonation highly credible.
  • eGOVph is a widely used government services platform with active citizen engagement, creating a sense of urgency when victims are told there is a problem with their account.
  • Many Filipino citizens may not be aware that government agencies do not request app installations via phone or SMS.

5. MALWARE CAPABILITIES

5.1 Banking Credential Theft

CapabilityTechnical Detail
Overlay attacksDisplays fake login screens (username, password, PIN fields) on top of legitimate banking apps when they are opened
Password capturePasswordCapture2 service monitors all text input fields for banking credentials
Bank password submissionStolen credentials are submitted directly to C2 via POST /x/user-bank-pwd
Targeted overlaysDedicated overlay windows: BcaInputPwdWindow, BmriInputPwdWindow, BniInputPwdWindow, FitterBankWindow (generic), VietBankWindow
PIN harvestingTransplentPinLockWindow captures device PINs and transaction PINs
Anti-screenshotAntiScreenshotWindow prevents victims from taking screenshots while fake bank screens are displayed

5.2 SMS and OTP Interception

CapabilityTechnical Detail
SMS interceptionSmsService and SmsContent register broadcast receivers for all incoming SMS
OTP theftAll intercepted SMS -including one-time passwords from banks -are uploaded to C2 via POST /x/common-sms
2FA bypassCombined credential theft + OTP interception enables complete bypass of SMS-based two-factor authentication

5.3 Real-Time Surveillance

CapabilityTechnical Detail
Screen recordingScreenRecordService captures the display via Android MediaProjection API
Screen streamingWsH264Publisher encodes frames as H.264 video and streams over WebSocket to ws://8.219.85.91:8888
RTMP streamingAlternate video stream to rtmp://101.37.81.24
Camera activationCameraService silently activates the front-facing camera; video streamed to C2
Clipboard monitoringClipboardUtils monitors clipboard in real time -captures any copied text (account numbers, passwords, etc.)

5.4 Data Exfiltration

Data TypeAPI Endpoint
Contact listPOST /x/common-books
Installed appsPOST /x/common-app
SMS messagesPOST /x/common-sms
ID photos/videosPOST /x/five/user-upload
Banking passwordsPOST /x/user-bank-pwd
Device info, call logsPOST /x/command-report
KYC / personal dataPOST /x/five/user-extra
ScreenshotsPOST /x/command-screen-up

5.5 Remote Device Control

CapabilityTechnical Detail
Automated taps/swipesTouchAction and AutoClick simulate user touches at specified screen coordinates
Form auto-fillAccessibility service can input text into any field on the device
App navigationCan press Home, Back, Recent Apps buttons programmatically
Reverse proxyFRPC tunnel allows C2 operators to connect directly into the victim's device (port allocation: (user_id % 40000) + 10000)
Command channelWebSocket connection at wss://{host}/x/command?token={token} receives real-time commands

5.6 Persistence

MechanismDetail
Accessibility ServiceRegisters as a system accessibility service (FocusService) -difficult to remove without technical knowledge
Foreground serviceMaintains a persistent notification (ID: 111) to prevent Android from killing the process
HeartbeatReconnects to C2 every 30 seconds via RemoteService
WorkManagerScheduled background tasks survive device reboots (20-minute log upload cycle)
Boot receiverRestarts automatically when the device is rebooted

6. COMMAND AND CONTROL INFRASTRUCTURE

6.1 Identified Servers

HostnameIP AddressPortProtocolFunctionHostingStatus
egov.vrph.cc188.114.96.2443HTTPSFake eGOVph website -malware distribution siteCloudflareLIVE
app.ftjph.top154.19.187.36443HTTPSPrimary C2 -authentication, data upload, command dispatchCloud hostingLIVE (as of 19 Feb 2026)
-8.219.85.918888WebSocketReal-time screen/camera streaming relayAlibaba CloudLIVE
-101.37.81.241935RTMPVideo/camera recording serverAlibaba CloudLIVE
sentry.absu.cc-443HTTPSCrash reporting and telemetryCloud hostingLIVE

6.2 TLS Certificate Details

PropertyValue
Domainapp.ftjph.top
IssuerLet's Encrypt (R13)
Issued6 February 2026
Expires7 May 2026
ProtocolTLS 1.3 (AEAD-AES256-GCM-SHA384, HTTP/2)

The certificate was issued approximately 10 days before the APK was built (16 February 2026), indicating coordinated infrastructure provisioning and malware deployment.

6.3 C2 Resilience Mechanisms

The malware is designed to maintain connectivity even if primary servers are taken down:

MechanismDetail
Dynamic C2 switchingC2 can send WebSocket commands to change HTTP API and WebSocket URLs at runtime -no APK update required
Telegram Bot fallbackC2 can redirect all API traffic through the Telegram Bot API as a backup channel
DNS-over-HTTPSUses 6 DoH resolvers (Google, Cloudflare, OpenDNS, Quad9, Aliyun, 45.11.45.11) to bypass local DNS blocking
SSL bypassAccepts any TLS certificate -cannot be blocked via certificate pinning countermeasures
Retry logic5 retry attempts with 2-second delay on connection failure
Connection pool15 persistent connections, 5-minute idle timeout

6.4 Live C2 Probe Results

Using the reversed AES-256-ECB encryption, unauthenticated endpoints on the live C2 were probed on 19 February 2026:

EndpointResponseLanguage
x/login (no credentials)code:400 -"Maklumat anda tidak betul, tidak dapat log masuk"Malay
x/login (with credentials)code:400 -Same error (no user enumeration)Malay
x/common-bank-listcode:999 -"Gagal masuk" (authentication required)Malay
x/common-zhcode:400 -"参数错误" (parameter error)Chinese

Intelligence value:

  • Malay error messages ("Maklumat anda tidak betul" = "Your information is incorrect") confirm the same C2 panel is also used to target Malaysian victims.
  • Chinese error messages ("参数错误" = "parameter error") confirm Chinese-speaking operators.

6.5 Fake Device Registration and Authenticated Access

The x/common-bank-list endpoint returned code:999 ("Gagal masuk") when accessed without authentication, indicating a valid access token was required. By analyzing the malware's registration flow in the decompiled source, we crafted a POST /x/register request with fabricated device parameters -registering a fake device on the C2 server. The server accepted the registration and returned a valid access token.

With this token, we were able to authenticate to the C2 and access protected endpoints, including GET /x/common-bank-list, which returned the complete list of 87 targeted financial applications across 10+ countries.

Crafted HTTP POST request registering a fake device on the live C2 server
A specially crafted HTTP POST request to the C2's registration endpoint, successfully registering a fake device and obtaining an access token.

6.6 WebSocket C2 Command Channel

Using the obtained access token, we connected to the C2's WebSocket endpoint at wss://app.ftjph.top/x/command. The server immediately pushed two commands to the fake device:

  1. Screen streaming command (action:99) - instructs the device to begin streaming the victim's screen in real-time via RTMP to rtmp://154.19.187.36:30046/live/..., giving operators a live view of everything on the victim's display.
  2. Bank target list (action:61) - delivers the complete list of 87 targeted financial application package names. The malware uses this list to monitor which apps are installed and detect when the victim opens a banking app.

On a real victim's device, once these commands are received, the malware begins silently recording and streaming the screen to the attacker's server. The bank target list is stored locally, and the malware's Accessibility Service (FocusService) monitors app activity in the background. When the victim opens any of the 87 targeted banking or financial apps, the malware immediately triggers an overlay attack - displaying a fake login screen on top of the legitimate app. Any credentials entered (username, password, PIN) are captured and sent to the C2 via POST /x/user-bank-pwd. Meanwhile, incoming SMS messages containing OTPs are intercepted and forwarded to the attacker, enabling complete bypass of SMS-based two-factor authentication. The stolen credentials can then be immediately used by the operators through the POST /x/five/bank-login endpoint, allowing them to log in to the victim's bank account directly from the C2 infrastructure. Because the malware has access to the device's camera via CameraService and can stream live video of the victim's face, it can bypass facial recognition checks that banks use as an additional security layer. The operators, watching the victim's screen in real-time, can also issue further commands - such as automated taps, form fills, or launching a reverse proxy tunnel to directly interact with the compromised device.

Beyond stealing credentials and draining balances, the malware also has the capability to take out loans under the victim's name. The C2 infrastructure includes dedicated loan endpoints - GET /x/loan-info to retrieve available loan products, GET /x/loan-contract to fetch loan terms, POST /x/loan-save to submit loan applications, and POST /x/income-save to provide fabricated income data. Combined with the stolen KYC documents (ID photos, personal data exfiltrated via /x/five/user-upload and /x/five/user-extra), operators can apply for and potentially secure loans without the victim's knowledge, leaving them liable for debt they never authorized.

WebSocket connection to the C2 server showing live commands and the bank target list
Live WebSocket session with the C2 server, showing the RTMP streaming command and the full bank target list pushed to the connected device.

7. TARGETED PHILIPPINE FINANCIAL INSTITUTIONS

The following 17 Philippine financial applications were retrieved from the C2 server using a JWT token obtained by registering a fake device. The bank-target list was delivered in encrypted form and subsequently decrypted using our script. The schema field specifies the Android package names used by the malware to detect when these applications are opened and to trigger overlay attacks.

#InstitutionApp NameAndroid Package (schema)Date Added to C2
1Globe Fintech (GCash)GCashcom.globe.gcash.android23 Dec 2024
2Maya PhilippinesMayacom.paymaya23 Dec 2024
3Bank of the Philippine IslandsBPIcom.bpi.ng.app23 Dec 2024
4Bank of the Philippine IslandsVYBE by BPIcom.indivara.bpi15 Oct 2025
5Banco de OroBDO Onlineph.com.bdo.retail23 Dec 2024
6Banco de OroBDO Payph.com.bdo.pay27 Apr 2025
7Union Bank of the PhilippinesUnionBank Onlinecom.unionbankph.online23 Dec 2024
8Metropolitan Bank & TrustMetrobank Appph.com.metrobank.mcc.mbonline24 Dec 2024
9Land Bank of the PhilippinesLANDBANK Mobilecom.landbank.mobilebanking23 Dec 2024
10Philippine National BankPNB Digitalcom.pnb.android23 Dec 2024
11Security BankSecurity Bankcom.securitybank.bbx23 Dec 2024
12China Banking CorporationChina Bank Mobilecom.cbc.mobilebanking23 Dec 2024
13Rizal Commercial Banking Corp.RCBCpulzcom.rcbc.pulz23 Dec 2024
14CIMB Bank PhilippinesCIMB Bankcom.cimbph.app202223 Dec 2024
15GoTyme BankGoTyme Bankph.com.gotyme8 Jan 2025
16EastWest Banking Corp.EastWest EasyWaycom.eastwest.mobile.dxp11 Mar 2025
17SeaBank PhilippinesSEABANKph.seabank.seabank29 Jun 2024

Additional Philippine targets added later:

  • Komo (ph.komo.app) -added 2 Feb 2025
  • RBank Digital (com.robinsons.RBankDigital) -added 16 Feb 2025
  • Asia United Bank -AUB (com.aub.mobilebanking) and HelloMoney by AUB (com.aub.hellomoney) -added 27 Apr 2025
  • Shopee Philippines (com.shopee.ph) -added 30 Oct 2025
  • Atome Philippines (ph.atome.paylater) -added 30 Oct 2025

Total Philippine targets: 22 financial and e-commerce applications.

The dates show a pattern of progressive target expansion -the attackers began adding Philippine banks in December 2024 and have continued adding new targets through October 2025, indicating sustained, evolving interest in the Philippine market.


8. TARGETED FOREIGN FINANCIAL INSTITUTIONS

The C2 server's bank list reveals this is a multi-country operation. Beyond the Philippines, the following countries and institutions are targeted:

8.1 Malaysia (18 apps)

MAE by Maybank2u, Touch 'n Go eWallet, CIMB OCTO MY, RHB Mobile Banking, HLB Connect, Public Bank (PB engage MY), Alliance Online, AmOnline, UOB TMRW Malaysia, OCBC Malaysia, HSBC Malaysia, AffinAlways, AGRONet Mobile, myBSN, SC Mobile Malaysia, GO by Bank Islam, GXBank, Maybank

8.2 Indonesia (16 apps)

BCA, myBCA, Livin' by Mandiri (BMRI), BNI, Bank Rakyat Indonesia, CIMB Niaga, PermataMobile X, e-cash Panin, Danamon, BTN, BJB, Bank Neo, OCBC, JATIM, BSI, DANA, SeaBank

8.3 Vietnam (18 apps)

Techcombank, Sacombank, MB Bank, VPBank, SHB Mobile, MyVIB, VietABank, Eximbank, DongA Mobile, SCB Mobile, TP Bank, MSB mBank, Vietbank, KienlongBank Plus, Nam A Bank, SeAMobile, ACB (SafeKey + ONE Biz), OCB OMNI, PVConnect, Agribank, SmartBank (BIDV), MBS Mobile

8.4 Other Countries

CountryApps
CambodiaWing Bank, CPbank Mobile Banking
ThailandBinance TH
SingaporeDBS
New ZealandKiwibank
Saudi ArabiaSNB QuickPay
BangladeshAB Direct Internet Banking

8.5 Cryptocurrency Exchanges (5 apps)

Binance, Coinbase, OKX, Kraken, Bybit

8.6 E-commerce (2 apps)

Lazada, Shopee

Total across all countries: 87 targeted financial applications.

The earliest C2 entries date to July 2023 (Vietnamese banks), with progressive expansion to Indonesia (June 2024), Malaysia (September 2024), the Philippines (December 2024), and continuing through 2025-2026.


9. ENCRYPTION AND ANTI-FORENSIC TECHNIQUES

9.1 Application Packing (DPT-Shell)

The malware's code is protected using DPT-shell, an open-source Android DEX packing framework. The packer was identified by the com.jx.shell package name found in the decompiled stub code (containing ProxyApplication, JniBridge, and four other classes), which matches the DPT-shell open-source project. This was further confirmed by the characteristic asset file naming (OoooooOooo, vwwwwwvwww/) and binary format matching DPT-shell's MultiDexCode.cpp source code. Standard decompilation produced only the packer's stub code -with the actual application logic entirely absent.

How DPT-shell hides the code:

  1. At build time, DPT-shell removes all method bytecode (63,713 methods) from the DEX files, replacing each method body with scrambled data.
  2. The original bytecode is serialized into a binary file stored at assets/OoooooOooo (3.5 MB).
  3. At runtime, a native library (libdpt.so) restores each method body just before execution.
  4. Anti-analysis defenses in libdpt.so include Frida detection, anti-ptrace, process inspection via /proc/self/maps, and inline hooking via the Dobby/ByteHook frameworks.

Defeating the packer:

The critical discovery was inside the APK's classes.dex -a 10 MB file containing only 108 methods and 6 classes, which is impossible under normal circumstances. Parsing the DEX header revealed that the actual DEX structure occupied only ~10 KB, ending at offset 0x25E8. Scanning the remaining bytes revealed a ZIP local file header (PK\x03\x04) immediately after the DEX map list:

rest = dex_data[0x2600:]
for m in re.finditer(b'PK\x03\x04', rest):
    print(f'ZIP header at 0x{0x2600 + m.start():x}')

This is DPT-shell's hiding mechanism: it appends a ZIP archive containing the original (hollowed) DEX files to the end of the shell classes.dex. Android's DEX loader reads only the DEX structure at the beginning and ignores the trailing data, while libdpt.so reads the same file as a ZIP to access the hidden entries.

Extracting this embedded ZIP yielded four DEX files:

FileSizeMethodsClasses
classes.dex9.4 MB64,9909,229
classes2.dex9.0 MB64,8129,915
classes3.dex4.2 MB24,0974,270
classes4.dex29 KB44899

These DEX files contained complete class structures and method signatures, but all method bodies were scrambled. By parsing the OoooooOooo binary format (documented in DPT-shell's source as MultiDexCode), we extracted 63,713 CodeItems -raw Dalvik bytecode -and patched them back into the correct DEX offsets. After recalculating each DEX's Adler32 checksum and SHA-1 signature, the restored files decompiled with JADX into 11,294 Java source files (99.7% success rate).

9.2 Communication Encryption

The malware employs two distinct encryption layers:

Layer 1: DES-ECB -Configuration Decryption

Build-time encrypted strings in BuildConfig are decrypted at runtime by OkhttpKt.doOutput():

Algorithm:   DES (56-bit effective key)
Mode:        ECB (Electronic Codebook)
Key:         h3@FuaKc (hardcoded)
Flow:        Base64 input → DES decrypt → UTF-8JSON
BuildConfig FieldEncrypted ValueDecrypted Value
BaseAddressxSj8uQb2s2pTspNI1oG+Dw==app.ftjph.top
JsonStrnjBeTefIzCqpXabg4qKMy+H90f7...Runtime config JSON (see Appendix A)

Layer 2: AES-256-ECB -API Traffic Encryption

All HTTP traffic between the malware and C2 is encrypted using AES, implemented in AESUtils.java:

Algorithm:   AES-256
Mode:        ECB with PKCS5Padding
Key derivation:
  1. Read BuildConfig.encryptionKey = "cKzJwz6ZF9ra5EybFZWtadaKTPCkST2A"
  2. Compute MD5 hash of the key string
  3. Lowercase the hex digest: "9a34ad6f0f964d6bde807527d365aa4b"
  4. Use this 32-byte string as the AES-256 key

The OkHttp ParamsInterceptor encrypts every outbound request body, and the ResponseInterceptor decrypts every response where "type":"encryption" is present. Requests to api.telegram.org bypass encryption (Telegram Bot API fallback channel).

Both layers were fully reversed during this analysis, enabling decryption of all C2 traffic and live probing of the operational server.

9.3 Additional Encryption Keys Found

KeyValuePurpose
AES master key (pre-derivation)cKzJwz6ZF9ra5EybFZWtadaKTPCkST2ASource for API encryption key
Secondary AES keycfb@PassW0rd0124Secondary encryption operations
MD5 saltbw2021@jlj34ij34lkj?d30RJcaipiaoPassword hashing
Text encryption key48vtHQWiPId0lCD0Text field encryption
DES ciphertext (C2 hostname)xSj8uQb2s2pTspNI1oG+Dw==Decrypts to app.ftjph.top

9.4 Code Obfuscation

  • Package names use confusing patterns: p000O8oO888, p019O, p022o0o0
  • Variable names use Unicode/non-printable characters
  • Class names use abstract identifiers: AbstractC1497, o0o0, Oo0

9.5 Anti-Analysis Defenses

The native library libdpt.so implements multiple techniques to prevent dynamic analysis and debugging:

TechniqueEvidence
Frida detectionScans for strings: frida-agent, pool-frida, gum-js-loop, gmain, gdbus
Process inspectionReads /proc/self/maps, /proc/%d/maps, /proc/%d/task to detect attached debuggers and injected libraries
Anti-ptraceUses fork() + waitpid() pattern to prevent debugger attachment
Signal manipulationUses sigaction, sigprocmask, sigsetjmp/siglongjmp to detect and disrupt debugging
Linker hookingAccesses internal symbols: __dl__Z23linker_get_error_bufferv, __dl__ZL10g_dl_mutex
Code encryptionJNI_OnLoad resides in .bitcode section; disassembles as garbage until decrypted at runtime

10. ATTRIBUTION INDICATORS

10.1 Chinese-Speaking Cybercrime Group

IndicatorEvidence
Chinese language in source codeCrash handler: "程序崩溃" (program crashed); clipboard: "文本已复制到剪贴板" (text copied to clipboard); API error: "参数错误" (parameter error); deprecated marker: "废弃了" (deprecated)
Chinese C2 response/x/common-zh endpoint returned "参数错误"
Baidu connectivity testSDK tests internet connectivity via https://www.baidu.com -a Chinese search engine
Alibaba Cloud hostingTwo of four C2 servers hosted on Alibaba Cloud (8.219.0.0/16, 101.37.0.0/16)
Aliyun DNS resolverSDK includes Aliyun DoH resolver (203.107.1.1) alongside Google/Cloudflare
Jenkins CI build path/var/jenkins_home/workspace/remoteEncrypt1/ -indicates professional, automated build infrastructure

10.2 Organized Criminal Enterprise

IndicatorEvidence
Professional SDKcom.bw package is a modular, plug-and-play malware SDK with abstract base classes, plugin interfaces, and configurable encryption -designed for rapid deployment of campaign variants
Automated buildsJenkins CI/CD pipeline (remoteEncrypt1) automates variant creation
Multi-developer teamMVVM architecture, Kotlin coroutines, WorkManager, Sentry integration -indicates experienced Android developers
Multi-country targeting87 financial apps across 10+ countries, with progressive expansion over 2+ years

10.3 Illegal Gambling Connection

The SDK's API error codes contain constants revealing its original purpose:

Error CodeConstantMeaning
35000SERVER_ERROR_LESS_MIN_BETBelow minimum bet
-200099WITHDRAW_ERROR_BALANCEInsufficient withdrawal balance
-200029WITHDRAW_ERROR_FLOWING_WATERFlowing water error
-200098WITHDRAW_ERROR_IN_REVIEWWithdrawal under review

These gambling-specific error codes prove the SDK was originally developed for illegal online gambling/betting platforms before being repurposed for banking fraud and government impersonation.

10.4 Additional C2 Domain Intelligence

An image asset URL found in the C2 bank list references a different domain:

https://ador.rrbp.xyz/image/dacfad0ca86ac0ec30befe55e3430fde1wAVyU.png

The domain ador.rrbp.xyz may be associated with the same threat actor's infrastructure and warrants further investigation.


11. INDICATORS OF COMPROMISE

11.1 Network Indicators

TypeValueContext
Domainegov.vrph.ccFake eGOVph website / malware distribution
IPv4188.114.96.2Fake eGOVph website IP (Cloudflare)
Domainapp.ftjph.topPrimary C2 server
IPv4154.19.187.36Primary C2 IP
IPv48.219.85.91WebSocket C2 / screen streaming (port 8888)
IPv4101.37.81.24RTMP video exfiltration (port 1935)
Domainsentry.absu.ccTelemetry / crash reporting
Domainador.rrbp.xyzAsset hosting (from C2 bank list)
URLrtmp://101.37.81.24RTMP stream endpoint
Sentry DSN25ec02b4ad32d7ed8a8cf065ec1c6def@sentry.absu.cc/2Sentry project identifier

11.2 File Indicators

TypeSHA-256 Hash
Malicious APK5cad193cefa135f0ef651402732ba7e0c3fd4b906f76ef5cb87c5aba9da72cde
libdpt.so (arm64)424695a6d0fe93d1944ba896dd6355acaeb7315872726931bb22c1caa666e139
libdpt.so (arm32)0537d757ceddfe2552eb94a4b0b483cf8d67e6a00f5abb3c44b599f35781ad2d
libKqRwjUsc.soca8aee852f5bb1d482ed66b2c12452734356a685656e2cc3d9067d0a91685f0b
libyaBWImwH.sofbb8305e415e9a1d41232a2e980f6a00ccffe143fcf9f884ced1b65e4f1c94bd
libWLfOEaUr.soa0f302b163975576f0238fed3a0a5d079a1054306f518dbb73b233cb2ff8cbf1
libASDFGHJ.so8520ca45eb054db303bbf7c28acdca79ae9aa9e0b6dd44d43b5c1cc3694a3c1d

11.3 Application Identifiers

IdentifierValue
Android Package Nameio.jtjyp.wxfcu
Internal Packageio.mkvps.ujwxe
Packer Signaturecom.jx.shell.ProxyApplication
JNI Bridgecom.jx.shell.JniBridge
DPT Asset Pathassets/vwwwwwvwww/
DPT Asset Fileassets/OoooooOooo
Junk Code Classcom.qywl.znkj.junkcode.JunkClass
Accessibility ServiceFocusService
SDK Packagecom.bw (library: common_release)

11.4 Detection Signatures

Mobile devices and networks should be monitored for:

  • Applications requesting both Accessibility Service and SMS reading permissions
  • Network connections to any of the IP addresses or domains listed in Section 11.1
  • Presence of the package name io.jtjyp.wxfcu or io.mkvps.ujwxe
  • WebSocket connections to port 8888 with video streaming patterns
  • RTMP connections to port 1935
  • HTTP traffic with header type: encryption to unknown servers

12.1 If You Installed This App

  1. Immediately turn off your phone's internet connection (Wi-Fi and mobile data) to stop the malware from streaming your screen and sending data to the attackers.
  2. Do not open any banking apps on the infected device.
  3. Using a different device, change all your banking passwords and PINs immediately.
  4. Contact your bank and report that your credentials may have been compromised. Request that they freeze suspicious transactions and monitor your account for unauthorized activity, including loan applications you did not make.
  5. Uninstall the fake eGOVph app - go to Settings > Apps, find the app, and uninstall it. If the app resists uninstallation, perform a factory reset.
  6. Check your SMS history - the malware intercepts all text messages, including OTPs. If you used SMS-based 2FA for any account, consider those accounts compromised.
  7. File a report with the NBI Cybercrime Division or PNP Anti-Cybercrime Group.

12.2 How to Protect Yourself

  • Only install apps from the Google Play Store or Apple App Store. The real eGOVph app is available exclusively on official app stores.
  • The government will never call or text you to install an app. If someone claims to be from a government agency and asks you to download something, it is a scam.
  • Never enable "Install from Unknown Sources" for apps sent via links in SMS, Viber, Messenger, or other messaging apps.
  • Never grant Accessibility Service permissions to apps unless you fully understand what the app does. This permission gives an app complete control over your device.
  • Enable Google Play Protect - go to Play Store > Profile > Play Protect > Settings and make sure "Scan apps with Play Protect" is turned on.
  • Be suspicious of apps requesting excessive permissions - a legitimate government app does not need access to your camera, SMS, contacts, and accessibility services simultaneously.