学习视频笔记均来自B站UP主" 泷羽sec",如涉及侵权马上删除文章
安全行业,包含了各种网络安全、网络技术,希望可以明白自己的渺小,知识的广博,要时时刻刻保持平等的心,技术的不断更新没有人会所有知识,了解很多分类组合有互相包含也属于正常,了解了大部分知识以后遇到问题就能够举一反三。
一·、编程语言
1.通用编程语言
后端语言通常用于处理服务器端的逻辑,如数据库操作、业务逻辑处理等。
例如,PHP可能会有反序列化漏洞、SQL注入漏洞、命令注入漏洞等问题。
强调了即使没有使用过所有后端语言,至少需要学习一种,以便理解和处理这些安全问题。
特别提到了请求走私可能涉及到协议问题,暗示了对网络协议的理解也是必要的。
前期最好学习:Python、PHP、Java
C语言: 一种通用的、面向过程的编程语言,广泛应用于系统软件和嵌入式开发,window逆向。 C++: 在C语言基础上发展而来,支持面向对象编程,常用于游戏开发、高性能计算等领域。 Java: 一种广泛使用的面向对象编程语言,具有跨平台性,应用于企业级应用开发等。 Python: 简洁易学,拥有丰富的库,适用于数据分析、人工智能、Web开发等。 JavaScript: 主要用于网页前端开发,也可用于服务器端开发(Node.js)。 C#: 由微软开发,主要用于Windows平台上的应用开发。 Ruby: 一种简洁而富有表现力的编程语言,常用于Web开发。 PHP: 主要用于Web开发,尤其适合服务器端脚本编程。 Go: 一种高效、简洁的编程语言,适用于网络编程和云计算等领域。 Swift: 苹果公司开发的编程语言,用于iOS和macOS应用开发。 Kotlin: 可与Java互操作,主要用于Android开发。
2.函数式编程语言
Haskell: 纯函数式编程语言,以强大的类型系统和数学上的严谨性著称。 Lisp: 包括Common Lisp、Scheme等,历史悠久的编程语言家族,以其高度的灵活性和宏系统闻名。 Clojure: 运行在Java虚拟机上的Lisp方言,结合了函数式编程和Java平台的优势。
3.数据科学和机器学习领域
R: 在统计分析和数据可视化方面应用广泛。 Julia: 设计用于高性能科学计算和数据分析。
4.Web全栈开发
TypeScript: 是JavaScript的超集,增加了静态类型检查等特性,提高了大型项目的开发效率。
5.移动开发
Objective-C: 曾经是iOS开发的主要语言,现在逐渐被Swift取代。
6.嵌入式系统开发
Assembly Language(汇编语言): 不同的处理器架构有不同的汇编语言,用于对硬件进行底层控制。
7.其他
Pascal: 曾经在教学和早期软件开发中有广泛应用。 Delphi: 基于Object Pascal,用于快速应用开发。 Scala: 融合了面向对象编程和函数式编程,运行在Java虚拟机上。 Elixir: 基于Erlang虚拟机,具有高并发和容错性,适合构建分布式系统。
二、编程语言的局限性
编写web程序时,后端可以使用多种语言,如PHP、Go、Lua、Java等。
选择编程语言应根据个人需求和项目要求,考虑语言的适用性和开发效率。
例如,C/C++虽然功能强大,但开发复杂度高,而PHP、Python等语言则更简单快捷。
三、软件和硬件设备的类型
1.软件程序的类型
Web程序: 通常包括后端和前端开发,后端可能使用Java,前端则使用JavaScript、PHP、CSS等技术。 二进制程序:渗透测试通常针对web程序,但二进制程序的应用大多数是逆向分析,这在渗透测试中涉猎不广泛,它们是不同的技术领域。 驱动程序:通常由二进制程序编写,属于软件范畴。在Windows系统中,以 .sys 为后缀的文件通常是驱动程序。 上位机:上位机是用于监控和控制下位机(如PLC、单片机)的计算机系统,通过通信接口实现数据 交换和指令传达。 脚本程序:包括多种语言编写的程序,如Lua、PHP、Java等。 操作系统:属于大型软件程序,虽然技术含量高,但本质上仍是软件。 裸板程序:直接在硬件如STM32单片机上编写的程序。不依赖操作系统,没有进程概念,需要自行模拟某些功能。 机器学习:通常使用Python编写,但也可以使用其他语言。本质上是程序,不应被表象迷惑。 量子计算:一种计算方式,不应被名称迷惑,理解其原理即可。 工控程序:工业控制程序,也是代码编写的程序。 bios程序:基本输入输出系统,也是代码编写的程序。
2.操作系统分类
非实时操作系统:如Windows、macOS、iOS、Linux。 实时操作系统:如VxWorks、RT-Thread。
实时与非实时操作系统的区别
非实时操作系统:用户操作后,系统可能不会立即响应,因为CPU可能在执行其他任务。
实时操作系统:要求系统能够及时响应外部事件,通常用于需要快速反应的场合。
3、网络通讯
网络通讯是现代技术中不可或缺的一部分,无论是什么设备或系统,都需要通过网络进行通
讯和联网。
4、硬件设备
计算机硬件
中央处理器(CPU): 负责执行指令和处理数据,是计算机的核心部件,其性能决定了计算机的运行速度。 内存: 用于存储正在运行的程序和数据,其容量和速度对计算机性能有显著影响。 硬盘: 用于长期存储数据,包括操作系统、应用程序和文件等,其容量和读写速度影响计算机性能。 显卡: 处理图形和图像数据,对游戏玩家和图形设计师尤为重要。 主板: 连接各种硬件设备,如CPU、内存、硬盘、显卡等,对计算机的稳定性和扩展性有重要影响。
网络硬件
网络服务器: 提供网络服务,如文件存储、电子邮件、Web服务等,具有高可靠性。 网络存储设备: 存储网络中的数据,如NAS和SAN,提供大容量和高可靠性的存储解决方案。 网络打印机: 通过网络连接被多台计算机共享,便于打印文件。 网络摄像头: 用于视频监控和远程会议,通过网络传输视频信号。
移动设备硬件
智能手机: 集成多种功能,如通信、拍照、娱乐、办公等,硬件包括处理器、内存、存储、屏幕、摄像头等。 平板电脑: 类似智能手机,但屏幕更大,适合阅读、浏览网页、观看视频等。 可穿戴设备: 如智能手表、智能手环等,监测用户健康和运动数据,与智能手机等设备连接和交互。
硬件发展趋势
小型化: 设备越来越小,便于携带和使用。 高性能: 性能不断提高,如CPU处理速度、内存和存储容量、显卡图形处理能力增强。 智能化: 设备越来越智能,能自动适应环境和用户需求。 互联互通: 设备间互联互通紧密,形成物联网,如智能家居和智能汽车的自动化控制和通信。
四、网络类型、安全
包括局域网(LAN)、城域网(MAN)和广域网(WAN)。此外,还涉及了网络协议、网络设备
和网络安全的基本概念。
1.网络类型
局域网 (LAN): 覆盖范围较小,通常在一个建筑物或校园内,用于员工之间共享文件和打印机等资源。 城域网 (MAN): 覆盖范围较大,一般在一个城市内,如城市的有线电视网络和宽带网络。 广域网 (WAN): 覆盖范围非常大,可以跨越国家和地区,如互联网,连接全球的计算机和网络设备。
2.网络协议
TCP/IP协议: 互联网的基础协议,TCP负责数据的可靠传输,IP负责数据的路由和寻址。 HTTP协议: 用于Web浏览器和Web服务器之间传输超文本数据,如网页、图片、视频等。 FTP协议: 用于在计算机之间传输文件。 SMTP、POP3和IMAP协议: 用于电子邮件的发送和接收。
3.网络设备
路由器: 连接不同的网络,实现网络之间的数据转发,根据IP地址和路由表确定数据传输路径。 交换机: 在局域网中连接多台计算机,实现数据的快速交换,根据MAC地址转发数据帧。 网卡: 安装在计算机上,用于连接网络,将计算机数据转换为网络信号进行传输。 无线接入点 (AP): 提供无线网络连接,使无线设备能够接入局域网或广域网。
4.网络安全
防火墙: 保护网络免受外部攻击,根据预设规则过滤网络流量。有硬件防火墙和软件防火墙 加密技术: 对数据进行加密,防止数据被窃取或篡改,如SSL/TLS协议用于Web浏览器和服务器间的加密通信。 身份认证: 确保只有授权用户能够访问网络资源,常见方式包括用户名和密码、数字证书、生物识别等。 软件程序: 通讯协议:包括TCP、IP、UDP等,用于不同网络层次的数据传输和通信。
五、人工智能
编程语言:Python
机器学习
1.工作流程
数据收集
来源: 数据可以从数据库、文件、传感器、网络等多种渠道获取。 类型: 数据包括结构化数据(如表格数据)、半结构化数据(如XML、JSON格式的数据)和非结构化数据(如文本、图像、音频等)。
数据预处理
数据清洗: 去除噪声数据、处理缺失值、纠正错误数据等。例如,使用均值填充或中位数填充处理缺失值。 数据归一化: 将数据特征值缩放到特定范围,提高算法性能和稳定性。常见的方法有最小-最大归一化、Z-score标准化等。 特征提取: 从原始数据中提取有用特征,以便机器学习算法更好地处理和理解数据。例如,在图像识别中提取颜色、纹理、形状等特征。
模型选择与训练
根据任务类型和数据特点选择合适的机器学习算法。例如,分类问题可选择决策树、支持向量机等;回归问题可选择线性回归、随机森林等。 将预处理后的数据分为训练集和测试集,训练集用于训练模型,测试集用于评估模型性能。 使用训练集对模型进行训练,调整模型参数以最小化训练集上的损失函数。
模型评估与优化
使用测试集对训练好的模型进行评估,常用的评估指标包括准确率、精确率、召回率、F1值、均方误差等。 根据评估结果优化模型,可调整模型参数、更换算法、增加数据量等。例如,若模型准确率低,可增加训练数据量或调整超参数。
模型应用
将优化后的模型应用于实际问题,进行预测、分类、聚类等任务。 对模型应用结果进行监控和评估,不断改进模型以提高性能。
2.深度学习基本原理
神经元模型
深度学习的基础是人工神经网络,灵感来源于生物神经系统。 神经网络中的基本单元是神经元,它接收多个输入信号,对这些信号进行加权求和,然后通过一个激活函数处理得到输出。 例如,典型的神经元接收来自其他神经元或输入层的数据,每个输入都有一个对应的权重。假设输入为 ( x ),对应的权重为 (w),则神经元的加权输入总和为 ( \sum x_i w_i ),其中 ( b ) 是偏置项。然后,通过激活函数 ( f ) 得到神经元的输出。
多层神经网络
深度学习中的神经网络通常由多个层次组成,包括输入层、隐藏层和输出层。 输入层接收原始数据,隐藏层对数据进行多层次的特征提取和变换,输出层产生最终的预测结果。 例如,在图像识别任务中,输入层接收图像的像素值,隐藏层逐步提取图像的边缘、纹理、形状等特征,最后输出层给出图像所属的类别。
六、什么是软件程序代码
软件程序是一种用于计算机和其他可编程设备的计算机程序。我们通常所说的代码,就是软件程序的核心组成部分。无论是网页设计、网站开发还是软件开发,其本质都是由代码构成的。不同的专业名词,如软件工程,其实都是指代码的不同应用领域。 代码的本质是完成特定功能。例如,鉴权中间件和跨域中间件,它们的核心功能都是由代码实现的。理解这些中间件的本质,有助于我们不被复杂的专业名词所迷惑。 无论使用哪种编程语言,只要能够告诉计算机要执行的任务,就可以编写出程序。代码最终会被转换成二进制形式,供计算机的硬件理解和执行。程序的作用就是向计算机传达我们的指令,比如发送一个数据包。 无论是网页设计、前端开发、后端开发还是底层逻辑,它们都是由代码构成的。 我们不需要刻意区分这些领域,而应该选择最快捷、最实用的编程语言来完成任务。例如,如果Python能够满足需求,就没有必要使用C++。简单的编程语言往往更实用,因为它们都能让计算机完成相同的任务,我们不应该将事情复杂化。
七、web程序
1.Web程序的基本构成
Web程序通常由以下几个部分组成:
前端:用户界面部分,通过URL向服务器发送请求。
后端:服务器端逻辑,处理前端请求并执行相应的操作,如用户登录。
数据库:存储数据的地方,后端会调用数据库中的数据来处理请求。
服务器:存放数据库和运行后端程序的硬件设备。
2.工作流程
用户通过前端(如浏览器)输入URL,发送请求到后端。
后端接收到请求后,根据请求的类型(例如登录请求),调用数据库中的数据。
数据库存储在服务器上,后端通过服务器访问数据库。
后端处理完请求后,将结果返回给前端,前端展示给用户。
3.安全性
Web安全入门课程会进一步讲解这些内容,强调了理解这些基本概念的重要性。
HTML:提到了点击劫持(Clickjacking)的问题,这是一种安全漏洞,攻击者可以利用它来诱导用户在不知情的情况下与网页进行交互。
CSS:虽然CSS主要用于样式设计,但也存在注入问题。有时会被误认为是跨站脚本攻击(XSS),尤其是对于新手来说。
JavaScript:涉及多种安全问题,包括:
XSS(跨站脚本攻击):分为DOM型、反射型和存储型。
点击劫持:与HTML中的点击劫持类似,是另一种诱导用户进行非自愿操作的攻击手段。
请求走私(Request Smuggling):一种攻击技术,可以导致服务器解析请求时出现混淆,从而执行恶意代码。
文中强调了保持谦逊和持续学习的重要性,指出即使掌握了这些语言,仍然有很多知识需要学
习,特别是在Web安全领域。如果不理解这些语言,就不可能掌握XSS、点击劫持、Web缓存漏
洞、请求走私和跨域等安全问题。因此,要进行Web渗透测试和安全防护,必须学习这些知识。
八、代码库
1.代码库的概念和用途
代码库是将常用的代码片段、功能或组件封装起来,以便在不同的项目中方便地调用和重用。这样做可以节省开发时间,提高代码的可维护性和可重用性。
2.常见的代码库
jQuery:一个快速、小巧且功能丰富的JavaScript库。它简化了HTML文档遍历、事件处理、动画和Ajax交互。
Bootstrap:一个流行的前端框架,用于开发响应式和预制的前端项目。它提供了预设计的
组件和预设的CSS预处理器。
Element UI:一个基于Vue.js的桌面端组件库,用于快速搭建企业级的前端界面。
总结:代码库通过封装常用的功能,使得开发者可以避免重复编写相同的代码,从而提高开发效率。通过使用这些库,开发者可以更快地构建出功能丰富且美观的Web应用。
九、框架
提到了几种流行的JavaScript框架:Vue、React和Angular。
强调了所有框架最终都是基于HTML、CSS和JavaScript这三种基本语言构建的。
指出如果仅从纯粹的JavaScript角度去分析安全问题(如XSS)会非常耗时,通常通过使用框架来分析这些问题。
提到存在许多框架,但了解它们的基本功能就足够了。
十、漏洞存在地方
1.前端潜在漏洞
信息泄露:敏感信息未经适当保护而被泄露。 XSS(跨站脚本攻击):攻击者在网页中注入恶意脚本。 CSRF(跨站请求伪造):攻击者诱使用户在已认证的会话中执行非自愿的操作。 点击劫持:攻击者通过透明层或窗口欺骗用户点击。 访问控制:未正确实施的权限检查导致未授权访问。 Web缓存漏洞:浏览器或服务器缓存敏感信息。 跨域漏洞:不同域之间的安全限制被绕过。 请求走私:攻击者利用HTTP请求的解析差异进行攻击。
2.后端潜在漏洞
信息泄露:同前端,但通常涉及服务器端的数据。 XSS:虽然主要影响前端,但后端也需防范反射型XSS。 CSRF:同前端,但后端需要实施适当的防御措施。 SSRF(服务器端请求伪造):攻击者利用服务器端应用程序发起恶意请求。 反序列化漏洞:不当的反序列化操作导致安全问题。 SQL注入漏洞:攻击者通过注入恶意SQL代码来操纵数据库。 命令注入漏洞:攻击者通过注入恶意命令来执行未授权的操作。 服务端模板注入:攻击者通过注入模板代码来执行恶意操作。 跨域漏洞:同前端,但后端需要正确设置CORS策略。 访问控制:同前端,但后端需要确保适当的权限检查。
十一、数据库
1数据库的分类
数据库可以分为两大类: 1. 关系型数据库:这类数据库使用表格来存储数据,表格之间通过关系来关联。常见的关系型数据库包括: MySQL SQL Server Access PostgreSQL 2. 非关系型数据库:这类数据库不使用表格模型,而是使用其他数据模型,如键值对、文档、宽列存储或图形数据库。常见的非关系型数据库包括: MongoDB CouchDB Neo4j Redis
2.数据库的潜在漏洞
提到了数据库可能存在的潜在漏洞,如SQL注入、XSS(跨站脚本攻击)、命令注入等。
3.学习数据库的重要性
强调了在想要学习SQL注入等安全问题之前,需要对数据库有一定的了解。
比喻说,如果你想学SQL注入而不知道数据库是什么,就好比想当警察而不知道枪是什么。
十二、服务程序(中间件)
1.常见的服务器程序
Apache:一种广泛使用的Web服务器软件。 Nginx:一种高性能的HTTP和反向代理服务器。 IIS(Internet Information Services):微软的Web服务器产品。 Tengine:由淘宝网发起的Web服务器项目,Nginx的分支。 Tomcat:由Apache软件基金会开发的Servlet容器。 WebLogic:由Oracle公司开发的Java应用服务器。
2.潜在漏洞
服务器程序可能存在的潜在漏洞包括: 信息泄露 文件上传漏洞 文件解析漏洞 目录遍历 访问控制问题
十二、Web程序
强调了Web程序的复杂性,指出前端语言虽然只有三种(HTML、CSS、JavaScript),但后端语言和框架非常多。 提到学习Web安全需要了解多种后端语言,如Java、PHP、Python等,因为每种语言都可能存在反序列化漏洞。 强调了理解Web程序的基本概念对于学习Web安全至关重要。 总结:懂进攻,知防守:了解攻击手段和防御策略是学习Web安全的基础。
十三、脚本语言
列出了一些常见的脚本语言,包括Lua、PHP、Go、Python和JavaScript。
解释了脚本语言的特性,即它们的源代码通常是可见的,可复制性高,例如通过浏览器的开发者工具(F12)可以查看前端代码。
1.脚本语言的安全性
讨论了脚本语言在安全性方面的一些考虑,特别是它们可以被用来编写恶意软件,如病毒和木马。 提到了一些具体的恶意软件示例,如beefxss(用JavaScript编写的木马)和PHP一句话木马。
2.编写恶意软件的要求
强调了在编写任何恶意软件之前,需要有扎实的编程基础和对语言的基本语法、库的调用有深入的了解。 比喻说,就像学会了英语不一定能写好作文一样,学会了编程语言也不一定能编写恶意软件,还需要了解病毒的原理和构成。
总结
编写恶意软件需要对编程语言有深入的理解,并且需要了解病毒的工作原理。
如果连基本的编程语言都不会,就无法理解和编写恶意软件。
十四、宏病毒(Macro Virus)
宏病毒是一种恶意软件,可以通过在Office文档中嵌入宏(即小型程序)来传播。
文中提到,可以使用如Metasploit这样的工具生成宏病毒,并将其植入Office文件中,如Microsoft Word。
强调了宏病毒通常针对微软的产品,而不是其他办公软件,如WPS。
1.编写宏病毒的要求
编写宏病毒需要了解宏的代码构成,即病毒是由代码构成的。
宏代码通常是用特定的编程语言编写的,如VB(Visual Basic)或C#(C Sharp)。
总结:
了解宏的代码构成和使用的编程语言对于编写宏病毒至关重要。
宏病毒的编写和理解需要对相关编程语言有一定的知识。
十五、批处理文件(bat)和PowerShell
Windows系统中的两个脚本工具:批处理文件(bat)和PowerShell,以及它们在内网渗透中的作用。
1.批处理文件(bat)和PowerShell
这两个工具都是微软开发的,用于Windows操作系统。 它们的主要作用是用于内网渗透,即在组织的内部网络中进行安全测试和攻击模拟。
十六.内网渗透
内网渗透不仅仅是指域渗透,域渗透只是内网渗透的一部分。 内网渗透和公网渗透的主要区别在于内网渗透涉及到域的控制和利用。
1.学习要求
为了理解内网渗透的概念和方法,需要对批处理文件和PowerShell有一定的了解。 学习者应该具备基础的编程知识,如VB(Visual Basic)语法,以便能够理解和应用在内网渗透中使用的技术。
总结:批处理文件和PowerShell是内网渗透中常用的工具,了解它们对于进行有效的内网渗透至关重要。内网渗透是一个广泛的概念,包括但不限于域渗透,学习者需要全面了解相关概念和技术。
十七、脚本病毒:CAD LISP和AutoLISP
两种脚本病毒:CAD LISP和AutoLISP,以及它们的特点和潜在危害。
1.CAD LISP(脚本病毒)
CAD软件中使用的LISP脚本可以自动化完成一些工作,但也可能被用来编写恶意脚本病毒。 许多使用CAD的用户可能不熟悉脚本,可能会无意中使用含有病毒的脚本,导致中毒。 由于许多杀毒软件不支持检测这类脚本病毒,因此它们可能不会被查杀。 这种病毒的危害包括盗取CAD机密图纸。 要理解和防范这种病毒,需要了解LISP语言,其语法与C或C++等主流编程语言不同。
2.AutoLISP(脚本病毒)
AutoLISP是另一种不常见的脚本语言,通常用于CAD软件。 由于这种语言不常见,主流杀毒软件对其查杀能力较弱,使得用这种语言编写的病毒更难被检测和清除。
总结:
脚本病毒可以利用不常见的编程语言编写,这使得它们难以被主流杀毒软件检测。 了解这些脚本语言对于防范和理解这类病毒至关重要。 类似的脚本病毒还有很多,无法一一列举。
十八、BIOS病毒
BIOS病毒的概念以及编写这类病毒所需的技能。
1.BIOS病毒
BIOS病毒是一种恶意软件,它感染计算机的BIOS(基本输入输出系统),这是计算机启动时最先运行的软件。 编写BIOS病毒需要对BIOS程序有深入的了解和编程能力。
2.技能要求
文中提到,如果想要编写BIOS病毒,首先需要具备编写相关程序的能力。 作为类比,文中提到了内网渗透的技能要求,即需要掌握批处理文件(bat)和PowerShell脚本的编写。
总结:
编写BIOS病毒或进行内网渗透都需要特定的技术知识和编程技能。 掌握这些技能是进行高级网络安全操作的前提。
十九、操作系统
学习操作系统的基本操作,有助于后渗透更好的进行,比如windows操作系统,假设你懂了,当你进入内网的时候起码就掌握了内网渗透中的域渗透。而懂得windows的一些特定操作机制就可以继续往深处了解逆向分析,就是说会了这个技术就可以分析潜在的问题点,潜在的漏洞点,潜在的安全问题,那么就可以学习域渗透和逆向分析这两个模块了。
操作系统里有很多功能比如: 注册表、防火墙、自启动、计划任务、事件日志、内核驱动、系统服务、进程线程、系统编程等等 其中注册表Linux是没有的,只有Windows有,Linux操作系统一直使用单独的文本文件来存放配置信息。 也就是说:Linux是以整个文件系统作为“注册表”,Windows注册表的树形结构,可以粗略的对应Linux文件系统的树形结构。 Linux的配置文件就相当于注册表的键,或者说Linux采用是的分布式的注册表。 windons下有很多这种机制的问题。 比如说一个病毒,它添加自启动功能,在哪里添加?有多少种方式添加?能否通过计划任务添加自启动?什么时候启动病毒?能否规避事件?创建注册表? 想要去往高级红队的内网渗透,逆向工程,病毒编写去学习,就需要懂得以上这些操作系统的底层逻辑和机制
操作系统组成部分详解
1.注册表
注册表是 windows 系统中具有层次结构的核心数据库,储存的数据对windows 和Windows上运行的应用程序和服务至关重要。 注册表时帮助windows控制硬件、软件、用户环境和windows界面的一套数据文件。 WIN+R 输入—> “regedit”或“regedit.exe”、“regedt32”或“regedt32.exe” —>回车打开 如果以上方法均不能打开数据库,那么说明没有管理员权限,或者注册表被锁定,百度寻找答案。
注册表的结构:
注册表中,所有的数据都是通过一种树状结构以键和子键的方式组织起来的,就像磁盘文件系统的目录结构一样。每个键包含一组特定的信息,每个键的键名都是和它所包含的信息相关联的。注册表的根键共有5个,且全为大写。
键值由三部分组成:名称、类型、数据。 键值类型由常用的6种组成: 字符串值(REG_SZ) 二进制值(REG_BINARY) 32位值(4个字节)(REG_DWORD) 64位值(5个字节)(REG_QWORD) 多字符串值(REG_MULTI_SZ) 可扩充字符串值(REG_EXPAND_SZ)
注册表其中存放着各种参数,直接控制着Windows的启动、硬件驱动程序的装载以及一些Windows应用程序的运行,从而在整个Windows系统中起着核心作用。
2.防火墙
网络防火墙是一种用来加强网络之间访问控制的特殊网络互联设备。计算机流入流出的所有网络通信均要经过此防火墙。防火墙对流经它的网络通信进行扫描,这样能够过滤掉一些攻击,以免其在目标计算机上被执行。防火墙还可以关闭不使用的端口。而且它还能禁止特定端口的流出通信,封锁木马。最后,它可以禁止来自特殊站点的访问,从而防止来自不明入侵者的所有通信。 防火墙作为内部网与外部网之间的一种访问控制设备, 常常安装在内部网和外部网交界点上。防火墙具有很好的网络安全保护作用。入侵者必须首先穿越防火墙的安全防线,才能接触目标计算机。 防火墙的基本操作包括访问控制列表、状态过滤、数据包检测等方法来检查和过滤数据包 操作命令: Linux:https://www.cnblogs.com/xyh9039/p/18361890 windows有图形化的,但是微软官方也提供了命令操作指南:https://learn.microsoft.com/zh-cn/windows/security/operating-system-security/network-security/windows-firewall/configure-with-command-line?tabs=powershell
防火墙虽然是保护网络安全的基础性设施,但是它还存在着一些不易防范的安全威胁。 首先防火墙不能防范未经过防火墙或绕过防火墙的攻击。例如,如果允许从受保护的网络内部向外拨号,一些用户就可能形成与Internet 的直接连接。 防火墙基于数据包包头信息的检测阻断方式,主要对主机提供或请求的服务进行访问控制,无法阻断通过开放端口流入的有害流量。
3.自启动
自启动程序是指在开机引导过后,系统会按照设定自己在后台启动服务的程序,目的是提前加载完成,提升使用体验。 我们可以利用的分别是: 注册表自启动 快速启动目录 计划任务 系统服务 操作包含的内容太多给连接自行访问 windows:https://blog.csdn.net/qq_39715000/article/details/125780841 linux:https://blog.csdn.net/hualinger/article/details/125321966
自启动在日常活动中可以帮助用户在日常操作中更加方便,而方便了我们在后渗透的过程中实现权限维持。
4.计划任务
利用计划任务功能,可以将任何命令、脚本、程序或文档安排在某个最方便的时间运行。 操作命令: windows:https://blog.csdn.net/d1240673769/article/details/121087720 linux:https://blog.csdn.net/qq_29864051/article/details/131395769
计划任务也可以方便我们在后渗透的过程中实现权限维持,而且还有很多骚操作比如定时关闭杀毒程序远程下载木马执行。
5.事件日志
事件日志记录在系统的执行中发生的事件,以便提供可用于理解系统的活动和诊断问题的跟踪。 它们对理解复杂系统的活动至关重要,特别是在用户交互较少的应用程序中。 它还可以用于组合来自多个源的日志文件条目。 这种方法与统计分析相结合,可以产生不同服务器上看起来不相关的事件之间的相关性。 日志包括不限于:应用程序日志、系统日志、安全日志 windows可以WIN+R打开运行框,运行 eventvwr.msc 命令,打开事件查看器查看日志 linux的日志一般保存在/var/log/目录下
事件日志相当于一个人一直在写日记记录了几乎所有的操作记录,在蓝队方面可以溯源攻击者的进入方式、执行了什么操作,所以红队往往需要针对日志进行痕迹清理。
6.内核驱动
内核驱动,也称为内核模块或设备驱动,是一段可以加载到操作系统内核中的代码,通常用于管理硬件设备和提供操作系统与硬件之间的接口。 这些驱动为操作系统提供了与硬件设备进行交互的能力,使得操作系统能够识别、管理和控制硬件设备。 核驱动在操作系统中起着至关重要的作用,主要有以下几个原因: 硬件抽象:不同的硬件设备有不同的接口和通信协议。内核驱动为操作系统和应用程序提供一个统一的接口,使得操作系统和应用程序能够与硬件设备进行交互。 硬件兼容性:由于硬件设备的多样性和不断更新换代,驱动可以提供必要的转换和兼容性层,以确保操作系统能够正确地与各种硬件设备通信。 性能优化:内核驱动可以直接与硬件进行交互,从而提高了数据传输和处理的效率。 安全性:内核驱动可以确保对硬件设备的访问是安全的,可以防止恶意软件或未经授权的用户直接访问硬件设备。
简单来说,我们可以吧内核驱动看作是操作系统与硬件设备之间的桥梁,有了它,操作系统才能够识别、管理和控制硬件设备,从而实现计算机系统的正常运行。
7.系统服务
(1)启动、停止、暂停、恢复或禁用远程和本地计算机服务; (2)管理本地和远程计算机上的服务; (3)设置服务失败时的故障恢复操作; (4)为特定的硬件配置文件启用或禁用服务; (5)查看每个服务的状态和描述。
那么是否也可以暂停杀毒软件,启动我们的木马呢
8.进程线程
进程是运行时程序的封装,是系统资源调度和分配的基本单位,实现了操作系统的并发性。 线程是进程的子任务,是CPU调度的基本单位,用来保证程序的实时性,实现进程内部的并发性。
简单来讲,有一份搬砖的工作,进程就是开始搬砖而线程就是有多少个人搬砖,关闭一个线程就是有一个牛马不干活了,关闭进程就是停止搬砖。在python爬虫领域有个概念,启动一个脚本相当于创建一个进程,如果你设置了多线程就会有多个爬虫,来爬目标网站提高效率,数量和线程数是相对应的。
9.系统编程
系统编程,指的是开发那些直接与计算机硬件或操作系统进行交互的程序。 这些程序负责管理和控制计算机系统的资源,包括但不限于进程、内存、文件系统和设备驱动。 确保为应用程序提供一个稳定、高效的运行环境。 系统编程的学习之路困难重重。一方面,它需要我们了解基本的编程技术,特别是C语言编程技术;另一方面,它还需要我们了解操作系统的底层技术知识。
我并不懂这个,简单来讲就是系统编程允许我们访问低级系统资源,如内存、进程和文件。这使您可以更好地控制应用程序与操作系统的交互方式,并可以提高性能和效率。
我们可以通过系统调用与操作系统交互,系统调用是一种允许我们执行诸如创建进程、管理文件干好事。
二十、驱动程序
驱动程序也是软件程序的一种,只不过可能大家没有编写过
替在漏洞:内网渗透,逆向工程,病毒分析,安全对抗,外挂保护 比如腾讯的外挂保护,你怎么去绕过外挂保护?可能就需要用到驱动底层逻辑去和他对抗,也就是说你要搞,内网渗透,逆向工程,病毒分析,安全对抗,外挂保护,就必须对驱动程序有所了解。 web和这个可能不相关,但是我们眼光放长远点,不要坐井观天,不做井底之蛙。尤其是木马免杀中的安全对抗,不学驱动程序没法搞。 驱动程序的类型: 1.内核驱动 2.设备驱动
驱动程序主要就是用来操控硬件和操作系统内核的,你们可能没有看过windows内核 因为他是exe程序,总的来说操作系统就是一个软件而已,驱动程序也是一个软件但是驱动程序运行在底层,当学习到后期红高选择学习方向的时候可以,去了解驱动程序的底层原理来和那些防护软件做安全对抗。
总结:
先会各种编程语言,后利用渗透技术,完成渗透
懂进攻,后防守