Tienda Wifi

Tienda Wifi
CiudadWireless es la tienda Wifi recomendada por elhacker.NET

Entradas Mensuales

Síguenos en:

Canal Oficial Telegram de elhacker.NET Grupo Facebook elhacker.NET Twitter elhacker.NET Canal Youtube elhacker.NET Comunidad Steam: Grupo elhacker.NET Mastodon

Entradas populares

PostHeaderIcon Descubre contraseñas escuchando las pulsaciones del teclado con Keytap2


Keytap2 - escuchas de teclado acústico basadas en frecuencias de n-gramas del lenguaje. Se necesita un teclado mecánico obligatoriamente y un tiempo de aprendizaje, es decir, grabar previamente el 100 sonidos de las teclas para poder tener un algoritmo de patrón. Actualmente sólo funciona con el idioma inglés.



Keytap: escuchas del teclado acústico

El sonido emitido por las pulsaciones de teclas se puede utilizar potencialmente para realizar un ataque de canal lateral para adivinar el texto que se está escribiendo. Esta página ejecuta un programa que demuestra este tipo de ataque.

Primero, escribes algo de texto en el lienzo de abajo para entrenar el modelo de predicción. No escriba muy rápido: se recomienda probar primero un estilo de escritura Hunt and Peck para al menos obtener algunos resultados positivos. El programa intentará predecir las teclas que se hayan pulsado al menos 3 veces.

Cuando esté listo para escribir los datos de entrenamiento, haga clic en el botón Pedict, espere a que el modelo se entrene y continúe escribiendo fuera de la ventana del navegador. El programa intentará continuamente adivinar lo que se está escribiendo analizando únicamente la captura de audio de la página.



Actualmente, el código no es muy portátil, así que lea los requisitos a continuación y asegúrese de cumplirlos. Además, esta es una prueba de concepto y probablemente no funcione de manera efectiva en todos los entornos. Sin embargo, funciona bastante bien en mi configuración: iMac, teclado mecánico Filco, micrófono incorporado.

Requisitos

  • Navegador no móvil compatible con pthreads con WebAssembly (es decir, Chrome o Firefox Nightly)
  • Teclado mecánico
  • Micrófono (aumenta el nivel de entrada al máximo)

Una versión on-line del algoritmo está disponible aquí: keytap2.ggerganov.com (aproximadamente 8 MB de módulo WASM + activos)

KeyTap2

Keytap es un proyecto de pasatiempo de Georgi Gerganov para la escucha clandestina de teclados acústicos. En resumen, funciona así:

  •     Entrena un algoritmo con los sonidos que emite un teclado específico al presionar sus teclas
  •     Grabe el sonido de alguien escribiendo un texto desconocido en ese teclado
  •     Ejecute el algoritmo en la grabación para intentar recuperar el texto original que se escribió

Aquí hay un breve video de 1 minuto de mi enfoque original donde entreno Keytap en un teclado y luego lo uso para olfatear teclas de otra aplicación:


Demostración de teclas


Video. Escuchar a escondidas en un navegador Google Chrome usando Keytap

Uno de los principales inconvenientes del proceso descrito es que primero es necesario recopilar datos de entrenamiento para el teclado específico en el que estarían escuchando a escondidas (paso 1). Además, en el paso 2, uno tiene que usar exactamente la misma configuración de teclado + micrófono que usaron en el paso 1 para obtener resultados algo confiables.

El nuevo algoritmo Keytap2 es un intento de resolver estos problemas. En este enfoque, ya no necesitamos recopilar datos de entrenamiento. El algoritmo funciona agrupando las pulsaciones de teclas detectadas en función de su similitud de sonido y luego utilizando información estadística sobre la frecuencia de las letras n-gramas en el supuesto idioma del texto (por ejemplo, inglés). Esto implica que necesitamos tener conocimientos previos sobre el idioma del texto, pero ahora este es un requisito mucho más débil en comparación con el paso 1 anterior. Además, necesitamos suficientes muestras registradas para realizar un análisis estadístico exitoso.

En esta publicación, daremos algunos detalles sobre la implementación. Antes de comenzar, aquí hay un video de 5 minutos que muestra Keytap2 en acción donde lo uso para recuperar un texto en inglés desconocido solo del audio grabado de mí tocando el teclado (tenga en cuenta que Keytap2 se ejecuta en el navegador y estoy escribiendo en otra aplicación) :

Demostración de Keytap2

Vid. Corto 5 min. demostración de Keytap2


Como todos sabemos cómo las cosas nuevas generalmente se presentan por primera vez, estos son algunos resultados "típicos" ... es decir, he seleccionado cuidadosamente un ejemplo en el que mi algoritmo produce buenos resultados 😄 Por lo tanto, tenga en cuenta que esto es solo un prueba de concepto, por lo que si decide probarlo, reduce tus expectativas.


Una versión en línea del algoritmo está disponible aquí: keytap2.ggerganov.com (aproximadamente 8 MB de módulo WASM + activos)

Alternativamente, puede construir este repositorio localmente y ejecutar el binario keytap2-gui.

Fundamentos

La mayoría de los fundamentos del algoritmo son los mismos que en Keytap, así que asegúrese de consultar mi publicación anterior del blog para obtener más detalles. En breve:


  •     Usamos una técnica de umbral adaptativo en la forma de onda de sonido grabada para detectar automáticamente la ubicación de las pulsaciones de teclas.


    Pulsaciones de teclas detectadas automáticamente

    Fig. Las pulsaciones de teclas detectadas en la grabación están marcadas con rectángulos rojos. La herramienta también permite especificar manualmente la ubicación de las claves.

    Código fuente

  1.     A continuación, calculamos el "Mapa de similitud de claves" Sij, la "similitud de sonido" entre las pulsaciones de teclas iy j detectadas. Cuanto mayor sea el valor de S, más similar suenan las 2 pulsaciones de tecla y Sii = 1. En Keytap2 sigo usando la Correlación cruzada entre las formas de onda de las pulsaciones de teclas para calcular Sij

    Código fuente


    Mapa de similitudes clave



    Fig. El "Mapa de similitud clave" Sij presentado visualmente: las celdas más brillantes indican un valor más alto.


Cifrado de sustitución

¡Sí, lo leíste correctamente! En Keytap2 transformamos el problema de recuperar el texto desconocido en el problema de romper un cifrado de sustitución.

Para explicar esto mejor, imaginemos por un momento que nuestro Mapa de similitudes clave Sij era de alguna manera perfecto. Esto significa que de alguna manera podemos saber con 100% de certeza si 2 pulsaciones detectadas son producidas por la misma tecla del teclado, solo por el sonido que emitieron. En otras palabras, para cada par de pulsaciones de teclas ij para las que las teclas presionadas fueron las mismas, obtenemos Sij = 1. De lo contrario, obtenemos Sij = 0.

Si ese fuera el caso, podríamos agrupar las pulsaciones de teclas en grupos basados ​​en Sij y obtener un "cifrado" del texto original que estamos intentando recuperar. Este "cifrado" es exactamente un cifrado de sustitución.

Romper un cifrado de sustitución es relativamente fácil, dado que tenemos suficiente texto cifrado. Una técnica popular es utilizar un algoritmo genético que intenta maximizar la probabilidad de encontrar los n-gramas descifrados, dada su distribución de frecuencia en el idioma de destino. En Keytap2 utilicé una variación de la siguiente implementación. Descubrí que si el texto cifrado tiene al menos 100 letras, se las arregla para romperlo con bastante facilidad.

Código fuente


Cifrado de sustitución no exacto


En realidad, nuestro Sij no es ni de lejos perfecto. Esto se debe a muchos factores: la misma tecla puede sonar diferente dependiendo de la forma en que se presionó, el ruido de grabación, el ruido de fondo, etc. Sin embargo, al menos podemos esperar que Sij se correlacionará con la probabilidad de que las dos teclas i y j fueron producidos por la misma tecla del teclado.

En esta configuración, aún podemos intentar agrupar las pulsaciones de teclas en grupos y convertir el problema en romper un cifrado de sustitución. Sin embargo, para aumentar las posibilidades de éxito, el algoritmo necesita explorar muchas agrupaciones diferentes de pulsaciones de teclas y encontrar un equilibrio entre qué tan bien se ajustan las agrupaciones al Mapa de similitud de claves y qué tan bien el texto descifrado se ajusta a las estadísticas de n-gramas del idioma. Keytap2 intenta resolver este problema generando una gran cantidad de agrupaciones utilizando un enfoque similar a Metropolis-Hastings. Para cada agrupación que genera, aplica el algoritmo original de ruptura de cifrado por sustitución. En el proceso, realiza un seguimiento de los mejores resultados que coinciden lo suficientemente bien con las estadísticas de frecuencia n-gram en inglés.


La generación de agrupaciones funciona así:


  •     Para cada pulsación de tecla detectada i, asigne un clúster Ci
  •     Calcule una métrica de bondad de ajuste para la agrupación {Ccur}: F ({Ccur}) = ΣiΣjlog (pij), si Ci = Cj entonces pij = Sij else pij = 1-Sij
  •     Mute aleatoriamente el agrupamiento actual para obtener un nuevo agrupamiento Cnew
  •     Acepte el nuevo agrupamiento con probabilidad exp (F ({Cnew}) - F ({Ccur}))
  •     Vaya al paso 3 y repita

Código fuente

En general, esta es la parte más crucial del enfoque descrito. No creo que mi solución sea la mejor que existe y creo que podría haber algunos enfoques alternativos interesantes para atacar este problema. Definitivamente, avíseme si tiene ideas sobre cómo resolver este desafío.

Rendimiento de KeyTap2

El rendimiento de Keytap2 es cuestionable. Lo hice funcionar con mi propia configuración, pero no lo he probado en ninguna otra configuración, por lo que hay una alta probabilidad de que el algoritmo esté "sobreajustado" a mi configuración.

Existen algunas limitaciones importantes al usar Keytap2:

  •     No pude lograr la automatización completa del ataque. Por lo tanto, presenté una opción para proporcionar "sugerencias" al algoritmo. Esto se demuestra mejor en el video al comienzo de esta publicación. Puede proporcionar tales sugerencias mientras se ejecuta la optimización y el algoritmo se reajustará automáticamente. A veces, es muy útil restablecer la optimización para evitar quedarse atascado en los mínimos locales.

    Fig. Proporcione "sugerencias" al algoritmo seleccionando las partes decodificadas que crea que tienen sentido.

  •  Necesitas un teclado mecánico. No estoy seguro de si todos los teclados mecánicos son susceptibles a este tipo de ataque, pero el mío lo es porque hace ruidos de clic.
  •  La versión del navegador de Keytap2 consume bastante CPU, así que si su máquina no es lo suficientemente potente, asegúrese de probar el programa nativo.
  • Actualmente, el texto grabado debe estar en inglés, ya que estos son los datos de frecuencia n-gramo que tengo. En teoría, se pueden usar frecuencias de n-gramas para otros idiomas.
  • Asegúrese de registrar al menos 100 caracteres de texto significativo. Es muy importante que el texto tenga sentido, de lo contrario no seguirá la distribución estadística promedio de los n-gramas y el enfoque fallará por completo.
  • No grabes más de 300 caracteres o el cálculo se volverá extremadamente lento.
  • Trata de no cometer errores al escribir :) Esto puede confundir el algoritmo. Además, utilice sólo letras y "espacio"; no hay información estadística sobre las otras teclas.


0 comentarios :

Publicar un comentario

Los comentarios pueden ser revisados en cualquier momento por los moderadores.

Serán publicados aquellos que cumplan las siguientes condiciones:
- Comentario acorde al contenido del post.
- Prohibido mensajes de tipo SPAM.
- Evite incluir links innecesarios en su comentario.
- Contenidos ofensivos, amenazas e insultos no serán permitidos.

Debe saber que los comentarios de los lectores no reflejan necesariamente la opinión del STAFF.