中间人攻击软件_网络中间人攻击测试设备

hacker|
147

RSA、Diffie-Hellman和中间人攻击

网络上常常有对RSA、DH算法,以及中间人攻击的讨论。

一种说法是“RSA密钥协商(交换)不会受到中间人攻击”,听起来似乎RSA比DH做密钥协商更优。

这种说法有些不负责任。下面把这个问题中涉及到的概念都解释一下,再来看这个问题。

中间人攻击,可以这样解释:攻击者一定程度上控制了网络,成为网络双方通信的中间者,从而获取到双方的通信信息;而通信双方都感知不到中间人的存在。

这个话题往往和加密通信一起讨论:如果加密信道中存在中间人,那明文就会被中间人获取,而通信双方还不会知晓。

中间人攻击的根本,在于通信双方没有进行身份认证。即:不知道和自己直接通信的人是谁。如果双方能确认直接通信的人就是对方,也就不存在中间人攻击了。

RSA加密算法 是一种非对称加密技术。由一对密钥(公钥+私钥)组成。

可以利用私钥来生成公钥。

一般来说,私钥会被秘密保存起来,而公钥则分发出去。

公钥加密,私钥解密,称为RSA加密算法。 是为了保证公钥加密的内容,只有私钥持有者可以解密。常常用在客户端账密登录过程:客户端对密码进行公钥加密,发送到服务端后用私钥解密,这样即使请求被截获也不会泄露密码(实际上要更复杂一些)。

私钥加密,公钥解密,称为RSA签名算法。 是为了保证公钥持有者获取的内容,确实是来自私钥持有者的正确内容。比如服务器持有私钥,将一个重要信息计算hash再私钥签名后,和信息本身一起发送到客户端;客户端用公钥解密签名得到hash值,再计算信息的hash值,进行比对,就知道内容是否被篡改。由于私钥的保密性,攻击者无法伪造有效的签名。

DH密钥交换算法 并不是 加密算法,而是双方在不安全的网络中交换信息而生成双方仅有的密钥的一种方法。其结果是,交换的双方得到了一样的会话密钥,而其他任何人不能得到这个密钥。

由于算法的结果是通信双方拥有了一样的密钥,双方往往会利用这个密钥进行 对称 加密通信。

DH算法的过程可以简单解释如下:通信双方AB,各自生成一对DH密钥(Pa,Sa)和(Pb,Sb)(P代表公钥,S代表私钥)。双方交换各自的公钥P,于是A持有Sa、Pb,B持有Sb、Pa。通过某种计算,Sa、Pb可以生成会话密钥K,Sb、Pa也可以生成相同的K。

DH算法本身不包含身份认证机制,所以中间人攻击是其明显的问题。

设想:

在AB间,有一C。AB交换DH公钥P时,C在中间截获;C自己生成一对DH密钥(Pc,Sc),用Pc和A、B完成密钥交换。于是C与A间有了会话密钥Kac=f(Pa,Sc)=f(Pc, Sa),C与B间有了会话密钥Kcb=f(Pb,Sc)=f(Pc, Sb)。只要C从一方获得的信息,重新加密后传递给另一方,AB就都不会发现他们的通信被劫持了。

密钥协商(key establishment)包括“密钥传输”(key transmission)和“密钥交换”(key exchange)。

所谓RSA密钥协商实际是密钥传输,即一方生成密钥,传递给另一方,而不必双方交换。

具体来说,就是A自己生成一个密钥K,用自己的RSA公钥加密,再传递给B;B用RSA私钥解密得到K。仅就这个过程而言,不会存在中间人攻击。

但是这不是说RSA就比DH就更安全了。设想上面的情况,必须先要令A持有RSA公钥,B持有RSA私钥。这首先先进行一次RSA公钥传递,而这个传递过程是存在中间人攻击的。

设想:

B生成一对RSA密钥Pb、Sb,将公钥Pb发送给A。而AB中有C。C截获了Pb,而自己生成了一对RSA密钥Pc、Sc,将Pc发送给A。

A用Pc加密了会话密钥K,发送给B,被C截获。C用Sc解密得到K,再用Pb加密后给B。这时C完成了中间人攻击。

所以说: RSA的公钥在端与端间传递时,存在中间人攻击问题。

RSA最好的使用场景在服务端/客户端之间,服务端持有私钥,客户端直接内置好公钥,就不用担心中间人攻击了。

平时我们使用的,号称安全的https协议,也存在中间人攻击问题。比如Fiddler这种抓包软件,就能充当https通信中的中间人。

一般上网时使用的https是 单向认证 ,即客户端通过CA认证服务器持有有效证书,来确认其身份。服务器不会验证客户端的身份。

如果使用 双向认证 ,通过CA确认两端的身份都是正确的,就可以防止中间人攻击了。这种双向认证一般出现在企业应用对接中。

网络上有这样一种说法:

通信两端交换RSA公钥,通过对方公钥加密数据,自己私钥解密。这样就实现了端到端加密。

实际上这 不是端到端加密 。因为不能保证服务器无法修改数据:服务器可以用公钥来加密任何的数据发给两端。

而且,按之前所说的,这种交换, 存在中间人攻击问题 。

中间人攻击的DNS欺骗

DNS欺骗(DNSSpoofing),就是其中的一种惯用手法。攻击者通过入侵DNS服务器、控制路由器等方法把受害者要访问的目标机器域名对应的IP解析为攻击者所控制的机器,这样受害者原本要发送给目标机器的数据就发到了攻击者的机器上,这时攻击者就可以监听甚至修改数据,从而收集到大量的信息。如果攻击者只是想监听双方会话的数据,他会转发所有的数据到真正的目标机器上,让目标机器进行处理,再把处理结果发回到原来的受害者机器;如果攻击者要进行彻底的破坏,他会伪装目标机器返回数据,这样受害者接收处理的就不再是原来期望的数据,而是攻击者所期望的了。例如让DNS服务器解析银行网站的IP为自己机器IP,同时在自己机器上伪造银行登录页面,那么受害者的真实账号和密码就暴露给入侵者了。

如此说来,这种攻击理应是最强大最危险的,然而实际上它却很少派上大用场,为什么,因为DNS欺骗的攻击模型太理想了。在实际生活中,大部分用户的DNS解析请求均是通过自己的ISP服务器进行的,换句话说,就是系统在连接网络时会获取到ISP服务器提供的DNS服务器地址,所有解析请求都是直接发往这个DNS服务器的,攻击者根本无处入手,除非他能入侵更改ISP服务器上DNS服务的解析指向。所以这种手法在广域网上成功的几率不大。

当然,这种攻击的成功率也有例外存在,例如一个ISP服务器上存在Bind漏洞,攻击者就能通过Bind漏洞进入服务器更改掉DNS解析指向,甚至取得最高权限;另一种方法是入侵路由设备,修改里面的DNS服务器地址为自己控制的机器地址,这种方法只能在用户机器自身是通过路由器返回域名解析的情况下才能成功,多见于一些使用小区宽带连接Internet的用户,因为这种用户机器的DNS地址通常必须指向小区宽带内部的某台服务器地址或者交给路由进行转向,这时候只要攻击者入侵了路由或者那台关系到所有人的服务器修改掉DNS记录,整个小区用户的网络都完了。当然,攻击者不能把全世界网站都伪造到他硬盘上,他只需要改几个重要商务站点的指向即可,这样便可导致用户访问某些商务站点时被转向到攻击者的机器去。但是,这种攻击手法同时对攻击者自身也是一种伤害:如果小区内有许多用户都访问这些商务站点,则大量数据请求会疯狂消耗攻击者的机器资源,攻击者非但不能实时处理数据,更是面临着机器瘫痪和暴露自己的双重危险。

什么是“中间人攻击“?怎样防止这种攻击?

中间人攻击(Man-in-the-MiddleAttack,简称“MITM攻击”)是一种“间接”的入侵攻击,这种攻击模式是通过各种技术手段将受入侵者控制的一台计算机虚拟放置在网络连接中的两台通信计算机之间,这台计算机就称为“中间人”。

攻防为一家,有攻就有防,只要措施正确,MITM攻击是可以预防的。 中间人攻击

对于DNS欺骗,要记得检查本机的HOSTS文件,以免被攻击者加了恶意站点进去;其次要确认自己使用的DNS服务器是ISP提供的,因为目前ISP服务器的安全工作还是做得比较好的,一般水平的攻击者无法成功进入;如果是依靠网关设备自带的DNS解析来连接Internet的,就要拜托管理员定期检查网关设备是否遭受入侵。 至于局域网内各种各样的会话劫持(局域网内的代理除外),因为它们都要结合嗅探以及欺骗技术在内的攻击手段,必须依靠ARP和MAC做基础,所以网管应该使用交换式网络(通过交换机传输)代替共享式网络(通过集线器传输),这可以降低被窃听的机率,当然这样并不能根除会话劫持,还必须使用静态ARP、捆绑MAC+IP等方法来限制欺骗,以及采用认证方式的连接等。 但是对于“代理中间人攻击”而言,以上方法就难以见效了,因为代理服务器本来就是一个“中间人”角色,攻击者不需要进行任何欺骗就能让受害者自己连接上来,而且代理也不涉及MAC等因素,所以一般的防范措施都不起作用。除非你是要干坏事,或者IP被屏蔽,或者天生对网络有着恐惧,否则还是不要整天找一堆代理来隐藏自己了,没必要的。常在河边走,即使遇上做了手脚的代理也难察觉。

常见网络安全攻击有哪些

1、DoS和DDoS攻击

DoS是Denial of

Service的简称,即拒绝服务。单一的DoS攻击一般是采用一对一方式的,通过制造并发送大流量无用数据,造成通往被攻击主机的网络拥塞,耗尽其服务资源,致使被攻击主机无法正常和外界通信。

DDos全称Distributed Denial of Service,分布式拒绝服务攻击。攻击者可以伪造IP 地址,间接地增加攻击流量。通过伪造源 IP

地址,受害者会误认为存在大量主机与其通信。黑客还会利用IP 协议的缺陷,对一个或多个目标进行攻击,消耗网络带宽及系统资源,使合法用户无法得到正常服务。

2、MITM攻击

中间人类型的网络攻击是指网络安全漏洞,使得攻击者有可能窃听两个人、两个网络或计算机之间来回发送的数据信息。在MITM攻击中,所涉及的两方可能会觉得通信正常,但在消息到达目的地之前,中间人就非法修改或访问了消息。

3、网络钓鱼攻击

网络钓鱼是通过大量发送声称来自于银行或其他知名机构的欺骗性垃圾邮件,意图引诱收信人给出敏感信息的一种攻击方式。

攻击者可能会将自己伪装成网络银行、在线零售商和信用卡公司等可信的品牌,骗取用户的私人信息。最常见的是向用户发送链接,通过欺骗用户下载病毒等恶意软件,或提供私人信息来完成诈骗。在许多情况下,目标可能没有意识到他们已被入侵,这使得攻击者可以在没有任何人怀疑恶意活动的情况下获取同一组织中更多的相关信息。

在打开的电子邮件类型和单击的链接时要格外留意电子邮件标题,检查回复和返回路径的参数。不要点击任何看起来可疑的东西,也不要在网上留下可以证明自己身份的任何资料,包括手机号码、身份证号、银行卡号码等。

4、鲸鱼网络钓鱼攻击

之所以如此命名,是因为它针对的是组织的大鱼。通常包括最高管理层或其他负责组织的人,这些人掌握着企业或其运营的专有信息,更有可能为了买断信息而支付赎金。

鲸鱼网络钓鱼攻击可以通过采取相同的预防措施来避免攻击,例如仔细检查电子邮件及其随附的附件和链接,留意可疑的目的地或参数。

5、鱼叉式网络钓鱼攻击

鱼叉式网络钓鱼攻击是指一种有针对性的网络钓鱼攻击,攻击者花时间研究他们的预期目标,通过编写与目标相关性极强的消息来完成攻击。通常鱼叉式网络钓鱼攻击使用电子邮件欺骗,电子邮件发送人可能是目标信任的人,例如社交网络中的个人、密友或商业伙伴,使得受害者难以发觉。

6、勒索软件

勒索软件是一种流行的木马,通过骚扰、恐吓甚至采用绑架用户文件等方式,使用户数据资产或计算资源无法正常使用,并以此为条件向用户勒索钱财。这类用户数据资产包括文档、邮件、数据库、源代码、图片、压缩文件等多种文件。赎金形式包括真实货币、比特币或其它虚拟货币。

7、密码攻击

密码是大多数人访问验证的工具,因此找出目标的密码对黑客来说非常具有吸引力。攻击者可能试图拦截网络传输,以获取未经网络加密的密码。他们通过引导用户解决看似重要的问题来说服目标输入密码。

一些安全性较低的密码很容易被攻击者获取,例如“1234567”。此外,攻击者还经常使用暴力破解方法来猜测密码,即使用有关个人或其职位的基本信息来尝试猜测他们的密码。例如,通过组合用户的姓名、生日、周年纪念日或其他个人信息破译密码。

8、SQL注入攻击

SQL注入攻击是指后台数据库操作时,如果拼接外部参数到SQL语句中,就可能导致欺骗服务器执行恶意的SQL语句,造成数据泄露、删库、页面篡改等严重后果。按变量类型分为:数字型、字符型;按HTTP提交方式分为:GET注入、POST注入、cookie注入;按注入方式可分为:报错注入、盲注、堆叠注入等等。

常见的网络攻击方法和防御技术

网络攻击类型

侦查攻击:

搜集网络存在的弱点,以进一步攻击网络。分为扫描攻击和网络监听。

扫描攻击:端口扫描,主机扫描,漏洞扫描。

网络监听:主要指只通过软件将使用者计算机网卡的模式置为混杂模式,从而查看通过此网络的重要明文信息。

端口扫描:

根据 TCP 协议规范,当一台计算机收到一个TCP 连接建立请求报文(TCP SYN) 的时候,做这样的处理:

1、如果请求的TCP端口是开放的,则回应一个TCP ACK 报文, 并建立TCP连接控制结构(TCB);

2、如果请求的TCP端口没有开放,则回应一个TCP RST(TCP头部中的RST标志设为1)报文,告诉发起计算机,该端口没有开放。

相应地,如果IP协议栈收到一个UDP报文,做如下处理:

1、如果该报文的目标端口开放,则把该UDP 报文送上层协议(UDP ) 处理, 不回应任何报文(上层协议根据处理结果而回应的报文例外);

2、如果该报文的目标端口没有开放,则向发起者回应一个ICMP 不可达报文,告诉发起者计算机该UDP报文的端口不可达。

利用这个原理,攻击者计算机便可以通过发送合适的报文,判断目标计算机哪些TC 或UDP端口是开放的。

过程如下:

1、发出端口号从0开始依次递增的TCP SYN或UDP报文(端口号是一个16比特的数字,这样最大为65535,数量很有限);

2、如果收到了针对这个TCP 报文的RST 报文,或针对这个UDP 报文 的 ICMP 不可达报文,则说明这个端口没有开放;

3、相反,如果收到了针对这个TCP SYN报文的ACK报文,或者没有接收到任何针对该UDP报文的ICMP报文,则说明该TCP端口是开放的,UDP端口可能开放(因为有的实现中可能不回应ICMP不可达报文,即使该UDP 端口没有开放) 。

这样继续下去,便可以很容易的判断出目标计算机开放了哪些TCP或UDP端口,然后针对端口的具体数字,进行下一步攻击,这就是所谓的端口扫描攻击。

主机扫描即利用ICMP原理搜索网络上存活的主机。

网络踩点(Footprinting)

攻击者事先汇集目标的信息,通常采用whois、Finger等工具和DNS、LDAP等协议获取目标的一些信息,如域名、IP地址、网络拓扑结构、相关的用户信息等,这往往是黑客入侵之前所做的第一步工作。

扫描攻击

扫描攻击包括地址扫描和端口扫描等,通常采用ping命令和各种端口扫描工具,可以获得目标计算机的一些有用信息,例如机器上打开了哪些端口,这样就知道开设了哪些服务,从而为进一步的入侵打下基础。

协议指纹

黑客对目标主机发出探测包,由于不同操作系统厂商的IP协议栈实现之间存在许多细微的差别(也就是说各个厂家在编写自己的TCP/IP 协议栈时,通常对特定的RFC指南做出不同的解释),因此各个操作系统都有其独特的响应方法,黑客经常能确定出目标主机所运行的操作系统。

常常被利用的一些协议栈指纹包括:TTL值、TCP窗口大小、DF 标志、TOS、IP碎片处理、 ICMP处理、TCP选项处理等。

信息流监视

这是一个在共享型局域网环境中最常采用的方法。

由于在共享介质的网络上数据包会经过每个网络节点, 网卡在一般情况下只会接受发往本机地址或本机所在广播(或多播)地址的数据包,但如果将网卡设置为混杂模式(Promiscuous),网卡就会接受所有经过的数据包。

基于这样的原理,黑客使用一个叫sniffer的嗅探器装置,可以是软件,也可以是硬件)就可以对网络的信息流进行监视,从而获得他们感兴趣的内容,例如口令以及其他秘密的信息。

访问攻击

密码攻击:密码暴力猜测,特洛伊木马程序,数据包嗅探等方式。中间人攻击:截获数据,窃听数据内容,引入新的信息到会话,会话劫持(session hijacking)利用TCP协议本身的不足,在合法的通信连接建立后攻击者可以通过阻塞或摧毁通信的一方来接管已经过认证建立起来的连接,从而假冒被接管方与对方通信。

拒绝服务攻击

伪装大量合理的服务请求来占用过多的服务资源,从而使合法用户无法得到服务响应。

要避免系统遭受DoS 攻击,从前两点来看,网络管理员要积极谨慎地维护整个系统,确保无安全隐患和漏洞;

而针对第四点第五点的恶意攻击方式则需要安装防火墙等安 全设备过滤DoS攻击,同时强烈建议网络管理员定期查看安全设备的日志,及时发现对系统存在安全威胁的行为。

常见拒绝服务攻击行为特征与防御方法

拒绝服务攻击是最常见的一类网络攻击类型。

在这一攻击原理下,它又派生了许多种不同的攻击方式。

正确了解这些不同的拒绝攻击方式,就可以为正确、系统地为自己所在企业部署完善的安全防护系统。

入侵检测的最基本手段是采用模式匹配的方法来发现入侵攻击行为。

要有效的进行反攻击,首先必须了解入侵的原理和工作机理,只有这样才能做到知己知彼,从而有效的防止入侵攻击行为的发生。

下面我们针对几种典型的拒绝服务攻击原理进行简要分析,并提出相应的对策。

死亡之Ping( Ping of death)攻击

由于在早期的阶段,路由器对包的最大大小是有限制的,许多操作系统TCP/IP栈规定ICMP包的大小限制在64KB 以内。

在对ICMP数据包的标题头进行读取之后,是根据该标题头里包含的信息来为有效载荷生成缓冲区。

当大小超过64KB的ICMP包,就会出现内存分配错误,导致TCP/IP堆栈崩溃,从而使接受方计算机宕机。

这就是这种“死亡之Ping”攻击的原理所在。

根据这一攻击原理,黑客们只需不断地通过Ping命令向攻击目标发送超过64KB的数据包,就可使目标计算机的TCP/IP堆栈崩溃,致使接受方宕机。

防御方法:

现在所有的标准TCP/IP协议都已具有对付超过64KB大小数据包的处理能力,并且大多数防火墙能够通过对数据包中的信息和时间间隔分析,自动过滤这些攻击。

Windows 98 、Windows NT 4.0(SP3之后)、Windows 2000/XP/Server 2003 、Linux 、Solaris和Mac OS等系统都已具有抵抗一般“Ping of death ”拒绝服务攻击的能力。

此外,对防火墙进行配置,阻断ICMP 以及任何未知协议数据包,都可以防止此类攻击发生。

泪滴( teardrop)攻击

对于一些大的IP数据包,往往需要对其进行拆分传送,这是为了迎合链路层的MTU(最大传输单元)的要求。

比如,一个6000 字节的IP包,在MTU为2000的链路上传输的时候,就需要分成三个IP包。

在IP 报头中有一个偏移字段和一个拆分标志(MF)。

如果MF标志设置为1,则表面这个IP包是一个大IP包的片断,其中偏移字段指出了这个片断在整个 IP包中的位置。

例如,对一个6000字节的IP包进行拆分(MTU为2000),则三个片断中偏移字段的值依次为:0,2000,4000。

这样接收端在全部接收完IP数据包后,就可以根据这些信息重新组装没正确的值,这样接收端在收后这些分拆的数据包后就不能按数据包中的偏移字段值正确重合这些拆分的数据包,但接收端会不断偿试,这样就可能致使目标计算朵操作系统因资源耗尽而崩溃。

泪滴攻击利用修改在TCP/IP 堆栈实现中信任IP碎片中的包的标题头所包含的信息来实现自己的攻击。

IP分段含有指示该分段所包含的是原包的哪一段的信息,某些操作系统(如SP4 以前的 Windows NT 4.0 )的TCP/IP 在收到含有重叠偏移的伪造分段时将崩溃,不过新的操作系统已基本上能自己抵御这种攻击了。

防御方法:

尽可能采用最新的操作系统,或者在防火墙上设置分段重组功能,由防火墙先接收到同一原包中的所有拆分数据包,然后完成重组工作,而不是直接转发。

因为防火墙上可以设置当出现重叠字段时所采取的规则。

TCP SYN 洪水(TCP SYN Flood)攻击

TCP/IP栈只能等待有限数量ACK(应答)消息,因为每台计算机用于创建TCP/IP连接的内存缓冲区都是非常有限的。

如果这一缓冲区充满了等待响应的初始信息,则该计算机就会对接下来的连接停止响应,直到缓冲区里的连接超时。

TCP SYN 洪水攻击正是利用了这一系统漏洞来实施攻击的。

攻击者利用伪造的IP地址向目标发出多个连接(SYN)请求。

目标系统在接收到请求后发送确认信息,并等待回答。

由于黑客们发送请示的IP地址是伪造的,所以确认信息也不会到达任何计算机,当然也就不会有任何计算机为此确认信息作出应答了。

而在没有接收到应答之前,目标计算机系统是不会主动放弃的,继续会在缓冲区中保持相应连接信息,一直等待。

当达到一定数量的等待连接后,缓区部内存资源耗尽,从而开始拒绝接收任何其他连接请求,当然也包括本来属于正常应用的请求,这就是黑客们的最终目的。

防御方法:

在防火墙上过滤来自同一主机的后续连接。

不过“SYN洪水攻击”还是非常令人担忧的,由于此类攻击并不寻求响应,所以无法从一个简单高容量的传输中鉴别出来。

防火墙的具体抵御TCP SYN 洪水攻击的方法在防火墙的使用手册中有详细介绍。

Land 攻击

这类攻击中的数据包源地址和目标地址是相同的,当操作系统接收到这类数据包时,不知道该如何处理,或者循环发送和接收该数据包,以此来消耗大量的系统资源,从而有可能造成系统崩溃或死机等现象。

防御方法:

这类攻击的检测方法相对来说比较容易,因为它可以直接从判断网络数据包的源地址和目标地址是否相同得出是否属于攻击行为。

反攻击的方法当然是适当地配置防火墙设备或包过滤路由器的包过滤规则。

并对这种攻击进行审计,记录事件发生的时间,源主机和目标主机的MAC地址和IP地址,从而可以有效地分析并跟踪攻击者的来源。

Smurf 攻击

这是一种由有趣的卡通人物而得名的拒绝服务攻击。

Smurf攻击利用多数路由器中具有同时向许多计算机广播请求的功能。

攻击者伪造一个合法的IP地址,然后由网络上所有的路由器广播要求向受攻击计算机地址做出回答的请求。

由于这些数据包表面上看是来自已知地址的合法请求,因此网络中的所有系统向这个地址做出回答,最终结果可导致该网络的所有主机都对此ICMP应答请求作出答复,导致网络阻塞,这也就达到了黑客们追求的目的了。

这种Smurf攻击比起前面介绍的“Ping of Death ”洪水的流量高出一至两个数量级,更容易攻击成功。

还有些新型的Smurf攻击,将源地址改为第三方的受害者(不再采用伪装的IP地址),最终导致第三方雪崩。

防御方法:

关闭外部路由器或防火墙的广播地址特性,并在防火墙上设置规则,丢弃掉ICMP协议类型数据包。

Fraggle 攻击

Fraggle 攻击只是对Smurf 攻击作了简单的修改,使用的是UDP协议应答消息,而不再是ICMP协议了(因为黑客们清楚 UDP 协议更加不易被用户全部禁止)。

同时Fraggle攻击使用了特定的端口(通常为7号端口,但也有许多使用其他端口实施 Fraggle 攻击的),攻击与Smurf 攻击基本类似,不再赘述。

防御方法:

关闭外部路由器或防火墙的广播地址特性。在防火墙上过滤掉UDP报文,或者屏蔽掉一些常被黑客们用来进Fraggle攻击的端口。

电子邮件炸弹

电子邮件炸弹是最古老的匿名攻击之一,通过设置一台计算机不断地向同一地址发送大量电子邮件来达到攻击目的,此类攻击能够耗尽邮件接受者网络的带宽资源。

防御方法:

对邮件地址进行过滤规则配置,自动删除来自同一主机的过量或重复的消息。

虚拟终端(VTY)耗尽攻击

这是一种针对网络设备的攻击,比如路由器,交换机等。

这些网络设备为了便于远程管理,一般设置了一些TELNET用户界面,即用户可以通过TELNET到该设备上,对这些设备进行管理。

一般情况下,这些设备的TELNET用户界面个数是有限制的。比如,5个或10个等。

这样,如果一个攻击者同时同一台网络设备建立了5个或10个TELNET连接。

这些设备的远程管理界面便被占尽,这样合法用户如果再对这些设备进行远程管理,则会因为TELNET连接资源被占用而失败。

ICMP洪水

正常情况下,为了对网络进行诊断,一些诊断程序,比如PING等,会发出ICMP响应请求报文(ICMP ECHO),接收计算机接收到ICMP ECHO 后,会回应一个ICMP ECHO Reply 报文。

而这个过程是需要CPU 处理的,有的情况下还可能消耗掉大量的资源。

比如处理分片的时候。这样如果攻击者向目标计算机发送大量的ICMP ECHO报文(产生ICMP洪水),则目标计算机会忙于处理这些ECHO 报文,而无法继续处理其它的网络数据报文,这也是一种拒绝服务攻击(DOS)。

WinNuke 攻击

NetBIOS 作为一种基本的网络资源访问接口,广泛的应用于文件共享,打印共享, 进程间通信( IPC),以及不同操作系统之间的数据交换。

一般情况下,NetBIOS 是运行在 LLC2 链路协议之上的,是一种基于组播的网络访问接口。

为了在TCP/IP协议栈上实现NetBIOS ,RFC规定了一系列交互标准,以及几个常用的 TCP/UDP 端口:

139:NetBIOS 会话服务的TCP 端口;

137:NetBIOS 名字服务的UDP 端口;

136:NetBIOS 数据报服务的UDP 端口。

WINDOWS操作系统的早期版本(WIN95/98/NT )的网络服务(文件共享等)都是建立在NetBIOS之上的。

因此,这些操作系统都开放了139端口(最新版本的WINDOWS 2000/XP/2003 等,为了兼容,也实现了NetBIOS over TCP/IP功能,开放了139端口)。

WinNuke 攻击就是利用了WINDOWS操作系统的一个漏洞,向这个139端口发送一些携带TCP带外(OOB)数据报文。

但这些攻击报文与正常携带OOB数据报文不同的是,其指针字段与数据的实际位置不符,即存在重合,这样WINDOWS操作系统在处理这些数据的时候,就会崩溃。

分片 IP 报文攻击

为了传送一个大的IP报文,IP协议栈需要根据链路接口的MTU对该IP报文进行分片,通过填充适当的IP头中的分片指示字段,接收计算机可以很容易的把这些IP 分片报文组装起来。

目标计算机在处理这些分片报文的时候,会把先到的分片报文缓存起来,然后一直等待后续的分片报文。

这个过程会消耗掉一部分内存,以及一些IP协议栈的数据结构。

如果攻击者给目标计算机只发送一片分片报文,而不发送所有的分片报文,这样攻击者计算机便会一直等待(直到一个内部计时器到时)。

如果攻击者发送了大量的分片报文,就会消耗掉目标计 算机的资源,而导致不能相应正常的IP报文,这也是一种DOS攻击。

T

分段攻击。利用了重装配错误,通过将各个分段重叠来使目标系统崩溃或挂起。

欢迎关注的我的头条号,私信交流,学习更多的网络技术!

戏说WYF——网络安全之中间人攻击

最近娱乐圈的大瓜,吴x凡和都x竹的事件不知道大家吃瓜吃的如何?

我在这里是看的津津有味,从双方的决战到警方的通告,实在是颇有趣味。

我们关注下警方的通告,就会发现这里面竟然隐藏着关于网络安全方面的知识。

中间人攻击 一个由来已久的名词,它从很久以前便出现了。

简单的描述下,就是 A 和 B 通过某种渠道进行沟通,这时候出现了一个 C,他通过 某种方式 介入到A与B的沟通中来,并且使A相信了C就是B,同时B也相信了C就是A。这时,A给B的信息就相当于是C给B发的,也就是说C不论传递的是什么消息,B都会认为这是A传递的。同理,对应到B给A的消息也就是这样。此时 C 就是我们语义里的 中间人 ,他所作的破坏就是 中间人攻击 。

我们不难看出,C在这里可以做的事情很多:

我这里以一次普通的Http请求为例:

假设客户端A向服务端B发送请求体为 我爱你宝贝 ,B响应体为 宝贝我也爱你 。C通过某种方式成为了A、B中的中间人,此时C改动了A的请求为 宝贝,我爱你,但我出车祸了,急需5000元,速打至xxxxxx ,B收到了消息,执行了转账5000元的操作,然后响应体变成 宝贝,钱已经到账,好好养病 ,随后C将这个响应改回 宝贝我也爱你 ,这时C就完成了一次信息篡改,并且产生实际的上的危害( B转账5000元 )。

这里,刘某迢虚构身份骗取都某竹的信任,我们可以将其看成刘某迢( 中间人C )成功获取都某竹( 客户端A )的信任( 获取到了客户端A与服务端B通讯的相关凭证 )

刘某迢( 中间人C )利用获取的信息冒用都某竹名义与吴某凡律师( 服务端B )联系( 通过相关凭证与服务端建立了连接 ),以双方达成和解为名索要300万元赔偿,并将自己和都某竹的银行账户一并发给吴某凡律师( 篡改伪造了客户端A的相关请求,并准备获利 )

同时,刘某迢使用“北京凡世文化传媒”微信号,自称系吴某凡律师,与都某竹协商( 中间人C建立与客户端A的连接 )达成300万元的和解赔偿,但双方未签署和解协议( 向客户端A转发发送服务端B的响应 )。

7月11日,吴某凡母亲分两次向都某竹账户转账50万元( 服务端信任了中间人C并执行了相关转账操作 )。此后,未得到钱款的刘某迢继续冒充都某竹,向吴某凡律师索要剩余250万元未遂( 中间人C后续操作未被服务端B信任,拒绝了,这步操作可能是源于客户端A的权限不足以支撑服务端B的操作了,而不是中间人C被发现了 )。后又冒充吴某凡律师要求都某竹签署和解协议,否则索回50万元。都某竹同意退款后,刘某迢冒充吴某凡律师将本人的支付宝账号提供给都某竹,都某竹陆续向该账号转账18万元( 中间人C向客户端A发起退款操作通知,客户端A执行了 )。

刘某迢被抓获后,对其诈骗犯罪事实供认不讳。目前,该人已被朝阳公安分局依法刑事拘留。( 中间人攻击里面信息篡改是可能会被发现的 )

服务端和客户端的通讯可以进行加密,这样中间人即使获得了消息,也无法破解消息的真实内容或者对消息进行篡改

Https请求就是在原本的Http请求上新增了加密层,因此Https请求会比Http请求要安全,但Https请求也被中间人攻击。

如果中间人C知道加密方式,并且可以成功骗取A和B的信任,那么加密消息这个屏障就相当于是白设置了。

可是沟通是必须要进行的,那么我们应该怎么处理呢?

可以采用证书形式,也就是说,加密方式我们变为非对称加密,并且把证书作为公钥在加密的一开始就传给对方,这样对方就可以在连接建立的一开始就确定对方究竟是不是真正的那个他,如果不是,那么我们可以直接拒绝传递数据。

Https中就是这样的,在连接建立的最开始,服务端就先把证书下发到客户端了,并且供客户端进行鉴权,此时如果证书不对,客户端会主动关闭连接的。

这个方案就无法结合真实事件去说明了。

其实中间人攻击的前提是双方在某些情况下无法暴露自己的身份,因此另一方无法判断沟通的另一方是不是本人。所以问题的解决方法就变为了如何确定对方的身份,而我们给出的那些方法,其实就是用于确定身份的。

比如说加密,其实就是加密方式对于双方来说是已知的,而对于三方是未知的,因此对应情况下,我们就默认对方并不会对外公布加密方式。也就是说能知道加密方式的就是对方。身份由此确定

证书确认呢,则是通过双方都认可的某些三方发布的身份证明,或者双方直接都有对方的身份证明,最终也是为了确认身份。

吴某凡的这个事件整体令我感觉大跌眼镜,但是确是讲中间人攻击的最好的一件事,没想到现实生活中竟然发生了这种事件。

不过,这类事也可以看出,计算机里的很多情况其实都是有真实世界的缩影的,比如各种设计模式,所以我们在学习计算机的时候,可以结合真实情况想想,现实生活中如果有类似的情况应该怎么解决呢?

0条大神的评论

发表评论