木马核心技术剖析读书笔记之木马的隐藏

本文详细探讨了Windows系统中木马隐藏的技术,包括文件隐藏的多种方法,如用户模式和内核模式的Rootkit,以及通过Hook文件枚举函数和FSD Hook实现的隐藏。此外,还讲解了模块隐藏的策略,如摘链隐藏和基于PE Loader的隐藏,以及端口隐藏技术,包括对不同Windows版本下的端口隐藏实现。通过对这些核心技术的剖析,揭示了木马隐藏的复杂性和深度。
摘要由CSDN通过智能技术生成

文件隐藏

常用的文件隐藏方法有基于用户模式的 Rootkit 也有基于内核模式的 Rootkit

基于用户模式的 Rootkit

在 Windows 中,应用层的大多数功能都是通过调用 Native API 完成的。以 Windows7 为例,Native API 通过 sysenter 指令进入内核,进而调用 SSDT(System
Service Dispatch Table,系统服务调度表)中对应的函数来完成功能。因此,利用用户模
式的 Rootkit 实现的文件隐藏,很容易被使用内核接口枚举文件的工具绕过,达不到隐
藏的效果

基于内核模式的 Rootkit

基于内核模式 Rootkit 的文件隐藏,通常对 Windows 内核中相关文件浏览函数挂钩,甚至对 Windows 文件系统的内核模块进行修改。此类隐藏方法实现上更偏系统底层,在系统中有更大的控制权限,还能针对大部分反病毒软件和 Anti-Rootkit,进行有针对性的处理,能达到更好的隐藏效果。

基于文件枚举函数 Hook 的隐藏

Windows 系统提供了遍历文件、目录的函数 FindFirstFileA,该函数实际上是对 FindFirstFileExw 的简单封装。对 FindFirstFileExW 进一步分析后发现,该函数是调用 ntdll!ZwQueryDirectoryFile 函数,该函数是内核 Ntoskrnl.exe 实现的,该函数的地址保存在 SSDT 中

SSDT 是 Windows 内核导出的一个数据结构。Windows 内核组件中,SSDT 包含了 Windows 执行体提供的系统功能支持接口,这是 Ntoskml.exe 里实现的系统核心服务SSDT以数组的形式存储这些接口对应函数的地址,接口在数组中的索引也就是该接口的系统调用编号,这个索引或者系统调用编号可以被用于定位函数的内存地址

要挂钩 ZwqueryDirectowFile 函数,首先需要定位到该函数的地址,再确定采用的 Hook 方式,然后编写自定义的具体代码或者函数

一般可以采用两种方式对 SSDT 里的函数进行Hook:

  • 直接函数地址替换法,用自己实现函数的地址替换SSDT里要挂钩函数的地址
  • Inline hook方法,修改 SSDT 中函数头部的若干个字节(32位系统中是5字节),使该函数开始运行时,直接跳转到自己实现的函数执行
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值