[Case Study] 배너 광고 달았을 뿐인데 악성코드 유포 사이트로 전락
배너 광고 사이트를 통한 악성코드 유포사례
우리 회사 홈페이지나 내가 관리하고 있는 사이트를 통해 악성코드가 유포됐다면 관리자 입장에서는 어떨까. 특히 모든 보안 수칙을 준수하며 철저히 관리해왔던 관리자 입장에서 보면 무척 억울한 일을 것이다. 그렇다면 과연 자신들이 관리하는 사이트가 취약하지 않더라도 악성코드 유포 사이트로 이용될 수 있을까? 이에 대한 대답은 ‘예스’이다. 지난 달 발생한 실제 사례를 통해 어떻게 이런 일이 발생할 수 있는지 알아보자.
주말만 되면 특정 악성코드에 대한 고객 접수가 늘어나는 이상한 현상이 발견됐다. 윈도우 정상 파일인 imm32.dll의 변조 사례가 평일보다 주말에 더 많이 발생하는 추세를 보이고 있는 것이다. 그 이유가 무엇일까?
안철수연구소 ASEC(시큐리티대응센터) 분석 결과, 국내 다수의 사이트에서 imm32.dll을 패치하는 악성코드를 유포 중임을 확인할 수 있었다. 또한 해당 사이트들을 분석해 본 결과 2가지의 공통점이 발견되었다.
첫째, 해당 사이트들에는 아래 2개의 악성 스크립트를 다운로드 하는 링크가 삽입되어 있었다.

둘째, 해당 사이트들은 특정 배너광고 업체에서 제공하는 배너 광고를 사용하고 있었다.
즉, 특정 배너광고 업체에서 제공한 배너광고에 악성코드를 유포하는 악성 스크립트가 삽입되어 있었던 것이다. 이 배너를 사용했던 업체들은 자신들의 사이트가 자체적으로 취약하지 않았더라도 악성 스크립트가 삽입된 배너에 의해서 악성코드를 유포하는 사이트로 전락한 것이다.

[그림 1] 배너 광고에 삽입되었던 악성 iframe링크
지금까지 확인된 배너광고 업체는 2곳이며, 언급한 내용을 도식화 해보면 [그림 2]와 같다.

[그림 2] 배너광고 업체가 제공한 배너광고를 경유한 악성코드 유포
[그림 2]와 같은 방법을 취하면 악성코드를 유포하기 위해서 힘들게 취약한 사이트들을 찾고 공격하지 않더라도 짧은 시간 안에 가능한 많은 악성코드 유포를 할 수 있는 효과를 얻을 수 있다.
이러한 사례 재발 방지를 위해 상세한 분석 결과를 설명하고자 한다.

[그림 3] log***.co.kr 사이트의 메인 화면

[그림 4] 악성 스크립트가 삽입된 관련 스크립트
[그림 4]에 표시된 자바 스크립트 내부에는 악성 스크립트가 삽입되어 있으며 해당 악성 스크립트가 실행되면서 imm32.dll을 패치하는 악성코드를 설치하기 위한 사이트로 접속하게 된다.

[그림 5] 삽입된 악성 스크립트 복호화
지금부터 복호화된 ro**. htm이 실행되었을 때 진행되는 세부과정에 대해 살펴보자.

[그림 6] ro**. html이 실행되었을 때 접근하는 하위 URL
먼저 cool.htm에 대해 간략하게 확인을 해보자. 아래는 cool.htm 페이지의 일부 코드로 User Agent 값을 확인하여 인터넷 익스플로러의 버전이 6버전이면 i6.htm, 7버전이면 i7.htm 파일을 로딩하는 것을 알 수 있다. 그 외에 ko1.htm, ko2.htm은 기본적으로 로딩함을 알 수가 있다.

[그림 7] cool.htm의 일부 코드
cool.htm파일이 다운로드 된 PC에서 인터넷 익스플로러 6버전을 사용할 경우 다운로드 되는 i6.htm의 코드를 분석해 보면 아래와 같다. 해당 페이지에서 이용하는 취약점은 Microsoft Internet Explorer "iepeers.dll" Use-after-free Vulnerability (MS10-018)이다.

[그림 8] i6.htm 코드 일부
다음은 인터넷 익스플로러 7버전을 사용할 시 접속하는 i7.htm 코드로, 해당 코드 역시 i6.htm과 마찬가지로 같은 취약점(Microsoft Internet Explorer "iepeers.dll" Use-after-free Vulnerability (MS10-018))을 사용하고 있다.

[그림 9] i7.htm 코드 일부
다음은 ko1.htm 의 코드를 분석한 결과이다. 해당 파일은 Adobe Flash 취약점(CVE-2009-1862)을 사용한다.

[그림 10] ko1.htm 코드 일부
마지막으로 ko2.htm의 코드를 분석해 보면 해당 파일이 사용하는 취약점은 Microsoft Office Web Components (Spreadsheet) ActiveX BOF (MS09-043)이다.
지금까지 분석한 악성 스크립트 파일들에 대해서 정리를 해 보면 비교적 최근에 보고된 취약점이며, 악성코드 제작자들이 악성코드 유포 시 자주 사용했던 취약점이라는 것을 확인할 수 있다. 만약 사용자들이 자신의 PC에 보안 패치를 적용했더라면 이러한 피해를 입지 않을 수도 있었다. 사용자들이 PC에서 발생할 수 있는 보안 문제도 신경 써야 한다는 점을 다시 각인시켜 준 사례하고 할 수 있다.
앞선 취약점 분석에서 PC에 어떤 취약점이 존재하면 악성코드에 감염되는지 살펴보았다. 지금부터는 유포된 악성코드에 대해서 분석해 보도록 하겠다. 그 전에 유포된 악성코드의 전체적인 동작구조를 살펴보면 아래 그림과 같다.

[그림 11] imm32.dll을 패치하는 악성코드의 동작구조
이 악성코드는 익스플로잇(Exploit) 스크립트에 의해서 h**p://210.***.***.236/top/x7.exe는 %PROGRAMFILE%\Common Files \SafeDrv.exe로 다운로드 되고 실행된다. 그리고 SafeDrv.exe가 실행되면 레지스트리에 자신의 값을 추가함으로써 윈도우가 부팅할 때마다 자동 실행되도록 해둔다.

또한 감염 pc의 정보를 특정 사이트로 전송하는데 이는 감염 PC의 현황 파악이라는 목적을 위한 것으로 보여진다.

감염된 PC의 정보를 전송한 후 추가로 h**p://210.***.***.236/top/s2.exe를 %PROGRAMFILE%\
s2.exe로 다운로드 하고 실행된다. 이 s2.exe는 윈도우 정상 파일인 imm32.dll를 패치하여 게임핵 악성코드를 로딩하게 하는 패치류의 악성코드이며, 요즘 이슈가 되고 있는 악성코드 중의 하나이다.
imm32.dll은 윈도우의 시스템 파일이며 WFP(Windows File Protection)의 모니터링 대상이므로 s2.exe는 imm32.dll를 패치하기 전에 sfc_os.dll에서 특정 파일에 대해서 1분간 WFP를 무력화할 수 있는 함수(#5)를 사용하여 imm32.dll에 대해서 WFP를 일시적으로 무력화한다.

[그림 12] imm32.dll에 대해서 WFP(Windows File Protection) 무력화 코드
이후 정상 %SYSTEM%\imm32.dll을 %SYSTEM%\imm32.dll.log로 백업해 두고 패치작업을 수행한다. 그리고 1분이 경과하면 윈도우에서는 패치된 imm32.dll를 WFP로 보호한다. 즉 패치된 imm32.dll을 정상 윈도우 파일로 인식하게 된다.

[그림 13] 패치된 imm32.dll의 섹션 정보
[그림 13]에서 보는 것처럼 패치된 imm32.dll에는 .sy32라는 섹션이 추가되어 있음을 알 수가 있다. 해당 섹션의 기능은 특정 프로세스에서 패치된 imm32.dll을 로딩할 때 게임핵 악성코드인 ole.dll를 자동으로 로딩하게 하는 아주 단순한 역할을 한다.
이 ole.dll은 특정 온라인 게임 사용자의 계정정보를 탈취하여 특정 URL로 전송하는 역할을 수행하는데, 이번에 유포된 s2.exe에 의해서 생성된 ole.dll의 계정정보 탈취대상은 아래와 같다.

[그림 14] 계정정보 탈취 대상 리스트
일반적으로 게임 핵 악성코드에서 탈취한 계정정보를 유출하기 위해서 사용되는 URL은 암호화되어 있으며 ole.dll에서는 아래 복호화 루틴을 사용하여 암호화된 URL을 복호화한다.

[그림 15] 복호화 루틴
![]()
![]()
앞서 언급했듯이 이번 사례는 해당 사이트에 침해사고가 발생하여 악성코드를 유포했던 것이다. 실제로는 특정 배너광고 사이트가 침해사고를 당했고 해당 사이트에서 제공하는 배너 광고에 악성코드를 유포하는 악성 스크립트가 삽입되어 있었음을 확인할 수 있었다. 하지만 사용자들은 자신들이 접속한 사이트들에서 악성코드를 유포하는 것으로 오해를 할 것이다.
이번 사례처럼 동일하게 운영되는 사이트는 많을 것이고 배너광고를 제공하는 사이트에 침해사고가 발생한다면 해당 배너광고를 사용하는 사이트들에게까지 동시에 영향을 미칠 수 있다. 즉, 다수의 사이트가 동시에 침해사고가 발생하여 악성코드가 유포된 것처럼 여겨질 수 있는 문제이다. 각 사이트 관리자들은 모 방송에서 유행한 유행어처럼 "내 사이트만 아니면 돼"가 아니라 외부에서 제공받아 사용하는 콘텐츠들에 대해서도 보안측면에서 면밀히 검토해 볼 필요가 있다.
그리고 유포되었던 악성코드에 감염된 PC의 경우, 해당 PC에서 보안 업데이트만 잘 되어 있었다면 감염피해는 미연에 방지할 수 있었다. 이는 대문을 열어 놓고 방범 시스템을 설치해서 도둑을 잡거나 막는 것이 아니라 근본적인 문제를 보안해야 한다는 의미이다. 즉 PC에서 사용하는 운영체제나 응용 프로그램에 보안 취약성은 없는지 또 보안 업데이트는 주기적으로 적용되어 있는지 등을 점검해 주는 것이 바람직하다.
- 안철수연구소