악성코드 유포 시 기본적인 스크립트 형태가 아닌 Space 와 TAP 키를 이용하여 소스코드의 내용을 은폐하는 악성코드가 등장했습니다. 1월경 발견됐는데 전 언제 샘플을 구하나 했는데 드뎌 구했습니다~ㅋ 그럼 해당 악성코드에 대해서 한 번 살펴 보도록 하겠습니다.

해당 기법은 2008년 빌리 호프만이 Blackhat 보안 컨퍼런스에서 발표한 적이 있으며 그 당시에는 단순히 아이디어였으나 그것을 현실화한 코드가 발견되었다는 사실에 주목할 필요가 있습니다.

당시 발표 자료는 아래 링크에서 다운받으실 수 있습니다.
http://www.blackhat.com/presentations/bh-usa-08/Hoffman/Hoffman-BH2008-CircumventingJavaScript.ppt




 위 자료를 살펴보면 특정 문자열의 이진코드값을 Space와 TAB 키를 이용하여 내용을 표시하도록 하여 스크립트 내용을 감추도록 하는 방법입니다.




그럼 코드를 살펴 보겠습니다.
실제 유포사이트의 js 파일내에 스크립트가 삽입되어 있으며 박스 부분이 실제 악성스크립트 입니다. 줄 바꿈을 안해놔서 찾기가 힘들었습니다.






보기 쉽게 줄바꿈을 하자 중간 부분에 빈 공간이 보입니다. 바로 저 부분이 Dehydrate a String 을 이용한 부분입니다.






공백 표시를 해보니 TAB 키와 Space 키 흔적이 보이네요..






아래 코드를 살펴보면 while문과 for문을 돌려서 유니코드 값을 tmp 에 저장하고 있으며, fromCharCode 함수를 이용하여 유니코드를 문자열로 반환하도록 하고 있습니다.

while(s.charAt(curr) != '\n') {
        var tmp = 0;
        for (var i=6; i>=0 ; i-- ){
            if (s.charAt(curr) == ' '){
                tmp = tmp | (Math.pow(2,i));
            }
            curr++;
        }
        r.push(String.fromCharCode(tmp));
}

document.write로 tmp 값을 확인 해 보니 iframe 태그를 이용하여 특정 사이트의 페이지를 호출하도록 되어 있습니다.




URL 인코딩으로 되어 있는 부분을 다시 디코딩 해보았습니다. 특정 사이트의 index.html을 호출하도록 되어 있네요.. 아직 유포중이라 모자이크 처리 했습니다.




추가 분석은 나중에 하고 어쨌든 새로운 공격 방법을 볼 수 있어서 좋네요~