声明
学习视频来自B站UP主 泷羽sec,如涉及侵泷羽sec权马上删除文章
笔记的只是方便各位师傅学习知识,以下网站只涉及学习内容,其他的都与本人无关,切莫逾越法律红线,否则后果自负
这节课旨在扩大自己在网络安全方面的知识面,了解网络安全领域的见闻,了解学习哪些知识对于我们渗透测试有帮助,避免盲目地学习降低效率。
编程语言
Python:学习红队渗透首推学python,python简单易上手,可以方便写poc或者自制工具。
JavaScript:用于网页前端和服务器端(Node.js)开发,学习渗透这个也要学习。
PHP:用于web开发,有更进一步的精力这门语言也要学习,后期的白盒审计用到的会比较多。
C语言:一种通用的、面向过程的编程语言,广泛应用于系统软件和嵌入式开发。可以用于编程入门。
C++:在 C 语言基础上发展而来,支持面向对象编程,常用于游戏开发、高性能计算等领域,但比较复杂。
Java:一种广泛使用的面向对象编程语言,具有跨平台性,应用于企业级应用开发等。
C#:由微软开发,主要用于 Windows 平台上的应用开发。
Ruby:一种简洁而富有表现力的编程语言,常用于 Web 开发。
Go:一种高效、简洁的编程语言,适用于网络编程和云计算等领域。
Swift:苹果公司开发的编程语言,用于 iOS 和 macOS 应用开发。学习渗透不仅要学习web端的,还要学习app方向的知识,当web端找不到漏洞时可以通过app来进行测试。
Kotlin:可与 Java 互操作,主要用于 Android 开发。
函数式编程语言
Haskell:纯函数式编程语言,以强大的类型系统和数学上的严谨性著称。
Lisp(包括 Common Lisp、Scheme 等):历史悠久的编程语言家族,以其高度的灵活性和宏系统闻名。
Clojure:运行在 Java 虚拟机上的 Lisp 方言,结合了函数式编程和 Java 平台的优势。
数据科学和机器学习领域
R:在统计分析和数据可视化方面应用广泛。
Julia:设计用于高性能科学计算和数据分析。
Web 全栈开发
TypeScript:是 JavaScript 的超集,增加了静态类型检查等特性,提高了大型项目的开发效率。
移动开发
Objective-C:曾经是 iOS 开发的主要语言,现在逐渐被 Swift 取代。
嵌入式系统开发
Assembly Language(汇编语言):不同的处理器架构有不同的汇编语言,用于对硬件进行底层控制。
其他语言
Pascal:曾经在教学和早期软件开发中有广泛应用。
Delphi(基于 Object Pascal):用于快速应用开发。
Scala:融合了面向对象编程和函数式编程,运行在 Java 虚拟机上。
Elixir:基于 Erlang 虚拟机,具有高并发和容错性,适合构建分布式系统。
总结:人的精力有限,选择合适的语言才是最主要的
软件程序
Web程序:渗透本身具有局限性,学习渗透主要就是对Web网站的入侵,要是换了非Web程序载体就会无能为力,所以其他的软件程序我们也要有所了解。
二进制程序:主要用于逆向分析,渗透对这方面涉猎不深。
驱动程序:本质也是一种二进制程序,windows中的sys后缀的文件就属于驱动程序范围。
上位机:通常指的是在自动化控制系统中,用于监控和控制下位机(通常是嵌入式系统或者是PLC等)的计算机系统,暂时不用了解。
脚本程序:是一种使用特定描述性语言编写的可执行文件,通常以纯文本形式保存,例如lua,php,java等。
操作系统:本质属于技术含量很高的软件程序,可以当成一个很大的软件。
裸板程序:指在没有操作系统的情况下,直接在硬件层面上运行的程序,没有操作系统的概念也没有进程的概念。像搞web渗透二进制等都是基于操作系统去执行,离开操作系统就什么也做不了。
机器学习:一般用python或者go去编写,归根到底也是一种程序。
bios程序:由编程语言编写,是一组固化到计算机内主板上一个ROM芯片上的程序,它保存着计算机最重要的基本输入输出的程序、开机后自检程序和系统自启动程序。
量子计算:量子计算不仅包含0和1,还包含0和1同时存在的叠加态,这使得量子计算具有更大的计算空间和更高的并行度。只用了解就行。
工控程序:即工业控制程序,主要用于工业自动化和控制系统中,如PLC,SCADA等,只用了解就行。
总结:本质都是代码写的程序,只是换个名字显得高大上,该程序可能只是由其他几种程序结合出来的,只要学会那几种便可以掌握。
操作系统
.ios/ .mac/ .linux/ .android/ .Windows/ .wince/ .vxworks/ .RT-Thread
Windows、macOS、iOS 和、Linux这些常见的操作系统是非实时操作系统,vxworks,RT-Thread,wince这些是实时操作系统。实时操作系统的设计和实现目标是为了满足特定任务的时间约束,具有严格的时间确定性和可预测性,常用于对时间要求极为严格的嵌入式系统、工业控制等领域;非实时操作系统则更注重整体的功能和用户体验。例如在非实时操作系统中系统并不会立马执行我们的命令,它会先执行其他的后执行我们的命令。
网络通讯
无论什么都离不开网络通讯联网
硬件设备
计算机硬件:中央处理器,硬盘,显卡
网络硬件:网络服务器,网络存储设备,网络打印机(是个出其不意的渗透方向),网络摄像头(可用于进行ddos攻击)
移动设备硬件:智能手机,平板电脑,可穿戴设备
硬件发展趋势:小型化(体积越小性能越强),智能化(自适应用户需求),互联互通(即物联网)
网络协议
TCP/IP 协议:是互联网的基础协议,包括传输控制协议(TCP)和网际协议(IP)。TCP 负责数据的可靠传输,IP 负责数据的路由和寻址。
HTTP 协议:超文本传输协议,用于在 Web 浏览器和 Web 服务器之间传输超文本数据,如网页、图片、视频等。
FTP 协议:文件传输协议,用于在计算机之间传输文件。
SMTP、POP3 和 IMAP 协议:用于电子邮件的发送和接收。和FTP协议一样,都是端口协议,做namp流量扫描时端口对应的协议可能会存在漏洞,需重点关注。
网络设备
路由器:连接不同的网络,实现网络之间的数据转发。它根据 IP 地址和路由表来确定数据的传输路径。
交换机:在局域网中连接多台计算机,实现数据的快速交换。它根据 MAC 地址来转发数据帧。
网卡:安装在计算机上,用于连接网络。它将计算机的数据转换为网络信号进行传输,并接收网络信号转换为计算机可识别的数据。
无线接入点(AP):提供无线网络连接,使无线设备能够接入局域网或广域网。
网络安全
防火墙(网络防护墙,应用防火墙waf等),加密技术(如SSL/TLS协议),身份认证(如白名单)
人工智能
机器学习( python)
工作流程
数据收集
来源:可以从各种渠道获取数据,如数据库、文件、传感器、网络等。
类型:包括结构化数据(如表格数据)、半结构化数据(如 XML、JSON 格式的数据)和非结构化数据(如文本、图像、音频等)。
数据预处理
数据清洗:去除噪声数据、处理缺失值、纠正错误数据等。例如,对于包含缺失值的数据集,可以采用均值填充、中位数填充等方法进行处理。
数据归一化:将数据的特征值缩放到一个特定的范围内,以提高算法的性能和稳定性。常见的归一化方法有最小 - 最大归一化、Z-score 标准化等。
特征提取:从原始数据中提取出有用的特征,以便机器学习算法能够更好地处理和理解数据。例如,在图像识别中,可以提取图像的颜色、纹理、形状等特征。
模型选择与训练
根据任务类型和数据特点选择合适的机器学习算法。例如,对于分类问题可以选择决策树、支持向量机等算法;对于回归问题可以选择线性回归、随机森林等算法。将预处理后的数据分为训练集和测试集。训练集用于训练模型,测试集用于评估模型的性能。使用训练集对模型进行训练,通过调整模型的参数使得模型在训练集上的损失函数最小化。
模型评估与优化
使用测试集对训练好的模型进行评估,常用的评估指标有准确率、精确率、召回率、F1 值、均方误差等。根据评估结果对模型进行优化,可以调整模型的参数、更换算法、增加数据量等。例如,如果模型在测试集上的准确率较低,可以尝试增加训练数据的数量或调整模型的超参数。
模型应用
将优化后的模型应用到实际问题中,进行预测、分类、聚类等任务。
对模型的应用结果进行监控和评估,不断改进模型以提高性能。
深度学习
深度学习的基本原理主要包括以下几个方面:
神经网络基础
神经元模型
深度学习的基础是人工神经网络,其灵感来源于生物神经系统。神经网络中的基本单元是神经元,它接收多个输入信号,对这些信号进行加权求和,然后通过一个激活函数处理得到输出。
例如,典型的神经元接收来自其他神经元或输入层的数据,每个输入都有一个对应的权重。假设输入为,对应的权重为,则神经元的加权输入总和为,其中是偏置项。然后,通过激活函数得到神经元的输出。
多层神经网络
深度学习中的神经网络通常由多个层次组成,包括输入层、隐藏层和输出层。
输入层接收原始数据,隐藏层对数据进行多层次的特征提取和变换,输出层产生最终的预测结果。例如,在图像识别任务中,输入层接收图像的像素值,隐藏层逐步提取图像的边缘、纹理、形状等特征,最后输出层给出图像所属的类别。
版权归原作者 空前_ 所有, 如有侵权,请联系我们删除。