강좌
클라우드/리눅스에 관한 강좌입니다.
리눅스 분류

자체 개발 홈페이지의 취약점을 이용한 변조사고 분석

작성자 정보

  • 웹관리자 작성
  • 작성일

컨텐츠 정보

본문

[자료: 한국정보보호진흥원(KISA)]

 

KrCERT-IN-2005-011 http://www.krcert.or.kr
자체 개발 홈페이지의 취약점을 이용한 변조사고 분석 cert@krcert.or.kr
_______________________________________________________________________________________ _
__________________________________________________________________________________________
KISC
인터넷침해사고대응지원센터 - 2 -
1. 개 요
‘05년 5월초, 국내 모 업체에서 운영 중이었던 홈페이지 서버가 변조되는 사고가 발생하였다. 해
당 서버는 일반 웹 호스팅 서버와 같이 여러 도메인이 운영중인 상태였으며, 제로보드 등과 같이
취약점이 알려진 웹 게시판은 설치되지 않은 것으로 확인되었다.
하지만 PHP를 사용해 구축된 홈페이지가 운영중인 것이 확인되었고, 분석 결과 PHP Injection을
이용하여 홈페이지를 변조한 것으로 확인되었다.
지금까지 대부분의 홈페이지 변조 사고는 제로보드 등 공개 웹 S/W의 보안 취약점을 이용하였
지만, 본 사건은 자체적으로 개발한 웹 S/W의 취약점을 찾아 공격한 것이 특이하였다.
본 문서에서는 자체적으로 개발한 홈페이지의 PHP Injection 취약점을 이용한 홈페이지 변조사
고의 진행과정을 파악해 보도록 한다.
2. 피해시스템 개요
가. A社의 홈페이지 서버
1) 운영체제 : Rehat Linux 7.2 (Kernel:2.4.18)
Apache
: 1.3.20-16
PHP
: 4.0.6-7
2) 사용 중인 웹 게시판
자체개발
게시판 프로그램 이용
3) 시스템용도 : 웹 서비스
4) 설치 도메인 : 총 39개의 2차 도메인 운영 중
3. 피해 현황
피해가 발생한 A社의 웹 서버는 IDC에 위치하고 있었으며, 39개의 2차 도메인에 대한 웹 서비스 하고
있었다.
운영 중인 전체 홈페이지들은 모두 자체 개발한 웹 컨텐츠로 구성되어 있었으며, 개발 스크립트 언어는
PHP, Perl등이 사용된 것이 확인되었다. 또, 다른 홈페이지에서 많이 사용되고 있는 제로보드 등의 공개용
웹 게시판은 사용하지 않는 것으로 확인되었다.
□ 홈페이지 변조 해커그룹
홈페이지를 변조한 해커그룹은 현재 활발히 활동하고 있는 『Infektion group』이라는 브라질
해커 그룹으로, zone-h 사이트를 통해 '05년 5월 현재까지 3만여 개의 국내외 홈페이지를 변조한
것으로 확인되고 있다.
KrCERT-IN-2005-011 http://www.krcert.or.kr
자체 개발 홈페이지의 취약점을 이용한 변조사고 분석 cert@krcert.or.kr
_______________________________________________________________________________________ _
__________________________________________________________________________________________
KISC
인터넷침해사고대응지원센터 - 3 -
<그림 1> Infektion group에 의해 변조된 해외 홈페이지
최소한 2명이상의 맴버로 구성된 Infektion group은 주로 웹 호스팅 서버를 대상으로 변조작업
을 하여 타 그룹에 비해 많은 홈페이지 변조를 한 것으로 확인되며, 주로 Linux 계열 OS를 대상
으로 변조작업을 하였다.
홈페이지 변조와 관련된 기술과 해킹 툴들은 자체개발과 타 브라질 해커그룹과의 교류를 통해
습득하는 것으로 보이며, 홈페이지 변조 페이지를 통해 타 그룹들과의 친분관계를 나타내기도 한
다.
홈페이지 변조화면 역시 타 브라질 해커그룹과 마찬가지로 그룹명과 이메일 등과 함께 강한 반
미 메시지를 기재하는 경향을 보이고 있다.
4. 피해 분석
o 웹 로그
피해 서버에서는 공개용 웹 게시판 프로그램은 사용하고 있지 않았지만, 웹 로그 확인결과, 운영
중인 도메인 중 두 군데의 도메인에 존재하는 취약점으로 인해 홈페이지 변조가 발생한 것으로
확인되었다.
KrCERT-IN-2005-011 http://www.krcert.or.kr
자체 개발 홈페이지의 취약점을 이용한 변조사고 분석 cert@krcert.or.kr
_______________________________________________________________________________________ _
__________________________________________________________________________________________
KISC
인터넷침해사고대응지원센터 - 4 -
<표> A 도메인의 웹 서버 access_log
<표> A 도메인의 웹 서버 error_log
첫 번째 access 로그를 통해 해커가 A 도메인의 blank.php 파일에 존재하는 취약점을 이용하여
국외의 사이트에 저장해 놓은 백도어 프로그램(bshell)을 설치한 것을 볼 수 있다.
이는 기존의 제로보드 취약점과 마찬가지로 외부 URL 참조문제로 인해 발생한 것으로 해당 피
해 시스템의 php.ini 파일에 “allow_url_fopen=On”으로 설정되어 있었다. 보안을 위해서는
php.ini의 설정 중 allow_url_fopen을 “Off"로 변경하거나, 해당 blank.php 파일의 소스를 수정하여
야 한다.
두 번째 B 도메인의 웹 로그에도 awstat.pl에 존재하는 취약점으로 인해 시스템 명령어를 외부
에서 실행되는 것을 이용해 백도어로 예상되는 파일을 업로드 한 것을 볼 수 있다.
<그림> B 도메인의 웹 서버 access_log
KrCERT-IN-2005-011 http://www.krcert.or.kr
자체 개발 홈페이지의 취약점을 이용한 변조사고 분석 cert@krcert.or.kr
_______________________________________________________________________________________ _
__________________________________________________________________________________________
KISC
인터넷침해사고대응지원센터 - 5 -
o 시스템 로그
홈페이지가 변조된 5월 6일 14시 39분 이후로 전체 시스템 로그가 삭제된 것이 확인되었다. 따
라서 시스템 로그에서는 특이한 내용을 발견할 수 없었다.
o 백도어 프로그램 설치
본 사고는 웹 게시판 취약점을 이용한 홈페이지 변조사고와 유사하게 진행된 것으로 확인되었
는데, 최초 blank.php에 존재하는 PHP Injection 취약점을 이용해 외부 시스템에 저장시켜 놓은
PHP Shell 페이지를 실행하였고, 이를 통해 피해 시스템의 tmp 디렉토리에 백도어 프로그램(bs)
을 업로드 하였다.
업로드 한 백도어 프로그램(bs)는 reverse 백도어 프로그램으로, 실행 시 피해 시스템에서 외부
에 있는 해커의 시스템으로 접속되게 되므로 방화벽 등의 장비를 운영중이라고 하더라도 일반적
으로 방화벽은 외부에서 내부로의 접속을 차단하므로 내부에서 외부로의 접속은 가능하게 된다.
다음은 백도어 프로그램의 실행 옵션이다. 연결하고자 하는 서버명(또는 IP)과 포트를 입력하게
되어있다.
<그림> reverse 백도어 프로그램(bs)의 실행옵션
피해시스템의 access_log를 통해 백도어 프로그램이 국외 사이트의 TCP 9999번 포트로 접속이
되도록 reverse 백도어 프로그램을 실행한 것을 알 수 있었다. 이에 해당 국외 서버를 확인 해
본 결과, TCP 9999번 포트는 오픈되어 있지 않았으나 TCP 2005번과 2305번 포트로 IRC Proxy
프로그램인 BNC가 동작중인 것이 확인되었다.
KrCERT-IN-2005-011 http://www.krcert.or.kr
자체 개발 홈페이지의 취약점을 이용한 변조사고 분석 cert@krcert.or.kr
_______________________________________________________________________________________ _
__________________________________________________________________________________________
KISC
인터넷침해사고대응지원센터 - 6 -
<그림> 국외 사이트의 스캔결과
BNC 프로그램은 주로 IRC Proxy의 용도로 사용되는 프로그램으로, IRC 서버와의 접속유지를
통해 자신이 사용하고 싶은 Nickname을 유지하거나, IRC 서버상에서 자신의 IP를 감추고자 할
때 사용되는 프로그램으로 해킹피해를 입은 시스템에 설치된 것을 자주 볼 수 있다.
또한, TCP 8181번 포트에 백도어로 예상되는 프로그램이 국외 서버에서 동작중인 것으로 보아
국외서버 또한 해킹 피해를 당한 것으로 의심되었는데, 실제 해당 국외사이트의 내용을 확인하던
중, 국내 홈페이지를 변조한 동일 그룹인 Infektion group에 의해 변조된 페이지를 확인할 수 있
었으며, URL을 통해 phpBB 취약점을 이용해 변조한 것으로 예상된다.
KrCERT-IN-2005-011 http://www.krcert.or.kr
자체 개발 홈페이지의 취약점을 이용한 변조사고 분석 cert@krcert.or.kr
_______________________________________________________________________________________ _
__________________________________________________________________________________________
KISC
인터넷침해사고대응지원센터 - 7 -
<그림> 국외서버에서 동작중인 BNC 프로그램의 접속화면
KrCERT-IN-2005-011 http://www.krcert.or.kr
자체 개발 홈페이지의 취약점을 이용한 변조사고 분석 cert@krcert.or.kr
_______________________________________________________________________________________ _
__________________________________________________________________________________________
KISC
인터넷침해사고대응지원센터 - 8 -
<그림> A 도메인을 공격한 국외 사이트의 변조화면
o PHP 설정오류
A 도메인의 경우, PHP로 제작된 홈페이지 파일에서 외부 URL이 참조, 실행되는 문제로 인해
변조사고가 발생 하였는데, 이는 php.ini의 설정 변경을 통해 예방할 수 있는 취약점이었다. 확인
결과 php.ini의 내용 중 “allow_url_fopen=On“으로 설정되어 있어 취약점의 공격이 가능한 상태로
설정되어 있었다.
o 시스템 내부 취약점 공격툴 설치
해커는 백도어 프로그램을 통해 시스템 접속 권한을 얻었지만 서로 다른 사용자 권한의 홈페이
지들을 변조하기 위해서는 시스템 root 권한이 필요하게 된다. nobody 권한에서 root 권한으로
상승하기 위해 해커들은 일반적으로 시스템 내부 취약점을 이용한다.
Linux OS의 경우 커널 2.4.21이하 버전에 존재하는 ptrace 취약점을 주로 이용하는 것으로 확인
되는데, 이번 사고 또한 ptrace 공격툴이 설치된 것을 확인할 수 있었다. 다음은 피해 시스템의
/dev/shm 디렉토리에 설치되어 있던 ptrace 공격툴(kmod)의 소스코드의 일부이다.
KrCERT-IN-2005-011 http://www.krcert.or.kr
자체 개발 홈페이지의 취약점을 이용한 변조사고 분석 cert@krcert.or.kr
_______________________________________________________________________________________ _
__________________________________________________________________________________________
KISC
인터넷침해사고대응지원센터 - 9 -
<표> ptrace 취약점 공격툴 소스 - kmod
o 홈페이지 변조관련 프로그램 설치
홈페이지 변조를 위한 index.html과 변조 스크립트가 설치되어 있었다. 해커는 웹 서버내 존재
하는 index 파일의 변조와 Zone-h 사이트로의 변조 사이트를 등록하는 Perl 스크립트(ft)를 이용하
고 있는데, 먼저 시스템 내 설정된 도메인의 홈페이지 디렉토리명을 aaa2.txt라는 파일에 저장한
후, Perl 스크립트(ft)를 실행하여 기존에 저장되어 있던 index라는 이름의 파일을 모두 변경하였
다.
KrCERT-IN-2005-011 http://www.krcert.or.kr
자체 개발 홈페이지의 취약점을 이용한 변조사고 분석 cert@krcert.or.kr
_______________________________________________________________________________________ _
__________________________________________________________________________________________
KISC
인터넷침해사고대응지원센터 - 10 -
<표> 홈페이지 변조를 위한 Perl 스크립트 일부 - ft
<표> 홈페이지 디렉토리명 저장파일 일부 - aaa2.txt
5. 결론
본 사고는 공개용 웹 게시판이 아닌 직접 개발된 홈페이지 상에 존재하는 취약점으로 인해 발생한
사고로서, 최근 많이 이용되고 있는 PHP Injection 취약점을 통해 발생하였다. 공개용 게시판이 아닌
파일의 취약점 존재여부를 어떻게 찾았는지는 확인 할 수 없었다.
전반적인 홈페이지 변조사고를 예방하거나 피해를 감소시키기 위해서는 다음과 같은 기본적인
보안조치가 설정되어야 한다.
o 현재 설치되어 있는 게시판의 현황을 파악하고, 해당 게시판에 맞는 보안패치를 적용한다.
o PHP를 이용해 자체 개발한 홈페이지의 경우, 외부 URL을 참조하는 구성파일이 있는지 확인하고,
있다면 해킹가능 여부를 확인한다.
KrCERT-IN-2005-011 http://www.krcert.or.kr
자체 개발 홈페이지의 취약점을 이용한 변조사고 분석 cert@krcert.or.kr
_______________________________________________________________________________________ _
__________________________________________________________________________________________
KISC
인터넷침해사고대응지원센터 - 11 -
o PHP로 제작된 홈페이지의 경우, 가능한 php.ini의 설정을 변경하도록 한다.
- allow_url_fopen의 설정을 Off로 변경한다.
- 특정 도메인에서 외부URL 참조기능을 필요로 한다면, 해당 도메인을 지정하여 설정을 풀도록
한다.
www.abc.co.kr>
ServerAdmin webmaster@abc.co.kr
DocumentRoot /home/abc/public_html
ServerName www.abc.co.kr
php_admin_flag allow_url_fopen On ← 추가

o 서버에서 외부로의 Outbound 접속 트래픽을 제한한다.
- 리눅스의 경우 iptables나 ipchains를 이용하여 outbound 트래픽을 제한하여 침입사고의
가능성을 낮출 수 있다.
- 방화벽 등의 장비를 운영하는 경우 역시 동일하게 outbound 트래픽을 제한한다.
o 해킹에 자주 이용되고 있는 디렉토리의 권한을 변경한다.
- 악성 프로그램을 /tmp, /dev/shm등의 디렉토리에 업로드 하는 경우가 많으므로 /etc/fstab의
내용을 다음과 같이 수정하여 해당 디렉토리의 실행권한을 제거한다.
<표> /etc/fstab 변경 예
/dev/hda5 on / type ext3 (rw)
none on /proc type proc (rw)
none on /dev/pts type devpts (rw,gid=5,mode=620)
/dev/hda1 on /boot type ext3 (rw)
none on /dev/shm type tmpfs (rw,noexec)
/dev/hda9 on /tmp type ext3 (rw,noexec,nosuid,nodev)
/dev/hda6 on /var/lib type ext3 (rw,nosuid)
/dev/hda7 on /var/log type ext3 (rw,noexec,nosuid,nodev)
/dev/hda8 on /var/spool type ext3 (rw,noexec,nosuid,nodev)
- 변경 후에는 mount 명령을 실행하여 변경 내용을 적용한다.
[root@test]# mount -o remount /dev/shm
[root@test]# mount -o remount /dev/tmp
- apache 웹 서버의 설정파일이 위치하는 디렉토리의 권한을 700으로 변경 하도록 한다
(예:chmod 700 /usr/local/apache/conf)

관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,041 명
  • 현재 강좌수 :  35,855 개
  • 현재 접속자 :  113 명