![]() |
Jugando con el messenger
1 Archivos Adjunto(s)
Hace unos días hablábamos de la inyección de código y hacer hooks a las APIs. Pues bien me he puesto a jugar un poco, y esto es lo que he conseguido por ahora, una dll que se inyecta en el messenger, hace un hook en las APIs Send, WSASend y WSARecv, y cuando el messenger envía o recibe algo la dll utiliza la función OutputDebugString para mostrarnos lo que se envía o se recibe.
Es solo una prueba de concepto:
Necesitaremos una aplicación que realice la inyección, una vez inyectada la dll la aplicación se puede cerrar. Por ejemplo: Por último para ver los mensajes enviados por la función OutputDebugString necesitaremos un programa como DebugView de Sysinternals. ¿Se le ocurre a alguien algo "divertido" que hacer con esto? :confused: |
Esto me huele a capturar lo que se escribe en el messenger:rolleyes::rolleyes::rolleyes:, vaya habria muchas utilidades que se podrian crear:D:D.
Pero temo que sobrepasa mi precario conocimiento, no sabes como admiro que "juegues" con todo esto. Pues nada, solo es un poco de envidia (de la buena:D). Salud OS. |
Cita:
Y ya que estamos, si cambiamos las siguientes funciones, tendremos una visión un poco mas clara de lo que esta pasando, eliminando los caracteres no imprimibles o extraños:
|
Grande....
Primero que nada, mi admiración y respeto.
Me da una idea lo que comentas en tu post, pero para ser sincero viendo el codigo que pusiste, no tengo ni idea de lo que hiciste; me pregunto cuanto fue lo que dedicaste en tiempo y esfuerzo para llegar a dominar tal nivel dentro de la programación, mi admiración mas sincera y mi envidia mas sana de la que pueda hacer gala, al igual que a otros de los compañeros del club que no los menciono puesto que podria no nombrar a alguno y no sería correcto pero que muchos sabemos quienes son. Gracias por su apoyo y enseñanza. Un saludo y abrazo a todos ustedes que hacen posible este gran espacio. |
¿Nadie se anima a "meter el dedo" en el código? :(
Bueno, yo sigo dándole un lavado de cara, quitando algunas cosas que sobraban y añadiendo algunas otras. Ahora el objetivo es el FileZilla, es interesante ver como en una conexión FTP todo, incluso las contraseñas, se envían sin cifrar, mientras que usando FTPS todo se vuelve un revoltijo de bytes sin sentido. El código de la dll:
Y por si alguien tiene curiosidad sobre lo que comentaba del ftp: FTP normal: Código:
00000000 0.00000000 [3420] send: Hookeado Código:
00000000 0.00000000 [3444] send: Hookeado |
Pues yo sigo jugando, así que probé a inyectarme en el Opera, Firebird y IExplorer. Los resultados no fueron los que esperaba, solo tuve éxito en el firebird.
Ejemplo de llamada a google desde firebird: Código:
00000000 0.00000000 [1612] send: Hookeado Lo que me tiene extrañado es por que Opera e IExplorer son inmunes. Ahora estoy interceptando las llamada send, recv, wsasend, wsarecv así que supongo que estos dos no utilizan estas funciones, y me pregunto cuales usaran. O acaso están protegidos contra las inyecciones de código. Seguiré investigando, es decir jugando :p |
Hooks a nivel de sistema
Que tal
Esta muy interesante el codigo (ojala lo pudieramos ir documentando) sobre todo cuando haces el inject con WriteProcessMemory Estuve haciendo unas pruebas pero al principio no veia nada en el debug View, asi que modifique la dll del hook para que escribiera a un archivo de .log y al poco tiempo empezo a mostrarse tambien en el debug viewer, algunas veces parece que no logra hacer el hook hasta despues de varios intentos. Crees que se podria hacer estos hooks de winsock a nivel de sistema, que sirviera para monitorear la red o hacer algo como un firewall? |
Estoy un poco lerdo... se me están pasando mensajes que no se me deberían pasar...
Excelente seoane, si ya por de sí es difícil andar jugando con sockets, parece aún mas parchear las propias funciones de estos. Muy original lo de OutputDebugString, En todo caso "recuerda" que también es posible interceptar el puerto en cuestión...:D y ahí seguro que ni el Opera ni nadie se resiste. Una más para tu repositorio...:D :eek: |
Hola cheke, me alegro de que alguien se animara a revisar el código.
Cita:
Cita:
Cita:
Otra opción interesante es utilizar para inyectarnos la función SetWindowsHookEx, usando la librería como un hook de windows. Así seria el propio windows el encargado de inyectarnos en todos los procesos que tuvieran ventanas, una solución bastante cómoda. Aunque no controlaríamos las aplicaciones de consola. Yo por ahora el código lo veo mas como un juguete para ver como funcionan los programas "por dentro", que como una herramienta de seguridad. Pero nada impide evolucionarlo un poquito mas, es decir, afinando el proceso de inyección y hook de las apis, interceptando las llamadas a las apis que crean procesos y cargan librerías (para así reajustar los hooks), interceptando mas apis del winsock, etc ... Hola Ardilla, Cita:
Cita:
En cuanto a la función OutputDebugString, desde que la descubrí hace un par de años, es una de mis funciones preferidas. Utilisima y muy recomendable, sobre todo cuando estas escribiendo código que no tiene una salida por pantalla. Cita:
Cita:
|
Lo prometido es deuda:
Espero que se entienda ... :) |
Cita:
Yo lo hice con un programa que se conecta a un servidor de ajedrez y los resultados como comenté fueron fabulosos. De todas formas, "aquel código" que publique hace unas fechas, es justamente el que utilizaba para monitorizar el puerto, si ya sabes, aquel de la "promiscuidad". Así que solamente sería cuestión de probar ese código y ver los resultados en cualquier puerto que esté ocupado por una aplicación... Eso código, básicamente en lo que difiere a otros que utilizan sockets, es en los parámetros de conexión, y en lo que hemos/han dado por llamar "modo promiscuo". Saludos. |
Cita:
Cita:
|
Cita:
|
Cita:
Cita:
Vaya giro inesperado sufrió el tema de este hilo :p :D Pues nada ArdiIIa, cuando tu quieres montamos un proyecto de los interesantes ¿que se te ocurre? |
Hola Seoane.. Bueno vi que estubiste jugando con el msn y me gusto muucho lo que hiciste..
En algun momento estube intentando hacer "Una aplicacion" (va un cacho de codigo loco) que intentase conectarse a la red MSN y obtener la lista de contactos . para luego empezar a jugar.. cosa que no fue muy productiva.. Pero la verdad que voy a probar que informacion se puede obtener con todo eso.. y que se puede modifica! :D y bueno lo de loguear los mensajes.. tambien peude hacerse con algun snifer.. pero bueno (si es general se complica un poco) pero se puede.. Ardilla!!.. de todos maneras me gusto mucho lo de escuchar directamente el puerto (Podrias darme una idea de como empezar algo asi?).. (ya que no estariamos limitados a injectar un hook en memoria) obvio que con esto estamos limitados solo a nuestra maquina.. con lo que esta poniendo Seoane + alguna que otra cosita.. como que se esconda + un servido FTP. o simplemente.. Capturando el navegador por defecto y cuando esta activo Subri un archivejo con datos Determinados, aun servidor... mmm creo que se podrian hacer cosas demasiado malas!!! bueno dejo de soñar tonterias y a seguir trabajando!! saludos.. |
Cita:
|
Cita:
Cita:
y despues ver que se puede hacer con los anti virus.. (porque algo siempre se puede hacer) jeje Saludos! |
Cita:
Cita:
Pero estoy seguro que posibilidades habrá... |
Cita:
|
Hola seoane :)
Cita:
AppName: msnmsgr.exe AppVer: 8.1.178.0 AppStamp:45b12d6a ModName: hookit.dll ModVer: 0.0.0.0 ModStamp:2a425e19 fDebug: 0 Offset: 00001c0d Bueno no se a que se deba tal vez esta muy saturado mi msn, tenia cerca de 60 conectados de un total de 400.. o tal vez el msn despues de un rato se da cuenta que a sido intervenido :p Y acerca de lo que comentan de hacer dinero con este tipo de programacion, estoy muy seguro de que si se puede, hace poco antes de encontrar este post compre una dll para hacer hooks de sistema para monitorear una impresora esta dll que en realidad son dcus para delphi me costaron 199 dls. pero creo que es mas redituable aun las aplicaciones que se puedan generar a partir de esto. Por cierto estos dcus que compre (www.madshi.net) hacen un hook del sistema, mi pregunta es como lo haran porque segun lo que comentas habria que inyectarnos en todos los procesos del sistema. Tiene que ser por cada proceso o habra alguna manera general de inyectarse a todo el sistema? ¡Por cierto excelente trabajo seoane! da gusto encontrar este tipo de codigos ;) |
La franja horaria es GMT +2. Ahora son las 02:18:33. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi