ProHoster > ΠΠ»ΠΎΠ³ > Kev tswj hwm > Rov qab thiab nyiag Aigo tus kheej-encrypting sab nraud HDD tsav. Ntu 2: Siv lub pob pov tseg los ntawm Cypress PSoC
Rov qab thiab nyiag Aigo tus kheej-encrypting sab nraud HDD tsav. Ntu 2: Siv lub pob pov tseg los ntawm Cypress PSoC
Qhov no yog qhov thib ob thiab zaum kawg ntawm tsab xov xwm hais txog kev nyiag nkas sab nraud tus kheej-encrypting drives. Cia kuv ceeb toom rau koj tias ib tug npoj yaig tsis ntev los no coj kuv lub Patriot (Aigo) SK8671 hard drive, thiab kuv txiav txim siab thim rov qab, thiab tam sim no kuv tab tom qhia dab tsi tawm ntawm nws. Ua ntej nyeem ntxiv, nco ntsoov nyeem thawj ntu lus.
"Kev sib txuas lus" nrog lub microcontroller tuaj yeem txhais tau ntau yam: los ntawm "tus neeg muag khoom mus rau tus neeg muag khoom" mus rau kev sib cuam tshuam siv cov txheej txheem serial (piv txwv li, ICSP rau Microchip's PIC).
Cypress muaj nws tus kheej cov txheej txheem rau qhov no, hu ua ISSP (hauv-system serial programming raws tu qauv), uas yog ib feem piav qhia hauv technical specification. Patent US7185162 kuj muab ib co lus qhia. Kuj tseem muaj qhov sib npaug ntawm OpenSource hu ua HSSP (peb yuav siv nws me ntsis tom qab). ISSP ua haujlwm raws li hauv qab no:
reboot PSoC;
tso tawm tus lej khawv koob rau cov ntaub ntawv serial tus pin ntawm PSoC no; nkag mus rau sab nraud programming hom;
xa cov lus txib, uas yog cov hlua me ntsis ntev hu ua "vectors".
Cov ntaub ntawv ISSP txhais cov vectors rau tsuas yog ib qho me me ntawm cov lus txib:
Yog li, siv Arduino, kuv thawj zaug tsuas yog siv cov vectors "official" rau "kev sib txuas lus". Kuv sim nyeem cov ROM sab hauv siv VERIFY hais kom ua. Raws li kev cia siab, kuv ua tsis tau li no. Tej zaum vim qhov tseeb tias nyeem cov khoom tiv thaiv tau qhib rau hauv lub flash drive.
Tom qab ntawd kuv tsim ob peb yam ntawm kuv tus kheej cov vectors yooj yim rau kev sau ntawv thiab nyeem ntawv nco / sau npe. Thov nco ntsoov tias peb tuaj yeem nyeem tag nrho SROM txawm tias lub flash drive tiv thaiv!
5.4. Kev txheeb xyuas ntawm on-chip registers
Tom qab saib cov "disassembled" vectors, kuv pom tias cov cuab yeej siv cov ntawv sau npe tsis muaj ntaub ntawv (0xF8-0xFA) los qhia M8C opcodes, uas raug tua ncaj qha, hla kev tiv thaiv. Qhov no tso cai rau kuv khiav ntau yam opcodes xws li "ADD", "MOV A, X", "PUSH" lossis "JMP". Ua tsaug rau lawv (los ntawm saib cov kev mob tshwm sim uas lawv muaj nyob rau hauv kev sau npe) Kuv muaj peev xwm txiav txim siab seb qhov twg ntawm cov ntawv sau npe tsis muaj ntaub ntawv tau sau npe tsis tu ncua (A, X, SP thiab PC).
Raws li qhov tshwm sim, "disassembled" code tsim los ntawm HSSP_disas.rb cov cuab yeej zoo li qhov no (Kuv ntxiv cov lus qhia kom meej):
Siv cov vector no (saib read_security_data hauv psoc.py), peb tau txais tag nrho cov khoom ruaj ntseg hauv SRAM ntawm 0x80, qhov twg muaj ob qhov kev tiv thaiv thaiv.
Qhov tshwm sim yog kev nyuaj siab: txhua yam muaj kev tiv thaiv nyob rau hauv "lov tes taw kev nyeem ntawv thiab sau ntawv" hom. Yog li ntawd, tsis tsuas yog peb tuaj yeem nyeem tsis tau dab tsi los ntawm flash drive, tab sis peb tsis tuaj yeem sau ib yam dab tsi (piv txwv li, txhawm rau nruab ROM dumper muaj). Thiab tib txoj hauv kev los lov tes taw kev tiv thaiv yog kom tshem tawm tag nrho cov nti. π
6. Thawj (ua tsis tiav) nres: ROMX
Txawm li cas los xij, peb tuaj yeem sim ua kom yuam kev hauv qab no: txij li thaum peb muaj peev xwm ua tiav qhov kev txiav txim siab tsis txaus ntseeg, vim li cas ho tsis ua ROMX, uas yog siv los nyeem flash nco? Txoj kev no muaj txoj hauv kev zoo rau kev vam meej. Vim tias ReadBlock muaj nuj nqi uas nyeem cov ntaub ntawv los ntawm SROM (uas yog siv los ntawm vectors) xyuas seb nws puas raug hu los ntawm ISSP. Txawm li cas los xij, ROMX opcode conceivably yuav tsis muaj xws li daim tshev. Yog li ntawm no yog Python code (tom qab ntxiv ob peb chav pabcuam rau Arduino code):
for i in range(0, 8192):
write_reg(0xF0, i>>8) # A = 0
write_reg(0xF3, i&0xFF) # X = 0
exec_opcodes("x28x30x40") # ROMX, HALT, NOP
byte = read_reg(0xF0) # ROMX reads ROM[A|X] into A
print "%02x" % ord(byte[0]) # print ROM byte
Hmoov tsis qhov no code tsis ua haujlwm. π Los yog nws ua haujlwm, tab sis ntawm cov zis peb tau txais peb tus kheej opcodes (0x28 0x30 0x40)! Kuv tsis xav tias qhov sib txuas ua haujlwm ntawm lub cuab yeej yog ib qho ntawm kev tiv thaiv kev nyeem ntawv. Qhov no zoo li kev ua kom yuam kev engineering: thaum ua cov opcodes sab nraud, ROM tsheb npav raug xa mus rau ib ntus tsis pub dhau.
Cov lej no sau peb cov ntawv txheeb xyuas muaj txiaj ntsig los ntawm kev hu rau Calibrate1 (SROM function 9)... Tej zaum peb tuaj yeem xa tus lej khawv koob (los ntawm qhov pib ntawm tus lej saum toj no) nkag mus rau hom programming, thiab tom qab ntawd nyeem SRAM? Thiab yog, nws ua haujlwm! Arduino code uas siv qhov kev tawm tsam no yooj yim heev:
Cov cai no raug tua 10 zaug hauv 1 microsecond. 0xF1 suav nrog ntawm no vim tias nws tsuas yog kev sau npe uas tau hloov pauv thaum xam cov checksum. Tej zaum nws yog qee yam kev hloov pauv ib ntus siv los ntawm chav ntsuas lej lej. Nco ntsoov tus dab phem hack Kuv siv los rov pib dua Arduino siv picocom thaum Arduino tsis pom cov cim ntawm lub neej (tsis muaj lub tswv yim yog vim li cas).
7.2. Nyeem qhov tshwm sim
Cov txiaj ntsig ntawm Python tsab ntawv zoo li qhov no (simplified rau kev nyeem tau):
Uas tau hais tias, peb muaj ib qho teeb meem: txij li thaum peb tab tom ua haujlwm nrog qhov tseeb checksum, null byte tsis hloov tus nqi nyeem. Txawm li cas los xij, txij li tag nrho cov txheej txheem suav (8192 bytes) siv sijhawm 0,1478 vib nas this (nrog me ntsis kev hloov pauv txhua lub sijhawm nws khiav), uas sib npaug li ntawm 18,04 ΞΌs ib byte, peb tuaj yeem siv lub sijhawm no los kuaj xyuas tus nqi checksum ntawm lub sijhawm tsim nyog. Rau thawj khiav, txhua yam yog nyeem tau yooj yim heev, txij li lub sijhawm ntawm kev suav cov txheej txheem yog ib txwm yuav luag tib yam. Txawm li cas los xij, qhov kawg ntawm qhov pov tseg no tsis tshua muaj tseeb vim tias "me me lub sij hawm sib txawv" ntawm txhua qhov kev sib tw ntxiv los ua qhov tseem ceeb:
134023 D0 02 DD
134023 CC D2 DC
134023 CC D2 DC
134023 CC D2 DC
134023 FB D2 DC
134023 3F D2 DC
134023 CC D2 DC
134024 02 02 DC
134024 CC D2 DC
134024 F9 02 DC
134024 03 02 DD
134024 21 02 DD
134024 02 D2 DC
134024 02 02 DC
134024 02 02 DC
134024 F8 D2 DC
134024 F8 D2 DC
134025 CC D2 DC
134025 EF D2 DC
134025 21 02 DD
134025 F8 D2 DC
134025 21 02 DD
134025 CC D2 DC
134025 04 D2 DC
134025 FB D2 DC
134025 CC D2 DC
134025 FB 02 DD
134026 03 02 DD
134026 21 02 DD
Qhov ntawd yog 10 dumps rau txhua microsecond ncua. Lub sijhawm ua haujlwm tag nrho rau kev pov tseg tag nrho 8192 bytes ntawm lub flash drive yog li 48 teev.
7.3. Flash binary reconstruction
Kuv tseem tsis tau ua tiav kev sau cov lej uas yuav rov tsim kho qhov program code ntawm lub flash drive, suav nrog txhua lub sijhawm sib txawv. Txawm li cas los xij, kuv twb tau rov qab pib qhov chaws no lawm. Txhawm rau kom paub tseeb tias kuv tau ua nws raug, kuv disassembled nws siv m8cdis:
0000: 80 67 jmp 0068h ; Reset vector
[...]
0068: 71 10 or F,010h
006a: 62 e3 87 mov reg[VLT_CR],087h
006d: 70 ef and F,0efh
006f: 41 fe fb and reg[CPU_SCR1],0fbh
0072: 50 80 mov A,080h
0074: 4e swap A,SP
0075: 55 fa 01 mov [0fah],001h
0078: 4f mov X,SP
0079: 5b mov A,X
007a: 01 03 add A,003h
007c: 53 f9 mov [0f9h],A
007e: 55 f8 3a mov [0f8h],03ah
0081: 50 06 mov A,006h
0083: 00 ssc
[...]
0122: 18 pop A
0123: 71 10 or F,010h
0125: 43 e3 10 or reg[VLT_CR],010h
0128: 70 00 and F,000h ; Paging mode changed from 3 to 0
012a: ef 62 jacc 008dh
012c: e0 00 jacc 012dh
012e: 71 10 or F,010h
0130: 62 e0 02 mov reg[OSC_CR0],002h
0133: 70 ef and F,0efh
0135: 62 e2 00 mov reg[INT_VC],000h
0138: 7c 19 30 lcall 1930h
013b: 8f ff jmp 013bh
013d: 50 08 mov A,008h
013f: 7f ret
Zoo heev plausible!
7.4 ib. Nrhiav tus PIN code cia chaw nyob
Tam sim no peb tuaj yeem nyeem cov checksum thaum lub sijhawm peb xav tau, peb tuaj yeem tshawb xyuas seb nws hloov pauv li cas thaum peb:
sau tus lej PIN tsis raug;
hloov tus pin code.
Ua ntej, txhawm rau nrhiav qhov kwv yees qhov chaw nyob, kuv tau muab cov khoom pov tseg hauv 10 ms increments tom qab reboot. Tom qab ntawd kuv nkag mus rau tus PIN tsis raug thiab ua tib yam.
Peb tuaj yeem hla qhov kev tiv thaiv los so los ntawm kev siv lub khau txias khau raj thiab ncaj qha nyeem tus lej PIN.
Txawm li cas los xij, peb qhov kev tawm tsam muaj qee qhov tsis zoo vim muaj teeb meem synchronization. Nws tuaj yeem txhim kho raws li hauv qab no:
sau cov khoom siv kom raug txiav txim siab cov ntaub ntawv tso tawm uas tau txais los ntawm qhov "txias khau raj kab" nres;
siv FPGA gadget los tsim kom meej lub sij hawm ncua sij hawm (los yog siv Arduino hardware timers);
sim lwm qhov kev tawm tsam: nkag mus rau tus lej PIN tsis raug, rov pib dua thiab pov tseg RAM, vam tias tus lej PIN raug yuav raug cawm hauv RAM rau kev sib piv. Txawm li cas los xij, qhov no tsis yooj yim ua rau Arduino, txij li Arduino teeb liab theem yog 5 volts, thaum lub rooj tsavxwm peb tab tom tshuaj xyuas ua haujlwm nrog 3,3 volt signals.
Ib qho nthuav uas tuaj yeem sim yog ua si nrog qib voltage kom hla kev nyeem ntawv tiv thaiv. Yog tias txoj hauv kev no ua haujlwm, peb yuav tuaj yeem tau txais cov ntaub ntawv raug tseeb los ntawm lub flash drive - tsis txhob cia siab rau kev nyeem cov ntawv txheeb xyuas nrog lub sijhawm tsis meej.
Txij li thaum SROM tej zaum nyeem cov khoom tiv thaiv ntawm ReadBlock system hu, peb tuaj yeem ua tib yam li piav ntawm Dmitry Nedospasov's blog - rov ua dua ntawm Chris Gerlinski qhov kev tawm tsam, tshaj tawm ntawm lub rooj sib tham "REcon Brussels 2017".
Lwm qhov kev lom zem uas tuaj yeem ua tau yog zom cov ntaub ntawv los ntawm cov nti: coj SRAM pob tseg, txheeb xyuas qhov tsis muaj ntaub ntawv hu xov tooj thiab qhov tsis zoo.
9. Xaus
Yog li, kev tiv thaiv ntawm tus tsav no tawm ntau yam uas xav tau, vim tias nws siv lub microcontroller tsis tu ncua (tsis yog "hardened") microcontroller los khaws tus lej PIN ... Ntxiv rau, kuv tsis tau saib (tseem) ntawm cov khoom mus nrog cov ntaub ntawv li cas. encryption ntawm lub cuab yeej no!
Koj tuaj yeem pom dab tsi rau Aigo? Tom qab tshuaj xyuas ob peb tus qauv ntawm encrypted HDD drives, hauv 2015 kuv tau ua kev nthuav qhia ntawm SyScan, uas nws tau tshuaj xyuas cov teeb meem kev nyab xeeb ntawm ob peb sab nraud HDD drives, thiab tau txais cov lus pom zoo txog qhov yuav txhim kho hauv lawv. π
Kuv siv ob lub lis piam thiab ob peb yav tsaus ntuj ua qhov kev tshawb fawb no. Tag nrho txog 40 teev. suav txij thaum pib (thaum kuv qhib lub disk) mus rau qhov kawg (PIN code dump). Tib 40 teev suav nrog lub sijhawm kuv siv sau cov lus no. Nws yog ib qho kev lom zem heev.