해킹 악성코드 X-File 시리즈 1탄 - 웹서버 게시판 위조분석
국내 웹서버에서 무료로 사용하고 있는 게시판 제작 프로그램인 제로보드(Zeroboard)의 취약점1)을 이용해서 홈페이지를 변조하는 사고가 발생한 경우, 디지털증거분석을 통해 취약점을 파악한 내용을 소개하고자 한다. 제로보드란 1999년 말에 배포되기 시작해 일반적인 게시판 기능, 회원 관리, 쪽지기능, 게시판 관리기능, 이미지 박스, 그림이름등의 기능을 지속적으로 제공함으로서 프로그래밍 기술이 없는 초보자들에게 매우 인기를 끌었던 무료 게시판으로 알려져 있다. 제로보드는 PHP2)와 MySQL3)이 지원되는 서버에 설치하여 사용하는 게시판으로 자신의 계정에 직접 설치를 하여 사용하도록 되어있다.
이번 제로보드 취약점은 2004년 11월에 한국내 보안업체에 의해 최초 발견되었고, 관련 취약점 정보가 제로보드 개발자에게 전달되었지만 뒤늦게 보안패치(PL5, Patch Level 5)를 작성한 탓에 기존 제로보드를 사용하는 다수의 홈페이지들이 패치를 못한 상태에서 국외 해커들이 패치이전의 제로보드의 취약점을 이용해 대규모 공격을 감행해 국내 7천개 이상의 홈페이지에 변조피해를 입힌바있다. 국가,민간기관에서 홈페이지를 통해 보안패치를 발표하는 등 피해 확산 방지에 주력한 결과 점차 피해가 감소하였지만 사용자는 여전히 존재하고 있다.
보안패치가 되지 않은 웹서버가 해킹을 당할경우 우선 서버내에 있는 제로보드 게시판, 데이터, 웹 페이지에 대한 변조가 가능하다. 이때 해당 서버에 남아 있는index.php와 __zbSessionTMP.rar 2개의 파일에서 단서를 찾아야 한다. 해당 __zbSessionTMP.rar 압축파일 안에는 3개의 폴더들과 웹 응용프로그램의 세션 파일로 구성되어 있음을 확인한다.

< __zbSessionTMP.rar 에 있는 압축파일들>
bbs 폴더에는 제로보드의 게시판으로 구성되어 있으며 latest_skin, icon, outlogin_skin, skin, admin, images, include, script, zipcode등의 폴더를 가지고 있다. latest_skin 에는 최근 게시물의 스킨을 저장, icon 폴더에는 회원들이 등록한 사진과 그룹 아이콘이 저장, outlogin_skin 폴더에는 외부 로그인 스킨이 저장, skin 폴더에는 게시판 스킨 저장, admin 폴더에는 관리자 페이지가 호출하는 파일 저장, images 폴더에는 제로보드의 기본 이미지 디렉토리가 저장된다. 또한 include 폴더에는 게시물 출력시 호출하는 파일을 저장, script 폴더에는 제로보드에서 사용하는 자바 스크립트 파일 저장, zipcode 폴더에는 우편번호 검색시 사용되는 파일을 저장하는 구조를 가지고 있다.
data 폴더에는 해당 게시판의 첨부파일을 저장하는곳으로 게시판 별로 폴더가 존재하며 ja xx 형식으로 되어있다. __zbSessionTmp에는 세션파일이 저장되며 now_connect.php 에는 현재 접속한 비회원의 현황 데이터파일이, now_member_connect.php 에는 현재 접속한 회원의 현황데이터 파일이 저장된다.
한편 coast 폴더에는 사용자의 개인 홈페이지로 구성되어 있음을 알수있다. 제로버드의 버전은 4.1 pl4 이고 세션별 파일들이 존재함을 확인할수 있다. 세션 별 파일에서는 변수를 저장하는 역할을 하고 있다. <제로보드 버전> <제로보드 세션파일> 세션파일의 내용은 변수, 값의 쌍으로 이루어져 있으며 소스 파일의 분석이 필요하다. zb_last_connect_check 및 zb_hit의 추적과 무관한 값이 기록되어 있으나 IP를 기록하는 부분도 있으므로 주의해야 한다. zb_logged_ip가 기록되는 부분의 소스를 상세분석 하면 로그아웃이 정상적으로 이루어지지 않을 경우 남는 IP임을 알 수 있다. <제로보드 세션관련 소스> 상세분석을 통해 IP가 남는 세션 파일들의 Unix 시간값을 변환하면 접속시간 및 IP를 확인할수 있다. <제로보드 세선파일내 Unix 시간값 변환> 기존 제로보드의 문제점을 보완하여 새로 작성된 제로보드 XE는 기획부터 구현까지 완전히 새로 만든 소프트웨어로 게시판 뿐만 아니라 다양한 종류의 웹 사이트를 제작할 수 있는 프레임워크이며 XE(XpressEngine)이라는 명칭으로 변경하면서 개인의 다양성과 콘텐츠의 안정성, 이동성에 바탕을 두어 제작된 최신 게시판 소프트웨어로 무료로 사용되고 있다. 한국인터넷 진흥원에서 보안취약점을 점검하고 GNU 정신으로 배포되기 때문에 XE를 게시판 소프트웨어로 사용할것을 권장하고 싶다. 다음시간에는 해킹 악성코드 X-File 시리즈 2탄 – XSS 취약점을 이용한 Cross Site Script공격을 분석해본다.@ 1) 제로보드 취약점: 제로보드 4.1 pl8 이전 버전에서 공격자가 전달한 입력값을 검사하지 않아 임의의 쉘코드를 실행 시킬 수 있는 값이 PHP 파일에 인젝션하여 홈페이지 변조를 할수가 있다. 2) PHP: Hypertext Preprocessor’라는 약어로 1995년 Mr.Rasmus Lerdorf가 설계했으며 HTML의 처리를 위해 만들어진 서버용 스크립트 언어이다. PHP로 만든 게시판에는 제로보드,미니보드등이 있다. 3) Mysql: 다중 스레드, 다중 사용자 형식의 구조질의어 형식의 데이터베이스 관리 시스템으로 무료와 폐쇄라이선스로 제공되고 있다.MySQL 데이터베이스를 사용하려는 다수의 C++, Perl, PHP등의 프로그래밍 언어를 지원한다.




<제로보드 세션파일>


<제로보드 세션파일 내용>



- 안철수연구소보안 전문가 Dr. UK