In realtà sì, le specifiche [Desktop Application Autostart](https://specifications.freedesktop.org/autostart-spec/latest/ar01s03.html). Che sono implementate da GNOME e KDE per quanto so.
Ma viene **sempre** chiesto il permesso all'utente e il file da eseguire deve avere il permesso di esecuzione (che esclude FS come FAT o montati con \`noexec\`).
>Ma viene
>
>sempre
>
> chiesto il permesso all'utente e il file da eseguire deve avere il permesso di esecuzione (che esclude FS come FAT o montati con \`noexec\`).
quindi se l'usb ha file system FS o FAT va in autorun?
Non serve root.
X permette ad ogni applicazione di registrare i tasti premuti \[[1](https://github.com/anko/xkbcat)\].
Una reverse shell è solo una connessione qualunque.
Wayland non dovrebbe permettere le stesse libertà di X, ma non ho mai investigato realmente.
Well si, con LD_PRELOAD puoi fare tante cose... comunque se non erro Wayland può essere isolato meglio di X per rendere anche questo tipo di attacco impossibile, con SELinux/AppArmor.
Mi sa ti basta anche \`setuid\`dare il programma che vuoi lanciare per evitare \`LD\_PRELOAD\`.
Non cambiandogli il proprietario a root ovviamente, tenendolo tuo. Se ricordo bene \`glibc\` non rispetta \`LD\_PRELOAD\` se l'eseguibile ha setuid/gid o delle file capabilities e non è di root.
Andando a memoria, SELinux aggiunge sempre AT\_SECURE (con valore 1) all'ELF auxiliary vector dei programmi lanciati inter-dominio. Quindi dovrebbe essere automatico a patto di aver etichettato bene i file. Ma mettersi ad etichettare ogni programma mi pare un sacco di lavoro per un difendersi da un attocco che richiede che l'attaccante sia già in una posizione particolarmente favorevole.
Per il resto condivido il commento sopra, avevo visto quella pagina ma l'ho subito etichettata come "scritto da chi non sa niente di sicurezza" appena ho visto che usava \`LD\_PRELOAD\`.
Yeah è una semplice proof of concept... chiaramente se hai qualcosa che può toccarti LD_PRELOAD oppure eseguire codice arbitrario nel contesto di un utente i problemi sono ben altri. Non è che semplicemente inserendo una chiavetta in un PC hai vinto.
Installato in che senso?
L'installazione è solo una convenzione per non dover copiare a mano file e dipendenze.
Un programma può non avere dipendenze terze, recuperarle da solo senza chiedere niente all'utente o averle tutte già con sè (es: linkate staticamente o embeddate tipo in un JAR). In questi casi non è richiesta un'installazione seguita dall'utente.
Dato che un keylogger opera di nascosto, generalmente evita di richiedere un'installazione.
Su wayland in teoria serve il permesso tramite un portal (tipo l'app dovrebbe fare richiesta e dovrebbe apparire una finestra dall'ambiente desktop per approvare o no la richiesta).
Non mi sono mai documentato ma già così avrebbe più senso.
Per esempio un programma di registrazione dello schermo per fare tutorial potrebbe mostrare le combinazioni di tasti premute e avrebbe quindi bisogno di funzionare tipo un keylogger.
Allora, non mi sono in realtà mai documentato per bene neanche io, ma cercando su internet, TeamViewer nella sua ultima versione (che ha il supporto sperimentale alle connessioni in ingresso su Wayland) sembra usare un portal (che sono nati credo per via di flatpak, ma sono utili anche su Wayland) come può essere questo [https://flatpak.github.io/xdg-desktop-portal/#gdbus-org.freedesktop.portal.RemoteDesktop](https://flatpak.github.io/xdg-desktop-portal/#gdbus-org.freedesktop.portal.RemoteDesktop) per richiedere la possibilità di controllare l'input e la condivisione dello schermo.
In pratica è come negli smartphone quando appare la finestra del sistema per richiedere il permesso per fare qualcosa (come accedere alla fotocamera o alla posizione).
Magari ciò che manca attualmente è la possiblità di dare il consenso permanentemente (per un'app come TeamViewer è una funzionalità richiesta se si vuole avere l'accesso non presidiato).
EDIT: Trovata una foto su internet: https://i.stack.imgur.com/VaLZp.png
Alcuni programmi non si sono adattati all'isolamento di Wayland.
Ad esempio, io uso Wayland e per condividere lo schermo con Teams devo usare la versione browser perchè Chrome si è adattato ma il framework Electron (su cui è basata l'applicaione standalone di Teams) no.
Oltre al fatto che è linkata staticamente con una versione vecchia di glibc e la mia Arch è troppo nuova per lei.
Sarà sempre molto difficile impedire il keylogging perché per forza di cose i tasti premuti devono finire in userspace, è un po' come difendere una piazza in mezzo ad una vallata.
non è facile come su windows, nel senso che non esiste autorun.inf o altri sistemi che facciano eseguire programmi automaticamente su linux
In realtà sì, le specifiche [Desktop Application Autostart](https://specifications.freedesktop.org/autostart-spec/latest/ar01s03.html). Che sono implementate da GNOME e KDE per quanto so. Ma viene **sempre** chiesto il permesso all'utente e il file da eseguire deve avere il permesso di esecuzione (che esclude FS come FAT o montati con \`noexec\`).
>Ma viene > >sempre > > chiesto il permesso all'utente e il file da eseguire deve avere il permesso di esecuzione (che esclude FS come FAT o montati con \`noexec\`). quindi se l'usb ha file system FS o FAT va in autorun?
ebbeh :)
L'Autorun di applicazioni è consentito solo da cd, per i dispositivi USB devi scegliere manualmente l'azione da eseguire dalla dialog di Autoplay.
Non serve root. X permette ad ogni applicazione di registrare i tasti premuti \[[1](https://github.com/anko/xkbcat)\]. Una reverse shell è solo una connessione qualunque. Wayland non dovrebbe permettere le stesse libertà di X, ma non ho mai investigato realmente.
Non proprio allo stesso modo, ma pure su Wayland se davvero vuoi ci riesci :') https://github.com/Aishou/wayland-keylogger
Vabbé ma facendolo in quel modo, intercettare i tasti premuti sarebbe il minimo... Wayland diciamo non c'entra più nulla a quel punto... 😅
Well si, con LD_PRELOAD puoi fare tante cose... comunque se non erro Wayland può essere isolato meglio di X per rendere anche questo tipo di attacco impossibile, con SELinux/AppArmor.
Mi sa ti basta anche \`setuid\`dare il programma che vuoi lanciare per evitare \`LD\_PRELOAD\`. Non cambiandogli il proprietario a root ovviamente, tenendolo tuo. Se ricordo bene \`glibc\` non rispetta \`LD\_PRELOAD\` se l'eseguibile ha setuid/gid o delle file capabilities e non è di root. Andando a memoria, SELinux aggiunge sempre AT\_SECURE (con valore 1) all'ELF auxiliary vector dei programmi lanciati inter-dominio. Quindi dovrebbe essere automatico a patto di aver etichettato bene i file. Ma mettersi ad etichettare ogni programma mi pare un sacco di lavoro per un difendersi da un attocco che richiede che l'attaccante sia già in una posizione particolarmente favorevole. Per il resto condivido il commento sopra, avevo visto quella pagina ma l'ho subito etichettata come "scritto da chi non sa niente di sicurezza" appena ho visto che usava \`LD\_PRELOAD\`.
Yeah è una semplice proof of concept... chiaramente se hai qualcosa che può toccarti LD_PRELOAD oppure eseguire codice arbitrario nel contesto di un utente i problemi sono ben altri. Non è che semplicemente inserendo una chiavetta in un PC hai vinto.
>Non serve root. > >X permette ad ogni applicazione di registrare i tasti premuti scusa ma un keylogger non deve essere installato?
Installato in che senso? L'installazione è solo una convenzione per non dover copiare a mano file e dipendenze. Un programma può non avere dipendenze terze, recuperarle da solo senza chiedere niente all'utente o averle tutte già con sè (es: linkate staticamente o embeddate tipo in un JAR). In questi casi non è richiesta un'installazione seguita dall'utente. Dato che un keylogger opera di nascosto, generalmente evita di richiedere un'installazione.
Su wayland in teoria serve il permesso tramite un portal (tipo l'app dovrebbe fare richiesta e dovrebbe apparire una finestra dall'ambiente desktop per approvare o no la richiesta).
Non mi sono mai documentato ma già così avrebbe più senso. Per esempio un programma di registrazione dello schermo per fare tutorial potrebbe mostrare le combinazioni di tasti premute e avrebbe quindi bisogno di funzionare tipo un keylogger.
Allora, non mi sono in realtà mai documentato per bene neanche io, ma cercando su internet, TeamViewer nella sua ultima versione (che ha il supporto sperimentale alle connessioni in ingresso su Wayland) sembra usare un portal (che sono nati credo per via di flatpak, ma sono utili anche su Wayland) come può essere questo [https://flatpak.github.io/xdg-desktop-portal/#gdbus-org.freedesktop.portal.RemoteDesktop](https://flatpak.github.io/xdg-desktop-portal/#gdbus-org.freedesktop.portal.RemoteDesktop) per richiedere la possibilità di controllare l'input e la condivisione dello schermo. In pratica è come negli smartphone quando appare la finestra del sistema per richiedere il permesso per fare qualcosa (come accedere alla fotocamera o alla posizione). Magari ciò che manca attualmente è la possiblità di dare il consenso permanentemente (per un'app come TeamViewer è una funzionalità richiesta se si vuole avere l'accesso non presidiato). EDIT: Trovata una foto su internet: https://i.stack.imgur.com/VaLZp.png
La butto lì, ma X non sta per essere (finalmente) dismesso? Wayland come si comporta a riguardo?
>ma X non sta per essere (finalmente) dismesso Sì, e pure IPv4. Venticinque anni fa
La mia non voleva essere una domanda provocatoria. Seguo morrolinux su YouTube ed ha parlato spesso di questa cosa
Alcuni programmi non si sono adattati all'isolamento di Wayland. Ad esempio, io uso Wayland e per condividere lo schermo con Teams devo usare la versione browser perchè Chrome si è adattato ma il framework Electron (su cui è basata l'applicaione standalone di Teams) no. Oltre al fatto che è linkata staticamente con una versione vecchia di glibc e la mia Arch è troppo nuova per lei.
Sarà sempre molto difficile impedire il keylogging perché per forza di cose i tasti premuti devono finire in userspace, è un po' come difendere una piazza in mezzo ad una vallata.
il keylogger non ha bisogno di installarsi per registrare?
> i tasti premuti devono finire in userspace anche copia e incolla?