hacktricks/mobile-pentesting/xamarin-apps.md

94 lines
11 KiB
Markdown
Raw Normal View History

# Xamarin Apps
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Support HackTricks</summary>
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** ЁЯТм [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** ЁЯРж [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
## **Basic Information**
Xamarin рдПрдХ **рдУрдкрди-рд╕реЛрд░реНрд╕ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо** рд╣реИ рдЬрд┐рд╕реЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП **iOS, Android, рдФрд░ Windows** рдХреЗ рд▓рд┐рдП рдРрдк рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬреЛ .NET рдФрд░ C# рдлреНрд░реЗрдорд╡рд░реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдЖрдзреБрдирд┐рдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рдХреБрд╢рд▓рддрд╛ рд╕реЗ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рдЙрдкрдХрд░рдгреЛрдВ рдФрд░ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рддрдХ рдкрд╣реБрдВрдЪ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред
### Xamarin's Architecture
* **Android** рдХреЗ рд▓рд┐рдП, Xamarin Android рдФрд░ Java рдирд╛рдорд╕реНрдерд╛рди рдХреЗ рд╕рд╛рде .NET рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХреАрдХреГрдд рд╣реЛрддрд╛ рд╣реИ, рдЬреЛ Mono рдирд┐рд╖реНрдкрд╛рджрди рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ Android Runtime (ART) рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред Managed Callable Wrappers (MCW) рдФрд░ Android Callable Wrappers (ACW) Mono рдФрд░ ART рдХреЗ рдмреАрдЪ рд╕рдВрдЪрд╛рд░ рдХреЛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдмрдирд╛рддреЗ рд╣реИрдВ, рдЬреЛ рджреЛрдиреЛрдВ Linux рдХрд░реНрдиреЗрд▓ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИрдВред
* **iOS** рдХреЗ рд▓рд┐рдП, рдЕрдиреБрдкреНрд░рдпреЛрдЧ Mono рд░рдирдЯрд╛рдЗрдо рдХреЗ рддрд╣рдд рдЪрд▓рддреЗ рд╣реИрдВ, рдЬреЛ C# .NET рдХреЛрдб рдХреЛ ARM рдЕрд╕реЗрдВрдмрд▓реА рднрд╛рд╖рд╛ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреВрд░реНрдг Ahead of Time (AOT) рд╕рдВрдХрд▓рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рдкреНрд░рдХреНрд░рд┐рдпрд╛ UNIX-рдЬреИрд╕реЗ рдХрд░реНрдиреЗрд▓ рдкрд░ Objective-C Runtime рдХреЗ рд╕рд╛рде рдЪрд▓рддреА рд╣реИред
### .NET Runtime and Mono Framework
**.NET рдлреНрд░реЗрдорд╡рд░реНрдХ** рдореЗрдВ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП рдЕрд╕реЗрдВрдмрд▓реА, рдХрдХреНрд╖рд╛рдПрдБ, рдФрд░ рдирд╛рдорд╕реНрдерд╛рди рд╢рд╛рдорд┐рд▓ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ .NET Runtime рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрди рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рд╕реНрд╡рддрдВрддреНрд░рддрд╛ рдФрд░ рдкрд┐рдЫрд▓реА рд╕рдВрдЧрддрддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред **Mono Framework** .NET рдлреНрд░реЗрдорд╡рд░реНрдХ рдХрд╛ рдПрдХ рдУрдкрди-рд╕реЛрд░реНрд╕ рд╕рдВрд╕реНрдХрд░рдг рд╣реИ, рдЬрд┐рд╕реЗ 2005 рдореЗрдВ Linux рдХреЗ рд▓рд┐рдП .NET рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╢реБрд░реВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЕрдм Microsoft рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рдд рдФрд░ Xamarin рджреНрд╡рд╛рд░рд╛ рд╕рдВрдЪрд╛рд▓рд┐рдд рд╣реИред
### Reverse Engineering Xamarin Apps
#### Decompilation of Xamarin Assemblies
Decompilation рд╕рдВрдХрд▓рд┐рдд рдХреЛрдб рдХреЛ рдлрд┐рд░ рд╕реЗ рд╕реНрд░реЛрдд рдХреЛрдб рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддрд╛ рд╣реИред Windows рдореЗрдВ, Visual Studio рдореЗрдВ Modules рд╡рд┐рдВрдбреЛ decompilation рдХреЗ рд▓рд┐рдП рдореЙрдбреНрдпреВрд▓ рдХреА рдкрд╣рдЪрд╛рди рдХрд░ рд╕рдХрддреА рд╣реИ, рдЬреЛ рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХреЗ рдХреЛрдб рддрдХ рд╕реАрдзреА рдкрд╣реБрдВрдЪ рдФрд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рд▓рд┐рдП рд╕реНрд░реЛрдд рдХреЛрдб рдирд┐рдХрд╛рд▓рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИред
#### JIT vs AOT Compilation
* **Android** Just-In-Time (JIT) рдФрд░ Ahead-Of-Time (AOT) рд╕рдВрдХрд▓рди рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдЕрдиреБрдХреВрд▓ рдирд┐рд╖реНрдкрд╛рджрди рдЧрддрд┐ рдХреЗ рд▓рд┐рдП рдПрдХ рд╣рд╛рдЗрдмреНрд░рд┐рдб AOT рдореЛрдб рд╣реИред рдкреВрд░реНрдг AOT рдХреЗрд╡рд▓ Enterprise рд▓рд╛рдЗрд╕реЗрдВрд╕ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рд╣реИред
* **iOS** рдХреЗрд╡рд▓ AOT рд╕рдВрдХрд▓рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ Apple рдХреЗ рдЧрддрд┐рд╢реАрд▓ рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрди рдкрд░ рдкреНрд░рддрд┐рдмрдВрдз рд╣реИрдВред
### Extracting dll Files from APK/IPA
APK/IPA рдореЗрдВ рдЕрд╕реЗрдВрдмрд▓реА рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЕрдирдЬрд╝рд┐рдк рдХрд░реЗрдВ рдФрд░ рдЕрд╕реЗрдВрдмрд▓реА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХрд╛ рдЕрдиреНрд╡реЗрд╖рдг рдХрд░реЗрдВред Android рдХреЗ рд▓рд┐рдП, [XamAsmUnZ](https://github.com/cihansol/XamAsmUnZ) рдФрд░ [xamarin-decompress](https://github.com/NickstaDB/xamarin-decompress) рдЬреИрд╕реЗ рдЙрдкрдХрд░рдг dll рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдЕрдирдХрдВрдкреНрд░реЗрд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
```bash
python3 xamarin-decompress.py -o /path/to/decompressed/apk
```
рдРрд╕реЗ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЬрд╣рд╛рдВ APK рдХреЛ рдбрд┐рдХрдВрдкрд╛рдЗрд▓ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдЕрдЬреНрдЮрд╛рдд/assemblies/ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ `.dll` рдлрд╝рд╛рдЗрд▓реЗрдВ рджреЗрдЦреА рдЬрд╛ рд╕рдХрддреА рд╣реИрдВ, рддреЛ `.dlls` рдкрд░ рд╕реАрдзреЗ [**dnSpy**](https://github.com/dnSpy/dnSpy) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИред\
рд╣рд╛рд▓рд╛рдВрдХрд┐, рдХрднреА-рдХрднреА, рдЕрдЬреНрдЮрд╛рдд/assemblies/ рдлрд╝реЛрд▓реНрдбрд░ рдХреЗ рдЕрдВрджрд░ `assemblies.blob` рдФрд░ `assemblies.manifest` рдлрд╝рд╛рдЗрд▓реЗрдВ рдкрд╛рдИ рдЬрд╛рддреА рд╣реИрдВред Xamarin рдРрдкреНрд╕ рдореЗрдВ `assemblies.blob` рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЕрдирдкреИрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП [pyxamstore](https://github.com/jakev/pyxamstore) рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ рдЖрдЧреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рд▓рд┐рдП .NET assemblies рддрдХ рдкрд╣реБрдВрдЪ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ:
```bash
pyxamstore unpack -d /path/to/decompressed/apk/assemblies/
```
iOS dll рдлрд╝рд╛рдЗрд▓реЗрдВ рдбрд┐рдХрдВрдкрд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП рдЖрд╕рд╛рдиреА рд╕реЗ рдЙрдкрд▓рдмреНрдз рд╣реИрдВ, рдЬреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛрдб рдХреЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣рд┐рд╕реНрд╕реЛрдВ рдХреЛ рдкреНрд░рдХрдЯ рдХрд░рддреА рд╣реИрдВ, рдЬреЛ рдЕрдХреНрд╕рд░ рд╡рд┐рднрд┐рдиреНрди рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдХреЗ рдмреАрдЪ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдЖрдзрд╛рд░ рд╕рд╛рдЭрд╛ рдХрд░рддреА рд╣реИрдВред
### рд╕реНрдереИрддрд┐рдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдг
рдПрдХ рдмрд╛рд░ рдЬрдм `.dll` рдкреНрд░рд╛рдкреНрдд рд╣реЛ рдЬрд╛рддреА рд╣реИрдВ, рддреЛ .Net рдХреЛрдб рдХрд╛ рд╕реНрдереИрддрд┐рдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ [**dnSpy**](https://github.com/dnSpy/dnSpy) **рдпрд╛** [**ILSpy**](https://github.com/icsharpcode/ILSpy) **рдЬреЛ** рдРрдк рдХреЗ рдХреЛрдб рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ред рдпрд╣ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ рд╕реБрд░рдХреНрд╖рд╛ рдХреЛ рдмрд╛рдпрдкрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗред\
рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдРрдк рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рдкреИрдХ рдХрд░рдирд╛ рдФрд░ рдлрд┐рд░ рд╕реЗ рд╕рд╛рдЗрди рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
### рдЧрддрд┐рд╢реАрд▓ рд╡рд┐рд╢реНрд▓реЗрд╖рдг
рдЧрддрд┐рд╢реАрд▓ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдореЗрдВ SSL рдкрд┐рдирд┐рдВрдЧ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдирд╛ рдФрд░ Xamarin рдРрдкреНрд╕ рдореЗрдВ .NET рдмрд╛рдЗрдирд░реА рдХреЗ рд░рдирдЯрд╛рдЗрдо рд╕рдВрд╢реЛрдзрдиреЛрдВ рдХреЗ рд▓рд┐рдП [Fridax](https://github.com/NorthwaveSecurity/fridax) рдЬреИрд╕реЗ рдЙрдкрдХрд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╢рд╛рдорд┐рд▓ рд╣реИред рд░реВрдЯ рдбрд┐рдЯреЗрдХреНрд╢рди рдпрд╛ SSL рдкрд┐рдирд┐рдВрдЧ рдХреЛ рдмрд╛рдпрдкрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП Frida рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЙрдкрд▓рдмреНрдз рд╣реИрдВ, рдЬреЛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреНрд╖рдорддрд╛рдУрдВ рдХреЛ рдмрдврд╝рд╛рддреА рд╣реИрдВред
рдЕрдиреНрдп рджрд┐рд▓рдЪрд╕реНрдк Frida рд╕реНрдХреНрд░рд┐рдкреНрдЯ:
* [**xamarin-antiroot**](https://codeshare.frida.re/@Gand3lf/xamarin-antiroot/)
* [**xamarin-root-detect-bypass**](https://codeshare.frida.re/@nuschpl/xamarin-root-detect-bypass/)
* [**Frida-xamarin-unpin**](https://github.com/GoSecure/frida-xamarin-unpin)
### рдлрд┐рд░ рд╕реЗ рд╕рд╛рдЗрди рдХрд░рдирд╛
рдЙрдкрдХрд░рдг [Uber APK Signer](https://github.com/patrickfav/uber-apk-signer) рдПрдХ рд╣реА рдХреБрдВрдЬреА рдХреЗ рд╕рд╛рде рдХрдИ APKs рдХреЛ рд╕рд╛рдЗрди рдХрд░рдирд╛ рд╕рд░рд▓ рдмрдирд╛рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕реЗ рдРрдк рдореЗрдВ рдХрд┐рдП рдЧрдП рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рдмрд╛рдж рдлрд┐рд░ рд╕реЗ рд╕рд╛рдЗрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
## рдЖрдЧреЗ рдХреА рдЬрд╛рдирдХрд╛рд░реА
* [https://www.appknox.com/security/xamarin-reverse-engineering-a-guide-for-penetration-testers](https://www.appknox.com/security/xamarin-reverse-engineering-a-guide-for-penetration-testers)
* [https://thecobraden.com/posts/unpacking\_xamarin\_assembly\_stores/](https://thecobraden.com/posts/unpacking\_xamarin\_assembly\_stores/)
* [https://medium.com/@justmobilesec/introduction-to-the-exploitation-of-xamarin-apps-fde4619a51bf](https://medium.com/@justmobilesec/introduction-to-the-exploitation-of-xamarin-apps-fde4619a51bf)
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Support HackTricks</summary>
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** ЁЯТм [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** ЁЯРж [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}