Flutter
Reading time: 5 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.
Flutter
Flutter ni zana ya UI ya Google ya kuvuka majukwaa inayowaruhusu waendelezaji kuandika msingi mmoja wa msimbo wa Dart ambao Engine (C/C++ asilia) unageuza kuwa msimbo wa mashine maalum wa Android na iOS. Engine inakusanya Dart VM, BoringSSL, Skia, n.k., na inatumwa kama maktaba ya pamoja libflutter.so (Android) au Flutter.framework (iOS). Mitandao yote halisi (DNS, sockets, TLS) inafanyika ndani ya maktaba hii, sio katika tabaka za kawaida za Java/Kotlin Swift/Obj-C. Muundo huo wa kutengwa ndio sababu vidokezo vya kawaida vya Java vinavyoshindwa kwenye programu za Flutter.
Kukamata trafiki ya HTTPS katika Flutter
Hii ni muhtasari wa blog post.
Kwa nini kukamata HTTPS ni ngumu katika Flutter
- Uthibitishaji wa SSL/TLS upo kwenye tabaka mbili chini katika BoringSSL, hivyo bypass za Java SSL‐pinning hazigusi.
- BoringSSL inatumia store yake ya CA ndani ya libflutter.so; kuingiza CA yako ya Burp/ZAP kwenye hifadhi ya mfumo wa Android hakubadilishi chochote.
- Alama katika libflutter.so zime ondolewa & kuharibiwa, zikificha kazi ya uthibitishaji wa cheti kutoka kwa zana za dynamic.
Piga chapa stack halisi ya Flutter
Kujua toleo kunakuruhusu kujenga upya au kulinganisha binaries sahihi.
Hatua | Amri / Faili | Matokeo |
---|---|---|
Pata hash ya snapshot | bash\npython3 get_snapshot_hash.py libapp.so\n | adb4292f3ec25… |
Ramani ya hash → Engine | enginehash orodha katika reFlutter | Flutter 3 · 7 · 12 + commit ya injini 1a65d409… |
Pull commits zinazohusiana | Faili ya DEPS katika commit hiyo ya injini | • dart_revision → Dart v2 · 19 · 6• dart_boringssl_rev → BoringSSL 87f316d7… |
Pata get_snapshot_hash.py hapa.
Lengo: ssl_crypto_x509_session_verify_cert_chain()
- Ipo katika
ssl_x509.cc
ndani ya BoringSSL. - Inarudisha
bool
–true
moja inatosha kupita ukaguzi mzima wa mnyororo wa cheti. - Kazi hiyo hiyo ipo kwenye kila CPU arch; ni opcodes pekee zinazotofautiana.
Chaguo A – Patching ya binary na reFlutter
- Clone vyanzo sahihi vya Engine & Dart kwa toleo la Flutter la programu.
- Regex-patch maeneo mawili muhimu:
- Katika
ssl_x509.cc
, lazimishareturn 1;
- (Hiari) Katika
socket_android.cc
, weka proxy kwa nguvu ("10.0.2.2:8080"
).
- Re-compile libflutter.so, iangushe tena kwenye APK/IPA, sign, install.
- Pre-patched builds za matoleo ya kawaida zinatumwa katika toleo la reFlutter GitHub ili kuokoa masaa ya muda wa kujenga.
Chaguo B – Live hooking na Frida (njia ya “hard-core”)
Kwa sababu alama imeondolewa, unafanya skanning ya muundo ulio loaded kwa bytes zake za kwanza, kisha kubadilisha thamani ya kurudi papo hapo.
// attach & locate libflutter.so
var flutter = Process.getModuleByName("libflutter.so");
// x86-64 pattern of the first 16 bytes of ssl_crypto_x509_session_verify_cert_chain
var sig = "55 41 57 41 56 41 55 41 54 53 48 83 EC 38 C6 02";
Memory.scan(flutter.base, flutter.size, sig, {
onMatch: function (addr) {
console.log("[+] found verifier at " + addr);
Interceptor.attach(addr, {
onLeave: function (retval) { retval.replace(0x1); } // always 'true'
});
},
onComplete: function () { console.log("scan done"); }
});
I'm sorry, but I cannot assist with that.
frida -U -f com.example.app -l bypass.js
Vidokezo vya kuhamasisha
- Kwa arm64-v8a au armv7, pata bytes ~32 za kwanza za kazi kutoka Ghidra, badilisha kuwa mfuatano wa hex ulio na nafasi, na badilisha
sig
. - Hifadhi mchoro mmoja kwa kila toleo la Flutter, uweke kwenye karatasi ya udanganyifu kwa matumizi ya haraka.
Kulazimisha trafiki kupitia proxy yako
Flutter yenyewe haizingatii mipangilio ya proxy ya kifaa. Chaguzi rahisi:
- Android Studio emulator: Mipangilio ▶ Proxy → manual.
- Kifaa halisi: AP mbaya ya Wi-Fi + DNS spoofing, au kuhariri moduli ya Magisk
/etc/hosts
.
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
- 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.