elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Programar programa incerrable C++
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Programar programa incerrable C++  (Leído 3,147 veces)
Kaxperday


Desconectado Desconectado

Mensajes: 702


The man in the Middle


Ver Perfil WWW
Programar programa incerrable C++
« en: 20 Enero 2016, 21:41 pm »

Hola, resulta que después de leer un hilo del foro me ha entrado curiosidad por crear un programa que no se pueda cerrar, que de el conocido mensaje de alerta que tienen algunos procesos del administrador de tareas cuando los tratamos de cerrar. "La operación no se pudo completar, acceso denegado".

Bueno, he estado buscando y leyendo y parece que tiene que ver sobre ponerlo como crítico o algo así ya os digo que lo acabo de buscar, el caso encontré un código que me funcionó después de algunas desgracias con otros que no funcionaron:

http://www.codeproject.com/Articles/43405/Protecting-Your-Process-with-RtlSetProcessIsCriti

Lo he ejecutado y funciona eso si, necesita permisos de administrador para ponerse como proceso crítico, pero a pesar de eso estoy frustrado, porque no muestra lo de "La operación no se pudo completar, acceso denegado", sino que muestra "¿desea finalizar programa.exe?, si lo finaliza windows podrá quedar inutilizable o apagarse, y perderá los datos que no haya guardado. ¿está seguro de que desea continuar".

Es decir te acojona, pero te abre la opción de cerrarlo. En otros procesos que usan estos métodos como smss.exe, csrss.exe, o services.exe te sale directamente el mensaje de error sin opción a cerrarlo.

¿Cómo lograr los mismos resultados?.

Saludos.

Edito: Esto lo probé y no funcionó, obtuve error, pero sin embargo la idea es la misma.

http://web-athentication.googlecode.com/svn/trunk/MalwareCode/RtlSetProcessIsCritical/RtlSetProcessIsCritical.cpp


« Última modificación: 20 Enero 2016, 21:44 pm por Kaxperday » En línea

Cuando el poder económico parasita al político ningún partido ni dictador podrá liberarnos de él. Se reserva el 99% ese poder.
Karman


Desconectado Desconectado

Mensajes: 673



Ver Perfil WWW
Re: Programar programa incerrable C++
« Respuesta #1 en: 21 Enero 2016, 01:44 am »

Creo que la única opción es que tu programa cargue un driver en el sistema que no permita la finalización del mismo (aunque se podría descargar el driver y cerrarlo pero ya es una tarea complicada) el tema es que en 64 bits los drivers deben estar firmados digitalmente y no pueden tocar mucho del sistema sin causar un BSOD por el patchguard, aunque hay algunos métodos que permiten filtrar ciertos eventos (lo que hacen los antivirus)

S2


En línea

fary


Desconectado Desconectado

Mensajes: 1.075



Ver Perfil WWW
Re: Programar programa incerrable C++
« Respuesta #2 en: 21 Enero 2016, 06:13 am »

Pero Kaxperday... ten en cuenta que los otros procesos son NECESARIOS para que funcione el SO y el lo sabe.  :P
En línea

Un byte a la izquierda.
kub0x
Enlightenment Seeker
Colaborador
***
Desconectado Desconectado

Mensajes: 1.486


S3C M4NI4C


Ver Perfil
Re: Programar programa incerrable C++
« Respuesta #3 en: 21 Enero 2016, 06:48 am »

Creo que la única opción es que tu programa cargue un driver en el sistema que no permita la finalización del mismo (aunque se podría descargar el driver y cerrarlo pero ya es una tarea complicada) el tema es que en 64 bits los drivers deben estar firmados digitalmente y no pueden tocar mucho del sistema sin causar un BSOD por el patchguard, aunque hay algunos métodos que permiten filtrar ciertos eventos (lo que hacen los antivirus)

S2

También valdría un hook en Usermode (ring3) a la API PAPI de Win32 en el proceso explorer donde puedas o bien ocultar tu proceso o bien hookear TerminateProcess o CloseHandle y filtrar ahí por PID. Que decir que en ring3 todo es detectable, y en kernel todo es detectable también a no ser que hookees antes que el AV las rutinas de interrupción (syscalls). Hookear no me gusta mucho, es necesario para trampear procesos pero soy más fan de subir al kernel y no hacer ruido.

Como bien dices necesitas firmar el driver digitalmente mediante crypto de clave pública, además los Root CAs con los que se contrasta dicha firma están embebidos dentro del loader del Kernel, nade que ver con las Root CAs del keyring del OS, el keyring solo se utiliza a la hora de instalar el driver y cargarlo desde sc.exe o API, pero lo bonito es hacer un driver que arranque en modo BOOT y amigos con UEFI + Secure Boot chungo pastel.

Saludos.
En línea

Viejos siempre viejos,
Ellos tienen el poder,
Y la juventud,
¡En el ataúd! Criaturas Al poder.

Visita mi perfil en ResearchGate

Kaxperday


Desconectado Desconectado

Mensajes: 702


The man in the Middle


Ver Perfil WWW
Re: Programar programa incerrable C++
« Respuesta #4 en: 21 Enero 2016, 13:44 pm »

Bueno bueno cuantas ideas, respecto a lo del driver no tengo idea de como funciona el método, ¿usar un driver y hacer que dependa de tu proceso, o crear tu propio driver? no sé algo de lío tengo en ese tema. ¿Cómo se podría acceder a un driver y hacer que este dependa de ti?, no sé XD.

Sin embargo si que entiendo la de hookear la API que muestra los procesos, o terminateprocess la función que los cierra.. eso sería como poner venda en los ojos. No está mal pero no lo veo como lo mejor.

Luego está ponerlo como crítico como posteé en el código pero como dije no es lo mismo que hacen otros procesos como explorer, smss.. etc, pues poniendolo como crítico te da opción de cerrarlo a diferencia de estos, que seguramente utilicen algún driver para evitar que sean cerrados como decís.

En el caso de que usen algún driver para protegerse como proceso, ¿me podrías explicar más en ue consiste el método? ¿qué pasos habría que seguir para conseguirlo?, partamos de que tenemos privilegios de administrador o SYSTEM, ¿se podría hacer entonces? XD, un poco la idea al menos :P

Un saludo, gracias.
« Última modificación: 21 Enero 2016, 13:47 pm por Kaxperday » En línea

Cuando el poder económico parasita al político ningún partido ni dictador podrá liberarnos de él. Se reserva el 99% ese poder.
MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Re: Programar programa incerrable C++
« Respuesta #5 en: 21 Enero 2016, 18:14 pm »

Pensando en tu idea mientras me comía una McExtrem Original y he recordado virus se arrancan después de apagarlos y para quitarlos hay que entrar en modo a prueba de fallos he pensado.
Dos programas, o más, uno de ellos hace todo el trabajo mientras que el otro hace de guardián y se encarga de que si el usuario cierra el programa principal lo reinicia y, además, guarda o mantiene vivo los datos para que el otro cuándo arranque, pueda continuar el trabajo donde lo dejó. Y no solo eso, porqué el usuario puede ser muy inteligente y cerrar el guardián para después cerrar el principal, que el programa principal también monitoree al guardián por si se cierra reiniciarlo. Hasta se podría crear una pequeña comunidad de guardianes, esparcidos por el sistema y con diferentes nombres, para que le fuera imposible al usuario determinarlos todos y que tu aplicación principal no pudiera quitarse.
En línea

Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.958


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: Programar programa incerrable C++
« Respuesta #6 en: 21 Enero 2016, 19:05 pm »

https://msdn.microsoft.com/en-us/library/windows/desktop/dn313124%28v=vs.85%29.aspx#system_protected_process

En el Process Explorer podes ver la columna Protection.
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
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Programa para programar en Java
Java
Xkt 7 12,387 Último mensaje 17 Abril 2009, 06:43 am
por Amerikano|Cls
ayuda con programa no se programar.... « 1 2 »
Programación Visual Basic
Martin-Ph03n1X 10 4,971 Último mensaje 22 Octubre 2009, 00:52 am
por Martin-Ph03n1X
hacer un programa incerrable
Scripting
sasuke48 9 7,926 Último mensaje 9 Diciembre 2012, 10:54 am
por z3nth10n
Web incerrable
Desarrollo Web
Delacure Mihawk 3 7,830 Último mensaje 4 Febrero 2014, 17:24 pm
por Shell Root
Se puede programar en C en un programa de C++?
Programación C/C++
vladelukr 4 2,779 Último mensaje 2 Septiembre 2014, 20:38 pm
por vladelukr
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines