comment
IRC Chat
play_arrow
Este sitio utiliza cookies propias y de terceros. Si continúa navegando consideramos que acepta el uso de cookies. OK Más Información.

SSL Port Forward

  • 0 Respuestas
  • 1756 Vistas

0 Usuarios y 1 Visitante están viendo este tema.

Conectado ANTRAX

  • *
  • Administrator
  • Mensajes: 5409
  • Actividad:
    20%
  • Reputación 33
  • ANTRAX
    • Ver Perfil
    • Underc0de
    • Email
  • Skype: underc0de.org
  • Twitter: @Underc0de
« en: Marzo 30, 2012, 12:26:53 pm »
Bueno, como primicia les comento que estoy trabajando en metasploit desarrollando el meterpreter para Linux y *Bsd (posix). Y que hoy por primera vez le pudimos cargar una extension despues de un ida y vuelta de parches tremendo. (Estoy mas que contento de participar en el proyecto jaja)

El tema de este post es que para esa tarea tuvimos que debuggear conexiones SSL y no podiamos modificar el codigo existente por su complejidad. Asi que hice un "port forwarder" de ssl que pueden usar para debuggear conexiones o para hacer mitm.
Bueno, solamente les comento que corre con Python >= 2.6  y bueno, espero que les sirva.

sslfwd.py:
Código: Python
  1. #!/usr/bin/python
  2.  
  3. import sys, thread
  4. import socket, ssl
  5.  
  6.  
  7. def main():
  8.     print("\nSSL Proxy dump (by Sebastian Fernandez)\n---------------------------------------")
  9.     if(len(sys.argv)!=4):
  10.         usage()
  11.     settings = (sys.argv[1],int(sys.argv[2]),int(sys.argv[3]))
  12.     server(settings)
  13.  
  14. def usage():
  15.     print("Usage:\n\tsslfwd.py [host] [dst port] [src port]")
  16.     exit()
  17.  
  18. def server(settings):
  19.     dock_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  20.     dock_socket.bind(('', settings[2]))
  21.     dock_socket.listen(5)
  22.     print("Socket listening at "+str(settings[2]))
  23.  
  24.     while True:
  25.         client_socket = dock_socket.accept()[0]
  26.         server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  27.        
  28.         #Create SSL wrappers
  29.         client_ssl = ssl.wrap_socket(client_socket,
  30.                                      certfile="certfile.crt",
  31.                                      keyfile="keyfile.key",
  32.                                      server_side=True,
  33.                                      ssl_version=ssl.PROTOCOL_TLSv1)
  34.  
  35.         server_ssl = ssl.wrap_socket(server_socket,
  36.                                      ssl_version=ssl.PROTOCOL_TLSv1)
  37.        
  38.         server_ssl.connect((settings[0], settings[1]))
  39.  
  40.         #Start forwarding data
  41.         thread.start_new_thread(ssl_forward, (client_ssl, server_ssl))
  42.         thread.start_new_thread(ssl_forward, (server_ssl, client_ssl))
  43.         lock = thread.allocate_lock()
  44.         lock.acquire()
  45.  
  46. def ssl_forward(source, destination):
  47.     data=' '
  48.     while data:
  49.         try:
  50.             data = source.read()
  51.         except:
  52.             source.close()
  53.             destination.close()
  54.             return
  55.         if data:
  56.             work_data(data)
  57.             try:
  58.                 destination.write(data)
  59.             except:
  60.                 pass
  61.             finally:
  62.                 pass
  63.  
  64. def work_data(data):
  65.     data = "DATA =================\n"+data+"\nEND=====================\n"
  66.     print(data)
  67.     fdump.write(data)
  68.  
  69.  
  70. if __name__ == '__main__':
  71.     fdump = open('dump.dmp', 'w')
  72.     main()
  73.     fdump.close()
  74.  

Necesitan el certificado y la clave para correr el programa, si quieren pueden usar estos que genere:

keyfile.key :
Código: [Seleccionar]
-----BEGIN RSA PRIVATE KEY-----
MIIBPAIBAAJBALpb4iX8d5Iy5eVh/7l8uj4Zii1YPXZcAElaYeE1A2kFYJhuxTdy
Ry+es9XF++hxO7Zoj+u5WA0eW+UgNdB7UjECAwEAAQJBAK522q7JPn+mGse2CRvz
gsAkVNHCrDekRbhmXv/hC4JCpsn2f7rldlFw4CIesSq1RrPBhjkSHeSTN4h/NtAl
tQkCIQDn6/4rwEvdjl/DAyqKCWR1wgf6478qQLcrpqk1mI2ZGwIhAM20691uBABF
MgQcuWPDKtfCMH1rrpxb0Nxk/ZvbC+KjAiAu7KTEnWe8MC5X+rAEtdnJqbSLosDu
/6EQB+x8l50uuQIhAKtInKVSOA6pj04RROUm24OwdIPaqBgV88GwbePa7viVAiEA
tkPhAfR44xvNHIeMUpI4860p4U4OiNzAcuaornLTnGs=
-----END RSA PRIVATE KEY-----

certfile.crt:
Código: [Seleccionar]
-----BEGIN RSA PRIVATE KEY-----
MIIBPAIBAAJBALpb4iX8d5Iy5eVh/7l8uj4Zii1YPXZcAElaYeE1A2kFYJhuxTdy
Ry+es9XF++hxO7Zoj+u5WA0eW+UgNdB7UjECAwEAAQJBAK522q7JPn+mGse2CRvz
gsAkVNHCrDekRbhmXv/hC4JCpsn2f7rldlFw4CIesSq1RrPBhjkSHeSTN4h/NtAl
tQkCIQDn6/4rwEvdjl/DAyqKCWR1wgf6478qQLcrpqk1mI2ZGwIhAM20691uBABF
MgQcuWPDKtfCMH1rrpxb0Nxk/ZvbC+KjAiAu7KTEnWe8MC5X+rAEtdnJqbSLosDu
/6EQB+x8l50uuQIhAKtInKVSOA6pj04RROUm24OwdIPaqBgV88GwbePa7viVAiEA
tkPhAfR44xvNHIeMUpI4860p4U4OiNzAcuaornLTnGs=
-----END RSA PRIVATE KEY-----
-----BEGIN CERTIFICATE-----
MIIBfDCCASYCCQCMFXEk7hFlijANBgkqhkiG9w0BAQUFADBFMQswCQYDVQQGEwJV
UzETMBEGA1UECBMKU29tZS1TdGF0ZTEhMB8GA1UEChMYSW50ZXJuZXQgV2lkZ2l0
cyBQdHkgTHRkMB4XDTA5MDcyOTA4NDQ1NloXDTA5MDkyNzA4NDQ1NlowRTELMAkG
A1UEBhMCVVMxEzARBgNVBAgTClNvbWUtU3RhdGUxITAfBgNVBAoTGEludGVybmV0
IFdpZGdpdHMgUHR5IEx0ZDBcMA0GCSqGSIb3DQEBAQUAA0sAMEgCQQC6W+Il/HeS
MuXlYf+5fLo+GYotWD12XABJWmHhNQNpBWCYbsU3ckcvnrPVxfvocTu2aI/ruVgN
HlvlIDXQe1IxAgMBAAEwDQYJKoZIhvcNAQEFBQADQQATdEbtRAD4P+F8V/L472GI
pdWYEU7eomrpJTCH0BoWmqd+WkfCFVXuylJbHpM6QgtY3RxTozWtaETQ6VpeJ57f
-----END CERTIFICATE-----

Saludos,

Autor: snf


 

¿Te gustó el post? COMPARTILO!



Accediendo a otras PC's mediante port:139

Iniciado por Dj_Dexter

Respuestas: 4
Vistas: 3421
Último mensaje Marzo 21, 2012, 08:07:38 pm
por baron.power
Port knocking by cygog

Iniciado por ANTRAX

Respuestas: 4
Vistas: 2909
Último mensaje Marzo 19, 2010, 09:57:43 pm
por Xt3mP