SuNiNaTaS Clear!!

난독화/이것 저것 2014. 3. 27. 12:41

마지막 blind SQL Injection 문제도 완료!!

 

인증 샷~ ㅎㅎ

 

 

설정

트랙백

댓글

오랫만에 풀어보는 Suninatas 해킹문제

난독화/이것 저것 2014. 3. 26. 20:25

사건/사고도 많고, 이직하는 사람도 많고, IT보안에 종사하는 사람들에게는 힘들고 뒤숭숭한 시기인 것 같네요.

저 또한 조금 그러한데요. 조금 방황하다가 다시 힘내야 한다는 생각에 재미있고(?) 잡생각을 날릴 수 있는 해킹문제 풀이를 해보았습니다. 역시 한번 시작하면 시간가는 줄 모르고 집중하고 있는 저를 보게됩니다.

 

힘들고 맘이 뒤숭숭한 분들은 한번씩 도전해보세요~ 신납니다....(부작용으로 암걸리 수 도있지만요^^;;) 

 

추천드리는 사이트는 Suninatas라는 사이트입니다.

아래 그림처럼 web, binary, forensic, system, misc 의 문제들로 이루어져 있고, 현재 28문제가 출제되어있습니다. (29,30은 빈문제)

 

예전에 15문제정도 풀다가 어려워서 미루어두었는데요. 신기하게 다시 도전하니 풀리는 문제가 많네요. 지금은 22, 23번을 빼고는 모두 풀었네요 (뿌듯...^^;;)

해킹 문제를 풀면서 좋은점은 몰라던 분야에 대해 공부하게되고, 알아가는 즐거움, 또한 몇 일씩 못풀다가 풀었을때의 짜릿함!! 그 것때문에 해킹문제를 푸는 것 같습니다.

 

해킹문제풀이를 안해보셨는데 시작하려면 친구나 지인과 함께 시작하시길 추천합니다. 혼자하다보면 막막함에 금방 지쳐버립니다. 하지만 가치하면 서로 경쟁심도 생기고(자랑질!! ^^;;열심히 하게하는 원동력!!) 도움도 주면서 재미있게 할수 있기 때문입니다.  

 

맘이 뒤숭숭하고 새로운것이 필요하다면 다들 ㄱㄱ!!

 

전 22, 23번 풀기위해 Blind SQL Injection 공부하러 갑니다. 예전에 공부했었는데 기억이 안나네요.ㅠㅠ

 

점수를 많이 올렸으니 인증샷 ~~ ㅎㅎㅎ 

 

 

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

Xor Project  (3) 2014.04.21
SuNiNaTaS Clear!!  (0) 2014.03.27
2014년 3월 볼라벤 보고서  (0) 2014.03.07
Magnitude Exploit Kit 샘플 구해봅니다 ㅜㅜ  (1) 2013.11.17
Cool exploit kit 흐름도  (1) 2013.06.22

설정

트랙백

댓글

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> 

설정

트랙백

댓글