渗透测试之内核安全系列课程:Rootkit技术初探(五)

今天,我们来讲一下内核安全!

本文章仅提供学习,切勿将其用于不法手段!

目前,在渗透测试领域,主要分为了两个发展方向,分别为Web攻防领域和PWN(二进制安全)攻防领域。在PWN的二进制领域免杀技术,一直是后渗透利用阶段的重要安全技术之一。

想要免杀,需要了解的安全技术知识包括软件加壳、代码混淆(例如,使用花指令)、隐匿技术(例如,Rootkit技术)、动态加密等内容。

接上一篇文章,我们来继续讲述下 Rootkit技术 的相关基础知识点内容!

今天开始,我们来讲一些实战的东西!

实战的东西,最为实用,也更具有干货价值

想要进行 Rootkit 软件开发,我们是一定要基础到 操作系统内核编程 的 !

操作系统 和 特权程序,都是在 内核模式 中运行的!

 内核模式代码有权访问系统的任何部分,并且像用户模式代码那样限制。 内核模式代码可以访问在用户模式或内核模式下运行的任何其他进程的任何部分。 许多核心操作系统功能和许多硬件设备驱动程序内核模式运行

写 内核 Rootkit 程序,一定要拥有 驱动程序开发 的 能力!

驱动程序开发,涉及到 相关基础知识点,例如 IRP 、I/O堆栈、WDM驱动、用户层 Rootkit 、内核层 Rootkit  、硬件层 Rootkit 等 ! 

Rootkit 技术,分为 攻击防守 两种技术

学会攻击技术,是为了能够进行更加有效安全防御

如果我们并不知道 刀剑 为何物,那么,我们怎么会懂得躲避与防御 刀剑的锋芒呢?

Rootkit 的 攻击技术,主要是指 驻留内核底层,控制操作系统行为 的 技术!

Rootkit 的 防御技术,主要是指 驻留内核底层,检测 Rootkit 软件的存在,取证 Rootkit 软件的行为!

攻击和防守,并不分家!攻击和防守技术,作为一名白帽子黑客,是必须要学会的!

Rootkit 技术,涉及到多方面的知识,包括 硬件系统 、 软件系统 、 内核驱动 、Rootkit 技巧(例如,如何绕过安全软件的检测、如何检测到工作于内核层面的 Rootkit 软件)等。

硬件系统层面,涉及到 保护模式 的 相关知识 !

例如,CPU特权级,我们需要知道 WINDOWS 和 LINUX 都仅实现了 R0(内核层)R3(用户层)特权级别 !这样的设计,是存在问题的 !本应工作在 R1(启动层)的东西,操作系统内核一起,共同工作在了 R0 内核 层 !这样的设计,给了 Rootkit技术 的 生存空间 !给了以驱动形式存在的病毒木马,繁殖传播 的土壤 !用户层木马,配合着内核层木马,共同获得了 操作系统的控制权!结合硬件层面的恶意代码,甚至给 安全软件 造成了很大的 清除压力。为什么,我会说,硬件层面的恶意代码?一些硬件的固件,为了保持与优化硬件性能,是对外提供了接口的!它们提供的接口,给了恶意软件侵入的大门!

想要编写 Rootkit 程序,我们必须要熟悉 CPU 的特权级,只有进入系统内核,Rootkit 软件才能发挥出更大的威力!

想要编写 Rootkit 程序,我们必须要熟悉 内存分页机制,只有了解底层的内核实现,我们才能去 读取 或 更改 页目录表( PDT ) 、页表( PTT )、页( P )  的 数据内容( 比较重要的,包括 访问权限、读写开关、偏移量、物理地址 等)。

我们前几章,为什么要重点去讲硬件环境和操作系统的基础知识内容呢?

如果缺乏对于这些底层基础知识的足够了解,我们是很难有效打开 Rootkit 的 编程大门 的 !

针对内存空间访问控制体系,我们必须有足够的了解!

关于内存空间的访问控制体系知识,我们会在下一章继续进行讲解!

这一章,主要是给大家换个口味 !

毕竟,过分的去讲底层知识,可能会让初学者们感到疲惫,轻松愉快的学习环境,才是我想给大家去营造的!

学习 Rootkit 技术,我们要了解 硬件系统体系架构,我们也要了解 操作系统体系架构

操作系统方面,最为主流的派系,莫过于 Windows 、Uinx 、Linux 这三种类型的操作系统

Windows 由 美国 微软公司 设计 并 开发,Windows 操作系统 是一个 基于 窗口化和消息机制 的操作系统。Windows 操作系统,是闭源的!这是它对于程序员而言,不太友好的一点!

Uinx 由 美国 贝尔实验室 设计的,它 和 Windows  设计理念有所不同,它被主要应用于服务器领域!而 Windows 系统 则 更多被应用于 个人电脑 !Uinx 也是闭源的 !这意味者,它对于程序员来说,同样不太美好 !美国 苹果公司 的 MacOS 系统 就是基于 Uinx 系统扩展而来的 !

Linux 由 芬兰赫尔辛基大学的二年级学生 Linus Torvalds 设计开发的 !Linux 系统 最大的优点,就是开源且免费,Linux 系统 对于 程序员来说,是非常友好的!程序员可以通过阅读 Linux 的 内核源码 去更加透彻地理解 Linux 系统 的 底层技术实现 !Linux 和 Uinx 在技术实现的体验层面上来看,是非常相似的 ! Linux 被设计开发之初,就借鉴于 Unix 系统 !但是,Linux  系统 的 源代码 是 独立且开放 的 !

研究操作系统,我们要研究它的底层 !

以 Windows 系统 为例,我们要研究它的 内存分页机制 、服务调用机制(例如,中断分发、异常分发、系统服务分发 等)

研究 Windows 内核驱动程序,我们要研究它的内核技术实现

我们要了解,在 Windows 环境下,开发 驱动程序 软件,我们需要了解两种最为经典的却动程序开发设计模型!一种是 WDM( Windows Driver Model )Windows 驱动程序 模型,一种是 WDF( Windows Driver Framework )Windows 驱动程序 框架

以前,比较主流的 Windows 环境下的 驱动程序开发模型,就是 WDM ( Windows Driver Model )Windows 驱动程序 模型 !

现在,比较主流的 Windows 环境下的 驱动程序开发模型,为 WDF( Windows Driver Framework )Windows 驱动程序 框架 !

大家可以理解为,WDF( Windows Driver Framework )Windows 驱动程序 框架 是 Windows 系统环境 下进行 驱动程序开发 的 升级优化版本!

WDF 驱动程序框架,主要包括两个类型,一个是 用户级驱动框架 UMDF( User Mode Driver Framework ),它主要的文件表现形式为 DLL 动态链接库 文件。一个是 内核级驱动框架 KMDF( Kernel Mode Driver Framework ),它主要的文件表现形式为 SYS 系统内核 文件

WDM ( Windows 驱动程序 模型),是基于 面向过程 的 程序设计方法 进行 驱动程序开发 的 !

WDF ( Windows 驱动程序 框架),是基于 面向对象 的 程序设计方法 进行 驱动程序开发 的 !

在开发普通的 Windows 应用程序时,我们一般需要使用 美国 微软公司 的  SDK 包( 软件开发工具包 ) !

开发特殊的 Windows 驱动程序时,我们一般需要使用 美国 微软公司 的  DDK 包( 驱动开发工具包 )

DDK ( Driver Developer Kit )是基于 WDF Windows 驱动程序 框架 模式的 驱动开发工具包 !

DDK 包,是 采用 WDF 模式,基于 面向对象的编程方法 进行 驱动程序开发的 编程工具包 !

在 DDK 包 流行之前,人们普遍采用 WDK 包( Windows Driver Kit )Windows 驱动程序 工具包 进行 驱动程序 开发工作 ! WDK 包,是基于 WDM Windows 驱动程序 模型 模式的 驱动开发工具包 !WDK 包,是基于面向过程的编程方法 进行 驱动程序开发的 编程工具包 !

在以后的章节中,我们将逐步讲述 Windows 驱动程序开发过程 学习方法

请关注下一篇,渗透测试之内核安全系列课程:Rootkit技术初探(六)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/26275.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

人工智能对聊天机器人训练数据的“淘金热”可能会耗尽人类编写的文本

人工智能对聊天机器人训练数据的“淘金热”可能会耗尽人类编写的文本 像ChatGPT这样的人工智能系统可能很快就会耗尽让它们变得更聪明的东西——人们在网上写下和分享的数万亿字。 Epoch AI研究集团发布的一项新研究预计,科技公司将在大约十年之交——2026年至203…

Linux快速保存文件的快捷键:w和快速保存并退出ZZ

在Linux中,使用vi或Vim编辑器时,保存文件的快捷键主要是:w。以下是关于vi/Vim编辑器中保存操作的详细快捷键和说明: 1、保存文件 :w :这是最常用的保存命令。在命令模式下(按Esc键进入),输入:…

【Linux】ls命令

这个命令主要是用于显示指定工作目录下之内容(列出目前工作目录所含的文件及子目录)。 掌握几个重点的常使用的就可以: ls -l # 以长格式显示当前目录中的文件和目录 ls -a # 显示当前目录中的所有文件和目录&am…

Go使用https

一、服务端 1. 生成私钥和证书 安装OpenSSL windows安装OpenSSL生成CA证书创建证书 以上两个步骤,参考:Go http2 和 h2c 2. 代码 package mainimport ("log""net/http""time""golang.org/x/net/http2" )co…

TCP四次挥手全过程详解

TCP四次挥手全过程 有几点需要澄清: 1.首先,tcp四次挥手只有主动和被动方之分,没有客户端和服务端的概念 2.其次,发送报文段是tcp协议栈的行为,用户态调用close会陷入到内核态 3.再者,图中的情况前提是双…

【递归、搜索与回溯】穷举vs暴搜vs深搜vs回溯vs剪枝

穷举vs暴搜vs深搜vs回溯vs剪枝 1.全排列2.子集 点赞👍👍收藏🌟🌟关注💖💖 你的支持是对我最大的鼓励,我们一起努力吧!😃😃 管他什么深搜、回溯还是剪枝,画出决…

使用API有效率地管理Dynadot域名,创建文件夹管理域名

关于Dynadot Dynadot是通过ICANN认证的域名注册商,自2002年成立以来,服务于全球108个国家和地区的客户,为数以万计的客户提供简洁,优惠,安全的域名注册以及管理服务。 Dynadot平台操作教程索引(包括域名邮…

李廉洋:6.11黄金原油持续震荡上行,今日行情走势分析策略。

黄金消息面分析:上周黄金市场的走势受到了PCE通胀数据和美联储政策预期的显着影响。尽管市场对黄金的长期看涨情绪依然存在,但短期内金价的波动性预计将持续。4月份的PCE通胀数据显示价格压力有所降温,这一结果与分析师预期一致,但…

分享一些班组长日常管理工作的经验

在企业管理中,班组长作为基层的管理者和执行者,扮演着至关重要的角色。他们不仅要确保生产任务的顺利完成,还要负责团队建设、员工激励和沟通协调等工作。本文,深圳天行健精益管理咨询公司旨在分享一些班组长日常管理工作的经验&a…

探索C# 10.0的关键新特性

前言 随着.NET 6的发布,C# 10.0带来了许多创新特性和改进,旨在简化编码过程,增强开发者的生产力,并提供更现代、简洁的编程体验,可以说,这些新特性不仅增强了C#的表达能力,还提高了开发者的编程…

【c语言】文件操作,解开你的疑惑

文件操作 为什么使用文件什么是文件文件的分类文件名 二进制文件和文本文件文件的打开与关闭流与标准流流标准流 文件指针文件的打开与关闭 文件的顺序读写文件的随机读写文件读取结束的判定文件缓冲区 为什么使用文件 我们程序运行的数据是运行在内存中的,当成程序…

实用Python:文件与目录管理的17个技巧

今天我们要一起探索的是Python编程中的一个非常实用且基础的领域——文件与目录管理。无论是处理个人数据、自动化办公任务还是构建复杂的软件系统,这些技巧都将大大提升你的工作效率。准备好了吗?让我们一起动手吧! 1. 打开与读取文件 目标…

三生随记——梦魇之枕

第一章:搬入新家 在迷雾笼罩的小镇边缘,伫立着一座年代久远的木屋。李晴站在屋外,打量着这座看似平静却充满神秘感的居所。因为工作的原因,她不得不暂时搬离喧嚣的城市,来到这个陌生的地方。 木屋内部陈旧却别有一番风…

品牌渠道健康发展的关键与方法

一个品牌的渠道健康与否对其长期发展至关重要。品牌虽多,但并非所有产品都能成为品牌,创建品牌需大量精力,而让品牌长久健康发展则需多方面努力。 力维网络服务众多知名品牌,总结出一些渠道治理方法供品牌参考。首先,管…

【linux】(7)文本分析awk

awk 用于分析、过滤和生成报告。 基本用法 awk pattern {action} filename常用选项 -F:指定字段分隔符 awk -F, {print $1} filename例子:使用逗号作为字段分隔符,并打印第一列。 -v:定义变量 awk -v varvalue BEGIN {print va…

分享5款让大家电脑更好用的软件

​ 电脑是我们日常生活和工作中不可缺少的工具,今天给大家推荐了五款让电脑更好用的软件。 1.系统清理——CCleaner ​ CCleaner是一款系统优化和隐私保护工具,可以清理无用文件、浏览器缓存、回收站内容等,释放磁盘空间,提升系…

【linux网络(二)】网络基础之套接字编程

💓博主CSDN主页:杭电码农-NEO💓   ⏩专栏分类:Linux从入门到精通⏪   🚚代码仓库:NEO的学习日记🚚   🌹关注我🫵带你学更多操作系统知识   🔝🔝 Linux网络 1. 前言2. 端口号详…

2024下半年软考中级系统集成项目管理师应该如何备考?

2024年软考系统集成项目管理工程师安排在下半年考试,今天跟大家分享一下软考中级系统集成项目管理师的考试备考规划。 报考要求 系统集成项目管理师考试报名没有任何学历、年龄、职业等条件的限制,只要年满18岁就可以报名。 适合人群 各政府部门及事…

任何成为一名优秀的AI产品经理,看完这篇就懂了

(背景:之前做AI咨询,对接公司内部AI产品经理经理,外部也对接过很多甲方AI产品经理。后来出来也拿过好几家公司AI产品经理的offer) 1.AI产品经理是什么 回答这个问题前我们首先得理清楚什么是AI产品经理,它和传统的互…

JavaLambda表达式 - 操作数组

在Java中,Lambda表达式通常与函数式接口一起使用,以便能够以更简洁的方式表示函数或操作。然而,Java的数组本身并不直接支持Lambda表达式,因为数组是原生数据类型(对于基本类型数组)或对象的固定大小的集合…