|
|
[Hacking Hardware - Partie 4] - Opérations d'écriture, test et conclusion
Par Nicolas Ruff,
CCR EADS
Le 23/09/2006
Résumé : Il ne reste plus qu'à écrire dans la mémoire. Pour cela, il faut lui envoyer une instruction EWEN (Write Enable), une instruction ERASE pour réinitialiser les bits à 1 (cette limitation provient de la technologie EEPROM), puis une instruction WRITE. - Lire l'article
Il ne reste plus qu'à écrire dans la mémoire. Pour cela, il faut lui envoyer une instruction EWEN (Write Enable), une instruction ERASE pour réinitialiser les bits à 1 (cette limitation provient de la technologie EEPROM), puis une instruction WRITE. Le séquencement des opérations pour cette dernière instruction est le suivant :

Attention : comme nous adressons la mémoire par blocs de 16 bits, l'adresse 0x0E correspond au bloc 0x07. Il en résulte le morceau de code suivant :
# *** main ***
# start afresh
p.setData(0)
set_bit(bit_VCC, 1)
# === write enable ===
# reselect
set_bit(bit_CS, 1)
# Start Bit
send_bit(bit_DI, 1)
# Opcode = 0011xxxx (EWEN)
send_bit(bit_DI, 0)
send_bit(bit_DI, 0)
send_bit(bit_DI, 1)
send_bit(bit_DI, 1)
# Padding
send_bit(bit_DI, 0)
send_bit(bit_DI, 0)
send_bit(bit_DI, 0)
send_bit(bit_DI, 0)
# cycle CS (required to change instruction)
set_bit(bit_CS, 0)
# === erase ===
# reselect
set_bit(bit_CS, 1)
# Start Bit
send_bit(bit_DI, 1)
# Opcode = 11 (ERASE)
send_bit(bit_DI, 1)
send_bit(bit_DI, 1)
# Adress = A5..A0 (16-bit mode)
address = 0x07
send_bit(bit_DI, address & 0x20)
send_bit(bit_DI, address & 0x10)
send_bit(bit_DI, address & 0x8)
send_bit(bit_DI, address & 0x4)
send_bit(bit_DI, address & 0x2)
send_bit(bit_DI, address & 0x1)
set_bit(bit_DI, 0)
# initiate erase by lowering CS
set_bit(bit_CS, 0)
print "erasing ..."
time.sleep(1) # erasing a word takes 4 ms
# === write ===
# reselect
set_bit(bit_CS, 1)
# Start Bit
send_bit(bit_DI, 1)
# Opcode = 01 (WRITE)
send_bit(bit_DI, 0)
send_bit(bit_DI, 1)
# Adress = A5..A0 (16-bit mode)
address = 0x07
send_bit(bit_DI, address & 0x20)
send_bit(bit_DI, address & 0x10)
send_bit(bit_DI, address & 0x8)
send_bit(bit_DI, address & 0x4)
send_bit(bit_DI, address & 0x2)
send_bit(bit_DI, address & 0x1)
# Data (16-bit)
data = 0xAA
send_bit(bit_DI, data & 0x80)
send_bit(bit_DI, data & 0x40)
send_bit(bit_DI, data & 0x20)
send_bit(bit_DI, data & 0x10)
send_bit(bit_DI, data & 0x08)
send_bit(bit_DI, data & 0x04)
send_bit(bit_DI, data & 0x02)
send_bit(bit_DI, data & 0x01)
data = 0xBB
send_bit(bit_DI, data & 0x80)
send_bit(bit_DI, data & 0x40)
send_bit(bit_DI, data & 0x20)
send_bit(bit_DI, data & 0x10)
send_bit(bit_DI, data & 0x08)
send_bit(bit_DI, data & 0x04)
send_bit(bit_DI, data & 0x02)
send_bit(bit_DI, data & 0x01)
set_bit(bit_DI, 0)
# initiate write by lowering CS
set_bit(bit_CS, 0)
print "writing ..."
time.sleep(1)
# operation complete
print "complete!"
# clean everything
p.setData(0)
A l'aide d'un oscilloscope numérique, nous pouvons contrôler que tout se passe bien (ici la séquence EWEN puis ERASE 0x0E). Le signal vert représente CLK tandis que le signal bleu représente DI.

Test final
Nous pouvons relire la mémoire pour vérifier que l'opération s'est bien déroulée :
[…]
0c: 0xe512
0e: 0xaabb
10: 0x6744
[…]
Il ne reste plus qu'à repositionner la mémoire sur la carte (de préférence sur un support de telle sorte à pouvoir l'extraire facilement) et à tester sous Linux :
# ifconfig
eth0 Lien encap:Ethernet HWaddr BB:AA:44:67:2A:B1
UP BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 lg file transmission:1000
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
Interruption:169 Adresse de base:0x1000
Bingo !
Conclusion
J'espère que ce tutoriel aura contribué à démystifier les attaques hardware, en démontrant qu'il est possible de mettre au point une attaque avec un PC et 15 euros de matériel.
Comme vous l'avez peut-être remarqué, la carte réseau utilisée possède également un support 32 broches libre. Ce support peut recevoir une mémoire non volatile dont le code est exécuté à l'amorçage du BIOS (lors du boot PXE). J'espère que cela vous donnera des idées … ;)
Références
[10Laws] Les 10 lois immuables de la sécurité informatique lien
[Athlon] Modding the Athlon XP into an MP lien
[RFID] RFID et sécurité font-ils bon ménage ? lien
[Passeport] Hacker Cracks, Clones RFID Passport lien
[uC] Copy Protection in Modern Microcontrollers lien
[OpenWRT] OpenWRT lien
[FTE] FTS4BT Bluetooth Protocol Analyzer lien
[WiSpy] Dongle spectrum analyser lien
[Pico] PicoComputing lien
[JTAG] La norme JTAG lien
[Debrick] Utilitaire Debrick lien
[GiveIO] Installing the Printer Port driver in NT and 2000 lien
[pyParallel] pyParallel lien
Autres ressources dans ce dossier
[Hacking Hardware - Partie 1] - Introduction et présentation lien
[Hacking Hardware - Partie 2] - Exemple d'attaque spoofer une adresse MAC lien
[Hacking Hardware - Partie 3] - Opérations de lecture lien
- Article suivant : Mise à jour de rentrée pour les principaux navigateurs
- Article précédent : [Hacking Hardware - Partie 3] - Opérations de lecture
- Article suivant dans la catégorie Tutoriels : [Ettercap – Partie 1] Introduction et rappels
- Article précédent dans la catégorie Tutoriels : [Hacking Hardware - Partie 3] - Opérations de lecture
| Mini-Tagwall des articles publiés sur SecuObs : | | | | sécurité, exploit, windows, outil, attaque, réseau, microsoft, metasploit, audit, vulnérabilité, système, virus, internet, usbsploit, données, protocol, présentation, linux, source, réseaux, bluetooth, scanner, reverse, conférence, shell, meterpreter, vista, rootkit, engineering, mobile, security, wishmaster, malicieux, https, trames, paquet, noyau, téléphone, détection, botnet, forensic, libre, snort, utilisant, sysun |
| Mini-Tagwall de l'annuaire video : | | | | curit, security, biomet, metasploit, biometric, cking, password, windows, botnet, defcon, tutorial, crypt, xploit, exploit, lockpicking, linux, attack, wireshark, vmware, rootkit, conference, network, shmoocon, backtrack, virus, conficker, elcom, etter, elcomsoft, server, meterpreter, openvpn, ettercap, openbs, iphone, shell, openbsd, iptables, securitytube, deepsec, source, office, systm, openssh, radio |
| Mini-Tagwall des articles de la revue de presse : | | | | security, microsoft, windows, hacker, attack, network, vulnerability, google, exploit, malware, internet, remote, iphone, server, inject, patch, apple, twitter, mobile, virus, ebook, facebook, vulnérabilité, crypt, source, linux, password, intel, research, virtual, phish, access, tutorial, trojan, social, privacy, firefox, adobe, overflow, office, cisco, conficker, botnet, pirate, sécurité |
| Mini-Tagwall des Tweets de la revue Twitter : | | | | security, linux, botnet, attack, metasploit, cisco, defcon, phish, exploit, google, inject, server, firewall, network, twitter, vmware, windows, microsoft, compliance, vulnerability, python, engineering, source, kernel, crypt, social, overflow, nessus, crack, hacker, virus, iphone, patch, virtual, javascript, malware, conficker, pentest, research, email, password, adobe, apache, proxy, backtrack |
|
|
|
|
|