Los otros comentarios olvidan algo. Un atacante puede pasar de un contexto no privilegiado (sin derechos de administrador) a un contexto privilegiado (derechos de administrador) si se ejecuta en una cuenta que en realidad es de un administrador. Esto se llama un bypass UAC.
El ataque
Como es de esperar, este ataque involucra técnicas de inyección de código, como AtomBombombing (pero en realidad, cualquier otro método, incluso el simple CreateRemoteThread funcionará).
Esto se hace en 2 pasos. Lo primero que debe hacer es, efectivamente, inyectar código en ciertos procesos que se ejecutan en modo de usuario. Hay algunos procesos vulnerables, pero hablaré de explorer.exe
, que también es el más estable. Este proceso no es como los demás, es especial ya que tiene muchos usos. Es por eso que tiene algunos privilegios especiales. Por ejemplo, la interfaz COM IFileOperation puede elevarse; Esto significa que se ejecutará con algún tipo de privilegios de administrador. Esto puede parecer inútil, ya que solo puede escribir archivos con derechos de administrador. ¡Pero no lo es! Ya que puedes usar eso para realizar otro ataque; Secuestro de DLL. Este es el paso 2. Básicamente, colocaría su evil.dll
, que puede estar integrado en el evil.exe
, en el mismo lugar donde se encuentran los procesos autoelevados; Los programas o procesos autoelevados son programas que, una vez ejecutados, obtendrán automáticamente los derechos de administrador. En breve, esto lo realiza Microsoft, ya que esos programas deben tener esos privilegios para ejecutarse correctamente y realizar tareas como tareas automatizadas. Finalmente, ejecutaríamos ese programa, que cargará evil.dll
y luego aumentará automáticamente, por lo que otorgaremos privilegios de administrador al código del atacante.
Mitigation
Microsoft intentó parchear el segundo paso en el pasado, mediante la inclusión en la lista blanca de archivos .dll y técnicas similares, pero fallaron, ya que podemos omitirlo fácilmente simplemente reemplazando los archivos .dll existentes en algunos casos.
El primer paso no va a ser parchado en absoluto. Microsoft no ha parchado otros métodos de inyección como CreateRemoteThread, ¿por qué parchearían Atombombing? Eso requeriría un gran esfuerzo y una gran modificación del sistema operativo, lo que probablemente no sucederá. La única forma de evitar eso sería eliminar esos derechos especiales de programas como el explorador, pero parece que eso tampoco va a suceder. Entonces, básicamente, depende de los AV para detectar si los programas malintencionados intentarán inyectar código utilizando cualquier método.
Puede ver un POC de la vulnerabilidad arriba aquí
EDITAR: Olvidé algunos puntos de la pregunta. Por lo tanto, estas son las formas técnicas para evitar que Atombombing tenga éxito:
-API enganche: una solución antivirus puede interceptar y escanear todos los intentos de modificar la tabla atom. Las funciones GlobalAddAtom () y GlobalGetAtomName () son las utilizadas para realizar este ataque. Podrían interceptar las llamadas y escanear los datos que se agregarán a la tabla Atom, buscando palabras clave o, más probablemente, tratando de analizar los datos, si se trata de un código de shell.