Neden su ikili dosyası basitçe kopyalanamıyor (teknik yanıt lütfen)


18

Birkaç Samsung cihazını köklendirdim ve altta yatan "hedef", suikili almak /system/xbinve Superuser.apk yüklemek gibi görünüyor .

Benim sorum neden telefonu köklendirmek için tüm bu çemberler üzerinden atlamak zorunda (özel kurtarma ve flash önceden köklü ROM yükleyin veya mevcut kurulum istismar)? Önceden derlenmiş bir su indirilemez, SD karta taşınamaz ve adb üzerinden çalıştırılamaz mı? Bir ROM'u "önceden köklü" yapan şey, Superuser ve ilgili ikili sistem dosyalarında yer alan ikili dosyaya sahip olmasıdır. Neden bu kadar önemli olduğunu anlamıyorum /system/xbin.

Yanıtlar:


24

Su ikili dosyasının hem yürütme hem de setuid izin biti ayarlanmış olması gerekir. Birincisi, dosyanın yürütülebilmesi ve ikincisinin otomatik olarak dosya sahibinin haklarıyla çalışmasıdır (set user id veya setuid. Bu durumda sahip root'tur. Daha fazla bilgi için ).

Harici depolama birimindeki dosyalar yürütülebilir ve setuid izin bitlerine sahip değildir ve kök hakları olmadan verilemez. Ayrıca, genel olarak önyükleme yapılmasını önlemek için SD kartın 'noexec' bayrağıyla monte edildiğine dikkat edin:

shell@android:/sdcard $ ./su
/system/bin/sh: ./su: can't execute: Permission denied
126|shell@android:/sdcard $ chmod 4755 su
Unable to chmod su: Operation not permitted
10|shell@android:/sdcard $ mount | grep /mnt/sdcard
/dev/block/mmcblk0p1 /mnt/sdcard vfat [...],noexec,[...]

Temelde bu yüzden suSD karta kopyalayıp kendinize root vermek için çalıştıramazsınız.


Köklenmeyi önleyen tek şey budur, / sdcard'ın yürütülebilir olmadığı ve chmod yapamayacağınız gerçeği? Bir kez su chmodded olabilir uygun yerde olduğunu altın yürütülebilir. Birinin sadece su çalıştırmasını önlemek için bir güvenlik katmanı olacağını düşünürdüm. Sunucumda ve debian kutusunda su'yu normal bir kullanıcı olarak çalıştıramıyorum, bir şifre girmem isteniyor. Sanırım biri su yükleyebilirsiniz eğer onlar parola değiştirmek için gölge dosyasının üzerine yazabilirsiniz?
user974896

3
@ user974896: Sistem dışı bir kullanıcının yürütülebileceğini söyleyecek başka bir yer yok ve Android'in zaten passwdya da shadowdosyaları yok . Kelimenin tam anlamıyla suçalıştırılabilir bir yere koymak için root'a ihtiyacınız var , bu yüzden köklendirme yöntemleri ya bir ayrıcalık yükselmesi istismarını içeriyor ya da özel bir kurtarmaya giriyor (tüm bahislerin temelde kapalı olduğu).
eldarerathis

Evet. İşte cevap.
Android Quesito

3
@ user974896: / sdcard'ın noexec olarak takılmasına ek olarak, setuid sistem çağrısı yalnızca yürütülebilir dosyada suid izin biti ayarlandığında çağrılabilir ve chown ve chmod sistem çağrısı yalnızca root'un bir dosyanın setuid bitini ayarlamasına izin verir (etkin olarak, yalnızca root root ayrıcalıklarıyla çalışabilen bir yürütülebilir dosya oluşturabilir). Herkes su arayabilir, ancak arayanın Superuser'in veritabanında (veya geleneksel Linux'ta, passwd / shadow veritabanında) buna izin verilmedikçe, çağrı başarılı olmaz. Superuser'ın veritabanını yalnızca Superuser uygulaması (ve ayrıcalıklı işlemler) değiştirebilir.
Yalan Ryan

3
@ user974896: Bu, her dalvik uygulamasının kendi kullanıcısı olarak çalıştığı Android'deki normal güvenlik sistemine ek olarak, yalnızca Superuser'in beyaz listesindeki uygulamanın komut istemi olmadan kendini köküne yükseltebileceği anlamına gelir, diğer herkes reddedilecektir (eğer ) veya Superuser'dan kullanıcıdan izin istemesine neden olur.
Yalan Ryan

5

Köklenme, android sürümüne bağlı olarak zayıflığın istismar edilmesini içerir, bu nedenle " telefonu köklendirmek için tüm çemberlerden atlayın "

Onun bir tavuk ve yumurta!

Kökten yararlanmak /systemiçin, ahizede güvenli olmayan bir adb arka plan programına (yani yeniden kurma yeteneği ) ihtiyacınız var ve güvenli olmayan bir adb'ye sahip olmak için root'a ihtiyacınız var! VE ayrıca, kilidi açılmış bir bootloader'a ihtiyacınız var.

Bir göz at istismar denilen zergRush github üzerinde bulunan; ilgilenilen fonksiyon, ait olduğu boruya bağlanarak 'daemon' un do_fault()yığın çerçevesini "kırmaya" voldçalışıldığında ve yığın işaretçisinin kopyalanan bir noktayı işaret etmesi için üzerine yazarak çökmesine neden olduğunda denir. kabuğun versiyonu boomshdaha sonra çalışır /data/local/tmp.

Kaynağı okuduktan sonra şimdi, suikili kopyalamanın neden telefonun "köklü" olması için yeterli olmadığını ve neden çemberlerin atlanması gerektiğini anlayacaksınız . Ve ayrıca, SDcard için dosya sistemi düzeyindeki yürütülebilir bit engellendiğinden, oraya gitmeyin - bu bariz nedenlerden dolayı var! :)


Linkler için teşekkürler onları daha sonra okuyacağım. Sdcard fabrikadan 777 chmodded olsa bile, ben sadece indirip çalıştırarak hala kök haline gelemedim?
user974896

1
doğru! Gitme! Bir farkın iota yapmaz ve fabrikada yüklü ROM bir lá korumak zorunda olacak çünkü bunu elde etmek için root gerekir chmod-SDcard'ın bunu yapmak için izinleri! :)
t0mm13b

1
Peki / system / xbin içinde ise suyu bu kadar özel yapan nedir? Adb shell girerseniz (veya bir uygulamayı normal kullanıcı olarak çalıştırırsanız), yayınlanmamış bir kullanıcı olursunuz. Neden / system / xbin içindeyken su yürütmek sizi teorik olarak chmod 777 / sdcard'ımızda çalıştırmak yerine kök salıyor?
user974896

/system/xbinBu çıkaran, bir köklü yakışıklı ... busybox programları gitmek dizindir ve echo $PATHverecektir / satıcı / bin: / sbin / sistem / sbin: / system / bin: / system / XBIN <- haber o! Onun yolunda! Oraya sahip olmak için köke ihtiyacınız var, bu yüzden birçok tavuk ve yumurta durumuna ihtiyacınız var ...: D
t0mm13b

Evet, varsayılan olarak nereye gittiğini biliyorum. Demek istediğim, orada çalıştırmakla ilgili bu kadar özel olan şey. Neden / sdcard /, / data /, veya root olmayan herhangi bir dizinin çalıştırılması, fabrikanın ROM'u 777'de chmodded diziniyle ROM'u gönderdiğini varsayarsak işe yaramaz. ve ./su komutunun çalıştırılması, kök olmayan bir kullanıcının bunu yapabileceği dizinlerin yürütülebilir olmadığı veya daha büyük bir resim olduğu gerçeğidir.
user974896
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.