0


安全见闻4(泷羽sec)

声明

学习视频来自B站UP主 泷羽sec,如涉及侵泷羽sec权马上删除文章。

笔记只是方便各位师傅学习知识,以下网站只涉及学习内容,其他的都与本人无关,切莫逾越法律红线,否则后果自负

这节课旨在扩大自己在网络安全方面的知识面,了解网络安全领域的见闻,了解学习哪些知识对于我们渗透测试有帮助,避免盲目地学习降低效率。

———————————————————————————————————————————

前言

上节课我们把web程序那些全部科普讲了一遍,有很多的软件类型对吧,有脚本的二进制的,其他程序,web程序等等,反正你要理解它的本质,我们要用一串一串的英文代码,或者中文比如易语言,写出来的,要告诉计算机,我们要干什么,这就是所调的程序,所以不要把它搞混淆,不要被一个高大上的名字所迷惑,再高大上的程序名字底层逻辑也是代码组成的。

今天看一看操作系统和驱动程序

前面说过这两个也可以称为软件程序的一种,很多程序都是杂糅在一块的,你中有我我中有你,这就是这个世界的本质,并不是说非黑印白,其实程序搞多了就会觉得很多东内都是类似的。

操作系统

学了它能够掌握什么样一个安全的技能,比如你知道了这个操作系统,比如Windows操作系统吧,假没你懂了,你起码就掌握了内网渗透域渗透,比如你懂了windows的一些操作机制你就懂逆向分析了,就是说你会了这个技术你会分析潜在的问题点,潜在的漏洞点,潜在的安全问题,那就可以搞逆向分析,和内网渗透了

但是注意了你学了操作系统你可以搞web渗透吗?

那肯定是搞不了的,因为它两不搭边没用的,那么操作系统我们要了解一些什么乐西呢,他的构成特别复杂,东西太多了,但是呢我们普通安全人员,也不是说普通安全人员,就是搞安全的,不可能所有东西都懂,他懂一个常规的大概的就可以了,那有人问了如果我以后遇见非常规的怎么办,那我们就以后在慢慢研究,先把常规的弄懂了再说,操作系统这块你们要自己去了解了解,是给后期内网渗透做铺垫。

注册表(在linux里没有)

那么Linux中有没有类似的呢是有的, windows才有(注册表)

以上这些都是操作系统中常规的一些东西, linux, Windows,macos各有各的特点,但是他们基本该有的东西都是会有的,比如说自启动,所有的操作系统都是有的,没有这种东西是没办法运行的。

Windows下有很多这种机制的问题,比如说一个病毒,它添加自启动功能,在哪里添加?有多少种方式添加?能否通过计划任务添加自启动?什么时候启动病毒?能否规避事件?

这些是不是我们应该懂的应该去了解的,也就是说你学了操作系统起码你可以为,内网渗透,逆向工程,病毒编写打好基础?

如果你只搞web渗透(初级)

那你可以不去了解 但是想成为红队这些东西必须了解

驱动程序(了解即可)

驱动程序也是软件程序的一种,只不过可能大家没有编写过。

潜在漏洞:内网渗透,逆向工程,病毒分析,安全对抗,外挂保护(比如腾讯的外挂保护,你怎么去绕过外挂保护?可能就需要用到驱动底层逻辑去和他对抗)

也就是说你要搞,内网渗透,逆向工程,病毒分析,安全对抗,外挂保护,就必须对驱动程序有所了解,当然你说我不搞,那么也可以不去学,尤其是对抗,你不学驱动程序你没法搞,你又不会分析,bug什么都不会用,那你怎么去分析别人是怎么防御的呢

当然web和这个可能不相关,但是我们眼光放长远点,不要坐井观天,不做井底之蛙

内核驱动

设备驱动

驱动主要是操控硬件,和操作系统内核的,你们可能没有看过windows内核因为他是exe程序,总的来说操作系统就是一个软件而已,驱动程序也是一个软件,只不过这个软件运行的比较底层,这就不能展开说了,展开说那就太多太多了,涉及到了很多底层的原理。

操作系统

1.注册表

注册表是Windows操作系统中的一个重要的数据库,用于存储有关系统配置、应用程序设置和用户首选项的信息。它包含了关于硬件设备、操作系统参数、文件关联、软件设置等的详细信息。注册表对于确保计算机正常运行至关重要,因为许多程序在安装或运行时都会向注册表中写入数据。

注册表结构

注册表由多个“键”(Keys)组成,每个键可以包含子键(Subkeys)和值(Values)。键类似于文件夹,而值则类似于文件夹中的文件,它们存储了具体的配置信息。例如,HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion 是一个键,其中可能包含有关当前版本的Windows操作系统的各种设置。

主要根键

  1. HKEY_CLASSES_ROOT (HKCR): 包含了所有已注册的文件类型、OLE对象和ActiveX控件的信息。
  2. HKEY_CURRENT_USER (HKCU): 存储当前登录用户的特定设置,如桌面背景、屏幕保护程序等。
  3. HKEY_LOCAL_MACHINE (HKLM): 包含了影响整个系统的配置信息,如硬件驱动程序、操作系统设置等。
  4. HKEY_USERS (HKU): 包含了所有用户账户的默认设置以及当前登录用户的具体设置。
  5. HKEY_CURRENT_CONFIG (HKCC): 包含了当前硬件配置文件的设置,这些设置决定了系统启动时使用的硬件配置。

编辑注册表

修改注册表需要谨慎,错误的操作可能导致系统不稳定甚至无法启动。通常,可以通过以下方式编辑注册表:

1.使用注册表编辑器:

按 Win + R 键打开“运行”对话框。

输入 regedit 并按回车键,这将打开注册表编辑器。

在注册表编辑器中浏览到需要修改的键或值,然后进行相应的更改。

2.通过命令行:

可以使用 reg 命令来添加、删除或修改注册表项。例如,reg add 命令可以用来添加新的键或值。

安全与备份

由于注册表对系统的重要性,在修改之前建议先创建一个系统还原点或备份注册表,以便出现问题时能够恢复。在注册表编辑器中,可以选择导出当前的注册表项作为备份。

2.防火墙

防火墙是一种网络安全系统,用于监控和控制进出网络流量,根据预定的安全规则来阻止或允许数据包通过。防火墙的主要目的是保护网络免受未授权访问,同时允许合法通信顺利进行。防火墙可以是硬件设备、软件应用程序,或者是两者的结合。

防火墙的类型

1.包过滤防火墙:

这是最基本类型的防火墙,它检查每个通过的数据包,并根据预定义的规则(如源地址、目的地址、端口号等)决定是否允许其通过。

包过滤防火墙简单且高效,但缺乏复杂的决策能力。

2.状态检测防火墙:

这种防火墙不仅检查数据包的基本信息,还跟踪连接的状态,确保只有属于已建立连接的数据包才能通过。

状态检测防火墙提供了更高的安全性,因为它可以防止某些类型的攻击,如SYN洪水攻击。

3.应用网关防火墙:

也称为代理防火墙,这种防火墙充当客户端和服务器之间的中间人,所有流量都必须通过防火墙,从而隐藏内部网络的真实结构。

应用网关防火墙可以对应用层协议(如HTTP、FTP)进行更细粒度的控制,提供高级的安全功能。

4.下一代防火墙 (NGFW):

NGFW 结合了传统防火墙的功能,并增加了入侵防御系统 (IPS)、反病毒、反恶意软件、URL过滤等功能。

NGFW 能够识别和管理基于应用的威胁,提供全面的网络安全保护。

防火墙的主要功能

  1. 访问控制:根据预设规则允许或拒绝特定类型的流量。
  2. 日志记录:记录通过防火墙的所有流量,以便进行审计和分析。
  3. 入侵检测和预防:检测并阻止潜在的攻击行为。
  4. 应用控制:管理特定应用程序的流量,防止未经授权的应用程序使用网络资源。
  5. 身份验证:验证用户身份,确保只有授权用户可以访问网络资源。
  6. 带宽管理:限制某些类型流量的带宽使用,优化网络性能。

3.自启动

在计算机启动过程中,有些程序会自动启动,这被称为“自启动”或“开机启动”。这些程序可以在用户登录时或系统启动时自动运行,它们可以是系统服务、应用程序或用户指定的实用工具。合理管理自启动程序有助于提高系统性能和安全性。

Windows 操作系统
1.启动文件夹:
  • 对于当前用户:C:\Users\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
  • 对于所有用户:C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup
2.注册表:

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run

3.任务计划程序:

通过任务计划程序可以设置程序在特定时间或事件触发时启动。

4.服务:

通过“服务”管理器可以查看和管理系统服务,这些服务通常在系统启动时自动运行。

5.组策略:

企业环境中,管理员可以通过组策略来控制自启动程序。

4.计划任务

计划任务是一种在特定时间或事件触发时自动执行程序或脚本的功能。在不同的操作系统中,计划任务的管理和配置方法有所不同。以下是 Windows、macOS 和 Linux 中计划任务的详细介绍和管理方法。

Windows 操作系统

使用任务计划程序

1.打开任务计划程序:
  • 按 Win + S 打开搜索栏,输入“任务计划程序”并按回车键。
  • 或者,通过控制面板打开任务计划程序:控制面板 > 系统和安全 > 管理工具 > 任务计划程序。
2.创建基本任务:
  • 在任务计划程序窗口中,点击右侧的“创建基本任务...”。
  • 按照向导的提示填写任务名称、描述、触发器(何时运行任务)、操作(要执行的操作,如启动程序、发送电子邮件等)。
3.创建高级任务:
  • 在任务计划程序窗口中,点击右侧的“创建任务...”。
  • 在“常规”选项卡中,填写任务名称和描述。
  • 在“触发器”选项卡中,设置任务的触发条件。
  • 在“操作”选项卡中,设置任务要执行的操作。
  • 在“条件”和“设置”选项卡中,可以设置更多高级选项,如仅在有电源时运行任务等。
4.管理现有任务:
  • 在任务计划程序库中,可以看到所有已创建的任务。
  • 右键点击任务,可以选择启用、禁用、运行、停止或删除任务。

使用命令行

使用 schtasks 命令:

  • 打开命令提示符或 PowerShell。
  • 创建任务:schtasks /create /tn "任务名称" /tr "程序路径" /sc daily /st 12:00
  • 删除任务:schtasks /delete /tn "任务名称"
  • 查询任务:schtasks /query

5.事件日志

事件日志是操作系统和应用程序记录的重要信息,用于追踪系统活动、诊断问题和进行安全审计。通过事件日志,管理员和用户可以了解系统中的各种事件,包括成功和失败的操作、系统错误、安全事件等。以下是不同操作系统中事件日志的管理和查看方法。

Windows 操作系统

使用事件查看器

1.打开事件查看器:

按 Win + S 打开搜索栏,输入“事件查看器”并按回车键。

或者,通过控制面板打开事件查看器:控制面板 > 系统和安全 > 管理工具 > 事件查看器。

2.导航和查看日志:
  • 在事件查看器窗口中,可以看到左侧的导航树,主要分为“Windows 日志”和“应用程序和服务日志”。
  • “Windows 日志”包括以下几种日志:
  1. 应用程序:记录应用程序相关的事件。
  2. 安全:记录安全相关的事件,如登录尝试、文件访问等。
  3. 系统:记录系统组件和驱动程序的事件。
  4. 设置:记录系统设置的变化。
  5. 转发事件:记录从其他计算机转发来的事件。
  • “应用程序和服务日志”包括各个应用程序和服务的日志。
3.查看和筛选事件:
  • 双击某个日志,可以看到该日志中的所有事件。
  • 可以使用筛选器来查找特定类型的事件,例如按事件级别(信息、警告、错误)或事件ID进行筛选。
  • 右键点击某个事件,可以选择“查看技术详细信息”来获取更多详细信息。
4.导出日志:

右键点击某个日志或事件,选择“另存为”或“导出日志文件”,可以将日志保存为 .evtx 文件。

使用命令行

1.使用 wevtutil 命令:
  • 打开命令提示符或 PowerShell。
  • 查询日志:wevtutil qe Application /f:text
  • 导出日志:wevtutil epl Application C:\path\to\log.evtx
2.使用 Get-WinEvent 命令:
  • 打开 PowerShell。
  • 查询日志:Get-WinEvent -LogName Application
  • 过滤特定事件:Get-WinEvent -LogName Application | Where-Object { $_.LevelDisplayName -eq 'Error' }

6.内核驱动

内核驱动程序(简称驱动程序)是操作系统内核的一部分,负责管理和控制硬件设备或提供底层服务。驱动程序使操作系统能够与硬件设备进行通信,执行诸如读取、写入、配置和控制硬件的操作。在不同的操作系统中,内核驱动程序的开发和管理方法有所不同。以下是关于内核驱动程序的一些基本信息和常见操作系统的相关知识。

内核驱动程序的作用

  1. 硬件抽象:驱动程序提供了一个抽象层,使得操作系统和应用程序可以以统一的方式访问不同的硬件设备,而不必关心具体的硬件实现细节。
  2. 设备控制:驱动程序负责初始化、配置和管理硬件设备,处理设备的中断请求,执行数据传输等操作。
  3. 性能优化:驱动程序可以直接访问硬件,因此可以进行高效的性能优化,减少数据传输延迟。
  4. 安全性和稳定性:驱动程序运行在内核模式下,对系统的稳定性和安全性有直接影响,因此编写高质量的驱动程序非常重要。

常见操作系统的内核驱动程序

Windows 操作系统
1.驱动程序模型:
  • WDM (Windows Driver Model):适用于 Windows 98 及以后的版本,提供了一套通用的驱动程序接口。
  • KMDF (Kernel-Mode Driver Framework) 和 UMDF (User-Mode Driver Framework):简化了驱动程序的开发,分别用于内核模式和用户模式驱动程序。
  • WDF (Windows Driver Foundation):结合了 KMDF 和 UMDF,提供了一套更现代的驱动程序框架。
2.开发工具:
  • Visual Studio:配合 Windows Driver Kit (WDK) 使用,提供了一个完整的开发环境。
  • WDK (Windows Driver Kit):包含编译工具、调试工具、文档和示例代码。
3.调试工具:
  • WinDbg:强大的内核调试工具,支持本地和远程调试。
  • Driver Verifier:用于检测驱动程序的错误和潜在问题。
4.驱动程序签名:
  • 为了保证系统的安全性和稳定性,Windows 要求驱动程序必须经过数字签名。开发人员可以通过 Microsoft 的硬件开发者中心提交驱动程序进行签名。

7.系统服务

系统服务(System Services)是操作系统中的一类后台进程,它们通常在系统启动时自动运行,并在后台持续运行以提供特定的功能或服务。系统服务可以管理硬件设备、提供网络服务、执行定期任务等。不同的操作系统有不同的管理和配置系统服务的方法。以下是 Windows、macOS 和 Linux 中系统服务的管理和配置方法。

Windows 操作系统

使用服务管理器

1.打开服务管理器:
  • 按 Win + R 打开“运行”对话框,输入 services.msc 并按回车键。
  • 或者,通过控制面板打开服务管理器:控制面板 > 系统和安全 > 管理工具 > 服务。
2.查看和管理服务:
  • 在服务管理器窗口中,可以看到所有已安装的服务及其状态(正在运行、已停止、手动启动等)。
  • 右键点击某个服务,可以选择“启动”、“停止”、“重启”或“属性”来管理服务。
  • 在“属性”窗口中,可以设置服务的启动类型(自动、手动、禁用)和其他配置选项。

使用命令行

1.使用 sc 命令:
  • 打开命令提示符或 PowerShell。
  • 查询服务状态:sc query
  • 启动服务:sc start
  • 停止服务:sc stop
  • 设置启动类型:sc config start= auto|demand|disabled
2.使用 net 命令:
  • 启动服务:net start
  • 停止服务:net stop

8.进程线程

进程和线程是操作系统中两个非常重要的概念,它们是程序执行的基本单位。理解进程和线程的概念、区别和管理方法对于开发和维护高效、可靠的软件系统至关重要。以下是对进程和线程的详细介绍。

进程 (Process)

定义

进程是操作系统进行资源分配和调度的基本单位,是程序的一次执行过程。每个进程都有独立的地址空间、内存、数据栈和执行代码。

特点
  1. 独立性:每个进程都有自己独立的地址空间,进程之间不能直接访问对方的内存。
  2. 资源拥有:进程拥有自己的资源,如内存、文件句柄、I/O 设备等。
  3. 并发性:多个进程可以同时运行,实现并发执行。
  4. 通信机制:进程之间可以通过进程间通信(IPC)机制进行通信,如管道、消息队列、共享内存、信号量等。
生命周期

进程的生命周期包括以下几个阶段:

  1. 新建:进程被创建。
  2. 就绪:进程准备好运行,等待 CPU 时间。
  3. 运行:进程正在执行。
  4. 阻塞:进程因某种原因(如等待 I/O 操作完成)暂时停止运行。
  5. 终止:进程执行完毕或被终止。

线程 (Thread)

定义

线程是进程内的一个执行单元,是 CPU 调度和分派的基本单位。一个进程可以包含多个线程,这些线程共享进程的资源,如内存和文件句柄。

特点
  1. 轻量级:线程比进程轻量,创建和切换的开销较小。
  2. 共享资源:同一进程中的线程共享进程的资源,如内存、文件句柄等。
  3. 并发性:多个线程可以并发执行,提高程序的响应速度和效率。
  4. 通信机制:线程之间的通信相对简单,可以直接访问共享数据。
生命周期

线程的生命周期包括以下几个阶段:

  1. 新建:线程被创建。
  2. 就绪:线程准备好运行,等待 CPU 时间。
  3. 运行:线程正在执行。
  4. 阻塞:线程因某种原因(如等待 I/O 操作完成)暂时停止运行。
  5. 终止:线程执行完毕或被终止。

进程与线程的区别

1.资源分配:
  • 进程:每个进程有独立的地址空间和资源。
  • 线程:同一进程中的线程共享进程的资源。
2.通信:
  • 进程:进程间通信需要使用 IPC 机制。
  • 线程:线程间通信可以直接访问共享数据。
3.调度:
  • 进程:CPU 调度的基本单位是进程。
  • 线程:CPU 调度的基本单位是线程。
4.开销:
  • 进程:创建和切换进程的开销较大。
  • 线程:创建和切换线程的开销较小。

编程语言支持

  1. C/C++:
  • 进程:使用 fork() 创建进程。
  • 线程:使用 pthread 库创建和管理线程。
  1. Python:
  • 进程:使用 multiprocessing 模块。
  • 线程:使用 threading 模块。
  1. Java:
  • 进程:使用 ProcessBuilder 类。
  • 线程:使用 Thread 类或 Runnable 接口。

注意事项

  • 同步和互斥:多线程编程中需要注意同步和互斥问题,避免数据竞争和死锁。
  • 资源管理:合理管理进程和线程的资源,避免资源泄露。
  • 性能优化:根据实际需求选择合适的并发模型,提高程序的性能和响应速度。

9.系統编程

系统编程是指编写与操作系统紧密相关的程序,这些程序通常涉及底层系统调用、硬件交互、文件系统操作、网络通信等。系统编程的目标是实现高性能、高可靠性和高效率的系统级功能。以下是系统编程的一些关键概念和技术,以及在不同操作系统中的实现方法。

关键概念

  1. 系统调用:系统调用是应用程序与操作系统内核之间的接口,用于执行特权操作,如文件操作、进程管理、内存管理等。
  2. 进程和线程:如前所述,进程和线程是程序执行的基本单位,系统编程中经常需要管理它们。
  3. 内存管理:包括内存分配、释放、虚拟内存管理等。
  4. 文件系统:文件系统的操作,如文件的创建、读写、删除等。
  5. 网络编程:网络通信,包括套接字编程、协议实现等。
  6. 并发编程:多线程和多进程编程,同步和互斥机制。
  7. 信号处理:处理操作系统发送的信号,如中断、异常等。

常用编程语言

  1. C/C++:C 和 C++ 是系统编程中最常用的编程语言,因为它们提供了对底层硬件的直接访问和高效的性能。
  2. Rust:Rust 是一种现代的系统编程语言,强调安全性和并发性。
  3. Go:Go 语言在系统编程中也越来越受欢迎,特别是其简洁的语法和强大的并发支持。

常见工具和库

  1. C/C++:
  • POSIX 标准:提供了一套跨平台的系统调用和库函数。
  • GLibC:GNU C 库,提供了丰富的系统调用和函数。
  • Boost:C++ 库集合,提供了许多高级功能,如线程、文件系统、网络等。
  1. Rust:
  • std::fs:文件系统操作。
  • std::net:网络编程。
  • tokio:异步编程库,支持异步 I/O 和并发。
  1. Go:
  • os:操作系统相关的函数。
  • net:网络编程。
  • sync:同步原语,如互斥锁、条件变量等。

注意事项

  1. 错误处理:系统编程中经常需要处理各种错误情况,确保程序的健壮性。
  2. 资源管理:合理管理资源,如文件描述符、内存等,避免资源泄漏。
  3. 性能优化:优化算法和数据结构,减少系统调用的次数,提高程序的性能。
  4. 安全性:注意安全问题,避免缓冲区溢出、注入攻击等安全漏洞。
标签: 安全

本文转载自: https://blog.csdn.net/m0_68984471/article/details/143392737
版权归原作者 无情啦少 所有, 如有侵权,请联系我们删除。

“安全见闻4(泷羽sec)”的评论:

还没有评论