Newsgroup: it.comp.os.linux.sys
Titolo: Nascondere un processo ...

Sò che è una domanda un pò particolare ... ma come posso nascondere un
processo al ps ?? Grazie :)

 processo al ps ?? 
modificando ps.
Davide

 processo al ps ?? Grazie :)
1. Ricompili il comando dopo aver modificato il sorgente
2. Trovi il sorgente di un rootkit ed esamini la parte che ti interessa
3. Pasticci un po' con il comando alias -> alias ps = 'ps -e | grep -v <nome 
processo>' e ti accontenti del risultato
Stefano Sancese
-- 
Pgp Fingerprint: FF8D 7255 E8DE 882C  7991 B3E7 C703 C7EA
In God we trust, all others we monitor (National Security Agency)

 modificando ps.
ne approfitto per fare una domanda. ps mostra proprio TUTTI i processi?
-- 
Fox Mulder
...the truth is out there


Con i flag corretti direi di si.
Alessandro.


4. Fai in modo che il comando sembri un'altro :-)
Alessandro.

 
per quale motivo lo vuoi nascondere?
-- 
Davide Corrado
Windows NT crashed.
I am the Blue Screen of Death.
No one hears your screams.

 ne approfitto per fare una domanda. ps mostra proprio TUTTI i processi?
Certo che si'. Perche' lo domandi ?
Davide

 processo al ps ?? Grazie :)
Installi un qualche tipo di rootkit  <grin>
bye G.L.
--
La logica non attiene alla verosimiglianza delle ipotesi,
ma alla coerenza delle tesi con le ipotesi.

 Certo che si'. Perche' lo domandi ?
per esserne sicuro al 100% :)
grazie


 processo al ps ?? Grazie :)
Se non ricordo male il ps apre il /proc filesystem ....
Oltre alla soluzione stile rootkit, mi pare ci fosse qualcosa anche su
un phrack recente 
www.phrack.org
Ed anche su BFI
In sostanza erano proposte due soluzioni (abb. complicate):
1) "disturbare" il /proc filesystem
2) "disturbare" la lista dei processi ( e l'hash dei processi) nella
memoria  del kernel (ultima bfi11 )
La seconda serve quando si vuole nascondere il processi anche a utility
stupide come il comando ps.
-- 
gen. Trimack aka gen. Puzzerstoven 
IAFo #196  
Linux Registered User #274161

 processo al ps ?? Grazie :)
Mi puzza di bruciaticcio... In ogni caso, una soluzione possibile (che si
trova facilmente in rete) e` di usare del codice per sovrascrivere argv[0]...
#include <stdio.h>
#include <string.h>
#define JUNK_SIZE 3000
#define JUNK_CHAR ' '
char arg0buf[4096];
char progbuf[4096];
char errbuf[4096];
int main(argc, argv)
int argc;
char *argv[];
{
    char *name, *base;
    int firstarg;
    if (!(name = strrchr(argv[0], '/')))
        name = argv[0];
    else
        name ++; /* get past '/' */
    firstarg = (!strcmp(name, "hide")) ? 1 : 0;
    if (firstarg && (argc == 1))
    {
        fprintf(stderr, "Usage: hide program arguments\n");
        fprintf(stderr, "   ie: hide sqlplus username/password\n");
        fprintf(stderr, "if hide is not named hide, it will execute 
name.hide (useful as a symbolic link)\n");
        exit(1);
    }
    /* Build program name.  If symbolic link mode, use argv[0] || 
.hide */
    strcpy(progbuf, argv[firstarg]);
    if (!(base = strrchr(argv[firstarg], '/')))
        base = argv[firstarg];
    else
        base ++; /* get past '/' */
    if (!firstarg) strcat(progbuf, ".hide");
    /* Build arg0 buffer.  First, fill it with junk */
    memset((void *)arg0buf, JUNK_CHAR, JUNK_SIZE);
    arg0buf[JUNK_SIZE-1] = '/'; /* set last char to '/' */
    base = "/bin/sh";
    strncpy(arg0buf, base, strlen(base));
    /* Append real program name - so prog can see what prog is running */
    strcpy(arg0buf + JUNK_SIZE, argv[firstarg]);
    /* Assign new arg0 buffer to the argv array */
    argv[firstarg] = arg0buf;
    /* Start the new program with the shifted arguments */
    execvp(progbuf, argv + firstarg);
    sprintf(errbuf, "Could not execvp '%s'", progbuf);
    perror(errbuf);
    exit(1);
}
Comando esplicito:
$ sleep 60&
[2] 25015
$ ps -efl|grep 25015
000 S [...] sleep 60
Comando mascherato esplicitamente:
$ ./hide sleep 60&
[1] 24995
$ ps -efl|grep 24995
000 S [...] /bin/sh
Comando mascherato implicitamente:
$ ln -s ./hide ./sleep   
$ ln -s /bin/sleep ./sleep.hide
$ ./sleep 60 &
[1] 25308
$ ps -efl|grep 25308
000 S [...] /bin/sh
Spero che tu ne faccia buon uso...
Ciao,
-- 
       Roberto Divia`             Love at first sight is one of the greatest
       =============             labour-saving devices the world has ever seen.
Mailbox: C02110                 CERN-European Organization for Nuclear Research
E-mail: 
Robert...@cern.ch
           CH-1211 GENEVE 23, Switzerland

 trova facilmente in rete) e` di usare del codice per sovrascrivere argv[0]...
Dimenticavo. Il mio metodo e` di mascherare il processo, non di nasconderlo.
Utile per non far vedere che cosa si sta facendo e per mascherare parametri
"critici". Per nascondere veramente un processo da ps, uno dovrebbe modificare
il codice di ps. O scrivere un wrapper, il che non e` molto complicato, tipo:
$ mv /bin/ps /bin/ps.ORIGINAL
$ echo "/bin/ps.ORIGINAL $* | grep -v ' comandoDaNascondere$'" >/bin/ps
e aggiustare protezioni e ownership... Tutto ovviamente da testare.


 4. Fai in modo che il comando sembri un'altro :-)
Esatto! Questa era la soluzione usata in passato
(ehm, non dico da chi) per mascherare comandi, e
funziona anche in user mode, non e` necessario
essere root!
Vi sono diverse "varianti", una e` di avere un
mini DB da cui prendere di volta in volta il
nome del comando... ;-)
bye,
-- 
  Piergiorgio Sartor