2014년 3월 볼라벤 보고서

난독화/이것 저것 2014. 3. 7. 12:23

볼라벤 소모임의 열 여덜 번째 분석보고서가 나왔습니다.

 

제 블로그에도 소개했었던 1월이 발견된 Web EK에 대한 분석 보고서 입니다. 

 

우리나라에서도 잘알려진 Blockhole EK 와 유사한 방법과 구조를 가지고 있지만, 좀 더 복잡해진 난독화 기법 및 유포 방법이 특징입니다. 아마 새로운 툴킷으로 생각됩니다.

 

특히 이번분석보고서에는 기존에 간단하게 다루었던 Java 부분의 난독화 방법과 그것을 해제하는 방법에 대해 좀 더 자세하게 다루었습니다. 난독화 공부를 하거나 Web EK에 관심 있는 분들에게 도움이 되었으면 좋겠습니다

 

분석보고서 보러가기

 - http://thebolaven.tistory.com/entry/18차-문서-신종-Web-EK-분석-보고서

'난독화 > 이것 저것' 카테고리의 다른 글

SuNiNaTaS Clear!!  (0) 2014.03.27
오랫만에 풀어보는 Suninatas 해킹문제  (1) 2014.03.26
Magnitude Exploit Kit 샘플 구해봅니다 ㅜㅜ  (1) 2013.11.17
Cool exploit kit 흐름도  (1) 2013.06.22
dadong's 0.44 Decoding Tool  (0) 2013.03.15

설정

트랙백

댓글

Web EK에서 주로 사용하는 자바 난독화 기법

난독화/난독화 강좌 2014. 3. 3. 18:53

Web EK 에서 가장많이 이용되는 취약점은 Java 일 것이다. 악성코드 유포에 이용되는 jar 파일을 분석해보면 자바스크립트 처럼 난독화되어 있다. 하지만 대부분은 자바스트립트 그 것에 비해 단순하게 난독화되어 있다

오늘은 blackhole EK 등에서 Java 취약점 부분에 이용되는 재미있는 난독화 기법을 알아보겠다.

 

아래그림은 2014년 1월 경에 수집한 악성코드 샘플이다. 

상황은 위/변조된 사이트에 접속 후 악성코드 유포 Landing 페이지로 이동되었으며, 악성 Jar 파일을 다운로드한다. 해당 PC는 취약점이 존재하야 이후 악성코드까지 다운로드된 화면이다. 

 (fiddler2를 이용하여 저장해 놓으면 분석시 유용하게 사용할 수 있다)  

[그림 1] 악성코드 유포 샘플

 

분석을 위해 landing 페이지와 jar 파일을 저장한다. fiddler2 - save - response - Response Body .. 로 저장하면 원하는 파일만 쉽게 저장할 수 있다

[그림 2] 악성파일 저장

 

[그림 3]은 lading 페이지의 자바 부분이다. PlugingDectector로 버전 체크 후 asfwe 함수에서 자바의 버전에 따라 applet이 동작한다. JNLP취약점을 이용하기 위한 부분인데 첫 번째 부분으로 난독화 기법을 알아보겟다 (난독화 기법은 모두 동일하다)

[그림 3] Landing Page (java 부분)

 

첫번째 부분만 보면 [그림 4]와 같다. 여기서 파라미터 값 중 ldcrlio 값을 보면 이상한 문자열로 되어있다. 언듯보아서는 해석할 수 없다. 하지만 이부분이 악성파일 다운로드 URL로 변한다.

이부분이 URL로 변화는 과정을 알아보는 것이 이번블로깅에 포인트 이다.   

[그림 4] applet

 

Jar 파일을 Decompiler로 열어보면 상당히 많은 class를 가지고 있다. 첫번째 class는 HTML의 파라미터를 받아오는 역활을하고, 마지막 class는 악성코드를 다운로드/실행 및 레지스트리에 등록하는 역활을 한다. 그리고 나머지 부분은 마지막 난독화된 페이지가 동작할 수 있도록 복호화하는 역활을 하게 된다.

우리의 목적은 ldcrlio 값을 복호화하는 것이므로 해당 부분만 보도록 하겠다. 아래그림에서 2번 부분이 우리가 복호화하고자 부분의 Key 값이 있는 부분이다.

[그림 5] jar 파일

 

위 그림의 3번 부분 중에서 key 값이 있는 부분만 정리해보면 아래의 그림과 같다. 이부분 역시 난독화 되어있으며, ddr_uuidjadisl class에 있는 vb~~dgra 함수를 통하여 복호화된다

[그림 6] Key 값 확인

vb~~dgra 함수는 [그림 7] 처럼 replace메소드를 이용하여 특정 문자열을 지우는 역활을 한다. paramInt = 1 일때 와 paramInt = 2 일때는 모두 복호화 하면 길이가 동일한 두 문자열을 얻을 수 있다.   

[그림 7] Key 값 복호화

 

이문자열들은 [그림 4]의 ldcrlio 값을 URL로 복호화 해주는 Key 이다.

ldcrlio 값은 두 문자열을 이용하여 단일치환암호 방식으로 난독화 된 데이터 인것 이다.

볼라벤툴의 단일치환암호 디코더를 이용하여 복호화해보면 최종 목적지 URL을 확인할 수 있다. ( 암호 문자열은 광게바라 블로그로 변경하였다. )

 

[그림 8] 단일 치환 암호 복호화

 

[그림 9]은 암호화된 문자열이 복호화되는 과정을 설명한 그림이다. (단일치환암호 방식)

 

[그림 9] 단일 치환 암호 복호화 원리

 

이번블로깅의 목적인 ldcrlio 값을 URL로 변경하였다.

끄 읕~ ~~~

이아니라 자바스크립 난독화를 공부하는 블로그이니 자바스크립트를 이용하여 단일치환암호를 풀어보겟다.

 

[그림 9] 는 단일 치환함호를 푸는 자바스크립트 코드다. 생각보다 쉽고 간결하게 만든것 같다.

a 부분에 난독화된 데이터를 넣고 b와 c에 키값 1, 2를 넣으면 문자열로 찍힌다.

[그림 9] 단일 치환 암호 복호화 스크립트 소스

 

* 자바스크립트 소스 

<script>

  a = "AhhjyHH0QE779npfEiE8hcthois8uoaHrx";
  aa = a.split("");
  b = "lxwLGr43qDEvuYp59AcU0ba7ojzithnfQOsC8NXRM6TeISV-_%.&/:#?=dWgmKFHyBk2ZPJ1";

  c = "0123456789abcdefghijklmnopqrstuvwxyz.ABCDEFGHIJKLMNOPQRSTUVWXYZ/:_-?&=%#";
  cc = c.split("");

  for (i=0;i<a.length;i++)
  {
     j = b.indexOf(aa[i]);
     document.write(cc[j]);
  }
</script> 

설정

트랙백

댓글

[신종 툴킷 발견] blackhole EK 3.0 ?? 신종 EK??

난독화/난독화 강좌 2014. 1. 14. 13:32

최근 Blackhole EK와 비슷하지만 다른 툴킷을 탐지하여 분석하고 있다.

상세분석은 볼라벤 분석보고서로 1월 중 배포 예정이다. 오늘은 전반적인 흐름에 대해 알아 보자  

 

큰 틀은 Blackhole EK와 비슷한데 Landing 페이지나 PDF 난독화 등의 부분에서 다르다. 때문에 Blackhole의 변종이거나, 새로운 툴킷 일 가능성이 높다

 * Landing Page: 해외 유명 분석가들이 웹툴킷의 메인 부분을 이렇게 불러서 따라해본다 ^^;;

전반적인 흐름은 [그림 1]과 같다 

 

 [그림 1] 전체 흐름도

 

실제 악성코드 접근 URL은 아래와 같다 (실유포지는 가릴수 뿐이 없다...양해바란다) 

 [그림 2]  접근 URL 상세정보

 

■ Landing Page 분석

Landing Page을 간단하게 살펴보자 (윗쪽은 간단하여 생략하여, 추후 분석보고서를 참조하길 바란다.)

Landing Page의 소스는 [그림 3]과 같다 기존의 블랙홀 툴킷과는 조금 다른 형식으로 되어있다. 하지만 일반적으로 툴킷에서 사용하는 공격코드를 난독화 해놓은 긴 코드와 그것을 풀어주는 복호화 함수 부분으로 구성되어있다.

 

[그림 3] Landing Page

 

기존과 다른점은 복호화 함수부분을 보기 어렵게하기위해 자바스크립트를 더 많이 꼬아 놓았으며, 불필요한 값들을 집어 넣어 기존의 툴킷보다 좀 더 어려워보인다.

 

 

하지만 자세히 보면 결국 key값을 찾을 수 있고, "document.write("<xmp>"+ 키값 + "<xmp>");"를 이용하여 복호화 할 수 있다.

 

복호화를 성공하면 아래 [그림 4]를 확인 할 수 있다.

 

[그림 4] Landing Page 복호화

 

[그림 4]의 복화화된 코드를 보면 ① 부분에서 Plugindetect (자바나 PDF의 버전정보 수집)가 확인할 수 있고 ② 부분에서 PDF와 JAVA취약점 공격 코드를 확인 할 수 있다.

* 기존으 blackhole EK 2.0은 Plugindetect 0.7.6 버전을 사용하였고, Cool EK는  0.8.0을 사용하였는데 해당 EK는 0.8.3을 사용한 것으로 보아 이후 만들어진 것으로 판단된다.

 

 

■ PDF 분석

악성 PDF에 대해 분석해 보자. PDF분석은 툴킷마다 해보아서 익숙했지만, 이번 것은 한번 더 생각해서 풀어야했다. 그만큼 더러웠다? (자바부분은 추후 배포되는 분석보고서를 참고 바란다.)

 

PDF 스트림덤퍼로 분석해 보았다.

각 Object 를 확인해보면 의심스러운 부분이 세 곳 확인된다.

[그림 5] 의심 오브젝트 1

 

[그림 6] 의심 오브젝트 2

 

[그림 7] 의심 오브젝트 3

 

의심 오브젝트1, 2는 난독화된 데이터 코드로 의심스럽지만, 자바스크립트는 아닌 것으로 보아 데이터 형식으로 쓰일 것으로 생각되었다 

 

먼저 오브젝트 3의 자바스크립트를 분석해 보자!

PDF에 삽입된 자바스크립트를 분석하기 위해서는 변수나 일부 양식을 형식에 맞도록 변경해 주거나 정리해 주어야한다.

아래 [그림 8]에서 빨간박스 변수 부분은 자바스크립트에서는 확인되지 않는다 때문에 실행시 오류가 발생한다. PDF 구조를 살펴보면 해당 변수가 [그림 5], 와 [그림 6]을 가리키고 있는 것을 찾을 수 있다. 

 

[그림 8] PDF에 삽입된 자바스크립트

 

보기 어렵게 함수와 이상한 변수로 코딩된 [그림 8]의 자바스크립트를 해석하여 정리하면 [그림 9] 처럼 정리할 수 있다. 

[그림 9] 자바스크립트 난독화 정리

 

정리된 스크립트를 이용하여 난독화된 데이터 부분을 복호화하면 [그림 10]의 자바스크립트를 확인 할 수 있다.

기존의 웹툴킷에서 사용하던 PDF 코드보다 복잡해 보이지만 분석해보면 역시 악성행위를 하는 쉘코드 부분과 오버플로어를 일으키는 부분을 만들어 내는 자바스크립트이다.

빨간 박스부분은 실제 악성행위를하는 쉘코드 부분으로 바쁠때는 해당 부분만 분석하기도 한다.

[그림 10] 자바스크립트 난독화 해제

 

[그림 11]은 쉘코드 부분을 scdbg를 이용하여 간단하게 분석해 본것이다.  

[그림 11] 자바스크립트에 포함된 쉘코드 분석 

 

신종 툴킷으로 보이는 툴킷을 간단하게 분석해 보았다. 간략히 소개하느라 빼먹은 부분이 많다. 자세한 분석내용은 bolaven 분석보고서로 작성되면 참고 바란다.

 

*  게을러서 이제야 글을 올리게 되었지만, 해다 샘플은 지난 9일에 탐지되엇다. 

 

설정

트랙백

댓글