Aumento de privilegios

Los ciberdelincuentes y otros atacantes que participan en el espionaje informático tienen diversos motivos (financieros, sociopolíticos o de fama) para atacar las políticas de autorización de accesos a datos sensibles de las empresas. La finalidad de esos ataques puede ser la estafa a la empresa o el robo de información.

Normalmente, con esos ataques se comprometen las cuentas de usuario. Y también buscan vulnerabilidades que puedan aprovechar para conseguir el control de un sistema informático o aplicación.

Mediante esos medios iniciales de ataque el delincuente obtiene determinados privilegios de acceso. Después irá sondeando el sistema comprometido para ganar más privilegios y poder acceder a información sensible de otras cuentas o para conseguir el control total de un sistema.

Es decir, los atacantes suelen utilizar el aumento de privilegios para obtener acceso no autorizado a sistemas dentro del perímetro de seguridad, o sistemas sensibles, de una organización.

En este artículo, brindaremos información sobre el concepto de aumento de privilegios, sobre la diferencia entre el aumento de privilegios horizontal y vertical y cómo se produce el aumento de privilegios en Linux y en Windows.

¿Qué es el aumento de privilegios?

El aumento de privilegios es una forma común para que los atacantes obtengan acceso no autorizado a los sistemas dentro de un perímetro de seguridad.

Los atacantes comienzan por encontrar puntos débiles en las defensas de una organización y obtener acceso a un sistema. En muchos casos, ese primer punto de penetración no otorgará a los atacantes el nivel de acceso o datos que necesitan. Luego intentarán escalar los privilegios para obtener más permisos u obtener acceso a sistemas adicionales más sensibles.

En algunos casos, los atacantes que intentan escalar los privilegios descubren que las «puertas están abiertas de par en par»: controles de seguridad inadecuados o incumplimiento del principio de menor privilegio, y los usuarios tienen más privilegios de los que realmente necesitan.

En otros casos, los atacantes explotan las vulnerabilidades del software o utilizan técnicas específicas para superar el mecanismo de permisos de un sistema operativo.

Tipos

Hay dos tipos de ataques de aumento de privilegios:

Aumento de privilegios horizontales

Un atacante expande sus privilegios al hacerse cargo de otra cuenta y hacer un mal uso de los privilegios legítimos otorgados al otro usuario. Los delincuentes permanecen en el mismo nivel de privilegio de usuario general, pero pueden acceder a los datos o la funcionalidad de otras cuentas o procesos que no deberían estar disponibles para la cuenta o el proceso actual.

Por ejemplo, esto puede significar usar una estación de trabajo de oficina comprometida para obtener acceso a los datos de otros usuarios de la oficina.

Para las aplicaciones web, un ejemplo de escalada de privilegios horizontales podría ser obtener acceso al perfil de otro usuario en un sitio social o plataforma de comercio electrónico, o su cuenta bancaria en un sitio de banca electrónica.

Aumento vertical de privilegios

Un atacante intenta obtener más permisos o acceso con una cuenta existente que ha comprometido. El atacante comienza desde una cuenta menos privilegiada y obtiene los derechos de un usuario más poderoso, generalmente el administrador o usuario del sistema en Microsoft Windows, o root en sistemas Unix y Linux.

Con estos privilegios elevados, el atacante puede causar todo tipo de estragos en sus sistemas informáticos y aplicaciones:

  • robar credenciales de acceso y otra información confidencial,
  • descargar y ejecutar malware,
  • borrar datos o
  • ejecutar código arbitrario.

Peor aún, los atacantes expertos pueden usar privilegios elevados para cubrir sus huellas eliminando registros de acceso y otras pruebas de su actividad.

Potencialmente, esto puede dejar a la víctima sin saber que se produjo un ataque. De esa manera, los ciberdelincuentes pueden robar información secretamente o introducir malware directamente en los sistemas de la compañía.

Importancia del aumento de privilegios

Aunque generalmente no es el objetivo principal de un atacante, el aumento de privilegios se usa con frecuencia en preparación para un ataque más específico, lo que permite a los intrusos desplegar una carga útil maliciosa o ejecutar código malicioso en el sistema objetivo.

Esto significa que siempre que detecte o sospeche un aumento de privilegios, también debe buscar signos de otra actividad maliciosa. Sin embargo, incluso sin evidencia de nuevos ataques, cualquier incidente de aumento de privilegios es un problema de seguridad de la información en sí mismo, porque alguien podría haber obtenido acceso no autorizado a datos personales, confidenciales o confidenciales.

En muchos casos, esto deberá informarse internamente o a las autoridades pertinentes para garantizar el cumplimiento.

Para empeorar las cosas, puede ser difícil distinguir entre actividades rutinarias y maliciosas para detectar incidentes de aumento de privilegios. Esto es especialmente cierto para los usuarios deshonestos, que legítimamente podrían realizar acciones maliciosas que comprometan la seguridad.

Sin embargo, si puede detectar rápidamente una escalada de privilegios exitosa o intentada, tiene una buena posibilidad de detener un ataque antes de que los intrusos puedan establecer un punto de apoyo para lanzar su ataque principal.

Técnicas de aumento de privilegios en Windows

Existen muchos métodos de escalado de privilegios en los sistemas operativos Windows.

Aquí hay una breve revisión de tres métodos comunes y cómo puede prevenirlos.

1. Manipulación de tokens de acceso

Windows usa tokens de acceso para determinar los propietarios de los procesos en ejecución. Cuando un proceso intenta realizar una tarea que requiere privilegios, el sistema verifica quién es el propietario del proceso y ve si tienen permisos suficientes.

La manipulación de tokens de acceso implica engañar al sistema para que crea que el proceso en ejecución pertenece a otra persona que no sea el usuario que inició el proceso, otorgando al proceso los permisos del otro usuario.

Técnicas

Hay tres formas de lograr la manipulación de tokens de acceso:

  • Duplicar un token de acceso usando Windows DuplicateToken y luego usando ImpersonateLoggedOnUserfunction o SetThreadToken para asignar el token suplantado a un hilo.
  • Crear un nuevo proceso con un token suplantado utilizando la función DuplicateToken junto con la función CreateProcessWithTokenW.
  • Aprovechando el nombre de usuario y la contraseña para crear un token utilizando la función LogonUser. El atacante posee un nombre de usuario y contraseña, y sin iniciar sesión, crean una sesión de inicio de sesión, obtienen el nuevo token y ue SetThreadToken para asignarlo a un hilo. En este método, un adversario tiene un nombre de usuario y contraseña, pero el usuario no está conectado

Mitigación

No hay forma de deshabilitar los tokens de acceso en Windows. Sin embargo, para realizar esta técnica, un atacante ya debe tener acceso de nivel administrativo.

La mejor manera de prevenir el ataque es asignar derechos administrativos de acuerdo con el principio de menor privilegio, revisar periódicamente las cuentas administrativas y revocarlas si ya no se necesita acceso. Además, supervise las cuentas privilegiadas para detectar cualquier signo de comportamiento anómalo.

2. Omitir control de cuenta de usuario

El mecanismo de control de cuenta de usuario de Windows crea una distinción entre usuarios regulares y administradores.

Limita todas las aplicaciones a los permisos de usuario estándar, a menos que esté específicamente autorizado por un administrador, para evitar que el malware ponga en peligro el sistema operativo. Sin embargo, si la protección no está en el nivel más alto, algunos programas de Windows pueden escalar privilegios o ejecutar objetos COM con privilegios administrativos.

Mitigación

Revisa los sistemas de TI y asegúrese de que la protección de control de cuenta de usuario esté configurada al más alto nivel, o si esto no es posible, aplica otras medidas de seguridad.

Revisa periódicamente qué cuentas son un grupo de administradores locales en sistemas confidenciales y elimina los usuarios regulares que no deberían tener derechos administrativos.

3. Secuestro de orden de búsqueda de DLL

Los atacantes pueden realizar la «precarga de DLL». Un archivo DLL es una biblioteca que contiene código y datos que pueden utilizarse por varios programas al mismo tiempo.

Esto implica plantar una DLL maliciosa con el mismo nombre que una DLL legítima, en una ubicación que el sistema busca antes de la DLL legítima. A menudo, este será el directorio de trabajo actual, o en algunos casos los atacantes pueden configurar de forma remota el directorio de trabajo en un volumen de archivo externo. El sistema encuentra la DLL en la carpeta de trabajo, pensando que es la DLL legítima, y ​​la ejecuta.

Técnicas

Hay varias otras formas de lograr el secuestro de órdenes de búsqueda de DLL:

  • Reemplazar una DLL existente o modificar un archivo, directorio o unión de redirección .manifest o .local
  • Realizar el secuestro de DLL de orden de búsqueda en un programa vulnerable que tiene un nivel de privilegio más alto, haciendo que la DLL del atacante se ejecute en el mismo nivel de privilegio. Esto se puede usar para elevar los privilegios de usuario a administrador, o de administrador a SYSTEM.
  • Cubriendo el ataque cargando las DLLS legítimas junto con las DLL maliciosas, para que los sistemas parezcan ejecutarse como de costumbre.

Mitigación

Las formas de prevenir un secuestro de orden de búsqueda de DLL son:

  • No permitir la carga de archivos DLL remotos
  • Habilitar el modo de búsqueda segura de DLL para forzar la búsqueda de DLL del sistema en directorios con mayores restricciones
  • Usar herramientas de auditoría como PowerSploit para detectar vulnerabilidades de secuestro de órdenes de búsqueda de DLL y corregirlas
  • Identificar y bloquear el software ejecutado mediante el secuestro de órdenes de búsqueda, utilizando herramientas de listas blancas como AppLocker.

Aumento de privilegios en Linux

En los sistemas Linux, los atacantes usan un proceso llamado «enumeración» para identificar las debilidades que pueden permitir el aumento de privilegios.

La enumeración implica:

  • Usar búsquedas de Google, escaneo de puertos e interacción directa con un sistema para obtener más información y ver cómo responde a las entradas.
  • Ver si hay compiladores o lenguajes de programación de alto nivel como Perl o Python, que pueden permitir a un atacante ejecutar código de explotación.
  • Identificar componentes de software, como servidores web y sus versiones.
  • Recuperar datos de directorios clave del sistema como / etc, / proc, ipconfig, lsof, netstat y uname.

Los atacantes usan herramientas automatizadas para realizar enumeraciones en sistemas Linux. También debe usar las mismas herramientas para evitar un ataque, escaneando su propio sistema, identificando debilidades y resolviéndolas.

A continuación se presentan dos técnicas específicas para escalar privilegios en Linux y cómo mitigarlos.

1. Explotar Kernel

De vez en cuando, se descubren vulnerabilidades en el kernel de Linux. Los atacantes pueden explotar estas vulnerabilidades para obtener acceso de root a un sistema Linux, y una vez que el sistema está infectado con el exploit, no hay forma de defenderse contra él.

Los atacantes siguen los siguientes pasos:

  • Aprender sobre las vulnerabilidades
  • Desarrollar o adquirir código de explotación
  • Transferir el exploit al objetivo
  • Ejecutar el exploit en el objetivo

Mitigación

Sigue los informes de seguridad e instala rápidamente actualizaciones y parches de Linux.

Restringe o elimina programas que permiten transferencias de archivos, como FTP, SCP o curl, o restringirlos a usuarios o IP específicos. Esto puede evitar la transferencia de un exploit a un dispositivo objetivo.

Elimina o restringe el acceso a los compiladores, como GCC, para evitar que se ejecuten exploits. También debes limitar qué carpetas son de escritura o ejecutables.

2. Explotando los Derechos SUDO

SUDO es un programa de Linux que posibilita que los usuarios puedan ejecutar programas con los privilegios de seguridad de otro usuario. Las versiones anteriores se ejecutarían como superusuario de forma predeterminada.

Los atacantes pueden intentar comprometer a un usuario que tiene acceso SUDO a un sistema y, si tiene éxito, obtienen privilegios de root.

Un escenario común es que los administradores otorgan acceso a algunos usuarios para ejecutar comandos SUDO supuestamente inofensivos, como ‘buscar’. Sin embargo, los parámetros del contenedor de comandos ‘find’ que permiten la ejecución de comandos, por lo que si los atacantes comprometen la cuenta de ese usuario, pueden ejecutar comandos con privilegios de root.

Mitigación

Nunca otorgues derechos SUDO al compilador, intérprete o editores del lenguaje de programación, incluidos vi, more, less, nmap, perl, ruby, python, gdb. Tampoco otorgues derechos SUDO a ningún programa que permita ejecutar un shell. Y limita severamente el acceso SUDO usando el principio de menor privilegio.

Protección frente al aumento de privilegios

Los atacantes pueden usar muchas técnicas de aumento de privilegios para lograr sus objetivos.

Pero para intentar el aumento de privilegios en primer lugar, generalmente necesitan obtener acceso a una cuenta de usuario menos privilegiada. Esto significa que las cuentas de usuario habituales son su primera línea de defensa, por lo tanto, usa estos sencillos consejos para garantizar fuertes controles de acceso:

Aplicar políticas de contraseña

Esta es la forma más sencilla de mejorar la seguridad, pero también la más difícil de aplicar en la práctica. Las contraseñas deben ser lo suficientemente seguras como para ser seguras, pero sin inconvenientes para los usuarios.

Crea usuarios y grupos especializados con privilegios mínimos necesarios y acceso a archivos

Aplica la regla de permisos mínimos necesarios para mitigar el riesgo que representan las cuentas de usuario comprometidas. Recuerda que esto se aplica no solo a los usuarios normales, sino también a las cuentas con mayores privilegios.

Si bien es conveniente dar a los administradores privilegios administrativos totales para todos los recursos del sistema, efectivamente proporciona a los atacantes un único punto de acceso al sistema o incluso a toda la red local.

Evita errores de programación comunes en tus aplicaciones

Las aplicaciones proporcionan el punto de entrada más fácil para cualquier ataque, por lo que es vital mantenerlas seguras.

Sigue las mejores prácticas de desarrollo para evitar errores de programación comunes que con frecuencia son utilizados por atacantes, como desbordamientos de búfer, inyección de código y entrada de usuario no validada.

Protege tus bases de datos y desinfecta las entradas de los usuarios

Los sistemas de bases de datos son objetivos especialmente atractivos, ya que muchas aplicaciones y marcos web modernos almacenan todos sus datos en bases de datos, incluidas las configuraciones, las credenciales de inicio de sesión y los datos del usuario.

Con solo un ataque exitoso, por ejemplo mediante inyección SQL, los atacantes pueden obtener acceso a toda esta información y usarla para más ataques.

Mantén tus sistemas y aplicaciones parcheados y actualizados

No todos los ataques de aumento de privilegios se dirigen directamente a las cuentas de usuario; los privilegios de administrador también se pueden obtener al aprovechar los errores de la aplicación y del sistema operativo y los defectos de configuración.

Con una gestión cuidadosa de los sistemas, puede minimizar su superficie de ataque.

Muchos ataques explotan errores conocidos, por lo que al mantener todo actualizado, está limitando severamente las opciones de los atacantes.

Garantiza los permisos correctos para todos los archivos y directorios

Al igual que con las cuentas de usuario, sigue la regla de permisos mínimos necesarios: si algo no necesita escritura, mantenlo solo como lectura, incluso si significa un poco más de trabajo para los administradores.

Cierra los puertos innecesarios y elimina las cuentas de usuario no utilizadas

Las configuraciones predeterminadas del sistema a menudo incluyen servicios innecesarios que se ejecutan en puertos abiertos, y cada uno es una vulnerabilidad potencial.

También debes eliminar o cambiar el nombre de las cuentas de usuario predeterminadas y no utilizadas para evitar dar a los atacantes un comienzo fácil.

Elimina o restringe estrictamente toda la funcionalidad de transferencia de archivos

Los atacantes generalmente necesitan una forma de descargar sus scripts de explotación y otro código malicioso, así que echa un vistazo de cerca a todas las herramientas y utilidades del sistema que permiten las transferencias de archivos, como FTP, TFPT, wget, curl y otros. Elimina las herramientas que no necesitas y bloquea las que quedan, restringiendo su uso a directorios, usuarios y aplicaciones específicos.

Cambie las credenciales predeterminadas en todos los dispositivos, incluidos los enrutadores e impresoras

Aunque parece obvio, cambiar las credenciales de inicio de sesión predeterminadas es un paso crucial que a menudo se pasa por alto, especialmente para sistemas menos obvios, como impresoras, enrutadores y dispositivos IoT.

No importa qué tan bien protejas tus sistemas operativos o aplicaciones, solo un enrutador con una contraseña predeterminada de administrador o una impresora de red con un puerto Telnet abierto podría ser suficiente para proporcionar un punto de apoyo a los atacantes.

Analiza regularmente tus sistemas y aplicaciones en busca de vulnerabilidades

Usa escáneres de vulnerabilidades para verificar tus sistemas y aplicaciones en busca de vulnerabilidades. Los escáneres modernos se actualizan con frecuencia, lo cual es vital en el entorno de amenazas acelerado de hoy.

Incluso si tu sistema o aplicación estuvo segura el mes pasado o incluso la semana pasada, se publican nuevos informes de vulnerabilidades y vulnerabilidades todos los días, y tus sistemas e información podrían estar en peligro en cualquier momento.