Quantcast
Channel: CodeSection,代码区,网络安全 - CodeSec
Viewing all articles
Browse latest Browse all 12749

【技术分享】利用 Python 打造反向 TCP 后门

$
0
0
【技术分享】利用 python 打造反向 TCP 后门

2017-11-09 10:44:21

阅读:1721次
点赞(0)
收藏
来源: 0x00sec.rog





【技术分享】利用 Python 打造反向 TCP 后门

作者:shan66





【技术分享】利用 Python 打造反向 TCP 后门

译者:shan66

预估稿费:200RMB

投稿方式:发送邮件至linwei#360.cn,或登陆网页版在线投稿


Python的反向TCP后门

linux中,我们需要在一个安全的环境中进行黑客攻击(渗透测试)。通常情况下,我们做的第一件事就是安装虚拟化软件,同时安装能找到的所有操作系统发行版。在黑客攻击的阶段,为了拿下目标机器,我们需要借助某种程序来感染系统。这种做法的缺点是:防病毒产品对于那些广为人知的Metasploit文件都了如指掌,因此,为了攻陷受害者机器,我们需要禁用这些产品——但这种做法不太现实。因此,这就迫使我们开发自己的攻击程序。当然,这方面的程序(即Payload)有很多种类型,而今天要讲的,则是反向TCP程序。

反向TCP:在正常转发连接中,客户端是通过服务器的开放端口连接到服务器的,但在反向连接的情况下,客户端会主动打开服务器上将要连接的端口。反向连接最常见的用途就是绕过防火墙和路由器的安全限制。

例如,在阻止入站连接的防火墙后面的电脑上运行的后门,可以轻松建立出站连接,通过Internet与远程主机进行通信。一旦建立了连接,远程主机就可以向后门发送命令。这种通信方式对攻击者来说很有帮助,因为在受害者机器上启动本地Shell是非常容易的。

在这个文章系列中,我们将利用Python开发一个反向TCP程序。那么,我们为什么要分成多个部分呢?这是因为,在每个部分中,我们都会为Shell引入一个新的函数、命令或代码,这样能够使其更加灵活。我们要从头开始,打造一款真正属于自己的、令人敬畏的、奇幻无比的、难以置信的……(我觉得这些形容词已经差不多够了)Shell。

在这篇文章中,我们会把Shell锻造得稍微漂亮一些。下面,让我们先从服务器(攻击方)脚本开始。


脚本编写:IMPORT语句

下面是我们新写的import语句

#!/usr/bin/envpython importsocket,sys,os

不错! !


脚本编写:脚本的彩色显示函数

这个函数能够让我们的Shell变得异彩纷呈。


【技术分享】利用 Python 打造反向 TCP 后门

图1

这个函数能够将传递给它的文本赋予指定的颜色。它可以接受的参数:

1."r" 或 "red" ——红色

2."g" 或 "green"——绿色

3."b" 或 "blue"——蓝色

4."y" 或 "yellow" ——黄色

5."lgray" ——浅灰

6."underline" —— 带下划线的文本

7."strike" —— 带删除线的文本


脚本编写:banner函数

虽然这几个函数都不是必需的,但是可以改善用户体验。 我们可以根据自己的喜好进行相应的定制。


【技术分享】利用 Python 打造反向 TCP 后门

图2

注意:这里,我把“lgray”改成了“gray”。 正如我刚才所说,只要我们喜欢,可以随意修改。

很明显,这个函数的作用是将文本返回给调用者。


脚本编写:主控函数

该函数将会接管服务器套接字。在上一篇文章中,我们没有使用任何函数,而是直接使用原始代码。现在,我们要把这些原始代码写成函数,并进行了一些必要的修改。


【技术分享】利用 Python 打造反向 TCP 后门

图3

不要慌,仔细阅读代码,你总会弄懂的。让我们化整为零,分别解释一下好吗?

1.我们接收套接字信息并将其传递给相应的变量host和port

2.如果没有出错的话,我们将通过script_color函数输出“Framework Started Success”。

3.接下来是向屏幕输出标语的banner()函数。

4.然后,设置套接字,绑定并开始监听。

5.通常情况下,我们将 host 作为空字符串进行传递。如果是这样的话,我们在设置套接字后将主机字符串改为“localhost”

6.我们接着打印“Listening on host address:port number ...”

7.我们开始接收连接。

8.如果一切顺利,并且客户端发起连接的话,我们将进入console函数,并将连接流和主机地址作为参数传递给该函数。

9.如果函数退出,我们将关闭套接字

这实际上并不是很难!所以,让我们继续。


脚本编写:控制台函数

这是最难的一部分,但如果我们能够搞定这一个函数的话,后面的内容将不在话下。控制台函数的代码如下所示。


【技术分享】利用 Python 打造反向 TCP 后门

图4

代码有点长。首先,我们打印了一个字符串,指出已经从远程主机建立了连接。然后,我们开始接收来自该连接的数据,这个数据是与远程系统相关的信息(我们将在客户端进行处理)。然后,我们对数据进行整理,下面给出相应的数据布局:

系统类型

计算机名称(节点名称)

发行版本

系统版本

机器体系结构

用户名

所有这些信息都来自(我们在客户端使用的)os模块中的uname()和getlogin()函数。

之后,我们使用收到的信息为shell创建一个自定义提示符,例如,root@127.0.0.1。

然后,我们进入命令循环。该循环提供了用于连接的各种命令。这里将定义我们的自定义命令,因此诸如“ls -l”和其他linux命令将不起作用。

下面是我们的前5条内置命令。

1.exec——接收一个命令作为参数,并在远程主机上执行该命令。这是我们日常的linux命令可以发挥作用的地方,例如exec ls -l

2.cls——清除终端屏幕。使用默认的linux clear命令

3.help——调用help函数,并打印帮助文本(我们将很快实现该函数)

4.sysinfo——打印收到的远程系统的信息

5.exit()——向远程shell发送暂停命令,同时从本地退出

6.任何非指定的命令都不被接受,并且在else语句中打印一条错误消息

对于内置的exec命令,不应该向其传递任何参数,否则会打印一个错误消息。在exec命令中有一个新的函数send_data,它可以接收连接流以及要执行的命令。同时,它还会自动处理数据的发送和接收。

就像您所看到的那样,我倒真希望让您来写代码。您可以在代码可以正常运行后对其进行修改。如果在写作过程中进行修改的话,可能会导致很多问题(相信我)。


脚本编写:帮助函数

所有内置在这个框架(脚本)中的命令的说明都囊括在这个函数中。


【技术分享】利用 Python 打造反向 TCP 后门

图5

这个函数会按照顺序打印help_list,并对其进行格式化。


脚本编写:数据发送函数

该函数如前所述将会自动发送和接收数据。


【技术分享】利用 Python 打造反向 TCP 后门

图6

现在,让我们把这一切都整合起来。


调用各个函数

我们知道,函数是不会自行执行的,除非它被调用。


【技术分享】利用 Python 打造反向 TCP 后门

图7

上面这些代码,只是我们所有工作的一部分而已。下面,让我们开始看看客户端脚本需要进行哪些修改。


客户端代码

为了与服务器配合好,客户端也需要遵守一些规则和命令,例如服务器脚本中的exec命令。所以,我们将import语句改为:

#!/usr/bin/envpython importsocket,subprocessassp,sys,os

我们的第一函数将是connect函数。


connect函数

顾名思义,这个函数的作用是连接到指定的地址。建立连接后,它也会发送系统信息。


【技术分享】利用 Python 打造反向 TCP 后门

图8

然后,它会以连接流作为参数调用interactive_session函数。


交互式会话函数

这个函数会运行一个循环语句,然后根据“if”指令来接收和执行命令。


【技术分享】利用 Python 打造反向 TCP 后门

图9

该函数使用另一个函数send_data来发送数据。


数据发送函数

该函数计算数据的长度,并将这个长度与数据一起发送。


【技术分享】利用 Python 打造反向 TCP 后门

图10

这个函数将有助于未来的修改。


调用各个函数

我们必须调用函数,否则它自己是不会执行的。


【技术分享】利用 Python 打造反向 TCP 后门

图11

下面,让我们执行攻击方(服务器)脚本,看看能得到什么结果

root@Sploit:~/Desktop#pythonreverseTcp.py''8000

客户端应建立连接,并在命令行上传递主机信息。

root@Sploit:~/Desktop#pythonconnect.py127.0.0.18000

以下是攻击方的服务器脚本的屏幕截图:


【技术分享】利用 Python 打造反向 TCP 后门

图12

我们来浏览一下帮助选项


【技术分享】利用 Python 打造反向 TCP 后门

图13

从远程系统的nmap结果来看,我认为已经在注册的服务上打开了一个端口。不出所料,客户端控制台果然没有显示任何内容,因为我们没有打印任何东西。


小结

在本文中,我们向读者介绍了如何利用Python建立一个反向后门。

不要忘了,更正、修改、更新总是受欢迎的。



【技术分享】利用 Python 打造反向 TCP 后门
【技术分享】利用 Python 打造反向 TCP 后门
本文由 安全客 翻译,转载请注明“转自安全客”,并附上链接。
原文链接:https://0x00sec.org/t/how-to-make-a-reverse-tcp-backdoor-in-python-part-2/1040

Viewing all articles
Browse latest Browse all 12749

Latest Images

Trending Articles





Latest Images