본문 바로가기
자유로운글

자바 스크립트 난독화/암호화를 적절하게 사용해야~ 백신업체도 편하다!!

by 잡다한 처리 2011. 8. 19.
반응형


백신업체에서는 항상 오탐지를 최소화 시키기 위해 노력한다.
하지만 스크립트같이 웹페이지에서 많이 사용하는 경우는 범용적으로 탐지시그니쳐를 가질 수 있기 때문에 종종 오탐지가 난다.
웹개발자들은 그런 사항들을 모르는 경우가 많기 때문에 오탐지가 발생하는 경우가 많다.


하나의 예를 들어보자!!

한 사이트에서 아래와 같은 스크립트 형태로 웹페이지가 동작하고 있다고 한다.

한눈에 봐서는 이거 악성코드아닌가? 라고 할만큼 악성스크립트에서 많이보던 형태로 페이지가 존재하고 있다.
(참고로 해당 코드는 블로그 및 카페, 홈페이지에 음악BGM을 생성해주는 코드이다.)


위의 페이지에는 "eval(function(p,a,c,k,e,d)" 스크립트를 사용하고 있었다.
이 방식은 Dean Edwards가 만든 자바스크립트 압축기로써 소스의 크기를 줄일 때 많이 사용되고 있는 압축방식이다.
정상적으로 분명 사용되는 방식이나, 이번 파일은 사용방법이 틀렸다고 생각한다.

그럼 왜 그런지 이유를 알아보자!!

위그림의 스크립트 내용을 풀어보면 아래와 같이 나온다. 아직까지도 소스 크기에는 크게 변화가 없다.


마지막으로 내용을 또 풀어보면 이렇게 일반적인 HTML 태그형태로 나오게 된다.
이게 압축을 할만큼 큰 소스 크기인가??



이 패킹 된 파일을 바이러스토탈(www.virtustotal.com)으로 검사를 해보자.
44개의 백신중 6개가 탐지가 된다.



하지만, 패킹 시키지 않고 HTML형식으로 파일을 바꾸어서 검사하면 아래와 같이 백신은 탐지하지 않는다.



웹 개발자입장에서 패킹은 유용한 방식임은 분명하다.
하지만 위와 같이 크기의 영향을 받지 않는다면 직접 HTML코드를 사용하는게 옳바르지 않나 싶다.

(참고)
작성자는 웹 개발자도 아니고 스크립트에 능통한 사람도 아니니~ 틀린 부분이 있다면 댓글로 이야기해주세요!!
그냥 욕하고 가시지 말고 ㅡ.ㅡ;; 잘못 된 부분이 있다면 고치고 저도 배울 수 있는 기회가 될 수 있으니~ (__)(__)


댓글