Aigo kendi kendini şifreleyen harici HDD sürücüsünü tersine çevirme ve hackleme. Bölüm 1: Parçalara ayırma

Kendi kendini şifreleyen harici sürücüleri tersine çevirmek ve hacklemek benim eski hobimdir. Geçmişte Zalman VE-400, Zalman ZM-SHE500, Zalman ZM-VE500 gibi modellerle pratik yapma fırsatım olmuştu. Kısa süre önce bir meslektaşım bana başka bir sergi getirdi: Tipik bir tasarıma göre inşa edilmiş Patriot (Aigo) SK8671 - bir LCD göstergesi ve PIN kodunu girmek için bir klavye. Bundan çıkan da buydu…

1. Giriş
2. Donanım mimarisi
– 2.1. Ana kart
– 2.2. LCD gösterge panosu
– 2.3. Klavye panosu
– 2.4. Tellere bakmak
3. Saldırı adımlarının sırası
– 3.1. SPI flash sürücüsünden veri dökümü alma
– 3.2. İletişimleri koklama

Aigo kendi kendini şifreleyen harici HDD sürücüsünü tersine çevirme ve hackleme. Bölüm 1: Parçalara ayırma


1. Giriş

Aigo kendi kendini şifreleyen harici HDD sürücüsünü tersine çevirme ve hackleme. Bölüm 1: Parçalara ayırma
konut

Aigo kendi kendini şifreleyen harici HDD sürücüsünü tersine çevirme ve hackleme. Bölüm 1: Parçalara ayırma
Paketleme

Şifrelenmiş olduğu iddia edilen diskte saklanan verilere erişim, PIN kodunun girilmesinden sonra gerçekleştirilir. Bu cihazla ilgili birkaç giriş notu:

  • PIN kodunu değiştirmek için kilidi açmadan önce F1 tuşuna basmalısınız;
  • PIN kodu 6 ile 9 arasında rakam içermelidir;
  • 15 hatalı denemeden sonra disk temizlenir.

2. Donanım mimarisi

Öncelikle cihazı hangi bileşenlerden oluştuğunu anlamak için parçalara ayırıyoruz. En sıkıcı görev kasayı açmaktır: çok sayıda mikroskobik vida ve plastik. Kasayı açtıktan sonra şunu görüyoruz (lehimlediğim beş pinli konnektöre dikkat edin):

Aigo kendi kendini şifreleyen harici HDD sürücüsünü tersine çevirme ve hackleme. Bölüm 1: Parçalara ayırma

2.1. Ana kart

Ana kart oldukça basittir:

Aigo kendi kendini şifreleyen harici HDD sürücüsünü tersine çevirme ve hackleme. Bölüm 1: Parçalara ayırma

En dikkat çekici kısımları (yukarıdan aşağıya bakın):

  • LCD göstergesi için konnektör (CN1);
  • Tweeter (SP1);
  • PM25LD010 (Şartname) SPI flash sürücü (U2);
  • Jmicron JMS539 denetleyici (Şartname) USB-SATA (U1) için;
  • USB 3 konektörü (J1).

SPI flash sürücüsü, JMS539'un donanım yazılımını ve bazı ayarları saklar.

2.2. LCD gösterge panosu

LCD panelde dikkat çekici hiçbir şey yok.

Aigo kendi kendini şifreleyen harici HDD sürücüsünü tersine çevirme ve hackleme. Bölüm 1: Parçalara ayırma
Aigo kendi kendini şifreleyen harici HDD sürücüsünü tersine çevirme ve hackleme. Bölüm 1: Parçalara ayırma

Sadece:

  • Kaynağı bilinmeyen LCD göstergesi (muhtemelen Çince yazı tipi seti ile); sıralı kontrol ile;
  • Klavye kartı için şerit konektörü.

2.3. Klavye panosu

Klavye tahtasını incelerken işler daha ilginç bir hal alıyor.

Aigo kendi kendini şifreleyen harici HDD sürücüsünü tersine çevirme ve hackleme. Bölüm 1: Parçalara ayırma

Burada arka tarafta bir şerit konnektörün yanı sıra Cypress CY8C21434 mikrodenetleyici PSoC 1'i görüyoruz (bundan sonra buna sadece PSoC diyeceğiz)

Aigo kendi kendini şifreleyen harici HDD sürücüsünü tersine çevirme ve hackleme. Bölüm 1: Parçalara ayırma

CY8C21434, M8C komut setini kullanır (bkz. belgeleme). [Ürün sayfasında]( (http://www.cypress.com/part/cy8c21434-24ltxi) teknolojiyi desteklediği belirtilmektedir CapSense (Kapasitif klavyeler için Cypress'ten çözüm). Burada lehimlediğim beş pimli konektörü görebilirsiniz - bu, harici bir programlayıcıyı ISSP arayüzü aracılığıyla bağlamak için standart bir yaklaşımdır.

2.4. Tellere bakmak

Burada neyin bağlantılı olduğunu bulalım. Bunu yapmak için kabloları bir multimetre ile test etmeniz yeterlidir:

Aigo kendi kendini şifreleyen harici HDD sürücüsünü tersine çevirme ve hackleme. Bölüm 1: Parçalara ayırma

Diz üzerine çizilen bu şemaya ilişkin açıklamalar:

  • PSoC teknik spesifikasyonda açıklanmıştır;
  • bir sonraki bağlayıcı, sağdaki, kaderin iradesiyle internette kendisi hakkında yazılanlara karşılık gelen ISSP arayüzüdür;
  • En sağdaki konektör, klavye kartına giden şerit konektörünün terminalidir;
  • Siyah dikdörtgen, ana kartı LCD kartına bağlamak için tasarlanmış CN1 konektörünün çizimidir. P11, P13 ve P4, LCD kartındaki 11, 13 ve 4 numaralı PSoC pinlerine bağlanır.

3. Saldırı adımlarının sırası

Artık bu sürücünün hangi bileşenlerden oluştuğunu bildiğimize göre şunları yapmamız gerekiyor: 1) temel şifreleme işlevinin gerçekten mevcut olduğundan emin olmak; 2) şifreleme anahtarlarının nasıl oluşturulduğunu/kaydedildiğini öğrenin; 3) PIN kodunun tam olarak nerede kontrol edileceğini bulun.

Bunu yapmak için aşağıdaki adımları yaptım:

  • bir SPI flash sürücüsünden veri dökümü aldı;
  • PSoC flash sürücüsünden veri aktarmaya çalıştı;
  • Cypress PSoC ile JMS539 arasındaki iletişimin gerçekten tuş vuruşlarını içerdiği doğrulandı;
  • Parolayı değiştirirken SPI flash sürücüsünde hiçbir şeyin üzerine yazılmadığından emin oldum;
  • 8051 donanım yazılımını JMS539'dan tersine çeviremeyecek kadar tembeldi.

3.1. SPI flash sürücüsünden veri dökümü alma

Bu prosedür çok basittir:

  • probları flash sürücünün bacaklarına bağlayın: CLK, MOSI, MISO ve (isteğe bağlı) EN;
  • Bir mantık analizörü kullanarak bir algılayıcı ile iletişimi “koklayın” (kullandım Saleae Logic Pro 16);
  • SPI protokolünün kodunu çözün ve sonuçları CSV'ye aktarın;
  • yararlanmak decode_spi.rbsonuçları ayrıştırmak ve dökümü almak için.

Lütfen bu yaklaşımın özellikle JMS539 denetleyicisi durumunda işe yaradığını unutmayın; çünkü bu denetleyici, başlatma aşamasında flash sürücüdeki tüm aygıt yazılımını yükler.

$ decode_spi.rb boot_spi1.csv dump
0.039776 : WRITE DISABLE
0.039777 : JEDEC READ ID
0.039784 : ID 0x7f 0x9d 0x21
---------------------
0.039788 : READ @ 0x0
0x12,0x42,0x00,0xd3,0x22,0x00,
[...]
$ ls --size --block-size=1 dump
49152 dump
$ sha1sum dump
3d9db0dde7b4aadd2b7705a46b5d04e1a1f3b125 dump

SPI flash sürücüsünden bir döküm aldıktan sonra, tek görevinin 8051 mikro denetleyiciye yerleşik JMicron kontrol cihazının donanım yazılımını depolamak olduğu sonucuna vardım. Ne yazık ki, SPI flash sürücüsünün dökümünü almanın faydasız olduğu ortaya çıktı:

  • PIN kodu değiştirildiğinde flash sürücü dökümü aynı kalır;
  • Başlatma aşamasından sonra cihaz SPI flash sürücüsüne erişmez.

3.2. İletişimleri koklama

Bu, ilgilenilen zaman/içerik için iletişimleri kontrol etmekten hangi çipin sorumlu olduğunu bulmanın bir yoludur. Zaten bildiğimiz gibi, USB-SATA denetleyicisi Cypress PSoC LCD'ye CN1 konektörü ve iki şerit aracılığıyla bağlanır. Bu nedenle probları karşılık gelen üç ayağa bağlarız:

  • P4, genel giriş/çıkış;
  • P11, I2C SCL;
  • P13, I2C SDA.

Aigo kendi kendini şifreleyen harici HDD sürücüsünü tersine çevirme ve hackleme. Bölüm 1: Parçalara ayırma

Daha sonra Saleae mantık analizörünü başlatıyoruz ve klavyeye şunu giriyoruz: “123456~”. Sonuç olarak aşağıdaki diyagramı görüyoruz.

Aigo kendi kendini şifreleyen harici HDD sürücüsünü tersine çevirme ve hackleme. Bölüm 1: Parçalara ayırma

Üzerinde üç veri değişim kanalı görebiliriz:

  • P4 kanalında birkaç kısa patlama var;
  • P11 ve P13'te - neredeyse sürekli veri alışverişi.

P4 kanalındaki ilk yükselişe (önceki şekildeki mavi dikdörtgen) yakınlaştırıldığında aşağıdakileri görüyoruz:

Aigo kendi kendini şifreleyen harici HDD sürücüsünü tersine çevirme ve hackleme. Bölüm 1: Parçalara ayırma

Burada P4'te neredeyse 70 ms'lik monoton bir sinyalin olduğunu görüyorsunuz, bu ilk başta bana bir saat sinyali rolü oynuyormuş gibi geldi. Ancak tahminimi kontrol etmek için biraz zaman harcadıktan sonra bunun bir saat sinyali olmadığını, tuşlara basıldığında tweeter'a gönderilen bir ses akışı olduğunu keşfettim. Bu nedenle sinyalin bu bölümü bizim için yararlı bilgiler içermiyor. Ancak PSoC'nin bir tuşa basıldığını ne zaman kaydettiğini bilmek için bir gösterge olarak kullanılabilir.

Ancak en son P4 ses akışı biraz farklı: "geçersiz PIN"in sesi!

Tuş vuruşu grafiğine döndüğümüzde, son ses akışı grafiğini yakınlaştırdığımızda (tekrar mavi dikdörtgene bakın), şunu elde ederiz:

Aigo kendi kendini şifreleyen harici HDD sürücüsünü tersine çevirme ve hackleme. Bölüm 1: Parçalara ayırma

Burada P11'de monoton sinyaller görüyoruz. Yani bu saat sinyali gibi görünüyor. Ve P13 veridir. Bip sesi bittikten sonra desenin nasıl değiştiğine dikkat edin. Burada neler olacağını görmek ilginç olurdu.

İki kabloyla çalışan protokoller genellikle SPI veya I2C'dir ve Cypress'in teknik özelliklerinde bu pinlerin I2C'ye karşılık geldiği belirtilmektedir ki bizim durumumuzda bunun doğru olduğunu görüyoruz:

Aigo kendi kendini şifreleyen harici HDD sürücüsünü tersine çevirme ve hackleme. Bölüm 1: Parçalara ayırma

USB-SATA yonga seti, varsayılan olarak “0” olan anahtarın durumunu okumak için sürekli olarak PSoC'yi yoklar. Daha sonra "1" tuşuna bastığınızda "1" olarak değişir. Yanlış PIN kodu girilirse, “~” tuşuna bastıktan hemen sonra yapılan son iletim farklıdır. Ancak şu anda orada gerçekte neyin iletildiğini kontrol etmedim. Ancak bunun bir şifreleme anahtarı olma ihtimalinin düşük olduğundan şüpheleniyorum. Her neyse, PSoC dahili donanım yazılımını nasıl kaldırdığımı anlamak için bir sonraki bölüme bakın.

Kaynak: habr.com

Yorum ekle