安全见闻(1)

安全见闻

今天这个系列叫做安全见闻,什么意思呢就是扩大我们的见识面,同列位看一看网络安全,网络技术这些领域都有什么,大家眼界开阔了,就能明白很多事情,很多东西,不被表象所迷惑,不论是技术也好还是其他方面也好,就是说学习之前,你得理解你要学的是什么,干嘛的,所以然你得了解清楚。

安全见闻,包含了各种网络安全,网络技术,希望大家明白自己的渺小,知识的广博,要时时刻刻保持平等的心,很多分类组合有互相包含也属于正常情况,也不是所有知识都能全部讲到,完整列出,但大家只要明白以下这些,以后遇到问题就能够举一反三。

编程语言

C语言:一种通用的、面向过程的编程语言,广泛应用于系统软件和嵌入式开发。

C++:在C语言基础上发展而来,支持面向对象编程,常用于游戏开发、高性能计算等领域。

Java:一种广泛使用的面向对象编程语言,具有跨平台性,应用于企业级应用开发等。

Python(推荐):简洁易学,拥有丰富的库,适用于数据分析、人工智能、Web 开发等。

JavaScript:主要用于网页前端开发,也可用于服务器端开发(Node.js)。

C#:由微软开发,主要用于 Windows 平台上的应用开发。

Ruby:一种简洁而富有表现力的编程语言,常用于 Web 开发。

PHP(推荐):主要用于 Web 开发,尤其适合服务器端脚本编程。

Go:一种高效、简洁的编程语言,适用于网络编程和云计算等领域。

Swift:苹果公司开发的编程语言,用于 iOS 和 macOS 应用开发。

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程序可以用php写,golang,lua,java,等等去写 是不是感觉我靠为啥这么多,的确 简简单单的后端程序就可以用很多语言去写。

但人的精力是有限的,你要学哪个语言就看个人需求了,这个语言可以干很多很多的事情,但就就看适不适合了,比如你用c、c++也可以写 但是 c/c++ 写起来可能特别复杂 如果你只是满足需求你可以选择PHP,或者python 这种简单的语言,并不是说c/c++难 只是说花费的时间比较长,没有PHP那种一键功能直接给你写完那种。

所以说我们得学会写不同需求的编程软件要有不同的编程语言。

编程语言的局限性 比如后端用Java 前端就是那么几种语言嘛,JavaScript,php,css等,所以如果你只懂一个点那你很多东西都不会,但是没有办法知识过于广博 你没法全部精通。

软件程序都有什么呢

web程序 (网站)

这个大家应该清楚,大家学的都是渗透对吧,但是渗透本身也是有局限性的,什么局限性呢,渗透对应的就是对web程序的入侵,这就导致了有那么多的程序体系你只懂得web程序换个载体你就没办法了,这样是不行的,搞渗透的 除了web程序 软件程序 还有什么呢?

二进制程序

昨天群里很多人问我二进制交不交 这个没基础没法交的 因为二进制的应用大多数都是逆向分析这些人在搞,渗透这块涉猎并不广泛,它本身也是有局限性的,搞逆向分析的可能对web这块不熟悉

驱动程序

可能就是二进制程序写的,那他的本质也是二进制程序,所以说很多东西都是混杂在一起的,驱动程序也属于软件 以Windows为例后缀为sys结尾的都属于驱动程序范围内。

脚本程序

程序代码即是脚本程序,亦是最终可执行文件。 脚本语言可分为独立型和嵌入型,独立型脚本语言在其执行时完全依赖于解释器,而嵌入型脚本语言通常在编程语言中(如C,C++,VB,Java等)被嵌入使用。脚本程序就太多了,lua,php,java(也可以算是脚本)。

操作系统

操作系统也属于软件程序的一种,只不过是很大的一个软件,但是从本质来讲也属于软件程序的范畴,这是我们要理解的,不要觉得操作系统就很厉害很神秘,它确实技术含量高但也是个软件。

裸板程序

比如说搞web渗透,搞二进制的,写代码都是基于操作系统去写的 ,没有操作系统你们什么都写不了,这就是事实,但是还有一种程序也就是裸板程序,直接在stm32上写一段代码,或者我们的单片机上写一个代码,这就是裸板程序,裸板程序是没有操作系统的概念的,也没有进程这种概念,所以有些东西需要我们自己去模拟才行,有操作系统就特别方便,裸板程序也是软件程序的一种,它就是一个代码组成的。

机器学习

一般用python去编写,但是像go之类的编程语言都是可以写的,但是归根结底它也就是个程序而已。

这个漏洞到底叫什么,这里希望列为不要区分,因为现在很多漏洞都是漏洞+漏洞杂糅在一起的,到底叫什么其实这些都我无所谓的,只要我们会懂得原理就OK了,那你非要给他取个牛逼的名字那也可以。

量子计算

量子计算利用专门技术(包括计算机硬件和利用量子力学的算法)来解决传统计算机或超级计算机无法解决或无法快速解决的复杂问题。

bios程序

这些都是代码写的程序而已不要被表象所迷惑 ,换个名字你就觉得高大上,不知所措了,怎么理解呢,比如二进制和web组合叫它aa技术,量子计算和二进制组合叫bb技术 那怎么学aa技术呢 其实你只要把二进制和web程序学会就行了。

所以要了解事物的本质,不论以后谁给你吹牛咋样咋样的你都要一眼看穿本质。

操作系统

.ios

.mac

.linux

.android

.Windows

.wince

.vxworks

.RT-Thread

常见系统

windows mac ios linux 这种是非实时操作系统,实时操作系统vxworks,RT-Thread,wince,什么是实时与非实时,就是说我们在操作过程中,比如我们反键刷新,点一下立马弹出来了,但是电脑cpu在执行的时候并没有立马执行你的指令,它可能先执行了其他的在执行你的指令,这就是非实时的(只是科普可能这辈子都用不到但是我们得了解)为什么要讲 就是不做井底之蛙,不是你以为的只有Windows,和Linux,只有这些吗?当然不是太多了不一一列举,所以我们要会举一反三。

Windows、macOS、iOS 和 Linux 通常被认为是非实时操作系统。

非实时操作系统主要致力于在各种情况下提供良好的整体性能、用户体验和多任务处理能力,但不能保证在严格的时间限制内对事件作出响应。

与之相对的是实时操作系统(RTOS),实时操作系统能够在确定的时间内对外部事件作出响应并完成特定的任务,具有严格的时间确定性和可预测性,常用于对时间要求极为严格的嵌入式系统、工业控制等领域。

网络通讯

不论搞什么都是要网络通讯联网的。

硬件设备

计算机硬件

中央处理器(CPU):计算机的核心部件,负责执行指令和处理数据。它的性能决定了计算机的运行速度。

内存:用于存储正在运行的程序和数据,它的容量和速度对计算机的性能有很大影响。

硬盘:用于长期存储数据,包括操作系统、应用程序、文件等。硬盘的容量和读写速度也是影响计算机性能的重要因素。

显卡:用于处理图形和图像数据,它的性能决定了计算机的图形处理能力。对于游戏玩家和图形设计师来说,显卡的性能非常重要。

主板:是计算机的核心电路板,连接着各种硬件设备,如 CPU、内存、硬盘、显卡等。主板的质量和性能对计算机的稳定性和扩展性有很大影响。

网络硬件

网络服务器:提供网络服务,如文件存储、电子邮件、Web 服务等。网络服务器通常具有较高的性能和可靠性,以满足大量用户的需求。

网络存储设备:用于存储网络中的数据,如网络附加存储(NAS)和存储区域网络(SAN)。它们提供了大容量、高可靠性的数据存储解决方案。

网络打印机(接口开放可利用):可以通过网络连接被多台计算机共享,方便用户打印文件。

网络摄像头(接口开放可利用):用于视频监控和远程会议等应用。它可以通过网络将视频信号传输到其他设备上。

移动设备硬件

智能手机:集成了多种功能,如通信、拍照、娱乐、办公等。智能手机的硬件包括处理器、内存、存储、屏幕、摄像头等。

平板电脑:类似于智能手机,但屏幕更大,适合阅读、浏览网页、观看视频等。平板电脑的硬件也包括处理器、内存、存储、屏幕、摄像头等。

可穿戴设备:如智能手表、智能手环等,它们可以监测用户的健康数据、运动数据等,并与智能手机等设备进行连接和交互。可穿戴设备的硬件包括传感器、处理器、内存、存储、屏幕等。

硬件发展趋势

小型化:硬件设备越来越小型化,便于携带和使用。例如,智能手机、平板电脑等移动设备的体积越来越小,性能却越来越强。

高性能:随着技术的不断进步,硬件设备的性能不断提高。例如,CPU 的处理速度越来越快,内存和存储的容量越来越大,显卡的图形处理能力越来越强。

智能化:硬件设备越来越智能化,能够自动适应不同的环境和用户需求。例如,智能手机可以根据用户的使用习惯自动调整屏幕亮度、音量等设置。

互联互通:硬件设备之间的互联互通越来越紧密,形成了一个庞大的物联网。例如,智能家居设备可以通过网络连接实现自动化控制,智能汽车可以与其他车辆和交通设施进行通信。

网络类型

局域网(LAN):覆盖范围较小,一般在一个建筑物或一个校园内。例如,公司办公室内的网络就是一个局域网,用于员工之间共享文件、打印机等资源。

城域网(MAN):覆盖范围较大,一般在一个城市内。例如,城市的有线电视网络、宽带网络等。

广域网(WAN):覆盖范围非常大,可以跨越国家和地区。例如,互联网就是一个广域网,连接了全球各地的计算机和网络设备。

网络协议

TCP/IP 协议:是互联网的基础协议,包括传输控制协议(TCP)和网际协议(IP)。TCP 负责数据的可靠传输,IP 负责数据的路由和寻址。

HTTP 协议:超文本传输协议,用于在 Web 浏览器和 Web 服务器之间传输超文本数据,如网页、图片、视频等。

端口协议:

FTP 协议:文件传输协议,用于在计算机之间传输文件。

SMTP、POP3 和 IMAP 协议:用于电子邮件的发送和接收。

网络设备

路由器:连接不同的网络,实现网络之间的数据转发。它根据 IP 地址和路由表来确定数据的传输路径。

交换机:在局域网中连接多台计算机,实现数据的快速交换。它根据 MAC 地址来转发数据帧。

网卡:安装在计算机上,用于连接网络。它将计算机的数据转换为网络信号进行传输,并接收网络信号转换为计算机可识别的数据。

无线接入点(AP):提供无线网络连接,使无线设备能够接入局域网或广域网。

网络安全

硬件防火墙:

硬件防火墙,把“软件防火墙”嵌入在硬件中,把“防火墙程序”加入到芯片里面,由硬件执行这些功能,从而减少计算机或服务器的CPU负担。一般的“软件安全厂商”所提供的“硬件防火墙”,就是在“硬件服务器厂商”定制硬件,然后再把“Linux系统”与自己的软件系统结合嵌入。

软件防火墙:

用于保护网络免受外部攻击,它可以根据预设的规则过滤网络流量。

加密技术:对数据进行加密,防止数据被窃取或篡改。例如,SSL/TLS 协议用于在 Web 浏览器和 Web 服务器之间进行加密通信。

身份认证:确保只有授权用户能够访问网络资源,常见的身份认证方式有用户名和密码、数字证书、生物识别等。

软件程序

通讯协议

tcp ip udp 等

人工智能

机器学习 推荐python

工作流程

数据收集

来源:可以从各种渠道获取数据,如数据库、文件、传感器、网络等。

类型:包括结构化数据(如表格数据)、半结构化数据(如 XML、JSON 格式的数据)和非结构化数据(如文本、图像、音频等)。

数据预处理

数据清洗:去除噪声数据、处理缺失值、纠正错误数据等。例如,对

于包含缺失值的数据集,可以采用均值填充、中位数填充等方法进行处理。

数据归一化:将数据的特征值缩放到一个特定的范围内,以提高算法的性能和稳定性。常见的归一化方法有最小 - 最大归一化、Z-score 标准化等。

特征提取:从原始数据中提取出有用的特征,以便机器学习算法能够更好地处理和理解数据。例如,在图像识别中,可以提取图像的颜色、纹理、形状等特征。

模型选择与训练

根据任务类型和数据特点选择合适的机器学习算法。例如,对于分类问题可以选择决策树、支持向量机等算法;对于回归问题可以选择线性回归、随机森林等算法。

将预处理后的数据分为训练集和测试集。训练集用于训练模型,测试集用于评估模型的性能。

使用训练集对模型进行训练,通过调整模型的参数使得模型在训练集上的损失函数最小化。

模型评估与优化

使用测试集对训练好的模型进行评估,常用的评估指标有准确率、精确率、召回率、F1 值、均方误差等。

根据评估结果对模型进行优化,可以调整模型的参数、更换算法、增加数据量等。例如,如果模型在测试集上的准确率较低,可以尝试增加训练数据的数量或调整模型的超参数。

模型应用

将优化后的模型应用到实际问题中,进行预测、分类、聚类等任务。

对模型的应用结果进行监控和评估,不断改进模型以提高性能。

深度学习

深度学习的基本原理主要包括以下几个方面:

神经网络基础

神经元模型

深度学习的基础是人工神经网络,其灵感来源于生物神经系统。神经网络中的基本单元是神经元,它接收多个输入信号,对这些信号进行加权求和,然后通过一个激活函数处理得到输出。

例如,典型的神经元接收来自其他神经元或输入层的数据,每个输入都有一个对应的权重。假设输入为,对应的权重为,则神经元的加权输入总和为,其中是偏置项。然后,通过激活函数得到神经元的输出。

多层神经网络

深度学习中的神经网络通常由多个层次组成,包括输入层、隐藏层和输出层。

输入层接收原始数据,隐藏层对数据进行多层次的特征提取和变换,输出层产生最终的预测结果。

例如,在图像识别任务中,输入层接收图像的像素值,隐藏层逐步提取图像的边缘、纹理、形状等特征,最后输出层给出图像所属的类别。

Web程序(python、php、java)

上节课给大家科普了一些安全行业的见闻,希望大家明白我在给大家说什么,我只是想给大家更广泛的去科普一下这个知识点,大家首先要知道有哪些语言,而安全行业,或者说渗透测试,红队攻防这些要专研哪些东西,比如说你要专研web渗透或逆向分析这些东西,这就可以了

不论是任何方向我们要做的就是究其本质 找对努力的方向去走,而不是盲目学习那只会让自己痛苦,web渗透 红队你就专研 python,php ,java(三选二) 剩下的就是把攻防技术那块搞好 这就可以了

什么是软件程序代码

软件程序是一种计算机程序,用于计算机计算和其他可编程设备。其实就是我们常说的代码,不论是什么软件程序都是由代码组成的,以后我们会见到很多类型的软件程序,比如网页设计,网站开发,软件开发,软件工程,其实本质都是代码,不需要去刻意区分;以后很多的专业名词都是这样的,其实就是代码,只不过这些代码是完成特定功能的罢了,例如鉴权中间件,跨域中间件,其本质就是iis 那些中间件,明白本质才不会被名词所混淆。

究其根本不论是什么样的语言你只要能能够告诉计算机 计算机给你做了这就是我们的程序,所以不论是哪个方向 究其根本就是一行一行的代码, 那么这个代码转化成二进制我们底层的硬件它就知道它要干什么了,程序就是告诉计算机我们要做什么事,比如我要发个包,写个发包程序,这个程序就是告诉计算机我要发包的一个语言。

所以不论是什么网页设计 前端后端 底层逻辑都是代码 ,不要去分它 没有必要去分,哪个快速快捷我们就用哪个,python能做的就不要用c++,越简单的编程语言越实用,因为其本质都是让计算机去做同样一件事,不要把事情复杂化。

web程序

通常构成 前端-后端-数据库-服务器 基本就是这些 前端url 请求到后端要执行什么 后端登陆,这时候就要调用数据库的数据,数据库放在哪,放服务器上。(大概就是这样)

语言

html (点击劫持)

css (也有注入,有人会说哎呀这是xss,新手是这样)一定要觉得自己是渺小的,不要觉得什么都会了其实有很多东西你都不懂,你得保持着你觉得什么都不会你才有更多的东西去学

JavaScript (xss dom型 反射型 存储型 点击劫持,请求走私)很多知识点杂糅到一起了得理解,你说信息泄露 那数据库信息泄露在前端上了怎么算呢。

假设你根本不懂这三门语言,那么xss,点击劫持,web缓存漏洞你也不可能会,请求走私跨域这些问题你也不可能会。

所以搞web渗透这些东西都是得学的

代码库

JQuery

BOOtstrap

elementui

代码库是干什么的,我们写代码不可能用原生的语言去写,这样太废精力了,我们可以封装成一些库让它很方便的去调用。

框架

.vue

.react

.angular

框架不论怎么写都是基于最本质的的三种语言写的html,css,javascript,如果单纯从纯粹的Javascript去分析很费时间,一般都是通过框架去分析xss框架多如牛毛(了解即可)。

前端

潜在漏洞:信息泄露,xss,csrf,点击劫持,访问控制,web缓存漏洞,跨域漏洞,请求走私。

后端

潜在漏洞:信息泄露,xss,csrf,ssrf,反序列化漏洞,sql注入漏洞,命令注入漏洞,服务端模板注入,跨域漏洞,访问控制。

语言

.php

.java

.python

.golang

.c/c++

.lua

.nodejs

.ruby

后端语言有很多,比如php 就会有反序列化漏洞,sql注入漏洞,命令注入漏洞等问题,所以语言是很重要的如果你连后端语言都没写过怎么知道啥叫反序列化呢要想搞这些漏洞 以上语言必须学一种,比如请求走私就是涉及到协议问题了。

数据库

数据库有什么潜在漏洞呢,sql注入,xss,命令注入等。

数据库也是有分类的

关系型数据库

.mysql

.sqlsever

.access

.postgresql

非关系型数据库

.mongodb

.couchdb

.neo4j

.redis

你想学SQL注入你不知道啥叫数据库,就好比你想当警察你不知道啥叫枪一样,所以说想学漏洞之前对以上的要有所了解 起码得会一点。

服务器程序

潜在漏洞:信息泄露,文件上传漏洞,文件解析漏洞,目录遍历,访问控制。

中间件

.apache

.nginx

.iis

.tengine

.tomcat

.weblogic

web程序,这个我这么一列出来就感觉很多是吧,前端语言就三种,但是他的库很多啊,框架也多,后端语言就更多了,很多人说要进红队 比如Java代码审计首先你得会Java呀,这个是避不开的,再比如反序列化漏洞,Java,php,python都有反序列化漏洞你得想好搞哪一个,你还得会编程语言啊,web程序大致就是这些希望列位理解这些,知攻善防亦是如此。

脚本程序

主要是说说这个安全性的这个点。我们知道这个脚本程序,上面有粗略的讲了一下,编程语言那块也很多所以,那么那么多编程语言里面哪些是脚本语言呢。

lua

php

go(可以是)

python

JavaScript

这些都算是脚本性的语言,那么什么是脚本性的语言呢,上面也给列位科普讲解了一下,脚本通俗理解就是拿过来以后我就可以直接看见它的源代码,可复制性高,我们打开浏览器随便进一个网站”f12“去看一下,基本上前端代码在这个调试器这里都是可以看见的,这种就是典型的脚本性质的程序。

golang(脚本性)

python(脚本性)

nodejs(脚本性程序)

这种主流脚本就很多了,这些编程语言都可以写一些脚本性的病毒,python可以编写木马,js也可以编写木马,比如beefxss,了解本质的人都知道那个就是相当于js写的木马,再比如PHP一句话木马,就是php写的木马,所以说这些脚本它可以干什么,可以编写脚本病毒木马,那么假如你要写一个脚本病毒木马js、php这种最起码你得会一点。

当然你就算会了编程语言基础,你还得去了解这个脚本木马构成,它是怎么写的。比如你学会了英语你要用这个英语写作文。最起码的这个写作构成语法你得会 你会写中文但是让你去写小说你也不会呀 就是这个意思,你会了js你不一定会写js病毒因为你可能对病毒的写法不了解。

还是那句话你在写任何病毒脚本之前你得先有编程基础,基本的语法,库的调用你会了再去了解病毒的一个原理构成,再尝试编写病毒。

好比有一天我跟你们讲病毒那块的知识,你连基本语言都不会那这个事情就没法搞了。

macro(宏病毒)

比如利用metasploit生成宏病毒,将宏病毒植入office文件中,很多公司都有office文件或者产品,常见的就是微软的word、ppt等这些产品是可以植入的,wps是不行的,一般这个工具植入的都是微软的产品,这个你们需要了解,你不能说我写个针对微软的脚本你要到wps里面执行,这是肯定执行不了的。

想写宏病毒,就必须要了解宏的代码构成(前面说了不论是任何软件,病毒都是代码构成的)。

宏代码是由哪个编程语言写的呢 VB/c#类似于这样的语言去写的,这个我们需要了解。

bat

powershell

这两个也是微软搞的,这都是Windows上面的程序,这个东西是干啥的他们的作用是用于内网渗透,所以这个你得有所了解,vb语法列位需要会吧,这些列位自己去了解,内网渗透这两个bat、powershell得会,最起码这些东西有基础能学着舒服一点,不然到时候学完啥也不懂,学个寂寞也不行啊。

内网渗透并不是单指内网渗透中的域渗透,这么讲太狭隘了。

总的来说内网渗透和公网渗透没啥区别就是多了一个域渗透的一个东西这个是你要知道的,但是域渗透代表不了内网。

CAD Lisp(脚本病毒)

cad我相信学过制图的大部分人都玩过,写图纸画图纸的时候,可能会用到一些脚本,就好比我们要做excel表格一样,会用一些宏,因为它可以自动化帮你完成一些工作,但是我们可以写一些正常的脚本,也可以写一些不正常的脚本,比如脚本病毒,所以很多搞cad的人不懂,他懒得画图纸直接拿别人的,拿到以后发现中毒了,当然即使中毒他们可能也发现不了,因为他不是专业的,并且很多杀毒软件不支持这样的操作,他并不会去查杀cad这种病毒的(主要是太冷门,很少有安全厂家去做这一部分,未来可能会涉及)。

这种病毒有什么危害,就可以盗取cad机密图纸,如果你们有一天想接触这个病毒首先你们要会这个lisp语言,它这个语法和c、c++这种都不太一样。

AutoIt3(脚本病毒)

这种语言都是大家不常见的语言,我们的杀软针对的是主流的编程语言代码病毒,对这种语言查杀程度低,我不是说这种语言不能杀只是说越冷的计算机编程语言编写的病毒越难查杀。

bios程序(bios病毒)

你想搞一个这种病毒,就得会写这个程序,就比如有人说不会内网渗透那么我先问问你会不会bat、powershell。

posted @ 2024-10-18 22:40  乐茵  阅读(58)  评论(0编辑  收藏  举报