¿Hay alguna forma de derrotar (parcialmente) los ataques del keylogger contra la entrada de contraseña a nivel del sistema en OS X?
Sí. El keylogger tradicional es un dispositivo de hardware que intercepta datos entre el teclado y la entrada de datos de caracteres en el controlador de teclado (en su mayoría, dispositivo USB, teclado HID). Los componentes físicos son pocos y se pueden usar varios sellos a prueba de manipulación para asegurar la integridad del sistema físico. Necesitaría una comprobación inicial para asegurarse de que no existe ningún registrador de teclado físico, luego adjunte o instale los sellos. Luego se deben realizar verificaciones frecuentes o periódicas de los sellos para verificar que la integridad del hardware esté intacta.
Sin embargo, la mayoría de los keyloggers modernos están basados en software o firmware y, por lo tanto, solo pueden ser defendidos por los métodos de seguridad del software. Esto incluye la cadena del firmware IC del controlador del teclado, el controlador del dispositivo del controlador del teclado, el subsistema USB a nivel del sistema operativo, el búfer del teclado y el software de shell.
Esto requerirá que encuentre el firmware o software para cada componente de la cadena y verifique que no haya sido manipulado. Esto se hace generalmente obteniendo del fabricante un hash criptográfico del firmware o software para el componente y calculando el hash criptográfico del software actualmente en uso en el sistema en cuestión. Si los valores de hash criptográficos coinciden, entonces el firmware o el software no están modificados.
Cuanto más software hay en la cadena, más difícil es proteger y verificar solo por la naturaleza de la creciente complejidad y más permutaciones de las secuencias de instrucciones.
Hay varios lugares en mi 'infraestructura de seguridad personal' (¿hay una mejor frase para eso?) donde me encuentro escribiendo contraseñas muy importantes en los campos de texto en OS X (por ejemplo, descifrar y montar unidades de disco que contienen muy datos sensibles.)
Tengo (quizás sin razón) miedo a los keyloggers
En los keyloggers de hardware sí, en los keyloggers de software no.
ya que estos [Keyloggers] son el único método que se me ocurre por debajo de una vulnerabilidad a nivel del sistema o al ver (o grabar) físicamente mis actividades al ingresar la contraseña.
No, hay muchas otras formas de determinar su contraseña. La más común es encontrar una contraseña o frase expuesta de otro sistema e intentar usarla en el sistema en cuestión. Esto suele ser exitoso ya que la mayoría de las personas reutilizan contraseñas.
Otro ejemplo trivial es intentar encontrar teclas de uso frecuente en su teclado, ya sea de dirt o ware, y probar las combinaciones limitadas de esas teclas de uso frecuente para encontrar la contraseña;
Además, hay varias formas de ingeniería social y phishing que son bastante efectivas.
En otros sistemas seguros que uso, hay una opción para ingresar una parte final de la contraseña con el mouse o similar, para evitar que los keyloggers dificulten demasiado el trabajo de un atacante.
Hay dos posibilidades aquí. Estas claves se dividen, lo que significa que parte de la clave se almacena en un contenedor en el sistema y parte de la clave se almacena en su mente. O la clave completa se almacena en un contenedor y el sistema solo necesita unos pocos caracteres para determinar qué clave necesita.
También hay dos tipos generales de división de teclas: una a la que llamo seccionada y la otra a la que se denomina división de longitud de la clave completa. El seccionado toma una clave con n bits y la divide en dos o más partes.
Por ejemplo: tome una clave 0xA55AC33C y divídala en 0xA55A y 0xC33C.
La división completa de longitud de clave toma una clave de n bits y la divide en dos o más partes de longitud n.
Por ejemplo: tome una clave 0xA55AC33C y divídala en 0x42244224 y 0xE77E8118.
La división en secciones es una mala elección por varias razones, incluida la exposición a ataques de fuerza bruta y los problemas que combinan la clave en el orden y la endianess correctos.
Puede parecer que una división dividida en secciones afecta a un keylogger, pero no si la introducción de la misma división permite que un atacante acceda a los datos confidenciales. Por ejemplo: si solo necesita ingresar 0xC33C y el keylogger registra esto, entonces un atacante puede ingresar 0xC33C y obtener el mismo acceso.
Generalmente, los comandos de nivel de shell que no envían datos confidenciales de caracteres a la pantalla o al búfer de registro de shell son más seguros que los componentes gráficos.