가상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에서 바이러스 샘플을 실행한 후 돌아가지 않는 바이러스라고 쉽게 단언하지 않는 내공깊은 분석가가 더 많아졌으면 하는 바람이다.
