作者:hacker发布时间:2022-12-29分类:破解邮箱浏览:135评论:4
网络上常常有对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公钥,通过对方公钥加密数据,自己私钥解密。这样就实现了端到端加密。
实际上这 不是端到端加密 。因为不能保证服务器无法修改数据:服务器可以用公钥来加密任何的数据发给两端。
而且,按之前所说的,这种交换, 存在中间人攻击问题 。
笔者实习快四个月了,刚来公司的时候没什么任务,空闲的时候发现了安卓渗透神器dsploit,安装玩了几次。其实以前也听说过中间人攻击,也玩过ettercap,MITMf,metasploit等,但是一直没想过在Android上面实现这些功能,于是乎下载dsploit源码玩了几天。
刚好自己也是做Android相关工作的,所以有了自己写一个的想法,依葫芦画瓢开发了这个工具。
免责声明
本应用开发初衷仅为了学习,未经他人允许,对他人局域网进行的破坏,干扰等行为与本人无关。
功能概述
数据嗅探,可抓去局域网内部主机与外界通信数据
会话劫持,对局域网中的主机通过实施ARP欺骗,进行cookie欺骗,从而达到劫持会话的效果
简单web服务器功能,结合下面功能实施钓鱼欺骗
URL重定向,实现DNS欺骗功能。配合上面web服务器功能,可进行钓鱼欺骗功能待(待完成)
WiFi终结,中断局域网内主机与外界通信(待完成)
代码注入,通过数据截取,对远程主机返回的数据进行篡改,实现代码注入的效果(待完成)
截图预览
安装前提
1、安卓手机2.3及以上,必须root
2、已安装busybox
下载地址
虽然该应用目前功能单一,但是毕竟是自己慢慢写出来的,我还是会继续更新下去的。如果有想法,或者想学习的同学都欢迎和我交流
直接贡献代码
android 应用中导致https中间人攻击主要有以下三个原因:
1、没有对SSL证书进行校验;
2、没有对域名进行校验;
3、证书颁发机构(Certification Authority)被攻击导致私钥泄露。
中间人攻击是一种“间接”的入侵攻击,这种攻击模式是通过各种技术手段将受入侵者控制的一台计算机虚拟放置在网络连接中的两台通信计算机之间,这台计算机就称为“中间人”。
扩展资料:
中间人攻击的预防:
攻防为一家,有攻就有防,只要措施正确,MITM攻击是可以预防的。
1、对于DNS欺骗,要记得检查本机的HOSTS文件,以免被攻击者加了恶意站点进去;
2、其次要确认自己使用的DNS服务器是ISP提供的,因为当前ISP服务器的安全工作还是做得比较好的,一般水平的攻击者无法成功进入;
3、如果是依靠网关设备自带的DNS解析来连接Internet的,就要拜托管理员定期检查网关设备是否遭受入侵。
至于局域网内各种各样的会话劫持(局域网内的代理除外),因为它们都要结合嗅探以及欺骗技术在内的攻击手段,必须依靠ARP和MAC做基础。
所以网管应该使用交换式网络(通过交换机传输)代替共享式网络(通过集线器传输),这可以降低被窃听的机率,当然这样并不能根除会话劫持,还必须使用静态ARP、捆绑MAC+IP等方法来限制欺骗,以及采用认证方式的连接等。
参考资料来源:百度百科-中间人攻击
前言
之前为信安系统导论展示准备的实验被之前的小组“捷足先登”了,无奈只能又找别的实验,看了各个小组的题目,发现已经涵盖了大部分常见易操作的攻击方式,很难找到一个完全独立于其他人攻击方式的新实验,毕竟攻击思路都有共通之处,常用工具也就那些。
翻论坛找到一个有关中间人攻击的实验,觉得可以作为这次的展示,遂决定以此为题。
背景知识
原理介绍
1.HTTPS和HTTP
HTTPS是在HTTP应用层基础上使用SSL(完全套接层)作为子层,SSL使用数据加密技术确保数据在网络上传输而不会被截取及窃听。
2.中间人攻击
①SSLStrip (降级攻击)的工作原理及步骤
(1) 先进行中间人攻击来拦截 HTTP 流量。
(2) 将出现的 HTTPS 链接全部替换为 HTTP,同时记下所有改变的链接。
(3) 使用 HTTP 与受害者机器连接。
(4) 同时与合法的服务器建立 HTTPS。
(5) 受害者与合法服务器之间的全部通信经过了代理转发。
(6) 其中,出现的图标被替换成为用户熟悉的“小黄锁”图标,以建立信任。
(7) 这样,中间人攻击就成功骗取了密码、账号等信息,而受害者一无所知。
总而言之,SSLStrip是一种降级攻击。
②sslsplit(解密攻击)工作原理
工具的主要原理是以中间人的身份将证书插入到客户端和服务器中间,从而截断客户端和服务器之间的数据。
之前我们大多数做的都是针对于80端口的欺骗(http),也就是说,只要是超越了80端口我们就会有点棘手:比如常用的443端口(https),比如465(smtps)和587端口,这些都是通过SSL加密进行数据传输的,简单的80端口监听肯定是什么都拿不到的。这个时候,就体现出SSL证书劫持的作用了。
总而言之,SSLSplit是一种伪造证书攻击。
3.端口转发
数据包都是有原地址和目标地址的,NAT(network address translation,网络地址转换)就是要对数据包的原地址或者目标地址(也可以修改端口的)进行修改的技术。为什么我们要修改ip地址呢?是这样的互联网中只能传送公网地址的数据包,私有地址的数据包是无法传送的。这样你想下,你每天在wifi环境下看视频浏览网站的时候你的ip是什么(私有地址,你手机、pad、电脑发出来的所有数据包原地址都是私有地址。怎么在互联网上传送)。为了能让你的数据包在能在互联网上传送,必须给你一个公网ip才行。所以当你上互联网的时候,路由器会帮你把所有的数据包的原地址转换成它的wlan口的ip地址(这个就是公网ip,一般就是ADSL拨号获取的ip)。这个转换的技术就是NAT。当你所访问的服务器给你回应数据包时,路由器会把所有数据包目标地址,由它的wlan口的ip地址,改回你内网的ip地址。这样你才能上互联网。所以你每天都在使用NAT技术。
4..数据重定向的方法
如何重定向到攻击者电脑上成为靶机和服务器的中间人,其实有很多种方式。
比如:
(1)arp攻击(伪装网关)
(2)DNS劫持(伪装服务器)
(3)wifi钓鱼(之前pxy他们组做的实验就可以利用起来)
(4)修改hosts文件(把舍友暴打一顿,然后把他的电脑里的hosts文件改掉)
(5)修改默认网关(把舍友暴打一顿,然后把他的电脑里的默认网关改成自己的ip)
攻击过程
1.sslstrip攻击
①将设备设置为转发模式,这样我们的设备就可以转发目标不是我们设备的数据包。若不这样,则目标主机会出现断网的情况,arp欺骗就成了arp断网攻击。
防范方式
我们可以看到,无论是哪种攻击手段,利用的都是局域网的中间人攻击。因此一些防范方式有:
①不随意连接公共wifi
②对于arp表中的ip和MAC地址进行静态固定
③开启一些安全软件的arp防火墙
④及时更新浏览器版本或换用其他安全性高的浏览器
一些感想
找一种比较有特点的攻击方式不是那么容易,实现更不容易,这过程中遇到了各种问题,一些问题网上也找不到确切的解决方法,一度卡住后想要放弃换实验,但还是做了下来。尽管还是没能完全实现,但展示出自己的问题和疑惑也未尝不可。展示的过程中主要还是展示原理和实操过程,而对于实验的准备、中途遇到的问题以及其他实验过程,则没有时间也不必要作为展示,但这一过程其实才是实验对于我们小组成员来说最重要的。
小组成员也都很努力,也都按照自己的能力分担了不同的工作,不像操作系统的小组有人完全划水...总体来说实验还是比较成功的(强行自我鼓励),希望以后再有类似的展示能做的更完善吧。
标签:中间人攻击软件源代码
已有4位网友发表了看法:
访客 评论于 2022-12-29 11:51:02 回复
2)DNS劫持(伪装服务器) (3)wifi钓鱼(之前pxy他们组做的实验就可以利用起来) (4)修改hosts文件(把舍友暴打一顿,然后把他的电脑里的hosts文件改掉) (5)修改默认网关(把舍友暴打一顿,然后把他的电脑里的默
访客 评论于 2022-12-29 19:33:58 回复
的攻击者无法成功进入;3、如果是依靠网关设备自带的DNS解析来连接Internet的,就要拜托管理员定期检查网关设备是否遭受入侵。至于局域网内各种各样的会话劫持(局域网内的代理除外),因为它们都要结合嗅
访客 评论于 2022-12-29 17:35:34 回复
SP提供的,因为当前ISP服务器的安全工作还是做得比较好的,一般水平的攻击者无法成功进入;3、如果是依靠网关设备自带的DNS解析来连接Internet的,就要拜托管理员定期检查网关设备是否遭受入侵。至于局域网内各种
访客 评论于 2022-12-29 13:56:19 回复
: (1)arp攻击(伪装网关) (2)DNS劫持(伪装服务器) (3)wifi钓鱼(之前pxy他们组做的实验就可以利用起来) (4)修改hosts文件(把舍友暴打一顿,然后把他的电脑里的hosts文件改掉) (5)修改默认网关(把舍友暴打一顿,然后把他的电脑里的默