安全见闻(2)
前面我们把web程序那些全部科普了一遍,有很多的软件类型对吧,有脚本的二进制的,其他程序,web程序等等,总之你要理解它的本质,我们要用一串一串的英文代码,或者中文,比如易语言,写出来的,要告诉计算机,我们要干什么,这就是所谓的程序。所以你不要把它搞混淆,不要被一个高大上的名字所迷惑,再高大上的程序名字底层逻辑也是代码组成的。
今天看一看操作系统和驱动程序
前面我说过这两个也可以称为软件程序的一种,很多程序都是杂糅在一块的,你中有我我中有你,这就是这个世界的本质,并不是说非黑即白,其实程序搞多了就会觉得很多东西都是类似的。
操作系统
学了它能够掌握什么一个安全的技能,比如你知道了这个操作系统,比如Windows操作系统吧,假设你懂了,你起码就掌握了内网渗透域渗透,比如你懂了Windows的一些操作机制你就懂逆向分析了,就是说你学会了这个技术你会分析潜在的问题点,潜在的漏洞点,潜在的安全问题,那就可以搞逆向分析,和内网渗透了。
但是注意了,你学了操作系统你可以搞web渗透吗?那肯定是搞不了的,因为它两不搭边没用的,那么操作系统我们要了解一些什么东西呢,他的构成特别复杂,东西太多了,但是呢我们普通安全人员,也不是说普通安全人员,就是搞安全的,不可能所有东西都懂,他懂一个常规的大概的就可以了,那有人问了如果我以后遇见非常规的怎么办,那我们就以后在慢慢研究,先把常规的弄懂了再说,操作系统这块需要自己去了解了解,为了给后期内网渗透做铺垫。
注册表(在Linux里没有)
那么Linux中有没有类似的呢是有的,Windows才有(注册表)
防火墙
前面我们粗略的说过,防火墙有软件防火墙与硬件防火墙,今天,我们细致的了解一下,防火墙是什么。
防火墙(Firewall)是一种网络安全设备,根据预定的安全策略监视、过滤和控制传入和传出网络的流量,保护一个网络区域免受来自另一个网络区域的网络攻击和网络入侵行为。
这里的防火墙不是指建筑领域用来隔离火源的那一堵墙,也不是指Windows等操作系统里内置的Windows防火墙,更不是“FQ”中的墙,而是指网络防火墙,可以是硬件、软件、软件即服务(SaaS)等形式。
防火墙作为网络部署中安全防护的第一道防线,可灵活应用于网络边界、子网隔离等位置,具体如企业网络出口、大型网络内部子网隔离、数据中心边界等等。
基于防火墙的实现技术手段划分,防火墙主要可以分为如下几种类型。
根据设备形态划分,防火墙又可分为硬件防火墙、软件防火墙和云防火墙:
硬件防火墙:最常见的防火墙形态,是一个单独的硬件,这些独立设备有自己的资源。硬件防火墙再按照形态来细化,还可以分为框式防火墙、盒式防火墙和桌面式防火墙、插板形态的防火墙等。
软件防火墙:以软件形式安装在计算机或服务器上的防火墙,它既可以作为基于主机的防火墙来保护单个设备,也可以作为虚拟化环境中的网络防火墙来保护整个虚拟网络。把防火墙的处理放到虚拟机的环境下,让一台虚拟机变为防火墙,这类防火墙也就虚拟机防火墙,有时候也叫VM防火墙、虚拟防火墙。
云防火墙:部署在云服务提供商环境中的防火墙服务,然后通过服务订阅的方式提供给客户。这些服务也称为防火墙即服务(FWaaS),以基础设施即服务(IaaS)或平台即服务(PaaS)的形式运行。
尽管虚拟防火墙和云防火墙与硬件防火墙在形态上有差异,但它们的核心功能是一样的。
自启动
在Windows操作系统中,主要有2个文件夹和8个注册表键项控制程序的自启动。
两个文件夹
用户专用启动文件夹——系统盘:\Dcoument and Setting<用户名称>\开始\程序\启动。
所有用户启动文件夹——系统盘:\Dcoument and Setting\ALL USER\开始\程序\启动。
八个注册表项
LOAD注册键:[HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows\load]
USERINIT注册键:[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Userinit]
EXPLORER\RUN注册键: [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\Run]
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer\Run]
RUNSERVICESONVE注册键:[HKEY_CURRENT_USER\Softvvare\Mcrosoft\Windows\CurrentVersion\RunServicesOnce]
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunServicesOnce]
RUNSERVICES注册键:[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunServices]
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunServices]
RUNONCE\STEUP注册键:[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce\Setup]
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce\Setup]
RUNONCE注册键:[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce]
[HEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce]
RUN注册键:[HKEY_CURRENT_USER\Softvvare\Microsoft\Windows\CurrentVersion\Run]
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]
计划任务
The Task Scheduler enables you to automatically perform routine tasks on a chosen computer. 任务计划程序通过监视你选择的任何条件 (称为触发器) ,然后在满足这些条件时执行任务来执行此操作。
可以使用任务计划程序执行的任务的一些示例包括:启动应用程序;发送电子邮件;或显示消息框。 可以计划执行任务以响应以下触发器:
发生特定系统事件时。
在特定时间。
在每日计划的特定时间。
按周计划在特定时间。
在每月计划的特定时间。
在每月一周计划的特定时间。
当计算机进入空闲状态时。
注册任务时。
启动系统时。
用户登录时。
当终端服务器会话更改状态时。
API 信息
任务计划程序以以下形式提供 API:
任务计划程序 2.0:分别为 C++ 和脚本开发提供接口和对象。
任务计划程序 1.0:仅为 C++ 开发提供接口。
运行时要求
任务计划程序需要以下操作系统:
任务计划程序 2.0:客户端需要 Windows Vista 或更高版本。 服务器需要 Windows Server 2008 或更高版本。
任务计划程序 1.0:客户端需要 Windows Vista 或 Windows XP。 服务器需要 Windows Server 2008 或 Windows Server 2003。
事件日志
许多应用程序在专有错误日志中记录错误和事件,每个日志都有自己的格式和用户界面。 来自不同应用程序的数据无法轻松合并到一个完整的报表中,这要求系统管理员或支持代表检查各种源来诊断问题。
事件日志记录为 (的应用程序和操作系统) 记录重要软件和硬件事件提供了一种标准的集中式方法。 事件日志记录服务记录来自各种源的事件,并将其存储在名为 事件日志的单个集合中。 事件查看器使你能够查看日志;编程接口还可用于检查日志。
注:事件日志 API 专为在 Windows Server 2003、Windows XP 或 Windows 2000 操作系统上运行的应用程序而设计。 在 Windows Vista 中,事件日志记录基础结构已重新设计。 设计为在 Windows Vista 或更高版本操作系统上运行的应用程序应使用 Windows 事件日志 来记录事件。
内核驱动
内核模式组件
编写 WDM 驱动程序和 WDM 简介提供了使用 Windows 驱动模型 (WDM) 编写驱动程序时所需的信息。
设备对象和“设备对象和设备堆栈”中的其他主题介绍操作系统如何通过设备对象来表示设备。
Windows 驱动程序的内存管理说明了内核模式驱动程序如何分配内存,用于存储内部数据、在 I/O 操作期间缓冲数据以及与其他内核模式和用户模式组件共享内存等目的。
控制设备访问的安全性和设备对象 SDDL 的特权可确保驱动程序尽可能安全。
处理 IRP 介绍内核模式驱动程序如何处理 I/O 请求数据包 (IRP)。
DMA 直接内存访问 (DMA) 是驱动程序开发的一个重要方面,本节点中的各主题涵盖了从 A 到 Z 的 DMA。
控制器对象表示包含附加设备的物理设备控制器。
中断服务例程 (ISR) 为接收中断的物理设备的驱动程序处理中断。
消息信号中断通过将值写入特定内存地址来触发中断。
延迟的过程调用(DPC 对象)可从 ISR 排队,并稍后以比 ISR 更低的 IRQL 执行。
即插即用 (PnP) 侧重于针对 PnP 的系统软件支持以及驱动程序如何使用该支持来实现 PnP。
电源管理介绍了一种为系统和设备电源管理提供全面方法的体系结构。
Windows Management Instrumentation (WMI) 是内核模式驱动程序的扩展,使你的驱动程序能够成为一个 WMI 提供程序。 WMI 提供程序使度量和检测数据可用于 WMI 使用者,如用户模式应用程序。
驱动程序编程技术;在 Windows 内核模式下对驱动程序进行编程所需的技术有时与普通用户模式编程所需的技术有很大不同。
系统服务
Microsoft Windows 服务(过去称为 NT 服务)允许用户创建可在其自身的 Windows 会话中长时间运行的可执行应用程序。 这些服务可在计算机启动时自动启动,可以暂停和重启,并且不显示任何用户界面。 这些功能使服务非常适合在服务器上使用,或者需要长时间运行的功能(不会影响在同一台计算机上工作的其他用户)的情况。 还可以在与登录用户或默认计算机帐户不同的特定用户帐户的安全性上下文中运行服务。 有关服务和 Windows 会话的详细信息,请参阅 Windows SDK 文档。
可以通过创建作为服务安装的应用程序来轻松创建服务。 例如,假设你想监视性能计数器数据并对阈值作出响应。 可以编写一个侦听性能计数器数据的 Windows 服务应用程序,部署该应用程序并开始收集和分析数据。
可以将服务创建为 Microsoft Visual Studio 项目,并在其中定义代码,以控制可以将哪些命令发送到服务以及在收到这些命令时应采取的操作。 可以发送到服务的命令包括启动、暂停、恢复和停止服务,还可以执行自定义命令。
在创建和生成应用程序之后,可以通过运行命令行实用程序 InstallUtil.exe 并将该路径传递给服务的可执行文件来安装它。 然后,可以使用服务控制管理器 来启动、停止、暂停、恢复和配置服务。 还可以在“服务器资源管理器”的“服务”节点中或使用 ServiceController 类完成许多相同的任务。
进程线程
进程是虚拟内存空间、代码、数据和系统资源的集合。 线程是在进程中串行执行的代码。 处理器执行线程,而不是进程,因此每个应用程序至少有一个进程,并且一个进程始终至少有一个执行线程,称为主线程。 除了主线程之外,进程还可以有多个线程。
进程通过消息相互通信,使用 Microsoft 的远程过程调用 (RPC) 技术相互传递信息。 对于调用方而言,远程计算机上的进程调用与同一计算机上的另一个进程调用之间没有区别。
线程开始执行时会一直持续到终止,或者直到被优先级较高的线程中断(由用户操作或内核的线程计划程序中断)。 每个线程可以运行单独的代码片段,或者多个线程可以执行相同的代码片段。 执行同一代码块的线程维护单独的堆栈。 进程中的每个线程共享该进程的全局变量和资源。
线程计划程序根据进程的优先级类属性和线程的基本优先级的组合来确定执行线程的时间和频率。 通过调用 SetPriorityClass 函数来设置进程的优先级类属性,并通过调用 SetThreadPriority 来设置线程的基本优先级。
多线程应用程序必须避免两个线程问题:死锁和争用。 当每个线程等待另一个线程执行某些操作时,将发生死锁。 COM 调用控件有助于防止对象之间的调用发生死锁。 当一个线程先于所依赖的另一个线程完成,导致前者因后者尚未提供有效的值而使用未初始化的值时,会出现争用情况。 COM 提供一些专为帮助避免进程外服务器中的争用情况而设计的函数。
系统编程
系统编程(System Programming)通常指的是编写与操作系统、设备驱动程序、系统工具、网络协议栈、文件系统等底层系统组件交互的程序。这类编程通常需要深入理解计算机体系结构、操作系统内部机制、硬件与软件的交互等。
操作系统接口
系统调用(System Calls):是用户态程序请求内核态服务的一种机制,如文件操作、进程管理、内存管理等。
设备驱动程序接口(Device Driver Interfaces):用于与硬件设备通信的接口。
内存管理
虚拟内存(Virtual Memory):允许程序在比物理内存更大的地址空间中运行。
内存映射文件(Memory-Mapped Files):将文件或文件的一部分映射到进程的地址空间中,允许像操作内存一样操作文件。
进程和线程
进程管理(Process Management):创建、调度、终止进程等。
线程管理(Thread Management):在进程内部创建、同步、终止线程等。
并发与并行(Concurrency and Parallelism):利用多核处理器提高性能。
文件和网络I/O
文件操作(File Operations):打开、读取、写入、关闭文件等。
网络编程(Network Programming):使用套接字(Sockets)进行网络通信,实现TCP/IP协议栈等。
系统工具
编译器(Compilers):将高级语言源代码转换为机器语言。
调试器(Debuggers):用于调试程序,检查程序执行时的状态。
性能分析工具(Profiling Tools):分析程序性能瓶颈,优化代码。
系统安全
访问控制(Access Control):管理用户对系统资源的访问权限。
加密技术(Cryptography):保护数据传输和存储的安全性。
系统调用和内核编程
编写和修改内核模块,以扩展操作系统功能。
理解系统调用的实现和工作原理。
硬件接口
编写设备驱动程序,使操作系统能够与硬件设备进行通信。
使用硬件抽象层(HAL)来简化硬件的访问和管理。
跨平台编程
使用POSIX等标准来实现跨操作系统的兼容性。
使用跨平台框架和库(如Qt、wxWidgets等)来编写跨平台的图形用户界面(GUI)应用程序。
实时系统编程
实时操作系统(RTOS)编程,用于需要快速响应和确定性的系统(如嵌入式系统)。
实时任务调度和同步机制。
以上这些都是操作系统中常规的一些东西,Linux,Windows,macos各有各的特点,但是他们基本该有的东西都是会有的,比如说自启动所有的操作系统都是有的,没有这种东西是没办法运行的。
Windows下有很多这种机制的问题,比如说一个病毒,它添加自启动功能,在哪里添加?有多少种方式添加?能否通过计划任务添加自启动?什么时候启动病毒?能否规避事件?
这些是不是我们应该懂的应该去了解的,也就是说你学了操作系统起码你可以为,内网渗透,逆向工程,病毒编写打好基础?
如果你只搞web渗透(初级)
那你可以不去了解 但是想成为红队这些东西必须了解。
驱动程序(了解即可)
驱动程序也是软件程序的一种,只不过可能大家没有编写过。
潜在漏洞:内网渗透,逆向工程,病毒分析,安全对抗,外挂保护(比如腾讯的外挂保护,你怎么去绕过外挂保护?可能就需要用到驱动底层逻辑去和他对抗)。
也就是说你要搞,内网渗透,逆向工程,病毒分析,安全对抗,外挂保护,就必须对驱动程序有所了解,当然你说我不搞,那么也可以不去学,尤其是对抗,你不学驱动程序你没法搞,你又不会分析,bug什么都不会用,那你怎么去分析别人是怎么防御的呢。
当然web和这个可能不相关,但是我们眼光放长远点,不要坐井观天,不做井底之蛙。
内核驱动, 设备驱动
驱动主要是干嘛的,主要是操控硬件,和操作,操作系统内核的,你们可能没有看过windows内核 因为他是exe程序,总的来说操作系统就是一个软件而已,驱动程序也是一个软件,只不过这个软件运行的比较底层,这就不能展开说了,展开说那就太多太多了,涉及到了很多底层的原理。
接下来给大家说一下人工智能,我们知道我们的安全或者这个技术,首先一个程序不安全,你得先有相对的技术,如果没有web开发,那哪来的web安全呢,所以它们是相辅相成的,懂进攻,知防守。先正向后逆向。
人工智能简介
人工智能(Artificial Intelligence,简称AI)是指让计算机模拟人类智能的技术和科学。它旨在使计算机系统能够执行通常需要人类智能才能完成的任务,如学习、推理、解决问题、理解自然语言、识别图像和语音等。
人工智能的发展可以追溯到上世纪50年代,经过几十年的研究和发展,如今已经在许多领域取得了重大突破和广泛应用。例如:
医疗领域:辅助医生进行疾病诊断、医学影像分析、药物研发等。 金融领域:风险评估、欺诈检测、智能投资顾问等。 交通领域:自动驾驶汽车、交通流量预测和优化等。 客户服务:智能聊天机器人可以快速回答客户的问题,提高服务效率。 图像识别和语音处理:人脸识别、语音助手等技术已经深入人们的日常生活。
人工智能涉及的网络安全问题
数据安全问题:
人工智能系统通常需要大量的数据进行训练。这些数据可能包含敏感信息,如个人身份信息、财务数据等。如果这些数据在收集、存储、传输或使用过程中没有得到妥善保护,就可能被泄露、窃取或滥用。
对抗攻击:
攻击者可能会通过攻击数据存储系统、网络传输通道或利用人工智能算法的漏洞来获取数据。
对抗攻击是指通过对输入数据进行微小的修改,使得人工智能系统产生错误的输出。例如,在图像识别中,通过在图像上添加一些人眼难以察觉的噪声,可以使人工智能系统错误地识别图像。
对抗攻击可能会对安全关键领域的人工智能系统造成严重威胁,如自动驾驶汽车、人脸识别系统等。
模型窃取和知识产权问题:
攻击者可以通过逆向工程等手段窃取人工智能模型的参数和结构,从而复制或改进该模型。这不仅会侵犯知识产权,还可能导致商业机密泄露。
此外,攻击者还可以利用窃取的模型进行恶意攻击,如生成虚假数据来欺骗其他人工智能系统。
恶意使用人工智能:
攻击者可以利用人工智能技术来发动更复杂、更难以检测的网络攻击。例如,使用人工智能生成的恶意软件可以自动适应不同的环境和防御机制,提高攻击的成功率。
人工智能还可以被用于自动化的网络钓鱼、垃圾邮件发送等恶意活动。
人工智能学习路径和方法
学习基础知识:
掌握数学基础知识,如线性代数、概率论、统计学等。这些知识对于理解人工智能算法和模型非常重要。
学习编程语言,如Python。Python是人工智能领域最常用的编程语言之一,有丰富的库和工具可供使用。
了解机器学习和深度学习的基本概念,包括监督学习、无监督学习、神经网络等。
在线课程和教程:
利用在线学习平台,如Coursera、Udemy、edX等,参加人工智能相关的课程。这些课程通常由知名大学或专业机构提供,内容丰富,教学质量高。
阅读相关的书籍和博客,如《深度学习》《机器学习实战》等书籍,以及一些知名的人工智能博客,如Medium上的人工智能专栏。
实践项目:
参与开源项目或自己动手实践人工智能项目。可以从一些简单的项目开始,如手写数字识别、图像分类等,逐渐提高难度。
参加人工智能竞赛,如Kaggle上的各种竞赛。这些竞赛可以让你接触到真实的数据集和问题,提高你的实践能力和竞争力。
持续学习和交流:
关注人工智能领域的最新研究和技术趋势,可以通过阅读学术论文、参加学术会议、关注行业新闻等方式实现。
加入人工智能社区或论坛,与其他学习者和专业人士交流经验、分享知识、解决问题。
总之,学习人工智能需要掌握扎实的基础知识,通过实践项目不断提高自己的能力,并持续关注领域的最新发展。同时,也要关注人工智能带来的网络安全问题,加强安全意识和防范措施。