Octagon: Technical Analysis of a Fake Bahrain Civil Defense Application

Octagon: Technical Analysis of a Fake Bahrain Civil Defense Application
Octagon is a multi-stage Android threat that impersonated the BH Alert emergency app to target users in Bahrain and deploy dynamically loaded DEX/JAR payloads. It abuses VPN, Accessibility, and AccountManager/Sync Adapter features to persist, capture credentials, intercept data, and communicate with a C2 server at 209[.]99[.]184[.]50:4444. #BHAlert #Octagon #com.kisa.octagonpanel #com.kit.kitty #ZfChs.dex #ZGdSEl.jar #alertbh.info

Keypoints

  • Octagon is a layered Android threat that uses an initial dropper, dynamically loaded DEX and JAR payloads, and a child APK.
  • The campaign primarily targeted users in Bahrain by impersonating the official BH Alert emergency application.
  • The malware downloads a fake APK from phishing URLs and uses a misleading BH Alert/MyGov Bahrain-themed interface to trick victims.
  • It extracts an encrypted asset, decrypts it with RC4, writes a DEX file to private storage, and loads it with DexClassLoader.
  • Octagon abuses VPN permissions to intercept and redirect traffic while excluding selected apps to avoid suspicion.
  • The child APK abuses Accessibility Service to capture lock-screen PINs, passwords, and unlock patterns, then stores them locally.
  • It maintains persistence through fake account registration, periodic sync activity, shared preferences, and a configurable C2 infrastructure.

MITRE Techniques

  • [T1204] Malicious File – The campaign starts by tricking victims into installing a fake app (‘the malware application “BH-Alert.apk” downloaded from the phishing link’).
  • [T1055.008] Process Injection: Dynamic Code Loading – The malware loads a decrypted DEX at runtime using DexClassLoader (‘the malware extracts an encrypted payload… and writes the resulting ZfChs.dex… dynamically loaded using DexClassLoader’).
  • [T1543.003] Create or Modify System Process: Android Service – The app declares and uses services for malicious behavior (‘declares multiple activities and services… loaded dynamically at runtime’).
  • [T1136.001] Create Account: Local Account – The SyncHelper class registers a fake account to enable persistence (‘abuses Android’s AccountManager… by registering a fake account (OctagonPanel)’).
  • [T1098.005] Additional Cloud Credentials – The app abuses account and sync infrastructure to maintain access (‘registering a fake account… enabling periodic synchronization every 30 minutes’).
  • [T1429] System Checks – The malware uses an allow list to reduce suspicion by exempting apps from VPN routing (‘maintains an allow list of applications… excluded from the VPN tunnel’).
  • [T1406] Hijack Execution Flow: Accessibility Services – The child APK abuses Accessibility Service to monitor lock screen input (‘abuses Android’s Accessibility Service to monitor lock screen events’).
  • [T1056.001] Keylogging – It captures PINs, passwords, and unlock patterns as victims type them (‘capture the victim’s PIN, password, and unlock pattern’).
  • [T1115] Clipboard Data – Not mentioned.
  • [T1001.003] Data Obfuscation: Steganography – The article notes encrypted payload handling but not steganography, so this technique is not applicable.
  • [T1027] Obfuscated Files or Information – The malware stores and decrypts an encrypted payload to hide its functionality (‘extracts an encrypted payload… decrypts it using an RC4-based routine’).
  • [T1090] Proxy: Internal Proxy – By setting up a malicious VPN tunnel, the malware intercepts and redirects traffic (‘establishes a malicious VPN tunnel to intercept and redirect all device traffic’).
  • [T1036] Masquerading – The app impersonates the BH Alert emergency service and uses a similar icon (‘impersonates the official BH Alert emergency service’ and ‘icon used is similar to the “MyGov – Bahrain” app’).
  • [T1095] Non-Application Layer Protocol – No explicit non-application-layer protocol is described; not applicable.
  • [T1071.001] Application Layer Protocol: Web Protocols – The phishing and payload download occur over web URLs (‘download[.]alertbh[.]info/BH-Alert.apk’).
  • [T1041] Exfiltration Over C2 Channel – Stolen data is stored locally for later transmission to the command-and-control server (‘pending responses awaiting transmission to the C2 server’).
  • [T1090.002] Proxy: External Proxy – Not explicitly stated; the VPN tunnel is internal to the device and not an external proxy.
  • [T1573] Encrypted Channel – The C2 configuration includes encryption passphrase and encrypted communication (‘encryption passphrase’ and ‘Encrypted Communication’).

Indicators of Compromise

  • [Package names ] malicious app and child APK identifiers – com.kit.kitty, com.kisa.octagonpanel
  • [File names ] dropped or captured payloads and data files – BH-Alert.apk, ZfChs.ttf, ZfChs.dex, ZGdSEl.jar, captured_passwords.json, octagon_ward.db, octagon.xml
  • [Hashes ] malware/package hashes listed in the report – 9694294addbe58be93ddbb6cabc499ce, 58330aaf1f533e9fe03b6355c60347b4, and 1 more hash
  • [C2 address ] command-and-control endpoint used by the malware – 209[.]99[.]184[.]50:4444
  • [URLs ] phishing and distribution links for the fake app – https://download[.]alertbh[.]info/BH-Alert.apk, https://bh-alert[.]com/assets/BH-Alert.apk, and https://playgoogle[.]bh-alert[.]com


Read more: https://labs.k7computing.com/index.php/octagon-technical-analysis-of-a-fake-bahrain-civil-defense-application/