Cifrar con contraseña
Algo muy común es proteger el acceso total al fichero con una contraseña:
Lo que hace Excel por debajo para proteger la hoja de cálculo de esta manera es cifrar el archivo con AES y una clave de 128 bits (ojo porque hay un pequeño truquito para aumentarla a 256 bits modificando el registro). Para romperlo, lo mejor en este caso es utilizar un ataque de diccionario con John the Ripper o cualquier otra herramienta que gustéis....
Primero obtenemos el hash de la contraseña del documento con office2john incluido en la versión jumbo 1.7.9 compilada por Robert Harris:
D:\Hacking\john-1.7.9-jumbo-7-Win-32\run>office2john.exe /cygdrive/d/Libro1.xlsx > hash_excel.txt
/cygdrive/d/Libro1.xlsx:$office$*2010*100000*128*16*507e4f65f0c73a48077b22ce5473ccec*50946a93488c091f536b4063eb3ae667*799528a214fb108b73f91ef5806222ebf9049d87e963238ac5a1acf82f9eb9db
Ahora un poquito de benchmarking para comprobar la capacidad de mi patata de PC:
D:\Hacking\john-1.7.9-jumbo-7-Win-32\run>john --test --format=office
Benchmarking: Office 2007/2010 SHA-1/AES [32/32]... DONE
Raw: 30.1 c/s real, 30.3 c/s virtual
Después iniciamos el ataque de fuerza bruta con el diccionario elegido:
D:\Hacking\john-1.7.9-jumbo-7-Win-32\run>john -w:dicio.txt hash_excel.txt
Loaded 1 password hash (Office 2007/2010 SHA-1/AES [32/32])
123456 (/cygdrive/d/Libro1.xlsx)
guesses: 1 time: 0:00:00:00 DONE (Fri Mar 28 00:27:47 2014) c/s: 14.83 trying
: 123456
Use the "--show" option to display all of the cracked passwords reliably
Y en menos de 5 segundos tenemos acceso al mismo, gracias en parte a que el dueño del documento utilizó una de las peores contraseñas posibles.
Finalmente guardamos el fichero como Libro2.xlsm, pero antes en el desplegable 'Herramientas' seleccionamos 'Opciones generales' y eliminamos la contraseña de apertura:
Bloquear el proyecto VBA
Otra opción es establecer una contraseña para ver las propiedades o incluso visualizar el proyecto VBA (las macros).
Sin embargo esta *irrisoria* protección es para el UI y básicamente añade unas pocas líneas al form:
CMG="0604AB00EA009E049E049A089A08"
DPB="C6B41DD07A30374D374DC8B3384DDC63D35C51C89D809616E325E4129493EEFDBC48EE77D47B79"
GC="6664CAA0CBE07BE17BE17B"
Estos campos corresponden a ProjectProtectionState, ProjectPassword y ProjectVisibilityState respectivamente. Por lo que si borramos esos campos (reemplazando el texto con espacios en blanco) Excel no nos pedirá una contraseña para ver el código del proyecto...
Para ello descomprimimos el fichero Libro2.xlsm como si de un zip se trataba, editamos el fichero xl\vbaProject.bin con notepad++ (u otro editor hexadecimal) y cambiamos DPB= por DBx=.
Luego guardamos el archivo con la misma extensión .BIN y agregamos al zip sustituyendo el mismo archivo.
Al abrir de nuevo el fichero Excel nos dirá que contiene una clave 'DPx' no válida:
Simplemente continuamos cargando el proyecto, ignoramos el error, asignamos una nueva contraseña en las propiedades de VBAProject y salvamos...
Al volver a abrirlo tendremos acceso al código de la macro:
Proteger hoja actual y estructura del libro
Otra opción que normalmente se utiliza es la de proteger la hoja actual y la estructura del libro para que otros usuarios no realicen cambios:
Sin embargo, quitar esta protección también es bastante trivial. Simplemente añade al proyecto VBA la siguiente macro:
Sub PasswordBreaker()
'Breaks worksheet password protection.
Dim i As Integer, j As Integer, k As Integer
Dim l As Integer, m As Integer, n As Integer
Dim i1 As Integer, i2 As Integer, i3 As Integer
Dim i4 As Integer, i5 As Integer, i6 As Integer
On Error Resume Next
For i = 65 To 66: For j = 65 To 66: For k = 65 To 66
For l = 65 To 66: For m = 65 To 66: For i1 = 65 To 66
For i2 = 65 To 66: For i3 = 65 To 66: For i4 = 65 To 66
For i5 = 65 To 66: For i6 = 65 To 66: For n = 32 To 126
ActiveSheet.Unprotect Chr(i) & Chr(j) & Chr(k) & _
Chr(l) & Chr(m) & Chr(i1) & Chr(i2) & Chr(i3) & _
Chr(i4) & Chr(i5) & Chr(i6) & Chr(n)
If ActiveSheet.ProtectContents = False Then
MsgBox "One usable password is " & Chr(i) & Chr(j) & _
Chr(k) & Chr(l) & Chr(m) & Chr(i1) & Chr(i2) & _
Chr(i3) & Chr(i4) & Chr(i5) & Chr(i6) & Chr(n)
Exit Sub
End If
Next: Next: Next: Next: Next: Next
Next: Next: Next: Next: Next: Next
End Sub
Ejecutalá y se mostrará la clave de respaldo que ocupa internamente el código de Excel en dicha hoja:
A partir de ahora ya podremos editar la hoja excel e incluso desproteger el fichero:
Y nada, a correr!
Fuente: http://www.hackplayers.com/