iOS Basic Testing Operations
Reading time: 9 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.
Muhtasari wa Utambuzi wa Kifaa cha iOS na Ufikiaji
Kutambua UDID ya Kifaa cha iOS
Ili kutambua kifaa cha iOS kwa kipekee, mfuatano wa tarakimu 40 unaojulikana kama UDID unatumika. Kwenye macOS Catalina au mpya, hii inaweza kupatikana katika Finder app, kwani iTunes haitumiki tena. Kifaa, kinapounganishwa kupitia USB na kuchaguliwa katika Finder, kinaonyesha UDID yake pamoja na taarifa nyingine wakati maelezo chini ya jina lake yanapobofya.
Kwa matoleo ya macOS kabla ya Catalina, iTunes inarahisisha kugundua UDID. Maelekezo ya kina yanaweza kupatikana hapa.
Zana za mstari wa amri zinatoa njia mbadala za kupata UDID:
- Kutumia zana ya I/O Registry Explorer
ioreg
:
$ ioreg -p IOUSB -l | grep "USB Serial"
- Kutumia
ideviceinstaller
kwa macOS (na Linux):
$ brew install ideviceinstaller
$ idevice_id -l
- Kutumia
system_profiler
:
$ system_profiler SPUSBDataType | sed -n -e '/iPad/,/Serial/p;/iPhone/,/Serial/p;/iPod/,/Serial/p' | grep "Serial Number:"
- Kutumia
instruments
kuorodhesha vifaa:
$ instruments -s devices
Kufikia Shell ya Kifaa
SSH access inaruhusiwa kwa kufunga OpenSSH package baada ya jailbreak, ikiruhusu muunganisho kupitia ssh root@<device_ip_address>
. Ni muhimu kubadilisha nywila za msingi (alpine
) kwa watumiaji root
na mobile
ili kulinda kifaa.
SSH kupitia USB inakuwa muhimu pindi hakuna Wi-Fi, kwa kutumia iproxy
kuunganisha bandari za kifaa kwa muunganisho wa SSH. Mpangilio huu unaruhusu ufikiaji wa SSH kupitia USB kwa kukimbia:
$ iproxy 2222 22
$ ssh -p 2222 root@localhost
On-device shell applications, kama NewTerm 2, huruhusu mwingiliano wa moja kwa moja na kifaa, hasa ni muhimu kwa ajili ya kutatua matatizo. Reverse SSH shells pia zinaweza kuanzishwa kwa ajili ya ufikiaji wa mbali kutoka kwa kompyuta mwenyeji.
Kurekebisha Nywila Iliyosahaulika
Ili kurekebisha nywila iliyosahaulika kurudi kwenye chaguo-msingi (alpine
), kuhariri faili ya /private/etc/master.passwd
ni muhimu. Hii inahusisha kubadilisha hash iliyopo na hash ya alpine
karibu na entries za mtumiaji root
na mobile
.
Mbinu za Uhamasishaji wa Data
Kuhamisha Faili za Data za Programu
Archiving and Retrieval via SSH and SCP: Ni rahisi kuhifadhi saraka ya Data ya programu kwa kutumia tar
na kisha kuhamisha kwa kutumia scp
. Amri iliyo hapa chini inahifadhi saraka ya Data katika faili .tgz, ambayo kisha inavutwa kutoka kwa kifaa:
tar czvf /tmp/data.tgz /private/var/mobile/Containers/Data/Application/8C8E7EB0-BC9B-435B-8EF8-8F5560EB0693
exit
scp -P 2222 root@localhost:/tmp/data.tgz .
Zana za Kiolesura cha Mtumiaji
Kutumia iFunbox na iExplorer: Zana hizi za GUI ni muhimu kwa usimamizi wa faili kwenye vifaa vya iOS. Hata hivyo, kuanzia iOS 8.4, Apple ilipunguza ufikiaji wa zana hizi kwenye sandbox ya programu isipokuwa kifaa kimefungwa.
Kutumia Objection kwa Usimamizi wa Faili
Shell ya Kihusiano na Objection: Kuanzisha objection kunatoa ufikiaji wa saraka ya Bundle ya programu. Kutoka hapa, unaweza kuhamasisha kwenye saraka ya Hati za programu na kusimamia faili, ikiwa ni pamoja na kupakua na kupakia faili kutoka na kwenda kwenye kifaa cha iOS.
objection --gadget com.apple.mobilesafari explorer
cd /var/mobile/Containers/Data/Application/72C7AAFB-1D75-4FBA-9D83-D8B4A2D44133/Documents
file download <filename>
Kupata na Kutolewa kwa Mifumo ya Programu
Kupata Faili la IPA
Kiungo cha Usambazaji wa Over-The-Air (OTA): Mifumo ya programu inayosambazwa kwa ajili ya majaribio kupitia OTA inaweza kupakuliwa kwa kutumia chombo cha kupakua mali za huduma za ITMS, ambacho kimewekwa kupitia npm na kinatumika kuhifadhi faili la IPA kwenye kifaa.
npm install -g itms-services
itms-services -u "itms-services://?action=download-manifest&url=https://s3-ap-southeast-1.amazonaws.com/test-uat/manifest.plist" -o - > out.ipa
Kutoa Binary ya App
- Kutoka kwa IPA: Fungua IPA ili kufikia binary ya app iliyosimbwa.
- Kutoka kwa Kifaa kilichovunjwa: Sakinisha app na toa binary iliyosimbwa kutoka kwenye kumbukumbu.
Mchakato wa Kufungua
Muhtasari wa Kufungua kwa Mikono: Binary za app za iOS zimefungwa na Apple kwa kutumia FairPlay. Ili kufanya uhandisi wa nyuma, lazima mtu atoe binary iliyosimbwa kutoka kwenye kumbukumbu. Mchakato wa kufungua unajumuisha kuangalia bendera ya PIE, kurekebisha bendera za kumbukumbu, kubaini sehemu iliyosimbwa, na kisha kutoa na kubadilisha sehemu hii na fomu yake iliyosimbwa.
Kuangalia na Kubadilisha Bendera ya PIE:
otool -Vh Original_App
python change_macho_flags.py --no-pie Original_App
otool -Vh Hello_World
Kutambua Sehemu Iliyosimbwa na Kutoa Kumbukumbu:
Tathmini anwani za mwanzo na mwisho za sehemu iliyosimbwa kwa kutumia otool
na kutoa kumbukumbu kutoka kwa kifaa kilichovunjwa kwa kutumia gdb.
otool -l Original_App | grep -A 4 LC_ENCRYPTION_INFO
dump memory dump.bin 0x8000 0x10a4000
Kuweka Upya Sehemu ya Kificho:
Badilisha sehemu ya kificho katika binary ya programu asilia na dump iliyotolewa.
dd bs=1 seek=<starting_address> conv=notrunc if=dump.bin of=Original_App
Kumaliza Ufunguo: Badilisha metadata ya binary kuonyesha kutokuwepo kwa usimbuaji kwa kutumia zana kama MachOView, ukipanga cryptid
kuwa 0.
Ufunguo (Kiotomatiki)
frida-ios-dump
Zana ya frida-ios-dump inatumika kwa kufungua na kutoa programu kiotomatiki kutoka kwa vifaa vya iOS. Kwanza, mtu anapaswa kuunda dump.py
ili kuungana na kifaa cha iOS, ambayo inaweza kufanywa kupitia localhost kwenye bandari 2222 kupitia iproxy au moja kwa moja kupitia anwani ya IP ya kifaa na bandari.
Programu zilizowekwa kwenye kifaa zinaweza kuorodheshwa kwa amri:
$ python dump.py -l
Ili kudondosha programu maalum, kama Telegram, amri ifuatayo inatumika:
$ python3 dump.py -u "root" -p "<PASSWORD>" ph.telegra.Telegraph
Hii amri inaanzisha upakuaji wa programu, ikisababisha kuundwa kwa faili ya Telegram.ipa
katika saraka ya sasa. Mchakato huu unafaa kwa vifaa vilivyovunjwa, kwani programu zisizosainiwa au zisizo sahihi zinaweza kufungwa upya kwa kutumia zana kama ios-deploy.
flexdecrypt
Zana ya flexdecrypt, pamoja na kifurushi chake flexdump, inaruhusu kutoa faili za IPA kutoka kwa programu zilizowekwa. Amri za usakinishaji kwa flexdecrypt kwenye kifaa zinajumuisha kupakua na kusakinisha kifurushi cha .deb
. flexdump inaweza kutumika kuorodhesha na kupakua programu, kama inavyoonyeshwa katika amri zilizo hapa chini:
apt install zip unzip
wget https://gist.githubusercontent.com/defparam/71d67ee738341559c35c684d659d40ac/raw/30c7612262f1faf7871ba8e32fbe29c0f3ef9e27/flexdump -P /usr/local/bin; chmod +x /usr/local/bin/flexdump
flexdump list
flexdump dump Twitter.app
bagbak
bagbak, chombo kingine kinachotumia Frida, kinahitaji kifaa kilichovunjwa ili kufungua programu:
bagbak --raw Chrome
r2flutch
r2flutch, ikitumia radare na frida, inatumika kwa ajili ya ufichuzi wa programu na dumping. Taarifa zaidi zinaweza kupatikana kwenye GitHub page.
Kuweka Programu
Sideloading inahusisha kufunga programu nje ya Duka rasmi la Programu. Mchakato huu unashughulikiwa na installd daemon na unahitaji programu zisainiwe kwa cheti kilichotolewa na Apple. Vifaa vilivyofunguliwa (jailbroken) vinaweza kupita hili kupitia AppSync, kuruhusu ufungaji wa pakiti za IPA zenye sahihi bandia.
Zana za Sideloading
-
Cydia Impactor: Zana ya kusaini na kufunga faili za IPA kwenye iOS na faili za APK kwenye Android. Miongozo na ufumbuzi wa matatizo yanaweza kupatikana kwenye yalujailbreak.net.
-
libimobiledevice: Maktaba kwa ajili ya Linux na macOS kuwasiliana na vifaa vya iOS. Amri za ufungaji na mifano ya matumizi ya ideviceinstaller zinatolewa kwa ajili ya kufunga programu kupitia USB.
-
ipainstaller: Zana hii ya mstari wa amri inaruhusu ufungaji wa moja kwa moja wa programu kwenye vifaa vya iOS.
-
ios-deploy: Kwa watumiaji wa macOS, ios-deploy inafunga programu za iOS kutoka kwenye mstari wa amri. Kufungua IPA na kutumia lipo
-m
kwa ajili ya uzinduzi wa moja kwa moja wa programu ni sehemu ya mchakato. -
Xcode: Tumia Xcode kufunga programu kwa kuingia kwenye Window/Devices and Simulators na kuongeza programu kwenye Installed Apps.
Ruhusu Ufunguzi wa Programu kwenye Vifaa Visivyo na iPad
Ili kufunga programu maalum za iPad kwenye vifaa vya iPhone au iPod touch, thamani ya UIDeviceFamily katika faili ya Info.plist inahitaji kubadilishwa kuwa 1. Marekebisho haya, hata hivyo, yanahitaji kusaini tena faili ya IPA kutokana na ukaguzi wa uthibitisho wa sahihi.
Kumbuka: Njia hii inaweza kushindwa ikiwa programu inahitaji uwezo ambao ni wa kipekee kwa mifano mipya ya iPad wakati ikitumia iPhone au iPod touch ya zamani.
References
- https://mas.owasp.org/MASTG/iOS/0x06b-iOS-Security-Testing/
- https://mas.owasp.org/MASTG/techniques/ios/MASTG-TECH-0052/
- https://mas.owasp.org/MASTG/techniques/ios/MASTG-TECH-0053/
- https://mas.owasp.org/MASTG/techniques/ios/MASTG-TECH-0054/
- https://mas.owasp.org/MASTG/techniques/ios/MASTG-TECH-0056/
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.