Moabi - Breaking Preboot Authentication - H2HC 2009
Moabi - Breaking Preboot Authentication - H2HC 2009
Password Cracking on a
budget
- Raul Seixas
Before we start...
Keyboard internals
Experimental results
Interruption 0x16 invoked via functions
:
ah=0x00 , “Get keystroke” : returns
the keystroke scancode in AH and its
ASCII code in AL.
ah=0x01 , “Check for keystroke” :
idem, but the Zero Flag is set if no
keystroke is available in the Bios
II-2) BIOS API for user inputs
(2/2)
eg : lilo password reading
routine :
II-3) BIOS internals for keyboard
management
II-4) BIOS keyboard bufer
Remanance... (1/3)
• Filling the BIOS keyboard bufer
(with the keyboard) :
II-4) BIOS keyboard
bufer Remanence...
• Reading the BIOS keyboard
bufer (using int 0x16, ah=0x00
or 0x01) :
Demo
Simulating keystrokes by
PIC programming
(from real mode)
Demo
Simulating keystrokes by
PIC programming
(from protected mode
under x86 GNU/Linux)
(aka: brute force any GUI)
Exemple of application :
Rebooting a computer
protected with a password
(assuming you know that
password - for now ;), by
simulating keystrokes at
boot time...
Attack scenario :
I/O Port
I/O 0x64
Port
0x60
Notes :
- You can get the code for this
attack from the Defcon
archive (the attack is called
« Invisible Man »).
It's doable :)
Result #2
Irrelevant
(cloud computing !)
Search space
C = O (S * 3/70 * cpu_freq/(1.6GHz) *
cost_per_hour)
Amazon EC2
Cost
Exemple :
charset = [a-z]
Pass length = 5
Exemple :
charset = [a-z]
Pass length = 8
Exemple :
charset = [a-zA-Z0-9]
Pass length = 8
• Getting physical :
FPGA (for hashing algos only :
nsa@home project)
A few more things on
TrueCrypt 6.3
Truecrypt's policy and
assumed attack surface
• No hardware sealing.
• We can modify the
bootloader.
• We can scale on
hardware/virtualisation.
Key/pass repudiation