Autor
|
Tema: Ayuda: Programar módulos para un AV-Killer (Leído 23,448 veces)
|
Eternal Idol
Kernel coder
Colaborador
Desconectado
Mensajes: 5.966
Israel nunca torturó niños, ni lo volverá a hacer.
|
Bua, en el Windbg se tiene que hacer por conexion de PC's, no??? eso es lo que no me gusta :S Bueno, muchas gracias Si es XP o superior podes usar lo que te dijo ̿̿̿̿̿̿̿̿̿ . File>>Kernel Debug>>Local, podes ver y modificar la memoria pero no depurar realmente. Agrego ya que estamos que tambien se puede usar el LiveKd de Sysinternals para Windows 2000 y el descontinuado SoftICE para depurar localmente.
|
|
« Última modificación: 24 Octubre 2007, 20:23 pm por Eternal Idol »
|
En línea
|
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste. Juan Domingo Perón
|
|
|
Hendrix
|
Muchas gracias eternal, es que no tenia el Pc para probarlo (no estoy en casa)
|
|
|
En línea
|
"Todos los días perdemos una docena de genios en el anonimato. Y se van. Y nadie sabe de ellos, de su historia, de su peripecia, de lo que han hecho, de sus angustias, de sus alegrías. Pero al menos una docena de genios se van todos los días sin que sepamos de ellos". - Juan Antonio Cebrián
|
|
|
Eternal Idol
Kernel coder
Colaborador
Desconectado
Mensajes: 5.966
Israel nunca torturó niños, ni lo volverá a hacer.
|
Muchas gracias eternal, es que no tenia el Pc para probarlo (no estoy en casa)
De nada, pero igual en cuanto quieras depurar tu codigo (que si escribis algun modulo de modo Kernel lo vas a querer hacer seguro) mejor que vayas preparando dos maquinas con puerto serial o firewire y su correspondiente cable.
|
|
|
En línea
|
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste. Juan Domingo Perón
|
|
|
Hendrix
|
intentare pasar sin, con el Debugger ese (no me acuerdo como se llama)
|
|
|
En línea
|
"Todos los días perdemos una docena de genios en el anonimato. Y se van. Y nadie sabe de ellos, de su historia, de su peripecia, de lo que han hecho, de sus angustias, de sus alegrías. Pero al menos una docena de genios se van todos los días sin que sepamos de ellos". - Juan Antonio Cebrián
|
|
|
Hendrix
|
Haber, ahora ya estoy en casa, e intentado hacer practicas y tengo un fallo (ya sabia que lo tendria), aqui el codigo: format PE native entry DriverEntry include 'INCLUDE\win32a.inc' include 'INCLUDE\ddk\structs.inc' include 'INCLUDE\ddk\ntddk.inc' include 'INCLUDE\ddk\ntstatus.inc' include 'INCLUDE\ddk\native_api.inc' include 'INCLUDE\ddk\stuff.inc' section '.c' code readable writeable executable proc GetAddr n mov eax, 4 mov ecx,[n] mul ecx mov ecx,[KeServiceDescriptorTable] ;LocaLizar KiServiceTable //Aqui el fallo mov ecx,[ecx] ;KierviceTable add eax,ecx ret endp proc DriverEntry DriverObject, rp push msg call [DbgPrint] call [IoGetCurrentProcess] push eax push msg3 call [DbgPrint] push 7ah ; Numero de la funcion call GetAddr push eax push msg4 call [DbgPrint] mov eax,STATUS_SUCCESS ret endp section '.d' data readable writeable msg db 'Driver cargado',0 msg3 db 'Mi PID es: %Xh',0 msg4 db 'La direccion de zwopenprocess es: %Xh',0 data import syslibrary ntoskrnl,'ntoskrnl.exe' import ntoskrnl,DbgPrint,'DbgPrint',\ IoGetCurrentProcess,'IoGetCurrentProcess' end data section '.reloc' data fixups readable discardable
El fallo es en la linea que marque, se supone que se tiene que "declarar" o algo, no??? e estado mirando otros codigos aprecidos ( http://www.rohitab.com/discuss/index.php?showtopic=17892&mode=threaded&pid=10020467) y tampoco se declara....Sacame de dudas Mek
|
|
|
En línea
|
"Todos los días perdemos una docena de genios en el anonimato. Y se van. Y nadie sabe de ellos, de su historia, de su peripecia, de lo que han hecho, de sus angustias, de sus alegrías. Pero al menos una docena de genios se van todos los días sin que sepamos de ellos". - Juan Antonio Cebrián
|
|
|
byebye
Desconectado
Mensajes: 5.093
|
es exportada por ntoskrnl import ntoskrnl,DbgPrint,'DbgPrint',\ IoGetCurrentProcess,'IoGetCurrentProcess',\ KeServiceDescriptorTable,'KeServiceDescriptorTable'
PD: mirate en el ddk ntosrnl.inc y veras que sorpresa jeje, no estan todas pero las puedes ir añadiendo a mano.
|
|
« Última modificación: 24 Octubre 2007, 21:58 pm por ̿̿̿̿̿̿̿̿̿ »
|
En línea
|
|
|
|
Hendrix
|
Por fin lo e cargado.... Me a dado esto: Driver cargado Mi PID es: 86FC69C8h La direccion de zwopenprocess es: 80552568h Por lo que se puede ver que zwopenprocess no esta hookeada, y yo me pregunto, se puede hacer el proceso inverso??? es decir, sacar desde la funcion el nombre de esta funcion??? para asi "rastrear" la SSDT para buscar que apis estan hookeadas??? En el post que trabajasteis el sexe vi que el tio que tambien participaba tenia un programa para ver que API's estaban hookeadas por el sexe, este porgrama qual es??? Por si te sirve de algo, aqui te dejo el dumpeado de la SSDT: lkd> dd 868a2588 868a2588 80598746 805e5914 805e915a 805e5946 868a2598 805e9194 805e597c 805e91d8 805e921c 868a25a8 8060a880 8060b5d2 805e0cac 805e0904 868a25b8 805c9928 805c98d8 8060aea6 805aa334 868a25c8 8060a4be 8059cbbc 805a4786 805cb406 868a25d8 804feed0 8060b5c4 8056ae64 805343f2 868a25e8 80603b90 aae47aa0 805e9694 80618a56 868a25f8 805edb86 80598e34 80618caa 805986e6 Un Saludo
|
|
|
En línea
|
"Todos los días perdemos una docena de genios en el anonimato. Y se van. Y nadie sabe de ellos, de su historia, de su peripecia, de lo que han hecho, de sus angustias, de sus alegrías. Pero al menos una docena de genios se van todos los días sin que sepamos de ellos". - Juan Antonio Cebrián
|
|
|
Eternal Idol
Kernel coder
Colaborador
Desconectado
Mensajes: 5.966
Israel nunca torturó niños, ni lo volverá a hacer.
|
Por cierto IoGetCurrentProcess no devuelve un PID sino un PEPROCESS que siempre va a ser el de SYSTEM (DriverEntry se ejecuta siempre bajo el contexto de un hilo del sistema). PID = PsGetCurrentProcessId. Una tecnica que se usa normalmente es apoyarse en NTDLL.dll - especialmente para las funciones que no estan exportadas - donde hay stubs que pasan a modo Kernel con el numero del servicio correspondiente, ej.: ntdll!ZwCreateFile: 77f3f414 b83c000000 mov eax, 3Ch << numero del servicio 77f3f419 ba0003fe7f mov edx,offset SharedUserData!SystemCallStub (7ffe0300) 77f3f41e ff12 call dword ptr [edx] 77f3f420 c22c00 ret 2Ch Otra cosa, las funciones esas son las Nt* no Zw*. En modo Usuario no hay diferencia (una es alias de la otra) pero en modo Kernel no es lo mismo. http://www.osronline.com/article.cfm?article=257http://www.osronline.com/login.cfm?prompt=ntInsider&id=266
|
|
« Última modificación: 24 Octubre 2007, 22:19 pm por Eternal Idol »
|
En línea
|
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste. Juan Domingo Perón
|
|
|
Hendrix
|
Si, ya sabia que no era el PID, aunque lo llame asi por llamarlo de algun modo Por cierto eternal, el IoDeleteDriver, que le tengo que pasar para terminar el proceso de mi driver??? el PEPROCESS?? En google no me sale eso ademas, en otros codigos vi que utilizaban el IoDeleteSymbolicLink, pero tampoco se que pasarle.... Muchas gracias a los 2
|
|
|
En línea
|
"Todos los días perdemos una docena de genios en el anonimato. Y se van. Y nadie sabe de ellos, de su historia, de su peripecia, de lo que han hecho, de sus angustias, de sus alegrías. Pero al menos una docena de genios se van todos los días sin que sepamos de ellos". - Juan Antonio Cebrián
|
|
|
Eternal Idol
Kernel coder
Colaborador
Desconectado
Mensajes: 5.966
Israel nunca torturó niños, ni lo volverá a hacer.
|
Por cierto eternal, el IoDeleteDriver, que le tengo que pasar para terminar el proceso de mi driver??? el PEPROCESS?? Eso lo unico que hace es dereferenciar un PDRIVER_OBJECT y no esta documentado, no te lo recomiendo para nada. Un driver no tiene un proceso, se ejecuta en un hilo bajo el contexto de un proceso no determinado. En google no me sale eso ademas, en otros codigos vi que utilizaban el IoDeleteSymbolicLink, pero tampoco se que pasarle.... A IoDeleteSymbolicLink se le pasa un PUNICODE_STRING, basicamente una cadena que hace de enlace con un driver para comunicarse desde modo Usuario.
|
|
|
En línea
|
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste. Juan Domingo Perón
|
|
|
|
|