PS4 NamedOb Çekirdek Exploit Stratejisine Genel Bakış
Dün bir 4.05 PS4 Kexec'in açıklandığını gördük ve JailbreakMe PS4 4.0x WebKit RCE gibi bir Userland Exploit ile birlikte PlayStation 4 sahnesi, Firmware 4.05 için halka açık bir PlayStation 4 Jailbreak'i canlandıracağını bekliyor.
Bu arada Porting JailBreakMe ve Breaking Down PS4 4.0x WebKit Exploit PlayStation 4 geliştirici @SpecterDev Twitter'da Fail0verflow'un yayınladığı 4.05 Kernel Exploit'inin PS4 NamedObj çekirdek exploit stratejisine genel bir bakışla paylaşıldı.
Giriş
Yani fail0verflow, namedobj istismarı üzerine bugün yazılmış bir bülten yayımladı. Ben ve birkaç başka kişi bu exploit'i bir süre kullandı ancak f0f'dan dolaylı olarak yardım aldığımız için serbest bırakmadık, bu yüzden tamamen serbest bırakılamadı. Bununla birlikte, şimdi bu konuda konuşmak istiyorum, gerçekten ilginç bir açıklama olduğu için.
Aşağıda tam bir yazı yok, fakat ilgilenenlerin bu çekirdek kullanımını denemek için kullanabilecekleri daha fazla çerçeve veya strateji. Yakılan bileşenleri açıklama dışında düzenledikten sonra uygulamanımı zamanında kuracağım.
Böcek
Böylece böcek esasen isimlendirilmiş nesnelerde kullanılan 'id_entry' nesnesinin 'tür' alanıyla tip karışıklığıdır. Adlandırılmış nesneler, yığındaki gerçek nesneyi işaret eden, kendileriyle ilişkili özelliklere sahip nesnelerdir (tahmin ettiğiniz gibi bir ad gibi). Nesniniz için 0x5000 tipi belirterek, tür karışıklığına neden olabilirsiniz.
Nesnenizi bozmak için kötüye kullanabilecek başka bir çekirdek alanı bulmanız gerekiyor. Şans eseri sys_mdbg_service () var. Bu, daha sonra sys_namedobj_delete () ile serbest bırakabileceğiniz () bir işaretçinin alttaki 32 bit'inin üzerine yazmanıza olanak tanır. Bu, sahte nesneleri öbek üzerine püskürterek ve bir işlev işaretçiyi bozarak kod yürütmeyi elde etmek için kullanabileceğiniz ücretsiz bir durum oluşturmanıza olanak tanır.
strateji
Bu hatadan istifade etmek için iyi bir strateji şöyledir:
Çekirdek yığınından hedef nesneyi sızdırın, yalnızca bozabileceğiniz işlev işaretçileri değil, aynı zamanda çekirdeğin çökmesini önlemek için ideal bir şekilde sahte olması kolaydır.
Sys_namedobj_create () ile 0x5000 (veya bitwise OR nedeniyle 0x4000) bayrağı ile tür karışıklığı yaratın.
Kullanıcı arazisinde bir çekirdek ROP zinciri kurun. İdeal olarak bu ROP zincirinde, çekirdek yazma korumasını devre dışı bırakmak, istediğiniz yamalar (RWX bellek eşlemesi gibi) yapmak ve kullanıcı alanına başarıyla geri dönmek için pivot yapmak istiyorsanız.
Nesnenizdeki alt 32-bit'leri sys_mdbg_service () ile hedef nesnenizin alt-32 bitlik adresiyle üzerine yazınız. Üst 32 biti üzerine yazamayız, ancak şans eseri burada saklanan işaretçi bir yığın işaretçisiydi, bu nedenle üst 32-bit FreeBSD yığın adresi önekine ayarlanacak (YYYY, ASLR tarafından önyükleme sırasında rasgele seçildiğinde) 0xFFFFYYYXxxxxxx.
Sys_namedobj_delete () aracılığıyla free () öğesini tetikle
Sahte nesnenizi öbek üzerine püskürtün, daha önce oluşturulan kROP zincirinizi işaret eden bir işlev işaretçisiyle
Bozuk nesneyi kullanan bir işlev bulun ve okunacak işlev göstericisini tetikleyin.
Artık kod yürütülüyor ve kROP zinciriniz ring0'da çalışıyor! Yuppi!
Bedava () nesnenizi düzeltin, çünkü yapmazsanız, webkit çıktığı anda çekirdeği çöker, çünkü nesnenizi tekrar serbest bırakıp () bir çift boş () işlemeye çalışacaktır.
Kullanıcı ülkelerine başarıyla geri dönün.
notlar
Exploit'inizin çekirdek ROP zincirinizde ne yaptığını düzeltmeniz gerekir veya bir çekirdek paniğine neden olarak WebKit'den çıktığınızda bir double free () oluşur.
Çekirdek ROP zincirinizi kullanıcı alanına başarıyla geri getirmelisiniz, aksi takdirde kROP zinciriniz bittiğinde çekirdek çökecektir.
Kaçak ve körü köreltmek için bir cisim bulmak çok zor. Bu benim için en başında gelen parçaydı.
Yakında bir uygulama açılacak ama o zamana kadar kendiniz uygulamaya çalışın ve ne kadar ilerlediğinizi görün, harika bir öğrenme deneyimi! İyi eğlenceler!
Etiketler: PS4 NamedOb Çekirdek Exploit Stratejisine Genel Bakış
0 Yorum:
Yorum Gönder
Kaydol: Kayıt Yorumları [Atom]
<< Ana Sayfa