가상PC 감지



가상PC 감지
강병탁 / window31 (window31@empal.com / www.window31.com)


월간 마이크로소프트웨어 2009년 4월호
("Bypass AntiVirus" 2회 - 실시간 감시 취약점 中)


바이러스를 분석하기 위해 많은 보안 관계자들은 VMWare나 Virtual PC와 같은 가상 머신을 이용한다. 그런데 몇몇 멀웨어는 현재 자신이 실행된 환경이 가상 환경이라면 활동을 멈추고 즉시 자신을 파괴시킨다. 바이러스가 가상PC에서 로딩됐다는 것은 바이러스 분석가들이 악성코드 분석을 위해 실행했을 것이라고 판단하기 때문이다. 그리고 바이러스를 분석하는 입장에서도 바이너리를 리버스 엔지니어링 해 보기 전에 먼저 한 번 실행부터 시켜보는 것이 일반적이다. 때문에 이런 내부적인 상황을 모르고 가상PC에서 테스트하며 돌아가지 않는 바이러스가 발견된다면 분석을 중단하는 일도 발생한다. 이런 점을 노린 악성코드 제작자들의 의도는 상당히 지능적이라고 볼 수 있다. 따라서 안티바이러스 업무를 하는 사람은 가상PC가 아닌 전용 리얼 테스트 머신을 갖춰야 한다. 또한 악성코드가 가상PC를 어떻게 감지하는지에 대한 스캔 엔진도 별도로 장만하면 더욱 효율적이다. 예를 들어 <리스트 7>과 같은 코드가 있다. 이 코드는 현재 실행된 환경이 VMWare인지 감지한다.

<리스트 7> VMWare 감지 코드


인터넷의 해외 사이트를 잘 조사하다보면 많은 자료가 있으니 참고하면 좋을 것이다. 해커나 공격자도 우리와 같은 검색 능력을 가진 사람이라 결국 인터넷을 뒤져서 이와 같은 가상PC 감지 코드를 추가해 공격한다. 따라서 이런 유형의 코드를 검색하는 미니 스캔 툴을 개발, 가상PC에서 동작하지 않는 바이러스를 발견했을 때 그 파일에 대해 실행시켜 해당 바이러스가 가상 머신을 감지하는지 아닌지를 확인할 수 있다(패턴이 완전히 일치하지 않을 가능성이 있기에 100% 장담은 못하지만 확실히 도움은 된다). 더 나아가 해당 루틴을 찾아내면 그것을 걷어낸 후 가상PC에서 자유롭게 분석할 수도 있다. 또는 실시간 감시 기능을 무력화시키는 바이러스의 경우는 이런 행위를 할 가능성이 더욱 농후하다. 가상PC에서 바이러스 샘플을 실행한 후 돌아가지 않는 바이러스라고 쉽게 단언하지 않는 내공깊은 분석가가 더 많아졌으면 하는 바람이다.

Posted by window31


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

댓글을 달아주세요

  1. 2009/04/05 19:20
    댓글 주소 수정/삭제 댓글
    위 코드는 "Identifying Malicious Code Through Reverse Engineering"(Springer, 2009) 라는 책에서 발췌한 코드이고요, 아쉽게도 VirtualPC 는 감지되지 않습니다 : )
  2. 2009/04/06 09:52
    댓글 주소 수정/삭제 댓글
    허헛..;; 그러고보니 벌써 4월인;;..
    =0= 얼릉 또.. 4월호 장만하러 달려가야겠군요;ㅋㅋㅋ
    아~ VirtualPC 감지하는 코드는 ?????????????? 에 잘 나와있더라구요~
    :D
    • 2009/04/06 10:16
      댓글 주소 수정/삭제
      복수하는거냐 -_-
      이 ????????? 같은넘...
  3. 2009/04/06 22:57
    댓글 주소 수정/삭제 댓글
    형~~ 기고한 것들 열심히 모으면서 애독자(?) 노릇하고있는데;;
    선물로~ =0= 4월호 하나 사주세용~~ :)
    • 2009/04/09 11:21
      댓글 주소 수정/삭제
      아래 영진사마한테 달라고 하면 되겟네 !
  4. 2009/04/07 16:23
    댓글 주소 수정/삭제 댓글
    HS // 담에 구로 놀러오세용. ㅋㅋㅋ ~
    어쩌다보니 4월호만 3권 받게된 ㅋㅋㅋ~~ @.@
    • 2009/04/09 10:29
      댓글 주소 수정/삭제
      저도 한권만요.. 굽신.. 굽신..

      공짜면 다 좋다는...
  5. 2009/04/07 21:15
    댓글 주소 수정/삭제 댓글
    비밀댓글 입니다
    • 2009/04/09 11:21
      댓글 주소 수정/삭제
      오우... 이런 !! 완전 축하해요 !!!
      대단하네요 ㅎㅎ
  6. 2009/04/08 08:26
    댓글 주소 수정/삭제 댓글
    그러고 보니, VIX(VMWare SDK) 사용해서 프로그램 샌드박싱할 때 타겟이 저 기능을 가지고 있으면 테스트도 무용지물이겠네요.

    그나저나 요즘 나오는 역공학 방지도구들도 대부분 저 기능 지원하더라구요. (실제 구현하려면 병탁님 같은 분의 도움을 받아야 겠죠? ^^)

    여담입니다만, VIX가 굉장히 강력해지고 있어요. ^_________^
    • 2009/04/09 11:23
      댓글 주소 수정/삭제
      네. 그래서 짱꿰이 사이트에서는 Anti-Anti-VMWare,
      Anti-Anti-SandBox 같은것도 있는것 같더라고요
      저도 짜집기 코드로만 가지고 있는데
      전용 스캔 머신으로 둔갑 시켜야죠 : ) 실력이 딸려서 못하고 있어요 ^6;
  7. 베리굳
    2009/04/14 20:44
    댓글 주소 수정/삭제 댓글
    만약에 저런 악성코드가 많다면 우리는 가상pc사용하면 되네염 그럼 악성코드도 지가 알아서 꺼져줄테고 편안한 컴퓨터사용 이 가능하네염
  8. 2009/09/02 16:44
    댓글 주소 수정/삭제 댓글
    좋은정보 감사합니다.
    질문이 있는데요,

    - mov ebx, 0
    - mov ecx, 10 // any value but not MAGIC VALUE

    부분과,
    - cmp ebx, 'VMXh'

    에서, ebx 값과 magic value 를 비교하는걸 볼 때,
    magic value 를 피해야하는건 ebx 아닌가요?

BLOG main image
by window31

카테고리

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

글 보관함