渗透测试之内核安全系列课程: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 包( 驱动开发工具包 ) !
WDK 包( Windows Driver Kit )是基于 WDF Windows 驱动程序 框架 模式的 驱动开发工具包 !
WDK 包,是 采用 WDF 模式,基于 面向对象的编程方法 进行 驱动程序开发的 编程工具包 !
在 WDK 包 流行之前,人们普遍采用 DDK 包( Driver Developer Kit )驱动程序 开发 工具包 进行 驱动程序 开发工作 ! DDK 包,是基于 WDM Windows 驱动程序 模型 模式 的 驱动开发工具包 !DDK 包,是 基于 面向过程 的 编程方法 进行 驱动程序开发 的 编程工具包 !
在以后的章节中,我们将逐步讲述 Windows 驱动程序 的 开发过程 和 学习方法 !
请关注下一篇,渗透测试之内核安全系列课程:Rootkit技术初探(六)
相关文章:
渗透测试之内核安全系列课程:Rootkit技术初探(五)
今天,我们来讲一下内核安全! 本文章仅提供学习,切勿将其用于不法手段! 目前,在渗透测试领域,主要分为了两个发展方向,分别为Web攻防领域和PWN(二进制安全)攻防领域。在…...

探索C嘎嘎的奇妙世界:第三关---缺省参数与函数重载
在c语言中,我们常常在对有参函数进行传参,这样的繁琐过程,C祖师爷对此进行了相关改进,多说无益,上干货: 1 缺省参数: 缺省参数是指在声明或定义函数时为函数的形参指定一个默认值(默认参数)。在调用该函数时,如果没有指定实参,则…...

docker拉取镜像太慢解决方案
前言 这是我在这个网站整理的笔记,有错误的地方请指出,关注我,接下来还会持续更新。 作者:神的孩子都在歌唱 创建daemon.json文件,输入以下信息 vim /etc/docker/daemon.json{"registry-mirrors": ["https://9cpn8tt6.mirror…...

仅凭一图,即刻定位,AI图像定位技术
AI图像定位技术,解锁空间密码!仅凭一图,即刻定位,精准至经纬度坐标,让世界无处不晓。 试试看能否猜中这张自拍照的背景所在?可别低估了A的眼力,答案说不定会让你大吃一惊呢。 近期,…...

跟着刘二大人学pytorch(第---12---节课之RNN基础篇)
文章目录 0 前言0.1 课程视频链接:0.2 课件下载地址: 1 Basic RNN1.1 复习DNN和CNN1.2 直观认识RNN1.3 RNN Cell的内部计算方式 2 具体什么是一个RNN?3 使用pytorch构造一个RNN3.1 手动构造一个RNN Cell来实现RNN3.2 直接使用torch中现有的RN…...

父亲节 | 10位名家笔下的父亲,读懂那份孤独而深沉的父爱
Fathers Day 母爱如水,父爱如山。 相对于母爱的温柔,父亲的爱多了几分静默和深沉。 读完10位名家笔下的父亲,我们就会明白,到底亏欠了父亲多少。 不要让自己有“子欲养而亲不待”的后悔和遗憾, 多给父亲一些爱的表示&a…...
股市中的牛市和熊市是什么?它们是怎么来的?
中文版 股市中的牛市和熊市 定义 牛市: 牛市指的是金融市场中证券价格普遍上升或预期上升的时期。这个术语最常用于股票市场,但也可以适用于交易的其他资产,如债券、货币和商品。特征: 投资者信心增加。交易量上升。积极的经济指…...

基于51单片机万年历设计—显示温度农历
基于51单片机万年历设计 (仿真+程序+原理图+设计报告) 功能介绍 具体功能: 本系统采用单片机DS1302时钟芯片LCD1602液晶18b20温度传感器按键蜂鸣器设计而成。 1.可以显示年月日、时分秒、星期、温度值。…...
springboot-自定义properties文件
在springboot中,如果我们想加载外部的配置文件,但是又不想与其他的配置文件产生明显的耦合,那么我们可以把这些配置文件,单独弄成一个独立的配置文件,比如下面的配置文件,我们想把这些配置移动到user.prope…...
java类的访问权限
在java中,针对类,成员方法和属性,java提供了4种访问控制权限,分别是private,default,protected和public。 这四种访问控制权限按级别由低到高的次序排列分别是privae,default,protected,public private:私有访问权限,…...

【SpringBoot + Vue 尚庭公寓实战】标签和配套管理接口实现接口实现(六)
【SpringBoot Vue 尚庭公寓实战】标签和配套管理接口实现接口实现(六) 文章目录 【SpringBoot Vue 尚庭公寓实战】标签和配套管理接口实现接口实现(六)1、保存或更新标签信息2、根据id删除标签信息3、根据类型查询配套列表4、新…...
Web前端中横线:深入探索与实际应用
Web前端中横线:深入探索与实际应用 在Web前端开发的广袤领域中,中横线这一看似简单的元素,实则蕴含着丰富的设计哲学和技术实现。本文将从四个方面、五个方面、六个方面和七个方面,对中横线在Web前端中的应用进行深入剖析&#x…...

鸿蒙 游戏来了 鸿蒙版 五子棋来了 我不允许你不会
团队介绍 作者:徐庆 团队:坚果派 公众号:“大前端之旅” 润开鸿生态技术专家,华为HDE,CSDN博客专家,CSDN超级个体,CSDN特邀嘉宾,InfoQ签约作者,OpenHarmony布道师,电子发烧友专家博客,51CTO博客专家,擅长HarmonyOS/OpenHarmony应用开发、熟悉服务卡片开发。欢迎合…...

国产MCU芯片(2):东软MCU概览及触控MCU
前言: 国产芯片替代的一个主战场之一就是mcu,可以说很多国内芯片设计公司都打算或者已经在设计甚至有了一款或多款的量产产品了,这也是国际大背景决定的。过去的家电市场、过去的汽车电子市场,的确国产芯片的身影不是很常见,如今不同了,很多fabless投身这个行业,一种是…...

气膜馆的保温措施—轻空间
气膜馆是一种新型的建筑形式,广泛应用于体育场馆、仓储、展览等多个领域。其主要特点是通过气体压力支撑膜结构,实现大跨度无柱空间。为了保证气膜馆在不同气候条件下的使用舒适性和能源效率,保温措施至关重要。以下是气膜馆常见的保温措施及…...

UniVue更新日志:使用Carousel组件实现轮播图效果
github仓库 稳定版本仓库:https://github.com/Avalon712/UniVue 开发版本仓库:https://github.com/Avalon712/UniVue-Develop UniVue扩展框架-UniVue源生成器仓库:https://github.com/Avalon712/UniVue-SourceGenerator 更新说明 今天的更…...

docker和docker compose 部署
一. 将微服务运行在docker上: 1.新建一个空文件夹docker-demo,在里面再新建文件夹app,在app目录下新建一个名为Dockerfile的文件。 2.编写Dockerfile文件 3.构建镜像 4.启动镜像 5.可以访问了。 二使用Dockerfile构建微服务镜像 1.将j…...

鸿蒙轻内核A核源码分析系列六 MMU协处理器(2)
3、MMU汇编代码 在arch\arm\arm\include\arm.h文件中,封装了CP15协处理器相关的寄存器操作汇编函数。我们主要看下MMU相关的部分。 3.1 CP15 C2 TTBR转换表基地址寄存器 代码比较简单,结合下图,自行查看即可。该图来自《ARM Cortex-A9 Tec…...
C# 集合(一) —— Array类
总目录 C# 语法总目录 集合一 Array 集合1. Array 类1.1 搜索1.2 排序1.3 翻转1.4 转换 集合 1. Array 类 //创建方式 //方式一 Array arr Array.CreateInstance(typeof(string), 3); arr.SetValue("lisi", 0); arr.SetValue("zhangsan", 1); arr.SetVa…...

World Map Globe Edition 2
只需点击几下,World Political Map - Globe Edition 2就会在场景添加一个美丽且交互式的3D世界地图。将地球预制件拖动到场景中并自定义外观。 完整的资产,具有强大的可视化功能、示例和丰富的API,适用于构建VR、桌面和移动游戏和应用程序。 主要功能: - 在不访问互联网的情…...
MySQL 隔离级别:脏读、幻读及不可重复读的原理与示例
一、MySQL 隔离级别 MySQL 提供了四种隔离级别,用于控制事务之间的并发访问以及数据的可见性,不同隔离级别对脏读、幻读、不可重复读这几种并发数据问题有着不同的处理方式,具体如下: 隔离级别脏读不可重复读幻读性能特点及锁机制读未提交(READ UNCOMMITTED)允许出现允许…...

无法与IP建立连接,未能下载VSCode服务器
如题,在远程连接服务器的时候突然遇到了这个提示。 查阅了一圈,发现是VSCode版本自动更新惹的祸!!! 在VSCode的帮助->关于这里发现前几天VSCode自动更新了,我的版本号变成了1.100.3 才导致了远程连接出…...
AtCoder 第409场初级竞赛 A~E题解
A Conflict 【题目链接】 原题链接:A - Conflict 【考点】 枚举 【题目大意】 找到是否有两人都想要的物品。 【解析】 遍历两端字符串,只有在同时为 o 时输出 Yes 并结束程序,否则输出 No。 【难度】 GESP三级 【代码参考】 #i…...

【JVM】- 内存结构
引言 JVM:Java Virtual Machine 定义:Java虚拟机,Java二进制字节码的运行环境好处: 一次编写,到处运行自动内存管理,垃圾回收的功能数组下标越界检查(会抛异常,不会覆盖到其他代码…...
渲染学进阶内容——模型
最近在写模组的时候发现渲染器里面离不开模型的定义,在渲染的第二篇文章中简单的讲解了一下关于模型部分的内容,其实不管是方块还是方块实体,都离不开模型的内容 🧱 一、CubeListBuilder 功能解析 CubeListBuilder 是 Minecraft Java 版模型系统的核心构建器,用于动态创…...

C++ 求圆面积的程序(Program to find area of a circle)
给定半径r,求圆的面积。圆的面积应精确到小数点后5位。 例子: 输入:r 5 输出:78.53982 解释:由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982,因为我们只保留小数点后 5 位数字。 输…...
安卓基础(aar)
重新设置java21的环境,临时设置 $env:JAVA_HOME "D:\Android Studio\jbr" 查看当前环境变量 JAVA_HOME 的值 echo $env:JAVA_HOME 构建ARR文件 ./gradlew :private-lib:assembleRelease 目录是这样的: MyApp/ ├── app/ …...

七、数据库的完整性
七、数据库的完整性 主要内容 7.1 数据库的完整性概述 7.2 实体完整性 7.3 参照完整性 7.4 用户定义的完整性 7.5 触发器 7.6 SQL Server中数据库完整性的实现 7.7 小结 7.1 数据库的完整性概述 数据库完整性的含义 正确性 指数据的合法性 有效性 指数据是否属于所定…...
Git常用命令完全指南:从入门到精通
Git常用命令完全指南:从入门到精通 一、基础配置命令 1. 用户信息配置 # 设置全局用户名 git config --global user.name "你的名字"# 设置全局邮箱 git config --global user.email "你的邮箱example.com"# 查看所有配置 git config --list…...
Docker拉取MySQL后数据库连接失败的解决方案
在使用Docker部署MySQL时,拉取并启动容器后,有时可能会遇到数据库连接失败的问题。这种问题可能由多种原因导致,包括配置错误、网络设置问题、权限问题等。本文将分析可能的原因,并提供解决方案。 一、确认MySQL容器的运行状态 …...