Windows平台内核级文件访问_绕过安全软件

到正确的干净的文件系统。


直接访问FSD的内核级别文件访问
  FSD(FileSystemDriver)层是文件API函数经过本地系统服务层(native API)最后到达的驱动层次。如果我们可以模仿操作系统,在我们自己的驱动程序里直接向FSD发送IRP,就可以绕过那些native API 和win32 API了,也就可以绕过设置在这些层次上面的API钩子等监控措施。


文件的Create和Open
  文件的Create和Open可以通过发送IRP_MJ_CREATE给FSD,或者调用IoCreateFile函数来完成。Create和Open的区别实际上在于IoCreateFile/IRP_MJ_CREATE的一个参数Disposition的取值。
  通过发送IRP_MJ_CREATE给FSD的方法与此类似,可以参考IFSDDK document的IRP_MJ_CREATE说明。不同于上面方法的是需要自己创建一个FILE_OBJECT,好于上面方法的是这种方法不需要一个HANDLE,HANDLE是线程依赖的,FileObject则是线程无关。


文件的Read和Write
  我们通过给FSD发送IRP_MJ_READ来读取文件,给FSD发送IRP_MJ_WRITE来改写文件。
  如果我们是通过一个HANDLE来执行(如使用IoCreateFile打开的文件),就要先用ObReferenceObjectByHandle函数来获得这个Handle对应的FileObject。我们只能给FileObject发送IRP。
  之后我们使用IoAllocateIrp分配一个IRP。根据FileObject->DeviceObject->Flags的值,我们判断目标文件系统使用什么样的IO方式。
  对每种不同的IO方式使用不同的地址传递方式。随后我们填充IRP内的各个参数域,就可以发送IRP了。
  接着要考虑如果IRP不能及时完成,会异步的返回的情况,我们安装一个CompletionRoutine,在CompletionRoutine里面设置一个事件为已激活,通知我们的主线程读取或者写入操作已经完成。
  现在可以发送IRP了。如果不采取特殊的措施的话,IRP发送目标是FileObject对应的DeviceObject。发送后,等待IRP的完成并且释放资源,返回。


文件的Delete
  Delete实际上是通过向FSD发送IRP_MJ_SET_INFORMATION的IRP,并把IrpSp->Parameters.SetFile.FileInformationClass设置为FileDispositionInformation,用一个FILE_DISPOSITION_INFORMATION结构填充buffer来执行的。


文件的Rename
  类似于Delete,Rename是向FSD发送IRP_MJ_SET_INFORMATION的IRP,把IrpSp->Parameters.SetFile.FileInformationClass设置为FileRenameInformation,填充buffer为FILE_RENAME_INFORMATION结构。


综上,于是我们可以在驱动里面通过发送IRP来直接访问文件系统了,绕过了native API 和win32 API层次。


绕过文件系统过滤驱动和钩子

  有了以上的内容,我们目前可以直接给FSD发送请求操作文件。但是这还不够,因为有很多的杀毒软件或者监视工具使用FSD Filter Driver或者FSD Hook的办法来监控文件操作


对付文件系统过滤驱动

  文件系统过滤驱动Attach在正常的文件系统之上,监视和过滤我们的文件访问。文件系统驱动栈就是由这一连串的Attach起来的过滤驱动组成。我们可以用IoGetRelatedDeviceObject这个函数来获得一个FileObject对应的最底层的那个功能驱动对象(FDO)。但是这样虽然绕过了那些过滤驱动,却同时也绕过了正常的FSD如Ntfs/Fastfat,因为正常的FSD也是作为一个过滤驱动存在的。磁盘文件对象的对应的最底层的FDO是Ftdisk.sys,它已经因为过于底层而不能处理我们投递的IRP请求。
  其实正常的FSD信息存储在一个Vpb结构中,我们可以使用IoGetBaseFileSystemDeviceObject这个未公开的内核函数来得到它。它就是我们发送IRP的目标了。


对付替换DispatchRoutine的FSD Hook

  这是一种常用的FSD Hook方式。我们需要得到原本的DispatchRoutine,向原本的DispatchRoutine发送我们的IRP。这里提供一个思路:我们可以读取原本FSD驱动的.INIT段或者.TEXT段,查找其DriverEntry函数,在它的DriverEntry函数中肯定设置了自己的DriverObject的各个DispatchRoutine。在这个函数中我们就能找到我们想要的DispatchRoutine的地址。只需要使用特征码搜索的方法就可以搜索到这个值。

对付Inline Hook DispatchRoutine函数本身的FSD Hook

  这种Hook方法比较狠毒,但不是非常常见于安全产品中,一般应用在木马和rootkit上,比如我自己写的rootkit。它没有更改DriverObject里面的DispatchRoutine的函数指针,而是向函数开头写入汇编指令的JMP来跳转函数。对付它的基本思路就是读取存在磁盘上的FSD的文件,加载到内存一份干净的备份,察看我们要调用的DispatchRoutine开头的几个字节和这个干净备份是否一致。如果不一致,尤其是存在JMP,RET,INT3一类的汇编指令的时候,很可能就是存在了Inline Hook。(但要充分考虑重定位的情况。)如果存在Inline Hook,我们就把干净的函数开头拷贝过来覆盖掉被感染的函数头。然后在发送IRP,就不会被Inline Hook监视或篡改了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: rootkits——windows内核的安全防护是一本针对Windows操作系统的内核别安全防护的PDF文档。这本文档主要涵盖了rootkits的定义、特征、工作原理、攻击方式以及防御方法等内容。 首先,rootkits是一种恶意软件,通过植入操作系统内核来隐藏自身并实施攻击。文档详细介绍了rootkits的特征,例如可以修改系统内核代码、隐藏进程和文件等,从而使其在操作系统中隐蔽存在。 文档还解释了rootkits的工作原理,即通过劫持系统调用、Hook函数和修改系统数据结构等方式来实现恶意行为。同时,文档还介绍了rootkits使用的主要攻击方式,如键盘记录、远程控制、网络欺骗等。 为了帮助用户保护自己的系统免受rootkits的攻击,该文档提供了一些防御方法。例如,通过实时监控系统进程、文件和注册表的变化,及时检测和阻止rootkits的安装和运行;使用可信任的安全软件进行系统扫描和漏洞修复;定期更新操作系统和应用程序的安全补丁等。 此外,文档还提供了一些用于检测和清除rootkits的工具和技术,如反rootkit软件、恶意代码扫描器等。这些工具可以帮助用户及时发现和清除系统中已经存在的rootkits。 总的来说,rootkits——windows内核的安全防护这本PDF文档详细介绍了rootkits的定义、工作原理、攻击方式以及防御方法。对于那些希望了解和加强Windows系统安全性的用户来说,这本文档是一份宝贵的参考资料。 ### 回答2: rootkits是一种恶意软件,能够隐藏在操作系统内核中,并且在被感染的计算机上实施恶意活动。它们可以完全控制系统,并且能够绕过传统的安全防护措施。为了确保计算机系统的安全,Windows内核的安全防护PDF提供了一种防范rootkits的方法。 首先,PDF文件详细介绍了rootkits的工作原理和其入侵系统的方式。这使得用户能够了解到rootkits的特征以及它们可能对计算机造成的危害。了解敌人才能更好地进行防范。 其次,PDF文件提供了关于如何检测和清除rootkits的指南。通过使用一些专业的工具和技术,用户可以发现并清除被rootkits感染的系统。这些工具可以扫描内核并查找任何异常行为,以及寻找rootkits常用的隐藏技术。通过及时发现和清除rootkits,可以最大限度地保护系统免受恶意活动的威胁。 此外,PDF文件还提供了一些加强系统安全的建议。比如,更新操作系统和应用程序,使用强密码保护帐户和网络连接,以及限制对敏感文件和设置的访问权限等等。这些措施可以帮助用户防止rootkits和其他恶意软件的入侵。 最后,PDF文件还介绍了一些未来的趋势和建议,以进一步提高Windows内核的安全性。这些建议包括加强内核的隔离性,采用虚拟化技术进行保护,以及实施更严格的访问控制等。这些措施将有助于加强系统的安全性,并提高对rootkits的抵御能力。 总的来说,Windows内核的安全防护PDF是一份有价值的文档,提供了对抗rootkits的指南和建议。通过采取相应的措施,用户可以保护系统免受rootkits的威胁,并提高整体的安全性。 ### 回答3: rootkits是一种针对Windows操作系统的恶意软件,它们通过在操作系统内核中植入恶意代码,可以隐藏自身的存在并在系统启动时加载运行。rootkits通过修改关键的系统文件、进程和注册表项等方式,使恶意软件难以被发现和清除。 《rootkits——windows内核的安全防护》这本PDF书籍探讨了如何保护Windows内核免受rootkits的攻击。书中首先介绍了rootkits的原理和工作方式,包括rootkits的分类、入侵方式和隐藏技术等。然后,书中深入讲解了一些重要的内核安全技术,如代码签名、驱动程序的安全性和安全的加载和验证过程等。书中还提供了一些常见的rootkits检测和清除工具,以帮助用户发现和清除系统中的恶意软件。 此外,书中还介绍了一些预防rootkits攻击的措施和最佳实践。例如,强化系统安全性、定期更新操作系统和安全软件、限制管理员权限、使用防火墙和入侵检测系统等。这些措施可以有效减少系统被rootkits攻击的风险。 总之,《rootkits——windows内核的安全防护》这本PDF书籍全面讲解了如何保护Windows内核免受rootkits攻击的方法和技术。它可以帮助用户了解rootkits的工作原理,并提供了一些重要的内核安全技术和预防措施,以增强系统的安全性和防御能力。对于IT安全从业人员和对计算机安全感兴趣的人来说,这本书是一本不可或缺的参考资料。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值