[Special Report4] “범용 애플리케이션• 웹쉘을 이용한 타깃 공격 많았다”
4부. 2010년 침해사고 이슈 정리
“범용 애플리케이션• 웹쉘을 이용한 타깃 공격 많았다”
2010년은 침해사고와 관련된 일련의 공격들이 순차적으로 진행되기 보다는 집중적으로 발생하는 비율이 높았다. 특히, 임의적인 공격보다는 공격자가 특정 공격 목표를 향해 3주 정도를 지속적으로 IP를 바꾸어가며, 공격을 지속하는 타깃 공격(Targeted Attack)의 비율이 높았다. 또한 기본적으로 침해사고를 발생하는데 있어 웹쉘 공격이 지능화되고 난독화되어 네트워크나 시스템에서 이러한 공격 패턴을 탐지, 또는 차단하기가 쉽지가 않다.
2010년 침해사고에 대한 대응 이력을 돌이켜보면 공격 행위에 대한 집중도가 높아지고 있으며, 난독화 패턴의 발생 비율 증가와 범용 애플리케이션에서의 취약점 발생 빈도가 높아지고 있다는 점도 주목할 만하다.
이 글에서는 2010년에 발생한 침해사고 분석과정에서 발생 빈도가 높았거나, 특이하다고 판단되는 몇 가지의 사례를 통해 2010년의 침해사고 관련 주요 이슈를 정리해 보고자 한다.
범용 Application 취약점 증가
2010년에는 인터넷 익스플로러(Internet Explorer, 이하 IE) 또는 아크로뱃리더(Acrobat Reader) 같이 범용적으로 이용되는 소프트웨어에서의 취약점 발생 비율이 대단히 높았다. 기업 홈페이지의 위•변조 관련한 다수의 사건 분석결과, 동일한 패턴이 발생하고 있음을 알 수 있었다. 특히, 웹 서비스에 대한 위•변조의 원인이 되었던 상당수의 이유는 FCK Editor라는 범용 게시판 소스에서 발생되는 취약점의 발생 비율이 높았다.
현재 기업용 홈페이지에서 단 방향 서비스를 제공하는 경우는 거의 찾아보기 힘들다. 대부분의 기업들이 사용자들과의 양방향 커뮤니케이션을 위해 게시판 형 서비스를 이용하고 있다. 예를 들어 기업의 인재 채용 페이지에서도 이력서나 사진 등을 업로드 하는 목적으로 양방향 게시판형 서비스를 사용하는 것이 일반적인 추세이다. 이 가운데 상당수의 기업에서 FCK Editor를 이용하고 있으며, 이 FCK Editor의 취약점을 노린 악성코드 업로드 공격이 상당히 많이 발견되었다.
일반적으로 범용 애플리케이션 취약점은 IE, IIS 등과 같이 전세계적으로 많이 이용되는 소프트웨어에서 발견된다. 이러한 범용 애플리케이션에서 취약점이 발생하게 되면, 특정 취약점의 존재 여부를 검색할 수 있는 전용 스캐너가 등장할 정도로 파급도가 높은 것이 특징이다. 2010년에 발생한 상당수 침해사고의 분석결과 단 한번의 웹 서비스 접속 이후 홈페이지 위•변조가 발생될 정도로 FCK Editor의 이용이 침해사고로 바로 이어지는 상황이 많이 발생되었다.
사실 FCK Editor에서 발생되는 임의적인 파일 업로드(Arbitrary File Upload) 계열 취약점은 지난 몇 년간 지속적으로 발견되고 있다. 가장 최근 발표된 FCK Editor의 취약점은 2010년 11월 10일(미국 중부 시간 기준) 발표된 것으로, FCK Editor 2.4.3 이하가 모두 보안상 취약하다고 발표되었다.
[그림 1] FCK Editor 화면
[그림 1]에서 볼 수 있는 바와 같이, 2010년 11월 발표된 FCK Editor의 문제점은 단순히 파일, 플래시, 이미지뿐만이 아니라, 악성 공격 코드로 이용되는 웹쉘(“*.php”와 같은)을 업로드 하는 것이 가능하다는 점이다. 물론 해당 애플리케이션의 AllowedExtensions 설정에서 업로드 가능한 확장자 타입을 지정할 수 있다. 하지만 이 공격 방식은 이러한 확장자 타입을 우회하는 방식이어서, 기존의 확장자 타입 지정을 100% 신뢰해서는 안 된다. 또한 최신 버전의 경우에도 취약점에 대한 패치가 적용된 것으로 확신할 수 없으므로 사용에 주의해야 한다.
사례 2: SSH Dictionary Attack
2010년 8월에 국내 및 해외에서 많이 발생한 건은 봇넷 계열로 phpMyAdmin의 취약점을 이용한 공격이 상당히 많이 감지되었다. 이 공격이 phpMyAdmin의 취약점을 통해 성공될 경우, 시스템에는 /tmp에 /foo 디렉터리를 생성하고, dd_ssh가 인젝션되며, 실제 실행될 경우 Random IP 대역에 대해 SSH 서버로 무차별 공격(Brute Force Attack)이 이뤄진다.
데비안 보안 권고문(Debian Security Advisory, http://www.debian.org/security/2010/dsa-2034)에서는 이 공격에 대해 CVE-2008-7251, CVE-2008-7252, CVE-2009-4605로 취약점을 구분하고 있다. 또한 데비안에서는 이 취약점에 대해 phpMyAdmin업그레이드를 권고하고 있다.(We recommend that you upgrade your phpMyAdmin package.)
이 공격은 기본적으로 phpMyAdmin 취약점을 이용하고 있으며, vm.c를 컴파일 하여 얻어지는 dd_ssh 파일이 SSH 서버를 무차별적으로 공격하게 된다. 이러한 공격에는 반드시 루트(root) 권한을 필요로 한다. 이 봇넷 공격은 "vmsplice" local root exploit(CVE2008-0600)을 이용하는 것이어서, 윈도우 서버와는 달리 상대적으로 보안 패치를 잘 하지 않는 데비안 서버의 특성을 적절하게 공격하는 취약점이다. .
이 취약점에 대한 상세한 내용은 아래 페이지를 참조 바란다.
사례 3: Suspicious Webshell Attack
공격자가 웹 서비스를 공격할 경우 웹 서버에 웹쉘을 삽입하는 것이 가장 일반적인 공격 기법이다.
[그림 2] 악성코드의 순차적 실행
다만, 이러한 웹쉘의 경우에도 기존에는 평문(Plaintext)으로 프로그래밍되어 있어, 육안으로 웹쉘의 악성 여부를 판단할 수 있었다. 하지만 최근에 발견되는 웹쉘들의 경우에는 난독화 처리가 되어있어, 암호를 몇번 해독해야 판독이 가능한 경우가 증가하고 있다.
[그림 3] 난독화된 웹쉘(오른쪽이 웹쉘 소스 원본)
[그림 3]에서 볼 수 있는 바와 같이, 웹쉘 코드는 난독화되며, 그림파일로 위장하고 있어 보안에 대한 지식이 없는 관리자가 이러한 악성코드를 발견해 내기는 대단히 어려운 것이 사실이다. 이러한 난독화 패턴은 상용 웹쉘 스캐너에도 감지되지 않을 정도로 난독화 웹쉘 공격이 발생될 경우, 침해사고 분석과정에서 이를 발견해 내기도 쉽지 않다.
또한, 기본적으로 침해사고를 분석하는 이유가 동일한 공격에 대한 피해를 극소화하기 위한 목적이라면, 공격자의 공격의도는 네트워크나 시스템에서 이러한 공격을 방어하기 어렵게 만드는 주요 원인이 되고 있다.
공격자에 대한 분석을 어렵게 만드는 공격 유형도 눈에 띄는데, 사실 이러한 부분이 향후 공격에 대한 즉각적 판단을 어렵게 만드는 부분이기도 하다.
[그림 4] 일반적인 웹쉘 구문
[그림 4]는 실제 공격에 이용된 웹쉘 내역이며, 위 구문에서 FSO(FileSystemObject) 등의 구문을 통해 이것이 정상적인 프로그래밍에서 이용되는 구문인지 공격용인지를 판단하는 기준의 근거가된다.
흔히 웹쉘에 대한 구문이 공격용 구문으로 가득차 있다고 판단하는 경우가 많다. 하지만 이는 절반은 맞고, 절반은 틀리다. 사실 웹쉘이란 일반적인 공격툴과 같이, ‘관리자의 시스템 관리를 위해 유용하게 사용될 수도 있는 도구’로 정의 될 수도 있다. 이 의미는 좋게 이용될 경우에는 ‘관리툴’이지만, 나쁘게 이용되면, ‘공격툴’로 변화한다는 점이라고 볼 수 있다. 따라서, 공격용 웹쉘과 정상적 웹 프로그래밍의 차이는 거의 없다고 보면 된다. 이것이 웹쉘 탐지시 오탐 비율이 급상승하게 되는 요인지 되기도 한다.
[그림 5] 정상인지 공격용인지의 여부가 불명확한 웹쉘
[그림 5]에서는 공격자가 공격한 순간을 캡처한 화면이다. 여기서 주의해야 할 점은 전세계적인 거의 모든 네트워크 보안 장비가 실제 이벤트의 미가공 데이터(Raw Data)를 약 1,000byte 정도만 캡처한다는 점이다(물론 장비 설정에 따라 편차가 발생하는 점은 당연하다). 문제는 이런 시점에서 탐지된 패턴 중 공격이라고 극명하게 판단할 만한 패턴이 네트워크 보안 장비에서 캡처 한 1,000byte 이내에 없다는 점이다. 실제로 캡처한 구문 내에 ‘아~ 이거다!’라고 판단할 만한 구문이 없다. 실제 공격구문은 1,000byte 밖에 있었던 것이다.
[그림 6] 난독화 처리된 웹쉘
이러한 점에서 공격자가 점점 교활해 진다는 점을 알 수가 있다. 상당수의 공격 구문이 네트워크 보안 장비의 미가공 데이터(Raw Data) 캡처 범위를 벗어나고 있어, 보안 담당자가 해당 패턴이 공격인지 아닌지의 여부를 판단하기 어렵게 만든다.
보안 담당자 입장에서 이러한 순간은 상당히 곤혹스런 순간이며, 이때, 선택은 단 두 가지 밖에 없다. 막을 것인지 흘려 보낼 것인지. 이때, 정상적인 패턴을 막을 경우, 서비스 장애가 발생되며, 실제로는 공격인데, 막지 않고 흘려 보냈을 경우에는 침해사고의 원인이 된다. 이러한 점이 웹쉘에 대한 이벤트를 적극적으로 막아내기 어려운 기술적 배경이 되기도 한다. 최근에는 [그림 6]과 같이, 평문 기반의 웹쉘을 찾아보기가 어려울 정도로 난독화 형태를 띄고 있는 것이 특징이다. 마치 멀웨어(Malware)와 같은 모습을 보이고 있다. 사실 웹쉘의 기능은 점점 지능화되고 있어, 웹쉘과 멀웨어가 어느 순간에는 같은 용어로 불리어질 날이 올지도 모른다는 생각을 하게 된다.@
- 안철수연구소