Starlink kullanıcı terminalinin sökümü
(darknavy.org)- DARKNAVY, Singapur’da satın aldığı Starlink Standard Actuated antenini sökerek donanım, firmware, güvenlik çipi ve emülasyon olasılıkları üzerine ön analiz yaptı
- Anten PCB’sinin büyük kısmını STMicroelectronics RF front-end kaplıyor; temel kontrol bölümü ise kartın bir tarafında yoğunlaşmış durumda ve genel IoT cihazlarına benzer bir yapı gösteriyor
- Rev3 firmware’i, eMMC sökülerek dump edildi; büyük kısmı şifrelenmemiş olduğundan boot chain’in bir bölümü, kernel, dosya sisteminin bazı kısımları ve runtime yapılandırması incelenebildi
- Çıkarılan yazılımda kullanıcı terminalinin yanı sıra uydu ve yer gateway’lerine ait gibi görünen işlevler de yer alıyor; başlangıçta cihaz türünü donanım çevre birimleri üzerinden belirleyen bir yapıya sahip olduğu görülüyor
- Ethernet Data Recorder, uydu telemetrisiyle ilişkili paketleri kaydedip donanım anahtarıyla şifreliyor; ancak UTA’da 41 SSH açık anahtarı otomatik kaydediliyor ve yerel ağda 22 numaralı port her zaman açık
Starlink kullanıcı terminali ve analiz kapsamı
- Starlink, SpaceX’in alçak Dünya yörüngesi uydu interneti hizmetidir; kullanıcılar kullanıcı terminali üzerinden Dünya’ya yakın yörüngedeki uydulara bağlanır ve yer gateway’leri üzerinden internete erişir
- Yeni nesil uydulara kademeli olarak lazer linkleri ekleniyor; böylece bazı uydular birbirleriyle doğrudan iletişim kurabiliyor
- Yer istasyonlarına bağımlılığı azaltır, iletim verimliliğini artırır ve küresel kapsama alanını iyileştirir
- Yerel yer istasyonu bulunmayan Ukrayna savaş sahasında da Starlink kullanıcı terminalleri, uydular arası linkler üzerinden komşu ülkelerdeki gateway’lere dolaylı olarak bağlanabilir
- DARKNAVY’nin incelemesi, Starlink kullanıcı terminalinin tamamına değil, anten bileşeni olan User Terminal Antenna, UTA üzerine odaklanıyor
- Hedef cihaz, Singapur’da satın alınan Starlink Standard Actuated
- Rev3 veya GenV2 olarak da adlandırılıyor
Donanım söküm sonuçları
- Tam bir Starlink kullanıcı terminali iki parçadan oluşur: router ve anten
- Sökülen UTA’nın PCB’si dış kasayla neredeyse aynı boyuttaydı
- Kartın büyük kısmını STMicroelectronics tarafından üretilen RF front-end çipleri kaplıyor
- Temel kontrol bileşenleri ağırlıklı olarak PCB’nin bir tarafında toplanmış
- RF anteni dışında UTA’nın temel bölgesinin genel tasarımı, tipik bir IoT cihazına oldukça benziyor
- Ana SoC, ST’nin SpaceX için özel ürettiği quad-core Cortex-A53
- Bu çipin donanımı ve datasheet’i şu anda gizli ve kamuya açık değil
- Black Hat USA 2022’de KU Leuven’den Dr. Lennert Wouters, 1. nesil Starlink anteni GenV1’e fault injection saldırısı uygulayarak cihazın root shell’ini elde ettiğini gösterdi
- SpaceX daha sonra firmware güncellemesiyle PCB’nin UART debug arayüzünü devre dışı bırakarak fault attack direncini artırdı
- Wouters yaklaşımını geliştirerek tekrar sisteme girmeyi başardı
Firmware çıkarma ve yazılım yapısı
- DARKNAVY, UTA’yı daha derinlemesine analiz etmek için eMMC çipinden firmware’i doğrudan dump etti
- Rev3 kartta belirgin eMMC debug pinleri yoktu
- eMMC çipinin PCB’den sökülüp bir programlayıcıyla okunması gerekti
- Çıkarılan firmware’in büyük kısmı şifrelenmemiş durumdaydı
- BootROM hariç boot chain
- Kernel
- Dosya sisteminin şifrelenmemiş alanları
- Kernel başladıktan sonra runtime ortamının büyük kısmı eMMC’den okunup
/sx/local/runtimedizinine açılıyor - Runtime yapısında
bin, Starlink yazılım stack’i için gerekli çalıştırılabilir dosyaları içeriyor;datyapılandırma dosyalarını saklıyor;revision_infoise mevcut yazılım ve donanım sürümlerini kaydediyor - Harici kullanıcı iletişimini işleyen
user_terminal_frontendGo ile yazılmış; diğer programların çoğu sembolsüz, statik derlenmiş C++ yürütülebilir dosyaları - Önceki araştırmalara dayanan ilk analizde ağ stack mimarisi bir ölçüde DPDK’ye benziyor
- Ağırlıklı olarak kullanıcı alanındaki C++ programları, kernel’i baypas ederek ağ paketlerini işliyor
- Linux kernel’in temel donanım sürücüleri ve süreç yönetimi sağlama rolü daha büyük
- UTA’dan çıkarılan temel yazılımda, uyduya veya yer gateway’lerine ait gibi görünen işlevler de bulunuyor
- İlk reverse engineering’e göre sistem, başlangıç sırasında cihaz türünü donanım çevre birimlerine göre belirliyor
- Ardından bu cihaz türüne uygun mantığı yüklüyor ve çalıştırıyor
QEMU tabanlı emülasyon
- DARKNAVY, UTA’yı sürekli analiz etmeyi kolaylaştırmak için Rev3 firmware’i için QEMU tabanlı bir emülasyon ortamı kurdu
- Bu ortamda harici entity’lerle etkileşime giren bazı yazılımları çalıştırıp debug etmeyi başardı
httpdWebSocketgRPChizmeti
STSAFE-A110 güvenlik çipi
- UTA’da ana SoC’ye ek olarak özel bir güvenlik çipi olan STSAFE-A110 bulunuyor
- Bu çip CC EAL5+ güvenlik derecesi iddia ediyor
- Özel SoC’nin aksine, NDA kapsamında yasal olarak satın alınabiliyor
- UTA firmware’inde
stsafe_cliadlı kullanıcı alanı programı, bu çiple etkileşimi yönetiyor - Reverse engineering sonucunda STSAFE’in başlıca şu işlevleri sağladığı görülüyor
- Her cihazın benzersiz tanımlayıcısı, UUID
- Uydu iletişimi kimlik doğrulamasında kullanıldığı tahmin edilen açık anahtar sertifikası
stsafe_leaf.pemyönetimi - Kullanıcı veri aktarımı için simetrik şifreleme anahtarlarının türetilmesi
- Bu çip, SoC’nin secure boot mekanizmasından bağımsız ek bir root of trust görevi görüyor ve modern gömülü güvenlik tasarımı yaklaşımıyla örtüşüyor
Ethernet Data Recorder ve SSH anahtarları
- Analiz sırasında Ethernet Data Recorder adlı bir program bulundu; yalnızca adı ve işleviyle bakıldığında kullanıcı verisi yakalayan bir backdoor’dan şüphelenilebilir
- Ayrıntılı inceleme sonucunda bu programın
pcap_filterbenzeri bir mekanizmayla belirli ağ paketlerini kaydettiği görüldü- Yakalama kuralı örnekleri
udp and dst port 10017koşulunu ve belirli multicast hedef host’larını içeriyor - Firmware içindeki diğer ipuçlarına göre bu paketler uydu telemetrisi ile ilişkili
- Yakalama kuralı örnekleri
- Yakalanan tüm trafik, SoC’ye fuse edilmiş donanım anahtarı kullanılarak şifreleniyor
- Şu anda eldeki bilgilerle bu işlevin kullanıcı gizliliği verileri topladığını söylemek zor
- Cihaz başlatılırken sistem kendisini kullanıcı terminali olarak tanımlarsa, init script’i 41 SSH açık anahtarını otomatik olarak
/root/.ssh/authorized_keysiçine yazıyor- UTA’nın 22 numaralı portu yerel ağa her zaman açık
- Tüketici ürününde bu kadar çok bilinmeyen login anahtarının bulunması dikkat çekici
Uydu internet sistemlerinin güvenlik bağlamı
- Uydu teknolojisi gelişmeye ve çeşitli endüstrilerde uygulanmaya devam ettikçe, Starlink ve diğer uydu internet sistemlerinin her bir bileşeni gelecekte saldırı ve savunma operasyonlarının önemli bir alanı haline gelebilir
- Uzay güvenliğinde geliştiriciler ve hacker’lar yalnızca dijital alanla değil, uzay fiziğinin kısıtlarıyla da mücadele etmek zorundadır
- Tek bir hatalı işlem, hedefle bağlantının kalıcı olarak kaybedilmesine yol açabilir
1 yorum
Hacker News yorumları
Başlatma sırasında kullanıcı terminali olarak tanımlanırsa
/root/.ssh/authorized_keysiçine otomatik olarak 41 SSH açık anahtarı ekliyormuş; “benim” kullanıcı terminalime root erişimi olmayan kişinin kim olduğunu daha çok merak ettimBiraz daha ciddi bakarsak, ISS'nin verdiği yönlendiricide uzaktan yönetim sistemi bulunmasından çok da farklı mı, emin değilim. SpaceX kullanıcı terminaline doğrudan erişemese bile, trafiği uydudan ya da yer istasyonundan yakalayabilir
Asıl 41 örnek tek bir anahtarı paylaşıyor olsaydı, bu daha kaygı verici olurdu
authorized_keysdosyamda bile 25 satır var. Her dizüstü için farklı YubiKey, iPad ve iPhone anahtarları, Mac'in Secure Enclave anahtarı varStarlink'te de sistem yöneticileri muhtemelen 1-2 kişiden fazladır; bu yüzden 100 civarı açık anahtar bile makul görünür
Üretim cihazlarındaki mühendislik sorunlarını teşhis etmek için ayrı bir uzaktan erişim yazılımı var ve REPL açılabiliyor, ama erişim denetimi ve DevOps onayıyla sınırlandırılmış durumda
Benzer bir gönderinin önceki tartışması: SpaceX Starlink Kullanıcı Terminalinin Parçalarına Ayrılması https://news.ycombinator.com/item?id=25277171 (2 Aralık 2020 — 158 puan, 138 yorum)
41 açık anahtarı koyarsanız, muhtemelen hangi geliştiricilerin kullandığını tespit edebilirsiniz
https://web.archive.org/www.darknavy.org/blog/a_first_glimps...
Tüm paketlerin kullanıcı alanında işlenmesi şaşırtıcı
100 baytlık UDP paketleriyle 1Gbps trafik işliyorsanız saniyede 1 milyon paket işlemeniz gerekir. 1GHz CPU'da paket başına yalnızca 1000 çevrim kalır
Mümkün ama mühendisler assembly'yi elle yazmayı ve her tür arama tablosu tekniğini düşünmeyi sevmiyorsa kolay değil
Yazılım yamalanmış bir kernel de olabilir, XDP tarzı kernel bypass da olabilir. Intel Puma kablo modem yönlendirici/ağ geçitlerinde DPDK ya da benzer şeylerle sınırlı ölçüde uğraşmış olmama dayalı bir tahmin
Starlink yaklaşık 25-200Mbps ve ortalama paketler de 7-8 kat daha büyük; yani en fazla saniyede yaklaşık 36.000 paket eder, 1GHz'de bile oldukça başa çıkılabilir bir seviye
O noktada polling kodunun kernel içinde olup olmamasının neden önemli olduğunu anlamıyorum
memcpy'den kaçınmayı sağladığı için çok daha hızlıdırBaşlıktaki yazım hatasını düzeltseler iyi olur. Şu anda “Ternimal” yazıyor
Böyle bir işe nasıl başlanır merak ediyorum. Tersine mühendislik zor; ekipmanla oynamak da çoğunlukla ya gerçekten pahalı ya da artık geliştirilmeyen eski şeyler üzerinde oluyor diye düşünüyorum. Elbette istisnalar vardır
Genelde UART olur, ama Starlink terminalinde UART yok gibi; bu kişi onun yerine eMMC bellek çipini sökmüş. Esasen lehimlenmiş bir microSD kart gibi
“DARKNAVY built a basic QEMU-based emulation environment for the Rev3 firmware” deniyor; GPS gibi harici cihazlara bağlanan firmware'i emüle etmek için kaynaklar ya da hazır çözümler var mı merak ediyorum
Android Emulator, QEMU emülatörünün downstream bir türevidir; Android cihazların önyüklemesini desteklemeyi ekler ve yaygın Android donanımlarını (OpenGL, GPS, GSM, sensörler) ve GUI arayüzünü emüle eder. Android Emulator, QEMU'yu çeşitli şekillerde genişletir
Bir üründe firmware'i tersine mühendisliğe karşı korumak istiyorsanız nasıl korumalısınız, ilgimi çekiyor. SpaceX'in kullandığı teknikleri anlatan bir kaynak var mı?
rootfs, güvenli bir öğeden çıkarılması zor bir gizli değerle şifrelenmeli. Bir adım daha ileri gidilirse bootloader, şifre çözme ve imaj imzalama gibi hassas işleri gizlemek için ARM'ın TrustZone'u gibi bir şey kullanılabilirDosya sisteminin doğrudan dump edilebilmiş olmasına bakılırsa, yazıda geçen bootloader dışında SpaceX pek bir koruma uygulamamış gibi görünüyor
Kaynakları herkesin yararına olacak ve ürünü daha iyi hale getirecek şeylere harcamak bence daha iyi. İleri düzey kullanıcılar için ürünü değiştirebilmenin teorik olasılığı, hatta üreticinin aklına bile gelmemiş şekillerde değiştirebilme olasılığı büyük bir avantaj olabilir
Teknik bir son kullanıcı olarak bana böyle görünüyor. Lambaları, kedi mama makinelerini ve artık kürek makinelerini bile düzgün kullanabilmek için cihazları hacklemek zorunda kalmaktan gerçekten yoruldum ve biraz moralim bozuluyor
Bu, roketlerle paylaşılan bir kod tabanına dayanıyorsa havalı olurdu, değil mi?