주말 집중적 악성코드 유포…탐지와 대응책은?

SPCIAl REPORT / 대규모 악성코드 유포 동향 분석

2014-04-04     이광재 기자

2013년 악성코드 은닉사이트 1만7750건…2012년 대비 36% 증가
주기적 취약점 점검·웹셸 탐지도구 설치·보안패치 실행 등 필요




개요
2013년 한해 동안 1만7750건의 악성코드 은닉사이트(해킹을 당해 악성코드 자체 또는 악성코드를 유포하는 주소(URL)가 숨겨져 있어 홈페이지에 방문한 PC를 악성코드에 감염시킬 수 있는 웹사이트를 의미)가 탐지됐다. 이는 2012년 탐지된 건수보다 증가한 수치이며 악성코드 은닉사이트는 매년 추세에 있다.

악성코드 은닉사이트 특성을 살펴보면 대량 경유지와 연결되는 유포지가 확인된다. 대량 경유지를 통해서 짧은 시간내에 대규모 좀비PC를 신속히 확보하는 것이다.

2013년 발생된 대량 경유지 악용 악성코드 유포 사고 시점을 보면 대규모 악성코드 유포 공격이 주로 주말(금요일 18시 이후~일요일)에 집중적으로 발생한다는 것이 확인(전체 사고의 70%가 주말에 발생)된다.

대규모 악성코드 유포를 시도하는 공격자들이 주말을 악용하는 이유는 서버에 대한 기술적인 조치가 주말에 미흡하기 때문이다. 실제 악성코드 유포에 악용된 서버를 섭외해서 분석을 수행하려 해도 담당자가 연락이 되지 않거나 차주 업무시간에 진행이 가능하다는 답변을 자주 듣게 된다. 공격자들은 이러한 부분을 악용하는 것이다.

본 보고서에서는 지난 1년간 발생된 주말 악성코드 유포사고 분석 기반으로 대규모 악성코드 유포를 목적으로 하는 공격의 특성들을 살펴본다. 특히 유포되는 악성코드 유형과 사용자 PC를 감염시키기 위해 사용되는 취약점, 악성코드 유포에 주로 악용되는 은닉사이트의 유형, 그리고 공격자의 공격 기법 및 특징 상세 분석을 통해 주말 악성코드 유포 사고의 심각성을 다시한번 생각하고 대응 방안을 제시한다.

공격자는 어떤 악성코드를 유포하는가?
2013년 한해동안 주말에 유포된 악성코드는 원격제어와 다운로더, 드롭퍼, 정보수집 악성코드가 주를 이뤘고 DDoS공격, 금융정보탈취, 금융사이트 파밍, 온라인 게임 계정탈취 악성코드도 다수 확인됐다.

특히 원격제어 악성코드의 비중이 상당히 높은 것을 알 수 있다. 이는 최근의 사이버공격이 지속성을 유지하려는 특성을 가지고 있음을 쉽게 확인할 수 있다. 또 한가지 주목할 부분은 정보수집 악성코드의 비중이다. 정보수집 악성코드가 주로 수집하는 정보는 감염된 PC의 시스템 정보이다.

시스템 정보에는 일반적으로 PC가 위치한 네트워크 환경(기업의 경우 기업명 등도 확인 가능) 및 사용자에 대한 정보가 포함돼 있다. 즉, 이러한 정보들을 통해 공격자는 감염된 PC에 대한 다양한 환경 정보 수집이 가능하며 공격 대상을 선별할 수 있게 된다.

악성코드 유형을 APT 관점으로 바라보게 된다면 주말 악성코드 유포 대응이 곧 APT 공격 대응이라고 할 수 있다.

공격자는 어떤 취약점을 악용하는가?
악성코드는 사용자 PC가 가지고 있는 취약점을 통해 설치된다. 악성코드가 설치되면 시스템 변조 및 정보를 유출할 수 있는 권한이 공격자에게 주어지는 것이다. 공격자가 악성코드를 PC에 감염시키기 위해 악용한 취약점은 아래 5가지로 분류된다.

- MS IE 취약점 : 인터넷 웹브라우저 취약점
- 어도비 플래시 플레이어 취약점 : 웹서핑 시 브라우저로 비디오, 애니메이션 등을 볼 수 있게 해주는 플러그인 취약점
- 자바 애플릿 취약점 : 웹페이지상에서 실행되는 자바 프로그램 취약점
- MS 윈도 미디어 취약점 : 윈도 미디어 플레이어 취약점
- MS XML 취약점 : 인터넷에서 사용되는 xml 언어 해석 도구 취약점

위에 언급된 5가지는 모두 사용자 PC에 설치되는 가장 일반적인 프로그램의 취약점을 악용한 것이며 5가지 모두 지속적으로 취약점이 발견되고 조치되는 과정이 반복적으로 수행되고 있다. 최근 중국 온라인 보안 솔루션 회사에서 발표한 ‘2013년 정보안전보고’ 자료에서도 위에서 언급된 취약점을 10대 고위험 취약점에 포함시키고 있다.

주말 악성코드 유포 사고의 경우에는 사용자 PC가 위에 언급된 5가지에 대한 취약점 조치만 잘 하더라도 대부분의 감염을 예방할 수 있다. 사용자는 악성코드 감염을 예방하기 위해 위에 언급된 프로그램에 대한 지속적인 업데이트(자동업데이트)가 반드시 필요하다.

공격자는 어떤 유형의 홈페이지를 악용하는가?
공격자의 최대 목적은 대규모 경유지를 이용, 신속히 감염PC를 확보하는 것이므로 악성코드 경유지 및 유포지 확보를 위해 최대한 방문자가 많은 홈페이지를 악용한다.

2013년 한해동안 주말 악성코드 유포에 악용된 홈페이지 유형을 살펴보면 웹하드, 커뮤니티, 언론사가 가장 많은 비중을 차지했으며 쇼핑몰과 다수의 기업 홈페이지도 포함돼 있다.

커뮤니티는 특히 게임관련 정보를 공유하는 홈페이지가 주로 악용됐다. 웹하드, 커뮤니티, 언론사는 주말에 일일 방문자가 많은 홈페이지이므로 대규모 봇넷을 구축하려는 공격자에게 주요 타깃이 되는 것으로 보인다.

공격자의 홈페이지 공격 기법은?
공격자의 최초 침투경로 = 악성코드 은닉 사고에 악용된 홈페이지를 분석한 결과 공격자의 최초 침투 경로는 파일업로드·계정유출·SQL인젝션 3가지가 가장 큰 비중을 차지하고 있었다. 파일업로드의 경우 홈페이지 방문자가 파일을 업로드 할 수 있는 기능을 악용하는 공격이다.

파일업로드 취약점은 과거부터 지금까지 여전히 해킹 경로로 가장 많이 악용되는 통로다. 그럼에도 불구하고 소스코드 수정 및 서비스 변경 등에 대한 부담을 이유로 적절한 보안조치가 이뤄지지 않는 대표적인 취약점 영역이기도 하다.

또한 해당 취약점은 주말 악성코드 유포 사고 이외에도 대다수의 해킹사고에 악용되고 있어서 KISA에서는 2013년 3월에 언론보도 및 기술문서를 통해 보안강화 조치가 반드시 필요함을 알린 사례도 있다. 기술문서에는 파일업로드 취약점에 대한 상세 대응방안도 기술돼 있다.

공개 게시판을 사용하는 홈페이지의 경우에는 지속적인 보안 패치 적용이 필수적이다. 실제 피해 사례를 보면 기술지원이 종료된 공개 게시판을 여전히 운영중인 곳도 있었으며 유료 게시판 솔루션을 구매해 홈페이지를 구축했으나 지속적인 기술지원이 이뤄지지 않아 취약한 경우도 다수 존재했다.

계정유출은 공격자가 이미 서버의 접근 권한을 다른 경로를 통해 획득한 경우다. 피해 시스템을 분석해 보면 다른 악성행위 없이 공격자가 시스템에 바로 원격 연결해 악성행위를 한 사고가 다수 발견됐다. 물론 공격자가 로그인한 계정은 관리자 계정이었다. 무차별 대입공격 및 백도어 등의 흔적이 전혀 없는 것으로 봐 관리자가 평시 사용하는 PC가 키로깅 악성코드에 감염되는 등의 원인으로 계정이 사전에 유출됐을 것으로 보인다. 그러므로 서버 관리자는 자신이 사용하는 PC에 대한 보안을 철저히 유지해야 한다.

SQL인젝션 공격은 웹이 데이터베이스와 통신하는 쿼리 과정의 취약점을 악용하는 공격기법이다. 공격자는 SQL인젝션 공격을 통해 원격에서 서버에 웹쉘을 삽입할 수 있으며 관리자 계정 획득·인증 우회 로그인·시스템과 데이터베이스 정보 유출 등의 행위도 수행할 수 있다.

아래 화면은 SQL인젝션 공격으로 공격대상 서버에 웹셸을 생성하는 공격 사례다. SQL인젝션 공격에 대한 대응은 소스 레벨에서 공격에 악용될 수 있는 문자열을 철저히 필터링하는 것이 필요하다.

최초 침투 다음 단계의 주요 공격 행위 = 주말 악성코드 유포사고의 경우 최초 침투에 성공한 공격자들이 추가로 수행하는 공격행위는 크게 3가지로 구분됐다. 가장 빈번히 나타나는 공격 행위는 웹셸 설치다. 웹은 누구에게나 공개돼 있으므로 공격자는 최초 침투후 서버에 웹셸을 설치해 언제든 접근이 가능한 백도어로 이용하는 것이다.

웹셸은 크게 2가지 유형으로 구분된다. 공격 행위를 쉽게 수행하도록 UI를 제공하는 웹셸과 다양한 시스템 명령을 조합해서 사용해야 하는 단순한 웹셸(one-line webshell)이 있다. UI를 제공하는 웹셸의 경우 아래와 같이 단순 파일 업로드 기능만 있는 웹셸에서부터 파일 변조 및 데이터베이스 연결 등 다양한 기능을 수행할 수 있는 웹셸이 확인됐다.


온라인 웹셸은 공격자에게 UI를 제공하진 않지만 위험성은 다른 웹셸과 동일하다. 공격자는 웹셸 코드에 시스템 명령을 전달해 원격에 있는 악성코드를 서버가 다운받도록 조정할 수 있다. 또한 서버가 가지고 있는 취약점을 공격하는 공격 코드를 다운 받은 후 권한 상승 및 백커넥트 연결을 시도하는 것이 가능하다.

루트킷은 서버 관리자를 속이기 위해 공격자들이 주로 사용하는 도구다. 서버에 루트킷이 설치되면 시스템의 기본 명령문을 통해서는 악성 행위를 수행하는 프로세스 및 파일이 확인되지 않는다. 즉, 루트킷이 시스템의 다양한 명령어를 변조하는 것이다.

실제 분석했던 사고중 웹으로는 접근이 가능한 웹셸이 윈도 탐색기 또는 리눅스 기본 명령문으로 접근할 경우에는 접근이 불가능한 루트킷 감염 사례도 있었다. 이 경우에는 공개 루트킷 탐지 도구인 '아이스워드(Iceword)‘ 등을 통해 파일에 대한 접근 및 삭제가 가능하다.

공격자들이 피해대상 서버에서 주로 하는 악성행위 중 데몬 변조도 다수 발견됐다. 특히 서버를 원격 관리하기 위해 리눅스 환경에서 가장 많이 이용되고 있는 SSH 데몬에 대한 변조 사례가 가장 많이 발견된다. SSH 데몬에는 원격 접속자의 패스워드를 인증하는 모듈이 포함돼 있는데 공격자는 이러한 인증관련 모듈을 변조한다. SSH 데몬이 변조되면 나타나는 증상은 크게 2가지다.

첫째는 관리자가 패스워드를 변경하더라고 패스워드 인증 모듈이 변조돼 있으므로 공격자는 쉽게 접속이 가능하다. 둘째는 관리자가 패스워드를 변경한 이력 전부가 피해대상 서버의 특정 파일에 기록돼 공격자에게 유출된다. 데몬 변조를 사전에 탐지하고 대응할 수 있는 방은 이전에 언급된 기술문서에 상세 설명돼 있다.

국내 서버를 VPN 서버로 악용해 공격한다. = 공격자는 국내 서버를 해킹해 운영체제에서 제공하는 VPN(가상사설망) 서비스 모듈을 설치하고 이후 공격은 VPN 서버를 이용함으로써 자신의 실제 IP를 은닉한다.

사고 대응시 확인되는 IP가 국내에서 운영중인 시스템이면서 VPN 서비스가 실행중인 것으로 확인될 경우 추가 섭외를 통해 분석을 진행한다. 분석이 이뤄졌던 대부분은 시스템이 해킹돼 VPN 서비스가 불법적으로 실행된 것으로 확인됐으며 해외 공격자가 해당 시스템을 수시로 접속한 이력이 확인됐다.

주말에 악성코드 유포를 수행하는 공격자들이 대표적으로 사용하는 국내 VPN IP중 특정 IP는 여러 공격에 지속적으로 악용됐다. 관리하는 서버가 VPN으로 악용될 경우 다수의 공격자들에게 공유될 수 있으므로 관리자는 내부 네트워크 대역에서 1723포트(VPN 서비스의 기본 포트)를 열고 있는 서버가 있는지 여부를 확인하는 것도 도움이 된다.


공격들은 연관성이 있다. = 주말 악성코드 유포 사고의 공격자 IP를 분석하면 사고간의 연관성이 확인된다. 지속적으로 대규모 악성코드를 유포하는기 위해 공격자들이 사용하는 IP 대역들이 확인됐다.

공격자는 잠복기의 시간을 갖는다. = 주말 악성코드 은닉 사이트를 분석해 보면 최초 공격자 침투 시점과 악성코드 유포에 악용하는 시점은 차이가 있음을 알 수 있었다. 즉, 공격자는 악성코드 유포에 악용할 서버 그룹을 충분히 확보하기 위해 일정한 잠복 시간을 갖는다는 것을 의미한다.

실제 분석한 사례를 기준으로 통계를 확인해 보면 최초 침투 시점으로부터 악성코드 유포 개시 시점까지 소요된 기간 비율은 아래와 같다.

3개월 이내에 수행된 공격이 많은 비중을 차지하지만 그 이상의 기간 동안 잠복기를 갖는 공격도 큰 비중을 차지하고 있음에 주목해야 한다. 사고를 대응하면서 가장 자주 듣게 되는 질문이 바로 로그에 대한 적절한 보유기간에 관한 것이다. 위 자료를 통해 알 수 있듯이 공격자의 최초 침투경로를 명확히 파악해 사고 재발을 막기 위해서는 최소 1년 정도의 로그(시스템로그, 웹로그 등 데이터 변경이력 및 서버 접근이력을 확인할 수 있는 모든 로그)가 필요하다.

대량 악성코드 유포, 어떻게 대응해야 하는가?
사고 예방 및 대응을 위해 가장 필요한 영역은 서버 관리자들의 협조와 지원이다. = 서버에 대한 원격 접근제어 설정이 돼 있는지 확인하자. 대부분의 서버가 원격에서 관리할 수 있는 통로를 열어놓는다.

그러나 관리상의 편의를 위해 방화벽 등을 통한 접근제어 정책을 적용하지 않는 서버가 상상을 초월할 정도로 많다. 특정 IP에서만 원격 접근(윈도우 원격 터미널 접속, 리눅스 SSH 접근, FTP 접근 등)이 가능하도록 설정하더라고 1차적인 안전장치는 갖추는 것이다.

백커넥트 연결과 같은 변칙 공격에 대한 완벽한 대응을 염려하기 전에 가장 기본적인 대응부터 확고히 적용하는 것이 필요하다.

OS 및 서비스용 어플리케이션을 주기적으로 업데이트하자. = 업데이트를 언급하면 서버 관리자들이 많이 부담을 갖는다. 웹서비스 등 상시적이고 안정적으로 운영돼야 하는 환경에 있는 서버의 경우 OS 및 애플리케이션 업데이트가 서비스에 끼칠 수 있는 위험성을 예측하기 쉽지 않기 때문이다. 하지만 분명한 것은 OS의 보안업데이트 및 서비스에 이용되는 애플리케이션(공개 게시판, 특정 서비스 제공 상용 솔루션 등)은 가장 기본적인 침투 경로로 악용된다는 점이다.

서버 관리자 PC는 서버 만큼 강력한 보안을 유지하자. = 서버 관리자 PC가 악성코드에 감염되면 서버에 대한 보안 강화가 아무 의미가 없어진다. 공격자는 관리자 PC를 원격 조정할 수 있고 키로깅을 통해 관리자의 정보를 모두 탈취할 수 있기 때문이다.

서버 관리를 위해 사용하는 PC에서는 인터넷 접속 등 악성코드 감염으로 연결될 수 있는 행위를 삼가야 하며 최신 보안업데이트 및 정기적인 악성코드 검사가 반드시 수행돼야 한다.

또한 계정정보 등 보안에 민감한 정보에 대해서는 반드시 암호화된 파일로 저장해야 한다. 서버 관리자가 다양한 계정정보를 암호화되지 않은 엑셀로 PC에 저장해뒀다가 피해를 본 사례가 있었음을 기억하자.

홈페이지를 운영할 경우 취약점을 사전 점검하고 조치하자. = 공격자는 취약한 홈페이지부터 공격한다. 가장 낮은 수준의 공격에 쉽게 해킹이 될수록 더욱 취약한 것이다. 그러므로 홈페이지를 운영할 경우 누구나 쉽게 찾을 수 있는 기본적인 취약점을 사전에 점검해 조치해야 한다.

APT 형태의 공격이 아닌 단순히 악성코드 유포 등에 악용하기 위해서라면 공격자는 취약점이 쉽게 발견되지 않는 사이트를 붙잡고 오래동안 씨름하지 않는다. KISA에서 제공하는 무료 원격 웹취약점 점검을 충분히 활용하자.

지금 서버에 휘슬이 설치돼 있는가? 없다면 바로 신청하자. = 앞에서 언급했듯이 공격자가 서버에 침투했다면 대부분 웹셸이라는 백도어 프로그램을 설치해서 다음 공격들을 진행한다. 주기적으로 웹셸이 서버에 존재하는지 점검하는 것만으로도 서버에 대한 이상 징후를 감지하는 데 큰 도움이 된다. 물론 웹셸이 발견된다면 단순히 제거하는 것이 아니라 최초 침투 경로를 찾기 위해 KISA 등을 통해 전문적인 상세 분석을 곧바로 수행해야 한다.

로그가 관리되지 않는다면 사고 원인 분석 및 대책 마련이 어렵다. = 실제 사고를 분석해 보면 최초 침투시점의 로그가 존재하지 않아 명확한 공격 경로를 확인하지 못하는 경우가 많이 있다. 관리자가 로그를 일정기간 이상 보관하지 않는 사례가 대부분이며 공격자에 의해 강제 삭제된 경우도 다수 존재한다.

로그가 존재하지 않을 경우에는 사고가 재발되는 과정을 거쳐야 만이 최초 침투 경로를 찾을 수 있으므로 심각한 문제다. 그러므로 관리자는 시스템에서 발생되는 행위(시스템 이벤트 로그, 웹로그, 데이터베이스 쿼리 로그 등)에 대한 로그를 체계적으로 분류해 일정기간 이상 관리하는 것이 필요하다.

완벽한 보안이란 없기 때문에 반드시 로그가 큰 도움이 되는 상황이 발생한다. 한가지 유의할 점은 가능하다면 로그는 웹서버를 장악한 공격자가 강제 삭제할 수 없도록 별도의 저장소에 주기적으로(최소 일단위) 백업을 받는 것이 필요하다.

KISA에 서버 분석을 요청한다면 반드시 아래 사항을 유의하자. = 관리하는 서버에서 이상 파일을 발견해 서버 분석을 요청할 경우에는 관련 파일에 대한 선조치를 임의로 진행해서는 안된다. 상세 분석은 악성 파일이 생성된 시점과 생성 권한 등 시간과 특성을 기반으로 추적해 나가는 과정이므로 관리자가 임의 삭제 등 조치를 취할 경우 정확한 분석이 어려워진다.

만일 불가피한 상황으로 인해 파일 삭제 등 조치가 필요하다면 가장 기본적인 정보(파일에 대한 시간정보, 권한정보)를 메모하고 원본을 백업받아 두는 것이 필요하다.

■ 주요 참고 자료
- 휘슬(웹셸 탐지 도구) 설치 및 사용= 휘슬 소개 및 사용 신청 안내, toolbox.krcert.or.kr
- 무료 원격 웹 취약점 점검= 점검 서비스 절차 및 신청 안내, toolbox.krcert.or.kr
- 침해사고 조치 가이드= 침해사고 유형별 시스템 점검항목 및 조치 방안 안내, www.krcert.or.kr/kor/data/technicalView.jsp?p_bulletin_writing_sequence=1404
- 주요 해킹 기법과 대응 전략= 공격자들이 주로 사용하는 해킹기법 및 대응전략 소개, www.kisa.or.kr/public/laws/lawsView.jsp?b_No=158&d_No=39
- 침해사고 분석 및 홈페이지 개발과 관련된 안내서= 침해사고 분석 절차·홈페이지 개발보안 등 안내 및 해설서, www.kisa.or.kr/public/laws/laws3.jsp