Merhaba dostlar yeni yazıma hoşgeldiniz, bu yazımda elimizde olan bir firmware’ın analizinden bahsedeceğim.
Burada Analiz işlemimizi kolaylaştıracak binwalk isimli bir araç kullanacağız. (GitHub - ReFirmLabs/binwalk: Firmware Analysis Tool 1)
Binwalk özetle , dosyayı ayrıştırır ve bulduklarına göre bir içindekiler tablosu döndürür.
İlk olarak dosyayı .zip den çıkaralım.
ve adrından ,
$ binwalk dcs932l_v1.14.04.bin Komutunu çalıştırarak çıktıyı görelim. Çıktı üzerinde ;
Bu LZMA arşivini açmadan ve derinlemesine incelemeden önce, onu .bin dosyadan ayırmamız gerekiyor. Şu Komutu çalıştırarak bu işlemi gerçekleştiriyoruz :
$ dd if=dcs932l_v1.14.04.bin skip=327744 bs=1 of=kernel.lzma
LZMA arşivini elde ettiğimize göre artık dosyaları arşivden çıkartabiliriz. unlzma kernel.lzma komutu ile bu işlemi gerçekleştiriyoruz. Ve arşivden çıkan dosyanın bir data dosyası olduğunu görüyoruz.
Arşivden çıkan dosyayı tekrar binwalk ile analiz ettiğimizde 4038656 adresinde , birtane daha LZMA arşivi olduğunu görüyoruz. İç içe geçmiş 2 LZMA arşivi…
Şimdi orada gördüğümüz LZMA’yı da data dosyasından ayıralım…
$ dd if=kernel skip=4038656 bs=1 of=temizcikti.lzma
ardından çıkan LZMA arşivinden çıkartalım…
$ unlzma temizcikti.lzma
komtu çalıştırdıktan sonra , çıkan dosyanın bir cipo arşivi olduğunu görüyoruz. Bu arşiv içinden çıkacak dosyaların , Linux Sistem dosyaları olma ihtimali çok yüksek.
Şimdi linux sistem dosyalarını bir klasör oluşturalım ve bu klasöre çıkartalım.
$ mkdir cpio; cd cpio
Ardından cipo arşivi içindeki dosyaları , çıkartalım ;
$ cpio -idm --no-absolute-filenames < ../temizcikti
Dosyaları çıkartma işleminin ardından çıkan dosyaların , Linux Sistem dosyaları olduğunu görüyoruz.
Bundan sonraki adımda , configuration dosyaları , Binary dosyaları üzerinde veya ullandığınız Firmware Http kullanıyorsa Web tarafında PHP/ASP kodları üzerinde Resarch Yapabilirsiniz. 2. yazımda bu kısımlara daha detaylı şekilde göz atıp. Firmware üzerinde modification yaptıktan sonra tekrar .bin haline getirmek ve Firmware a Backdoor gömmek üzerinde duracağız.
Bir sonraki yazımda görüşmek üzere , Esen Kalın…
Firmware Nedir ?
Donanım yazılımı, sayısal veri işleme yeteneği bulunan her tür donanımın kendisinden beklenen işlevleri yerine getirebilmesi için kullandığı yazılımlara verilen addır. Elektronikte ve bilişimde donanım yazılımı, kalıcı bellek, program kodu ve veri deposudur. Özetle Firmware, donanım için yazılmış bir yazılımdır. Cihazda, programların çalışmasını sağlar.Firmware Dosyalarını Elde Etmek
Firmware Dosyalarını elde etmek için en çok bilinen yöntemler şunlardır ;- Cihaza Fiziksel erişim varsa , Cihazın UART portları üzerinden çeşitli yöntemler ile dosyaları elde edebiliriz.
- Üreticinin Websitesinden dosyaları indirebiliriz.
Analize Başlıyalım
Bu yazımızda uygulamalı örnek olması için D-Link 'in DCS-932L isimli WiFi Camera ürününün 1.14.4 versiyonuna sahip Firmware’ı nı analiz edeceğiz.Burada Analiz işlemimizi kolaylaştıracak binwalk isimli bir araç kullanacağız. (GitHub - ReFirmLabs/binwalk: Firmware Analysis Tool 1)
Binwalk özetle , dosyayı ayrıştırır ve bulduklarına göre bir içindekiler tablosu döndürür.
İlk olarak dosyayı .zip den çıkaralım.
ve adrından ,
$ binwalk dcs932l_v1.14.04.bin Komutunu çalıştırarak çıktıyı görelim. Çıktı üzerinde ;
- Ondalık formatta bir dosya konumu
- Onaltılık (Hexa Decimal) formatta bir dosya konumu
- O konumda bulunan şeyin açıklaması
Bu LZMA arşivini açmadan ve derinlemesine incelemeden önce, onu .bin dosyadan ayırmamız gerekiyor. Şu Komutu çalıştırarak bu işlemi gerçekleştiriyoruz :
$ dd if=dcs932l_v1.14.04.bin skip=327744 bs=1 of=kernel.lzma
LZMA arşivini elde ettiğimize göre artık dosyaları arşivden çıkartabiliriz. unlzma kernel.lzma komutu ile bu işlemi gerçekleştiriyoruz. Ve arşivden çıkan dosyanın bir data dosyası olduğunu görüyoruz.
Arşivden çıkan dosyayı tekrar binwalk ile analiz ettiğimizde 4038656 adresinde , birtane daha LZMA arşivi olduğunu görüyoruz. İç içe geçmiş 2 LZMA arşivi…
Şimdi orada gördüğümüz LZMA’yı da data dosyasından ayıralım…
$ dd if=kernel skip=4038656 bs=1 of=temizcikti.lzma
ardından çıkan LZMA arşivinden çıkartalım…
$ unlzma temizcikti.lzma
komtu çalıştırdıktan sonra , çıkan dosyanın bir cipo arşivi olduğunu görüyoruz. Bu arşiv içinden çıkacak dosyaların , Linux Sistem dosyaları olma ihtimali çok yüksek.
Şimdi linux sistem dosyalarını bir klasör oluşturalım ve bu klasöre çıkartalım.
$ mkdir cpio; cd cpio
Ardından cipo arşivi içindeki dosyaları , çıkartalım ;
$ cpio -idm --no-absolute-filenames < ../temizcikti
Dosyaları çıkartma işleminin ardından çıkan dosyaların , Linux Sistem dosyaları olduğunu görüyoruz.
Bundan sonraki adımda , configuration dosyaları , Binary dosyaları üzerinde veya ullandığınız Firmware Http kullanıyorsa Web tarafında PHP/ASP kodları üzerinde Resarch Yapabilirsiniz. 2. yazımda bu kısımlara daha detaylı şekilde göz atıp. Firmware üzerinde modification yaptıktan sonra tekrar .bin haline getirmek ve Firmware a Backdoor gömmek üzerinde duracağız.
Bir sonraki yazımda görüşmek üzere , Esen Kalın…