sweetchip's blog



한창 bob 과제로 바쁘다가.. 이제는 좀 여유로워 졌습니다.


대학교 원서도 넣어야 하고 bob 프로젝트도 해야하고 다시 또 바쁜 한달이 될것 같습니다.. -_-;;;



BOB수업때 심준보 멘토님의 윈도우 Exploit에 대한 내용을 보고 배우던 여러가지중 기억에 남는게 하나 있습니다.


프로그램의 취약점을 찾기위해 Fuzzing을 하고 나온 크래시들을 이용해서 Exploit하는데


크래시를 분석하는게 상당히 노가다입니다. 그래서 그나마 쉽게 1차적으로 분류하는 것을 간략하게 배웠습니다.


윈도우 프로그램들을 퍼징해서 나온 크래시들을 분류할때 여러 방법이 있고


크게 4가지로 분류한다고 하셨는데 이것이 MS에서 분류 하는것이라고 하시더군요!


그래서 더 듣고보니 이번 1월달 취약점을 Exploit할때 접했던 WinDBG의 확장 모듈인 MSEC.dll 의 Exploitable 플러그인이었습니다.


국내엔 별로 자료가 없는것 같아 한번 올려봅니다.


일단 이 Exploitable 이란 플러그인은 크래시가 난 형태를 파악하고 등급을 매겨 크래시가 exploitable 한지 1차적으로 판단해주는 플러그인입니다.


하지만 이는 프로그램일 뿐이고 전후 상황을 몰라서 100% 신뢰하기는 어렵지만 1차적으로 유니크 크래시를 분류하기는 유리합니다.




다운로드 링크 : http://msecdbg.codeplex.com/releases/view/24667

다운로드 [티스토리]


MSECExtensions.zip


압축 파일 안의 binaries/x86/msec.dll 을 windbg/winext 폴더에 넣어줍니다


!exploitable

Gives an analysis, including a proposed bug title

!exploitable -v
Gives a verbose analysis

!exploitable -m
Gives the same output as -v, but formatted for easy machine parsing

!exploitable -jit:address
Use the JIT Exception Record to determine the exception




!load msec // 플러그인 로딩

!exploitable // 플러그인 사용하기


그런 다음 msec를 로딩하고 플러그인을 사용하면 다음과 같이 크래시를 분석해서 결과를 나타내 줍니다.


결과는 총 4가지로 분류됩니다.


Exploitable

Probably Exploitable

Probably Not Exploitable

Unknown.


주로 유니크 크래시를 선정할땐 exploitable 로 기준을 잡으셔서 분류하시면 되겠습니다.


주의점은 이 플러그인은 크래시를 기준으로 분류하기 떄문에 Access Violation이나 Integer Overflow 등 이런 오류가 먼저 난 다음에 사용하셔야 합니다.


그리고 위에서도 언급했지만 100% 신뢰를 할순 없습니다. Probably Not Exploitable 이 나왓지만 실제론 Exploitable 할수 있습니다. [실제 경험.. ^^;]


그럼 재밌는 취약점 많이 찾으세요!

신고

Comment 16

  • zzz
    2013.09.04 14:28 신고 수정 답글

    foe fuzzer 쓰면 이거 이용해서 덤퍼징한거 자동 분류해줘ㅋㅋ

  • xeros
    2013.09.09 01:01 신고 수정 답글

    저도 이거 corelan 문서에서 보고 놀랏엇는데 ㅋㅋ
    별 플러그인이 다 있더라구여

  • Fuzzer
    2013.09.17 15:17 신고 수정 답글

    혹시 익스플로잇 하셨나요?
    제가 크래쉬는 많이 발견했는데, 어떻게 익스플로잇으로 연결할지는 모르겠네욤 ㅠㅠ
    혹시 그 부분에 대해서 필요한 자료나 블로깅이 있으신가요?

    • 2013.09.18 11:56 신고 수정

      위는 그냥 아무 크래시를 넣은것이구요 ㅎㅎ;
      퍼징을 이용하여 Exploit까지 이끌어 내는 방법이야 많습니다.
      일단 가장먼저 흐름이 바뀌고 꺠지는 이유를 리버싱을 통해 알아야 하고 추가적인 파일 변조로 Exploit까지 이끌어 낼 수 있습니다.

      이는 외국글을 읽어보심 될것 같네요!

  • Fuzzer
    2013.09.18 18:21 신고 수정 답글

    네 감사합니다!
    같은 BoB 2기인데, 늦게나마 계산기 띄우는 작업을 하고 있네요 ㅎㅎ
    즐거운 추석연휴 되세요!
    또 궁금한거 있으면 질문하겠습니다.

    • 2013.09.18 19:01 신고 수정

      넵! 맘껏 질문해주세요. 근데 제가 아는것만... 답해드릴 수 있을것 같네요.. ㄷㄷ
      저는 그때 다른 프로그램으로 제출했었습니다 ㅎㅎ
      즐거운 추석 보내세요~ 전 집에서 지냅니다! ㅋㅋ

  • Fuzzer
    2013.09.18 23:12 신고 수정 답글

    네 감사합니다! 저도 집에서 보내게 되었네요^^;;

    아 그리고 괜찮으시다면 멘토님께 보내신 보고서를 참고하고 싶은데

    혹시 메일로 보내 주실 수 있으신가요??

    • 2013.09.19 08:59 신고 수정

      음.. 그건 완전히 제것이 아니라 약간은 무리가 있을것 같네요 ㅎㅎ;
      대신 http://pgnsc.tistory.com/290 읽어주시면 감사하겠습니다 ㅎㅎ

  • Fuzzer
    2013.09.19 11:29 신고 수정 답글

    와 감사합니다 ^^

    여긴 정말 없는게 없네요 ㅎㅎ

  • Fuzzer
    2013.09.24 22:02 신고 수정 답글

    혹시 Fuzzer 구현할때 PYDBG로 하셨나요?

    제가 현재 pyDBG로 구현중인데, AV를 못잡는 현상이 있네요 ㅠㅠ

    혹시 이런 현상을 겪으신적이 있나요?

    • 2013.09.25 09:27 신고 수정

      저는 멘토님이 주신 코드에 있던 mydebugger를 사용했습니다.
      근데 저도 한@ 프로그램을 로딩시키면 AV가 잘 잡히지 않아서 mutation 기능만 만들어두고 하나하나 돌려보는 노가다를 했습니다 ㅋㅋ

  • Shayete
    2014.10.03 16:26 신고 수정 답글

    bob 3기입니다. fuzzing 관련 검색하다가 우연히 들렀어요. 반가워요!

    • 2014.10.03 19:46 신고 수정

      반갑습니다~
      BOB 끝까지 열심히 하셔서 좋은 결과 있길 바라겠습니다 :D