ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • PDF 취약점 분석
    kb 2011. 12. 27. 17:04
    어제 PDF 파일이 분석 요청 들어왔습니다. 뭐, PDF는 SZ 에서 그렇게 심각하게 다루고 있는 분야가 아니여서 사실 그냥 넘어가려고 했던 것도 사실입니다. ^^; 그런데, 타사에서 Exploit 로 진단하고 있는 것을 알게되자, 그럼 나도 잡아야지!!! 라는 생각에 한번 들여다 보기로 했습니다.

    대충 눈으로 훑어 보기

    우선 PDF를 텍스트 뷰어로 열어 보면 스크립트 같은 텍스트들이 보이고 중간 중간에 stream 이라는 문자열이 보입니다. 그 부분에 악성코드가 있을 확율이 높기 때문에 풀어보기로 했습니다.

    PDF를 EditPlus로 열어본 모습

     
     
    확인했으면 준비물 챙기기

    해당 스트림을 풀기위한 준비물이 있습니다.
    • 시작 옵셋 - 위에서 살펴본 stream 다음 입니다. 물론 케리지 리턴 값은 빼야겠지요.

    • 길이 - 길이는 stream 문자 앞에 length 라는 문자열 뒷부분에 기록되어 있습니다.
    • ZLIB - 이 것은 해당 스트림이 ZLIB로 압축되어 있기 때문입니다.



    ZLib 압축 문자열 풀어보기

    위에서 얻은 바이너리 데이터를 새로운 파일('compressed.bin')로 생성한 다음 파이선(Python) zlib 라이브러리를 이용하면 쉽게 압축을 풀수 있습니다. 파이선 코드는 아래와 같습니다.

    >>> import zlib, sys
    >>> obj1 = open('compressed.bin', 'rb').read()
    >>> obj2 = zlib.decompress(obj1)
    >>> f = open('decompressed.bin', 'wb')
    >>> f.write(obj2)
    >>> f.close()



    JavaScript 이쁘게 바꾸기

    풀어보니 아래와 같이 스크립트가 존재하고 unescape 함수안에는 인코딩된 문자열이 보이네요. 그런데 대체적으로 이런 놈들은 한줄코딩을 좋아합니다. 저 같은 놈들 보기에는 정말 쉣 이지요. 뭐 대충 아래 그림과 같은 식입니다.



    그래서 코드를 이쁘게 보여주는 사이트를 이용해 보기로 하겠습니다. 바로 http://elfz.laacz.lv/beautify/ 여기 인데요. 파이선 zlib 라이브러리로 압축 해제한 파일('decompressed.bin')을 입력으로 넣고 실행하면 아래 그림과 같이 이쁜(?) 코드가 보입니다.

     

    인코딩된 문자열 쉘코드 실행파일 만들기

    이제는 unescape 함수의 입력값으로 인코딩된 문자열이 한 눈에 들어오실 것니다. 암튼 뭔가 감쳐져 있는 놈이 바로 그 놈이겠지요? 그래서 그 놈을 풀어보기로 했습니다. 역시 이놈도 남이 만들어 놓은 것을 이용해 보겠습니다. 바로 http://sandsprite.com/shellcode_2_exe.php 여기 입니다. 


    여기에 인코딩된 문자열을 넣고 실행하면 shellcode.exe_ 라는 실행파일이 만들어 집니다. 완벽한 PE 네요. 우리의 BinText 로 열어보면 다운로드 URL 이 보입니다. 역시나 이 놈은 다운로더 였군요.


    자 여기까지 였습니다.

    'kb' 카테고리의 다른 글

    네트워크 정보 시각화(Visualization)  (0) 2012.05.07
    인케이스(EnCase) 에서 파일명이 한 자리인 파일들 확인하기  (0) 2012.05.01
    Proxy DLL  (0) 2011.04.20
    Diffie-Hellman Key Exchange Protocol  (0) 2011.04.04
    Birthday Attack  (0) 2011.04.04
Designed by Tistory.