// sleeper.c
#include
#include
int main()
{
sleep(60);
printf("Infecting Linux Host.");
return 0;
}
agresor@darkstar:~$ gcc -o sleeper sleeper.c
agresor@darkstar:~$ exec -a '/lib/systemd/systemd --abuse' ./sleeper &
[1] 5354
agresor@darkstar:~$ ps x
PID TTY STAT TIME COMMAND
4925 ? Ss 0:00 /lib/systemd/systemd --user
4926 ? S 0:00 (sd-pam)
4988 ? R 0:00 sshd: agresor@pts/0
4989 pts/0 Ss 0:00 -bash
5354 pts/0 S 0:00 /lib/systemd/systemd --abuse
5357 pts/0 R+ 0:00 ps x
Należy mieć na uwadze, iż exec najlepiej w tym przypadku działa z plikami binarnymi. I bardzo prosto wykryć ten trick:
agresor@darkstar:~$ ls -al /proc/5354/exe
lrwxrwxrwx 1 agresor agresor 0 Oct 27 19:24 /proc/5354/exe -> /home/agresor/sleeper
agresor@darkstar:~$ cat /proc/5354/cmdline
/lib/systemd/systemd --abuse
agresor@darkstar:~$ cat /proc/5354/comm
sleeper
Więcej informacji:
Why isn’t `exec -a` working the way I expect?