macOS Kernel Extensions & Debugging
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Kernel extensions (Kexts) ni pakiti zenye .kext
upanuzi ambazo zinapakiwa moja kwa moja kwenye nafasi ya kernel ya macOS, zikitoa kazi za ziada kwa mfumo mkuu wa uendeshaji.
Kwa wazi, hii ni nguvu sana kiasi kwamba ni ngumu kupakia upanuzi wa kernel. Hizi ndizo mahitaji ambayo upanuzi wa kernel lazima ukidhi ili upakie:
Wakati wa kuingia kwenye hali ya urejeleaji, upanuzi wa kernel lazima uruhusiwe kupakiwa:
Upanuzi wa kernel lazima uwe umetiwa saini na cheti cha saini ya msimbo wa kernel, ambacho kinaweza tu kupewa na Apple. Nani atakayeangalia kwa undani kampuni na sababu zinazohitajika.
Upanuzi wa kernel lazima pia uwe umethibitishwa, Apple itakuwa na uwezo wa kuangalia kwa malware.
Kisha, mtumiaji wa root ndiye anayeweza kupakia upanuzi wa kernel na faili ndani ya pakiti lazima zihusiane na root.
Wakati wa mchakato wa kupakia, pakiti lazima iwe tayari katika mahali salama yasiyo ya root: /Library/StagedExtensions
(inahitaji ruhusa ya com.apple.rootless.storage.KernelExtensionManagement
).
Hatimaye, wakati wa kujaribu kuipakia, mtumiaji atapokea ombile la uthibitisho na, ikiwa itakubaliwa, kompyuta lazima irejeshwe ili kuipakia.
Katika Catalina ilikuwa hivi: Ni muhimu kutambua kwamba mchakato wa uthibitishaji unafanyika katika userland. Hata hivyo, programu pekee zenye ruhusa ya com.apple.private.security.kext-management
zinaweza kuomba kernel kupakia upanuzi: kextcache
, kextload
, kextutil
, kextd
, syspolicyd
kextutil
cli inaanza mchakato wa uthibitishaji wa kupakia upanuzi
Itazungumza na kextd
kwa kutuma kwa kutumia Huduma ya Mach.
kextd
itakagua mambo kadhaa, kama vile saini
Itazungumza na syspolicyd
ili kuangalia ikiwa upanuzi unaweza kupakiwa.
syspolicyd
itamwomba mtumiaji ikiwa upanuzi haujapakiwa hapo awali.
syspolicyd
itaripoti matokeo kwa kextd
kextd
hatimaye itakuwa na uwezo wa kueleza kernel kupakia upanuzi
Ikiwa kextd
haipatikani, kextutil
inaweza kufanya ukaguzi sawa.
Ingawa nyongeza za kernel zinatarajiwa kuwa katika /System/Library/Extensions/
, ukitembea kwenye folda hii hutapata binary yoyote. Hii ni kwa sababu ya kernelcache na ili kubadilisha moja .kext
unahitaji kupata njia ya kuipata.
Kernelcache ni toleo lililotayarishwa na kuunganishwa la kernel ya XNU, pamoja na madereva muhimu na nyongeza za kernel. Inahifadhiwa katika muundo wa kimecompressed na inachukuliwa kwenye kumbukumbu wakati wa mchakato wa kuanzisha. Kernelcache inarahisisha wakati wa kuanzisha haraka kwa kuwa na toleo lililo tayari la kernel na madereva muhimu yanayopatikana, kupunguza muda na rasilimali ambazo zingetumika kwa kupakia na kuunganisha vipengele hivi kwa wakati wa kuanzisha.
Katika iOS inapatikana katika /System/Library/Caches/com.apple.kernelcaches/kernelcache
katika macOS unaweza kuipata kwa: find / -name "kernelcache" 2>/dev/null
Katika kesi yangu katika macOS niliipata katika:
/System/Volumes/Preboot/1BAEB4B5-180B-4C46-BD53-51152B7D92DA/boot/DAD35E7BC0CDA79634C20BD1BD80678DFB510B2AAD3D25C1228BB34BCD0A711529D3D571C93E29E1D0C1264750FA043F/System/Library/Caches/com.apple.kernelcaches/kernelcache
Muundo wa faili ya IMG4 ni muundo wa kontena unaotumiwa na Apple katika vifaa vyake vya iOS na macOS kwa ajili ya kuhifadhi na kuthibitisha kwa usalama vipengele vya firmware (kama kernelcache). Muundo wa IMG4 unajumuisha kichwa na lebo kadhaa ambazo zinafunga vipande tofauti vya data ikiwa ni pamoja na mzigo halisi (kama kernel au bootloader), saini, na seti ya mali za manifest. Muundo huu unasaidia uthibitisho wa kificho, ukiruhusu kifaa kuthibitisha ukweli na uadilifu wa kipengele cha firmware kabla ya kukitekeleza.
Kwa kawaida inajumuisha vipengele vifuatavyo:
Payload (IM4P):
Mara nyingi imekandamizwa (LZFSE4, LZSS, …)
Inaweza kuwa na usimbuaji
Manifest (IM4M):
Inajumuisha Saini
Kamusi ya Kifunguo/Thamani ya ziada
Restore Info (IM4R):
Pia inajulikana kama APNonce
Inazuia kurudiwa kwa baadhi ya masasisho
HIARI: Kwa kawaida hii haipatikani
Fungua Kernelcache:
Katika https://github.com/dortania/KdkSupportPkg/releases inawezekana kupata vifaa vyote vya ufuatiliaji wa kernel. Unaweza kuvipakua, kuviweka, kuviweka wazi kwa kutumia zana ya Suspicious Package, kufikia folda ya .kext
na kuvitoa.
Angalia kwa alama na:
Wakati mwingine Apple inatoa kernelcache yenye symbols. Unaweza kupakua firmware kadhaa zenye symbols kwa kufuata viungo kwenye kurasa hizo. Firmware zitakuwa na kernelcache pamoja na faili nyingine.
Ili extract faili, anza kwa kubadilisha kiendelezi kutoka .ipsw
hadi .zip
na unzip.
Baada ya kutoa firmware utapata faili kama: kernelcache.release.iphone14
. Iko katika muundo wa IMG4, unaweza kutoa taarifa muhimu kwa kutumia:
Angalia ikiwa kernelcache ina alama za
Na hii sasa tunaweza kuchota nyongeza zote au ile unayovutiwa nayo:
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)