HACKER ANGELWHITE GALC

jueves, 17 de abril de 2014

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:
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.egg
Una vez descargado, ejecutamos el script mediante:
sh setuptools-0.6c11-py2.7.egg
Ahora procedamos a instalar las herramientas:
easy_install pyPdf python-nmap pygeoip mechanize BeautifulSoup4
Ya 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:
python1 
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 crypt
crypt.crypt("HighSec","HX")
Con 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:
def testPass(cryptPass):
 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
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.
Ahora veamos cómo sería el main:
def main():
  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()
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.
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?

No hay comentarios:

Publicar un comentario