macOS Electron Applications Injection
AWS Hacking'i öğrenin ve uygulayın: HackTricks Eğitimi AWS Kırmızı Takım Uzmanı (ARTE) GCP Hacking'i öğrenin ve uygulayın: HackTricks Eğitimi GCP Kırmızı Takım Uzmanı (GRTE)
Temel Bilgiler
Electron nedir bilmiyorsanız burada birçok bilgi bulabilirsiniz. Ancak şu anda sadece şunu bilin ki Electron node çalıştırır. Ve node'un başka kodları çalıştırmasına izin veren bazı parametreleri ve çevresel değişkenleri vardır.
Electron Sigortaları
Bu teknikler bir sonraki aşamada tartışılacak, ancak son zamanlarda Electron, bunları önlemek için çeşitli güvenlik bayrakları eklemiştir. Bunlar Electron Sigortaları ve bunlar macOS'taki Electron uygulamalarının keyfi kod yüklemesini önlemek için kullanılanlar şunlardır:
RunAsNode
: Devre dışı bırakıldığında, kod enjekte etmek için çevresel değişkenELECTRON_RUN_AS_NODE
kullanımını engeller.EnableNodeCliInspectArguments
: Devre dışı bırakıldığında,--inspect
,--inspect-brk
gibi parametreler dikkate alınmaz. Bu şekilde kod enjekte etme engellenir.EnableEmbeddedAsarIntegrityValidation
: Etkinleştirildiğinde, yüklenenasar
dosyası macOS tarafından doğrulanır. Bu şekilde bu dosyanın içeriğini değiştirerek kod enjeksiyonunu önler.OnlyLoadAppFromAsar
: Bu etkinleştirildiğinde, aşağıdaki sırayla yükleme aramak yerine:app.asar
,app
ve son olarakdefault_app.asar
. Sadece app.asar'ı kontrol edecek ve kullanacak, böyleceembeddedAsarIntegrityValidation
sigortası ile birleştirildiğinde doğrulanmamış kod yüklemenin imkansız olduğunu sağlar.LoadBrowserProcessSpecificV8Snapshot
: Etkinleştirildiğinde, tarayıcı işlemi V8 anlık görüntüsü içinbrowser_v8_context_snapshot.bin
adlı dosyayı kullanır.
Kod enjeksiyonunu önlemeyen başka ilginç bir sigorta ise:
EnableCookieEncryption: Etkinleştirildiğinde, diskteki çerez deposu işletim sistemi düzeyindeki şifreleme anahtarları kullanılarak şifrelenir.
Electron Sigortalarını Kontrol Etme
Bu bayrakları bir uygulamadan kontrol edebilirsiniz:
Electron Sigortalarını Değiştirme
Belgelerde belirtildiği gibi, Electron Sigortalarının yapılandırması genellikle Electron ikili dosyası içinde yapılandırılmıştır ve içinde dL7pKGdnNz796PbbjQWNKmHXBZaB9tsX
dizesini içerir.
MacOS uygulamalarında genellikle application.app/Contents/Frameworks/Electron Framework.framework/Electron Framework
içinde bulunur.
Ve değiştirdikten sonra tekrar paketleyin:
ELECTRON_RUN_AS_NODE
ile Uzaktan Kod Çalıştırma
ELECTRON_RUN_AS_NODE
ile Uzaktan Kod ÇalıştırmaBelgelere göre, bu çevre değişkeni ayarlandığında işlem normal bir Node.js işlemi olarak başlatılacaktır.
Eğer RunAsNode
füzyonu devre dışı bırakılmışsa, ELECTRON_RUN_AS_NODE
çevresel değişkeni yok sayılacak ve bu çalışmayacaktır.
Uygulama Plist'ten Enjeksiyon
Burada önerildiği gibi, kalıcılığı sürdürmek için bu çevresel değişkeni bir plist'te kötüye kullanabilirsiniz:
NODE_OPTIONS
ile Uzaktan Kod Çalıştırma (RCE)
NODE_OPTIONS
ile Uzaktan Kod Çalıştırma (RCE)Payload'ı farklı bir dosyada saklayıp çalıştırabilirsiniz:
Eğer EnableNodeOptionsEnvironmentVariable
füzyonu devre dışı bırakılmışsa, uygulama başlatıldığında NODE_OPTIONS çevresel değişkenini ihmal edecektir. Bu durum, ELECTRON_RUN_AS_NODE
çevresel değişkeni ayarlandığında da ihmal edilecektir, bu da RunAsNode
füzyonu devre dışı bırakılmışsa geçerlidir.
ELECTRON_RUN_AS_NODE
ayarlamazsanız, şu hata ile karşılaşacaksınız: Most NODE_OPTIONs are not supported in packaged apps. See documentation for more details.
Uygulama Plist'ten Enjeksiyon
Bu çevresel değişkeni bir plist'te kötüye kullanarak kalıcılığı sürdürebilirsiniz, aşağıdaki anahtarları ekleyerek:
Denetim yaparak Uzaktan Kod Yürütme (RCE)
Bu kaynağa göre, Electron uygulamasını --inspect
, --inspect-brk
ve --remote-debugging-port
gibi bayraklarla çalıştırırsanız, bir hata ayıklama bağlantı noktası açılacaktır böylece ona bağlanabilirsiniz (örneğin Chrome'dan chrome://inspect
üzerinden) ve üzerine kod enjekte edebilir veya yeni işlemler başlatabilirsiniz.
Örneğin:
Eğer EnableNodeCliInspectArguments
füzyonu devre dışı bırakılmışsa, uygulama başlatıldığında --inspect
gibi node parametrelerini ihmal edecektir ancak ELECTRON_RUN_AS_NODE
ortam değişkeni ayarlandığında bu yine de ihmal edilecektir eğer RunAsNode
füzyonu devre dışı bırakılmışsa.
Ancak, hala electron parametresi --remote-debugging-port=9229
kullanabilirsiniz ancak önceki yük işlemi diğer işlemleri yürütmek için çalışmayacaktır.
--remote-debugging-port=9222
parametresini kullanarak Electron Uygulamasından geçmiş (GET komutları ile) veya tarayıcının içinde şifrelenmiş olan çerezlerin (çünkü tarayıcı içinde şifrelenmiş ve onları verecek bir json uç noktası bulunmaktadır) bazı bilgileri çalmak mümkündür.
Bunu burada ve burada nasıl yapacağınızı öğrenebilir ve otomatik araç WhiteChocolateMacademiaNut veya basit bir betik kullanabilirsiniz:
Bu blog yazısında, bu hata ayıklama işlemi, başsız bir Chrome'un keyfi dosyaları keyfi konumlara indirmesini sağlamak için kötüye kullanılmıştır.
Uygulama Plist'ten Enjeksiyon
Bu çevresel değişkeni bir plist'te kötüye kullanabilir ve kalıcılığı sağlamak için şu anahtarları ekleyebilirsiniz:
Eski Sürümleri Kullanarak TCC Atlatma
macOS'taki TCC daemonı uygulamanın çalıştırılan sürümünü kontrol etmez. Dolayısıyla, önceki tekniklerden herhangi biriyle Electron uygulamasına kod enjekte edemiyorsanız, bir önceki sürümünü indirip kod enjekte edebilirsiniz çünkü hala TCC ayrıcalıklarını alacaktır (Güven Önbelleği engellemezse).
JS Olmayan Kodları Çalıştırma
Önceki teknikler size Electron uygulamasının işlemi içinde JS kodunu çalıştırmanıza izin verecektir. Ancak, çocuk işlemler aynı kum havuzu profili altında çalışır ve TCC izinlerini miras alırlar. Bu nedenle, örneğin kameraya veya mikrofona erişmek için ayrıcalıkları kötüye kullanmak istiyorsanız, sadece işlemden başka bir ikili dosyayı çalıştırabilirsiniz.
Otomatik Enjeksiyon
electroniz3r aracı, yüklü olan savunmasız elektron uygulamalarını bulmak ve bunlara kod enjekte etmek için kolayca kullanılabilir. Bu araç --inspect
tekniğini kullanmaya çalışacaktır:
Kendiniz derlemeniz ve şu şekilde kullanmanız gerekmektedir:
Referanslar
Öğren ve AWS Hacking pratiği yap:HackTricks Eğitimi AWS Kırmızı Takım Uzmanı (ARTE) Öğren ve GCP Hacking pratiği yap: HackTricks Eğitimi GCP Kırmızı Takım Uzmanı (GRTE)
Last updated