2019-10-20 19:25 (일)
난독화 악성코드 유포 급증...그 대책은?
상태바
난독화 악성코드 유포 급증...그 대책은?
  • 문일준
  • 승인 2011.07.23 14:05
이 기사를 공유합니다

자바스크립트 파일에 난독화 기술 본격적으로 사용되기 시작
보안 도구의 단점을 파악해 회피하는 수단으로 이용
몇 년 전부터 꾸준히 악성코드를 배포하는 방식으로 널리 애용된 방법이 바로 정상적인 웹사이트에 악성코드를 유포하는 링크를 삽입하는 것으로 웹사이트를 방문한 이용자는 자신도 모르는 사이에 악성코드가 다운로드되어 감염되게 된다. 이러한 목표를 달성하기 위해 사용되는 1차적 공격 방식은 Mass SQL Injection, ARP Spoofing 그리고 실제 서버 해킹 등을 들 수 있다.
 
2차 공격 즉, 악성코드를 유포하는 링크에는 윈도우, IE 취약점, 자바 취약점, 아크로뱃 리더/아도브 플래시의 취약점을 이용하는 공격 코드가 포함되어 있다. 전체 PC 가운데 이러한 취약점을 가진 PC가 얼마나 되는지 가늠할 수 있는 자료가 지난 5월에 ALWIL Software(어베스트! 백신 개발사)에서 발표되었는데, 사용자의 60% 정도가 아크로뱃 리더의 취약점을 가지고 있는 것으로 보고되고 있다. 실제 아크로뱃 리더는 일반 사용자들이 잘 알지 못하거나 사용하지는 않는 경우도 많다. 하지만, 아더브 플래시는 IE와 파이어폭스에서 그리고 국내에서 너무나 많이 사용하기 있으며, 이 제품의 보안 패치에 대해서도 많이 알지 못하는 경우가 많기 때문에 그만큼 많은 감염 피해가 발생하고 있다고 추정할 수 있다.
 
해외뿐만 아니라 국내에서는 더욱더 문제가 심각하다. 아시다시피 IE의 인터넷 점유율이 거의 90% 이상이기 때문에 해외보다 더욱더 많은 피해가 발생한다고 볼 수 있다. 특히 주말, 정확히는 금요일 오후 6시 이후에 국내에서는 P2P 사이트, 언론 사이트, 취미, 여행, 학원 등과 같이 방문자가 많은 웹사이트를 통해 이러한 악성코드들이 유통되고 있는 실정이며, 이에 대한 자세한 사항은 필자의 기사를 참고하기 바란다.
 
"아무도 설명하지 않는 웹보안의 현실"(http://dailysecu.com/news_view.php?article_id=67)

수년간 지속되던 공격의 형태가 지난 7월 초순을 기점으로 변화의 조짐이 서서히 나타나고 있다고 볼 수 있으며 그중 대표적인 2가지 현상에 대해서 설명하고자 한다.

1. 공격 목표의 다양화
3.3 DDoS 사태를 통해 악성코드를 유포하는 주요 통로가 파일공유(P2P) 사이트라고 알려지고 있다. 따라서, 공격자뿐만 아니라 국내 보안 기업 및 유관 기관에서는 P2P 사이트에 대한 모니터링을 강화하고 있으며, 공격자는 방어자의 시선을 분산시키기 위해 공격의 대상을 다양화하고 있다. 앞에서 언급한 바와 같이 그 전까지는 거의 매주 10개 정도 P2P 사이트가 해킹을 당하여 악성코드를 유포하는 상황이 지속되었지만, 지난 주에는 약 5개 정도로 40∼50% 공격이 줄어 들었다. 즉, P2P에서는 감소하고 있지만 그 외 다른 일반 웹사이트에서는 공격이 증가하였으며, 방어하는 입장에서 더욱더 어려움을 겪을 것으로 예상된다.

2. 코드 난독화(Code Obfuscation)
한 마디로 정리해서 자바스크립트 파일(.js)에 난독화 기술이 본격적으로 사용되기 시작했다. 난독화(Obfuscation)란 프로그램의 소스를 변경하는 방법 중의 하나로 소스를 제3자가 읽기 어렵게 만들어 제반 기술을 숨기거나 역공학(Reverse-Engineering) 공격을 막기 위해 주로 사용된다. php, asp 와 같은 웹 프로그래밍 언어와 달리 .js 파일은 웹사이트에 접근하여 누구나 소스를 다운로드받아 볼 수 있기 때문에 .js 파일에 대한 난독화가 많이 이뤄지는 편이다. 

2011년 7월 이전까지는 URL에 대한 난독화 기술이 많이 사용되고 있었다. 아래 그림과 같이 http:// 태그 뒤에 아스키 코드값으로 변조한 데이터가 웹 컨텐츠에 삽입되어 있다.

악성코드 유포경유지 URL이 인코딩된 웹소스

지난 7월 초순 경에 악성코드를 유포하는 웹사이트에서 발견된 JS 파일에는 다음과 같이 난독화 함수가 이용된 것을 발견할 수 있었으며, 이러한 형태의 공격을 받은 웹사이트가 기하급수적으로 증가하고 있다. 물론 2011년 7월 이전에는 간헐적으로 나타난 적은 있다.

코드 난독화로 인해 쉽게 알아 볼 수 없는 .js 파일

난독화를 풀어보면 다음과 같이 쿠키의 시간 제한에 관한 부분과 악성코드를 실제로 다운로드하게 처리해 주는 URL을 볼 수 있다. 

코드를 해독한 소스

심지어 어떤 .js 파일에서는 정상적인 난독화 파일 중간에 악성코드에 관련된 난독화 코드를 삽입하여 실제 분석하는데 많은 어려움을 겪는 사례도 있다.
 
국가기관에서도 이러한 악성코드를 유포하는 링크를 분석하는 시스템을 운영하고 있다. 하지만 공격자는 이러한 보안 도구의 단점을 파악하여 회피하는 수단으로 이용하고 있다고 볼 수 있는데 그 대표적인 이유가 난독화가 이뤄지는 경우 패턴 기반의 분석 시스템에서는 더욱 더 찾기가 어렵게 되기 때문이다. 또한, 새로운 패턴을 시스템에 적용해야 하므로 그만큼 대응하는데 많은 시간이 소요될 수밖에 없다.
 
이렇게 웹사이트를 통해 악성코드를 유포하는 공격이 이뤄지는 원인은 대부분 웹 취약점 중의 하나인 SQL Injection 취약점 그리고 이 취약점을 이용하는 추가적인 공격 기법 때문이라는 점은 대부분의 보안 관계자들은 공감하고 있다. 하지만 실제 웹사이트에서는 이러한 웹 취약점을 해결하고자 하는 노력이나 의지가 거의 전무하기 때문에 몇 년 전부터 그리고 앞으로도 꾸준히 지속될 수밖에 없는 상황이다. 이 부분에 대한 자세한 해결방안은 아래 링크를 참고하기 바란다.

웹개발 보안 가이드 외 기술자료(인터넷 진흥원) (http://www.kisa.or.kr/public/laws/laws3.jsp)
다만, 난독화라는 공격 기술이 새롭게 나타났을 때 웹 개발자 또는 관리자가 어떻게 추가적인 대응을 해야 하는지에 대해서 언급하면 다음과 같다.
먼저, 개발자는 웹사이트에 사용되는 컨텐츠 파일에 난독화 기술을 가급적 사용하지 않는 것이 좋다. 다만 기술적으로 공개하기 어려운 부분이 있다면 이 부분은 서버 쪽의 프로그래밍으로 넘겨서 처리하고 공개해도 무방한 부분만 놔두는 방식으로 고려하는 것이 좋다.
 
이렇게라도 해두면, 나중에 자신이 관리하는 웹사이트에 난독화 코드가 포함된 공격이 이뤄졌을 때 손쉽게 그리고 빠르게 이에 대한 대응을 할 수 있다는 장점을 가지게 된다.
 
물론, 웹보안을 강화하는 것이 최선의 방책이다. [빛스캔 문일준 대표 moonslab@bitscan.co.kr]