安全见闻(4)——开阔眼界,不做井底之蛙

内容预览 ≧∀≦ゞ

  • 安全见闻四:操作系统安全机制深度解析
    • 声明
    • 操作系统机制
      • 1. 注册表
      • 2. 防火墙
      • 3. 自启动与计划任务
      • 4. 事件日志
      • 5. 内核驱动与设备驱动
      • 6. 系统服务
      • 7. 进程与线程
      • 8. 系统编程
    • 从操作系统机制看病毒设计
      • 1. 自启动:病毒如何在系统启动时运行?
      • 2. 有多少种方式可以实现自启动?
      • 3. 计划任务能否添加自启动?
      • 4. 病毒何时启动?
      • 5. 如何规避事件日志?
      • 驱动程序的潜在漏洞
    • 总结

安全见闻四:操作系统安全机制深度解析


声明

学习视频来自B站UP主 泷羽sec,如涉及侵权马上删除文章
笔记的只是方便各位师傅学习知识,以下网站只涉及学习内容,其他的都与本人无关,切莫逾越法律红线,否则后果自负


操作系统的安全机制构建了网络安全防护的基石,涵盖从注册表、防火墙、自启动机制到内核驱动等多个层面。对于安全人员而言,深入理解这些机制是防范内网渗透、逆向工程和病毒编写等高级攻击技术的关键。本篇文章将详细阐述操作系统各个核心组件的安全风险与防护要点,同时结合Windows系统的实际应用场景,展示病毒编写等高级操作技术的实现途径。


操作系统机制

1. 注册表

注册表是Windows系统中至关重要的核心数据库。它以树状结构组织,包含“键”和“子键”,类似于磁盘文件系统中的目录结构。Windows注册表中的根键包括五大部分,分别存储着与系统和应用程序运行密切相关的信息​:

  • HKEY_CLASSES_ROOT (HKCR):存储文件类型和应用程序关联。
  • HKEY_CURRENT_USER (HKCU):存储当前用户的个性化配置。
  • HKEY_LOCAL_MACHINE (HKLM):包含系统、硬件和所有用户的全局配置信息。
  • HKEY_USERS (HKU):存储所有用户的设置。
  • HKEY_CURRENT_CONFIG (HKCC):管理当前硬件的配置。

注册表作为Windows核心组件,控制了系统的启动、驱动加载及应用程序的运行,是操作系统安全与稳定性的保障。例如,恶意软件可能通过注册表实现自启动或持久化攻击。攻击者可以通过向注册表的自启动键值添加条目,使恶意软件在系统启动时自动运行。

相比之下,Linux系统采用分布式配置文件管理系统设置,类似于Windows的注册表,但更加开放和灵活。Linux中的配置文件散布于文件系统中,并通过文本文件管理各项配置信息。

2. 防火墙

防火墙是操作系统的第一道安全屏障,负责监控和控制进出系统的网络流量。它通过配置规则,允许或拒绝特定的网络连接,防止外部攻击。然而,防火墙并非万无一失。由于它主要基于数据包包头信息进行检测,防火墙无法识别通过合法端口流入的恶意流量,也无法阻挡绕过防火墙的攻击​。在这种情况下,防火墙应结合其他安全机制,如入侵检测系统(IDS)和入侵防御系统(IPS),以提高防护效果。

3. 自启动与计划任务

自启动机制让系统能够在启动时自动运行某些程序,提升用户体验。然而,对于攻击者来说,自启动也是实现持久性控制的理想途径。Windows下有多种方式可以实现自启动,常见的包括修改注册表、启动文件夹或服务。

此外,恶意软件还可以通过计划任务实现自启动。攻击者可以利用任务计划程序(Task Scheduler),创建在系统启动或指定时间运行的任务。计划任务的灵活性较高,能够设置复杂的触发条件,如系统空闲时或特定事件触发时启动​。

这些机制使得攻击者可以在系统启动时或用户登录时运行恶意程序,并通过清除事件日志、伪装为系统进程、进程注入等方式规避安全检测和日志审查。通过这些技术,病毒能够在系统中隐藏自己,逃避管理员的监控。

4. 事件日志

事件日志是系统运行过程中的“日记”,记录着系统、应用程序和安全事件。对于防御者而言,事件日志是溯源攻击、发现异常行为的重要工具。通过分析事件日志,可以确定攻击者的进入路径、所执行的操作及系统的反应。然而,红队攻击中常见的一个策略是清理或禁用事件日志,掩盖攻击痕迹​。确保事件日志的完整性和及时备份是事件溯源的重要手段。

Windows 使⽤“事件查看器”管理⽇志⽂件,记录的信息包括应⽤错误、系统警告等。在 Linux 中,⽇志通常存储在 /var/log ⽬录下,常⻅的⽇志⽂件如 syslog 和 dmesg。

5. 内核驱动与设备驱动

内核驱动程序是操作系统与硬件设备之间的桥梁,它运行在操作系统的内核层面,能够直接访问硬件资源。由于内核驱动拥有高权限,攻击者可以通过漏洞或恶意的内核驱动程序实现对系统的全面控制。例如,恶意内核驱动可能绕过安全防护机制,直接操纵系统资源​。此外,设备驱动程序负责与特定硬件设备(如显卡、网卡等)通信,其安全性同样至关重要。恶意设备驱动或驱动程序中的安全漏洞也可能被攻击者利用,破坏系统安全。

在 Windows 中,设备驱动如显卡驱动通过 Device Manager 管理。⽽在 Linux 中,内核模块可以通过命令 lsmod 查看和 modprobe 加载。

6. 系统服务

系统服务是操作系统中以后台方式运行的程序,用于执行网络服务、打印服务、安全服务等功能。攻击者可通过修改或劫持系统服务实现持久化攻击,或通过暂停防护软件的服务启动恶意程序。因此,定期审查系统服务的配置与状态,尤其是网络和安全相关的服务,对防止攻击者滥用系统资源非常重要​。

Windows 的服务可以通过“服务管理器”(services.msc)查看和管理,常⻅的服务如
Windows Update。在 Linux 中,systemd 管理服务,命令如 systemctl 可以⽤于启动、停⽌
服务。

7. 进程与线程

进程是操作系统中执行的基本单位,而线程是进程中的执行路径。攻击者常通过创建恶意进程或隐藏线程来执行恶意操作,利用多线程技术加速恶意代码的执行效率。在网络安全防护中,监控系统中的异常进程和线程活动,尤其是具有高权限的进程,是识别攻击的重要手段。

Windows 的任务管理器可以显⽰系统中的所有进程。在 Linux 中,命令 ps 或 top 可以查看进程和线程的信息。

8. 系统编程

系统编程涉及与操作系统底层服务的交互,通过编写程序实现对硬件、文件系统、内存等资源的管理。系统编程是高级安全技术,如漏洞利用、病毒编写、内核开发等领域的重要基础。熟练掌握系统调用和API接口,不仅有助于编写高效的系统应用程序,还能深入理解操作系统的内部机制和安全弱点,为应对复杂的网络攻击提供技术支持。

在 Windows 中,开发者可以使⽤ WinAPI 进⾏系统编程,⽐如控制⽂件、进程、线程。在 Linux 中,POSIX 标准的 API 如 fork()、exec() 提供进程管理功能。

从操作系统机制看病毒设计

在设计和分析恶意软件时,操作系统的底层机制为病毒的传播和隐藏提供了多种途径。在Windows系统中,病毒可以利用自启动机制、计划任务、事件日志等功能实现持久化存在并规避检测。同时,驱动程序的潜在漏洞也是攻击者利用的重要切入点。以下将通过几个关键问题详细分析病毒设计的常见方式。

1. 自启动:病毒如何在系统启动时运行?

在病毒设计中,自启动功能是保证恶意代码在系统每次重启后依然能够自动运行的关键技术。Windows提供了多个位置和方式来添加自启动项:

  • 注册表:病毒可以通过修改注册表的自启动键(如HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunHKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run)添加自身为自启动项。每次系统启动时,Windows会自动加载这些键中指定的程序。

  • 启动文件夹:病毒还可以将自身或其启动脚本放置在用户的启动文件夹中(C:\Users\<username>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup),这样在用户登录时也会自动运行。

  • 服务:通过伪装为系统服务,病毒可以添加到Windows服务列表中,并设定为自动启动。通过命令行(sc create)或修改注册表(HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services),病毒能够持久地在系统后台运行,不易被发现。

2. 有多少种方式可以实现自启动?

除了上述常见的注册表键和启动文件夹,Windows还支持许多其他实现自启动的机制:

  • RunOnce、RunServices等注册表键:这些键值在不同的启动阶段运行程序。RunOnce只在下一次启动时运行,之后会被删除;而RunServices则在更早的阶段加载服务。

  • 计划任务:通过Windows任务计划程序,病毒可以创建复杂的计划任务,指定其在系统启动、用户登录或特定的时间和事件发生时自动运行。

  • WMI事件订阅:病毒还可以利用WMI(Windows Management Instrumentation)事件机制,创建事件订阅,触发条件后启动恶意程序。这种方法相对隐蔽,能够逃避传统的安全防护。

  • 修改系统文件:病毒可以替换或注入到系统关键文件中,例如DLL注入,利用合法的系统调用机制来实现自启动。

3. 计划任务能否添加自启动?

计划任务是Windows提供的一种功能强大的自动化机制。病毒可以通过命令行工具(schtasks)或者任务计划程序图形界面创建一个新任务,设定在系统启动、用户登录或特定时间点执行恶意代码。这种方式的灵活性使得恶意软件可以在较为隐蔽的情况下定期运行。

计划任务的优势在于其触发条件可以设置得非常复杂,病毒能够在用户不活跃时或特定事件发生时(例如网络连接建立或文件系统变化)启动,这样大大降低了被用户发现的几率。

4. 病毒何时启动?

恶意软件的启动时机通常选择在以下几种情况之一:

  • 系统启动时:通过注册表、计划任务或服务的方式,病毒可以在系统启动时第一时间加载,确保恶意行为的持续执行。

  • 用户登录时:通过启动文件夹或用户级别的注册表键(如HKEY_CURRENT_USER),病毒可以在用户每次登录系统时自动启动。

  • 特定时间或事件触发:如果使用计划任务,病毒可以在设定的时间段或间隔时间启动。此外,通过WMI事件订阅,恶意软件可以在系统检测到特定事件(如网络连接、磁盘挂载)时触发运行。

5. 如何规避事件日志?

事件日志是系统记录所有操作和异常的工具,能够帮助管理员溯源恶意行为。为避免被日志记录和分析,病毒通常会采取以下措施:

  • 禁用或清除日志:一些病毒会尝试禁用系统的事件日志服务,或者定期清除日志文件,防止管理员通过日志发现异常行为。

  • 伪装为系统进程:通过将自身伪装成常见的系统进程(如svchost.exe),病毒可以隐藏在正常的系统进程列表中,降低被发现的可能性。

  • 进程注入:病毒还可以将自身代码注入到合法进程中运行,通过使用系统进程来隐藏恶意行为,进一步逃避安全软件的检测。

  • 规避虚拟环境:一些高级恶意软件能够检测其是否处于虚拟机或沙盒环境中,如果发现自己被监控,恶意代码会延迟执行或不执行,从而规避自动化的安全分析工具。

驱动程序的潜在漏洞

除了自启动机制,驱动程序的漏洞也是病毒编写者的常用攻击手段之一。驱动程序是操作系统与硬件设备之间的桥梁,分为内核驱动和设备驱动两类。它们运行在系统的核心层,拥有极高的系统权限,这使得它们一旦被恶意利用,能够直接控制硬件设备和操作系统的核心功能。

  • 内核驱动漏洞:内核驱动程序能够直接访问系统的硬件资源和内存,任何未加防护的内核驱动都可能被攻击者利用,实现内核级别的漏洞攻击或提权。这类攻击能够绕过大部分的安全防护机制,因为它们直接控制了系统的核心。

  • 设备驱动漏洞:设备驱动程序负责与特定硬件(如显卡、网卡等)通信。攻击者可以通过逆向工程分析这些驱动程序的漏洞,进而开发针对特定设备的恶意代码。例如,在内网渗透中,攻击者可以利用未修补的驱动程序漏洞,提升权限或进行恶意操作。

  • 安全对抗与外挂保护:了解驱动程序的运行机制是病毒编写者和安全研究人员在安全对抗中的重要技术。例如,很多安全软件会使用内核驱动程序来保护系统,而攻击者可以通过开发特定的内核级漏洞攻击工具,绕过这些防护机制。


总结

操作系统安全是网络安全防护的基础,也是最复杂的一环,涉及内核漏洞、驱动程序等多层面技术。虽然这些技术对新手来说可能显得高深,但提前掌握相关知识有助于明确学习方向,逐步深入理解网络安全的核心原理。从注册表管理、防火墙控制,到自启动、计划任务和事件日志,每个组成部分都对系统安全有重要影响。对于安全人员而言,熟悉这些底层机制不仅是理解攻击技术的基础,也是有效防御的关键。通过持续学习这些核心技术,安全从业者能够更好地应对复杂网络攻击,确保系统稳定与安全。

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

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

相关文章

PDF.js的使用及其跨域问题解决

目录 一、PDF.js 简介 二、使用配置和步骤 1.引入PDF.js 2.加载PDF文件 3.渲染PDF页面 三、在Vue中使用PDF.js示例 1.安装PDF.js 2.在Vue组件中使用 四、在原生js中使用PDF.js示例 1.加载PDF文件并渲染页面 五、解决跨域问题 1.服务器配置 2.使用代理服务器 下面介…

编辑器、节点树、基础设置

目录 节点 查看当前节点拥有的属性 Position&#xff08; 父节点&#xff09; 保存 主场景 运行 编辑器操作 添加子节点 收藏节点 Sprite2D节点 控制节点是否可见 当父节点不可见&#xff0c;它的子节点也会不可见 基础编辑工具&#xff08;场景浏览器左上角&#x…

052_python基于Python高校岗位招聘和分析平台

目录 系统展示 开发背景 代码实现 项目案例 获取源码 博主介绍&#xff1a;CodeMentor毕业设计领航者、全网关注者30W群落&#xff0c;InfoQ特邀专栏作家、技术博客领航者、InfoQ新星培育计划导师、Web开发领域杰出贡献者&#xff0c;博客领航之星、开发者头条/腾讯云/AW…

Lesson10---list

Lesson10—list 第10章 c的list的使用和实现 文章目录 Lesson10---list前言一、list的初始化二、list的遍历1.迭代器2.范围for 三、list常用的内置函数1.sort&#xff08;慎用&#xff09;2.unique3.reverse4.merge5.splice 四、模拟实现1.基本框架2.构造函数3.push_back4. 遍…

PON架构(全光网络)

目前组网架构 世界上有一种最快的速度又是光&#xff0c;以前传统以太网络规划满足不了现在的需求。 有线网 无线网 全光网络方案 场景 全光网络分类 以太全光网络 PON&#xff08;Pas-sive-Optical Network 无源光网络&#xff09; 再典型的中大型高校网络中 推荐万兆入…

Java项目-基于springboot框架的原创歌曲分享系统项目实战(附源码+文档)

作者&#xff1a;计算机学长阿伟 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、ElementUI等&#xff0c;“文末源码”。 开发运行环境 开发语言&#xff1a;Java数据库&#xff1a;MySQL技术&#xff1a;SpringBoot、Vue、Mybaits Plus、ELementUI工具&#xff1a;IDEA/…

【功能安全】系统架构设计

目录 01 系统架构介绍 02 投票逻辑架构介绍 03 SIS架构 04 ADS域控制器架构设计 01 系统架构介绍 法规GBT 34590 Part4 part10定义的软件要求、设计和测试子阶段之间的关系&#xff08;其中的3-7个人建议翻译为初始架构设计更合理 &#xff09; 系统架构的作用&#xf…

工具:Typora自定义高效率主题

1 分享主题 工欲善其事必先利其器。分享一个文档编辑器主题。 1.1 特点 &#xff08;1&#xff09;大纲放在右侧、目录放在左侧&#xff0c;互不干扰 &#xff08;2&#xff09;标题颜色特殊处理 1.2 使用方式 打开Typora --> 文件 --> 偏好设置 --> 外观 -->…

给已经写好的裸机程序移植freeRTOS操作系统

接了公司一个项目&#xff0c;这是一个采用Dante模块把I2S数据通过网络交换机转发的音频控制器。包含两个串口配置。一开始以为使用裸机即可满足项目要求&#xff0c;实际上如果只有一个串口确实能满足要求了&#xff0c;现在发现Dante模块也需要串口通讯&#xff0c;2个串口同…

《Windows PE》6.4.2 远程注入DLL

实验四十七&#xff1a;远程注入DLL 写一个窗口程序&#xff0c;将一个dll通过远程注入的方法&#xff0c;注入到第三章的示例程序PEHeader.exe中&#xff0c;支持32位和64位PE。 ●dll.c /*------------------------------------------------------------------------FileNam…

记一次js泄露pass获取核心业务

文章目录 一、漏洞原因二、漏洞成果三、漏洞利用过程1.js泄露口令信息2、进入系统后台,管理数据库权限(22个)3、执行命令获取服务器权限4、通过添加扫描脚本,获取存活的内网信息四、免责声明一、漏洞原因 系统存在js泄露口令信息,获取系统超级管理员权限。系统为核心数据研…

ZYNQ AXI_GPIO_INT

REVIEW 软核AXI_GPIO之前已经简单学习过&#xff1a; AXI_GPIO_axi-gpio-CSDN博客 PS侧中断也简单调试过&#xff1a; ZYNQ PS_GPIO中断-CSDN博客 1. 今日摸鱼任务 简单实现AXI_GPIO中断&#xff1a; ps_key控制pl_led闪烁(MIO中断) pl_key控制ps_led闪烁(AXI_GPIO中断) …

js(深浅拷贝,节流防抖,this指向,改变this指向的方法)

一、深浅拷贝 1.基本数据类型和引用数据类型的区别&#xff1a; 1. 基本数据类型的变量存储的是值 引用数据类型的变量存储的是地址值 2. 基本数据类型的变量存储的值在栈内存 引用数据类型的变量存储的值在堆内存 3. 基本数据类型的变量存储的是值和值之间相互不影响 引用数据…

矩阵基础知识

矩阵定义 矩阵的定义 1.矩阵是由一组数按照矩形排列而成的数表。矩阵通常用大写字母表示&#xff0c;例如 AA、BB 等。矩阵中的每个数称为矩阵的元素或元。 一个 mn的矩阵 AA 可以表示为&#xff1a; 其中 aij表示矩阵 A中第i行第j列的元素。 矩阵的维度 1.矩阵的维度由它…

【多线程和高并发】多线程和高并发提纲

文章目录 多线程(多线程问题的)三大源头两个主要问题两大解决方案 高并发问题解决方案 对多线程和高并发相关问题整理了一个简单的提纲。 通过这个提纲&#xff0c;足够引出对并发编程中大部分问题的讨论~ 多线程 (多线程问题的)三大源头 线程并发执行带来的原子性问题。这是…

去梯之言:招聘行业运作的秘密——之找到一份工作

一、前言 招聘行业是一个水很深的行当。不过&#xff0c;尽管它很复杂&#xff0c;了解该行业的工作方式还是很重要的&#xff0c;这样你就可以在这片波涛汹涌的水域中平安航行&#xff0c;获得自己心仪的软件开发职位。反过来&#xff0c;如果你对这个波谲云诡的行业一无所知&…

接口测试(四)jmeter——文件上传

一、文件上传&#xff08;注&#xff1a;示例仅供参考模仿&#xff09; 1. 添加【HTTP信息头管理器】&#xff0c;配置【HTTP信息头管理器】如下&#xff1a; 2. 添加【HTTP请求默认值】&#xff0c;配置【HTTP请求默认值】如下&#xff1a; 3. 添加【HTTP请求】&#xff0…

window7虚拟机VMware与主机共享文件

文件管理器》计算机网络右键》属性》高级共享设置——全部启用 新建文件夹》右键》属性》共享》选择可以共享的用户——我这里选的是所有用户 点击高级共享》权限》保存设置——设置文件权限 文件管理器》计算机网络》右键》属性》————查看虚拟机计算机名称 主机访问 主机…

GIS常见前端开发框架

#1024程序员节&#xff5c;征文# 伴随GIS的发展&#xff0c;陆续出现了众多开源地图框架&#xff0c;这些地图框架与众多行业应用融合&#xff0c;极大地拓展了GIS的生命力&#xff0c;这里介绍几个常见的GIS前端开发框架&#xff0c;排名不分先后。 1.Leaflet https://leafl…

android 微信分享报:签名不对,请检查签名是否与开发平台签名一致的解决

1、微信分享会检查签名与开发平台的签名是否一致&#xff1a; 基本信息 | 微信开放文档 官方文档 下载签名工具&#xff0c;并且&#xff0c;将包名输入&#xff0c;然后点击生成&#xff0c;得到这个一串字符串。 2、到开发平台中&#xff1a;微信开放平台 登录&#xff0c;…