IoT Pentest Checklist

IoT pentest, IT pentest’te yapılan web/api, mobil uygulama ve ağ servis testlerine ek olarak cihazın fiziksel bileşenlerine ve yaydığı radyo frekans dalgalarına kadar olan tüm ekosistemi hedef alan bir güvenlik değerlendirmesidir.

Her cihaz kendi özelinde değerlendirilerek saldırı yüzeyleri tespit edilir ve buna uygun olarak sızma testi çalışması gerçekleştirilir. Bu yazının konusu olan IoT Pentest Checklist genel olarak çoğu cihazda bulunan bileşenleri hedef alarak hazırlanmıştır. Cihazlarda her zaman bilinen protokoller kullanılmayabilir.

IoT pentestin aşamalarını 5 başlık altında toparlayabiliriz; hazırlık ve bilgi toplama, donanım analizi, firmware analizi, ağ ve protokol analizi ve uygulama katmanı analizi.

Her bir aşamada yapılması gerekenler, bir görev veya bir adım gibi sorulaştırarak kontrol listesi halinde hazırlanmıştır.

Hazırlık ve Bilgi toplama yapıldı mı?

Envanter belirleme gerçekleştirildi mi?
Cihaz ekosistemindeki tüm bileşenlerin kapsamlı listesinin oluşturuldu mu?
Cihazın model ve yazılım sürümlerinin dokümante edildi mi?
Cihazın yönetilebildiği mobil uygulama belirlendi mi?
Bulut hizmetleri ve API altyapısı tespit edildi mi?
Fiziksel İnceleme tamamlandı mı?
Cihaz üzerindeki etiket ve işaretler kontrol edildi mi?
Cihaz üzerindeki erişilebilir portlar belirlendi mi?
OSINT yapıldı mı?
FCC ID veri tabanından sorgulama yapılarak cihazın PCB fotoğrafları, RF modülleri bulunuyor mu?
Cihazın üretici belgeleri internet üzerinde bulunuyor mu?
Cihazın datasheet’i ve teknik dokümanı incelendi mi?
Cihazın bilinen zafiyetleri araştırıldı mı?

Donanım Analizi yapıldı mı?

PCB analizi gerçekleştirildi mi?
Debug Portlardan bağlantı sağlandı mı?
UART portu test edildi mi?
UART bağlantısı yapılabiliyor mu?
TX, RX ve GND pinleri tespit edildi mi?
Baud rate belirlendi mi?
Boot logları yakalanabiliyor mu?
Shell’e yetkili erişim elde edildi mi?
Elde edilen shell yetkisi root haklarında çalıştırılıyor mu?
Yetki yükseltme saldırıları gerçekleştirildi mi?
Shell’e erişimde kullanıcı hesabı ve parolası soruluyor mu?
Kaba kuvvet saldırısı yapıldı mı?
Hesap bilgileri yazılım içinde mevcut mu?
Bootloader atlatılarak shell’e erişim elde edildi mi?
JTAG bağlantısı yapılabiliyor mu?
JTAG pinleri JTAGulator aracı ile tespit edildi mi?
Register inspection and live debugging yapılabiliyor mu?
Bellek okuma erişimi mevcut mu?
Cihaz yazılımı ele geçirildi mi?
Haberleşme veri yolu tespit edildi mi?
SPI üzerindeki veriler izlenebilir mi?
I2C üzerindeki verileri izlenebilir mi?
Bellek dökümü ele geçirilebilir mi?
JTAG/SWD ile bellek döküm ele geçirebilir mi?
Shell bağlantısı ile cihazdan bellek dökümü ele geçirilebilir mi?
Gelişmiş donanım saldırıları yapılabiliyor mu?
Glitching saldırısı yapılabiliyor mu?
Yan Kanal saldırısı yapılabiliyor mu?

Yazılım analizi gerçekleştirildi mi?

Yazılım elde edilebiliyor mu?
SOIC clip yöntemiyle çipe bağlanılarak yazılım ele geçirilebilir mi?
OTA güncelleme paketleri yoluyla yazılım ele geçirilebilir mi?
Üreticinin internet üzerinden yayınladığı kaynaklarla yazılım ele geçirilebilir mi?
Mobil uygulama üzerinden cihaz yazılımı ele geçirilebilir mi?
Debug portları üzerinden bağlantı sağlanarak yazılım ele geçirilebilir mi?
Flash çip sökülerek yazılım ele geçirilebilir mi?
Yazılım paketi açılabiliyor mu?
Otomatik çıkarma araçlarıyla yazılım paketi çıkarılabilir mi?
Binwalk ile otomatik çıkarma yapıldı mı?
Binwalk ile recursive tarama yapıldı mı?
Binwalk ile açılan yazılım paketine ham data analizi yapıldı mı?
Strings aracı ile yazılım paketinden çıkarılan dosyalardan veri okunabildi mi?
Hexdump ile yazılım paketinden çıkarılan dosyalar analiz edilebilir mi?
Manuel çıkarma yöntemleriyle yazılım paketi çıkarılabilir mi?
dd aracıyla manuel olarak yazılım paketinin çıkartıldı mı?
Dosya sistemi yapısına özel araçlarla yazılım çıkartma işlemi yapıldı mı?
SquashFS aracıyla yazılım çıkartma yapılabilir mi?
Sasquatch aracıyla yazılım çıkartma yapılabilir mi?
YAFFS2 aracıyla yazılım çıkartma yapılabilir mi?
Binary formatındaki firmware, ELF formatına dönüştürülerek tersine mühendislik analizine uygun hale getirilebilir mi?
Bare-metal firmware yalnızca çalıştırılabilir ham koddan mı oluşuyor?
Ham firmware binary’si ELF formatına dönüştürüldü mü?
Binary → ELF dönüşümü için uygun araçlar (örn. esp-bin2elf) kullanıldı mı?
ELF’e dönüştürülen firmware, tersine mühendislik araçlarıyla uyumlu hale getirildi mi?
Dönüştürülen ELF dosyası Ghidra veya IDA Pro üzerinde analiz edildi mi?
Fonksiyon sınırları ve çağrıları ELF formatı ile analiz edildi mi?
Yazılım paketi üzerinde entropy analizi yapıldı mı?
Yüksek ve uniform entropy gözlemleniyor mu? (evet ise yüksek ihtimalle firmware şifrelidir)
Yazılım paketinin şifreleme anahtarı ele geçirilebilir mi?
Donanımsal debug arayüzleri (JTAG / SWD vb.) kullanılarak şifreleme anahtarı elde edildi mi?
Bootloader analizi yapılarak şifreleme anahtarı veya ilgili bilgiler elde edildi mi?
Mobil uygulamada tersine mühendislik yapılarak anahtar ele geçirilebildi mi?
Statik analiz yapıldı mı?
Firmware üzerinde hassas bilgi ve gizli anahtar/token taraması yapıldı mı?
Strings analizi yapıldı mı?
Firmware içerisinde hardcoded parolalar tespit edildi mi?
API anahtarları ve access token’lar string analiziyle çıkarıldı mı?
URL’ler, IP adresleri ve endpoint’ler tespit edildi mi?
Gömülü sertifikalar tespit edildi mi?
Otomatik secret tarama araçları çalıştırıldı mı?
Firmwalker aracı çalıştırıldı mı?
ByteSweep aracı çalıştırıldı mı?
Regex bazlı secret araması yapıldı mı?
Regex tabanlı aramalar ile JWT token’lar tespit edildi mi?
Regex tabanlı aramalar ile AWS anahtarları tespit edildi mi?
Regex tabanlı aramalar ile parola hash’leri (MD5, SHA varyantları) tespit edildi mi?
Hassas dosya taraması gerçekleştirildi mi?
Web server konfigürasyon dosyaları kontrol edildi mi?
/etc/passwd ve /etc/shadow vb dosyalar kontrol edildi mi?
Başlangıç scriptleri incelendi mi?
Ağ ve servis konfigürasyon dosyaları incelendi mi?
Binary Analizi & Tersine Mühendislik yapıldı mı?
Binary dosyaları incelendi mi?
Çalıştırılabilir dosyalar ve paylaşımlı kütüphaneler tespit edilebilir mi?
CPU mimarisi ve endian bilgisi belirlenebilir mi?
Binary dosyaları Ghidra ve IDA Pro ile analiz edildi mi?
Kimlik doğrulama ve mantıksal işlemler analiz edildi mi?
Kimlik doğrulama ve yetkilendirme işlemleri analiz edildi mi?
Yazılım paketi güncelleme mantığı analiz edildi mi?
Kriptografik implementasyonlar incelendi mi?
Tehlikeli fonksiyon analizi yapıldı mı?
Tehlikeli fonksiyonlar (`strcpy`, `strcat`, `sprintf`) kullanılıyor mu?
`system()` çağrıları mevcut mu?
Komut çalıştırmaya imkan tanıyan yapılar bulunuyor mu?
Buffer overflow’a yol açan kod parçaları mevcut mu?
Mantıksal akışlar tespit edildi mi?
Hardcoded backdoor’ların olup olmadığı kontrol edildi mi?
Gizli debug fonksiyonlarının olup olmadığı kontrol edildi mi?
Yetkilendirmeyi atlatmaya yarayan fonksiyon ve koşulların olup olmadığı kontrol edildi mi?
Üçüncü parti bileşen ve CVE analizi
Üçüncü parti bileşenlerin tespiti yapıldı mı?
Yazılım paketinin kullanılan sürümü için daha önce yayınlanmış CVE ve zafiyet olup olmadığı kontrol edilidi mi?
Dinamik analizi gerçekleştirildi mi?
Yazılım paketi “QEMU” veya “Firmdyne” araçları ile emüle edildi mi?
Yazılım paketi dinamik olarak çalıştırılırken davranışı, çalışan servisler, log çıktıları ve debug mesajları analiz edildi mi?

IoT Protokol analizi gerçekleştirildi mi?

Keşif ve Servis Tespiti yapıldı mı?
Açık portlar ve dışa açık servisler tespit edildi mi?
Yaygın kullanılan IoT port ve servisler tespit edildi mi?
MQTT portları (1883 / 8883) açık mı?
CoAP portları (5683 / 5684) açık mı?
Özel TCP / UDP servisleri mevcut mu?
Spesifik protokol tespiti yapıldı mı?
CoAP tespiti yapıldı mı?
`/.well-known/core` endpoint’i olup olmadığı kontrol edildi mi?
Açıkta olan CoAP kaynakları ve metodlar listelenebilir mi?
Bluetooth Low Energy (BLE) tespiti yapıldı mı?
BLE servisleri ve karakteristikleri enumerate edilebilir mi?
UUID’ler ve erişim izinleri tespit edilebilir mi?
BLE analiz araçları kullanıldı mı?
Bettercap
nRF Connect
MQTT tespiti yapıldı mı?
Wildcard kullanılarak topic keşfi yapıldı mı?
#
+
Publish / subscribe yetkileri tespit edildi mi?
Trafik izleme yapıldı mı?
Ağ trafiği izlenebilmesi mümkün mü?
Trafik Wireshark veya tcpdump ile yakalanabilir mi?
MITM saldırısı uygulanabilir mi?
ARP poisoning yapıldı mı?
Transparent proxying yapıldı mı?
Kullanılan şifreleme mekanizmaları analiz edildi mi?
Bluetooth trafiği izlenmesi mümkün mü?
Bluetooth trafiği yakalandı mı?
Android Bluetooth HCI Snoop Log kullanıldı mı?
Şifreleme öncesi BLE trafiği yakalandı mı?
Protokol tersine mühendisliğine uygun veri elde edildi mi?
ZigBee / RF trafiğinin izlenmesi mümkün mü?
Over-the-air RF sinyalleri yakalandı mı?
KillerBee framework veya RTL-SDR kullanıldı mı?
Şifrelenmemiş veya zayıf korunan RF trafiği analiz edildi mi?
Kimlik doğrulama ve yetkilendirme testleri yapıldı mı?
Zayıf eşleşme mekanizmaları test edildi mi?
BLE pairing mekanizması analiz edildi mi?
“Just Works” pairing kullanılıyor mu?
MITM koruması var mı?
Anahtar çıkarımı mümkün mü?
Crackle (TK / LTK recovery)
Kaba kuvvet saldırısı gerçekleştirildi mi?
MQTT için zayıf parola için kaba kuvvet saldırıları gerçekleştirildi mi?
MQTT için varsayılan parola için kaba kuvvet saldırıları gerçekleştirildi mi?
Yetkilendirme atlatma testleri gerçekleştirildi mi?
Kimlik doğrulama flag’leri manipüle edilebilir mi?
Kısıtlı endpoint’lere doğrudan erişim mümkün mü?
Protokolün yanlış kullanımıyla yetki yükseltme yapılabilir mi?
Paket manipülasyonu ve tekrarlama saldırıları gerçekleştirildi mi?
Tekrarlama saldırıları gerçekleştirildi mi?
Geçerli kontrol komutları yakalanabilir mi?
Unlock
Power on/off
Rolling-code veya nonce korumaları mevcut mu?
Paket manipülasyon saldırıları gerçekleştirebilmek mümkün mü?
Paket alanları ve hex değerleri değiştirilebilir mi? (`0x01 / 0x00`)
Cihazda beklenmeyen davranış gözlemleniyor mu?
Veri girişi manipülasyonu test edildi mi?
Geçersiz uzunlukta veya beklenmeyen karakterli hatalı paketler gönderildi mi?
Crash, reset veya memory corruption test edildi mi?
Servis dışı bırakma testleri yapıldı mı?
MQTT broker CONNECT istekleriyle flood yapılarak servis dışı bırakılabilir mi?
CPU ve bellek tüketimi senaryoları test edildi mi?
RF Jamming saldırısı test edildi mi?
RF / ZigBee frekanslarında sinyal bozma testleri gerçekleştirildi mi?
Cihazın fail-safe davranışı gözlemlendi mi?
Dayanıklılık ve kurtarma mekanizmaları test edildi mi?

Uygulamalar üzerinde sızma testleri gerçekleştirildi mi?

Web uygulama sızma testleri gerçekleştirildi mi?
Cihaz üzerinde çalışan gömülü web servisleri tespit edildi mi?
Gömülü çalışan web uygulamasının sızma testleri gerçekleştirildi mi?
Mobil uygulama sızma testleri gerçekleştirildi mi?
Mobil uygulama için statik testler gerçekleştirildi mi?
Açık metin API anahtarı, erişim token’ları vs tespit edildi mi?
MobSF aracı ile otomatik tarama yapıldı mı?
Mobil uygulama için dinamik testler gerçekleştirildi mi?
Mobil uygulamadan çıkan API istekleri intercept edilebildi mi?
Mobil uygulamanın haberleştiği API için sızma testleri gerçekleştirildi mi?

Bu kontrol listesinin mindmap versiyonu aşağıda gösterilmiştir. Ayrıca bu bağlantıdan yüksek çözünürlüklü versiyona ve bu bağlantıdan PDF dosyasına da erişebilirsiniz.

Published by

“IoT Pentest Checklist” ögesine 0 yanıt

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir