需求背景
我曾分析一些 APT32 海莲花的恶意样本,发现他会读取当前计算机名字,并使用他用于解密一些数据,于是我就把虚拟机修改为受控计算机的计算机名,然后动态调试分析。但是每次修改计算机名都要重启生效,有点烦恼,一次偶然的单步跟进GetComputerName这个API时发现(见下图),完全可以无需重启啊。
方法
基于设置环境变量,可以欺骗某个程序查询本机的计算机名,这样是不用修改系统计算机名和重新启动系统的。
开一个命令行,先执行下面(XXXXXX是你要伪装的)
set _CLUSTER_NETWORK_NAME_=XXXXXX
然后在命令行中创建其他进程,例如调试器或恶意样本。
这样可以欺骗一个进程调用GetComputerName获取本机计算机名,实现免重启改计算名(针对一个进程)。
这招当时在调试海莲花的样本时有用,因为它解开数据需要计算机名。
另一个欺骗例子
例如远程桌面,每次登录都会把本地计算机名发送给远程计算,比如在设置好环境变量的cmd里,执行mstsc,登录远程后打开任务管理器,你可以查看任务管理器,看看“用户”标签的“客户端名称”,这里也可以方便的欺骗。