• Jueves 28 de Marzo de 2024, 15:38

Autor Tema:  Creando Un Driver  (Leído 4166 veces)

hackcs

  • Nuevo Miembro
  • *
  • Mensajes: 11
    • Ver Perfil
Creando Un Driver
« en: Viernes 7 de Septiembre de 2007, 21:37 »
0
ola quisiera saber como puedo crear un driver para que haga hooking de funciones en modo kernel, si lo puedo hacer en asm o sino en c y si hay algo de información sobre esto, algún manual, links, textos, aunke sea en inglés....

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Creando Un Driver
« Respuesta #1 en: Sábado 8 de Septiembre de 2007, 00:27 »
0
Se puede hacer en cualquiera de los dos lenguajes, busca informacion sobre Rootkits. Te aclaro que esto no tiene ningun futuro desde hace rato, el PatchGuard tira el S.O. abajo en cuanto detecta alguna discrepancia ... mejor investiga sobre las funciones de callback que podes registrar y usando un poco la creatividad podes reemplazar casi todos los hooks que ademas son poco seguros.

A menos que tengas vasta experiencia en modo Kernel te recomiendo que primero investigues mucho al respecto.

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

hackcs

  • Nuevo Miembro
  • *
  • Mensajes: 11
    • Ver Perfil
Re: Creando Un Driver
« Respuesta #2 en: Sábado 8 de Septiembre de 2007, 02:48 »
0
yo lo que quiero en verdad es pasar un protección... esa protección incluye un driver que hookea distintas funciones del sistema... y.. no me permite hacer ciertas cosas no... por ejemplo crear un loader para inyectar code etc etc
pero quería saber como hacer para ... si puedo hookear antes esas funciones, y así el driver cuando se ejecute después no se de cuenta. osea tendría que yo tmb escribir un driver..... igual eso es lo que creo que debo hacer, pero quería saber como hacerlo osea información, manuales, etc etc

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Creando Un Driver
« Respuesta #3 en: Sábado 8 de Septiembre de 2007, 09:44 »
0
Bueno, eso es ilegal para empezar.

Primero y principal antes de intentar hacer un driver averigua exactamente que metodo de interceptacion usan (detouring, sdt, etc) y que funciones interceptan. Una vez sepas esos datos podras buscar mas informacion, usar herramientas existentes o desarrollar algo.

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

hackcs

  • Nuevo Miembro
  • *
  • Mensajes: 11
    • Ver Perfil
Re: Creando Un Driver
« Respuesta #4 en: Sábado 8 de Septiembre de 2007, 18:53 »
0
h ttp://img509.imageshack.us/img509/7493/hookedbm0.jpg

el driver del programa este, un anticheat por cierto, hookea en la ssdt ves, este programa me marca que hookea 5 servicios.... lo que yo decía es  hacer un driver que se ejecute antes de el driver del programa que quiero pasar... para poder hookearlas primero... eso lo podría hacer sin ningún drama no ¡¿

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Creando Un Driver
« Respuesta #5 en: Sábado 8 de Septiembre de 2007, 19:35 »
0
Si hookeas vos primero entonces ellos van a seguir siendo llamados y vas a tener el mismo problema ... hay herramientas que permiten "deshookear" (en este caso no es mas que restaurar el valor original en la entrada correspondiente de la SDT). Tambien podrias escribir ese codigo ...

Pero no me mostraste todos los servicios hookeados, por ahora con los que vi todavia se puede inyectar codigo ...

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

hackcs

  • Nuevo Miembro
  • *
  • Mensajes: 11
    • Ver Perfil
Re: Creando Un Driver
« Respuesta #6 en: Sábado 8 de Septiembre de 2007, 22:25 »
0
h ttp://img401.imageshack.us/img401/2928/ ... kedef3.jpg
h ttp://img401.imageshack.us/img401/6765/ ... ed2dr6.jpg
h ttp://img111.imageshack.us/img111/9366/ ... ed3qd8.jpg
h ttp://img111.imageshack.us/img111/323/ruhl8.jpg

sobre las herramientas, si esta por ejemplo te deja limpiar todos los hooks en la tabla, pero el anticheat no funciona si deshookeo alguna.. da blue screen

por eso tenía esta idea de usar un driver que hookeé primero, por cierto esa idea me la ha comentado un amigo... pero por eso pregunto de una forma de hacer esto sin que el programa anticheat se de cuenta... y yo poder usar esas funciones... vos qué opinás ?

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Creando Un Driver
« Respuesta #7 en: Sábado 8 de Septiembre de 2007, 23:08 »
0
A ver en este caso hookear es cambiar el valor de una entrada en una estructura. Si hookeas primero despues viene el otro driver, reemplaza tu valor y sigue interceptando. Como ellos son llamados primero pueden filtrar y devolver error antes de que llegue a tu codigo ...

Decis que si deshookeas da BSOD, postea el minidump o analizalo, puede ser que ese programa se mande una cagada o que el anticheat lo detecte.


Otra cosa ... ¿Probaste a crear el proceso suspendido, modificar lo que quieras y despues resumir el hilo principal? Se me ocurren formas de conseguir inyectar codigo en el proceso ya en ejecucion pero es totalmente al pedo si podes hacer lo que acabo de decir.

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

hackcs

  • Nuevo Miembro
  • *
  • Mensajes: 11
    • Ver Perfil
Re: Creando Un Driver
« Respuesta #8 en: Domingo 9 de Septiembre de 2007, 00:39 »
0
h ttp://img513.imageshack.us/img513/9012/nooey9.jpg

si tratás de unhookear ya ves, y si no puede hacer el hook cuando el anticheat inicia, tira error el anticheat.. que se llama sXe por cierto.

estube averiguando y me dijeron de ahcer esto..

1) tu driver carga antes y copia la dirección del memoria del api original
(como si fuera a instalar el hook pero no lo instala, solo copia la dirección)

2) el sxe carga su driver y hace los hooks correspondientes

3) tu programa le dice a tu driver que haga su trabajo

4) tu driver agarra la dirección de memoria del hook del sxe y la guarda por aparte

5) tu driver restaura la dirección original del api que guardo primero

6) el hook del sxe nunca se ejecuta

total, el sxe va a haber echo su hook con éxito


mi programa obviamente es un loader para inyectar una dll o código en un proceso, mejor dicho en el proceso de un juego..

grax

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Creando Un Driver
« Respuesta #9 en: Domingo 9 de Septiembre de 2007, 09:27 »
0
5) tu driver restaura la dirección original del api que guardo primero

Eso es lo que segun vos produce el BSOD cuando usas ese programa, esa solucion no sirve o ya estaba propuesta.

De cualquier manera:
¿Probaste a crear el proceso suspendido, modificar lo que quieras y despues resumir el hilo principal? Se me ocurren formas de conseguir inyectar codigo en el proceso ya en ejecucion pero es totalmente al pedo si podes hacer lo que acabo de decir.

Y todavia quedo en el tintero:
Decis que si deshookeas da BSOD, postea el minidump o analizalo, puede ser que ese programa se mande una cagada o que el anticheat lo detecte.

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

hackcs

  • Nuevo Miembro
  • *
  • Mensajes: 11
    • Ver Perfil
Re: Creando Un Driver
« Respuesta #10 en: Domingo 9 de Septiembre de 2007, 22:50 »
0
Citar
De cualquier manera:
¿Probaste a crear el proceso suspendido, modificar lo que quieras y despues resumir el hilo principal? Se me ocurren formas de conseguir inyectar codigo en el proceso ya en ejecucion pero es totalmente al pedo si podes hacer lo que acabo de decir.

no probé eso, sólo estube usando las técnicas comunes, por ejemplo fijate en la base esa que puse en un post mio en la sección vc++, eso es lo usado.. pero me podrías explicar mejor esto..

aparte volviendo al tema del driver entonces estamos descartando esa posibilidad.. ¿?

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Creando Un Driver
« Respuesta #11 en: Domingo 9 de Septiembre de 2007, 23:48 »
0
Cita de: "hackcs"
no probé eso, sólo estube usando las técnicas comunes, por ejemplo fijate en la base esa que puse en un post mio en la sección vc++, eso es lo usado.. pero me podrías explicar mejor esto..

Esa es una tecnica muy comun y muy simple aunque probablemente no tan simple como es normalmente por el hook sobre NtWriteVirtualMemory.

El chiste es crear el proceso (CreateProcess con el flag CREATE_SUSPENDED) con esto logramos que no arranque el proceso hasta que hagamos ResumeThread sobre el hilo principal. Antes de ese momento ya existe el proceso, esta mappeado en memoria y podemos hacer bastantes cosas.

Una forma que en teoria podria funcionar es:
A. Ejecutamos de forma suspendida
B. Mappeamos una seccion de memoria compartida
C. Escribimos codigo que cargue una DLL en esa seccion
D. Encolamos un APC en el hilo principal
E. Resumimos el hilo principal

Esto hara que se ejecute el APC y cargue una DLL, objetivo cumplido.

En cuanto a la base ya la miraras (vos) cuando logres inyectar una DLL con un misero MessageBox en el proceso, sino sos capaz de hacerlo no vale la pena desarrollar la DLL.

Cita de: "hackcs"
aparte volviendo al tema del driver entonces estamos descartando esa posibilidad.. ¿?

Hasta ahora no hay ninguna solucion propuesta para implementar desde modo Kernel (driver). Y yo descartaria hacer un driver sin tener ninguna experiencia al respecto y sin haber agotado todas las posibilidades desde modo Usuario.

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

hackcs

  • Nuevo Miembro
  • *
  • Mensajes: 11
    • Ver Perfil
Re: Creando Un Driver
« Respuesta #12 en: Martes 11 de Septiembre de 2007, 00:11 »
0
a yo pensaba que no quedaban posibilidades en modo usuario hehe.. ya se que hay millones de formas de inyectar etc pero el tema es que mientras el driver del anticheat siga trabajando es prácticamente imposible. igualmente algunas personas consideran tratar de emular esta protección, pero eso ya requiere ingenieria inversa.. no esos temas son demasiado avanzados. bueno gracias eternal si se te ocurre algo, bueno comentalo yo voy a seguir investigando tmb

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Creando Un Driver
« Respuesta #13 en: Martes 11 de Septiembre de 2007, 09:11 »
0
Cita de: "hackcs"
a yo pensaba que no quedaban posibilidades en modo usuario hehe.. ya se que hay millones de formas de inyectar etc pero el tema es que mientras el driver del anticheat siga trabajando es prácticamente imposible. igualmente algunas personas consideran tratar de emular esta protección, pero eso ya requiere ingenieria inversa.. no esos temas son demasiado avanzados. bueno gracias eternal si se te ocurre algo, bueno comentalo yo voy a seguir investigando tmb
¿Si se me ocurre algo? No se cual es la razon pero me parece que no estas leyendo mis respuestas ... ya te di muchas ideas, arriba tenes una forma de inyectar (paso por paso) que funciona seguro (teniendo en cuenta las funciones - que mostraste - que son interceptadas).


Se me ocurren varias maneras de resolverlo simplemente usando el WinDbg pero realmente esto es no solo ilegal sino al reverendo pedo.

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

TIGRECAPO

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
Re: Creando Un Driver
« Respuesta #14 en: Lunes 10 de Diciembre de 2007, 20:46 »
0
disculpame pero como harias para pasarlo usando el windebug, o otro porque se de gente que ha dicho lo mismo con el olly y no siempre explican. como harias con el windebug para saltearte el sXe injected ese de mierda ----------- GRACIAS
 :devil:  :devil:  :devil:  :devil:  :devil:  :devil:  :devil:  :devil:

mi mail es valdnar_the_lich@hotmail.com

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Creando Un Driver
« Respuesta #15 en: Lunes 10 de Diciembre de 2007, 21:13 »
0
Evitando que pueda interceptar, segun recuerdo esto usaba la SSDT y es muy facil de restaurar con el WinDbg, solo tenes que encontrar las direcciones (empezando por KeServiceDescriptorTable por supuesto). No voy a entrar a discutir como saltar X o Y proteccion, no me interesa en lo mas minimo.

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.