sabato 28 settembre 2013

Installare Linux "sull'hard disk", letteralmente

Questo tizio di SpritesMods ha installato Linux sul suo hard disk. Letteralmente, cioè sulla piastra elettronica dell'hard disk, non sui settori del disco, ma sul suo controller di bordo.


 

Smontando un suo hard disk ha scoperto i pin della porta debugging JTAG, un banco RAM da 64 mega (per la cache di bordo e usi interni), e un chipset con due processori Feroceon (classe ARM-9, presumibilmente a 150MHz), uno dedicato alla sola lettura/scrittura dei settori (sicuramente con DMA perché si trattava di un SATA 6Gbps), e l'altro alla gestione dell'interfaccia SATA e agli spostamenti delle testine.

Dalla porta JTAG è possibile eseguire istruzioni sui processori (passo-passo), disassemblare, leggere/scrivere nella memoria a loro disposizione, addirittura modificare il firmware di bordo del disco (cioè sui 256k di memoria flash). Quindi ha trovato anche i pin di una porta seriale TTL, eventualmente utilizzabile come console.

Ha poi scoperto in che indirizzi RAM (RAM interna di quell'hard disk, non la RAM del PC) "transitano" i settori dell'hard disk che vengono richiesti dal PC in lettura o scrittura. In tal modo, con opportuna sequenza di comandi, può copiare un file dal PC "eseguibile" (istruzioni macchina ARM-9) alla board del disco, cioè dai settori dell'hard disk alla RAM dell'hard disk, per poi farlo "eseguire".

Ovviamente ci ha compilato un kernel Linux, lo ha "scritto" nella RAM dell'hard disk e lo ha lanciato (per il momento solo il kernel, senza un filesystem). Et voilà: un hard disk con Linux sulla propria board...

Il primo utilizzo di una cosa del genere è taroccare un hard disk in modo che decida di agire in base ai dati che vengono letti/scritti dal PC. Per esempio, comportarsi normalmente finché qualcosa dal PC scrive sul disco un settore che comincia per "Diego Armando Maradona" (un PC su cui si naviga su internet scrive su disco le pagine statiche che legge: tutti i browser hanno una cache!): da allora tutti i successivi accessi a settori che cominciano per "root:12345678" cambieranno i caratteri 12345678 con una password predefinita dall'hacker... E se pure il proprietario dell'hard disk riformatta tutto piallando dal primo all'ultimo settore del disco, l'hack rimane "a bordo" nel firmware dell'hard disk, pronto a riattivarsi.

Tempo fa era circolata qualche dimostrazione di come si scrive sui settori "riservati" dell'hard disk (riservati dal firmware del disco, non dal sistema operativo!), uno spazio di alcune decine di megabytes utilizzato in genere per rilocare i settori guasti. Anche in quel caso, piallando tutto, i dati scritti nei settori "riservati" restano intatti. Alcune decine di megabytes sono più che sufficienti per installare un'intera distribuzione Linux.

Insomma, è la proof-of-concept che si può installare Linux sull'elettronica di bordo dell'hard disk, modificando il funzionamento dell'hard disk stesso (che sembrerà uguale ad uno nuovo anche se dal PC si esaminassero i settori dal primo all'ultimo: ed oggi sono talmente veloci che non si noterebbe la differenza), avendo addirittura a disposizione diverse decine di megabyte per combinarne di tutti i colori, senza neppure dover utilizzare il saldatore.

Oppure, più semplicemente, si può avere un server Linux consistente in un hard disk, un alimentatore e un cavo seriale TTL, senza nient'altro. Ed infine: generalmente la parte elettronica dell'hard disk (processori, flash e RAM) funziona anche se l'hard disk è guasto (motori, dischi illeggibili, testine rovinate a causa di una caduta...).

In sintesi: un hard disk non è un "hard disk", ma un intero computer.

Nessun commento:

Posta un commento