CM3 ciplere atak toollari

Başlatan z, 20 Haziran 2014, 03:39:48

z

Elinizde tum korumalari aktif hale getirilmis CM3 islemcili bir kart var.

Bilinen tekniklerle (JTAG, SWD, PFU kodlari vs) cip okunamiyor ve icine casus kod yerlestirilemiyor.

Cipin icindeki kodlari ele gecirmek amaciyla cipin kapagini acip yariiletkene fiziksel mudahale disinda hangi atak teknikleri, hangi donanimlar ve hangi yazilimlar kullaniliyor?
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

kimlenbu

Hocam özellikle cortex m3 için değil ama kod çalmak için kullanılan genel metodları anlatan bir döküman :

http://www.cl.cam.ac.uk/~sps32/ECRYPT2011_1.pdf

Takip ettiğim kadarıyla baya uğraştınız kodu korumak için. Muhtemelen güncelleme özelliği olan bir cihaz olacak, benim atağım kriptolu kodlarınıza saldırmak olurdu. hex dosyasını şifreleyerek gönderiyorsunuzdur muhtemelen, yalnız hex dosyasında opcode'lar olduğu için kriptolu veride kendisini tekrarlayan bloklar var mı kontrol ederdim, amacım kriptolama algoritmanızdaki açıkları bilinen opcode'lar üzerinden kırmaya çalışmak olurdu özetle :)

kolay gelsin.

minicihazlar

CortexM3/4 için flash içeriğini tüm korumalar açıkken bile okumanın bir yöntem var gibi. Bazı Rus sitelerinde birkaç değişik üreticinin tüm korumaları açık olan işlemcilerindeki kodu okumayı başarmışlar. Kullandıkları yöntem aslında çok da karışık değil. Öncelikle dahili bootloader ile sistem hafızasına bir kod yüklüyorlar. Bu kod FPB'yi (Flash Patch and Breakpoint Unit) kullanarak reset vektör adresini ram'deki kendi adresine yönlendiriyor ve sw reset ile sistemi yeniden başlatıyor. Böylece kendi kodu çalıştığı için ram'den flash içeriğini istediği bir arabirimden dışarı iletebiliyorlar. Bunu başarılı bir şekilde uygulamışlar. Ben de nasıl yaptıklarını araştırıyorum şu sıralar. "http://www.doulos.com/knowhow/arm/Cortex-M_FPB/Resources/Presentation/Using_the_Cortex-M3_FPB_gui.swf" adresinde FPB ile ilgili güzel bir sunum var. Daha ayrıntılı bilgiler ARM'ın sitesinde ve CortexM3/4 core dokümantasyonlarında mevcut.

z

Eger bir pislik cikarsa dahili bootloaderdan cikacagindan emindim.

Yalniz sunu anlamadim. Dahili bootloader art niyetsiz olarak yazildiysa;

Nasil olur da korumalalari aktif bir cipin ramina kod yuklemeye izin verir?

Bana e^st de diyebilirsiniz.   www.cncdesigner.com

AsHeS

Alıntı yapılan: z - 11 Temmuz 2014, 02:03:37
Eger bir pislik cikarsa dahili bootloaderdan cikacagindan emindim.

Yalniz sunu anlamadim. Dahili bootloader art niyetsiz olarak yazildiysa;

Nasil olur da korumalalari aktif bir cipin ramina kod yuklemeye izin verir?


Son güvenlik seviyesinde dahili bootloaderlar da uçuyor. Kendinizin bir tane yazması lazım.

z

@AsHeS

Hangi çip için geçerli bu? Bu güne kadar 32F103Cx ailesinde böyle bir özellik olduğuna dair bir açıklama göremedim.

Keşke bootloaderı silmenin bir yolunu bulsam da kafam rahatlasa.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

AsHeS

Alıntı yapılan: z - 11 Temmuz 2014, 13:09:21
@AsHeS

Hangi çip için geçerli bu? Bu güne kadar 32F103Cx ailesinde böyle bir özellik olduğuna dair bir açıklama göremedim.

Keşke bootloaderı silmenin bir yolunu bulsam da kafam rahatlasa.
İlgili aileyi bilmiyorum ama diğerleri için X-Fi'nin yalancısıyım :)
Alıntı yapılan: X-Fi - 19 Haziran 2014, 16:06:32
Hocam level seviyeleri şöyle

Level_0;   Koruma yok herşey aktif.
Level_1;   Çipdeki kod okunamaz ancak üzerine yeni yazılım yüklenebilir. SWD,JTAG, Boot0 pinleri ve DFU Aktif. Dahili bootloaderlar yardımıyla veya ST-link debugger cihazı yardımıyla korumayı kaldırma imkanı var.
Level_2;   Kod okuma ya da üzerine yazma kapalıdır ve bu durum artık değiştirilemez. SWD,JTAG erişimi birdaha kullanılamaz.Debug yapılamaz. Ayrıca 0x1FFF0000 adresinden başlayan yerleşik bootloader yazılımı silinir. Buda artık DFU ve usart bootloader çalışmayacak anlamına gelir.

Ancak level_2 için benim kullandığım şöyle bir durum var. Flash yazma erişimi işlemi içerdeki kod tarafından sağlanabilir. İşlemciye bootloaderlı bir yazılım yapar yüklerseniz kendi interfacesiniz üzerinden programı alıp yükleyip koşturabiliyorsunuz.



ErsinErce

#7
Aşağıdaki döküman ve sayfalarda dediğine göre RDP aktif iken RAM'e program atıp çalıştırsanız bile flashı okuyamıyormuşsunuz.
RAM'e program atıp flashın boş bir kısmına program yazdırıp oradan içerideki programa erişme gibi konulardan da bahsedilmiş.
içerik için biraz detaya inmek lazım, anca akşama konunun devamına katılabilirim


STM32 proprietary code protection overview
http://www.st.com/st-web-ui/static/active/en/resource/technical/document/application_note/DM00033344.pdf

STM32F10xxx Programming Manual
http://www.st.com/st-web-ui/static/active/en/resource/technical/document/programming_manual/CD00283419.pdf

http://www.st.com/st-web-ui/static/active/en/resource/technical/document/application_note/CD00167594.pdf
sf: 20 & 123

Proprietary Code Read Out Protection on STM32L1 microcontrollers
http://www.st.com/st-web-ui/static/active/en/resource/technical/document/application_note/DM00075930.pdf

ST Forum

stm32 RDP ROP

z

Daha önce sordummu sorduysam cevap verilmişmiydi hatırlamıyorum.

STM32F serisi çiplerin içindeki bootloaderın açık kodları yayınlanmışmıydı?

Disasm ile geri elde edeyim diyorum ama varsa boş yere uğraşmış olacağım.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

AsHeS

Write ve Read Protection yapılmış Çip'te içeriden flasha ulaşabiliyor muyuz ?
Ya da dahili bootloaderlar iki korumada açıkken SRAM'e kod yazabiliyor mu ?


z

#10
32F10x de flashdaki kod protection olsa bile kendisi istediği gibi okuyabiliyor.

32LF, 32F4 vs diğer serisinde buna engel olmuşlar. Sen bile kod yazmış olsan flashı kendi koduna okutturmayabiliyorsun. (Bu da programda adreslemeye daha doğrusu kullanacağın asm komutlara sınır getiriyor)

Dahili bootloder da içeride neler olup bitiyor bakacağız. Gerekiyorsa ST yi rezil edeceğiz.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

speak48

#11
st bootloader i hazırmı veriyor

bi de bu korumaya çalıştığınız ney
kaç aydır
acaba koruma için yaptığınız çalışma ,korunan şeyi yapmaktan daha fazlamı oldu ne

X-Fi

Alıntı yapılan: z - 11 Temmuz 2014, 17:30:27
Sen bile kod yazmış olsan flashı kendi koduna okutturmayabiliyorsun.

Hocam böyle birşey yok eğer olsaydı const dizi, pointer gibi yapılardan bahsedemezdik ve kodumuz çalışmazdı.

Olayın içine girmezseniz koruma işine hakim olmak zordur forumdan yazdıklarımızda havada kalıyor.
http://www.coskunergan.dev/    (Yürümekle varılmaz, lakin varanlar yürüyenlerdir.)

z

#13
@X-Fi

Var hocam var.

Bahsettiğin durumlar için (yani kendi koduna da okuma yasağı getirdiğinde) ASM adreslemede PC relatif adresleme yapılamıyor bunun yerine  immediate adresleme ile okuma yapılıyor. Kodun çalışması ve kapladığı yer artıyor ama güvenliği de sağlıyor. (C de pointer erişimi yapamayacaksın ama array verilerini kod şeklinde yazabilirsin. Belki keil bunu senin için yazıyordur)

Bu korumanın adı IP code Read Out Protection - Proprietary Code Read Out Protection. ASM komutla bile sen flashı okuyamıyorsun fakat instruction decoder kodu yorumlamak için okuyabiliyor.


Keilde bununla ilgili bir çentik var. Akşam gidince yazayım.

mesaj birleştirme:: 11 Temmuz 2014, 16:35:27

Alıntı yapılan: speak48 - 11 Temmuz 2014, 17:42:39
st bootloader i hazırmı veriyor

bi de bu korumaya çalıştığınız ney
kaç aydır
acaba koruma için yaptığınız çalışma ,korunan şeyi yapmaktan daha fazlamı oldu ne

Sayfamda Bukalemun başlığına gözatarsan gizliliğin neden gerektiğini anlayacaksın.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

speak48

hocam hedef kitleniz picprojedeki hobi elektronikçilermi .
yoksa bu sayfa nihayi ürün değilde  deneme ürünlerimi .