内容简介
这是个人根据项目做的一个自动化测试项目,github链接:cjh-1001/VM-auto-test
项目需求
做VMware相关的自动化测试,主要需求是通过VMware运行恶意样本来记录相关执行情况,实现自动化
项目迭代
版本1
最初的想法是通过构造SKILL来热拔插添加agent能力,主要想做两个SKILL,一个是做自动化,一个是通过脚本攻击类型来生成相应的验证命令,本框架是基于github的VMware-MCP(https://github.com/ZacharyZcR/vmware-mcp)项目来实现的,但是刚开始对VMware工具利用还是不算了解,不知道基于vmrun.exe工具就能够实现大部分虚拟机操作,例如回滚、恢复快照、查看虚拟机进程列表、查看快照列表等基础操作。所以基于vmware-mcp项目进行二次开发,后续通过多轮对话的确能够实现自动化执行测试,但是复用性较差,需要多轮对话才能实现我想要的效果,只实现SKILL而不留存实际执行脚本就会非常消耗token,使得消耗成本提高,所以方案给我PASS了

版本2
既然直接做SKILL的复用性差,且消耗成本高,我想直接采用做相应的agent来进行相关任务。当然这是一个比较复杂的多任务,涉及到设计agent,vmware的MCP利用,我究其根本需求,先去了解了vmware相关的接口操作,发现可以直接通过固定的调用接口来实现我的自动化链路需求。

版本3
鉴于自动化流程的利用命令较为固定,主要通过动态构建一些执行命令,比如说在虚拟机内部执行验证环境的命令,每个验证命令都不太一样,所以得通过动态拼接构建,还有一个主要痛点就是通过vmrun执行cmd或powershell命令,不能直接读取执行结果,所以通过重定向结果到一个文本,后续再读取文本内容来达到需求,可能安全性有待商榷,因为会将结果txt复制到物理机。后续也成功实现了,从跑通最小可行MVP,到后续添加功能,已经算是比较完善的交互,但是场景比较单一固化,后续会打算做相关更加自由可编排的自动化。

展示利用,因为我已经配置好了环境,如果初次打开项目会要求配置vmrun路径,而利用本项目需要开启虚拟机,通过接口来检测活动虚拟机,进而找到其路径

这是通过交互菜单来配置底层vmrun接口命令

完善了一些功能,主要是确保能够顺利进行自动化测试,其中凭证是用于确保配置的账密正确可用

一些日志输出

一些结果文档输出

后续计划
完善本项目功能及SKILL,拆分单操作为相应脚本接口,后续做自由可编排的自动化项目。