环境变量劫持
出乎人的意料之外,环境变量也可以劫持,并且执行攻击者的恶意代码。环境变量的劫持原理,就是利用在命令提示符中执行外部命令的时候,命令提示符寻找该外部命令的顺序来实现率先找到恶意程序的位置。我们在命令提示符下,输入:set p来查看:
C:\>set p
C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem
我们能清楚的明白一点,当我们输入外部命令的时候,cmd要去找这个外部命令的路径顺序是先C:\WINDOWS\system32,再C:\WINDOWS,接着按照分号分隔的路径一直找下去,直到找不到就提示“不是内部或外部命令,也不是可运行的程序”。那么明白这一点,我们就可以实现修改这个环境变量的路径变量,让执行外部命令的时候,率先去找我的目录,比如:C:\MyAPP。如何修改呢?打开计算机属性,高级,环境变量(这个是按钮),点击他,在弹出的窗口中,定位系统变量,找到Path,双击或者点击修改,然后再前面加上一句C:\MyAPP;,这样,记住每个变量目录之间是分号“;”分隔开的。这个修改是全局的,重启计算机后,我们再打开命令提示符,输入set p查看:
C:\>set p
Path=C:\MyAPP;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem
看到了吧,第一个被寻找的目录,变成了C:\MyAPP,那么,我们在这个目录下,放一些程序,名字改成regedit.[可执行扩展名exe,bat,com等],名字可以自定义。当在命令提示符下,输入对应的程序名(可不含扩展名),cmd首先会到C:\MyAPP这个目录下来看看有没有,如果有,就执行他,这样成功通过环境变量来实现应用程序劫持。
附:在环境变量中执行的外部程序,首先就会去找环境变量的路径,不会去找注册应用程序列表,哪怕是找完了也不会去找注册应用程序的位置,这就是为什么运行对话框里能运行iexplore.exe,而命令提示输入iexplore却告诉你找不到的原因。

浙公网安备 33010602011771号