前言
在最近一周内,我收到了安全圈子里面小伙伴的私信,说他们非常喜欢信息安全,但是看了我之前发布文章,觉得有点难度,还涉及到C#编程,不好理解,希望我能给些基础方面的文章,所以有了这篇技术稿。
以下是我整理了2天,总结出来的一些算是经验之谈,希望能帮到大家。
一、网络安全漫谈
1. 数据发送之前面临的威胁<恶意程序>
- 计算机病毒:具有“传染性”。
- 计算机蠕虫:计算机蠕虫不需要附在别的程序内,可能不用使用者介入操作也能自我复制或执行。
- 特洛伊木马:没有复制能力,它的特点是伪装成一个实用工具、一个可爱的游戏、图片、软件,诱使用户将其安装在PC端或者服务器上,从而秘密获取信息。
- 逻辑炸弹:是一种程序,平时处于“休眠”状态,直到具体的程序逻辑被激发。
2. 计算机网络通信面临4种威胁<数据传输中>
- 截获——从网络上窃听他人的通信内容
- 中断——有意中断网络通信
。 - 篡改——故意篡改网络上传送的报文
。 - 伪造——伪造信息在网络上的传送
3. 威胁分类
- 被动攻击—截获。
- 主动攻击—中断、篡改、伪造。
被动攻击与主动攻击的区别:
- 主动攻击:对通信方式和通信数据产生影响的攻击为主动攻击,指攻击者对某个连接中通过的PDU进行各种处理:1>更改报文流;2>拒绝报文服务;3>伪造连接初始化。
- 被动攻击:攻击者只是观察和分析某一个协议数据单元PDU而不干扰信息流。
4. 计算机网络通信安全的目标
- 防止析出报文内容
- 防止通信量分析
- 检测更改报文流
- 检测拒绝报文服务
- 检测伪造初始化连接
5. 防范措施
(1) 使用加密机制防止析出报文内容。
- Y=Ek(X) // X:明文 Y:密文 k:加密密钥
(2) 保密性:密码编码学+密码分析学=密码学。
(3) 安全协议的设计。
(4) 接入控制:针对主动攻击的伪造。
- 无条件安全:无法由密文还原为明文;
- 计算安全:密码在有效的时间内无法计算出来。
6. 两位类密码体制<针对被动攻击中的截获>
(1) 对称密钥密码体制
加密密钥与解密密钥是相同的密码体制(类似加密的开锁钥匙与解密的开锁钥匙是同一把钥匙)。
1)DES (Data Encryption Standard)
解密的过程是上述加密的逆过程(同一密钥)。
过程详解:
- 在加密前,先对整个明文进行分组,每一个组长为64bit;
- 然后,对每一个64bit二进制数据进行加密处理,产生一组64bit密文数据;
- 最后,将各组密文串接起来,即得出整个报文。
备注:使用的密钥为64bit(实际密钥长度为56bit,有8bit用于奇偶校验)。
2)IDEA (International Data Encryption Algorithm)
IDEA使用128位密钥,目前基本不可能通过暴力破解攻破。
(2) 公钥密码体制(非对称密码体制)
1) 产生原因:
- 对称加密体制中加密和解密在信息交互时需要协商同一把相同的密钥,这一个过程是非常复杂的!而非对称加密体制是不需要这一过程的,简化对称体制的分配过程。
- 对称密钥密码体制无法数字签名,而非对称可以数字签名(数字签名:就是只有信息的发送者才能产生的别人无法伪造的一段数字串,这段数字串同时也是对信息的发送者发送信息真实性的一个有效证明),增强了信息的安全传输!
公钥密码体制是一种”由已知加密密钥推导出解密密钥在计算上是不可行的”密码体制:
- 发送方和接受方要持有一对密钥<公钥PK+私钥SK;
- 加密算法和解密算法没有顺序区别,可以先加密后解密/先解密后加密。
2)公钥加密算法
1> 算法概述
- 加密算法:Dsk(Epk(X))=X。“pk”是接受方的公钥;加密和解密的运算可以对调。
- 解密算法:Epk(Dsk(X))=X。用私钥加密的数据可以用公钥解密。
2> 加密密钥是公开的,但不能用来解密。原因是公钥是公开的,那这个加密数据是没有任何意义的,所以公钥一般是用来加密的!),即:DPK(EPK(X))=X。
3> 在计算机上可容易地产生成对的PK和SK(不需要双方进行协商)。
4>从已知的PK实际上不可能推导出SK,即:PK到SK是”计算上不可能的”从概念可得此结论。
5> 加密和解密算法都是公开的。
(3) 加密过程
这一传送过程,发送方和接受方维持了3个密钥:
- 发送方A:备注:自己维护的pkA和skA,同时还要记得对方的pkB;
- 接收方B:自己维护的pkB和skB,同时如果需要与发送者A通信就需要对方的pkA。
(4) 数字签名
数字签名必须保证以下三点以防止伪装攻击(重放攻击):
- 接受者能够核实发送者对报文的签名;
- 发送者事后不能抵赖对报文的签名;
- 接受者不能伪造对报文的签名。
(5) 数字签名的实现
发送者A使用自己的私钥进行加密,接受者B使用发送者A的公钥进行解密(这个数字签名数据没有任何保密意义的,因为上文提到过任何使用私钥sk加密的数据,任何知道公钥pk的人都可以解密这条数据)。数字签名的伪造将会在下文讲到。这一过程仅仅是实现数字签名,并且也满足数字签名的3个特征,这个我就不多说,自己可以验证一下。
(6) 具有保密性的数字签名
存在意义:存在数字签名的伪造,用pk解密的签名在网上广播出去,容易被截获,获取其他信息。
使用了2重非对称加密算法:一次签名+一次加密。
(7) 报文鉴别(针对主动攻击中的篡改和伪造)
存在意义:检测篡改攻击,如果篡改,丢弃。
- 报文摘要:给要传输的数据生成一个简单的指纹(身份ID),用来唯一的标识这段数据
- 报文摘要的优点:仅对短得多的定长报文摘要H(m)进行加密比对整个长报文m进行加密要简单的多
此处我想多说点,这种策略还不是最安全,比如游戏防止盗取装备也是采取类似这种对装备关键信息的加密(二进制加密),不可能对整个装备从头到脚进行加密,如果这样数据包会非常大,造成网络堵塞。我觉得最好的防范措施是:不能只用一种加密算法去加密,要把所有的加密算法要平衡运用到所有的装备身上,必要要在你网络传输流畅度和数据加密找到一个平衡点!
(8) 实体鉴别
是对每一个收到的报文都要鉴别报文的发送者,而实体鉴别是在系统接入的全部持续时间内对和自己通信的对方实体只需验证一次。
存在的威胁:
1)重放攻击问题
未被攻击,上面流程默认进行了KAB会话的协商操作,以后就A->B进行通信。
攻击时,攻击者C伪装A(截获A给B的数据包)然后用自己的sk或者pk加密后与B进行会话协商成功以后C和B进行会话通信,如下图所示:
产生重放攻击的原因:KAB 会话密钥是由A B 随机产生的,不随外人的干涉,那任何人跟B会话,都可以形成KAB会话密钥。
2)中间人攻击
分析:中间人C截获A的信息,重发”我是A”给B,B返回给A RB被C截获,C再给A发了一份RB;然后A用自己的私钥SKA对RB进行加密本来要返回给B,在中间又被C截获并丢掉,然后C用自己的私钥SKc对RB进行加密,发送给B,B把公钥请求返回给C,再重发一份给A,A本返回给B公钥PKa,C截获并丢掉,C将自己的PKc伪装成PKa发给B,B成功解密出来被SKc加密的RB,返回给C,C用自己的SKC解密出来DATA,再用刚才截获来的PKa对DATA进行加密返回给A。
产生重放攻击和中间人攻击的原因:密钥的管理不当引起
7. 密钥分配<对称密钥分配>
密钥管理包括:密钥的产生、分配、注入、验证和使用,比加密算法更为复杂!本技术稿只讨论密钥的分配。
为了防止以上攻击上演,引入一个可信第三方,由它对密钥进行管理和维护。
(1) 对称密钥分配
如果A要与B进行通信 必须去线下的密钥分配中心KDC注册,然后分配中心分别给A和B分配密钥KA kB生成注册表。类似去银行开银行卡,系统会记录你设置的账号和密码,同时生成一对映射表;KAB是通信双方共享会话的KAB。Kerberos 既是鉴别协议,同时也是KDC。
优点:对密钥分配制度进行了一个扩充,将到场注册的线下改为线上。
(2) 公钥的分配<非对称密钥分配>
公钥需要有一个值得信赖的机构来将公钥与其对应的实体(人或机器)进行绑定(binding)<防止中间人的攻击手法>这样的机构就叫做认证中心( CA fCertification Authority)
8. 英特网使用的安全协议<网络层+运输层+应用层>
(1) 网络层的安全协议
1)IPsec协议:网络层保密是指所有在IP数据报中的数据都是加密的。此外,网络层还应提供源站鉴别,即当目的站收到IP数据包时,能确信这是从该数据包的源IP地址的主机发来的。
总结:
- 完成了一个实体鉴别;
- 对IP数据包进行了加密。
2)主要包括2个部分:
- 鉴别首部AH(Authentication Header):AH提供提供源站鉴别和数据完整性,但不能保密;
- 封装安全有效载荷 ESP (Encapsulation Sucurity Payload): EPS比AH复杂的多,它提供源站鉴别、数据完整性和保密;
- 安全关联SA:在使用AH 或ESP 之前,先要从源主机到目的主机建立一条网络层的逻辑连接。此逻辑连接叫做安全关联SA;Psec 就将传统的因特网无连接的网络层转换为具有逻辑连接的层。
安全关联是一个单向连接。它由1个三元组唯一地确定,包括:
- 安全协议(使用AH/ESP)的标识符;
- 此单向连接的源IP地址;
- 一个32bit的连接标识符,称为安全参数索引SPI(Security Parameter Index)对于一个给定的安全关联SA,每一个数据报都有一个存放SPI的字段。通过此所有数据报都使用同样的SPI。
3)IPsec数据报格式
4)IPsec数据报的工作方式
- 第一种工作方式是运输方式(Transport mode)。运输方式是整个运输层报文段的后面和前面分别添加一些控制字段 ,构成IPsec数据报。
- 第二种工作方式是隧道方式(tunnel mode) 隧道方式是在一个IP数据包的后面和前面分别添加一些控制字段,构成IPsec数据包。
5)IPsec 数据包封装过程
- 在运输层报文段(或IP数据报)后面添加ESP尾部;
- 按照安全关联SA指明的加密算法和密钥,对“运输层报文段(或IP数据报)+ESP尾部”一起进行加密;
- 在已加密的这部分的前面,添加ESP首部;
- 按照SA指明的算法和密钥,对“ESP首部+运输层报文段(或IP数据包)+ESP尾部”生成报文鉴别码MAC;
- 把MAC 添加在ESP尾部的后面;
- 生成新的IP首部(通常就是20字节长,其协议字段的值50)。
(2) 运输层安全协议
SSL:安全套接层(Secure Socket Layer):可对万维网客户端与服务器之间传送的数据进行加密和鉴别(在用第三方网上交易时用到的协议,比如支付宝)。
功能:
- SSL服务器鉴别;
- 加密的SSL会话;
- SSL客户鉴别。
类似在淘宝购买东西的过程:
(3) 应用层安全协议
PGP是一个完整的数字邮件安全软件包,包括加密、鉴别、电子签名和压缩等技术。
它只是将现有的一些加密算法如MD5、RSA、以及IDEA等综合在一起而已,类似我上文说的游戏防外挂的策略。
下图为一个典型的邮件加密过程:
9. 系统安全:防火墙与入侵检测<针对物理层+数据链路层>
(1) 防火墙
由软件、硬件、构成的系统,用来在2个网络之间实施接入控制策略。
(2) 功能
- 验证与阻止/过滤;
- 认为合法的连接进行访问;
- 主要功能是阻止。
(3) 防火墙技术
- 网络机防火墙;
- 应用级防火墙。
(4) 入侵检测系统(IDS)
分类:基于特征的入侵检测(缺点:未知的特征无法检测)+基于异常的入侵检测(DDOS攻击)。
二、彩蛋(渗透测试)
下面就以一个最基本的ARP断网/欺骗攻击来做个简单的关于网络攻击的实验吧,理论+实践。
至于ARP协议以及ARP断网/欺骗攻击的原理众所周知,我就不废话了,开始渗透测试:
1. ARP断网攻击
(1) 环境搭建
- 物理机:Win7<被攻击者>
- 虚拟机:KALI<攻击者>
(2) 过程
1)用nmap对存在于WLAN中的主机进行IP地址的嗅探:
攻击目标的IP为192.168.0.104(有时嗅探不完全,多嗅探几次,才可以将WLAN中的所有主机嗅探到)。
2)测试被攻击者的网络是否正常:
被攻击者网络显示正常。
3)ARP断网
- 假如想攻击电脑的话,格式是:目标IP+网关;
- 假如想攻击手机的话,格式是:网关+目标IP。
4)再次测试被攻击者的网络是否正常:
瞬间断网!
(3) ARP欺骗攻击
由于LAN通信是根据MAC地址进行传输,假如MAC地址被伪造成攻击者的MAC地址,就形成的所谓的ARP欺骗。
示意图:目标IP—>我的网卡—>查看自己网卡上的图片信息—>网关
1)用nmap对存在在WLAN中的主机进行IP地址的嗅探:
和断网攻击同一个姿势,被攻击者的IP地址为192.168.0.104。
2)对被攻击者进行ARP流量转发,使其流量转发到攻击端:
此指令是没有回显的。
3)进行ARP欺骗
假如被攻击者在浏览周董的照片:
4)使用driftnet进行抓取图片:
以上就是攻击者的电脑呈现效果!
5)如何防御?
- 静态绑定(IP和MAC静态绑定)—PC端;
- 路由器实现IP地址与对应MAC地址的绑定—路由端。
方法都是根据攻击原理进行相应防御!
或使用电脑管家防御等:
手机版的360管家似乎没有防御ARP攻击的工具!
记得TK教主曾在微博上说过:ICMP重定向基本可以理解为能在互联网范围内发起ARP欺骗。有点可怕!希望更多的人能够像TK一样将电脑技术运用在造福社会上!
三、总结
万变不离其宗,再高明的攻击手段,都是基于以上内容,希望一些新手朋友或者刚入门的朋友仔细阅读,推敲,基础是最重要的,也不枉费我熬夜总结的资料。