网络安全内容整理二
网络嗅探技术
网络监听
网络监听,也称网络嗅探(Network Sniffing):在他方未察觉的情况下捕获其通信报文、通信内容的技术
网卡的工作模式:
1.广播模式(Broadcast Mode):网卡能够接收网络中的广播信息
2.组播模式(Multicast Mode):网卡能够接收组播数据
3.单播模式(Unicast Mode):只接收目的地址匹配本机MAC地址的数据帧
4.混杂模式(Promiscuous Mode,监听模式):网卡接收一切数据帧,无论其目的MAC地址是什么
嗅探的工作机制:
1.驱动程序支持:直接与网卡驱动程序接口的驱动模块,作为网卡驱动与上层应用的“中间人”,将网卡设置成混杂模式,捕获数据包并从上层接收各种抓包请求
2.分组捕获过滤机制:对来自网卡的数据帧进行过滤,将符合要求的数据交给上层
- 网卡上传的数据帧有两个去处:正常的协议栈或分组捕获过滤模块,对于非本地的数据包,前者会丢弃,后者则根据上层应用要求来决定是否丢弃
- 许多操作系统都提供分组捕获机制,如Windows平台上主要有NPF过滤机制,Linux中的SOCK_PACKET类型套接字,BSD系统中的BPF(Berkeley Packet Filter)
3.共享式局域网的监听实现方法
交换式局域网的监听技术
1.溢出攻击
- 交换机要维护一张MAC地址与端口的映射表(CAM)
- 维护该表的内存有限。如用大量的错误MAC地址的数据帧对交换机进行攻击,交换机就可能出现溢出
- 这时交换机就回到广播方式——向所有的端口发送数据包,监听就很容易了(ARP过载, MAC泛洪)
2.ARP欺骗
- 计算机维护一个IP-MAC地址对应表,该表随着ARP请求/响应不断更新
- 通过ARP欺骗,改变表里的对应关系,攻击者可以成为被攻击者与交换机之间的“中间人”,使交换式局域网中的所有数据包都流经攻击者的网卡
监听的防御
1.被动防御措施,如采用安全的网络拓扑结构和数据加密技术。注意重点区域的安全防范
- 网络分段越细,嗅探器收集的信息越少。将网络分成一些小的网络,数据包只能在该网段内部被嗅探。嗅探器不能跨过的网络设备:交换机、路由器。网络分段需要昂贵的硬件设备,只适应于中小的网络
- VLAN:使网络隔离不必要的数据传送,一般可采用20个工作站为一组,这是比较合理的数字
2.数据通道加密:数据通过事先建立的加密通道进行传输,账号、口令等敏感信息将受到严密保护。主要有
- SSH(Secure Shell)
- SSL (Secure Socket Layer,安全套接字应用层)
- VPN
3.数据内容加密:采用被证实较为可靠的加密机制对传输的邮件和文件进行加密
- PGP等
交换网络下防范监听的措施
1.主要防止ARP欺骗及ARP过载
2.不要把网络安全信任关系建立在单一的IP或MAC基础上,理想的关系应该建立在IP-MAC的对应关系上
3.使用静态ARP或者IP-MAC对照表代替动态的ARP或者IP-MAC对应表——禁止自动更新,使用手动更新
4.定期检查ARP请求:使用ARP监视工具如ARPWatch等监视并探测ARP欺骗
5.制定良好的安全管理策略,加强用户安全意识
口令破解
口令破解方法:
1.暴力破解(brute force):穷举,速度慢
2.字典攻击:根据用户信息建立起一个用户可能使用的口令列表文件,速度快
3.组合攻击:在字典列表的基础上增加几个字母或数字进行攻击
许多情况下用户喜欢在用户名后加几个字母或数字作为密码,如usr→usr2324
4.其他方式:例如
- 社会工程学(social engineering)
- 网络嗅探/木马/口令蠕虫
- 搜索垃圾箱
windows的口令文件
1.windows: 采用安全账户管理器SAM(Security Account Manager)机制
2.SAM文件:在%systemroot%system32\config目录下
- 含有本地系统或所在控制域上所有用户名和口令的Hash值
- 创建口令Hash有两种方法:
LAN Manager (LM)—最早使用的密码哈希算法之一
NT LAN Manager v2(NTLMv2)—Windows 2000、XP、Vista、7和10等
3.安全标识RID:在账号创建时被创建;账号删除,RID也同时删除;即使用户名相同,每次创建时获得的RID也不同
4.Windows系统下的hash密码格式为:
用户名:RID:LM-HASH值:NT-HASH值
例: Administrator:500:C8825DB10F2590EAAAD3B435B51404EE:683020925C5D8569C23AA724774CE6CC:::
用户名:Administrator RID:500 LM-HASH值:C8825DB10F2590EAAAD3B435B51404EE NT-HASH值:683020925C5D8569C23AA724774CE6CC
5.LM哈希的安全缺陷:
- DES算法密钥太短(56bit)
- 14个ASCII字符组成的密码,有
95^14
种可能性,而一旦将其腰斩为两组7位的字符串,就降低为95^7
种,不区分大小写,将进一步降低为69^7
种。因此密码被保存成LM哈希,在暴力破解面前将不堪一击 - 如果密码长度
<=7
,则第二部分hash为固定值0xAAD3B435B51404EE
,因此很容易确定密码长度范围 - Hash值在通过网络发送到服务器时,没有进行
salting
操作,容易遭受中间人攻击和重放攻击
Windows系统的登录与身份认证
1.登录Windows系统主要包括两种方式,其对应的身份认证方式也不相同
- 交互式登录:向本地计算机或域账户确认用户的身份
本地账户登录本地计算机:可以使用存储在本地SAM中的口令散列进行登录——用户输入明文口令,系统对口令使用相同的加密散列过程,并将散列结果与保存的散列进行比较,如果匹配,则通过验证
域账户登录:默认使用Kerberos V5 - 网络登录:对用户尝试访问的网络服务或资源提供用户验证。可以使用多种网络身份验证机制,如Kerberos V5、安全套接字/传输层安全(Secure Socket Layer/Transport Layer Security,SSL/TLS)以及与Windows NT 4.0兼容的NTLM机制
2.NTLM的身份认证机制:基于挑战/响应机制(C/R,Challenge/Response)
破解工具
1.SAMInside
- 支持Windows NT/2000/XP/Vista/7操作系统
- 可进行字典破解,暴力破解,掩码破解和彩虹表破解
- 导出PWDUMP格式密码文件
2.Ophcrack:基于彩虹表的windows密码破解软件
3.L0phtCrack
4.John the Ripper
5.Cain & Abel 可破解MySQL,MSSQL等数据库密码
Unix/Linux密码
采用用户名密码存储加密机制
1./etc/passwd: 包含了用户名、用户的真实姓名、标识信息以及每个用户的基本信息,各个域之间用”:”隔开
2./etc/shadow: 影子密码文件,包含了加密过的密码以及密码失效时间,只有root用户才能读取
3.组标识符GID:
- 每个Unix用户都属于一个或者几个组
- 每个用户都隶属于一个主用户组,存储在/etc/passwd文件中
- 可以利用组来限制一些用户对敏感信息或者特殊许可的应用程序的访问权
/etc/group:列出了计算机上所有的组
/etc/gshadow:计算机上所有组的群组影子密码文件
文件破解
1.offiice文件加密机制:采用RC4对称加密算法对文件进行加密
2.破解:可用破解工具ARPR(Advanced RAR Password Recovery)
口令破解防御
1.使用安全加密机制
2.使用强口令
欺骗攻击与防御
欺骗:冒充身份通过认证以骗取信任的攻击方式
- 攻击者针对认证机制的缺陷,将自己伪装成可信任方,从而与受害者交流,以获取信息或者展开进一步攻击
arp欺骗与预防
1.欺骗
在同一个局域网内,主机之间是通过mac地址来相互识别的,但是网络层过来的数据包是ip地址标识的,所以会调用arp协议将ip地址转换为mac地址,然后根据这个mac地址进行数据包的转发,而arp协议原理大概可以理解为去查一份ip-mac地址映射表。
通常情况下,这个表是没有问题的,但是,若攻击者向被攻击者和网关发送相应的伪造的ARP应答包,更改了两者的ARP表。当被工具这和网关进行通信时,根据已更改的ARP表,所有数据都将流向攻击者。通常攻击者还会做一个流量转发,这样被攻击者才不会察觉到被攻击。
2.防御
- MAC地址绑定
- 使用静态ARP缓存(
arp -s
) - 使用ARP服务器(确保该服务器不被控制)
- 使用ARP欺骗防护软件,如ARP防火墙
- 及时发现进行ARP欺骗的主机,并将其隔离
3.原理(ARP的缺陷):
- 主机收到应答包后不验证自己是否发送过对应的ARP请求
- 不验证该回应包是否可信
- 直接用应答包里的信息替换ARP缓存表中的原有信息
4.检测
- 网络频繁掉线
- 网络突然莫名其妙的慢
- 使用
arp –a
命令发现网关的MAC地址与真实的网关MAC地址不同 - 使用网络嗅探软件发现局域网存在大量ARP响应包
IP欺骗与防御
1.IP协议:非面向连接,两台计算机的信任连接主要依靠双方的IP地址
2.IP欺骗的方式
(1)简单的IP地址更改:攻击者将IP地址改成其他主机的地址(攻击效果很一般)
- TCP:A将收到一无所知的会话回复,将丢弃数据包,无法完成一次完整的TCP连接
- UDP:无连接,数据包会发送到A,导致拒绝服务
也称盲目飞行攻击(flying blind attack)/单向攻击(one-way attack)
(2)源路由攻击(source routing):攻击者可以使用假冒地址A向受害者B发送数据包,
并指定了宽松的源站选路或者严格路由选择(如果确定能经过所填入的每个路由的话),并把自己的IP地址填入地址清单中。这样,数据包必然会经过攻击者。
- 宽松的源站选择(LSR):发送端指明数据包必须经过的IP地址清单,但如果需要也可以经过其他地址
- 严格的源站选择(SRS):发送端指明数据包必须经过的确切IP地址,数据包如果没有经过这一确切路径,数据包将被丢弃,并返回ICMP报文
(3)TCP会话劫持(Session Hijack):接管现存动态会话的过程,即攻击者可以替代原来的合法用户,同时监视并掌握会话内容
- 会话劫持结合了嗅探及欺骗技术
- 会话劫持一般伴随着拒绝服务DoS,且不依赖于操作系统
- 会话劫持的关键之一—TCP序列号猜测
会话劫持过程:
- 发现攻击目标:必须能检测目标主机的通信流
- 确认会话状态:会话劫持一般在流量达到高峰时进行
攻击者可以选择的会话较多
掉线不容易引起用户的怀疑 - 猜测序列号:
TCP仅通过SEQ/ACK序列号来区分正确/错误数据包,以某种方式扰乱客户机的SEQ/ACK,使服务器不再相信客户机的正确数据包,然后伪装成客户机,使用猜测的正确的SEQ/ACK序列号与服务器通信
扰乱方法:恰当的时间在通信流中插入一个欺骗包,服务器接收后更新ACK;客户机对此毫无察觉,依然使用旧的SEQ通信 - 使客户主机下线:DoS攻击
- 接管会话:攻击者在受害服务器上留下后门(创建账号)
3.IP欺骗的防御
- 防范基本的IP欺骗:
入口过滤:不允许任何从外面进入网络的数据包使用单位内部地址作为源地址
出口过滤:从内网主机到内网主机的流量不允许流到本网络之外 - 防范源路由欺骗:设置路由器禁用源路由
- 防范会话劫持(没有有效的办法可以根本上防范会话劫持攻击,只能尽量减少攻击带来的危害):
加密:
使用安全协议:使用SSH,而不使用Telnet
限制保护:允许外网到内网的信息越少,内网越安全
DNS欺骗与防御
1.DNS欺骗的原理及实现步骤:
- 当向本地DNS服务器查询域名时,如果服务器缓存中已有相应记录,就直接将这条记录返回给用户
- DNS欺骗的关键是在DNS服务器的本地Cache中缓存一条伪造的解析记录
2.攻击(两种情况)
(1)攻击者可以控制本地域名服务器
- 攻击者控制本地域名服务器(假定是
163.com
域的权威),在其数据库中增加一个附加记录,将攻击目标的域名(例如www.example.com
)指向攻击者的欺骗IP - 用户向该域名服务器发送对攻击目标的域名解析时,将得到攻击者的欺骗IP
- 现实情况:攻击者往往无法控制DNS服务器
(2)攻击者无法控制DNS服务器
可以控制DNS服务器所在网络的某台主机,并可以监听该网络中的通信情况。黑客要对远程的某DNS服务器进行欺骗:
- 首先,黑客要冒充某个域名服务器的IP地址
- 其次,黑客要能预测目标域名服务器所发送DNS数据包的ID号
注:确定目标DNS服务器的ID号为DNS欺骗攻击的关键
(3)DNS数据通过UDP(53端口)协议传递,通信过程往往是并行的,即域名服务器之间同时可能会进行多个解析过程。在DNS报文里面。DNS报文格式最开始是所谓ID域,这个ID就是用于区别不同会话过程的,也就是说,不同的解析会话,采用不同的ID号。
(4)如何获取ID号
- 在某个DNS服务器的网络中进行嗅探,他只要向远程DNS服务器发送一个对本地某域名的解析请求,得到来自目标DNS服务器的请求数据包(因为远程DNS服务器肯定会转而请求本地的DNS服务器),攻击者就可以得到想要的ID号
- 若无法监听拥有DNS服务器的网络,可用下面的方法:
1.向目标DNS服务器请求某个不存在域名地址(但该域存在)
2.冒充所请求域的DNS服务器,向目标DNS服务器连续发送应答包,包中的ID号依次递增
3.一段时间后,再次向目标DNS服务器发送针对该域名的解析请求,如果得到返回结果,就说明目标DNS服务器接受了刚才的伪造应答,否则,再次尝试
3.DNS欺骗的局限性:
- 攻击者不能替换缓存中已经存在的记录
- DNS服务器存在缓存刷新时间问题
4.DNS欺骗的防御
- 使用最新版本DNS服务器软件并及时安装补丁
- 关闭DNS服务器的递归功能:利用缓存中的记录信息或通过查询其它服务器获得信息并发送给客户机,称为递归查询——容易导致DNS欺骗
- 限制区域传输范围:限制域名服务器做出响应的地址、限制域名服务器做出响应的递归请求地址、限制发出请求的地址
- 限制动态更新
- 采用分层的DNS体系结构
电子邮件欺骗及防御
1.电子邮件欺骗的原理
邮件系统组成:
- 用户代理(User Agent):用户端发信和收信的程序,负责将信件按照一定的标准包装,然后送到邮件服务器,或由邮件服务器收回
- 传输代理(Transfer Agent):负责信件的交换和传输,将信件传送至适当的邮件服务器
- 投递代理(Delivery Agent):将信件分发至最终用户的邮箱
正常情况下,邮件会将发送者的名字和地址包括进邮件头中,但有时发送者不希望收件者知道是谁发的(匿名邮件)
- 最简单的方法:改变电子邮件发送者的名字,但通过邮件头的其它信息仍能够跟踪发送者
- 彻底的方式:让其他人发送这个邮件,发信地址就变成转发者的地址。现在因特网上有大量的匿名服务器
2.电子邮件欺骗的方法
- 利用相似的电子邮件地址
- 直接使用伪造的E-mail地址
SMTP协议的致命缺陷——遵循过于信任的原则:不对邮件发送者的身份进行验证
可以随意构造发件人地址来发送邮件 - 远程登录到SMTP端口(25)发送邮件
3.电子邮件欺骗的防御
(1)树立风险意识,不要随意打开一个不信任的邮件
(2)从如下角度考虑防范方法:
- 邮件接收者:合理配置邮件客户端,使总能显示完整的电子邮件地址,而不仅仅显示别名,完整的电子邮件地址能提供表明正在发生一些不平常事情的一些迹象
- 邮件发送者: 如使用foxmail或者outlook之类的邮件客户端,保护好邮件客户端,防止他人修改客户端设置
- 邮件服务器: 采用SMTP身份验证机制:新SMTP协议规范新增2个命令(VRFY,EXPN) ,对发件人进行身份认证,一定程度上降低了匿名/垃圾邮件的风险
- 邮件加密:
OpenPGP(RFC 4880):【PGP (Pretty Good Privacy,相当好的隐私,商业版)】 【GnuPG(GPG,C): 开源项目, 支持OpenPGP,S/MIME】
S/MIME(RFC 2311,Secure/Multipurpose Internet Mail Extension)安全/多用途因特网邮件扩展
Web欺骗与防御
1.欺骗:网络钓鱼等,不多说。
2.防御:
- 配置网络浏览器使它总能显示目的URL,并且习惯查看它
- 检查源代码,如果发生了URL重定向,就一定会发现。对普通用户来说是不切实际的
- 使用反网络钓鱼软件
- 禁用JavaScript、ActiveX或者任何其他在本地执行的脚本语言
- 确保应用有效和能适当地跟踪用户。无论是使用cookie还是会话ID,都应该确保要尽可能的长和随机
- 培养用户的安全意识和对开发人员的安全教育