Páginas: [1]
|
 |
|
Autor
|
Tema: proceso que no acaban (Leído 379 veces)
|
bash
Desconectado
Mensajes: 34
|
bueno como hacer un proceso no acabe en c++ no en c y no solo eso si no que ponga un mensaje si es intentado eliminar.
gracias
|
|
|
|
|
En línea
|
|
|
|
E0N
Lab &
Colaborador
Desconectado
Mensajes: 2.608
|
Pues lo puedes iniciar como SYSTEM y (por lo menos con el admin de tareas de win) no lo podrán cerrar. Otra opcion es inyectar un poco de código en el explorer por ejemplo que comprube si el proceso está finalizado (con mutex) y si es así resucitarlo. Ya puse un code muy secillito de como hacer eso en C++, buscalo
Salu2
|
|
|
|
|
En línea
|
|
|
|
|
Thaorius
|
Tambien podes irte un paso mas lejos y usar un rootkit. Podes simplemente esconder el proceso, para que no aparezca en la lista de procesor visible por el usuario. O tambien podes hacer un hoost a NtTerminateProccess(asi creo que se llamaba) y evitar que terminen tu proceso.
Saludos
|
|
|
|
|
En línea
|
|
|
|
Eternal Idol N&P
Desconectado
Mensajes: 1.279
Assembly (x86/x64), C/C++, Kernel Mode (WDM/WDF)
|
Si vamos por esos lados es preferible no permitir que abran un HANDLE a tu proceso y sus hilos directamente (en vez de controlar las funciones que se usan despues de abrirlo) ya que por ejemplo tambien se puede terminar un proceso creando un hilo que genere una excepcion no controlada o suspender todos los hilos logrando practicamente el mismo objetivo.
|
|
|
|
|
En línea
|
be closely tied to (v.) = estar estrechamente ligado a Ex: He had been wrapped up in a new project that was closely tied to the company's new growth.
"La economia nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de este" Juan Domingo Peron
|
|
|
Hendriҳ
Colaborador
Desconectado
Mensajes: 2.005
The Lord of his Middle Earth
|
hoost a NtTerminateProccess
 Querras decir un hook, no??? Ya que estamos en esas, eliminamos el proceso de la tabla de procesos con DKOM y santas pascuas tambien se puede terminar un proceso creando un hilo que genere una excepcion no controlada
Asi cerraba yo la mayoria de software de seguridad, no controlaban eso....
|
|
|
|
|
En línea
|
Muchas veces las cosas no se le dan al que las merece más, sino al que sabe pedirlas con insistencia. - Arthur Schopenhauer
|
|
|
Eternal Idol N&P
Desconectado
Mensajes: 1.279
Assembly (x86/x64), C/C++, Kernel Mode (WDM/WDF)
|
Ya que estamos en esas, eliminamos el proceso de la tabla de procesos con DKOM y santas pascuas fu, futo, etc 
|
|
|
|
|
En línea
|
be closely tied to (v.) = estar estrechamente ligado a Ex: He had been wrapped up in a new project that was closely tied to the company's new growth.
"La economia nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de este" Juan Domingo Peron
|
|
|
|
Thaorius
|
Sisi, queria decir hook. Hendrix, no se supone que la excepcion se propagaria y terminaria el thread actual unicamente?
Tenes algun ejemplo?
Saludos
|
|
|
|
|
En línea
|
|
|
|
Eternal Idol N&P
Desconectado
Mensajes: 1.279
Assembly (x86/x64), C/C++, Kernel Mode (WDM/WDF)
|
Una excepcion no controlada termina un proceso: #include <windows.h>
void main() { CreateThread(0, 0, (LPTHREAD_START_ROUTINE)0xCACAB0BA,0 , 0, 0); MessageBox(0, "si llego aca", "igual muero", 0); }
En http://www.rootkit.com podes encontrar el viejo NT Rootkit que sino recuerdo mal usa hooks; de otra manera segui buscando que ahi hay muchos rootkits. Igual el hooking en modo Kernel esta en decadencia desde la salida del PatchGuard (en Vista SP1 y superiores ya hay un callback que permite proteger procesos/hilos).
|
|
|
|
|
En línea
|
be closely tied to (v.) = estar estrechamente ligado a Ex: He had been wrapped up in a new project that was closely tied to the company's new growth.
"La economia nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de este" Juan Domingo Peron
|
|
|
bash
Desconectado
Mensajes: 34
|
es cierto Eon excribiste uno bueno!!
lo leere para estender mis conocimentos gracias por todo
|
|
|
|
|
En línea
|
|
|
|
E0N
Lab &
Colaborador
Desconectado
Mensajes: 2.608
|
Tenes algun ejemplo? Supongo q te referiras a finalizar un proceso haciendo petar uno de sus hilos, aki tienes un ejemplo q dejó Hendrix por el foro (si tienes problemas para pasarlo a C avisa) Dim Hendrix As String Const PROCESS_ALL_ACCESS = &H1F0FFF Const MEM_COMMIT = &H1000 Const MEM_RESERVE = &H2000 Const MEM_DECOMMIT = &H4000 Const MEM_RELEASE = &H8000 Const MEM_FREE = &H10000 Const MEM_PRIVATE = &H20000 Const MEM_MAPPED = &H40000 Const MEM_TOP_DOWN = &H100000 Const PAGE_READWRITE = &H4& Private Sub Form_Load() Dim PID As Long Dim proc As Long Dim nload As Long Dim rems As Long Dim DLL Hendrix = "Crash" PID = 2820 'Este es el pid del proceso a finalizar proc = OpenProcess(PROCESS_ALL_ACCESS, False, PID) nload = GetProcAddress(GetModuleHandle("kernel32.dll"), "LoadLibraryA") rems = VirtualAllocEx(proc, 0, Len(Hendrix), MEM_COMMIT, PAGE_READWRITE) WriteProcessMemory proc, ByVal rems, Hendrix, 5, 0 CreateRemoteThread proc, 0, 0, nload, rems, 0, 0 CloseHandle proc End End Sub Created by GeSHI 1.0.7.20 Modulo: Código GeSHi (vb): Public Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long Public Declare Function GetProcAddress Lib "kernel32" (ByVal hModule As Long, ByVal lpProcName As String) As Long Public Declare Function GetModuleHandle Lib "kernel32" Alias "GetModuleHandleA" (ByVal lpModuleName As String) As Long Public Declare Function VirtualAllocEx Lib "kernel32" (ByVal hProcess As Long, ByVal lpAddress As Long, ByVal dwSize As Long, ByVal flAllocationType As Long, ByVal flProtect As Long) As Long Public Declare Function WriteProcessMemory Lib "kernel32" (ByVal hProcess As Long, lpBaseAddress As Any, lpBuffer As Any, ByVal nSize As Long, lpNumberOfBytesWritten As Long) As Long Public Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long Public Declare Function CreateRemoteThread Lib "kernel32" (ByVal hProcess As Long, lpThreadAttributes As Long, ByVal dwStackSize As Long, lpStartAddress As Long, lpParameter As Any, ByVal dwCreationFlags As Long, lpThreadId As Long) As Long Hacer un rootkit q retorne siempre 0 de la llamada a OpenProcess no es nada dificil, he estado haciendo unas pruebas que inyectasen un xor eax, eax ret en la llamada al api directamente pero hacen petar al admin de tareas, con otros archivos si que funciona. Supongo que habrá que hookear bien el api para que no de errores (y ya de paso puedes elegir pìds y eso  ) Salu2
|
|
|
|
|
En línea
|
|
|
|
Eternal Idol N&P
Desconectado
Mensajes: 1.279
Assembly (x86/x64), C/C++, Kernel Mode (WDM/WDF)
|
Como dije con anterioridad, no es necesario escribir nada en el proceso, con crear un hilo cuyo punto de entrada sea invalido es suficiente: #include <windows.h>
void main(int argc, char **argv) { if (argc < 2) { return; } HANDLE hProc = OpenProcess(PROCESS_ALL_ACCESS, 0, atol(argv[1])); if (hProc) { DWORD tid; CreateRemoteThread(hProc, 0, 0, (LPTHREAD_START_ROUTINE)0xCACAB0BA, 0, 0, 0); } }
PD. Eso no habilita los privilegios de depuracion ...
|
|
|
|
« Última modificación: 18 Abril 2008, 16:37 por Eternal Idol »
|
En línea
|
be closely tied to (v.) = estar estrechamente ligado a Ex: He had been wrapped up in a new project that was closely tied to the company's new growth.
"La economia nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de este" Juan Domingo Peron
|
|
|
|
Páginas: [1]
|
|
|
|