SPI
AWS Hacking'i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking'i öğrenin ve pratik yapın:
HackTricks Training GCP Red Team Expert (GRTE)
Temel Bilgiler
SPI (Seri Peripheral Arayüzü), entegre devreler (IC'ler) arasında kısa mesafeli iletişim için gömülü sistemlerde kullanılan Senkron Seri İletişim Protokolüdür. SPI İletişim Protokolü, Saat ve Çip Seçim Sinyali tarafından yönetilen master-slave mimarisini kullanır. Bir master-slave mimarisi, EEPROM, sensörler, kontrol cihazları gibi harici çevre birimlerini yöneten bir master (genellikle bir mikroişlemci) içerir ve bunlar köle olarak kabul edilir.
Bir master'a birden fazla köle bağlanabilir, ancak köleler birbirleriyle iletişim kuramaz. Köleler, saat ve çip seçimi olmak üzere iki pin ile yönetilir. SPI senkron bir iletişim protokolü olduğundan, giriş ve çıkış pinleri saat sinyallerini takip eder. Çip seçimi, master tarafından bir köleyi seçmek ve onunla etkileşimde bulunmak için kullanılır. Çip seçimi yüksek olduğunda, köle cihaz seçilmezken, düşük olduğunda çip seçilmiş olur ve master köle ile etkileşimde bulunur.
MOSI (Master Out, Slave In) ve MISO (Master In, Slave Out) veri gönderme ve alma işlemlerinden sorumludur. Veri, MOSI pininden köle cihaza gönderilirken çip seçimi düşük tutulur. Giriş verisi, köle cihaz tedarikçisinin veri sayfasına göre talimatlar, bellek adresleri veya veriler içerir. Geçerli bir girişte, MISO pini veriyi master'a iletmekten sorumludur. Çıkış verisi, giriş sona erdikten sonra bir sonraki saat döngüsünde tam olarak gönderilir. MISO pinleri, veri tamamen iletilene kadar veya master çip seçimi pinini yüksek ayarlayana kadar veri iletmeye devam eder (bu durumda, köle iletmeyi durdurur ve master o saat döngüsünden sonra dinlemez).
EEPROM'lerden Firmware Dökümü
Firmware dökümü, firmware'i analiz etmek ve içindeki zayıflıkları bulmak için yararlı olabilir. Çoğu zaman, firmware internette mevcut değildir veya model numarası, versiyon gibi faktörlerin varyasyonları nedeniyle alakasızdır. Bu nedenle, tehditleri avlarken spesifik olmak için firmware'i doğrudan fiziksel cihazdan çıkarmak faydalı olabilir.
Seri Konsol almak faydalı olabilir, ancak çoğu zaman dosyaların yalnızca okunabilir olduğu durumlarla karşılaşılır. Bu, çeşitli nedenlerden dolayı analizi kısıtlar. Örneğin, paketleri göndermek ve almak için gereken araçlar firmware'de bulunmayabilir. Bu nedenle, ikili dosyaları tersine mühendislik yapmak için çıkarmak mümkün değildir. Bu nedenle, sistemde tüm firmware'in dökülmesi ve analiz için ikili dosyaların çıkarılması çok faydalı olabilir.
Ayrıca, kırmızı takım çalışması sırasında cihazlara fiziksel erişim sağlarken, firmware dökümü dosyaları değiştirmek veya kötü niyetli dosyalar eklemek ve ardından bunları belleğe yeniden yüklemek için yardımcı olabilir; bu da cihazda bir arka kapı yerleştirmek için faydalı olabilir. Bu nedenle, firmware dökümü ile açılabilecek birçok olasılık vardır.
CH341A EEPROM Programlayıcı ve Okuyucu
Bu cihaz, EEPROM'lerden firmware dökmek ve bunları firmware dosyaları ile yeniden yüklemek için uygun fiyatlı bir araçtır. Bilgisayar BIOS yongaları (sadece EEPROM'lar) ile çalışmak için popüler bir seçim olmuştur. Bu cihaz USB üzerinden bağlanır ve başlamak için minimum araç gerektirir. Ayrıca, genellikle işi hızlı bir şekilde halleder, bu nedenle fiziksel cihaz erişiminde de faydalı olabilir.
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F2815339644-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FKXYG6TIGtXXE4WZnfup9%252Fuploads%252Fgit-blob-a94b5e261fd76e09ad2bdb85724cda88794f2e28%252Fboard_image_ch341a.jpg%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=4c5571fd&sv=1)
EEPROM belleği CH341a Programlayıcı ile bağlayın ve cihazı bilgisayara takın. Cihaz algılanmıyorsa, bilgisayara sürücü yüklemeyi deneyin. Ayrıca, EEPROM'un doğru yönde bağlandığından emin olun (genellikle, VCC Pin'ini USB konektörüne ters yönde yerleştirin), aksi takdirde yazılım çipi algılayamaz. Gerekirse diyagrama bakın:
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F2815339644-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FKXYG6TIGtXXE4WZnfup9%252Fuploads%252Fgit-blob-af83dc8df2efdf74b306f0dd661a4544c66f24a2%252Fconnect_wires_ch341a.jpg%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=c231174f&sv=1)
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F2815339644-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FKXYG6TIGtXXE4WZnfup9%252Fuploads%252Fgit-blob-bafabc3e513cc9d1020efb4ecff2a26611186814%252Feeprom_plugged_ch341a.jpg%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=7db566b8&sv=1)
Son olarak, firmware'i dökmek için flashrom, G-Flash (GUI) gibi yazılımlar kullanın. G-Flash, hızlı ve EEPROM'u otomatik olarak algılayan minimal bir GUI aracıdır. Bu, firmware'in hızlı bir şekilde çıkarılması gerektiğinde, belgelerle fazla uğraşmadan faydalı olabilir.
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F2815339644-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FKXYG6TIGtXXE4WZnfup9%252Fuploads%252Fgit-blob-8512ce3f46cf9627226d175cb25551ecce169d47%252Fconnected_status_ch341a.jpg%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=383cc634&sv=1)
Firmware döküldükten sonra, analiz ikili dosyalar üzerinde yapılabilir. Strings, hexdump, xxd, binwalk gibi araçlar, firmware hakkında ve tüm dosya sistemi hakkında çok fazla bilgi çıkarmak için kullanılabilir.
Firmware'den içerik çıkarmak için binwalk kullanılabilir. Binwalk, hex imzalarını analiz eder ve ikili dosyadaki dosyaları tanımlar ve bunları çıkarmak için yeteneklidir.
Bu, kullanılan araçlar ve yapılandırmalara göre .bin veya .rom olabilir.
Firmware çıkarımının hassas bir süreç olduğunu ve çok fazla sabır gerektirdiğini unutmayın. Herhangi bir yanlış işlem, firmware'i bozabilir veya tamamen silip cihazı kullanılamaz hale getirebilir. Firmware'i çıkarmaya çalışmadan önce belirli cihazı incelemeniz önerilir.
Bus Pirate + flashrom
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F2815339644-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FKXYG6TIGtXXE4WZnfup9%252Fuploads%252Fgit-blob-e1f6894bd8be9375a5805d24090530aca0aeaa4a%252Fimage%2520%28910%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=f90e26c5&sv=1)
Pirate Bus'un PINOUT'u MOSI ve MISO için SPI'ye bağlanacak pinleri gösterse de, bazı SPIs pinleri DI ve DO olarak gösterebilir. MOSI -> DI, MISO -> DO
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F2815339644-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FKXYG6TIGtXXE4WZnfup9%252Fuploads%252Fgit-blob-8b033a5a5e41a2f6a356feaa7b2fd48352e91ce2%252Fimage%2520%28360%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=a771c605&sv=1)
Windows veya Linux'ta, flash bellek içeriğini dökmek için flashrom
programını kullanabilirsiniz, şöyle bir şey çalıştırarak:
AWS Hacking'i öğrenin ve pratik yapın:HackTricks Eğitim AWS Kırmızı Takım Uzmanı (ARTE)
GCP Hacking'i öğrenin ve pratik yapın:
HackTricks Eğitim GCP Kırmızı Takım Uzmanı (GRTE)
Last updated