- 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_Unsealyanıt arabelleğinde5761ile başlayan 32 baytlık anahtar bulunuyor - Çıkarılan anahtarla
dislocker-fusekullanılarak BitLocker bölümü bağlanıyor;sethc.exe,cmd.exeile 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ğundan0x80olarak 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
80değerini gönderir - Master,
D4 00 24başlığını ve TPM baytını gönderir - Slave,
01 FFile okuduğunu doğrular
- Slave, hazır olduğunu bildiren
- Slave’den master’a giden yanıt, kayıt ayarlarına ve okumalara bağlıdır
- Örnek çerçeve,
D4 00 24adresinden 1 bayt okuma sonucudur - Slave işlemi
80ile başlatır ve ardından ilgilenilen değer olan0x80görünür
- Örnek çerçeve,
TPM2_Unseal yanıtında anahtarı bulmak
- Anahtarın döndürülmesini isteyen TPM komutu TPM2_Unseal’dır
- Bu komut TPM 2.0 specification part 3 içinde tanımlanmıştı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 01veya80 02başlığıyla tanımlanır - Anahtarı içeren yanıt daha uzun bir kimlik doğrulama yanıtıdır ve
80 02ile başlar
- Ham SPI verisi
- Unseal komutu ile yanıt arasında yaklaşık 10ms gecikme vardı
80 02başlığı parola oturumunu gösterir ve çoğu isteğin kullandığı düz metin80 01baş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
5761ile 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/sdd3bölümünü./mnt/altına bağlar; ardındandislocker-fileyeniden./mnt2/altına bağlanır - En basit arka kapı, Windows’un sticky keys programını
cmd.exeile üzerine yazma yöntemidirWindows/System32/cmd.exe,Windows/System32/sethc.exeolarak 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
Hacker News yorumları
Tüm TPM’ler, bu tür aradaki adam saldırılarını engellemek için şifreli oturumları destekler.
TPM2_StartAuthSessionkullanı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...
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.
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.
Plastiği keserek de erişmek mümkün olabilir gibi geliyor. Matrix’teki parazit çıkarma sahnesine benzer şekilde.
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...
Behavior:Win32/AccessibilityEscalationBitLocker’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?
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.
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
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
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
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
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
.wavdosyasını gayet iyi elde ettim, ama bunu 0 ve 1'lere çevirecek uygun bir araç ya da kütüphane hâlâ bulamadımTabii 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
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
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ı
Ya da yazar DSlogic'ten bahsettiğine göre, o lojik analizör üreticisinin yaptığı bu programların bir fork'u da olabilir
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...