자바스크립트 소스를 이용하여 악성코드를 심는 방법은 일반화 된지 오래 되었다. 특히 악성코드 제작자들은 자바스크립트 소스를 분석하기 어렵게 만들기 위한 난독화 과정을 거쳐, 백신제품의 엔진에 반영하기 어렵게 하고 있다. 지금까지는 주로 문자열 인코딩 방식을 ASCII 코드가 아닌 다른 방식을 이용하여 알아보기 힘들게 만들었다.

그러나 이번에 새롭게 등장한 방식은 이러한 틀에서 벗어난 방식이다. 화면에 난독화 코드로 보이는 부분이 존재하지 않고, 다만 커다란 빈 공간이 많이 보인다.


그림 1 최근 한 언론사 홈페이지에 삽입되었던 소스코드


보기에는 공백으로 보이지만 실제 커서 위치시켜 이동시켜 보면 스페이스와 탭이 섞여 있는 것을 확인할 수 있다. 보다 정확한 확인을 위해 HEX 값을 확인해 보면 그림 2와 같음을 확인할 수 있다.

그림 2 해당 소스코드의 HEX값 확인 결과


스페이스와 탭의 아스키 코드 값은 16진수로 각각 20 09이다. 따라서 위와 같이 표현된 코드의 경우 스페이스와 탭을 2진수 표현 값으로 이용한 것으로 추론 가능하다.
 

사실 이러한 방법은 빌리 호프만(Billy Hoffman)[각주:1]이 이미 2008 Blackhat 보안 컨퍼런스에서 Circumventing Automated JavaScript Analysis”라는 주제로 발표할 당시 언급한 적이 있다. (발표자료 다운로드) 다만, 발표 당시에는 Crazy Idea (“현실적으로 불가능한 아이디어이라는 의미)로 소개되었으나 실제 코드가 발견되었다는 것이 중요하다.

 

그림 3 2008 Blackhat 컨퍼런스에서 발표된 실제 발표자료


위의 자료를 보면 스페이스는 1, 탭은 0을 의미한다. 탭과 스페이스로 구성된 코드는 다양한 방법으로 난독화를 해제할 수 있다. 스페이스와 탭을 각각 1 0으로 고쳐서 직접 계산하고 표에서 찾는 방법이 있고, 간단한 프로그램을 작성하여 분석하는 방법도 있다. 또한 별도의 툴을 이용하지 않고, 브라우저만 이용하는 방법을 이용하여 분석하는 방법이 있다.

먼저 소스코드를 보기 좋게 정렬한다. 화면에 스페이스와 탭만 출력되어서는 악성페이지를 불러올 수 없다. 분명 스페이스와 탭을 복호화 하는 코드가 포함되어 있을 것이다. 스페이스와 탭 코드 바로 윗 부분에, 빌리 호프만의 발표자료에 있던 복호화 코드와 동일한 소스가 있는 것을 확인할 수 있다.

그림 4 디코딩 함수 정의, 호출 부분, 호출시 전달인자는 난독화 된 코드이다.


그림 4는 난독화된 부분과 복호화 코드만 남겨두고 정상인 부분은 제거한 것이다. 스페이스와 탭으로 구성된 난독화 된 문자열이 복호화 함수로 전달되어 복호화 될 것이다.  실제 복호화 된 코드를 출력해보면 그림 5와 같다. (상세 결과는 모자이크 처리)

그림 5 복호화시 출력 결과


출력결과에서 알 수 있듯이 일부 메시지는 HEX값으로 되어 있는 것을 알 수 있다. 다시 난독화 해제를 해주면 실제 호출하고자 하는 파일의 주소를 확인할 수 있다.

그림 6 최종 호출하는 파일의 주소


그림 6과 같이 연결하고자 하는 악성코드 유포페이지로 유도하는 주소와 코드를 확인할 수 있다. 현재 해당 URL은 접속되지 않는 것으로 보아 제작자에 의해 폐쇄된 것으로 보인다.

이러한 악성코드가 동작하거나 감염되는 것을 막기 위해서 다음과 같은 조치를 취해야 한다.

<개인>

1. 백신 프로그램의 경우 최신버전의 엔진을 사용한다.

 

2. 윈도우 XP의 경우 SP 버전 등을 확인하여 최신버전을 설치하여 사용하고, 미설치된 보안업데이트가 있을 경우 모두 설치한다.

3. IE 8.0 이상의 브라우저를 사용하거나 타사 브라우저를 사용한다.

http://update.microsoft.com/microsoftupdate/v6/default.aspx?ln=ko

위 링크 이동 후, 서비스팩 및 IE 업데이트 설치 진행

 

4. Flash Player를 비롯한 ActiveX 프로그램들은 최신 버전을 설치한다.

http://get.adobe.com/kr/flashplayer/
위 링크 이동 후, "지금 다운로드" 클릭하여 설치 진행
(
추가 프로그램 설치를 원치 않을시엔 선택사항 체크 해제 하신 후 다운로드 클릭)

5. 최근에 많이 이용되는 Java 취약점을 보완하기 위해 최신 버전의 Java 프로그램을 설치한다.

http://www.java.com/ko/
위 링크 이동 후 "무료 자바 다운로드" 클릭하여 설치 진행

 

<기업 보안관리자>

1. 백신 프로그램의 경우 최신버전의 엔진을 사용한다.

 

2. 부득이한 경우를 최소화하고, 보안업데이트 및 최신 윈도우 서비스팩를 설치한다.

 

3. 부득이한 경우를 최소화하고, IE8 버전 이상을 사용한다.

 

4. 추가 응용프로그램들의 업데이트는 아래 글을 참고한다.

http://asec.ahnlab.com/758

 

 

 

  1. Acidus라는 닉네임으로 잘 알려진 미국 해커. 前 SPI Dynamics 연구원(웹보안 연구기업). 前 HP 웹보안 연구그룹 연구원. 現 Zoompf 설립자 겸 대표 (웹보안컨설팅 회사) [본문으로]
신고
Creative Commons License
Creative Commons License
Posted by 곰탱이푸우