BlueBorne

Yayınlayan
Muhammed Bilal KAN
Yayınlanma tarihi
26/2/2022
Okuma süresi
10
Dakika
go back icon
Geri Dön

BlueBorne

Bluetooth teknolojisi günden güne ilerlerken güvenlik zafiyetleri de hızla artmaya devam ediyor. Bluetooth teknolojisinde keşfedilen güvenlik zafiyetleri genellikle Bluetooth’un kendisinden kaynaklı değil, üreticiler tarafından hatalı kullanılmasından (implementasyon) kaynaklanmaktadır. Bu zafiyetleri sömüren atak vektörlerine örnek olarak Bluebug, Bluesnarf, Bluestabbing, Bloover gösterilebilir.

Bu zafiyetleri ortaya çıkaran genel yöntem hatalı dosya aktarımları ile beklenmedik sonuçların oluşmasıdır. Bir sistem beklenmedik bir hatalı dosya aldığında bazı durumlarda güvenlik açısından dengesiz duruma düşer veya sistem çöker. Bu tarz durumlarda saldırganlar, zafiyetli cihazlar üzerinden çeşitli ataklar yapabilmektedir ve ataklar sonucunda veri hırsızlığı yapma, adınıza arama yapma, cihaz üzerinde root yetkileriyle komut çalıştırma gibi haklar elde edebilir.

Bluetooth kaynaklı atak vektörlerinin tehlikeli yanlarından biri de yüksek kazançlı antenlerle kilometrelerce uzaktan sömürülebilmesidir. Uzaktan ve kullanıcı etkileşimi olmadan yapılabilecek ataklar ile kullanıcının haberi bile olmadan cihazı ele geçirilebilir.

2017 yılında Armis Labs IoT güvenliği ekibi tarafından keşfedilen BlueBorne saldırısı; Android, iOS, Windows, Linux ve bunları kullanan aygıtlar da dahil olmak üzere mobil, masaüstü ve IoT cihazların çok büyük bir kısmını risk altına sokmuştur. Armis, bu saldırı vektörüyle alakalı olarak dördü kritik olmak üzere sekiz adet zero-day güvenlik zafiyeti açıkladı. Aşağıdaki görselde bu zafiyetlerin platform bazlı olarak gösterimi verilmiştir.

blueborne-1

Bu zafiyetler; Android için: CVE-2017-0781 (RCE), CVE-2017-0782 (RCE), CVE-2017-0785 (Data Leak), CVE-2017-0783 (MiTM)

Windows için: CVE-2017-8628 (MiTM)

Linux için: CVE-2017-1000250 (Data Leak), CVE-2017-1000251 (Buffer Overflow)

IOS için: Apple tarafından Bluetooth kulaklıklar ve Siri Remote ile çalışması için oluşturulan ve Bluetooth üzerinde çalışan Low Energy Audio Protocol (LEAP) adlı protokol yapısında bulunan zafiyet(RCE)

BlueBorne saldırısında saldırgan; Bluetooth üzerinden, kablosuz olarak saldırıyı gerçekleştirir ve RCE, MiTM (Man in the Middle) gibi çok çeşitli istismarlar yapabilir.

BlueBorne Saldırısı Keşif Aşamaları

Öncelikle cihaza saldırı yapılabilmesi için MAC adresinin tespit edilmiş olması gerekir. Bluetooth cihazları MAC adreslerinin bir parçasını, yolladığı paketlerle birlikte iletir. Bu parçaya LAP (Lower Adress Part) adı verilir. Sadece tek bir paketin sniff edilmesi ile MAC adresinin geri kalanının tespit edilmesi maksimum 32 deneme sürer. Ayrıca bir cihazdaki WiFi ve Bluetooth MAC adresleri genellikle ardışık gelir. Bu sebepten WiFi gözlenerek de Bluetooth MAC adresi hakkında bilgi edinilebilir. Aşağıdaki resimde MAC adreslerinin ardışık gelmesiyle alakalı bir örnek verilmiştir.

blueborne-2

Bununla birlikte Bluetooth cihazları (neredeyse tamamı) görünürlüğü aktif olmasa dahi her zaman dinleme modundadır. Bu sebepten bir saldırganın özellikle görünür olan bir Bluetooth cihazı bulmasına gerek kalmaz, dinleme modun da olan her Bluetooth cihazı bu zafiyete karşı risk altındadır.

Cihaz MAC adresi öğrenildiğine göre cihaz ile iletişim kurulabilir. Peki bu saldırı nasıl gerçekleşiyor? Saldırının nasıl gerçekleştiğini Linux tabanlı IoT cihazlarının istismarı üzerinden anlatalım.

blueborne-3

Linux kernelindeki Bluetooth yığınına BlueZ adı verilir. Samsung’un Tizen işletim sistemi, Amazon’un Fire işletim sistemi gibi Linux kerneline sahip özelleştirilmiş işletim sistemleri de, Bluetooth yığını olarak BlueZ kullanmaktadır. BlueZ yığınında çalışan protokol ve servisler root yetkilerinde veya kernel düzeyinde çalışırlar.

Bluetooth yığınlarının tamamında Bluetooth servisleriyle olan bağlantıları düzenleyen katmana L2CAP adı verilir. L2CAP, QoS özellikleriyle birlikte Bluetooth için TCP ile eşdeğer çalışır. Modifiye edilmiş L2CAP paketleri ile Linux tabanlı IoT cihazı üzerinde, KASLR (Kernel Address Space Layout Randomization) ve Stack Koruması bypass edilip BlueBorne saldırısı gerçekleştirilecektir.

Aynı zamanda BlueBorne saldırısı ile Linux kernelinde bulunan RCE zafiyetini kullanarak (CVE-2017-1000251) sistemde root yetkileriyle komut çalıştırılabilmektedir. Kernel sürümü v2.6.32 ve öncesi olan IoT cihazlarda yapılabilen BlueBorne saldırısının yanı sıra, kernel sürümü daha yeni olan cihazlarda da BlueBorne saldırısı gerçekleştirilebilmiştir. Örneğin kernel sürümü v2.6.37 olan Amazon Echo akıllı hoparlörü CVE-2017-1000251 zafiyetini barındırmamasına rağmen sömürülebilmiştir. Biz de saldırıyı detaylandırmaya Amazon Echo cihazı üzerinden devam edelim.

blueborne-4

Öncelikle Amazon Echo cihazının konfigürasyonlarına göz atalım:

  • Kernel sürümü 2.6.37
  • Arm 32bit işlemci kullanıyor. (TI DM3725)
  • KASLR bulunmuyor. KASLR, kernel imajının boot sürecinde her seferinde belirli bir adrese yüklenmesi yerine rastgele bir adrese yüklenmesini sağlar. KASLR hem interruptları handle eden Interrupt Descriptor Table’ın manipülasyonunu imkansız hale getirir hem de kernel adres bloğunun yerinin tahmin edilmesini zorlaştırır.
  • Stack Canary bulunmuyor. Stack Canary basitçe şu şekilde tanımlanır: Program çalıştırılmaya başlamadan önce kodların en üstünde EBP registerına aktarılmaya hazır rastgele oluşturulmuş bir değer saklar. Programın bitiminde de bu değer değişip değişmediğini kontrol eder.
  • GCC’nin FORTIFY_SOURCE mekanizması bulunmuyor. Yani overflow edilen ilk 4 byte direkt buffer’ın çıktısını gösterir.
  • NX Biti bulunmuyor. “No execute” anlamına gelir ve işlemcinin bazı kodları çalıştırmasını engelleyen bir teknolojidir.
  • LSM (Linux Security Module) bulunmuyor. Örneğin SMACK gibi işlem etkileşimlerini ve verileri kötü amaçlı işlemlerden koruyacak bir yazılım bulunmamaktadır.

Güvenlik açısından önemli kernel konfigürasyonlarının yapılmamış olması direkt olarak stack’e atlayıp shellcode çalıştırılabileceğini göstermektedir.

blueborne-5

Yukarıda sarı renklendirilmiş bölgede, l2cap_config_rsp’nin gelen konfigürasyon yanıtlarını 60 byte ile sınırlandırdığı görülmektedir. Yani buradan 64 byte’lık bir overflow yapılmasının mümkün olmadığı görülmekte. Fakat bunu aşmak için de l2cap_parse_conf_rsp’nin implementasyonun da derinliklere inip araştırmalar yapılmıştır.

blueborne-6.png

Yukarıdaki kod parçasında da görüldüğü üzere, while döngüsü her çalıştığında; l2cap_parse_conf_rsp, mevcut elementin uzunluğunu ve değerini döndürmektedir. Elementin uzunluğu ne olursa olsun gelen değer direkt olarak konfigürasyon yanıtına eklenecektir.

Örneğin; L2CAP_CONF_RFC türündeki bir konfigürasyon elementi while döngüsünde parse edildiğinde, aynı türde bir element sizeof (rfc) (9 byte) ile birlikte payloadına eklenecektir. L2CAP_CONF_RFC içerisindeki if ifadesi yalnızca memcpy öğesinin uygun boyutta olduğunu doğrular. Yani, sıfır uzunluklu bir RFC öğesi göndererek, ptr çıktısını 11 byte (2 header bytes + 9 payload bytes) kadar ilerletebiliriz.

Maksimum 30 sıfır uzunluklu RFC elemanının (konfigürasyon yanıtında 60 byte olarak) gönderilmesi, 330 baytlık bir konfigürasyon isteği yaratacaktır (11 * 30). Buffer’ın boyutunu (64 byte) büyük ölçüde geçecektir.

Devamında buffer taşırılarak gelen network üzerinden gelen yanıtlara göre shellcode yazılmıştır. Amazon Echo cihazından elde edilen shell ile örnek olarak uzaktan istediğiniz sesleri çalıştırabilirsiniz. Shellcode yazım aşaması yazının sonunda linkini paylaşacağım zafiyetin teknik raporunda detaylıca anlatılmıştır.

Bu saldırıyla birlikte ağ üzerinde cihazı kullanarak MiTM saldırısı, cihaz üzerinde root yetkilerinde komut çalıştırma, bilgi sızdırma, iç ağa erişim veya cihaz özelliklerini sizin adınıza kullanma gibi sömürüler yapılabilir.

BlueBorne saldırısından korunmak için platform bazlı yayınlanan güncellemeleri cihazlarda gerçekleştirebilirsiniz. Bununla birlikte BlueBorne benzeri bir saldırı vektörüne karşın Bluetooth servisini kullanmadığınız sürece kapalı konumda tutmanız tavsiye edilir.

Teknik Rapor: https://www.blackhat.com/docs/eu-17/materials/eu-17-Seri-BlueBorne-A-New-Class-Of-Airborne-Attacks-Compromising-Any-Bluetooth-Enabled-Linux-IoT-Device-wp.pdf

Referanslar:  https://www.blackhat.com/eu-17/briefings.html#blueborne-a-new-class-of-airborne-attacks-that-can-remotely-compromise-any-linux-iot-device

https://github.com/Alfa100001/-CVE-2017-0785-BlueBorne-PoC

https://armis.com/blueborne/#/devices

Muhammed Bilal KAN
Muhammed Bilal KAN

Detaylı Bilgi İçin

info@gaissecurity.com