随着2024年下半年软考成绩的公布,这场考试终于画上了句号。今年,在参与HVV期间,我偶然听到几位同事提及这个证书,好奇心驱使我在闲暇之余搜索了相关信息,发现软考的通过率并不高。本着挑战自我的心态,果断报名参加了考试。然而,由于HVV政策的变动,活动时间延长,加之琐事缠身,我的学习计划受到了严重影响。直到十月下旬,我才重新开始学习,而考试时间已定在十一月十号。面对紧迫的时间,我曾考虑过放弃,但考虑到报名费用的付出以及对自我能力的挑战,我决定坚持下去。在复习过程中,我发现对课本知识点的掌握不够扎实,对学习路线也不够清晰。为了提高效率,我选择了合适的辅导资料进行学习。在有限的时间内,我重点复习了基础知识,并针对案例部分进行了深入研究。通过分析历年真题,发现案例部分涉及的知识点主要包括密码学、Android安全、wireshark抓包、恶意代码分析、linux基础和windows基础等。幸运的是,除了密码学,其他知识点我都有所涉猎,这让我在学习过程中相对轻松一些。在考前的那十来天,过得非常充实,最终顺利通过了考试,这让我感到非常开心。在学习过程中,我顺便做了一些笔记(笔记不全,还请大家见谅),今天上午花了一些时间整理了一下,希望对大家有所帮助。
信息安全的基本要素:(CIA)
机密性:保证信息不会泄露给未经授权的进程与实体,只提供给授权者使用
完整性:只能被授权许可的人修改,并且可以判别信息是否已经被篡改
可用性:只有授权者才能在需要的时候方法访问该数据,而非授权者应该被拒绝访问
工控系统网络安全偏重于"可用性-完整性-保密性"需求顺序
网络安全等级保护(主要针对非涉密信息系统)
(顺口溜:用系安结访)
三级以上每年测评一次,四级每半年测评一次
等保2.0及格线从60分提升到75分
等级保护的五个阶段:定级,备案,安全建设,等级测评,监督检查
等保定级标准:
可信验证
一级要求设备的系统引导程序,系统程序等进行可信验证
二级增加重要配置参数和应用程序进行可信验证
三级增加应用程序的关键执行环节进行动态可信验证
四级增加应用程序的所有执行环节进行动态可信验证
根据等保2.0要求,对云计算实施安全分级保护,分为五个级别,要求云计算基础设施位于中国境内,围绕"一个中心,三重防护"的原则构建云计算安全等保框架。一个中心指的是安全管理中心,三重防护指的是:计算环境安全,区域边界安全和通信网络安全。安全管理中心的安全机制是系统管理,安全管理和安全审计。
网络安全法律法规
网络信息安全事件
网络安全体系和网络安全模型
密码学主要由密码编码和密码分析两个部分组成
香农提出了了混乱与扩散的密码技术新方法
五种密码分析攻击类型
密钥体制分为私钥和公钥密码体制两种,介于两者之间的被称为混合密码体制。
私钥密码体制
私钥密码体制又称为对称密码体制,该体制加密和解密使用相同的密钥
私钥密码体制的优点是速度快,缺点是密钥分配问题,密钥管理问题以及无法认证源
私钥密码典型算法:DES,3DES,RC4,RC5,IDEA,AES,SM1,SM4
DES算法
DES算法的大致流程如下图所示:
S盒运算:常见的S盒是下图这种,在软考中通常比较容易的经常有两种题型
第一种是假设输入的是110011看用什么来替代它,110011我们取第一位和最后一位组成一个数11,然后剩下几位1001,之后我们把11作为行,把1001作为列,换算成十进制便是3行9列,此时的3行9列的数字为12所以我们使用12的二进制来代替110011即使用1100来代替它。
还有一种S盒的考法便是补全S盒,这个就更容易了,只需要选择一行中没有的数字就行比如说0行没有数字10,则(1)处就可以直接填上10.
P盒运算类似于初始置换和逆置换,具体不多说嘞考出来的概率不大
DES中已经有初始置换和逆置换了,P盒置换为什么要使用呢?
初始置换和逆置换用于重新排列数据块的数据(体现了扩散思想),而P盒则是为了进一步的混淆数据(体现了混乱的思想)。
公钥密码体制
公钥密码体制又称为非对称密码体制
优点:公钥分发方便,能以公开方式分配加密密钥;密钥保管量小;支持数字签名
公钥密码典型算法有:RSA,椭圆曲线密码,SM2
RSA算法
计算方法:
在RSA算法中明文消息M的取值不能大于n如果要加密大于n的整数,可以将明文分割成若干个小部分,进行分段加密,或者数字信封,就是用RSA来加密明文的对称密钥,而非明文本身。
使用公钥密码体制加密时,发送方用公钥加密,接收方使用私钥解密
使用公钥密码体制数字签名,时发送方用私钥加密,接收方使用公钥解密
国产常见的密码算法
杂凑算法(HASH算法)和数字签名
常见的HASH算法有MD5,SHA和SM3
常见的数字签名的方案有RSA签名体制,Rabin签名体制,Elgmal签名体制和DSS标准
签名和加密的不同之处为加密的目的是保护信息不被非授权用户访问,而签名的目的是使消息接收者确定信息的发送者是谁,信息是否被他人所篡改
SSH是由SSH传输层协议,SSH用户认证协议和SSH连接协议三个子协议构成各个协议分工合作可以实现加密,认证和完整性检查等多个安全服务
电子邮件安全应用
PGP应用了多种密码技术,其中密钥管理方法使用的是RSA,数据加密算法使用的是IDEA,完整性检测和数字签名算法使用的是MD5,RSA和随机数生成器
Kerberos技术
Kerberos客户机:用户用来访问服务器设备
AS认证服务器:识别用户身份并提供TGS会话秘钥
TGS票据发放服务器:为申请服务的系统授予票据
应用服务器:为用户提供服务的设备和系统
KDC:AS和TGS统称为KDC
Kerberos可以显著减少用户密钥的暴露次数而且有单点登录的优点,但是太过于如果服务器的时间发生了更改这个Kerberos的系统就会瘫痪
PKI技术
PKI的标准格式是X.509
X.509的标准中包含在数据证书的数据域有证书,版本号,序列号,算法标识,颁发者,有效期,有效起始终止时间,使用者,使用者公钥信息,公钥算法,公钥,签发者唯一公钥标识,证书签名算法,证书签名。
PKI需要一个可行的机构来担保实体的身份,这个可信的第三方被称为CA
PKI的各个实体的功能
访问控制技术
VPN技术
VPN的主要隧道协议有IPSEC,PPTP,L2TP,SSL VPN等
IPSEC规范:认证头(AH),封装安全有效负荷(ESP),密钥交换协议,IPSEC VPN各类性能要求的前提是以太帧分别是64,1428字节(IPV6是1408字节)
AH:保证IP包的完整性提供数据源认证可以防止重放攻击
ESP:保证IP包的保密性方法是将IP包进行加密,对数据域进行安全封装,并生成带有ESP协议信息的安全包
IPSEC中实现用户认证的协议是IKE协议
PPTP和L2TP都是第二层的协议
隐私保护技术
隐私保护方法;K-匿名方法(泛化)和差分隐私方法(扰动)
隐私保护的常见技术措施:抑制,泛化,置换,扰动,裁剪等
从数据挖掘的角度来看当前的隐私技术分为三类:基于数据失真的隐私保护技术,基于数据加密的隐私保护技术,基于数据匿名化的隐私保护技术
应急响应技术
网络安全应急响应技术包括访问控制,网络安全评估,网络安全监测,系统恢复,入侵取证等
恶意代码检测工具:D盾_Web查杀,chkrootkit,rkhunter以及360杀毒工具
漏洞扫描工具:Nessus,Nmap
文件完整性检查:UNIX/LINUX中可以使用cmp命令进行比较或者用md5工具来进行比较
系统配置文件检查;PChunter,火绒剑,Windows事件查看器
网络安全取证:取证现场保护,识别证据,传输证据,保存证据,分析证据,提交证据
防火墙
防火墙分为包过滤防火墙,应用服务代理防火墙,下一代防火墙,Web应用防火墙,数据库防火墙,工控防火墙等
包过滤防火墙:根据源端口,目的端口,源IP,目的IP以及包传递方向等
思科有两种访问规则形式即标准IP访问表和扩展IP访问表,标准IP访问表是根据IP包的源地址进行,扩展IP访问表同时匹配源地址和目的地址
access-list list-number {deny|permit} source(反掩码)
标准IP访问的标号(list-number)通常是1-99扩展IP访问的编号通常是100-199
包过滤防护墙的优点:低负载,高通过率,对用户透明
包过滤防火墙的缺点:不能再用户级别进行过滤,如不能识别不同的用户和防止IP地址的盗用
应用服务防火墙的优点:不支持外部主机直接访问内部主机,可以分析数据包内部的应用命令,支持多种用户认证方案,可以提供详细的审计记录
应用服务防火墙的缺点:速度比包过滤慢,对用户不透明,不能支持所有的网络协议
防火墙防御体系结构:基于双宿主主机的防火墙,基于代理型防火墙,基于屏蔽子网防护墙
基于代理的防火墙:
基于屏蔽子网的防火墙:
iptables
iptables是linux自带防火墙的一个管理工具,iptables包含四表五链。
iptables基本语法iptables[-t table] command [ match ] [ -j target/jump]
IDS
通用入侵检测框架由事件产生器,事件分析器,响应单元和事件数据库组成,IDS属于被动防护
入侵检测的实现技术:
基于误用的入侵检测技术(基于特征的检测方法,误用检测依赖于攻击特征库)和基于异常的入侵检测技术(依赖于异常模型的建立)
IDS分类
基于主机的入侵检测系统(HIDS):举例:SWATCH,Tripwire,网页防篡改系统等
基于网络的入侵监测系统(NIDS)举例:Session Wall,ISS,Cisco,snort,绿盟等
分布式入侵检测系统(DIDS)
入侵检测系统的部署过程是一个制定策略,部署配置设备,测试策略,运维设备的过程
snort
snort配置以三种模式运行:
嗅探器模式:在网络上读取数据包并且以连续流的形式显示在控制台上
数据包记录器模式:将数据包记录到磁盘中
网络入侵检测模式:对网络流量进行检测与分析
snort规则由两部分组成:规则头和规则选项。规则头包括操作,协议,源地址和目的地址等规则选项包括报警信息,被检测网络包的部分信息及规则应该采取的动作。规则中规则头和规则选项通过()来区分,规则选项内容使用()来括起来
- 被动攻击:典型代表嗅探、监听和流量分析,最难被检测,重点是预防,主要手段是加密。
- 主动攻击:假冒、重放、欺骗、消息篡改和拒绝服务等,重点是检测而不是预防,手段有防火墙、IDS等技术
网络攻击模型
网络攻击常见的技术方法
端口扫描
拒绝服务攻击
常见的网络攻击流量包括:HTTP GET Flood,HTTP POST Flood,HTTP SlowHeader/POST,HTTPS Flood等
针对ddos攻击的网络流量清洗的基本原理包括:流量监测,流量牵引与清洗,流量回注
sql注入
SQL注入主要原因是程序员在开发用户和数据库的系统时没有对用户输入的字符串进行过滤、转义、限制或处理不严谨,导致攻击者可以通过精心构造的字符串去非法获取到数据库中的数据。
以下是一个典型的sql注入原理源码
既然说到sql注入那我们顺便提一句数据库安全技术方面的一些常识:
常见的数据库脱敏技术有屏蔽,变形,替换,随机,加密。
Oracle内部密码存储在strXXX.cmd文件中
Oracle内部密码可以保存在orapw文件中
Oracle监听进程密码存放在listener.ora中
Oracle数据库的认证方式采用:“用户名”+“口令”,具有口令加密,账号锁定,口令生命期和过期,口令复杂度认证等安全功能。Oracle数据库要求进行特别认证,支持强认证操作系统认证,口令文件认证。网络认证支持第三方认证,PKI认证,远程认证等
代码执行
这种漏洞通常也是由于应用本身过滤不严格所导致的,用户可以通过HTTP请求将代码注入应用中并且进行恶意的操作,通常一些代码执行函数包括:eval(),assert(),preg_replace(),call_user_func(),call_user_func_array()等
经典的php一句话木马
上述木马通过HTTP的get请求传入参数并且以php命令执行当打开请求网址传入命令后可以执行
下面是一个经典的代码执行漏洞
攻击者传入IP后可以执行ping -c ip地址如果攻击者输入的ip地址中有恶意代码则会出现问题比如输入1.1.1.1;who则会执行命令who
XSS
xss也是由于过滤不全导致的一个漏洞,但是该漏洞比较鸡肋通常得需要被攻击者配合才能发挥效果,这种漏洞危害较小现在不少厂商只收存储xss了。
下面是xss的一段核心源码:
当用户输入xss语句时会触发弹窗并输出xss
CSRF
用户登录一个受信任的网站A后,还未退出A前用户访问恶意网站B,网站B收到用户请求后返回一些攻击性的代码并携带用户的cookie发出请求访问网站A,导致来自网站B的恶意代码被执行,接下来我们看一个dvwa中的csrf的源码
文件包含
攻击者可以包含服务器上的文件或者远程文件从而导致恶意文件被web服务器执行经常出现在一些函数比如include(),require(),include_once(),require_once()等函数进行文件包含过程中,分为本地文件包含和远程文件包含
上述代码当用户直接访问http://127.0.0.1?page=file1.php时会将file1.php中的恶意代码进行执行
文件上传
当用户对web文件上传功能时过滤不全会导致攻击者可以通过该漏洞上传一些恶意的后门到服务器中
上述代码未对文件类型等进行过滤当用户上传一个菜刀或者蚁剑的webshell时可以被直接拿下权限
缓冲区溢出
通过向程序的缓冲区输入超过其长度的内容从而导致缓冲区溢出,使系统运行其他的恶意指令,在栈区数据会先进后出我们使用一段代码作为示例。
示例代码:
常见的黑客工具
漏洞扫描技术:
Nmap
Tcpdump
恶意代码
恶意代码表示的一般格式为<恶意代码前缀><恶意代码名><恶意代码后缀>
计算机病毒
特洛伊木马
是具有伪装能力,隐蔽执行非法功能的恶意程序,而受害用户表面上得到的是合法功能的执行。特洛伊木马不具有自我复制的能力,而通过其他的传播机制来实现
网络蠕虫
蠕虫的功能模块:探测模块,传播模块,蠕虫引擎模块,负载模块
网络蠕虫的传播方式:
风险评估
工作环节:风险评估准备,资产识别,威胁识别,脆弱性识别,已有安全措施识别,网络安全风险分析,网络安全风险处置与管理
网络安全风险分析
风险计算:一般有相乘法和矩阵法
相乘法:
安全事件的可能性=
安全事件的损失=
安全事件的风险值=安全事件的可能性*安全事件的损失
矩阵法:构造一个二维矩阵,形成安全事件发生的可能性和安全事件损失二者之间的二维关系(根据已知条件查表即可)
网络设备安全
交换机分为第一代交换机,第二代交换机,第三代交换机,第四代交换机,第五代交换机
AAA是指认证,授权,会计三个功能的缩写主要通过RADIUS协议来实现
SNMP访问控制措施:
限制SNMP访问的IP地址
SNMP访问认证
关闭SNMP访问
Android安全
Android系统结构分为Linux内核层,系统运行库层,应用程序框架层和应用程序层
Android的四大组件:
Activity:在Android中负责与用户进行交互,android中的所有活动都必须在文件AndroidManifest.xml中声明
Service:作为后台运行的一个组件通常不和用户进行交互
BroadcastReceiver:代表广播消息接收器类似于监听器
ContentProvider:进行跨应用之间的数据交互
Android系统安全机制
权限声明机制:Android中的权限分配是根据APK安装包中的Manifest文件决定,应用程序层的权限包括normal权限,dangerous权限,signature权限,signatureOrSystem权限。
为了保护移动APP的安全性通常采用防反编译,防调试,防篡改,防窃取等多重安全保护措施
windows安全基础
系统内置账户:Administrator(该账户有对计算机的完全控制权限,不受到任何限制,默认情况下禁用,是Administrators组中的成员,可以重命名和禁用但是无法删除),Guest(无需账号密码可临时使用计算机用,默认情况下禁用)
当用户很多时可以建立组账户,将账户放到对应的组中
系统内置组账户:
Administrators:管理员组
Anonymous Logon用于匿名登录
Authenticated Users该组包含通过身份认证的所有用户。即使为guest账户设置了密码,该组也不包含Guest账户
User:标准用户组
SID(安全标识符):每个账户都有唯一的sid,相当于身份标识符,存储在注册表受保护的区域中,可以在注册表中查看SID,打开注册表后可以选择profilelist子键,选择要查看的sid,在右侧窗口双击profile|magePath键值。也可以通过命令行直接whoami /all 来查看sid
管理账户和组可以通过net user可以对账户进行创建,删除等操作,命令net localgroup可用于组的查看,创建,删除还可以将账户放到指定的组中(加入管理员组要特定的权限)
查看进程可以通过tasklist命令,可以用taskkill来杀死进程
管理服务可以通过net与sc命令
windows可以使用netstat命令来查看端口连接情况
可以使用共享文件夹将文件共享给网络上的其他用户
windows日志文件:
- 路径:
- 该文件夹存储了Windows事件日志文件,其中包括以下几种主要类型:
- 应用程序日志 (Application):记录了与安装的应用程序相关的事件和错误。
- 安全日志 (Security):记录了安全审计和安全事件,如用户登录和资源访问。
- 系统日志 (System):记录了与操作系统本身相关的事件和错误,如启动、关机、驱动程序加载等。
- 打开事件查看器的命令:eventvwr.msc
windows常见的安全事件ID:
windows网络连接排查
nststat —ano排查当前的网络连接,排查可疑的服务,端口和外联的IP
linux安全基础
linux常用的命令:
linux查看文件使用命令ls -l或者ll
linux中文件类型包括:
linux的文件权限:
linux的文件权限分为读®,写(w),执行(x),s权限,t权限。
s权限可以在执行文件时候可以临时获得文件所有者的权限,最典型的是passwd文件
t权限可以使一个用户写入文档但是不能删除其他人的文档
修改文件或者目录访问权限可以通过chmod命令
该命令的参数部分可以通过符号表达式也可以通过数字(r4,w2,x1)来进行充当
当进行符号表达时候可以用以下符号表示:
u:文件或者目录的所有者
g:与文件属组有同组ID的用户
o:表示其他用户通常只有读权限
a:表示上述所有的用户
修改文件所有权可以通过chown命令
linux的目录结构
/:根目录所有的文件都存在根目录下面
/bin:存放二进制文件的路径
/boot:存放启动linux所需要的核心文件
/dev:外围设备都以文件形式存储在此目录中
/etc:存放了系统的配置文件如账户密码文件,各种设备的启停文件等
/home:存放普通用户的家目录,当每新增一个账户时候该目录会新建一个文件夹用来保存该账户的信息
/lib:该目录存放开机时的函数库以及/bin,/sbin调用时要用到的函数库
/mnt:存放系统文件临时挂载点的目录,主要用于挂载外围设备
/opt:主要用于安装第三方软件,并且安装后的数据和库文件都存放在该文件夹下
/tmp:存放临时文件的目录
/root:root的家目录
/sbin:存放root的管理程序
/usr:存放次重要文件的目录通常用于安装各类软件
/var:存放系统中经常发生变化的数据,其中的/var/log存放日志文件
在linux中日志文件通常保存在/var/log下面
检查自启服务:chkconfig --list |grep on
机房安全防护
机房的功能区域组成:主机房,终端室
第一类辅助房间:低压配电间,不间断电源室,蓄电池室,空调机室,发电机室,监控室等
第二类辅助房间:资料室,维修室,技术人员办公室
第三类辅助房间:储藏室,缓冲间,技术人员休息室,换洗间
机房安全等级分为ABC三个等级
A级:计算机系统运行中断后,对国家安全,社会秩序,公共利益有严重损害的,有完善的机房安全措施
B级:计算机系统运行中断后,对国家安全,社会秩序,公共利益有较大损害的,有较完善的机房安全措施
C级:不同于上述两级,有基本的机房安全措施
IDC机房分为R1(IDC业务的可用性99.5%,机房基础设施和网络系统应具备一定的冗余能力),R2(IDC业务可用性99.9%,机房基础设施和网络系统具备冗余能力),R3(IDC业务可用性99.99%,机房基础设施和网络系统具备容错能力)