È possibile al 100%. Per ttys / ptys (modalità testo), il modo più semplice è aggiungere uno shim a / bin / {ba, da, a} sh (ad es. Un secondo segmento .code, RX) e cambiare il punto di ingresso (proprio come un ELF virus sarebbe). Escludendo l'accesso a questo in questo caso, si può modificare ~ / .profile o ~ / .bashrc (ecc.) In, come un modello ipotetico molto semplice:
exec ~ / .malicious_programme
che può caricare il codice dinamico di oggetti condivisi per nascondere il programma dannoso in questione (esempio: consentire la lettura e la modifica di .profile, ma nascondere la riga. E / o nascondere il programma.)
Si può quindi usare il sistema UNIX98 pty (7) o anche semplicemente pipe (2) per registrare tutti gli input in una shell biforcuta, supponendo che fd non sia contrassegnato con FD_CLOEXEC e persino cambiare l'input dell'utente nella shell.
In X11, sebbene kdm / gdm / xdm funzionino come setuid root (o l'equivalente in capacità [vedi setcap (8)] o qualunque modello di sicurezza stai usando se non predefinito), le cose diventano più complicate, ovviamente. Se uno può elevare i privilegi? iopl (2) o ioperm (2) semplificano la vita con l'accesso diretto alle porte della tastiera 0x60 / 0x64 su x86. Dato che supponiamo che tu non possa, dobbiamo cercare una strada alternativa. Ne conosco diversi, ma non sono del tutto sicuro che tu voglia una tesi su come sia possibile e sulle interfacce coinvolte.
Basti dire che l'anello 3, i trojan non superutente sono abbastanza possibili su * nix, nonostante l'isolamento del processo, a causa di vari problemi (in particolare con X) che ha aggiunto funzionalità per i demoni in modalità utente per fornire, ad esempio, testo supporto vocale per tutte le app senza compromettere la sicurezza del sistema. Ne ho già delineato uno che funziona in modo analogo a ttysnoops (che è molto più avanti della sua data di scadenza), e non richiede root. Ho un codice di esempio per questo caso (che includerebbe terminali interni in X), ma non l'ho ancora pubblicato. Se desideri maggiori informazioni, non esitare a contattarmi.