[10] Red Kit 의 재미있는 난독화

난독화/난독화 강좌 2013. 11. 27. 03:56

Red Kit randing page에 사용된 난독화 방법 중 일부를 분석해 보자

 

Red Kit에 대해 간단히 소개하면 Blackhole EK 만큼이나 유명한 Web Exploit Tool Kit으로 자바취약점과 PDF 취약점을 이용한다. Red Kit은 이미 2012년부터 Red Kit을 이용한 악성코드 유포가 국내에서도 발견되고 있다고 한다. 

 

Red Kit관련 자료는 아래의 블로그들을 참조바란다.

Malware Must Die 블로그: http://malwaremustdie.blogspot.kr/2012_12_01_archive.html

Mcafee 블로그: http://blogs.mcafee.com/mcafee-labs/red-kit-an-emerging-exploit-pack

Hakawati Security Lab 블로그:

http://hidka.tistory.com/entry/Redkit-Exploit-Tool-Redkit-Landing-Page에-관한-정보

--------------------------------------------------------------------------------------------------

 

아래는 Red Kit randing page의 소스코드 일부이다. Jar 파일과 PDF 파일을 쉽게 확인할 수 있다.

하지만 작년 자료이기 때문에 해당 파일들을 구할 수는 없었다

[그림.1] Red Kit randing page

 

[그림.2] 는 오늘 난독화 공부를 할 부분이다.

[그림.2] 자바 취약점 난독화 데이터 부분

 

자세히 보면 자바 부분의 value 값에서 이상한  점을 발견할 수 있다. 

이 패턴은 Blackhole EK에서 자바 부분에 난독화된 데이터를 value값으로  삽입하는 것과

비슷해 보였다. 내 생각이 맞다면 jar파일 안에는 이부분을 복호화하는 스크립트가 있을 것이다.

 

하지만 JAR 파일을 구할 수 없으니 무식하게 복호화 해보기로 하자

[그림.2] 를 자세히 보면 llobapop 가 반복적으로 사용되는 것을 알 수 있다. 난독화된 데이터에서 이런 경우 대부분이 해당 패턴은 사라진다. (물론 여기서는 추측이다.)

 

llobapop 을 모두 제거하면 [그림.3]의 처럼, llobapop 을 공백으로 바꾸어 주면 [그림.3]의 처럼 되는 것을 확인 할 수 있다.

[그림.3] 말질라를 이용한 특정 패턴 제거

 

JAR파일이 없기 때문에 더이상 진도가 나가지 않았다. 하지만 구글링을 통하여 해당 부분의 복호화 정보를 얻을 수 있었다.

힌트는 llobapop 을 제거 후 3자리씩 쪼개진 데이터에서 첫번째 문자만 남기고 제거한다. 그리고 남은 문자들을 거꾸로(reverse) 정렬하면 복화화된 데이터를 얻을 수 있었다

[그림.4] 첫 번째 문자를 추출 후 거꾸로 정렬

 

간단한 스크립트를 이용하여 구현해 보았다. 

 [그림.5] 첫번째 문자만 남기고 거꾸로 정렬하는 스크립트

 

 [그림.6] 스크립트실행시 결과

 

복호화 결과 추가 접근하는 URL 정보를 얻을 수 있었다. (끝...;;)

 

오늘의 미션!!

JAR 파일에 포함되어 있을 복호화 스크립트를 자바스크립트로 구현해 보자

- value 값을 한번에 복호화하는 스크립트

 <script>

function redkit_de(s){
a = s.replace(/llobapop/g," ");    //-- llobapop 를 모두 찾아 " "으로 변환
a = a.split(" ")  //-- a를 배열로 나누기
b = ""; 

for (i=0;i<a.length;i++){b += a[i].substring(0,1);}   // a의 첫번재 문자들을 b 변수에 저장
c = b.split("").reverse().join("");  //-- b의 값을 거꾸로 정렬하여 c 변수에 저장
alert(c); 

}

redkit_de("복호화할 데이터 넣는 부분");  //-- redkit_de 함수 실행

</script>

 

 

* 연습용 샘플

mynllobapopoynllobapopcgbllobapop.ecllobapopyqtllobapoprnnllobapopocellobapo

ptssllobapopsefllobapopiefllobapopt22llobapop.qwllobapopahtllobapoprhwllobapop

ar3llobapopvntllobapopeajllobapopuhtllobapopgljllobapopgbvllobapopnfellobapopae

allobapopwefllobapopkdwllobapop/d2llobapop/3fllobapop:42llobapoppefllobapopt21

llobapopt32llobapophfellobapop

 -> 연습용 샘플을 복호화 할 데이터 부분에 넣으면 동작하는 것을 테스트 할수 있습니다.

    연습용 샘플은 연습할 수 있도록 만든 것으로 악성코드가 아닙니다.
 

 

 

 

설정

트랙백

댓글