不使用 powershell.exe 的情况下,可以运行 powershell 脚本和命令么?

可以的!

本文总结了6款可直接运行 powershell 脚本和命令的工具,献给所有的渗透测试人员和红队成员,因为这对于他们来说,是寻找在后漏洞利用阶段使用 PowerShell 脚本或命令行的最佳技术,而不需要运行 PowerShell.exe,从而避免被下一代杀毒软件、 EDR 或蓝队或威胁追踪团队捕获。文章有点长,请耐心观看。

在网上,我们尝试和分析适合这个目的的不同工具。 对于每一个工具,都给出了评分。如果你也有其他的工具,欢迎评论区留言告诉我。下面是本文中测试的工具列表:

PowerLine→ 得分: 9

NPS — Not PowerShell→ 得分: 4

PowerShdll→ 得分: 7

PowerLessShell→ 得分: 5

Nopowershell→ 得分: 6

SyncAppvPublishingServer→ 得分: 7

工具分析

1、PowerLine

Brian Fehrman (@fullmetalcache)创建的非常好的实用程序,可以直接调用 PowerShell 脚本而不需要调用 PowerShell 程序。

这个工具是用 C# 编写的,可以完全通过命令行使用,包括远程使用。 简而言之,你可以使用已经存在的 PowerShell 脚本,而无需使用 PowerShell.exe。

PowerLine 的主要特点有:

· 易于部署和构建——不需要 Visual Studio

· 能够自动检测 Win7或 Win10系统

· 能够作为 PowerShell 终端使用

· 能够通过 XML 设置指定要包含的远程脚本(脚本保留在内存中)

· 能够在每次构建中生成并用于异或(XOR) 脚本的随机字节

下面是使用详情:

一旦在计算机上实现了远程代码执行,获得一个令人满意的后漏洞利用是非常重要的。

运行一系列 PowerShell 工具来促进这项工作是很有意思的,比如: Meterpreter、 Mimikatz、 PowerView、 PowerUp、 Inveigh 等等。

为了方便起见,下面的截图是我从 PowerShell 中截取的。 同样的命令可以直接从 CMD 启动,从而完全避免在首次编译阶段也使用 PS。

部署

部署非常简单且模块化。 要拥有一个功能版本的 PowerLine,必须遵循以下步骤:

· 下载代码储存库:https://github.com/fullmetalcache/PowerLine

· 运行 build.bat 文件

build.bat 运行后的输出内容

· 更新 UserConf.xml 使其包含你想要包含的脚本的 URL

包含自定义的 Mimikatz ps1 脚本的 UserConf.xml 文件

· 运行 PLBuilder.exe 文件

· 现在 PowerLine.exe就会创建程序,并包含你指定的所有脚本,这些脚本会经过嵌入、 xor 编码、 base64编码处理。

执行:

如果所有部署步骤都成功,则应该将 PowerLine.exe 可执行文件发送给受害者。 可以使用 certutil 从远程主机获取可执行文件。 如果你直接在受害者机器上下载原始 Github 代码库,你可以使用本地 PowerLine.exe 文件。 下面是示例用法:

显示所有已导入的脚本

通过 PowerLine.exe 调用 PowerUp 工具

目前,这个工具在编译阶段能够绕过更新到最新版本 1903 的 Windows 10 中的 Windows Defender。 显然,根据正在加载的脚本,这个方法有可能逃避防病毒检测。

以 Mimikatz 为例,由于我加载了一个基本版本,所以会被 Windows Defender 阻止掉,但是对于其他常见的恶意脚本,则可以成功绕过。

例如,导入 WCMDump Ps1 脚本,就可以在不使用 Powershell.exe 的情况下绕过 Windows Defender ,从而运行脚本:

没有 PowerLine 的标准恶意命令行:

尝试下载并在内存中执行脚本

将脚本下载到本地并运行,但 Defender 会阻止脚本运行

来自 Windows Defender 的检测提示

使用 PowerLine 绕过 Windows Defender:

该脚本被正确导入并在不触发杀软的情况下运行

考虑因素:

PowerLine 看起来似乎是一个很好的工具,可以绕过杀软 和 EDR,后者实际上会过度控制 PowerShell 启动的恶意命令行。

在 Windows 进程树中,命令行由 PowerLine.exe 进程执行。 显然,这个工具和相关检测依赖于加载的脚本。如果 AV 或 EDR 检查脚本的行为,而不是启动脚本的进程,那么对于蓝队来说可能会有额外的检测。

这个工具的一个缺点是,每次你想加载一个新的脚本时,你必须把它添加到配置文件中,这可能会减缓后漏洞利用活动,但这取决于你在渗透测试活动中有多少时间。

你还可以在启动攻击之前创建一个自定义版本,其中包含你需要的所有脚本。简而言之,PowerLine对于后漏洞利用中的规避是非常有用的,但是它的扩展性和速度都不是很快。

这个工具绕过反病毒检测的真正附加值是脚本编码。

得分: 9票

官方链接: https://github.com/fullmetalcache/PowerLine

2、NPS —— Not PowerShell

这个工具的所有版本目前都可以被标准的 Windows Defender 检测到,因此我们把它放到了顶级工具列表中。 因为我们知道有很多红队成员有很强的抑制或绕过杀毒的能力,所以我们尝试使用同样的工具,但是至少在下载阶段就会被 Windows Defender 阻止掉。 显然,总是有可能下载完整的代码库,并编译自己的自定义版本,可能不会被 AV 检测到。

下面是使用命令:

cmdline: nps.exe "{powershell single command}" nps.exe "& {commands; semi-colon; separated}" nps.exe -encodedcommand {base64_encoded_command} nps.exe -encode "commands to encode to base64" nps.exe -decode {base64_encoded_command}

我尝试编码一个恶意的脚本并运行。 很明显,这是因为 Windows Defender 没有运行。 一旦你重新激活 Windows Defender,它会立即检测出可执行文件是恶意的并将其消除。 查看 Windows 进程树可以注意到,启动 powershell 命令的唯一进程总是 nps.exe,而 powershell 可执行文件从未被调用,但它们的检测率是相同的。

考虑因素:

这个工具可以在特别不安全的环境中考虑使用,在这种环境中,红队希望较少的留下恶意的“ powershell”命令行的痕迹。 在所有其他情况下,使用这个工具会被杀软检测到,所以你的努力将是无用的。

得分: 4票

链接: https://github.com/Ben0xA/nps

3、PowerShdll

此工具只允许使用 dll 运行 PowerShell。这个工具之所以不需要访问 powershell.exe,是因为它使用 powershell 自动化 dll。 可以使用以下命令运行 PowerShdll: rundll32.exe、 installutil.exe、 regsvcs.exe、 regasm.exe、 regsvr32.exe 或作为独立的可执行文件运行。

用法示例:

Rundll32 Usage:rundll32 PowerShdll,main 

bat脚本交互输入_测评 | 不使用powershell运行 PowerShell 脚本的工具汇总相关推荐

  1. bat脚本交互输入_基于winserver操作系统的自动清理Oracle3天前归档日志脚本分享...

    概述 最近某台oracle数据库中的归档日志太多了,一天都有几十G的归档日志产生,总是提示归档空间满,导致orcle总是与服务器断开,所以就写了个定期清理Oracle归档日志的脚本,先看下整体思路. ...

  2. bat运行exe 自动确认_无powershell运行powershell方法总结

    原创: lengyi 合天智汇 今天给大家带来的是,无powershell运行powershell的一些姿势的分享,由于powershell的特性,使得它很受渗透测试爱好者的喜爱,当然也催生了像ASM ...

  3. bat脚本交互输入_Shell脚本的应用(一)

    会不会有那么一天,生活可以简单到每天清早踏上一辆载着鲜花的脚踏车,微笑着穿过窄窄的街巷,为爱花的人送去芬芳,为需要知识的你送去帮助. 简介 随着Linux系统在企业中的应用越来越多,服务器的自动化管理 ...

  4. flask执行python脚本_如何在Flask中运行python脚本

    我有一个Flask脚本,可以创建网站并动态打印一些数据.-打印的数据应来自另一个python脚本. 我目前面临的问题是,如果我将执行python脚本的行放在执行Flask应用程序的行之前,它将运行Py ...

  5. ssas脚本组织程序_微服务架构:从事务脚本到领域模型

    图1 Order Service具有六边形架构.它由业务逻辑和一个或多个与其他服务和外部应用程序连接的适配器组成 图1显示了一个典型的服务架构.业务逻辑是六边形架构的核心.业务逻辑的周围是入站和出站适 ...

  6. python运行脚本被杀死_从python异常中杀死Bash脚本

    我有一个在其中调用Python的shell脚本. #! /bin/bash shopt -s extglob echo"====test====" ~/.conda/envs/my ...

  7. linux脚本登录启动失败,linux – 在X上运行shell脚本失败登录尝试

    Alrighty.我想到了.要小心不要搞砸,因为如果你做错了,可能会搞砸你的系统.如果您对此感到不舒服,最好先在虚拟机中进行尝试. 教程 >创建脚本.在本教程中,我将把脚本放在/var/mysc ...

  8. bat脚本交互输入_windows 10 如何设定计划任务自动执行 python 脚本?

    场景: 我们都会用 python 写了一些脚本,有一些是爬虫脚本,比如爬取知乎特定话题的热门问题,有一些是定期的统计分析脚本,输出统计结果到文档中.之前我都是手动执行这些脚本,现在我希望如何这些脚本能 ...

  9. Linux Shell 脚本交互输入

    一.常规输入:回车.Yes/No等 1.cat  +  文件 + 管道符 cat commend.txt | apt-get install ssh 2.echo + 管道符 echo -e &quo ...

最新文章

  1. ServletResponse-中文名的下载
  2. 数据服务让业务开发更敏捷
  3. 快速多尺度人脸检测--Multi-Scale Fully Convolutional Network for Fast Face Detection
  4. 【Mongodb】 Replica set的主从切换测试
  5. fpga fft项目整理
  6. OSChina 周六乱弹 —— 老用户与狗
  7. linux停止nodejs,node.js – 在linux重启后,nodejs消失了
  8. 负载均衡在分布式架构中是怎么玩起来的?
  9. 20170124L07-03-01老男孩linux运维实战培训-生产环境大于254台机器网段划分及路由解决方案案例...
  10. iOS中XML解析 (二) libxml2(实例:打印xml内容及存储到数组)
  11. Java正则之Unicode属性匹配的那些事
  12. mysql的jar包文件在哪找_java连接mysql要导入的jar包在哪。
  13. P2P之UDP穿透NAT的原理与实现
  14. python django mysql_python测试开发django-10.django连接mysql
  15. 5脚12v继电器接线图解_继电器线圈并联二极管的作用
  16. Python库下载第三方镜像(清华/豆瓣)
  17. GBK内码字符串转Unicode字符串
  18. layabox学习(一)·helloworld以及自定义路径
  19. 小学生计算机房的简笔画,小学生校园风景简笔画图片
  20. SVN删除tags旧版本失败

热门文章

  1. AgilePoint商业流程管理平台
  2. 苏宁的另类“存在感”
  3. html中index.css里面写什么,css中z-index是什么意思?
  4. linux 系统后门检测工具,Linux系统的各种后门和日志工具详细介绍[2]
  5. BUUCTF(pwn)ciscn_2019_ne_5
  6. 学习Python必会内容:print函数、赋值与代码块
  7. Python中sorted函数的用法
  8. python小整数池与大整数池
  9. python装饰器的使用场景
  10. 综合实例_管线综合支吊架施工实例赏析,工艺流程全面