• Saltar al contenido principal
  • Saltar a la barra lateral principal
  • Saltar al pie de página

Una al Día

Boletín de noticias de Seguridad Informática ofrecido por Hispasec

Usted está aquí: Inicio / Vulnerabilidades / Elevación de privilegios local en el cliente Steam para Windows

Elevación de privilegios local en el cliente Steam para Windows

22 agosto, 2019 Por Francisco Salido Deja un comentario

El investigador de seguridad Vasily Kravets ha hecho público un nuevo «día cero» en la popular plataforma de juegos Steam, que permite escalar privilegios en sistemas Windows.

Kravets ya fue noticia el pasado 17 de agosto por el descubrimiento de otra vulnerabilidad que permitía escalar privilegios a través de Steam, la cual reportó a la compañía a través de su programa de «bug bounty». Sin embargo, Valve prohibió a Kravets el acceso a su sistema de recompensas.

Por este motivo, Vasily Kravets ha revelado públicamente esta otra vulnerabilidad a la cual se le ha asignado el identificador CVE-2019-15316.

A continuación se explican los detalles técnicos sobre la explotación. Ésta consta de tres fases:

Primera fase: preparación del entorno

El primer paso será adaptar la estructura de ficheros de Steam. Nuestro objetivo será tener el ejecutable «Steam.exe» y «steamclient.dll» en una misma carpeta, sin la carpeta «bin». Esto podemos conseguirlo de dos formas:

Método 1:
Renombrar/eliminar la carpeta «bin» de la raíz de Steam.

Método 2:
Cambiar el parámetro «InstallPath» en la clave de registro «HKLM\SOFTWARE\Wow6432Node\Valve\steam» y mover «Steam.exe» y «steamclient.dll» al nuevo path elegido.

Una vez tenemos la estructura de ficheros deseada, necesitamos crear las carpetas «b1», «b2», «b3», «b4» en ese mismo directorio. Copiaremos «steamservice.dll» en «b1», «b2» y «b3» y colocaremos nuestra versión manipulada de la DLL en «b4».

Segunda fase: intercambiar el fichero

Registro de ejecución de Steam Client. Fuente: amonitoring.ru

En la captura de pantalla puede verse el registro del servicio «Steam Client» legítimo. En la parte señalada puede observarse cómo la DLL es leída y copiada a la carpeta «C:\Program Files (x86)\Common Files\Steam» para posteriormente ser leída. Este mecanismo será el que utilicemos para copiar la librería modificada.

A continuación se detallan los pasos necesarios para provocar la condición de carrera de tipo TOCTOU (TIME OF CHECK TO TIME OF UPDATE) necesaria para evadir a los mecanismos anti-secuestro implementados en el cliente Steam.

  1. Creamos la carpeta «bin» dentro de nuestra estructura de ficheros y ejecutamos el siguiente comando desde la consola: CreateMountPoint.exe С:\{DIRECTORIO_PREPARADO}\bin C:{DIRECTORIO_PREPARADO}\b1
  2. En la primera terminal hacemos SetOpLock.exe C:\{DIRECTORIO_PREPARADO}\b1\steamservice.dll
  3. Ejecutamos el servicio «Steam Client»
  4. Eliminamos la carpeta С:\{DIRECTORIO_PREPARADO}\bin, creamos la carpeta С:\{DIRECTORIO_PREPARADO}\bin (mismo nombre y lugar) y ejecutamos lo siguiente en una segunda terminal: CreateMountPoint.exe С:\{DIRECTORIO_PREPARADO}\bin C:\{DIRECTORIO_PREPARADO}\b2
  5. En la segunda terminal hacemos: SetOpLock.exe C:\{DIRECTORIO_PREPARADO}\b2\steamservice.dll
  6. Liberamos el «oplock» de la primera terminal.
  7. Eliminamos la carpeta С:\{DIRECTORIO_PREPARADO}\bin, creamos la carpeta С:\{DIRECTORIO_PREPARADO}\bin (mismo nombre y lugar) y ejecutamos lo siguiente en la primera terminal: CreateMountPoint.exe С:\{DIRECTORIO_PREPARADO}\bin C:\{DIRECTORIO_PREPARADO}\b3
  8. En la primera terminal hacemos: SetOpLock.exe C:\{DIRECTORIO_PREPARADO}\b3\steamservice.dll
  9. Liberamos el «oplock» de la segunda terminal.
  10. Eliminamos la carpeta С:\{DIRECTORIO_PREPARADO}\bin, creamos la carpeta С:\{DIRECTORIO_PREPARADO}\bin y ejecutamos lo siguiente en una segunda terminal: CreateMountPoint.exe С:\{DIRECTORIO_PREPARADO}\bin C:{DIRECTORIO_PREPARADO}\b2
  11. En la segunda terminal ejecutamos: SetOpLock.exe C:\{DIRECTORIO_PREPARADO}\b2\steamservice.dll
  12. Liberamos el «oplock» de la primera terminal.
  13. Eliminamos la carpeta С:\{DIRECTORIO_PREPARADO}\bin, creamos la carpeta С:\{DIRECTORIO_PREPARADO}\bin y ejecutamos lo siguiente en una segunda terminal: CreateMountPoint.exe С:\{DIRECTORIO_PREPARADO}\bin C:{DIRECTORIO_PREPARADO}\b3
  14. En la primera terminal ejecutamos: SetOpLock.exe C:\{DIRECTORIO_PREPARADO}\b3\steamservice.dll
  15. Liberamos el «oplock» de la segunda terminal.
  16. Eliminamos la carpeta С:\{DIRECTORIO_PREPARADO}\bin, creamos la carpeta С:\{DIRECTORIO_PREPARADO}\bin y ejecutamos lo siguiente en una segunda terminal: CreateMountPoint.exe С:{DIRECTORIO_PREPARADO}\bin C:{DIRECTORIO_PREPARADO}\b4
  17. Eliminamos el «oplock» de la primera terminal.

Lo que intentamos hacer es redirigir los primeros 5 accesos al archivo original y en el sexto dar el cambiazo hacia nuestra DLL manipulada.

En el siguiente esquema puede verse el flujo normal a la izquierda y a la derecha el comportamiento modificado para nuestra explotación.

Flujo de la carga de la DLL. Fuente: amonitoring.ru

Fase 3: modificar la librería inyectable

Tras realizar ingeniería inversa sobre el servicio «Steam Client», Kravets determinó el punto en el que colocar el «payload», este es, la función «int WINAPI SteamService_RunMainLoop()». Cuya existencia es requerida por el servicio para su funcionamiento.

Kravets también ha compartido dos pruebas de concepto en su página web que ilustran lo explicado anteriormente:

Más información:

One more Steam Windows Client Local Privilege Escalation 0day
https://amonitoring.ru/article/onemore_steam_eop_0day/

Compártelo:

  • Twitter
  • Facebook
  • LinkedIn
  • Reddit
  • Telegram
  • WhatsApp

Publicaciones relacionadas

Libros recomendados

Relatos para hackear el tiempo

Publicado en: Vulnerabilidades Etiquetado como: CVE-2019-15316, Elevación de privilegios, steam, Windows

Interacciones con los lectores

Deja una respuesta Cancelar la respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Barra lateral principal

Buscador

Email Newsletter

Suscríbase y reciba Una al Día en su correo.

UADCAST

Populares de UAD

  • Microsoft Edge mejora la seguridad contra sitios maliciosos con su modo de seguridad mejorado
  • Chema Alonso entrevista a Richard Stallman - Parte II
  • Ataque a la plataforma cripto deBridge Finance
  • Descubierta nueva vulnerabilidad en las cámaras IP de la conocida marca DAHUA
  • Telegram como medio para robar tarjetas de crédito

Entradas recientes

  • Microsoft Edge mejora la seguridad contra sitios maliciosos con su modo de seguridad mejorado
  • Ataque a la plataforma cripto deBridge Finance
  • Slack reinicia todas las contraseñas tras un bug que exponía los hashes de las contraseñas de algunos usuarios
  • Ciberataque a Cellebrite, publicados 4Tb de datos de la compañía
  • Reacción ante ciberataques… en vacaciones
  • Routers comerciales de Cisco afectados por varias vulnerabilidades.
  • Descubierta nueva vulnerabilidad en las cámaras IP de la conocida marca DAHUA
  • Correo electrónico
  • Facebook
  • LinkedIn
  • RSS
  • Twitter

Footer

Una al Día

Una Al Día nació a raíz de un inocente comentario en un canal IRC hace casi 19 años. A través de los archivos, un lector curioso puede ver cómo ha cambiado (o no) la seguridad de la información desde entonces.

Entradas recientes

  • Microsoft Edge mejora la seguridad contra sitios maliciosos con su modo de seguridad mejorado
  • Ataque a la plataforma cripto deBridge Finance
  • Slack reinicia todas las contraseñas tras un bug que exponía los hashes de las contraseñas de algunos usuarios
  • Ciberataque a Cellebrite, publicados 4Tb de datos de la compañía
  • Reacción ante ciberataques… en vacaciones

Etiquetas

0-day Android Apple Chrome Ciberataque cve D-Link Facebook Google iOS leak linux malware Microsoft Mozilla OpenSSL Oracle OS X Phishing PHP ransomware rce vulnerabilidad vulnerabilidades Windows WordPress

Copyright © 2022 · Hispasec

 

Cargando comentarios...