Telefonunuzu kapattığınızı düşünürken, onun kapanmadığını ve görüntünüzü ya da konuştuklarınızı aktardığını düşünün. Araştırmacılar tam da böyle bir saldırı tekniğini ortaya çıkardılar. ZecOps tarafından “NoReboot” olarak adlandırılan saldırı, bellekten kötü amaçlı etkinliği temizlemek için bir cihazı yeniden başlatmanın normal uygulamasını atlatabilen bir kalıcı yöntem olarak tanımlanıyor[1].
iPhone’lar kapatılırken, kapanmanın tamamlandığını gösteren zil sesi veya ses, titreşim ve ekranda görünen Apple logosu gibi fiziksel göstergeler bulunur. Ama teknik bunları da devre dışı bırakıyor ve sanki kapatılmış gibi gösteriyor ama aslında o anda canlı bir bağlantı sürdürülüyor.
ZecOps açıklamasında, NoReboot Truva Atının telefonu sanki kapatılıyor gibi gösterirken, kötü amaçlı yazılımın çalışması ve mikrofon ile kamerayı ele geçirmesi için bir koruma sağladığını söyledi. Teknik, sanki kapatma oluyor gibi gösterirken, üç arka plan programına kod enjekte ediyor ; InCallService, SpringBoard ve backboardd.
“Kullanıcı, gerçek bir kapatma ile “sahte kapatma” arasında bir fark hissedemez. Kullanıcı telefonu tekrar “açana” kadar, telefonun aslında açık olduğunu gösterebilecek bir şey yok.
Kapatma düğmesini kaydırdığınızda, aslında /Applications/InCallService.app, Springboard’a kapatma sinyali veriyor. Bu program kullanıcı arayüzü (UI) etkileşiminin çoğundan sorumlu bir arka plan programıdır.
Biz Objective-C yöntemini -[FBSSystemService shutdownWithOptions:] bağlayarak sinyali ele geçirmeyi başardık. Şimdi SpringBoard’a bir kapatma sinyali göndermek yerine, hem SpringBoard’a hem de arka panoya, onlara enjekte ettiğimiz kodu tetiklemelerini bildirecek. “
Saldırı tekniği, iOS platformundaki güvenlik açıkları veya hatalardan ziyade kullanıcıları kandırmaya odaklandığından, bu bir yama ile düzeltilebilecek bir şey değil. ZecOps, NoReboot yönteminin iOS’un tüm sürümlerini etkilediğini ve yalnızca donanım göstergelerinin bu tür saldırı tekniğini tespit etmede yardımcı olabileceğini söylüyor.
[1] Persistence without “Persistence”: Meet The Ultimate Persistence Bug – “NoReboot”