2 puan yazan GN⁺ 2024-05-26 | 1 yorum | WhatsApp'ta paylaş

Samsung WB850F ürün yazılımı tersine mühendisliği

WB850F_FW_210086.zip - dış kapsayıcı

  • WB850F, Samsung'un iLauncher uygulamasını sonlandırmasından sonra bile ürün yazılımı ve destek dosyalarını sunmaya devam ettiği az sayıdaki modellerden biridir.
  • WB850F_FW_210086.zip arşivi birden fazla dosya içerir:
    • GPS_FW/BASEBAND_FW_Flash.mbin: veri
    • GPS_FW/BASEBAND_FW_Ram.mbin: veri
    • GPS_FW/Config.BIN: veri
    • GPS_FW/flashBurner.mbin: veri
    • FWUP: ASCII metin, CRLF satır sonlandırıcıları içerir
    • partialImage.o.map: ASCII metin
    • WB850-FW-SR-210086.bin: veri
    • wb850f_adj.txt: ASCII metin, CRLF satır sonlandırıcıları içerir
  • FWUP dosyası, ürün yazılımı test/otomasyon modülü için bir betik olan "upgrade all" dizesini içerir.
  • wb850f_adj.txt dosyası, GPS ürün yazılımını yükselten ve ilgili dosyayı silen karmaşık bir betiktir.

partialImage.o.map - bağlayıcı dökümü

  • partialImage.o.map, 300 binden fazla satır içeren bir metin dosyasıdır ve partialImage.o için bağlayıcı çıktısını ve tam bellek haritasını içerir:
    • Örnek:
      • output input virtual section section address size file
      • .text 00000000 01301444 .text 00000000 000001a4 sysALib.o
      • DevHTTPResponseStart 00321a84 000002a4
      • DevHTTPResponseData 00321d28 00000100
      • DevHTTPResponseEnd 00321e28 00000170
  • Bu dosya, ürün yazılımı analizi için çok yararlı bilgiler sağlar.

WB850-FW-SR-210086.bin - başlık analizi

  • WB850-FW-SR-210086.bin dosyası binwalk ile analiz edildiğinde, dosya başlıkları (HTML, PNG, JPEG vb.), VxWorks başlığı ve çeşitli Unix yolları bulundu; ancak bölüm ya da dosya sistemi bulunmadı.
  • İlk 1 KB'nin hex dump çıktısı:
    • 00000000: 3231 3030 3836 0006 4657 5f55 502f 4f4e 210086..FW_UP/ON
    • 00000010: 424c 312e 6269 6e00 0000 0000 0000 0000 BL1.bin.........
    • 00000020: 0000 0000 0000 0000 c400 0000 0008 0000 ................
    • 00000030: 4f4e 424c 3100 0000 0000 0000 0000 0000 ONBL1...........
    • 00000040: 0000 0000 4657 5f55 502f 4f4e 424c 322e ....FW_UP/ONBL2.
    • 00000050: 6269 6e00 0000 0000 0000 0000 0000 0000 bin.............
  • Buradan, dosya adlarını ve bölüm adlarını içeren bölüm tablosu yeniden oluşturulabilir:
    • File name size offset partition name
    • FW_UP/ONBL1.bin 196 (0xc4) 0x0000800 ONBL1
    • FW_UP/ONBL2.bin 46 KB (0xb630) 0x00008c4 ONBL2
    • [WB850]DSC_5KEY_WB850 30 MB (0x1d1f438) 0x000bef4 Main_Image
    • RomFS/SPID.Rom 48 MB (0x2f4ac00) 0x1d2b32c Resource
    • FW_UP/WB850.HEX 19 KB (0x4d86) 0x4c75f2c OIS
    • FW_UP/skin.bin 36 MB (0x22fd048) 0x4c7acb2 SKIN

WB850-FW-SR-210086.bin - kod ve veri bölümleri

  • Bölüm çıkarma aracıyla bölümler çıkarıldığında:
    • ONBL1.bin: veri
    • ONBL2.bin: veri
    • Main_Image.bin: OpenPGP gizli anahtarı (yanlış pozitif)
    • Resource.bin: MIPSEB-LE MIPS-III ECOFF çalıştırılabilir dosyası
    • OIS.bin: veri
    • SKIN.bin: veri
  • ONBL1 ve ONBL2, önyükleyicinin 1. ve 2. aşamaları gibi görünüyor.
  • Main_Image, çok sayıda ARM fonksiyon prologu içeren gerçek ürün yazılımıdır.
  • Resource ve SKIN, SoC üreticisinin sağladığı UI skin'i olabilir.
  • OIS, optik görüntü sabitleme biriminin ürün yazılımı olabilir.

Kodu Ghidra'ya yükleme

  • ONBL1, ONBL2 ve Main_Image bölümleri gerçek ARM kodu içerir.
  • Main_Image dosyasını doğru bellek adresine eşlemek için analiz Ghidra'da başlatıldı.
  • partialImage.o.map içindeki fonksiyon adları yüklenip Ghidra'ya eşlendi.

DevHTTPResponseStart tersine mühendisliği

  • DevHTTPResponseStart fonksiyonu hotspot algılaması yapar.
  • Özet:
    • HTTP 200 OK yanıtında, sunucu yahoo.something veya kr.yahoo.something alan adı üzerinde bir çerez ayarlamalıdır.
    • HTTP 301/302/307 yönlendirmesinde, URL yahoo. dizesini içermelidir.
  • Hotspot algılamasını atlatmak için DNS kaydını başka bir sunucuya yönlendirmek veya çerezi ayarlamak için HTTP yönlendirmesi kullanmak gerekir.

Özet: Asıl hazine

  • Bu analiz sayesinde Samsung WB850F WiFi kameranın hotspot algılaması anlaşılabildi ve aşılabildi.
  • Sonuç olarak küçük bir yama ile kameranın gerçekten bağlanması ve fotoğraf yükleyebilmesi sağlandı.
  • Main_Image, 77.000'den fazla fonksiyon içeriyor; bu da dijital kameraların nasıl çalıştığını daha iyi anlamak için keşfetmeye değer olduğu anlamına geliyor.

GN⁺ görüşü

  1. Teknik zorluk ve öğrenme fırsatı: Bu yazı, ürün yazılımı tersine mühendisliğine dair gerçek bir örnek sunarak teknik zorluklar ve öğrenme fırsatları sağlıyor. Özellikle başlangıç seviyesindeki yazılım mühendisleri için çok faydalı.
  2. Güvenlik ve gizlilik değerlendirmeleri: Hotspot algılamasını atlatmak, güvenlik ve gizlilik açısından önemli değerlendirmeler içerir. Bu tür teknikler kullanılırken etik yönler her zaman dikkate alınmalıdır.
  3. Ghidra kullanımı: Ghidra gibi araçlarla karmaşık ürün yazılımlarının nasıl analiz edileceği öğrenilebilir. Bu, tersine mühendislik ve güvenlik analizi için oldukça faydalıdır.
  4. Ürün yazılımı güncellemelerinin önemi: Ürün yazılımı güncellemeleri, cihazların işlevselliğini ve güvenliğini korumak açısından önemlidir. Bu yazı, ürün yazılımı güncellemelerinin karmaşıklığını iyi gösteriyor.
  5. Diğer kamera modellerine uygulanabilirlik: Bu teknik başka Samsung kamera modellerine de uygulanabilir; bu da benzer sorunların çeşitli cihazlarda çözülmesine yardımcı olabilir.

1 yorum

 
GN⁺ 2024-05-26
Hacker News görüşü

Hacker News yorum derlemesi

  • Ben bu bağlantıyı daha çok beğendim. Kesinlikle şaşırtıcı bir firmware "crypto" fiyaskosu

    • Samsung NX kameranın firmware şifreleme başarısızlığı vakasını ele alan bağlantıyı beğenmiş.
  • İnanılmaz iş! Reverse engineering'in nasıl yapıldığına dair bir eğitim hazırlamayı düşündünüz mü?

    • İnanılmaz bir çalışma olduğunu, reverse engineering hakkında bir eğitim hazırlamayı düşünüp düşünmediğini merak ediyor.
  • Tek istediğim, kameradaki düğmesine basıp fotoğraf çektiğimde birkaç dakika sonra görüntünün Apple Photos'ta olması olan bir dSLR.

    • Fotoğraf çekilince görüntünün kısa süre sonra doğrudan Apple Photos'a kaydedildiği bir DSLR kamera istiyor.
  • [dead]

    • Yorum silinmiş.