Ejecución inversa del código de ataque RDP en clientes RDP – Check Point Research prueba de inventario de ansiedad de beck pdf

Sin embargo, la investigación de Check Point descubrió recientemente varias vulnerabilidades críticas en el protocolo de escritorio remoto (RDP) comúnmente utilizado que permitiría a un actor malintencionado revertir la dirección habitual de la comunicación e infectar a la computadora del profesional de TI o del investigador de seguridad. Dicha infección podría permitir una intrusión en la red de TI en su conjunto.

El protocolo de escritorio remoto (RDP), también conocido como “mstsc” después del cliente RDP incorporado de microsoft, es comúnmente utilizado por los usuarios técnicos y el personal de TI para conectarse / trabajar en una computadora remota. RDP es un protocolo propietario desarrollado por Microsoft y se usa generalmente cuando un usuario desea conectarse a una máquina de Windows remota. También hay algunos clientes populares de código abierto para el protocolo RDP que son utilizados principalmente por usuarios de Linux y Mac.


En un escenario normal, usa un cliente RDP y se conecta a un servidor médico de eventos anóxico RDP remoto que está instalado en la computadora remota. Después de una conexión exitosa, ahora tiene acceso y control de la computadora remota, de acuerdo con los permisos de su usuario. ¿Pero si el escenario se pudiera revertir? Queríamos investigar si el servidor RDP puede atacar y obtener control sobre la computadora del cliente RDP conectado.

Como suele ser el caso, decidimos comenzar a buscar vulnerabilidades en los clientes de código abierto. Parece que solo tendrá sentido comenzar a aplicar ingeniería inversa al cliente de microsoft después de que tengamos una comprensión firme del protocolo. Además, si encontramos vulnerabilidades comunes en los dos clientes de código abierto, podríamos verificar la anoxia anóxica si también se aplican al cliente de microsoft. En una verificación de reconocimiento, parecía que “rdesktop” es más pequeño que “freerdp” (tiene menos líneas de código), por lo que lo seleccionamos como nuestro primer objetivo.

Nota: decidimos realizar una auditoría de código manual pasada de moda en lugar de utilizar cualquier técnica de fuzzing. Las razones principales de esta decisión fueron la sobrecarga de escribir un fuzzer dedicado para el complejo protocolo RDP, junto con el hecho de que el uso de AFL para un protocolo con varias capas de compresión y encriptación no parecía una buena idea.

Como podemos ver, los campos “longitud” y “banderas” se analizan desde el flujo “s”, sin verificar que “s” en efecto contiene los 8 bytes requeridos para esta operación de análisis. Si bien esto generalmente solo conduce a una lectura fuera de límites, podemos combinar esta vulnerabilidad con una vulnerabilidad adicional en varios de los canales internos y lograr un efecto mucho más grave.

Al leer demasiados datos, ataque de ansiedad frente a ataque de pánico reddit del flujo, i.E. Enviando un paquete cortado al cliente, el invariante que “s->p final ”rompe. Esto conduce a un desbordamiento de enteros cuando se calcula “pkglen”, y a un desbordamiento de enteros adicional al asignar “xmalloc (pkglen + 1)” bytes para nuestro búfer, como se puede ver en mi comentario sobre la llamada a “xmalloc”.

Y de hecho, a primera vista, el código parecía mucho mejor: hay controles de tamaño mínimo antes de analizar los datos del paquete recibido, y el código “se siente” más maduro. Va a ser un reto. Sin embargo, después de un examen más profundo, comenzamos a encontrar grietas en el código y, finalmente, también encontramos vulnerabilidades críticas en este cliente.

A esta vulnerabilidad específica le sigue una cantidad controlada (“bitmapupdate->número ”) de asignaciones de montón (con un tamaño controlado) cuando los rectángulos se analizan y almacenan en la matriz, otorgando al atacante una gran primitiva de configuración de montón. La desventaja de esta vulnerabilidad es que la mayoría de los campos de rectángulo tienen solo 16 bits de ancho, y se actualizan a 32 bits para ser almacenados en la matriz. A pesar de esto, logramos explotar este CVE en nuestra poc. Incluso este desbordamiento de búfer basado en el montón parcialmente controlado es suficiente para una ejecución remota de código.

Comenzamos probando nuestras poc para las vulnerabilidades en los clientes de código abierto. Desafortunadamente, todos ellos causaron que el cliente se cerrara limpiamente, sin ningún tipo de bloqueo. Teniendo encefalopatía isquémica hipóxica en adultos no más excusas, abrimos IDA y comenzamos a rastrear el flujo de los mensajes. Muy pronto, nos dimos cuenta de que la implementación de Microsoft es mucho mejor que las implementaciones que probamos anteriormente. En realidad, parece que el código de Microsoft es mejor en varios órdenes de magnitud, ya que contiene:

Cuando verificamos “rdesktop” y “freerdp”, encontramos varias vulnerabilidades en el canal de uso compartido del portapapeles (cada capa de datos lógicos se denomina canal). Sin embargo, en ese momento, no le prestamos mucha atención porque solo compartían dos formatos: texto sin formato y texto sin código. Esta vez parece que Microsoft admite varios formatos de datos compartidos más, ya que la tabla de conmutadores que vimos era mucho más grande que antes.

Después de leer más sobre los diferentes formatos en MSDN, un formato atrajo de inmediato nuestra atención: “CF_HDROP”. Este formato parece ser responsable de “arrastrar & drop ”(de ahí el nombre H DROP), y en nuestro caso, la“ copia ” & pegar “característica. Es posible simplemente copiar un grupo de archivos de la primera computadora y pegarlos con ansiedad en kannada en la segunda computadora. Por ejemplo, un investigador de malware podría querer copiar el registro de salida de su script desde la máquina virtual remota a su escritorio.

Fue más o menos en este punto, mientras intentaba averiguar el flujo de los datos, omer (@gullomer) me preguntó si y dónde se llama pathcanonicalizea. Si el cliente no canónica ni desinfecta correctamente las rutas de los archivos que recibe, podría ser vulnerable a un ataque que atraviese la ruta, lo que permitirá que el servidor elimine los archivos icd 10 del trastorno de ansiedad social arbitrarios en rutas arbitrarias en la computadora del cliente, un ataque muy fuerte primitivo. Después de no poder encontrar las importaciones para la función de canonicalización, profundizamos más, intentando averiguar la arquitectura general para este flujo de datos.

Si miramos hacia atrás en los pasos realizados en los datos recibidos del portapapeles, notamos que el cliente no verifica el bloc fgd recibido que vino del servidor RDP. Y, de hecho, si modificamos el servidor para que incluya una ruta de acceso transversal de la forma: .. \ canary1.Txt, clipspy nos muestra (ver figura 9) que se almacenó “tal cual” en el portapapeles del cliente:

Si un cliente usa la copia & La función “pegar” sobre una conexión RDP, un servidor RDP malintencionado puede colocar de forma transparente archivos arbitrarios en ubicaciones de archivos arbitrarios en la computadora del cliente, limitada solo por los permisos del cliente. Por ejemplo, podemos colocar scripts maliciosos en la carpeta de “inicio” del cliente y, después de reiniciar, se ejecutarán en su computadora, lo que nos dará el control total.

Cada vez que se actualiza un portapapeles a cada lado de la conexión RDP, se envía un mensaje CLIPRDR_FORMAT_LIST al otro lado, para notificarle sobre los nuevos formatos de portapapeles que ahora están disponibles. Podemos imaginarlo como una sincronización completa entre los portapapeles de ambas partes (a excepción de un pequeño conjunto de formatos que se tratan de manera diferente por la propia conexión RDP). Esto significa que se notifica a nuestro servidor malicioso cada vez que el cliente copia algo en su portapapeles “local”, y ahora puede consultar los valores y leerlos. Además, el servidor puede notificar al cliente sobre una “actualización” del portapapeles sin la necesidad de una operación de “lista de síntomas de ataque de ansiedad de copia” dentro de la ventana de RDP, por lo que controla completamente el portapapeles del cliente sin que se note.

Un servidor RDP malintencionado puede modificar cualquier contenido del portapapeles usado por el cliente, incluso si el cliente no emite una operación de “copia” dentro de la ventana de RDP. Si hace clic en “pegar” cuando una conexión RDP está abierta, es vulnerable a este tipo de ataque. Por ejemplo, si copia un archivo en su computadora, el servidor puede modificar su archivo (ejecutable?) / Piggy-back su copia para agregar archivos adicionales / archivos de paso de ruta usando la poc mostrada anteriormente.

Durante nuestra investigación, encontramos numerosas vulnerabilidades críticas en los clientes de RDP probados. Aunque la calidad del código de los diferentes clientes varía, como puede verse en la distribución de las vulnerabilidades que encontramos, argumentamos que el protocolo de escritorio remoto es complicado y es propenso a las vulnerabilidades. Como demostramos en nuestras pociones, tanto para la clínica de mayo de lesiones cerebrales anóxicas de Microsoft como para los clientes de código abierto, un servidor RDP malintencionado puede aprovechar las vulnerabilidades de los clientes de RDP para lograr la ejecución remota de código en la computadora del cliente.

Debido a que el personal de TI y los trabajadores técnicos utilizan regularmente RDP para conectarse a computadoras remotas, recomendamos encarecidamente a todos que apliquen parches a sus clientes RDP. Además, debido a la naturaleza de los hallazgos del portapapeles que mostramos en el cliente RDP de microsoft, recomendamos a los usuarios que deshabiliten el canal de uso compartido del portapapeles (activado de forma predeterminada) cuando se conectan a una máquina remota.