Xamarin Apps
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)
Support HackTricks
- Angalia mpango wa usajili!
- Jiunge na 💬 kikundi cha Discord au kikundi cha telegram au tufuatilie kwenye Twitter 🐦 @hacktricks_live.
- Shiriki mbinu za udukuzi kwa kuwasilisha PRs kwa HackTricks na HackTricks Cloud repos za github.
Taarifa za Msingi
Xamarin ni jukwaa la chanzo wazi lililoundwa kwa ajili ya waendelezaji kuunda programu za iOS, Android, na Windows kwa kutumia mifumo ya .NET na C#. Jukwaa hili linatoa ufikiaji wa zana nyingi na nyongeza za kuunda programu za kisasa kwa ufanisi.
Muktadha wa Xamarin
- Kwa Android, Xamarin inajumuisha na Android na Java namespaces kupitia .NET bindings, ikifanya kazi ndani ya mazingira ya utekelezaji ya Mono pamoja na Android Runtime (ART). Managed Callable Wrappers (MCW) na Android Callable Wrappers (ACW) husaidia mawasiliano kati ya Mono na ART, zote zikiwa zimejengwa kwenye kernel ya Linux.
- Kwa iOS, programu zinafanya kazi chini ya mazingira ya utekelezaji ya Mono, zikitumika kwa uundaji wa Ahead of Time (AOT) kamili kubadilisha C# .NET code kuwa lugha ya mkusanyiko wa ARM. Mchakato huu unafanya kazi pamoja na Objective-C Runtime kwenye kernel inayofanana na UNIX.
.NET Runtime na Mono Framework
.NET framework inajumuisha makusanyo, madarasa, na namespaces kwa ajili ya maendeleo ya programu, huku .NET Runtime ikisimamia utekelezaji wa msimbo. Inatoa uhuru wa jukwaa na ulinganifu wa nyuma. Mono Framework ni toleo la chanzo wazi la .NET framework, lililoanzishwa mwaka 2005 ili kupanua .NET kwa Linux, sasa likisaidiwa na Microsoft na kuongozwa na Xamarin.
Uhandisi wa Nyuma wa Programu za Xamarin
Ukombozi wa Makusanyo ya Xamarin
Ukombozi hubadilisha msimbo ulioandikwa kuwa msimbo wa chanzo. Katika Windows, dirisha la Modules katika Visual Studio linaweza kutambua moduli za ukombozi, kuruhusu ufikiaji wa moja kwa moja wa msimbo wa wahusika wengine na kutoa msimbo wa chanzo kwa ajili ya uchambuzi.
JIT vs AOT Ukompaji
- Android inasaidia Just-In-Time (JIT) na Ahead-Of-Time (AOT) ukompaji, ikiwa na hali ya Hybrid AOT kwa kasi bora ya utekelezaji. AOT kamili ni ya leseni za Enterprise pekee.
- iOS inatumia tu AOT ukompaji kutokana na vizuizi vya Apple juu ya utekelezaji wa msimbo wa dinamik.
Kutolewa kwa faili za dll kutoka APK/IPA
Ili kufikia makusanyo katika APK/IPA, fungua faili na uchunguze saraka ya makusanyo. Kwa Android, zana kama XamAsmUnZ na xamarin-decompress zinaweza kufungua faili za dll.
python3 xamarin-decompress.py -o /path/to/decompressed/apk
Katika hali ambapo baada ya decompiling APK inawezekana kuona folda ya unknown/assemblies/ yenye faili za .dll
ndani yake, hivyo inawezekana kutumia dnSpy moja kwa moja juu ya .dlls
ili kuzichambua.
Hata hivyo, wakati mwingine, inapatikana faili za assemblies.blob
na assemblies.manifest
ndani ya folda ya unknown/assemblies/. Zana pyxamstore inaweza kutumika kwa kufungua faili ya assemblies.blob
katika programu za Xamarin, ikiruhusu ufikiaji wa .NET assemblies kwa uchambuzi zaidi:
pyxamstore unpack -d /path/to/decompressed/apk/assemblies/
Faili za iOS dll zinapatikana kwa urahisi kwa ajili ya decompilation, zikifunua sehemu kubwa za msimbo wa programu, ambayo mara nyingi inashiriki msingi wa kawaida kati ya majukwaa tofauti.
Uchambuzi wa Kijamii
Mara tu .dll
s zinapopatikana, inawezekana kuchambua msimbo wa .Net kwa njia ya statiki kwa kutumia zana kama dnSpy au ILSpy ambazo zitakuruhusu kubadilisha msimbo wa programu. Hii inaweza kuwa ya manufaa sana kubadilisha programu ili kupita ulinzi kwa mfano.
Kumbuka kwamba baada ya kubadilisha programu, utahitaji kuipakia tena na kuisaini tena.
Uchambuzi wa Kijamii
Uchambuzi wa kijamii unahusisha kuangalia SSL pinning na kutumia zana kama Fridax kwa mabadiliko ya wakati wa kukimbia ya binary ya .NET katika programu za Xamarin. Mifano ya Frida inapatikana ili kupita ugunduzi wa root au SSL pinning, ikiongeza uwezo wa uchambuzi.
Mifano mingine ya kuvutia ya Frida:
Kusaini Tena
Zana Uber APK Signer inarahisisha kusaini APK nyingi kwa kutumia funguo sawa, na inaweza kutumika kusaini tena programu baada ya mabadiliko kufanywa kwake.
Taarifa Zaidi
- https://www.appknox.com/security/xamarin-reverse-engineering-a-guide-for-penetration-testers
- https://thecobraden.com/posts/unpacking_xamarin_assembly_stores/
- https://medium.com/@justmobilesec/introduction-to-the-exploitation-of-xamarin-apps-fde4619a51bf
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)
Support HackTricks
- Angalia mpango wa usajili!
- Jiunge na 💬 kikundi cha Discord au kikundi cha telegram au tufuatilie kwenye Twitter 🐦 @hacktricks_live.
- Shiriki mbinu za udukuzi kwa kuwasilisha PRs kwa HackTricks na HackTricks Cloud repos za github.