1 puan yazan GN⁺ 2023-08-25 | 1 yorum | WhatsApp'ta paylaş
  • Parolasız BitLocker ayrı bir TPM’e (discrete TPM) dayanıyorsa, önyükleme sırasında VMK’nin TPM’den CPU’ya aktarıldığı anda düz metin anahtar SPI veri yolunda yakalanabilir
  • Lenovo L13 deneyi 100 doların altındaki DSLogic Plus ile yapıldı, ancak 33MHz SPI veri yolunu kararlı biçimde okumak için örnekleme sınırları ciddi bir sorundu
  • Yakalanan veriler SPI → TIS → TPM 2.0 sırasıyla yorumlanmalı; TPM2_Unseal yanıt arabelleğinde 5761 ile başlayan 32 baytlık anahtar bulunuyor
  • Çıkarılan anahtarla dislocker-fuse kullanılarak BitLocker bölümü bağlanıyor; sethc.exe, cmd.exe ile değiştirilip Shift’e 5 kez basılarak SYSTEM kabuğu elde ediliyor
  • Ayrı TPM tek başına yeterli koruma sağlamakta zorlanır; pratik savunma fTPM kullanımı veya BitLocker PIN’i ya da parola ifadesi ayarlamaya bağlıdır

Parolasız BitLocker ve ayrı TPM’in zayıflığı

  • BitLocker bölümü FVEK (Full Volume Encryption Key) ile şifrelenir
  • FVEK de VMK (Volume Master Key) ile şifrelenir ve şifreli verilerle birlikte diskte saklanır
    • Bu yapı sayesinde tüm diski yeniden şifrelemeden anahtar rotasyonu yapılabilir
  • VMK, TPM’de saklanır
    • Bu nedenle disk yalnızca ilgili bilgisayarda önyükleme yapıldığında çözülebilir
    • Active Directory’de bir kurtarma mekanizması vardır
  • Zayıf nokta, CPU’nun diskin şifresini çözmek için TPM’den VMK aktarımını istediği andır
    • VMK, TPM ile CPU arasındaki SPI veri yolundan düz metin olarak geçer
    • Bu değer yakalanırsa BitLocker diskinin şifresini çözmek için kullanılabilir

TPM iletişimini yakalamak için kullanılan ekipman

  • Deney ekipmanı DSLogic Plus lojik analizördür
    • 2021’de vergi ve kargo dahil 100 doların altında satın alındı
  • Sinyali kararlı biçimde elde etmek için örnekleme frekansının veri yolu frekansının yaklaşık 3–4 katı olması gerekir
    • Hedef SPI veri yolu 33MHz olduğundan en az 100MHz örnekleme gerekir
    • DSLogic Plus teknik özellikleri 16 kanala kadar 400MHz’den söz etse de gerçek kullanım koşullarında kısıtlamalar vardır
  • DSLogic Plus’ın yakalama yöntemi ve kanal sayısına göre belirgin sınırları vardır
    • Aynı anda yakalanan kanal sayısı arttıkça örnekleme frekansı düşer
    • Akış modu yaklaşık 1 dakika boyunca büyük miktarda veri yakalayabilir, ancak 3 kanalda 100MHz ile sınırlıdır
    • Arabellek modu 400MHz örnekleme yapabilse bile yalnızca birkaç milisaniye çalıştığından bu iş için pratik değildir
  • Daha profesyonel bir seçenek yaklaşık 10 kat pahalı olan Saleae’dir; diğer cihazlar sigrok desteklenen donanım listesinde görülebilir

Kart bağlantısı ve yakalama zamanlaması

  • SPI paylaşımlı bir veri yolu olduğundan küçük TPM pinlerine doğrudan bağlanmak gerekmez
    • Aynı SPI veri yoluna bağlı daha büyük bir bileşen varsa oradan kancalanılabilir
    • Deneyde yakındaki SPI flash tespit edilip kullanıldı
    • Parça üzerinde işaret bulunduğundan veri sayfasını bulup kullanım amacını doğrulamak kolaydı
  • DSLogic ile, örnekleme frekansındaki düşüş nedeniyle SPI hatlarından yalnızca 3’ü yakalandı
    • Önemli hatlar CLK, MOSI ve MISO’dur
  • Eşik voltajı, sinyal voltajının yaklaşık yarısı olarak ayarlanmalıdır
    • Ölçülen sinyal voltajı 3.3V idi; uygun eşik yaklaşık 1.6V idi
  • Aranan VMK, POST aşamasının sonlarında kullanılır
    • Lenovo L13’te açılış logosunun hemen ardından, toplam yaklaşık 25 saniyelik önyüklemenin yaklaşık 14. saniyesindeydi
    • Öncesinde de SPI etkinliği vardır, ancak bunlar çoğunlukla erken önyükleme aşamasındaki okuma ve doğrulamalardır; TPM iletişimi değildir
    • Yakalama önyüklemenin hemen ardından başlatılabilir; gereksiz veriyi azaltmak içinse yaklaşık 7 saniye sonra başlatılabilir

SPI, TIS ve TPM 2.0 yorumlama

  • Yakalanan sinyal SPI, TIS, TPM 2.0 olmak üzere üç katmana ayrılarak yorumlanmalıdır
  • SPI basit bir protokol olduğundan genel lojik analizörlerle de yorumlanabilir
    • Saat sinyali 0’dan 1’e yükseldiği anda veri hattının durumu bit değeri olur
    • Örnekte MOSI 8 saat boyunca 0 olduğundan 0x00, MISO ise yalnızca ilk bit açık olduğundan 0x80 olarak yorumlanır
  • En zor kısım TIS (TPM Interface Specification) idi
    • Çalışan bir kod çözücü bulunamadığı için elle işlendi
    • libsigrok decoders doğru veri yorumlamada başarısız oldu, ancak TPM alışverişinin gerçekleştiği yaklaşık aralığı bulmaya yardımcı oldu
    • Başarısızlığın nedeni yakalamada Chip Select’in olmaması, saatin hatalı olması, bazı baytların eksik olması ya da başka bir sebep olabilir
  • Master’dan slave’e gönderilen istekler tekrarlayan bir desen gösterir
    • Slave, hazır olduğunu bildiren 80 değerini gönderir
    • Master, D4 00 24 başlığını ve TPM baytını gönderir
    • Slave, 01 FF ile okuduğunu doğrular
  • Slave’den master’a giden yanıt, kayıt ayarlarına ve okumalara bağlıdır
    • Örnek çerçeve, D4 00 24 adresinden 1 bayt okuma sonucudur
    • Slave işlemi 80 ile başlatır ve ardından ilgilenilen değer olan 0x80 görünür

TPM2_Unseal yanıtında anahtarı bulmak

  • Anahtarın döndürülmesini isteyen TPM komutu TPM2_Unseal’dır
  • TPM işlemlerini ayırmak için istek çerçevesinden çok MISO hattındaki yanıta odaklanılır
    • Ham SPI verisi 80 00 00 00 01 .. maskesiyle filtrelenir ve yalnızca son joker bayt tutulur
    • TPM işleminin başlangıcı 80 01 veya 80 02 başlığıyla tanımlanır
    • Anahtarı içeren yanıt daha uzun bir kimlik doğrulama yanıtıdır ve 80 02 ile başlar
  • Unseal komutu ile yanıt arasında yaklaşık 10ms gecikme vardı
    • 80 02 başlığı parola oturumunu gösterir ve çoğu isteğin kullandığı düz metin 80 01 başlığından farklıdır
    • Gecikmenin istek kimlik doğrulaması ve yanıt HMAC işlemesi nedeniyle oluştuğu düşünülüyor
  • TPM komutu ve yanıtı, baytlar tek tek yeniden birleştirilerek elde edilir
    • Kod çözme için tpmstream-web aracı kullanıldı
    • Yanıt arabelleğindeki anahtar 5761 ile başlar ve uzunluğu 32 bayttır

Diski bağlama ve arka kapı

  • Çıkarılan anahtar bir dosyaya kaydedildikten sonra BitLocker bölümünü bağlamak için dislocker-fuse’a verilir
  • Örnek komut, anahtar dosyasını oluşturup /dev/sdd3 bölümünü ./mnt/ altına bağlar; ardından dislocker-file yeniden ./mnt2/ altına bağlanır
  • En basit arka kapı, Windows’un sticky keys programını cmd.exe ile üzerine yazma yöntemidir
    • Windows/System32/cmd.exe, Windows/System32/sethc.exe olarak kopyalanır
    • Disk dizüstü bilgisayara geri takılıp önyüklendikten sonra Shift tuşuna 5 kez basıldığında SYSTEM kabuğu elde edilir

Ekipman sınırları ve savunma önlemleri

  • DSLogic’i bu iş için önermek zor
    • Birçok yakalama başarısız oldu ve atılmak zorunda kaldı
    • Veri yolu hızının 3 katı örnekleme, tutarlı bir saat sinyali elde etmek için ancak yeterliydi ve bazı baytlar eksikti
  • Ekipman sınırları nedeniyle protokolü derinlemesine anlamak ve yakalamayı elle yorumlamak çok zaman aldı
    • Ekipmanı işverenin satın aldığı bir durumda profesyonel bir lojik analizör almanın daha iyi olacağı düşünülüyor
  • Ayrı TPM kullanımı, beklentinin aksine sistem güvenliğini artırmaz ve güvenlik yanılsaması yaratabilir
  • İki savunma önlemi vardır
    • fTPM kullanmak
    • Ayrı TPM kullanmak gerekiyorsa BitLocker için PIN veya parola ifadesi ayarlamak
  • Microsoft da daha yüksek düzeyde veri koruması gereken kurumsal alanlar için BitLocker PIN’i veya parola ifadesi ayarlamayı önerir

1 yorum

 
GN⁺ 2023-08-25
Hacker News yorumları
  • Tüm TPM’ler, bu tür aradaki adam saldırılarını engellemek için şifreli oturumları destekler. TPM2_StartAuthSession kullanıp her oturum komutu için şifrelemeyi belirtmek yeterli; BitLocker bunu kullanmadığı için bu ciddi bir başarısızlık. Microsoft’un bunu düzeltmesi gerekiyor.
    Karşılaştırma yapmak gerekirse systemd, TPM ile birlikte LUKS disk şifrelemesi kullanırken şifreli oturumlar kullanıyor: https://github.com/systemd/systemd/commit/acbb504eaf1be51572...

    • Bu düzgün bir aradaki adam saldırısı bile değil, daha çok sadece pasif koklama.
      TPM’i pek bilmediğim için soruyorum: kimliği doğrulanmış oturumlar nasıl çalışıyor, merak ediyorum. İşletim sistemi, gerçek bir aradaki adam saldırısında saldırganın taklit edemeyeceği bir şekilde TPM’e kendi kimliğini nasıl kanıtlıyor? İşletim sistemi tarafında saklanan bir sır ya da anahtar, henüz şifreleme anahtarı olmadığı için diskte düz metin olarak durmak zorunda gibi görünüyor.
      İşletim sistemi bir şekilde TPM’in kimliğini doğrulasa ve diskteki birkaç dosyayı değiştirerek bunun aşılamamasını sağlasa bile, saldırganın aynı rutini bir emülatörde çalıştırmasını neyin engellediğini bilmiyorum. Intel ME veya SGX gibi CPU tarafı güvenli yürütme ortamlarıyla entegre edilmediği sürece bu yaklaşımla gerçek güvenlik elde etmek zor görünüyor; o zaman da zaten TPM’e gerek kalmayabilir.
    • Bu eksikliğin kasıtlı olup olmadığını, öyleyse nedenini merak ediyorum.
    • Kimliği doğrulanmış oturumlar, tamamen entegre bir cihaz değilse pratikte neredeyse işe yaramaz. SRK kimliğini garanti etmenin bir yolu olmadığından aradaki adam saldırısı hâlâ mümkündür.
  • 2021’de yayımlanmış başka bir yazı da var.
    https://arstechnica.com/gadgets/2021/08/how-to-go-from-stole...
    Bazı dizüstü bilgisayar üreticileri, dizüstü açıldığında TPM’i temizleyen bir ayar sunuyor. RAM eklenip eklenemeyeceğini görmek için dizüstünü açtıysanız, BitLocker kurtarma anahtarına erişiminiz olmasını ya da bir yedeğinizin bulunmasını ummalısınız.

    • Kurtarma anahtarının bir kopyasını bir yerlerde saklamak iyi bir alışkanlıktır.
    • Muhtemelen basit bir kurcalama anahtarı düğmesine dayanıyordur ve arka taraftaki plastiği keserek kolayca aşılabilir. Kasanın tamamına kablo döşenmiş türden sofistike bir düzenek koyduklarını sanmıyorum.
    • Tüketici cihazlarında kasa müdahalesi algılamanın varsayılan olarak açık olduğunu hiç görmedim. Kurumsal hesapla toplu sipariş edilmiş bir ürün olabilir. Bu tür ürünler, BT departmanının istediği ayarlarla sevk edilebilir.
    • Dizüstünün vidalarını söküp içeriye erişmekten mi bahsediyorsun?
      Plastiği keserek de erişmek mümkün olabilir gibi geliyor. Matrix’teki parazit çıkarma sahnesine benzer şekilde.
    • Günümüzde yükseltilebilir RAM’e sahip dizüstü bulmanın zor olması başlı başına bir şaka konusu. Bazı ThinkPad serileri de böyle; oyun dizüstülerinde ise çoğu zaman mümkün olabiliyor.
  • Yeni bir şey yok. Varsayılan ayar PIN istemez, ancak Microsoft belgeleri çeşitli saldırıları açıklıyor ve bunları tamamen engelleyen BitLocker PIN’i ayarını öneriyor. TPM kaba kuvvet denemelerini engellediği için PIN oldukça zayıf olsa da olur.
    Örnek: https://learn.microsoft.com/en-us/windows/security/operating...

    • İlginç şekilde, bildiğim kadarıyla Windows Defender artık varsayılan olarak erişilebilirlik tabanlı yetki yükseltme saldırılarını engelliyor. Behavior:Win32/AccessibilityEscalation
    • TPM’in X sayıda başarısız denemeden sonra anahtar materyalini sileceğini bekliyordum; öyle değil mi?
  • BitLocker’da ve bu tür şifrelemede, şifre çözme anahtarının sistem tarafından otomatik olarak sağlandığı yapıyı hiçbir zaman anlayamadım. Dizüstünün tamamı çalınırsa BitLocker nasıl bir güvenlik sağlıyor? Saldırgan açısından sistem açılıyor ve yalnızca kullanıcı hesabı parolasını istiyor.
    Benim anladığım kadarıyla, sabit diski dizüstünden çıkarıp başka bir sistemde çalıştırmaya kalktığımda verilerimi koruyor gibi. Belki de aptalca olan bu yanlış anlama yüzünden BitLocker’da her zaman elle girilmesi gereken bir parola ayarladım; LUKS’ta da hep böyle yaptım. Tamamen yanlış mı düşünüyorum?

    • Saldırganın oturum açmayı atlatması, sistem belleğinden anahtarı çıkarması ya da fiziksel TPM varsa bu yazıdaki gibi bir saldırı yapması gerekir. Bu, pahalı bir bilgisayarı çalıp hızlıca para kazanmaya çalışan sıradan bir hırsızdan çok daha sofistike bir saldırı olasılığına işaret eder.
      Genelde sürücüyü silip satmaya çalışmaları daha olasıdır; gerçekten soğuk önyükleme saldırısı deneyeceklerini sanmam. Yine de her şey tehdit modeline bağlı. Kişisel olarak, kişisel cihazlarımda tam disk şifrelemesi kullanmamın başlıca nedeni, depolama aygıtını elden çıkarırken fiziksel olarak yok etme ihtiyacını azaltmak.
      Sabit disk arızalansa bile verilerimin yok olduğundan emin olmak için onu gerçekten sökmem gerekmiyor. Cihazım dışarıdayken genellikle uyku modunda olduğundan, biri soğuk önyükleme saldırısı yapacaksa zaten yapabilir.
    • Tamamen yanlış değil, ancak anahtarın dışa aktarılabilir hâle gelmesi riskini gözden kaçırıyor olabilirsin.
      Dediğin gibi şifre çözme anahtarı sisteme otomatik olarak sağlanıyorsa, bu anahtar RAM’dedir ve saldırganın onu dışa aktarıp şifreli diskte yeniden kullanmasına hazır durumdadır. Soğuk önyükleme saldırısı[1], tehdit modeline uyup uymadığını değerlendirmek için hakkında daha fazla okunmaya değer bir saldırı vektörüdür.
      [1] https://en.wikipedia.org/wiki/Cold_boot_attack
    • Windows, doğru hesap parolası girilene kadar kimsenin dosyalara erişememesini sağlamalıdır. Yani bu bilgisayarda disk şifresi çözülür, ama sonrasında Windows erişimi engeller.
    • Tahminimce disk şifrelemesi için parola ayarlamadıysan, o senaryoda koruma yoktur.
  • Anahtar paylaşılan bir veriyolundan geçiyorsa, bu sistemdeki tüm bileşenlerin anahtarı bu lojik analizör kadar kolay yakalayabileceği anlamına mı geliyor? Tedarik zinciri güvenliği kâbusu gibi geliyor

    • Bu tür şifrelemenin amacı, ayrılmış sabit diskleri veri riski olmadan satmayı veya yeniden kullanmayı mümkün kılmaktır
      Herhangi biri dizüstünü başlatıp şifresi çözülmüş sabit diske erişebiliyorsa, önce anahtarı sniff etmenin ne farkı var? Dizüstünü başlatabiliyorsanız zaten nihai çıktıya erişebiliyordunuz
    • Bazı bileşenler arasında paylaşılıyor, ama kesinlikle hepsi arasında değil. Günümüzde genelde SPI veriyoluna yalnızca boot flash, TPM ve veriyolu master'ı olan CPU'nun kendisi bağlı oluyor
  • Birinin dizüstünüzü çaldığı durumda BitLocker'ın sizi korumasını istiyorsanız, zaten parola kullanmanız ve hazırda bekletme değil uyku modunu kapatmanız gerekir

    • Birincisi, bu yazıya kadar tamamen açık değildi. Dizüstü hırsızlığı, tam disk şifrelemenin anlamlı olduğu tehditler arasında fiilen en zayıf[1] sınıflardan biri ve Windows, normal hesap parolası dışında hiçbir şey istememesini güçlü biçimde öne çıkarıyordu
      O halde TPM'in “güvenilir” donanımı şu anda gerçekte ne yapıyor? Boot ölçümleri de sahte gösterilebiliyor mu? Üstelik bu akıl almaz derecede aptalca. Anahtar materyali neden veriyolu üzerinde düz metin olarak dolaşıyor? Anahtar değişim protokolü gibi bir şey de hiç yok
      [1] Burada güvenli silme konusu da geçiyor; o daha da zayıf bir örnek. Ama tam disk şifrelemede soketten çıkarılıp fiziksel olarak imha edilebilen bir EEPROM varsa, o kısım aynı şekilde etkili biçimde çözülmüş olur
  • Ham sinyali 0 ve 1'lere çevirmek için hangi yazılımı kullandıklarını merak ediyorum. Eskiden beri benzer bir projem vardı: 80'lerden kalma kaset teyplerden dijital veri okumak. Teybin .wav dosyasını gayet iyi elde ettim, ama bunu 0 ve 1'lere çevirecek uygun bir araç ya da kütüphane hâlâ bulamadım
    Tabii asıl eğlence 0 ve 1'leri decode etmeye başladıktan sonra olacak. Bitlerin nasıl kodlandığını biliyorum; frekans kaydırmalı anahtarlama[0]. Bilmediğim şey, bunu üzerinde ek işlem yapabileceğim bir bit akışına decode etmek için ne kullanmam gerektiği
    [0] https://en.wikipedia.org/wiki/Frequency-shift_keying

    • Eski FSK teyp decode işlemleri için kayan Goertzel filtresine bakmak iyi olur. Uygulaması kolay bir filtredir; kayan pencere içinde belirli bir frekans bin'inin genliğini çıkarır ve DTMF decode literatüründe sıkça anılır
      Bu tür bir filtre çiftinin çıktısını karşılaştırarak dijital çıktı üretebilirsiniz. Seyrek kayan ayrık Fourier dönüşümü de kullanılabilir, ancak frekans bin'leri arasında enterpolasyon daha zahmetliyken Goertzel filtresi bunu sizin yerinize halleder
    • Bu, dijital sinyal işleme denen geniş bir alan ve özünde modemlerin ya da ses kartlarının analog-dijital dönüştürücülerinin yaptığı iş
      Herhangi bir ham sinyali baytlara çeviren tek bir algoritma ya da yazılım bilmiyorum. Sinyalin hangi modülasyon yöntemini kullandığını anlamanız ve ilgili decoder'ı bulmanız ya da kendiniz yazmanız gerekir. Genelde filtreleme ve çeşitli matematiksel algoritmalar girer, ama temel decode için programlar oldukça kısa ve basit olma eğilimindedir
      Öğrenmesi epey havalı bir beceri, çünkü aynı teknikleri her türlü yerde kullanabilirsiniz. Örneğin biraz DSP öğrendikten sonra kablosuz iletişim, müzik ve ses tasarımı, görüntü ve video işleme alanlarında yapabileceğim çok şey açıldı
    • Yazıya bakınca kolay görünüyor. Saat düşükten yükseğe geçtiğinde veri hattının mevcut seviyesi bit değeridir; başlangıç noktasını bulmak için de bir adet 1 ve yedi adet 0 bulmanız yeterli
    • Pulseview https://github.com/sigrokproject/pulseview ve Sigrok projesinin diğer kısımlarına https://github.com/sigrokproject bakmak yeterli olabilir
      Ya da yazar DSlogic'ten bahsettiğine göre, o lojik analizör üreticisinin yaptığı bu programların bir fork'u da olabilir
    • O dönemin yükleme rutinleri yalnızca DC sıfır geçişi sayısını sayıp X kez geçiş varsa 0'a, Y kez geçiş varsa 1'e çevirir; frekans ya da genlikle ilgilenmez
      Ham sinyal genelde kararlı kenarlar için histerezis uygulamak üzere Schmitt trigger'a girer. Böylece teyp sinyalinin polaritesi ve motor sapmaları telafi edilir
  • “Ayrı bir fiziksel TPM kullanmak güvenliği fiilen azaltıyor” kısmı ironik
    2015'teki dizüstümde fiziksel TPM yoktu; açmaya çalışınca “Uyumlu TPM olmadan BitLocker'a izin ver (USB flash sürücüde parola veya başlangıç anahtarı gerekir)” diyordu, ben de bunun daha az güvenli olduğunu düşünmüştüm. Zaten BitLocker kullanmadığım için iyi ki öyle olmuş

  • Windows Vista zamanındaki gibi komut isteminin adını erişilebilirlik işleyicisiyle değiştiren ilkokul seviyesi numaranın hâlâ aynen çalışması çok komik
    Oturum açmadan yönetici yetkisiyle çalıştırılan bir şey varsa Windows'un kimlik doğrulaması yapacağını hayal ediyorsunuz, ama Windows'un %75'i güvenlik tiyatrosu, kalan %25'i de başka tür bir tiyatro gibi görünüyor

  • Aynı teknik 2021'de açıklanmıştı:
    https://dolosgroup.io/blog/2021/7/9/from-stolen-laptop-to-in...