Páginas: [1]
|
 |
|
Autor
|
Tema: Continuacion troyano. Dudas: Inyeccionn dll y hooking (Leído 405 veces)
|
Yibam
Desconectado
Mensajes: 39
|
Hola a todos,
Una vez realizado el proyecto de reeenvio de cmd entre un cliente y un servidor (jejeje) ,intentando simular el netcat, pero realizando el cliente en .NET desarrollado en VC2008 y el server en Devcpp, ya que me encontre que si realizaba el server con el IDE de Microsoft cuando lo introducia en un equipo, este no funcionaba ya que le faltaba el runtime( Os lo cuento como anecdota ).
Bueno el server, tras (AGRADECIMIENTOS !!!) MUCHAS CONSULTAS EN ESTE FORO y SU SIEMPRE PRONTA CONTESTACION, tiene la funcion por la que mas me he vuelto loco (UNA reverse shell que se volcara en una ventana de .NET, del cliente, evidentemente).
Despues de solucionar esto, decidi encapsular el buffer de I/O por el puerto 80 sobre HTML, de esta forma me saltare firewalls y demas.
Pero de repente un dia leyendo y navegando, me encuentro con un documento de EON sobre la inyeccion de procesos con CreateRemoteThread y Hooking, y Yeahhh, descubro que si inyecto mi server al iexplorer, posiblemente se pueda saltar ... pero y he aqui mi duda:
Ejm Conceptual (Briefing): Bueno tengo inyectado el server a iexplorer y cuando arranque el mismo arranco mi server, si, muy bien, pero debere seguir encapsulando mi transmision tal y como dije antes, ó, soy muy tonto y es mucho mas simple y no lo veo.
Como podeis ver mi duda es de concepto o funcional, que debo o puedo hacer??? Voy bien por donde voy???, jejeje. Bueno espero como siempre una ayuda.
Gracias.
|
|
|
|
|
En línea
|
|
|
|
E0N
Lab &
Colaborador
Desconectado
Mensajes: 2.591
Por variar un poco de avatar.. :P
|
Y la duda cual es exactamente? inyectas el server en el navegador (no hace falta que esperes a que el usuario lo encienda, lo puedes lanzar oculto he inyectar  ) y realizas las conexiones con total normalidad. De todas formas la inyección a día de hoy no es muy útil para esas cosas, por que el firewall/AV no te cortará la conexión, pero te detecta la inyección en si, y no me refiero al escanear, que una inyección hasta con CreateRemoteThread es fácil de dejar indetectable, me refiero en el momento de ejecutarlo... Salu2
|
|
|
|
|
En línea
|
|
|
|
Yibam
Desconectado
Mensajes: 39
|
Y la duda cual es exactamente? inyectas el server en el navegador (no hace falta que esperes a que el usuario lo encienda, lo puedes lanzar oculto he inyectar  ) y realizas las conexiones con total normalidad. De todas formas la inyección a día de hoy no es muy útil para esas cosas, por que el firewall/AV no te cortará la conexión, pero te detecta la inyección en si, y no me refiero al escanear, que una inyección hasta con CreateRemoteThread es fácil de dejar indetectable, me refiero en el momento de ejecutarlo... Salu2 Hola EON de nuevo, Vale, vale, vamos a ver lo que te quiero decir es lo siguiente. Si inyecto el server al iexplorer, entiendo que el firewall/AV vera que la conexion lo lanza un proceso autorizado, aunque la conexion la haga por un puerto distinto al 80, por lo que si ademas quiero saltarme las reglas del Firewall, debere de seguir encapsulando mi comunicacion por el puerto 80, si o no? Por otro lado, y como siempre agradecido, alguna otra documentación en asm o c/c++ de este maravilloso tema?? Gracias como siempre y un saludo.
|
|
|
|
|
En línea
|
|
|
|
Yibam
Desconectado
Mensajes: 39
|
Hola a todos,
Bueno despues de leer un poco, creo, que me puedo contestar:
Por un lado para saltarse un firewall, hay que tener en cuenta dos cosas:
1. Firewall de software, que comprueba por permisos, ejecutables concretos, Ejecucion de APIs, ejm CreateRemoteThread y demas ...
2. Y por otro lado las reglas propias de un Firewall Hardware (o IDS soft, etc) que te cuenta que el puerto 80 esta abierto para HTTP y punto, y o encapsulas el trafico por ahi o nada de nada.
Bueno pues interesandome por el primer punto, veo una serie de problemas ...
Como podemos ocultar la euristica sobre CreateRemoteProcess()??, se puede ocultar de alguna manera esta llamada?, teneis alguna idea?.
He visto que se puede inyectar codigo sin inyectar dll (Que es muy cantoso), como por el metodo code cave, este tambien es detectable?[/color] (Si quieres te lo paso lo he visto en este foro).
Muchas gracias por todo. Seguire investigando y os cuento.
|
|
|
|
|
En línea
|
|
|
|
Ferсhu
Desconectado
Mensajes: 1.225
Menos palabras y Mas codigos.
|
Como podemos ocultar la euristica sobre CreateRemoteProcess()??, se puede ocultar de alguna manera esta llamada?, teneis alguna idea?.
He visto que se puede inyectar codigo sin inyectar dll (Que es muy cantoso), como por el metodo code cave, este tambien es detectable?[/color] (Si quieres te lo paso lo he visto en este foro). Si usas esa Api te detecta la Api, si injectas codigo con esa Api te va a seguir detectando la Api...asi q tmb es detectable. Y lo del puerto 80 recuerda q es solo para entrar....para "salir" podes conectar a cualquier puerto....osea si es de conexion inversa, no importa el firewall.
|
|
|
|
|
En línea
|
|
|
|
E0N
Lab &
Colaborador
Desconectado
Mensajes: 2.591
Por variar un poco de avatar.. :P
|
Si inyecto el server al iexplorer, entiendo que el firewall/AV vera que la conexion lo lanza un proceso autorizado, aunque la conexion la haga por un puerto distinto al 80, por lo que si ademas quiero saltarme las reglas del Firewall, debere de seguir encapsulando mi comunicacion por el puerto 80, si o no? Cualquier firewall reciente y medianamente bueno te va a detectar la inyección, da igual el puerto que uses. Lo del puerto 80 ni lo he probado, por que si ya te detectan la inyección en si... Como podemos ocultar la euristica sobre CreateRemoteProcess()?? Si, si que se puede, puedes saltarte los avs sin probelmas, hechale imaginación  Lo dificil no es la heurística, si no el hooking que hace el firewall He visto que se puede inyectar codigo sin inyectar dll (Que es muy cantoso), como por el metodo code cave, este tambien es detectable? No se que método será ese, yo se inyectar sin usar dll a golpe de WriteProcessMemory y para ejecutarlo pues se pueden hacer muchas cosas, si usas CreteRemotheThread, pues andas en las mismas, pero no hace falta usarlo para que tu código se ejecute Y lo del puerto 80 recuerda q es solo para entrar....para "salir" podes conectar a cualquier puerto....osea si es de conexion inversa, no importa el firewall. Pues te recomiendo que cambies de firewall xDDD Yo creo que menos el de windows xp todos detectan las conexiones salientes, la conexión inversa ya no es útil para saltar ningún firewall, lo único para solucionar el tema de los puertos del router (que no se si te referiras al firewall del router..) Salu2
|
|
|
|
|
En línea
|
|
|
|
Yibam
Desconectado
Mensajes: 39
|
Como podemos ocultar la euristica sobre CreateRemoteProcess()?? Si, si que se puede, puedes saltarte los avs sin probelmas, hechale imaginación  Lo dificil no es la heurística, si no el hooking que hace el firewall Jejejeje Hola EON y Ferchu ante todo gracias por las contestaciones, jejeje, pero ... creo que no se debe de utilizar la API CreateRemoteThread, sino: Debes de localizar un Thread al proceso que le vas a inyectar, realizarle un resume(al thread), coger el contexto, aunque a mi me vale con la siguiente direccion a ejecutar (direccion eip), cargar porcion de memoria, parchear codigo para cargar LoadLibrary en ese espacio cargado y por ultimo volver a darle el control al thread original. Sino? Teneis vosotros otra manera?Pör ultimo y respecto al puerto 80, Evidentemente el sistema que tengo para realizar la PoC, tiene equipos locales con su firewall software, y luego un firewall cisco en la LAN que controla los puertos y tan solo tiene abiertos HTTP, HTTPS, POP y SMTP, asi que ya me direis que puedo hacer sino encapsulo, ya que evidentemente este firewall, las outbound las controla perfectamente. Bueno gracias por todo, os seguire contando.
|
|
|
|
|
En línea
|
|
|
|
E0N
Lab &
Colaborador
Desconectado
Mensajes: 2.591
Por variar un poco de avatar.. :P
|
Debes de localizar un Thread al proceso que le vas a inyectar, realizarle un resume(al thread), coger el contexto, aunque a mi me vale con la siguiente direccion a ejecutar (direccion eip), cargar porcion de memoria, parchear codigo para cargar LoadLibrary en ese espacio cargado y por ultimo volver a darle el control al thread original. Si, esa es otra forma de inyectar, pero el SetThreadContext lo detecta el Kav por ejemplo a la hora de ejecutarse y algunos firewalls... Más formas de inyectar: http://mzrd.mar tes13.net/ (quita el espacio, y leete el tuto de inyecciones  )
|
|
|
|
|
En línea
|
|
|
|
Yibam
Desconectado
Mensajes: 39
|
Hola EON, Muy buena lectura, muy bueno ese MazarD, pero los metodos que describe segun lo que me cuentas todos son detectables, el ultimo a fin de cuentas es el que yo mas o menos describia (que lei en este foro),el cual utiliza SetThreadContext que como tu comenta es detectable. Te paso el link del documento que yo me estoy leyendo: http://www.nologin.org/Downloads/Papers/remote-library-injection.pdfCreo que esta muy bien, es para linux y windows (en ingles). Espero que con la lectura de tu doc y el mio se me ocurra algo ... Os cuento ...
|
|
|
|
|
En línea
|
|
|
|
Yibam
Desconectado
Mensajes: 39
|
Hola EON, Otro documento que estoy leyendo aunque va de ShellCodes, es de donde cogi el encapsular el trafico HTML utilizando la libreria Windows Internet API, wininet.dll en el tema 5 y creo que en el tema 3 esta la solucion (je je je je). Te lo paso: http://www.hick.org/code/skape/papers/win32-shellcode.pdfEspero que podamos comentar impresiones, :-) Os cuento ...
|
|
|
|
|
En línea
|
|
|
|
Yibam
Desconectado
Mensajes: 39
|
Perdonad, Tengo un problema ...
Una vez leidos los documentos me he puesto a programar codigo y me aparece un gran problema, los codigos que contemplan la clausula _asm no funcionan en devcpp ya que no utilizan el asm de intel sino el otro formato que no me acuerdo como se llama, y el otro compilador que tengo es el VS2008 y este cuando compilo si lo pongo en otro equipo no tiene instalado el runtime y no me va, por lo que ....
¿que compilador me recomendais?
Muchas gracias por adelantado ...
|
|
|
|
|
En línea
|
|
|
|
E0N
Lab &
Colaborador
Desconectado
Mensajes: 2.591
Por variar un poco de avatar.. :P
|
Si compilas con VC++ 2008 en código nativo (no net  ) no hay problemas, si no siempre puedes usar el VC++ 6, aunque teniendo el 2008...
|
|
|
|
|
En línea
|
|
|
|
|
Páginas: [1]
|
|
|
|