
VirtualBox에서 VM 탐지를 더 어렵게 만들기 위해 템플릿을 생성하는 스크립트
VM 탐지를 더 어렵게 만들기 위해 VirtualBox와 함께 사용할 수 있는 템플릿을 생성하는 스크립트입니다.
이 주제에 대한 첫 번째 글은 2012년에 작성되었으며, 그 후 무작위로 업데이트되었습니다. 블로그 형식이 정보를 게시하는 가장 좋은 방법이 아닐 수 있었고, 일부 사람들은 내용을 기반으로 멋지고 "적용하기 쉬운" 스크립트를 만들었습니다.
새로운 내용을 추가하기 쉽게 만들기 위해, 저도 같은 방식을 선택하기로 했습니다.
이 스크립트의 목적은 VirtualBox 베이스를 수정하지 않고 사용 가능한 설정을 활용하는 것입니다. VirtualBox를 패치하여 정말 깔끔한 작업을 하는 사람들도 있지만, 이는 이 스크립트의 범위를 벗어납니다. 이 접근 방식은 VirtualBox의 새 릴리스마다 (희망적으로) 깨지지 않는다는 장점이 있다고 생각합니다. 시간이 지나면서 VM과 직접적으로 관련이 없지만, 맬웨어가 설치 환경을 지문 인식하는 데 사용하는 "것들"도 포함시켰습니다. 양해 부탁드립니다.
메인 스크립트는 다음 파일을 생성합니다:
sudo apt install python3-pip libcdio-utils acpica-tools mesa-utils smartmontoolssudo pip3 install -r requirements.txtwget https://download.sysinternals.com/files/VolumeId.zip https://www.nirsoft.net/utils/devmanview-x64.zip (x64 버전).hostname > computer.lst, whoami > user.lst . VM에 다른 머신 이름과 사용자를 사용하려면 수정하세요 (권장: 사용자 및 컴퓨터 이름의 긴 목록으로 파일을 채움).sudo python3 antivmdetect.pysudo chmod a+x xxxxx.sh/bin/bash xxxxx.sh my-virtual-machine-name배치 스크립트 (xxxx.ps1)를 새로 설치된 게스트로 이동.
게스트 내에서 배치 스크립트 실행. 수정된 대부분의 설정은 재부팅 후에 되돌려진다는 점을 기억하세요. 필요시 부팅 시 실행되도록 설정.
버전 0.1.4부터 일부 적용된 설정은 재부팅이 필요합니다. 따라서 배치 스크립트를 한 번 실행하면 게스트가 재부팅됩니다. 그런 다음 스크립트를 다시 한 번 실행하여 설정을 완료합니다.
게스트 내에서 배치 스크립트를 적용하기 전에 UAC를 비활성화하세요 (재부팅 필요). 그렇지 않으면 스크립트로 레지스트리를 수정할 수 없습니다.
Windows 10 사용자: PS 스크립트를 관리자로 실행 (cmd.exe를 마우스 오른쪽 버튼으로 클릭 -> 관리자로 실행, PS 스크립트로 이동하여 실행).
올바르게 적용되면 Pafish 실행 결과는 다음과 같습니다 (Virtualbox 수정 불필요).
이 스크립트는 Pafish가 다루지 않는 다른 작업도 수행합니다 (예: W10 아티팩트).

0.1.9:
Python3 호환
올바른 디스크 추출 시도 (첫 번째 시도), 많은 사람들에게 골칫거리였습니다. (이슈 #35 및 기타 몇 가지 오래된 이슈, @oaustin 감사합니다)
셸 스크립트의 문자열 처리 개선 (이슈 #35 및 #36, PR #44, @oaustin, @dashjuvi 및 @corownik 감사합니다)
온라인 DSDT 리소스 링크 추가 (이슈 #37, @MasterCATZ 감사합니다)
README 업데이트로 설치 지침을 더 명확하게 함, @jorants 감사합니다 (이슈 #38)
DSDT 덤프가 실제로 생성되었는지 확인, @nov3mb3r 감사합니다 (이슈 #42)
라이선스 고지 추가, @obilodeau 감사합니다 (이슈 #43)
코드 정리: 서버 하드웨어 접근 부족으로 RAID 디스크 지원 제거.. 및 기타 많은 작은 개선
0.1.8:
Windows 10 지원 개선
@bryant1410의 마크업 수정 병합 (PR #14)
macOS + VBox/VMWare Fusion을 사용하여 템플릿을 생성하는 사용자를 위한 문제 해결.
가상 머신에서 템플릿을 생성하는 것은 최선의 방법이 아닙니다.. (이슈 #12 및 #15 가능)
0.1.7:
Windows 10 지원 (피드백 환영)
W10 설치에 대한 여러 새로운 아티팩트 "수정"
새로운 종속성: mesa-utils
@Fullmetal5의 버그 수정 병합 (#10)
기타 코드 수정
README 업데이트
0.1.6:
두 번째 실행 후 팝업 추가하여 준비 완료임을 더 명확히 함
메모장 여러 인스턴스를 생성하는 함수 추가, 향후 버전에서 확장 예정
RandomDate 함수 재작업, 이전 함수의 문제를 알려준 @Antelox에게 감사 (#8)
Ubuntu 구 버전에 포함된 acpidump는 "-s" 스위치를 지원하지 않음. 이제 오류 메시지로 처리. @Antelox 감사 (#7)
두 번째 실행 후 Devmanview.exe가 제거되지 않던 문제 수정
0.1.5:
파일 확장자 연결 및 해제 지원 추가 (기본적으로 비활성화됨). 참조: https://www.proofpoint.com/us/threat-insight/post/massive-adgholas-malvertising-campaigns-use-steganography-and-file-whitelisting-to-hide-in-plain-sight
사용자 제공 클립보드 버퍼 지원 추가. 없으면 임의 문자열 생성. 선택한 Honeytoken으로 파일 채우기
XP 지원 제거
배치 스크립트 섹션을 Powershell로 변환. 게스트 스크립트로 더 많은 로직 이동. 결과적으로 템플릿을 자주 생성/재생성할 필요가 줄어듦 (더 많은 항목이 게스트에서 무작위화되므로)
데스크탑 배경 이미지를 무작위화하는 함수 추가
게스트에 "모든 종류의" 문서를 생성하는 함수 추가
게스트에 "모든 종류의" 문서를 생성하고 휴지통으로 이동시키는 함수 추가
DigitalProductId를 두 곳에서 더 무작위화:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Registration\DigitalProductId.
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\DefaultProductKey\DigitalProductId.
반가상화 인터페이스 사용: 없음 (VBox 5.1.4에서 확인) - 확인 업데이트 반영. 이 VBox 변경은 TiTi87 덕분이라고 가정, 감사합니다!
0.1.4:
python-dmidecode 3.10.13-3 사용자를 위한 버그 수정, 전적으로 제 잘못입니다..
VolumeID 무작위화 함수 추가 (새로운 필수 조건: VolumeID.exe), 이 정보는 예를 들어 Rovnix가 수집합니다
사용자 이름 및 컴퓨터 이름/호스트 이름 무작위화 함수 추가 (새로운 필수 조건: 사용자 이름 및 컴퓨터 이름 목록)
클립보드 버퍼에 정보 추가 첫 시도, 아이디어(명령)는 @shanselman의 트윗에서 비롯됨. 다음 릴리스에서 개선 예정
README 업데이트: 새로운 종속성 및 재부팅이 필요한 새로운 기능
0.1.3:
CPU 브랜드 문자열 복사 및 설정.
게스트에 오디오 장치가 연결되어 있는지 확인. 참조: http://www.joesecurity.org/reports/report-61f847bcb69d0fe86ad7a4ba3f057be5.html
OS 아키텍처와 DevManView 바이너리 확인.
ProductId를 두 곳에서 더 무작위화:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Registration\ProductId.
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\DefaultProductKey\ProductId.
레지스트리에서 Windows 제품 키 제거 (도난 방지).
DigitalProductId (HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\DigitalProductId)를 새 ProductId와 일치하도록 수정.
/Mikael
피드백은 항상 환영합니다! =)
0.1.2:
레거시 반가상화 인터페이스 사용 여부 확인 (레거시 인터페이스 사용 시 "cpuid 기능" 탐지 완화).
0.1.1:
CPU 개수 확인 (2 미만이면 경고).
메모리 크기 확인 (2GB 미만이면 경고).
vboxnet0에 대해 기본 IP/IP 범위가 사용 중인지 확인 (사용하지 않으면 알림 무시 가능).
ProductId 무작위화.
r-sierra의 PR #3 병합 (도움 주셔서 감사합니다!).
AcpiCreatorId 버그 수정 (@Nadacsc 신고 감사합니다!).
DmiBIOSReleaseDate 파싱 버그 수정.
DmiBIOSReleaseDate 버그 수정: "기본" 철자 오류 변형과 올바른 철자 변형 모두 처리 (@WanpengQian 신고 감사합니다!).
DevManView 포함이 예상대로 작동하지 않았으며, 이 릴리스에서 수정되어야 함.
SATA 컨트롤러도 지원 (이전에는 IDE 설정만 수정됨).
README 업데이트
0.1.0:
HT(HackerTarget)로 유명해진 WMI 탐지 해결. 필수 조건에
DevManView.exe (아키텍처 선택) 추가.
< 0.1.0 이전 버전 기록은 보관되지 않음, 어디선가 시작해야 하니까요.