Inyección de código en procesos windows

Iniciado por XKC, 3 Enero 2019, 23:01 PM

0 Miembros y 1 Visitante están viendo este tema.

XKC

Hola buenas,
Tengo una duda acerca de un concepto.
A raíz de estudiar dll injection, me he dado cuenta que se puede hacer esto también
https://www.mpgh.net/forum/showthread.php?t=986479
En realidad dll injection es inyectar el código que obliga a cargar la dll, pero a parte de ese código se puede inyectar lo que uno quiera.

La cuestión que me escama es la siguiente, ¿no os parece un fallo de windows muy gordo?, quiero decir, se esta permitiendo modificar procesos a tu antojo.
Estoy buscando info acerca de como se gestionan los privilegios, puesto que si no una escalación de privilegios seria tan sencilla como inyectar código en cualquier proceso que se ejecute como admin y voila..
Tengo un fallo de concepto aquí,
¿Porque windows permite que un proceso escriba en la memoria de otro?
¿Que requisitos se deben cumplir para que esto pueda llevarse a cabo, es decir, privilegios de sistema, etc..?


Gracias a todos por vuestro tiempo.

Un saludo
Para poder atacar y vencer con seguridad, ataca donde ellos no puedan defenderse.
Para defenderte y resistir firme, defiéndete en donde ellos no atacarán.

fary

Exacto... puedes inyectar una DLL o simplemente código  :)

https://foro.elhacker.net/analisis_y_diseno_de_malware/inyecciones_de_codigo_en_memoria-t446557.0.html

Si mal no recuerdo tu aplicación se tiene que estar ejecutando como administrador... pero vamos, que eso es probar y se comprueba rápido.

saludos.
Un byte a la izquierda.

ThunderCls

Cita de: XKC en  3 Enero 2019, 23:01 PM
¿Porque windows permite que un proceso escriba en la memoria de otro?

Pues porque esto le da al SO una flexibilidad impresionante, aunque como todo en la vida puede ser usado con buenos fines pero tambien con malos fines como es el caso del malware. Pero si hay muchos "buenos usos" de la injeccion de codigo por parte de los desarrolladores y te pongo algunos ejemplos:
1- Los programas antivirus a menudo inyectan código en los procesos. Pueden usarlo para monitorear el tráfico de la red, bloquear contenido web peligroso, o usarlo en tecnicas de heuristica, por ejemplo.
2- Muchas aplicaciones de terceros pueden usar la inyeccion de codigo para agregar funcionalidad al propio sistema o a otras aplicaciones de terceros (aplicaciones de temas visuales, shortkeys, plugins, etc)
3- Los drivers graficos de NVIDIA inyectan DLLs en varios procesos para realizar tareas graficas
4- etc.....

La inyeccion DLL nunca va a ser 100% segura, es un metodo no muy limpio de lograr diferentes objetivos en el sistema, pero sin embargo ahi esta como una parte normal del SO, constantemente sucediendo sin que te des cuenta.


Cita de: XKC en  3 Enero 2019, 23:01 PM
¿Que requisitos se deben cumplir para que esto pueda llevarse a cabo, es decir, privilegios de sistema, etc..?

La apertura de otro proceso se somete a restricciones. Desde Vista, existen algunas protecciones junto con Microsoft UAC. La protección principal para la memoria de proceso es el Control de integridad obligatorio (MIC). MIC es un método de protección para controlar el acceso a objetos en función de su "nivel de integridad". Hay 4 niveles de integridad:

    Nivel bajo para el proceso que está restringido para acceder a la mayoría del sistema (por ejemplo, Internet Explorer)
    Nivel medio es el valor predeterminado para cualquier proceso iniciado por usuarios sin privilegios y también usuarios de administrador si UAC está habilitado.
    Alto nivel para procesos en ejecución con privilegios de administrador.
    Los usuarios del SISTEMA ejecutan el nivel del sistema, generalmente el nivel de los servicios y procesos del sistema que requieren la mayor protección.

Para nuestra preocupación, eso significa que el proceso del inyector solo podrá inyectarse en un proceso que se ejecuta con un nivel de integridad inferior o igual.
Por ejemplo, si UAC está activado, incluso si la cuenta de usuario es administrador, el proceso se ejecutará en el nivel de integridad "Medio" (a menos que se ejecute específicamente como administrador).

fuente: http://blog.sevagas.com/?PE-injection-explained
-[ "...I can only show you the door. You're the one that has to walk through it." – Morpheus (The Matrix) ]-
http://reversec0de.wordpress.com
https://github.com/ThunderCls/