`

注入,动态生成及混淆的恶意代码的检测

阅读更多

DOME(Detection of Maliciious Executables)

它是一种检测宿主可执行文件中的恶意代码的技术。DOME通过表态分析确定软件中产生系统调用的位置(虚拟地址),然后再监视软件运行并难所有观察到的系统调用都是从静态分析时获得的地址处产生的。这种技术简单,易行,实用,而且对注入,动态生成以及混淆的恶意代码都非常有效。

 

1. 注入式的代码 - 运行期间注入某个进程地址的代码;

2. 动态生成的代码 - 运行期间才生成的代码;

3. 混淆代码 -  在进程的原始代码中就已经存在,但是代码的真实目的却通过混淆计算和数据加工隐藏起来了。

 

大部分使用缓冲溢出漏洞将自己注入到程序进程的蠕虫都属于第1类。

将自己的代码加密并嵌入磁盘上的可执行文件中的多态病毒属于第2类。

与动态代码生成类似,代码混淆经常用于病毒和朩马,而不是蠕虫,但是下一代的蠕虫很有可能通过这些复杂的技术来防止自己被检测和分析。

 

检测技术

DOME核心分两步防止受保护的软件被恶意代码破坏。

Step 1: 处理所有的可执行文件,确定其中的Win32 API调用指令,并将它们的虚拟地址和函数名称存储起来;

Step 2: 在软件运行期间监视软件对Win32API的调用,当一个API被调用时,确定产生调用的指令和该指令在文件中的地址,然后难这个指令的地址和所调用的API函数名称是否与初步处理过程中得到的地址一致。如果发现不一致,则发出警告。这时,系统就可以通过阻挡该API调用保护宿主。

 

细说Step 1

 

初步处理,DOME对软件反汇编,然后分析确定调用WIN32 API的指令。这些指令的地址和API函数名会被记录下来。因某些原因(下部分会讲),我们还WIN32 API调用那句指令的地址,也就是调用的返回地址,当调用要返回时,这些地址应该出现在堆栈的最顶端。

 

在编译器生成的正常代码中,WIN32API的调用是通过引用输入地址表(IAT)中的相应适配卡来实现的。

 

细说Step 2

 

逻辑上分为两部分:监视WIN32API调用和将该调用的信息和初步处理中所记录的信息相比较。

监视:

请见附件

验证:

如图示,WIN32 API调用的验证是在API的Detour外壳初步处理代码段中完成的。Win32调用一发生,初步处理代码就会首先取得控制权,此时堆栈的顶端应该是该调用返回地址。要验证该调用,DOME首先看这个返回地址和函数名称在初步处理步骤中存在否。

 

微软研究院Detour开发包之API拦截技术

 

我们截获函数执行最直接的目的就是为函数增添功能,个性返回什,或者为调试以及性能测试加入附加的代码,或者截获函数的输入输出作研究,破解使用。

 

Detours是一个在x86平台上截获WIN32函数调用的工具库。中断代码可以在运行时动态加载。Detours使用一个无条件转移指令来替换目标函数的最初几条指令,将控制流一个用户提供的截获函数。而目标函数中的一些指令被保存在一个称为“trampoline”(其实是目标函数的部分拷贝)。而截获函数可以替换目标函数,或者通过执行“trampoline”函数的时候将目标函数作为子程序来调用的办法来扩展功能。

 

拦截WIN32 API的原理

 

 

<!--[if !vml]-->微软研究院Detour开发包之API拦截技术(图一)

 

 

 

区分概念:

目标函数 Trampoline函数 Detour函数

 

from: http://bbs.pediy.com/showthread.php?t=35766

from: http://www.qqread.com/dotnet/y396675.html

  • 描述: Detour处理过的API调用
  • 大小: 516.1 KB
分享到:
评论

相关推荐

    面向动态生成代码的攻防技术综述1

    强制性防御包括各种静态和动态分析技术,旨在检测和阻止恶意代码的注入或执行,例如代码混淆、沙箱环境以及运行时检查等。而移动目标防御则是一种主动防御策略,通过不断变化程序的内部结构,使攻击者难以预测和利用...

    高效的 PowerShell 脚本解混淆系统及对应的 检测方案设计.zip

    1.4 代码注入:将部分代码片段动态生成并插入到其他脚本中执行。 二、高效PowerShell脚本解混淆系统设计 2.1 解混淆策略: - 变量还原:分析脚本中的变量使用情况,恢复原始的变量名。 - 函数解析:识别并还原...

    C++可注入进程自动生成线程源码

    8. **逆向工程与反逆向**:为了防止注入代码被分析,开发者可能会采用各种反逆向工程技巧,如代码混淆、加密或自解压等,但这也会增加代码的复杂性和潜在问题。 总之,C++可注入进程的源码设计是一项复杂而敏感的...

    远程注入源代码

    同时,随着反作弊系统的进步,远程注入技术也在不断发展,例如采用更复杂的混淆、加密和动态生成代码的策略来逃避检测。 总的来说,"远程注入源代码"涉及到的知识点包括:C++编程、Windows API、进程通信、内存操作...

    Code注入技术Delphi源代码

    5. **安全与反反注入**:Code注入可能会被防病毒软件检测为恶意行为,因此开发者需要考虑如何避免被检测。这可能涉及使用混淆技术、避免常见签名、以及在注入过程中处理异常情况。 6. **清理与退出**:注入完成后,...

    dotnet-RevokeObfuscation是PowerShellv30兼容的PowerShell混淆检测框架

    4. **反射和动态类型**:利用.NET框架的反射和动态类型功能,混淆脚本可以动态生成和执行代码。该框架可以捕获并分析这些动态行为。 5. **模块和脚本块加载**:PowerShell支持模块和脚本块的加载,攻击者可能会隐藏...

    代码注入器_带异常保护

    有时,为了确保兼容性或避开反病毒软件的检测,注入的代码可能需要进行混淆或编码。 异常保护则是在代码注入过程中为防止意外情况而采取的一种策略。在注入代码时,可能会遇到各种未预期的问题,如目标进程崩溃、...

    DLL生成劫持易语言代码

    DLL(动态链接库)生成劫持是黑客或恶意软件开发者常用的一种技术,它涉及篡改程序的正常行为,使得在程序运行时加载错误的DLL文件,从而实现非法控制或者注入恶意代码的目的。易语言是一种流行的中文编程语言,以其...

    springboot工程(单个maven工程)利用proguard实现代码混淆

    构建完成后,`mvn package`命令会生成一个混淆后的jar文件,其中包含了混淆过的代码。通过这种方式,你可以确保Spring Boot应用的代码在发布后更加安全。 最后,值得一提的是,虽然ProGuard提供了很好的混淆效果,...

    另类过主动防御系统代码.7z

    攻击者通过混淆、加密、动态生成代码等技术,使恶意代码在运行时难以被解析,从而绕过传统的特征码匹配。"另类过主动防御系统代码"可能采用了这些先进的逃避策略。 4. **反反调试技术**:为了防止主动防御系统进行...

    精品免杀语音教程集合

    3. 动态生成代码:不将恶意代码写入文件,而是利用运行时生成技术,如寄存器操作、内存注入等,使得反病毒软件无法获取完整的恶意代码特征。 4. API Hooking:通过hook系统API,改变函数调用路径,使得恶意代码能在...

    啊D注入工具免杀经典收藏

    免杀通常涉及多种策略,如代码混淆、动态生成代码、使用零日漏洞等,目的是降低恶意软件被反病毒引擎识别的概率。啊D注入工具的免杀功能可能采用了这些技术,使得它在进行安全测试时更加隐蔽和有效。 文件"啊D注入...

    暗影免杀工具包

    3. **动态生成代码**:不在硬盘上存储完整的恶意代码,而是运行时动态生成,避免了静态扫描的检测。 4. **进程注入**:将恶意代码注入到已存在的合法进程中,使得其行为更难被发现。 5. **驱动级免杀**:利用驱动...

    Android系统混淆与反混淆技术介绍.pptx

    混淆技术可以将代码变得难以阅读,隐藏代码,抵抗自动化工具和反调试、反篡改、反注入等攻击。 混淆技术的主要目的是将代码变得难以阅读和理解,从而保护应用程序的知识产权和商业机密。混淆技术可以将代码中的类名...

    易语言实现DLL的注入 与 隐藏源码.zip

    - 反编译防护:使用混淆器对易语言源码进行混淆,使得反编译后的代码难以理解。 - 代码加密:将源码转换为加密格式,只有在运行时解密后才能执行。这可以通过自定义的加密算法和解密模块实现。 - 使用编译器插件...

    免杀知识大汇总(详解)

    - **DLL注入**:将恶意代码注入到正常运行的进程中,借助这些进程的信任度来躲避检测。 - **系统级Hooking**:如Kernel模式下的Hooking技术,可以在较低级别上拦截和篡改系统调用,更难被检测到。 3. **虚拟化技术...

    免杀工具包

    6. **注入技术**:免杀工具包可能会包含进程注入功能,将恶意代码注入到其他正在运行的进程中,以隐藏自身并利用受信任进程的权限。 7. **网络通信加密**:为了防止通信内容被拦截,免杀工具包可能使用加密协议与...

    java混淆器

    混淆`iSignatureHTML.jsp.mssql`这样的文件可能会面临一些挑战,因为JSP文件通常包含动态生成的HTML和Java代码,混淆可能导致页面渲染出现问题。因此,混淆时需要特别注意保留JSP语法结构的完整性和正确性,以免影响...

    12月最新免杀过5引擎

    4. **进程注入**:将恶意代码注入到正常进程中,以伪装自身。 5. **反逆向工程**:采用反调试技术,防止恶意代码被逆向工程分析。 6. **多态性与自相似性**:使恶意代码每次执行时都略有不同,增加检测难度。 需要...

    黑防免杀教程——特征码修改

    2. **代码注入**:将恶意代码分解并注入到合法程序中,使得反病毒软件难以辨识。这种方法常用于绕过基于签名的检测机制。 3. **动态生成代码**:在程序运行时动态生成代码,而不是在编译时包含,这样特征码就无法...

Global site tag (gtag.js) - Google Analytics