前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >渗透测试|Go语言进行简单的反虚拟机检测

渗透测试|Go语言进行简单的反虚拟机检测

作者头像
TRY博客-简单的网络技术
发布2022-09-08 11:39:51
7871
发布2022-09-08 11:39:51
举报

至少我们曾经在一起过。

来自:一言

var xhr = new XMLHttpRequest(); xhr.open('get', 'https://v1.hitokoto.cn/'); xhr.onreadystatechange = function () { if (xhr.readyState === 4) { var data = JSON.parse(xhr.responseText); var hitokoto = document.getElementById('hitokoto'); hitokoto.innerText = data.hitokoto; } } xhr.send();

简单的原理

对虚拟机一些特征进程,文件进行判断。如果存在的话,就判断为虚拟机,从而退出进程,或者执行一些别的安全操作。[aru_3]

ps:该方法只是简单的反虚拟机,没有免杀功能,免杀需要另外做。

下面是我用go简单的写了几个检测虚拟机的函数,希望对大家有所帮助。

源码

代码语言:javascript
复制
func PathExists(path string) (bool, error) { //判断文件是否存在
	_, err := os.Stat(path)
	if err == nil {
		return true, nil
	}
	if os.IsNotExist(err) {
		return false, nil
	}
	return false, err
}
func fack(path string) { //判断虚拟机关键文件是否存在
	b, _ := PathExists(path)
	if b {
		fmt.Printf("当前是虚拟机环境,别分析了,哥。")
		os.Exit(1) //如果是虚拟机就退出当前进程
	}
}
func check() {
	fack("C:\\windows\\System32\\Drivers\\Vmmouse.sys")
	fack("C:\\windows\\System32\\Drivers\\vmtray.dll")
	fack("C:\\windows\\System32\\Drivers\\VMToolsHook.dll")
	fack("C:\\windows\\System32\\Drivers\\vmmousever.dll")
	fack("C:\\windows\\System32\\Drivers\\vmhgfs.dll")
	fack("C:\\windows\\System32\\Drivers\\vmGuestLib.dll")
	fack("C:\\windows\\System32\\Drivers\\VBoxMouse.sys")
	fack("C:\\windows\\System32\\Drivers\\VBoxGuest.sys")
	fack("C:\\windows\\System32\\Drivers\\VBoxSF.sys")
	fack("C:\\windows\\System32\\Drivers\\VBoxVideo.sys")
	fack("C:\\windows\\System32\\vboxdisp.dll")
	fack("C:\\windows\\System32\\vboxhook.dll")
	fack("C:\\windows\\System32\\vboxoglerrorspu.dll")
	fack("C:\\windows\\System32\\vboxoglpassthroughspu.dll")
	fack("C:\\windows\\System32\\vboxservice.exe")
	fack("C:\\windows\\System32\\vboxtray.exe")
	fack("C:\\windows\\System32\\VBoxControl.exe")
}
func main() {
	a, _ := windows.GetUserPreferredUILanguages(windows.MUI_LANGUAGE_NAME)   //获取当前系统首选语言
		if a[0] != "zh-CN" {
			fmt.Printf("当前不是中文系统")
			os.Exit(1)    //网上的沙盒等系统都是英文界面,我们可以利用这个进行判断
		} else {
                         check()   //先进行判断系统语言,然后再进行判断虚拟机关键文件是否存在
                           //这边检测完了,就可以执行你想执行的代码了,如shellcode
         }
}

效果图

渗透测试|Go语言进行简单的反虚拟机检测
渗透测试|Go语言进行简单的反虚拟机检测

温馨提示

只是一些简单的虚拟机的想法,大佬们勿喷[aru_15],又是被自己菜哭的一天[aru_16]

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-11-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 至少我们曾经在一起过。
    • 简单的原理
      • 源码
        • 效果图
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档