OllyMemScan

 | Tools
2009/02/02 15:55

OllyMemScan




사용자 삽입 이미지


마소 2009년 2월호를 마지막으로 올리디버거 플러그인 연재가 끝이 났습니다.

마지막회는 자작 플러그인이 주제라 두가지 기능을 하는 플러그인을 만들었습니다.
1) 메모리상이랑 파일 상에서 바이너리 컴페어를 하여 후킹 탐지나 변조된 코드 검출
2) xor 에 대한 옵코드를 찾으면서 암호화 루틴을 발견

사용방법은 매우 간단합니다.
DLL: 에 dll 이나 exe의 이름을 넣으면 해당 모듈만 스캔하고,
Scan All Process 를 체크하면 현재 어태치된 프로세스의 전체 모듈을 스캔합니다.

Search Hook 은 변조된 코드 탐지, XOR 은 말그대로 xor 옵코드를 찾습니다.
(xor eax, eax 물론 이런건 찾지 않습니다)

아래는 Search Hook 에 대한 결과 화면입니다.
뭔가 검출된 번지가 겁나 많은데 하나만 적당히 설명을 붙혀보자면,
메모리 0x7C801E1A 번지가 원래 0x8B 인데, 0xC2 로 시작하는 옵코드로 바뀌었다는 얘기입니다.
디스어셈블링 라이브러리를 이용하였으므로 retn 8 이라는 코드로 변조되어 있음을 알 수
있습니다.



그럼 실제로 해당 번지가 정말 변조되어있는지 한번 뛰어가 볼까요.
0x7C801E1A 를 살펴보았습니다.


네. retn 8 이 예쁘게 박혀 있는 것을 볼 수 있고요.
TerminateProcess() 의 엔트리 포인트라는 것도 알 수 있네요.
해당 API 를 무력화 시키기 위해 걍 리턴시켜버리는 코드로 변조했음을 알 수 있습니다.

그외에 수많은 번지가 변조되어 있는데요, 대부분의 짓이 사실 OllyAdvance 가 하는 짓들이랍니다.
궁금하신 분들은 OllyAdvance 를 사용한 상태에서 OllyMemScan 으로 풀 스캔해 보시고,
해당 번지를 직접 뛰어가보세요. OllyAdvance 가 어떤 식으로 코드나 API를 바보 만드는지
쉽게 아실 수 있을겁니다 : )

그리고 아래는 XOR 에 대한 결과 화면입니다.



뭐 이건 별거 없네요 ㅎ
기존에 암복호화 찾는 올리디버거의 플러그인으로 FindCrypt 라는 넘이 있지만
그넘은 기존에 알려져 있는 암호화 라이브러리의 테이블 값을 찾는 원리로 구현되어 있어서
개발자가 걍 xor 로 쉭쉭~ 만든 암호화 루틴은 찾아내지 못하는 단점을 안고 있었습니다.

그래서 xor 에 대한 옵코드를 찾는 기능을 만들어봤습니다. 원리는 xor에 대한 옵코드를 찾아서
동일 레지스터를 xor 하는 쓸모없는 코드는 빼버리고 나머지 코드에 대해 디스어셈블링한겁니다.
간단하죠 :)

SearchHook 은 악성코드나 백도어, 루트킷 등을 분석할때 나름 도움이 되고
XOR은 암호화 코드를 찾을때 FindCrypt 와 함께 사용하면 시너지 효과가 쵸큼 있습니다 :)

본래 아래와 같이 별도의 툴로 만들어서 사용하고 있었던 건데,
플러그인 연재를 진행하며, 이런 플러그인이 공개된게 없어서 올리디버거 SDK를 이용하여
새로이 맹글어봤습니다 :)
(마감의 압뷁에 급하게 만드느라 버그가 있을지 모르겠습니다 ㅠ ㅠ)





window31 2009년 2월.

Posted by window31


트랙백 보낼 주소 : http://window31.com/trackback/235 관련글 쓰기

댓글을 달아주세요

  1. seyool
    2009/02/02 18:00
    댓글 주소 수정/삭제 댓글
    멋지네요 ^^; 잘 쓰겠습니다..
    마소 2월호 기대되네요 (아직 도착안했어요;;)
    • 2009/02/04 01:20
      댓글 주소 수정/삭제
      네 감사합니다 ^^ 미천한 글을 읽어주시다니
      부끄러울 따름입니다 : )
  2. Dual
    2009/02/02 18:00
    댓글 주소 수정/삭제 댓글
    헉 고고씽!!
    • 2009/02/04 01:20
      댓글 주소 수정/삭제
      눈쌀미 굿!
  3. 2009/02/03 13:36
    댓글 주소 수정/삭제 댓글
    =0= 저런 이미지들은.. 당췌 어디서 구한대요..?;;
    • 2009/02/04 01:21
      댓글 주소 수정/삭제
      우리가 좋아하는 치&포럼 ㅋ
  4. skb1
    2009/02/04 13:25
    댓글 주소 수정/삭제 댓글
    아주 그냥 잘쓰겠습니다.
  5. 2009/02/09 22:46
    댓글 주소 수정/삭제 댓글
    이번호 재밌게 보았습니다. 정말 많은 것을 연구하시네요 *^^*

    정말 window31 님이 존경스러우시다는 생각 밖에는 안듭니다...
    • 2009/02/09 22:50
      댓글 주소 수정/삭제
      오타 지적 ^^

      Scan All Process -> Scan All Module
    • 2009/02/24 23:56
      댓글 주소 수정/삭제
      아이쿠 너무너무 감사합니다. 칭찬에 지적까지 ㅎㅎㅎ
      vbdream 님 블로그가 더 재미있던데요 ^^
  6. 2009/02/11 11:17
    댓글 주소 수정/삭제 댓글
    비밀댓글입니다
  7. 2009/02/18 23:40
    댓글 주소 수정/삭제 댓글
    역시~형 멋찌심^^

VMMap Loader

 | Tools
2008/02/27 10:58

VMMap Loader



사용자 삽입 이미지




시스템 프로그래밍 하시는 분들은 메모리 페이지 속성을 확인하기 위해
VMMap을 사용하실 겁니다 (머 직접 구현해서 쓰시는 분들도 계시겠죠. 만들기가 어렵진 않으니)

그런데 이 엿같은 프로그램이 UI는 제공되긴 하지만 다른 프로세스의 쿼리를 보려면
콘솔로 내려가서 파라메타로 PID를 줘야 하기 때문에 상당히 짜증납니다 -_-

그래서 몇년전부터 전직장 팀장님과 UI에서 한방에 되게 좀 만들라고 서로 미루고 있다가
머 그냥 귀차니즘에 대충 쓰고 있었는데
오늘 VMMap을 쓰는데 ㅅㅂ 갑자기 짜증나서 걍 로더 만들어버렸습니다.

뭐 플그램 자체도 간단하고, 사용법도 간단합니다.
VMMapLoader를 실행하시고 페이지 속성을 보고픈 프로세스를 더블클릭 해 주시면 되겠습니다.
(VMMap.exe는 같은 폴더에 있어야 하며, 그거를 바로 실행하시면 안 됩니다)

그럼 필요하신 분은 콘솔로 내려가는 귀차니즘 없이 잘 사용하시길 lol


Posted by window31


트랙백 보낼 주소 : http://window31.com/trackback/127 관련글 쓰기

댓글을 달아주세요

  1. jhs
    2008/03/02 16:35
    댓글 주소 수정/삭제 댓글
    난 필요없으니 .. 꺼짐
  2. 하루
    2008/03/02 21:20
    댓글 주소 수정/삭제 댓글
    어여 가져가야지 ㅋ

WinHex Kernel Release

 | Tools
2007/12/04 18:44

WinHex Kernel Release






사용자 삽입 이미지


WinHexKernel ver 0.11 이 릴리즈 되었습니다.
필요하신 분은 다운받으셔도 됩니다.

EXE는 어쩔수 없이 데미다로 했습니다. 용량 커져서 죄송합니다.
드라이버도 요즘 점점 유명세를 타고 있는 C...V...로 무장하려 했지만
엄청난 속도의 저하로 인하여 드라이버쪽은 암호화를 하지 않았고요

겨우 이따위 툴을 데미다로 프로텍팅 했냐고 혹시나 생각하실지 모르는 분들에 대한 반문으로
사실 제가 습작으로 만든 툴에 암호화를 하는 이유는 머 코드를 보호한다 머 그런 취지가 아니고
걍 제가 코딩한 내용을 누군가 디스어셈블링 해서 볼때 그게 쪽팔려서 일 뿐입니다.
누군가가 뜯어보고 야 이자식 이따위로 짜네 라는 말을 들을까봐요
(저같은 경우는 물론 남의 코드를 뜯어 볼때 절대 그런 말은 하지 않습니다 ㅋ)

암튼 별거 아닌 걸로 시간 엄청 끌었군요 ;;
참고로 이 툴로 상용 드라이버 패치 등의 악용을 하거나
현재 돌아가고 있는 드라이버를 겁없이 패치하여 리붓, BSOD등의 현상이 발생할 경우
그 책임은 사용자에게 있습니다.



window31. 2007년 12월.


Posted by window31


트랙백 보낼 주소 : http://window31.com/trackback/88 관련글 쓰기

댓글을 달아주세요

  1. 2007/12/04 18:52
    댓글 주소 수정/삭제 댓글
    아 올려놓고 깜빡했습니다 ;;
    서취 기능은 현재 스트링밖에 안됩니다. 헥스값으로 서취도 곧 구현하도록 하겠습니다.
  2. 2007/12/04 18:54
    댓글 주소 수정/삭제 댓글
    결국 릴리즈 하셨네요!
    감사하게 다운받겠습니다. (*__)ㅋ
    기대 이상의 좋은 인터페이스를 가지고 있는거
    같습니다!!
    • 2007/12/05 09:38
      댓글 주소 수정/삭제
      기대 이상의 ㅋㅋㅋㅋ
      UI는 직접 구현하다가..이건 머 인간이 할짓이 아닌거같아서 -.- 코드프로젝트에서 CPPDumpCtrl을 줏어왔죠 :)
      그래도 그거 커스터마이징 하는데 시간이 젤 마니 걸렸다는 ;;
  3. hackscode
    2007/12/04 20:22
    댓글 주소 수정/삭제 댓글
    오옷!! 릴리즈인거다!!
    드라이버쪽은 아직 손을 안댔기 땜시..
    쓸 일이 있을진 몰라도 일단은 다운임!
    /헤벌레
    • 2007/12/05 09:39
      댓글 주소 수정/삭제
      우리같은 사람은 쓸 용도가 좀 있지 ㅋㅋ
  4. 2007/12/04 20:43
    댓글 주소 수정/삭제 댓글
    와우~ 만화책 보는 시간을 줄이는데 성공하셨나 보군요. ^^
    전 게임하는 시간을 줄이지 못하고 오히려 늘리는 바람에... -_-;;
    (요즘 크라이시스에 빠져서 헤메고 있습니다.)
  5. 2007/12/05 10:21
    댓글 주소 수정/삭제 댓글
    깔끔한 인터페이스 맘에 드네요!
    예전에 콘솔로 대충 만들어서 쓰던 녀석을 버려야 겠군요. ㅎㅎ
    • 2007/12/05 13:45
      댓글 주소 수정/삭제
      역시 하나 자체 개발툴로 갖고 계셨군요.
      부끄럽습니다 ㅠ ㅠ
  6. 2007/12/05 10:36
    댓글 주소 수정/삭제 댓글
    멋쟁이 window31님.. ^^;;
    잘쓰겠습니다.
    이거 띄워놓으니까 뭔가 있어보인다는 ㅋㅋㅋㅋ
    • 2007/12/05 13:46
      댓글 주소 수정/삭제
      멋쟁이는 무신... 자기도 다 알면서 ㅋㅋ
  7. 2007/12/05 10:36
    댓글 주소 수정/삭제 댓글
    오오.. 릴리즈 되었군요 +_+!
    감사히 쓰도록 하겠습니다. ㅋㅋ
    제 블로그도 가끔 오고 그러세욤 ㅠ_ㅠ)
    블로그가 황무지 =_=
    • 2007/12/05 13:46
      댓글 주소 수정/삭제
      네, 얼마전까지는 블로그에 계속 헬게이트만 있길래 ㅋㅋ
      지금 가보니 마니 업글 되었네요 자주 들를께요 ^^;
  8. 2007/12/05 11:39
    댓글 주소 수정/삭제 댓글
    오오~ 잘쓰겠습니다. ;)~
    • 2007/12/05 13:47
      댓글 주소 수정/삭제
      감사감사 ^^
  9. 부들이
    2007/12/05 13:16
    댓글 주소 수정/삭제 댓글
    themida 벗겨보니.. 굳이 보호하실 필요가 있으실 것 까지야...GUI부분 제외하면 코드는 그다지 길진 않네요 ^^;
    더욱이 드라이버는 코드가 너무 짧아 그냥 누군가 통째로 쓸 수도 있다는..
    확장할 거 아니면 드라이버 굳이 뜯어내지 않고, exe에서 통신루트보고 드라이버는 있는 그대로 그냥 쓸 수도 있는..
    팩킹되어 있는 걸 보면 속에 머가 있는 지 궁금해서 열어봤습니다..다른 의도는 없구요.. 악의적인 코드도 없네요.. 안심하고 쓰셔도 될 것 같습니당..
    • 2007/12/05 14:00
      댓글 주소 수정/삭제
      네, 원리는 매우 간단하죠.
      사실 저도 UI 처리할때가 시간 젤 오래 걸렸습니다 ㅠ ㅠ
      제가 원래 UI개발자가 아니라서 이런쪽은 잘 못하거든요 ㅎㅎ
      드라이버도 Io Control Code만 알고, 버퍼의 구조체만 좀 분석하면
      얼마든지 그대로 가져다 쓸 수 있지요.
      머 그것도 지금 뜯어보면 다 나오지만요 ㅎㅎ
      그래서 사실 Code Virtualizer로 묶어봤는데, IO 할때 너무 느리더라고요
      이런 간단한 툴은 속도가 생명인데, 드라이버 하나 읽어올때마다 2초씩 걸리면
      상당히 짜증이 나겠죠 ㅎㅎ
      머 가져다 써도 상관은 없습니다. 어차피 누구나 다 구현할 수 있는 툴이니까요

      단지 리버싱해서 어셈 코드를 보았을때, 그사람 코딩 습관이나 스타일도
      어느 정도 알 수가 있는데 저는 걍 제 코딩 스타일을 보여주기가 쪽팔려서
      그런곳 몇군데를 Themida의 Virtualization 매크로로 감싸준것 뿐입니다.
      (신영진씨처럼 남이 봐도 흠잡을 데 없는 코더가 부러워요 ㅠㅠ ㅎㅎㅎ)
      물론 더 많이 하고 싶었는데 역시 속도가 쩔더라고요 그래서 어쩔수 없이 두세군데만 :)
      암튼 좋은 비평 감사드립니다. 다음에는 블로그 주소도 좀 알려주세요 ^^
  10. 2007/12/05 14:11
    댓글 주소 수정/삭제 댓글
    ㅎㅎ 코드를 안봐서 그런데,
    드라이버 목록은 ZwQuerySystemInformation로 구해오나요 아니면,
    드라이버 익스텐션으로 루프돌면서 구해오나욤 ' ㅁ'?
    • 2007/12/05 14:49
      댓글 주소 수정/삭제
      ZwQuerySystemInformation 로 구해오죠
      그게 젤 쉽자나요 ㅎㅎ
      대신 숨김 드라이버는 안 나오겠죠 :p
  11. 2007/12/06 10:02
    댓글 주소 수정/삭제 댓글
    FuckReverser... 폴더명이 잼있네~ ㅋㅋㅋ
    즐프 하시게나~
    • 2007/12/10 09:49
      댓글 주소 수정/삭제
      이렇게 뜯어보는 사람들을 위하여 빌드 폴더를 따로 만들고
      거기서 빌드한거지 ㅋㅋ
      물론 디버그 문자열 없애는 방법도 있지만 일부러 저렇게 했다는 ㅎㅎ
  12. seyool
    2007/12/07 23:03
    댓글 주소 수정/삭제 댓글
    훌륭합니다.. :)
    • 2007/12/10 09:50
      댓글 주소 수정/삭제
      아 세율님, 감사합니다 ^^
  13. Dylan
    2007/12/27 14:39
    댓글 주소 수정/삭제 댓글
    언제가 될지 모르겠지만 ;; 갖고 있으면 저도 쓸일이 있겠죠..ㅋ ㄱㅅ
    • 2007/12/27 23:27
      댓글 주소 수정/삭제
      지금부터 써~ ㅋㅋ

BLOG main image
by window31

카테고리

분류 전체보기 (281)
Reverse Engineering (21)
C, C++ (20)
Kernel (8)
Guitar (19)
잡담 (77)
etc (8)
who am i (8)
보안 이야기 (88)
Tools (3)
월간 마이크로소프트웨어/그.. (28)

글 보관함