일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- ida
- h5py.File
- Injection
- idapro
- mock.patch
- commandline
- Python
- malware
- ecma
- hex-rays
- Rat
- data distribution
- open office xml
- ida pro
- NumPy Unicode Error
- javascript
- idb2pat
- error fix
- Ransomware
- x64
- idapython
- error
- why error
- TensorFlow
- MySQL
- pytest
- 포인터 매핑
- svn update
- debugging
- Analysis
- Today
- Total
13 Security Lab
[스크랩] Themida Anti VM Bypass 본문
1. Themida Anti-VM (VMware) 우회 - VM 설정 및 레지스트리
동작 환경
Host OS
Windows 8.1 K x64
VMware Workstation Version
11.0.0 build-2305329
Guest OS
Windows XP Professional K SP3 x86
2015년 6월 25일 최신 데모인 ThemidaDemo32_64의 2.3.4.14 버전에서 적용 가능하다.
아래 두 방법을 동시 적용해야 한다.
1) 레지스트리 키 값 변경
시작 - 실행 - regedit 등으로 레지스트리 편집기를 열어 다음의 키 값을 수정한다.
키 경로
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Class\{4D36E968-E325-11CE-BFC1-08002BE10318}\0000
값(환경에 따라 다를 수 있음)
VMware SVGA xx
키 값을 삭제하면 안 된다. VM관련 키워드만 제거한다.
2) .vxm 파일 수정
.vmx는 가상머신의 설정정보 파일이다. 메모장 등으로 열어서 수정하며, 항상 VMware가 완전 종료된 상태에서 수정하도록 한다.
다음 여섯 줄을 복사하여 맨 마지막에 추가한다.
monitor_control.restrict_backdoor = "TRUE"
isolation.tools.getPtrLocation.disable = "TRUE"
isolation.tools.setPtrLocation.disable = "TRUE"
isolation.tools.getVersion.disable = "TRUE"
isolation.tools.setVersion.disable = "TRUE"
monitor_control.disable_directexec = "TRUE"
monitor_control.restrict_backdoor = "TRUE" 는
VMware Tools가 ring 3에서 백도어 포트에 접근하는 것을 비활성화한다. 이것을 적용하면 VMware Tools를 사용할 수 없을 것이다.
이제 더미다 패킹 파일이 가상 환경에서도 동작하는 것을 볼 수 있다.
.vmx 파일에 대해서는 문서화가 잘 되어있는것 같지 않다. 파라미터 리스트는 다음 사이트에서 볼 수 있다.
Undocumented VMware .VMX parameters http://www.basvanbeek.nl/undocumented-vmware-vmx-parameters/
2. Themida Anti-VM Vmware (VMware) 우회 (Python 스크립트)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | import os import sys #VMware Disk name = SCSI\Disk&Ven_VMware_&Prod_VMware_Virtual_S&Rev_1.0\4&5fcaafc&0&000 VirtualDisks = ['VMware', 'VBox', 'Virtual'] if sys.platform == 'win32': import _winreg key = _winreg.HKEY_LOCAL_MACHINE subkey = 'SYSTEM\\ControlSet001\\Services\\Disk\\Enum' registry = _winreg.CreateKey(key, subkey) t = _winreg.OpenKey(key, subkey, _winreg.KEY_ALL_ACCESS) print '[+] Connecting registry key : "HKLM\\' + subkey + '\\"' count = 0 findValue = 0 try: while 1: name, value, type = _winreg.EnumValue(t, count) for i in range(0, len(VirtualDisks)): if str(value).find(VirtualDisks[i]) != -1: findValue = 1 print '[+] Founded Virtual Disk strings. [' + VirtualDisks[i] + ']' answer = raw_input('>> Do you want bypass Anti-VM? (y or n) ') if answer.lower() == 'y' or answer.lower() == 'yes': _winreg.SetValueEx( registry, name, 0, _winreg.REG_SZ, value.replace('V', '@')) print '[+] Successfully Modified.' print ' replaced name : ' + value.replace('V', '@') else: print '[-] registry not modified.' print ' Disk name : ' + value break count+=1 except:pass if findValue is 0: print '[-] 404 Not Found about virtual disk strings.' | cs |
Ref.1 : Themida Anti VM Bypass
http://hacklab.tistory.com/19
Ref.2 : Anti-VM 기법이 적용된 악성코드 분석 및 우회 방법 연구
http://moaimoai.tistory.com/127
Ref.3 : Anti-VM bypass | Anti-VM 우회
http://nopsled.tistory.com/74