Hackeando con Python primera parte
Vamos a iniciar una serie de posts en los que vamos a profundizar sobre el hacking con Python. Una de las razones por las cuales Python es muy utilizado para el hacking es por la cantidad de librerías existentes y por la facilidad de integrarlas en nuestro programas.
El objetivo final es saber crear nuestras propias herramientas de hacking para usarlas y modificarlas a nuestro antojo y, así evitar las búsquedas innecesarias en Google.
Python suele venir instalado en la mayoría de las distribuciones de Linux. No obstante, en caso de no estar instalado es tan sencillo como teclear:
En cualquier caso, es recomendable instalar una serie de herramientas que iremos usando a lo largo de los posts. Para instalar herramientas de Python hay dos formas. La más sencilla es mediante “easy_install”. Para instalar “easy_install” tenemos que bajarnos el setuptools de Python mediante:
Para ello vamos a usar la librería crypt de Python. La primera prueba más sencilla que podemos realizar es:
Lo que hemos hecho ha sido ejecutar el entorno de Python mediante el comando “python”. Después hemos ejecutado las siguientes líneas de código:
Ahora veamos cómo sería el main:
Con esto ya tendríamos nuestro programa de descifrado de passwords finalizado. Como podemos ver, la dificultad real radica en construir un buen diccionario en donde comprobar nuestras contraseñas a descifrar.
Ahora bien, el fichero /etc/passwd de Linux usa el cifrado SHA-512. ¿Cómo podríamos modificar nuestro programa para ser capaces de descifrar dichas contraseñas?
El objetivo final es saber crear nuestras propias herramientas de hacking para usarlas y modificarlas a nuestro antojo y, así evitar las búsquedas innecesarias en Google.
Python suele venir instalado en la mayoría de las distribuciones de Linux. No obstante, en caso de no estar instalado es tan sencillo como teclear:
sudo apt-get install python
En cualquier caso, es recomendable instalar una serie de herramientas que iremos usando a lo largo de los posts. Para instalar herramientas de Python hay dos formas. La más sencilla es mediante “easy_install”. Para instalar “easy_install” tenemos que bajarnos el setuptools de Python mediante:
wget http://pypi.python.org/packages/2.7/s/setuptools/setuptools-0.6c11-py2.7.eggUna vez descargado, ejecutamos el script mediante:
sh setuptools-0.6c11-py2.7.eggAhora procedamos a instalar las herramientas:
easy_install pyPdf python-nmap pygeoip mechanize BeautifulSoup4Ya tenemos nuestro entorno de desarrollo configurado, por lo que vamos a empezar con el programa. En este primer post vamos a desarrollar una aplicación muy sencilla que nos permita crackear passwords a partir de diccionarios.
Para ello vamos a usar la librería crypt de Python. La primera prueba más sencilla que podemos realizar es:
Lo que hemos hecho ha sido ejecutar el entorno de Python mediante el comando “python”. Después hemos ejecutado las siguientes líneas de código:
import cryptCon esto indicamos que queremos cifrar la clave “HighSec” con Salt “HX”. Una vez realizada esta pequeña prueba, vamos a crearnos nuestro programa. Para ello nos creamos una función que compruebe la clave a descifrar con nuestro diccionario previamente creado:
crypt.crypt("HighSec","HX")
def testPass(cryptPass):Como vemos, esta función recibe una contraseña cifrada, recorre nuestro diccionario mientras va cifrando cada entrada de él y se comprueba sin ambas contraseñas son iguales.
salt = cryptPass[0:2]
dictFile = open('diccionario.txt','r')
for word in dictFile.readlines():
word = word.strip('\n')
cryptWord = crypt.crypt(word,salt)
if (cryptWord == cryptPass):
print "[+] Found Password: "+word+"\n"
return
print "[-] Password Not Found.\n"
return
Ahora veamos cómo sería el main:
def main():Observamos que lo único que hace es abrir un fichero donde están las passwords con los usuarios (al estilo del fichero de password de Linux) y llama a la función test implementada anteriormente.
passFile = open('passwords.txt')
for line in passFile.readlines():
if ":" in line:
user = line.split(':')[0]
cryptPass = line.split(':')[1].strip(' ')
print "[*] Cracking Password For: "+user
testPass(cryptPass)
if __name__ == "__main__":
main()
Con esto ya tendríamos nuestro programa de descifrado de passwords finalizado. Como podemos ver, la dificultad real radica en construir un buen diccionario en donde comprobar nuestras contraseñas a descifrar.
Ahora bien, el fichero /etc/passwd de Linux usa el cifrado SHA-512. ¿Cómo podríamos modificar nuestro programa para ser capaces de descifrar dichas contraseñas?