声明!
学习视频来自B站up主 **泷羽sec** 有兴趣的师傅可以关注一下,如涉及侵权马上删除文章,笔记只是方便各位师傅的学习和探讨,文章所提到的网站以及内容,只做学习交流,其他均与本人以及泷羽sec团队无关,切勿触碰法律底线,否则后果自负!!!!有兴趣的小伙伴可以点击下面连接进入b站主页[B站泷羽sec](https://space.bilibili.com/350329294)
安全见闻
编程语言
C语言:一种通用的面向过程的编程语言,广泛应用于系统软件和嵌入式
C++:在C语言基础上发展而来,支持面向对象编程,常用于游戏开发等领域。
Java:一种广泛使用的面向对象编程语言,具有跨平台性,应用于企业级应用开发等。
Python:简洁易学,拥有丰富的库,适用于数据分析、人工智能、Web 开发等。
JavaScript:主要用于网页前端开发,也可用于服务器端开发(Node.js)。
C#:由微软开发,主要用于 Windows平台上的应用开发。
Ruby:一种简洁而富有表现力的编程语言,常用于 Web 开发。
PHP:主要用于 Web 开发,尤其适合服务器端脚本编程。
go:一种高效、简洁的编程语言,适用于网络编程和云计算等领域。
swift:苹果公司开发的编程语言,用于iOS 和 macOS 应用开发。
kotlin:可与 Java 互操作,主要用于 Android 开发。
移动开发:objective-c语言,现在被swift取代
二进制程序:偏向写驱动程序。逆向分析这一块
裸板程序:没有操作系统支持直接在硬盘上面运行的程序,在system32或者单片机上面写
操作系统:实时和非实时反应,windows和linux就是非实时的,并不是立刻执行当前指令的
无线接入点AP,无线连接联网 机器学习工作流程 数据收集->数据预处理(清洗,归一化取特征,训练模型)
CAD,LISP脚本病毒:画图病毒
硬件介绍
中央处理器(CPU):计算机的核心部件,负责执行指令和处理数据。它的性能决定了计算机的运行速度。
内存:用于存储正在运行的程序和数据,它的容量和速度对计算机的性能有很大影响。
硬盘:用于长期存储数据,包括操作系统、应用程序、文件等。硬盘的容量和读写速度也是影响计算机性能的重要因素。
显卡:用于处理图形和图像数据,它的性能决定了计算机的图形处理能力。对于游戏玩家和图形设计师来说,显卡的性能非常重要。
主板:是计算机的核心电路板,连接着各种硬件设备,如 CPU、内存、硬盘、显卡等。主板的质量和性能对计算机的稳定性和扩展性有很大影响。
和网络有关的硬件
网络服务器:提供网络服务,如文件存储、电子邮件、Web 服务等。网络服务器通常具有较高的性能和可靠性,以满足大量用户的需求。
网络存储设备:用于存储网络中的数据,如网络附加存储(NAS)和存储区域网络(SAN)。它们提供了大容量、高可靠性的数据存储解决方案。
网络打印机(接口开放可利用):可以通过网络连接被多台计算机共享,方便用户打印文件。
网络摄像头(接口开放可利用):用于视频监控和远程会议等应用。它可以通过网络将视频信号传输到其他设备上。
移动设备硬件
智能手机:集成了多种功能,如通信、拍照、娱乐、办公等。智能手机的硬件包括处理器、内存、存储、屏幕、摄像头等。
平板电脑:类似于智能手机,但屏幕更大,适合阅读、浏览网页、观看视频等。平板电脑的硬件也包括处理器、内存、存储、屏幕、摄像头等。
可穿戴设备:如智能手表、智能手环等,它们可以监测用户的健康数据、运动数据等,并与智能手机等设备进行连接和交互。可穿戴设备的硬件包括传感器、处理器、内存、存储、屏幕等。
硬件发展趋势
小型化:硬件设备越来越小型化,便于携带和使用。例如,智能手机、平板电脑等移动设备的体积越来越小,性能却越来越强。
高性能:随着技术的不断进步,硬件设备的性能不断提高。例如,CPU 的处理速度越来越快,内存和存储的容量越来越大,显卡的图形处理能力越来越强。
智能化:硬件设备越来越智能化,能够自动适应不同的环境和用户需求。例如,智能手机可以根据用户的使用习惯自动调整屏幕亮度、音量等设置。
互联互通:硬件设备之间的互联互通越来越紧密,形成了一个庞大的物联网。例如,智能家居设备可以通过网络连接实现自动化控制,智能汽车可以与其他车辆和交通设施进行通信。
前后端可能存在漏洞
web缓存漏洞
数据库
关系数据库(基于关系模型,数据以表格的形式存储)
mysql sqlsever access postgresql 通常采用垂直扩展(scale-up),即通过增加单个服务器的资源(如CPU、内存)来提高性能。
非关系型数据库(不依赖于表格模型,可以存储各种类型的数据)
mongodb couchdb neo4j redis 更倾向于水平扩展(scale-out),即通过增加更多的服务器节点来提高性能和存储容量。
windows系统重要组件
防火墙
定义:控制进出网络的流量,防止未授权的访问和某些类型的攻击。
流量的五元组:
源IP地址,源端口,目的IP地址,目的端口,和传输层协议这五个量组成的一个集合
防火墙安全区域划分
trust,untrust,dmz,local
dmz通常是内网服务器所在区域,local是设备本身。他们之间的区别是优先级
安全策略
匹配条件(五元组,用户,时间等等),动作(许可或者拒绝),安全配置文件(入侵检测系统等等)
防火墙的发展
->包过滤防火墙,通过检测五元组数据包来确定是否允许信息通过
->基于状态转发报文,状态指的是会话状态,主机发送报文,当首报文符合安全策略以后防火墙会建立server-map会话表
比如这种,确定源ip目的ip,公网还是私网
然后后面的报文就不用一个个匹配安全策略了,加快效率
防火墙防御体系
基于双宿主主机防火墙
双重宿主主机又称为堡垒主机,是一台至少配有两个网络接口的主机,它可以充当与这些接口相连的网络之间的路由器,在网络之间发送数据包。而一般情况下双宿主机的路由功能是被禁止的,因而能够隔离内部网络与外部网络之间的直接通信,从而起到保护内部网络的作用。
基于代理型防火墙
基于代理型防火墙(Proxy Firewall),也称为应用层网关(Application Gateway),通过代理服务器技术在应用层对网络流量进行监控和控制
基于屏蔽子网的防火墙
使用两个分组过滤路由器将隔离子网分别与内部网络和外部网络分开,形成“隔离带”。
优点:安全性高,侵袭者必须通过两个路由器才能侵入内部网络。
防火墙风险
网络安全旁路:防火墙只能对通过它的网络通信包进行访问控制,而未经过他的网络通信就无能为力
防火墙安全机制形成单点故障和特权威胁:所有网络流量都要经过防火墙,一旦防火墙管理失效,就会对网络造成单点故障和网络安全特权失控
防火墙效用受限于安全规则:依赖于安全规则的更新等等
linux防火墙
Ubuntu自带iptables防火墙
包括netfilter(内核中的包过滤框架)和iptables(用户空间的命令行工具)
四表五链(主要看过滤的filter表就好了)
表名 | 链名 | 处理的数据包类型 |
---|---|---|
raw | PREROUTING | 进行NAT之前的数据包,用于配置数据包的跟踪选项 |
OUTPUT | ||
mangle | PREROUTING | 路由决策之前的数据包,通常用于修改数据包头部信息,主要用于修改数据包的TOS(Type Of Service,服务类型)、TTL(Time To Live,生存周期) |
INPUT | 输入的数据包 | |
FORWARD | 转发的数据包 | |
OUTPUT | 输出的数据包 | |
POSTROUTING | 路由决策之后的数据包 | |
nat | PREROUTING | 进行地址转换(DNAT) |
INPUT | 输入地址转换(SNAT) | |
OUTPUT | 输出地址转换 | |
POSTROUTING | 路由决策之后的地址转换 | |
filter | INPUT | 进入系统的数据包 |
FORWARD | 穿过系统的数据包 | |
OUTPUT | 离开系统的数据包 |
默认策略:ACCEPT(接受)、DROP(丢弃)或REJECT(拒绝并发送错误信息)。
IDS入侵检测系统
IDS(intrusion detection system)入侵检测系统是一种对网络传输进行即时监视,在发现可疑传输时发出警报或者采取主动反应措施的网络安全设备。它与其他网络安全设备的不同之处便在于,IDS是一种积极主动的安全防护技术。在很多中大型企业,政府机构,都会布有IDS。我们做一个比喻——假如防火墙是一幢大厦的门锁,那么IDS就是这幢大厦里的监视系统。一旦小偷进入了大厦,或内部人员有越界行为,只有实时监视系统才能发现情况并发出警告。
专业上讲IDS就是依照一定的安全策略,对网络、系统的运行状况进行监视,尽可能发现各种攻击企图、攻击行为或者攻击结果,以保证网络系统资源的机密性、完整性和可用性。与防火墙不同的是,IDS入侵检测系统是一个旁路监听设备,没有也不需要跨接在任何链路上,无须网络流量流经它便可以工作。因此,对IDS的部署的唯一要求就是:IDS应当挂接在所有所关注流量都必须流经的链路上。
IDS在交换式网络中的位置一般选择为:尽可能靠近攻击源,尽可能靠近受保护资源。
入侵检测系统的架构
事件产生器:它的目的是从整个计算环境中获得事件,并向系统的其他部分提供此事件。
事件分析器:分析数据,发现危险、异常事件,通知响应单元
响应单元:对分析结果作出反应
事件数据库:存放各种中间和最终数据
入侵检测技术
误用检测技术
基于模式匹配原理。收集非正常操作的行为特征,建立相关的特征库。
特点:误报低、漏报高,无法检测新的入侵
异常检测技术
基于统计分析原理。首先总结正常操作应该具有的特征(用户轮廓),试图用定量的方式加以描述,当用户活动与正常行为有重大偏离时即被认为是入侵。
IDS的部署
基于网络的IDS
网络入侵检测(NIDS)
特点:利用工作在混杂模式下的网卡来实时监听整个网段上的通信业务。
基于主机的IDS
主机入侵检测(HIDS)
特点:对针对主机或服务器系统的入侵行为进行检测和响应。
Snort - 是一款入侵防御系统(IDS)和网络监控系统,它可以检测和防御网络攻击,但不是传统意义上的抓包工具。
unicode编码的文本通常会以\uXXXX的形式出现
mdb文件是早期asp语言+access构架的数据库文件,类似.sql
自启动
Ctrl + Shift + Esc
打开任务管理器。
点击“启动”标签页,这里会列出当前用户账户下设置为自启动的程序。
计划任务
cmd打开taskschd.msc查看系统计划的任务
事件日志
(监控系统状态、诊断问题和审计安全事件)
cmd打开eventvwr.msc
内核驱动
提供了对硬件设备的直接访问和管理。内核驱动负责处理硬件中断、执行I/O操作,并与操作系统的内核紧密交互。
系统服务
后台运行的程序,它们提供了系统功能和资源管理。例如,负责网络通信的“Network Service”或管理打印作业的“Spooler Service”。cmd打开services.msc
进程线程
一个应用程序一个进程,一个进程由多个线程组成,线程是被系统独立调度和分派的基本单位。一个进程可以包含多个线程,每个线程执行不同的任务。
系统编程
编写与操作系统内核或系统级软件组件交互的程序
注册表
存储了操作系统和安装在计算机上的程序的所有配置信息
cmd窗口regedit打开
HKEY_CLASSES_ROOT:启动应用程序所需的全部信息,如扩展名,应用程序与文档之间的关系,驱动程序名,DDE和OLE信息,类ID编号和应用程序与文档的图标等。
HKEY_CURRENT_USER:当前登录用户的配置信息,如环境变量,个人程序以及桌面设置等。
HKEY_LOCAL_MACHINE:本地计算机的系统信息,如硬件和操作系统信息,安全数据和计算机专用的各类软件设置信息。
HKEY_USERS:计算机的所有用户使用的配置数据,这些数据只有在用户登录系统时才能访问。
HKEY_CURRENT_CONFIG:当前硬件的配置信息,其中的信息是从HKEY_LOCAL_MACHINE中映射出来的。
人工智能
数据安全:AI系统需要大量数据进行训练,这些数据在收集、存储、传输或使用过程中可能被泄露或窃取。
对抗攻击:攻击者可能通过在输入数据中添加不易察觉的扰动,使AI系统做出错误的判断。
网络攻击:利用AI技术生成的恶意软件可以自动适应不同的环境和防御机制,提高攻击的成功率。
通信协议中潜在的安全问题和方向
首先可以说是老生常谈了,软考也考--信息安全的三要素
保密性问题
数据泄露风险
应用层的http问题,在没有tls的时候攻击者可以通过网络监听获取传输中的敏感信息。(http协议是明文传输的bp抓包或者wireshark都可以看到)以及SMTP(未加密的电子邮件传输)、POP3和IMAP(未加密的邮件接收协议)等等
弱加密算法DES的密钥命令比较短,可以暴力破解
密钥管理风险
密钥分发的时候被截取如果密钥比较简单是可以被推敲破解然后使用的(js逆向里面RSA加密的时候好像有看到加上三位时间戳那种)
完整性问题
完整不只是可以少,也可以多
数据篡改风险
逻辑漏洞改价格,商品数量等等
重放攻击
也可以说是中间人攻击吧,比如xss盗用cookie然后登录这种。
可用性问题
拒绝服务
拿下一堆主机组建僵尸网络进行ddos攻击
协议本身的问题
自身协议存在缺陷造成死锁(比如两辆车都在等对方,直接整个卡住)
接着就是一些身份校验和设计的问题
身份验证问题
假冒身份风险
钓鱼攻击,恶意链接模仿官方的网站来收集别人的敏感信息之类
身份验证漏洞
弱口令密码轻松验证
协议的设计以及实现问题
编程
top10漏洞也说啦大部分都是那种未校验数据,执行了sql,xss,xxe这些恶意代码的漏洞
设计
设计的时候没有限制类型内存大小之类,容易导致缓冲区溢出漏洞(可以看我前面那篇软考的文章)
使用第三方组件的问题
比如log4j管理日志啊这种,或者apache,iis这种服务器软件出现的问题都是修复不了的只能等官方没办法
协议的升级,设备上的异构性问题
新的协议升级以后旧设备的兼容性问题会导致的结果
更新新设备以后和一部分老设备之间的问题(升级协议时,应考虑向后兼容性,并为旧设备提供安全升级路径)
无线网络协议
通过蓝牙和wifi监听内容(不要连陌生wifi!)