Segui le loro mosse
Conosci Il Tuo Nemico: II

Lance Spitzner
http://www.enteract.com/~lspitz/papers.html

Ultima Modifica: 7 Luglio, 2000

Questo articolo è il secondo di una serie di tre parti. Nel primo articolo, Conosci Il Tuo Nemico, abbiamo trattato degli strumenti e delle metodologie dello Script Kiddie.  In particolare, come vengono scoperte le vulnerabilità e come avviene l'attacco. Il terzo articolo tratta di cosa gli script kiddie fanno una volta ottenuti i privilegi di root. In particolare come vengono nascoste le tracce e cosa succede dopo. Qui, nel secondo articolo, si tratterà di come seguire le loro mosse. Come in campo militare, si vuole seguire il nemico e sapere cosa sta facendo. Tratteremo di cosa si può e cosa non si può determinare, con i log di sistema. Si può essere in grado di determinare se qualcuno vi sta esaminando, per cosa vi sta esaminando, che strumenti sta usando e se sta avendo successo. Gli esempi proposti sono relativi a Linux, ma possono essere applicati a quasi tutti gli Unix. Tenete a mente che non c'è un modo garantito di seguire ogni passo dell'aggressore. Ad ogni modo questo articolo è un buon punto di partenza.

Proteggere i vostri log
Questo articolo non è sulla rilevazione di intrusione (Intrusion Detection, IDS), ci sono già molte eccellenti fonti che trattano di IDS. Se siete interessati alla IDS, vi consiglio applicazioni come Network Flight Recorder  o snort.  Questo articolo è incentrato sulla raccolta di informazioni. In particolare come sapere cosa il nemico sta facendo dalla lettura dei vostri log di sistema. Sarete sorpresi da quante informazioni potrete trovare nei vostri file di log. Comunque, prima di parlare della lettura dei log, dovremo parlare della sicurezza dei log di sistema. I vostri file di log sono inutili se non siete in grado di assicurare la loro integrità. La prima cosa che la maggior parte degli intrusi fanno è alterare i file di log del sistema compromesso. Ci sono una varietà di rootkits che cancellano la loro presenza dai file di log (come ad esempio cloak), o alterano tutte le registrazioni insieme (come ad esempio dei syslogd "cavalli di troia").  Quindi, il primo passo per utilizzare i log è la sicurezza dei log stessi.

Questo significa che avrete bisogno di utilizzare un server dei log remoto. A prescindere da quanto sia sicuro il vostro sistema, voi non potrete garantire la veridicità dei log su un sistema compromesso. Se non altro, l'intruso può semplicemente dare un rm -rf /*  sul vostro sistema, cancellando il disco rigido. Questo rende difficile recuperare i vostri log. Per proteggersi da ciò, potete fare in modo che i vostri sistemi registrino il traffico sia localmente che su un server remoto. Raccomando di fare in modo che il log server sia una macchina dedicata, cioè che la sola cosa che faccia sia raccogliere log dagli altri sistemi.  Se il problema sono i soldi, potete facilmente mettere su una linux box che agisca da log server. Questo server dovrà essere estremamente sicuro, con tutti i servizi disabilitati e  che permetta il solo accesso da console (vedi Proteggere Linux per un esempio). Inoltre, assicuratevi  che la porta 514 UDP sia bloccata o dietro un firewall per un collegamento Internet. Questo proteggerà  il vostro log server dal ricevere informazioni di log non autorizzate o maligne.

Per quelli di voi a cui piacciono le cose più difficili, a volte io ricompilo syslogd per fargli leggere un file di configurazione differente, come /var/tmp/.conf.  In questo modo il malintenzionato non capirà dove sia il vero file di configurazione. Ciò può essere fatto semplicemente cambiando la stringa "/etc/syslog.conf" nel codice sorgente  con il file che volete. Quindi possiamo sistemare il nostro nuovo file di configurazione per avere i log sia localmente che sul server di log remoto (vedi esempio).  Assicuratevi di mantenere una copia standard del file di configurazione, /etc/syslog.conf, che punti a tutti i log locali. Anche se questo file di configurazione è ora inutile, ciò porterà l'intruso fuori strada nel capire la vera destinazione della registrazione remota. Un'altra opzione è usare un metodo di log sicuro sui vostri server.  Una possibilità è sostituire l'eseguibile syslogd con qualche prodotto che abbia il controllo di integrità ed una grande varietà di opzioni. Una scelta può essere syslog-ng, che  potete trovare a http://www.balabit.hu/products/syslog-ng.html
 

Molti dei log che useremo sono quelli archiviati sul log server remoto. Come menzionato in precedenza,  possiamo essere ragionevolmente sicuri dell'integrità di questi log in quanto sono residenti su un server remoto ed in sicurezza. Inoltre, siccome tutti i sistemi registrano su un singolo punto, è molto più facile identificare  dei modelli in questi log.  Potremo vedere cosa succede su tutti i sistemi da un singolo punto. L'unico momento in cui vorremo controllare i log locali sarà per compararli con quelli del log server. Sarà possibile determinare se i log locali sono stati alterati comparandoli con quelli del log server remoto.

Corrispondenza di modello
Leggendo i vostri log, potete in genere determinare se siete oggetto di una esplorazione delle porte (port scanning). Molti Script Kiddie esaminano una rete per una singola vulnerabilità. Se i vostri log mostrano che la maggior parte dei vostri sistemi hanno connessioni dallo stesso server remoto, sulla stessa porta, questa probabilmente  è una esplorazione per vulnerabilità (exploit scan).  In genere l'aggressore e' in possesso di un exploit per una singola vulnerabilità, ed esamina la vostra rete cercandola. Quando la trova, la sfrutta. Nella maggior parte dei sistemi Linux, TCP Wrappers è installato per default.  Così potrete trovare molte di queste connessioni in /var/log/secure.  Per altri tipi di Unix,  è possibile registrare tutte le connessioni tramite inetd  eseguendo inetd stesso con il parametro "-t". Un tipico exploit scan assomiglierà a quello qui di seguito. Qui abbiamo qualcuno che cerca vulnerabilità di wu-ftpd.

/var/log/secure
Apr 10 13:43:48 mozart in.ftpd[6613]: connect from 192.168.11.200
Apr 10 13:43:51 bach in.ftpd[6613]: connect from 192.168.11.200
Apr 10 13:43:54 hadyen in.ftpd[6613]: connect from 192.168.11.200
Apr 10 13:43:57 vivaldi in.ftpd[6613]: connect from 192.168.11.200
Apr 10 13:43:58 brahms in.ftpd[6613]: connect from 192.168.11.200

Qui vediamo l'IP 192.168.11.200 (fonte) che esamina la nostra rete.  Notate come la fonte esamina sequenzialmente ogni IP (non è sempre questo il caso). Questo è un vantaggio dell'avere un log server,  perchè con i log combinati è possibile identificare più facilmente dei modelli nella vostra rete. Le ripetute connessioni alla porta 21, ftp, indicano che probabilmente stanno cercando un exploit per wu-ftpd. Avete appena determinato cosa sta cercando l'aggressore. Spesso le esplorazioni tendono ad arrivare a fasi. Qualcuno rilascia il codice per un exploit di imap, e voi improvvisamente vedete un aumento delle esplorazioni per imap sui vostri log.  Il prossimo mese sarà la volta del ftp. Un eccellente fonte per gli exploit attuali è http://www.cert.org/advisories/ . A volte vengono usati strumenti che permettono di esplorare diversi exploit alla volta, ed in questi casi vedrete una singola fonte che si connette a diverse porte.

Tenete a mente che se non registrate l'attività del servizio, non potrete sapere se siete sotto osservazione per quell servizio. Per esempio molte connessioni  rpc non sono registrate. Comunque molti servizi possono semplicemente essere aggiunti a /etc/inetd.conf  per essere registrati tramite TCP Wrappers.  Per esempio potete aggiungere una riga in /etc/inetd.conf per NetBus. Potete quindi configurare TCP Wrappers per negare e registrare le connessioni in modo sicuro. (vedi Intrusion Detection per maggiori informazioni).

Quali sono gli strumenti?
A volte è possibile determinare quali strumenti vengono usati per esplorare la vostra rete. Alcuni dei più semplici strumenti ricercano una specifica vulnerabilità, come ftp-scan.c. Se viene esplorata una sola porta o vulnerabilità, è molto probabile che  stiano usando uno di questi strumenti  "mono-obiettivo".  Esistono comunque strumenti che ricercano molteplici vulnerabilità o debolezze, i due più popolari sono sscan di Jsbach e nmap di Fyodor.  Ho menzionato questi due perché  rappresentano le due "categorie" di strumenti di esplorazione. Vi raccomando caldamente di eseguirli sulla vostra rete, sarete sorpresi dai risultati :)
NOTA:. sscan è attualmente vecchio di un anno e seriamente antiquato. Viene qui trattato solo come esempio. Per esplorare le vulnerabilità della vostra rete vi consiglio Nessus.

          otto #./sscan -o 172.17.6.30

--------------------------<[ * report for host mozart *
<[ tcp port: 80 (http) ]>       <[ tcp port: 23 (telnet) ]>
<[ tcp port: 143 (imap) ]>      <[ tcp port: 110 (pop-3) ]>
<[ tcp port: 111 (sunrpc) ]>    <[ tcp port: 79 (finger) ]>
<[ tcp port: 53 (domain) ]>     <[ tcp port: 25 (smtp) ]>
<[ tcp port: 21 (ftp) ]>
--<[ *OS*: mozart: os detected: redhat linux 5.1
mozart: VULN: linux box vulnerable to named overflow.
-<[ *CGI*: 172.17.6.30: tried to redirect a /cgi-bin/phf request.
-<[ *FINGER*: mozart: root: account exists.
--<[ *VULN*: mozart: sendmail will 'expn' accounts for us
--<[ *VULN*: mozart: linux bind/iquery remote buffer overflow
--<[ *VULN*: mozart: linux mountd remote buffer overflow
---------------------------<[ * scan of mozart completed *

otto #nmap -sS -O 172.17.6.30

Starting nmap V. 2.08 by Fyodor (fyodor@dhp.com, www.insecure.org/nmap/)
Interesting ports on mozart (172.17.6.30):
Port    State       Protocol  Service
21      open        tcp        ftp
23      open        tcp        telnet
25      open        tcp        smtp
37      open        tcp        time
53      open        tcp        domain
70      open        tcp        gopher
79      open        tcp        finger
80      open        tcp        http
109     open        tcp        pop-2
110     open        tcp        pop-3
111     open        tcp        sunrpc
143     open        tcp        imap2
513     open        tcp        login
514     open        tcp        shell
635     open        tcp        unknown
2049    open        tcp        nfs

TCP Sequence Prediction: Class=truly random
                         Difficulty=9999999 (Good luck!)
Remote operating system guess: Linux 2.0.35-36

Nmap run completed -- 1 IP address (1 host up) scanned in 2 seconds

Analizzando I vostri log, potete determinare quali di questi strumenti è stato usato contro di voi. Per  fare questo, è necessario capire come funzionano. 

Un sscan si connetterà come mostrato di seguito (questo e' uno scan di default senza modifiche a nessun file di configurazione):

/var/log/secure
Apr 14 19:18:56 mozart in.telnetd[11634]: connect from 192.168.11.200
Apr 14 19:18:56 mozart imapd[11635]: connect from 192.168.11.200
Apr 14 19:18:56 mozart in.fingerd[11637]: connect from 192.168.11.200
Apr 14 19:18:56 mozart ipop3d[11638]: connect from 192.168.11.200
Apr 14 19:18:56 mozart in.telnetd[11639]: connect from 192.168.11.200
Apr 14 19:18:56 mozart in.ftpd[11640]: connect from 192.168.11.200
Apr 14 19:19:03 mozart ipop3d[11642]: connect from 192.168.11.200
Apr 14 19:19:03 mozart imapd[11643]: connect from 192.168.11.200
Apr 14 19:19:04 mozart in.fingerd[11646]: connect from 192.168.11.200
Apr 14 19:19:05 mozart in.fingerd[11648]: connect from 192.168.11.200

/var/log/maillog
Apr 14 21:01:58 mozart imapd[11667]: command stream end of file, while reading line user=??? host=[192.168.11.200]
Apr 14 21:01:58 mozart ipop3d[11668]: No such file or directory while reading line user=??? host=[192.168.11.200]
Apr 14 21:02:05 mozart sendmail[11675]: NOQUEUE: [192.168.11.200]: expn root

/var/log/messages
Apr 14 21:03:09 mozart telnetd[11682]: ttloop:  peer died: Invalid or incomplete multibyte or wide character
Apr 14 21:03:12 mozart ftpd[11688]: FTP session closed

sscan ricerca anche vulnerabilità di cgi-bin. Questi tentativi non sono registrati da syslogd, è possibile trovarli in access_log.  Ho deciso di includerli comunque per vostro piacere :)

/var/log/httpd/access_log
192.168.11.200 - - [14/Apr/1999:16:44:49 -0500] "GET /cgi-bin/phf HTTP/1.0" 302 192
192.168.11.200 - - [14/Apr/1999:16:44:49 -0500] "GET /cgi-bin/Count.cgi HTTP/1.0" 404 170
192.168.11.200 - - [14/Apr/1999:16:44:49 -0500] "GET /cgi-bin/test-cgi HTTP/1.0" 404 169
192.168.11.200 - - [14/Apr/1999:16:44:49 -0500] "GET /cgi-bin/php.cgi HTTP/1.0" 404 168
192.168.11.200 - - [14/Apr/1999:16:44:49 -0500] "GET /cgi-bin/handler HTTP/1.0" 404 168
192.168.11.200 - - [14/Apr/1999:16:44:49 -0500] "GET /cgi-bin/webgais HTTP/1.0" 404 168
192.168.11.200 - - [14/Apr/1999:16:44:49 -0500] "GET /cgi-bin/websendmail HTTP/1.0" 404 172
192.168.11.200 - - [14/Apr/1999:16:44:49 -0500] "GET /cgi-bin/webdist.cgi HTTP/1.0" 404 172
192.168.11.200 - - [14/Apr/1999:16:44:49 -0500] "GET /cgi-bin/faxsurvey HTTP/1.0" 404 170
192.168.11.200 - - [14/Apr/1999:16:44:49 -0500] "GET /cgi-bin/htmlscript HTTP/1.0" 404 171
192.168.11.200 - - [14/Apr/1999:16:44:49 -0500] "GET /cgi-bin/pfdisplay.cgi HTTP/1.0" 404 174
192.168.11.200 - - [14/Apr/1999:16:44:49 -0500] "GET /cgi-bin/perl.exe HTTP/1.0" 404 169
192.168.11.200 - - [14/Apr/1999:16:44:49 -0500] "GET /cgi-bin/wwwboard.pl HTTP/1.0" 404 172
192.168.11.200 - - [14/Apr/1999:16:44:50 -0500] "GET /cgi-bin/ews/ews/architext_query.pl HTTP/1.0" 404 187
192.168.11.200 - - [14/Apr/1999:16:44:50 -0500] "GET /cgi-bin/jj HTTP/1.0" 404 163

Notate come viene effettuata una connessione completa per tutte le porte (SYN, SYN-ACK, ACK)  e quindi chiusa. Questo perché sscan determina cosa e' in esecuzione a livello di application layer.  Non solo sscan vuole sapere se la vostra porta ftp è aperta, ma quale ftp daemon è in esecuzione. La stessa cosa per  imap, pop, ecc.  Quasto può essere visto usando sniffit, uno strumento comunemente usato per "sniffare" password.

mozart $ cat 172.17.6.30.21-192.168.11.200.7238
220 mozart.example.net FTP server (Version wu-2.4.2-academ[BETA-17](1) Tue Jun 9 10:43:14 EDT 1998) ready.

Come visto sopra, viene effettuata una connessione completa per determinare la versione del wu-ftpd che è in esecuzione. Quando vedete una connessione completa nei vostri log, come quella qui sopra, molto probabilmente siete oggetto di una esplorazione da parte di uno strumento di questo tipo. Questi strumenti  effettuano una connessione completa per determinare cosa state facendo eseguire.

Nmap, come molti port scanner, non si interessa di cosa state facendo eseguire, ma se state facendo eseguire servizi specifici. Per fare ciò, nmap possiede un nutrito gruppo di opzioni, lasciando a voi la scelta del tipo di connessione da effettuare, inclusi SYN, FIN, Xmas, Null, ecc.  Per una descrizione dettagliata di queste opzioni, fare riferimento a http://www.insecure.org/nmap/nmap_doc.html.   A causa di queste opzioni i vostri log possono essere differenti secondo le opzioni selezionate dall'utente remoto. Una connessione effettuata con l'opzione -sT  è una connessione completa, e nei log sarà simile a quella di sscan, anche se di norma  nmap esplora più porte.

/var/log/secure
Apr 14 21:20:50 mozart in.rlogind[11706]: connect from 192.168.11.200
Apr 14 21:20:51 mozart in.fingerd[11708]: connect from 192.168.11.200
Apr 14 21:20:51 mozart ipop2d[11709]: connect from 192.168.11.200
Apr 14 21:20:51 mozart in.rshd[11710]: connect from 192.168.11.200
Apr 14 21:20:51 mozart gn[11711]: connect from 192.168.11.200
Apr 14 21:20:51 mozart gn[11711]: error: cannot execute /usr/sbin/gn: No such file or directory
Apr 14 21:20:52 mozart in.timed[11712]: connect from 192.168.11.200
Apr 14 21:20:52 mozart imapd[11713]: connect from 192.168.11.200
Apr 14 21:20:52 mozart ipop3d[11714]: connect from 192.168.11.200
Apr 14 21:20:52 mozart in.telnetd[11715]: connect from 192.168.11.200
Apr 14 21:20:52 mozart in.ftpd[11716]: connect from 192.168.11.200

Una cosa da tenere a mente è l'opzione -D (o decoy).  Questa opzione di nmap  permette all'utente remoto di mimetizzare l'indirizzo di partenza. Potreste vedere delle esplorazioni da 15 differenti fonti nello stesso momento, ma una sola è quella reale. E' estremamente difficile determinare quale delle 15 fonti è quella vera.  Più spesso gli utenti usano l'opzione -sS durante l'esplorazione delle porte. Questa è una opzione che nasconde, in quanto viene inviato solo un pacchetto SYN.  Se il sistema risponde, la connessione viene immediatamente interrotta con un RST.  I log da questo tipo di esplorazione assomigliano a queeli qui di seguito(NOTA: Sono inclusi solo i primi cinque tentativi).

/var/log/secure
Apr 14 21:25:08 mozart in.rshd[11717]: warning: can't get client address: Connection reset by peer
Apr 14 21:25:08 mozart in.rshd[11717]: connect from unknown
Apr 14 21:25:09 mozart in.timed[11718]: warning: can't get client address: Connection reset by peer
Apr 14 21:25:09 mozart in.timed[11718]: connect from unknown
Apr 14 21:25:09 mozart imapd[11719]: warning: can't get client address: Connection reset by peer
Apr 14 21:25:09 mozart imapd[11719]: connect from unknown
Apr 14 21:25:09 mozart ipop3d[11720]: warning: can't get client address: Connection reset by peer
Apr 14 21:25:09 mozart ipop3d[11720]: connect from unknown
Apr 14 21:25:09 mozart in.rlogind[11722]: warning: can't get client address: Connection reset by peer
Apr 14 21:25:09 mozart in.rlogind[11722]: connect from unknown
 

Notate gli errori nelle connessioni. Siccome la sequenza SYN-ACK è interrotta prima che possa essere stabilita una connessione completa, il daemon del servizio non può determinare il sistema di partenza. I log mostrano che siete stati oggetto di esplorazione, ma sfortunatamente non sapete da parte di chi.  Ciò che è più allarmante è che, in molti sistemi (inclusi I più recenti kernel di Linux), nessuno di questi errori viene registrato. Per citare Fyodor " ... based on all the 'connection reset by peer' messages.  This is a Linux 2.0.XX oddity -- virtually every other system (including the 2.2 and later 2.1 kernels) will show nothing.  That bug (accept() returning before completion of the 3-way handshake) was fixed."

Nmap include altre opzioni di mimetizzazione, such as -sF, -sX, -sN dove sono usati vari flag.  Di seguito quanto mostrato dai log per questi tentativi:

/var/log/secure

Notate qualcosa qui, non ci sono log !  Inquietante huh, siete stati appena esplorati, e non lo avete saputo.  Tutti e tre I tipi di esplorazione danno lo stesso risultato, ma voi siete in grado di registrare solo il primo tipo, -sT (connessione completa).  Per scoprire queste altre esplorazioni nascoste, avete bisogno di usare divere programmi di log come tcplogd o ippl   anche alcuni firewall commerciali sono in grado di scoprirle (Ho avuto conferma su Checkpoint Firewall 1).
 

Hanno Avuto Accesso?
Una volta che avete determinato di essere stati esplorati, e per cercare cosa, la prossima grande domanda è "Sono entrati?". Molti degli attuali exploit remoti sono basati su buffer overflow (altrimenti conosciuto come "smashing the stack" (NdT. "spaccalapila").  Detto in parole povere, un buffer overflow è dato da un programma (in genere un daemon o server) riceve più dati di quanti se ne aspetta, andando così a scrivere in aree critiche della memoria. Vengono quindi eseguiti alcuni codici, che generalmente danno all'utente una accesso di root. Per maggiori informazioni sui buffer overflow, vedete l'eccellente lavoro di Aleph1a  ftp://ftp.technotronic.com/rfc/phrack49-14.txt.

E' generalmente possibile identificare un attacco di buffer overflow nel log file /var/log/messages (o /var/adm/messages per altri tipi di Unix) per attacchi tipo mountd.  Si possono vedere anche log simili in maillog per questo tipo di attacchi contro imapd.  Un attacco di buffer overflow assomiglierà a questo:

Apr 14 04:20:51 mozart mountd[6688]: Unauthorized access by NFS client 192.168.11.200.
Apr 14 04:20:51 mozart syslogd: Cannot glue message parts together
Apr 14 04:20:51 mozart mountd[6688]: Blocked attempt of 192.168.11.200 to mount
~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~
P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~
P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~
P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~
P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~
P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~
P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~
P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~
P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~
P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~
P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~
P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~
P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~
P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~
P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~
P~P~P3Û3À°^[Í~@3Ò3À~KÚ°^FÍ~@þÂuô1À°^BÍ~@~EÀubëb^V¬<ýt^FþÀt^Këõ°0þÈ~HFÿëì^°^B~
I^FþÈ~IF^D°^F~IF^H°f1ÛþÃ~IñÍ~@~I^F°^Bf~IF^L°*f~IF^N~MF^L~IF^D1À~IF^P°^P~IF^H°
fþÃÍ~@°^A~IF^D°f³^DÍ~@ë^DëLëR1À~IF^D~IF^H°fþÃÍ~@~Hð?1ÉÍ~@°?þÁÍ~@°?þÁÍ~@¸.bin@~
I^F¸.sh!@~IF^D1À~HF^G~Iv^H~IF^L°^K~Ió~MN^H~MV^LÍ~@1À°^A1ÛÍ~@èEÿÿÿÿýÿPrivet
ADMcrew~P(-^E^H(-^E^H(-^E^H(-^E^H(-^E^H(-^E^H(-^E^H(-^E^H(-^E^H(Apr 14 04:20:51
mozart ^H(-^E^H(-^E^H(-^E^H(-^E^H(-^E^H(-^E^H(-^E^H(-^E^H(-^E^H(-^E^H(-^E^H(-^
E^H(-^E^H-^E^H(-^E^H(-^E^H(-^E^H(-^E^H(-^E^H(-^E^H(-^E^H(-^E^H(-^E^H(-^E^H(-^E
^H(-^E^H-^E^H(-^E^H(-^E^H(-^E^H(-^E^H(-^E^ H(-^E^H(-^E^H(-^E^H(-^E^H(-^E^H(-^E
^H(-^E^H(-^E
 

Quando vedete qualcosa del genere nei vostri log, qualcuno ha tentato di entrare nel vostro sistema. E' difficile determinare se l'attacco ha avuto successo. Un modo per farlo, seguendo il tentativo di accesso, è vedere se ci sono connessioni da una fonte remota al vostro sistema.  Se accedono con successo dal sistema remoto, allora sono entrati. Un altro indizio è se trovate account tipo "moof", "rewt", "crak0", o "w0rm" aggiunti al vostro /etc/passwd file.  Questi account, uid 0, vengono aggiunti da alcuni dei più comuni script di exploit. Una volta che l'aggressore ha avuto accesso, normalmente la prima cosa che farà sarà cancellare I vostri log ed alterare (trojan) il vostro programma di log (syslogd), per maggiori informazioni, vedere Conosci Il Tuo Nemico: III.  Da questo momento in poi non riceverete più nessun log dal vostro sistema in quanto compromesso. Cosa fare a questo punto è l'oggetto di un altro articolo :).  Nel frattempo, consiglio una visita a  http://www.cert.org/nav/recovering.html

Per aiutarmi nella ricerca di anomalie nei miei file di log, ho messo giù uno script che li analizza I log  per me. Per informazioni più dettagliate su ricerca ed ordinamento dei file di log, date un'occhiata a questo contributo di Marcus Ranum.

 Bourne shell script          Korn shell script

Conclusione
Le registrazioni dei vostri sistemi possono dirvi molto circa il nemico. Comunque il primo passo è garantire l'integrità dei vostri file di log. Uno dei modi migliori per farlo  è usare un server dei log remoto che riceva e mantenga I log di tutti I sistemi. Una volta resi sicuri i vostri file di log, potete identificare dei modelli dalla loro analisi. In base a questi modelli ed al contenuto dei log, potete determinare che cosa l'aggressore cerca e potenzialmente che strumenti usa. Sapendo questo potrete dare maggior sicurezza e protezione ai vostri sistemi.
 

Biografia dell'Autore
Lance Spitzner si diverte ad imparare facendo saltare i suoi sistemi Unix a casa. Prima di questo, era Ufficiale della Forza di Intervento Rapido, dove faceva saltare cose di diversa natura. E' raggiungibile a lance@spitzner.net .
 
 

Whitepapers / Publications