【流量劫持】沉默中的狂怒 —— Cookie 大喷发
精简版:http://www.cnblogs.com/index-html/p/mitm-cookie-crack.html
前言
上一篇文章 讲解了如何借助前端技术,打造一个比 SSLStrip 更高大上的工具。
今天我们再次使用这套战术,通过前后端的里应外合,实现一个杀手锏级的攻击方案 —— Cookie 数据大喷发。
传统嗅探
在过去,Cookie 的窃取大多通过嗅探流量来实现。
这种方法具有很强的隐蔽性,让人几乎难以察觉。然而,正因为如此,也面临一个巨大的缺陷:速度太过缓慢。
中间人只能嗅探到用户正在访问的页面,对于那些令人期待的网站,只能慢慢等了。在家庭、办公场所这些稳定的网络环境里,长久的等待或许还能得到想要的结果;但对于公共场所上网的用户,就没那么容易了。
在公共网络里,大家多少保持一些警惕,很少会去访问一些重要的网站。况且,临时的网络用户也不会停留太久。因此纯粹的流量嗅探,难以捕捉到更有意义的数据。
前端出击
既然用户不按我们的套路出牌,那么我们的前端战术就得派上用场了 —— 只要能控制页面,一切皆可由我们做主。哪怕用户就是不中圈套,我们的脚本也可以强制跳转过去,从而轻易拿下想要的 Cookie 数据。
不过强制跳转的方式也太过暴力了。尽管我们使用了劫持页面这种高调的方式,但之后的所作所为,仍需保持隐蔽。
也许你会说可以通过隐藏框架页来代替,就可大幅提升隐蔽性了。这个方式确实不错,离我们的目标又近了一步,但仍然不够完美。为什么非得用访问页面的方式来获取 Cookie,这代价不免也太大了。
事实上,Cookie 的发送和请求类型是没有任何关系的。无论是页面的访问、还是第三方资源的加载,只要目标 URL 匹配了 Cookie 数据库的路径,符合的记录最终都会被带上。或许你平时并没有注意到这一点,但我们可以马上来验证下。
我们先在页面里,发起一个第三方的资源请求:
抓到请求包,自然就获得了其中的 Cookie:
但这些数据究竟是不是完整的,能否直接利用?不多猜测,我们把它粘到其他浏览器里试试:
当我们再次刷新页面时,奇迹发生了:
通过 Cookie,我们成功还原了之前的登录状态。而这一切,仅仅从一个第三方的图片请求中获得!
所以,中间人可以使用非常轻量的方式,来获取某个站点下的 Cookie,并不需要用户主动访问该站点。
我们可以事先收集大量的网站地址,让前端间谍进行逐一侦探,从而能嗅探到相当一部分账号了:
方案优化
前后端结合战术,在此又一次得到了展现。但为了能将其发挥到淋漓尽致,我们还需进行充分优化。
路径标记
虽然我们可以通过加载第三方资源的方式,将目标站点的 Cookie 送到流量上。但中间人收到请求后又该如何处理?返回空白内容,还是代理正常页面?
如果真走一遍代理,那实在是太浪费了。既然我们已得到 Cookie,随便返回什么都可以;但若返回空内容,要是用户正好打开这个网站,那就白屏了。
为了不影响 Cookie 的发送,同时能让中间人明白这个请求是咱们自己人的,我们在请求的 URL 里加上一个特殊的标记。
当中间人发现请求带有这个暗号,自然就明白了 —— 记录下其中携带的情报,然后放心的返回空白就可以了。
因为 Cookie 的 Path
属性不包括 Query,所以加上这个记号,并不影响 Cookie 的携带。原来有哪些,现在仍一样。
此外,修改了路径还有另一个好处:即使侦探被缓存了的站点,也能产生请求流量。从而不错过任何一个目标!
DNS 加速
解决了代理问题,发送 Cookie 现在只需极小的流量。
这时的瓶颈,已不仅仅是 HTTP 流量了。因为我们事先准备了大量的网站,他们都有各自的域名,因此 DNS 查询也成为不可忽视的一部分。
为了缩短查询时间,我们可以将所有发往 UDP/53 的数据包,全转发到中间人的 DNS 服务下,并且都解析成自己的 IP。这样不仅加快域名查询的过程,而且还能给中间人节省不少带宽。
当然,如今的浏览器,对域名解析做了大量的优化。因此在前端上,速度提升或许并不明显。
但这种方式仍有极大的意义 —— 我们同时劫持了 DNS 和 HTTP,这意味着整套方案,可以不依赖互联网,进行离线攻击!这尤其适用于上网成本较高的户外环境里。
痕迹收集
当然,并不是所有账号都得通过 Cookie 成功还原的。稍微重视安全的网站,其登录会话都绑定了 IP 地址段。如果还原时的外网 IP,和用户之前使用的存在较大区别,这个 Cookie 很有可能就失效了。
但大多数时候,我们劫持的都是附近的用户,甚至是同一内网的,所以仍有不少能够还原的。
但随着安全等级的提高,一些网站不仅仅绑定 IP 地址,有的还关联了 User-Agent 等信息。在将来,甚至还会绑定用户更多的痕迹,例如屏幕分辨率、插件版本、绘图算法等等,更精确的识别用户。
为了能提高还原成功率,我们也尽可能多的收集用户信息。除了 User-Agent,我们还可以考虑通过前端代码,收集更详细的浏览器特征信息。在账号还原时,把这些信息都模拟到沙盒里,伪装到天衣无缝。
攻击演示
Demo: https://github.com/EtherDream/cookie_hijack_demo
当受害者进入我们的劫持环境里,打开任意页面,即可触发布置其中的 XSS 脚本。(当然,这里为了演示简单,把整个页面都替换了。实战中,可以参考前一篇的文章的注入方法)
我们的日志,成功记录下各种账号的 Cookie:
于是,就在这一瞬间 —— 尽管没做任何事,但众多账号已被黑客所控制:
当然,这里只演示最基本的功能,将嗅探到的 Cookie 保存在文件里。至于如何还原,有无数种方式,这里就不再介绍了。
【流量劫持】沉默中的狂怒 —— Cookie 大喷发的更多相关文章
- HTTPS-能否避免流量劫持
流量劫持是什么? EtherDream在一篇科普文章<>中详细介绍了流量劫持途径和方式. 流量劫持是一种古老的攻击方式,比如早已见惯的广告弹窗等,很多人已经对此麻木,并认为流量劫持不会造成 ...
- 【流量劫持】躲避 HSTS 的 HTTPS 劫持
前言 HSTS 的出现,对 HTTPS 劫持带来莫大的挑战. 不过,HSTS 也不是万能的,它只能解决 SSLStrip 这类劫持方式.但仔细想想,SSLStrip 这种算劫持吗? 劫持 vs 钓鱼 ...
- 【流量劫持】SSLStrip 的未来 —— HTTPS 前端劫持
前言 在之前介绍的流量劫持文章里,曾提到一种『HTTPS 向下降级』的方案 -- 将页面中的 HTTPS 超链接全都替换成 HTTP 版本,让用户始终以明文的形式进行通信. 看到这,也许大家都会想到一 ...
- WiFi流量劫持—— JS脚本缓存投毒
在上一篇<WiFi流量劫持—— 浏览任意页面即可中毒>构思了一个时光机原型,让我们的脚本通过HTTP缓存机制,在未来的某个时刻被执行,因此我们可以实现超大范围的入侵了. 基于此原理,我们用 ...
- 关于全站https必要性http流量劫持、dns劫持等相关技术
关于全站https必要性http流量劫持.dns劫持等相关技术 微信已经要求微信支付,申请退款功能必须12月7号之前必须使用https证书了(其他目前为建议使用https),IOS也是2017年1月1 ...
- Linux-某电商网站流量劫持案例分析与思考
[前言] 自腾讯与京东建立了战略合作关系之后,笔者网上购物就首选京东了.某天在家里访问京东首页的时候突然吃惊地发现浏览器突然跳到了第三方网站再回到京东,心里第一个反应就是中木马了. 竟然有这样的事,一 ...
- Web如何应对流量劫持?
虽然互联网经过多年的发展,可是网站使用的底层协议仍是 HTTP,HTTP 作为一种明文传播协议,所有的传输数据都是明文,我们都知道在通信中使用明文(不加密) 内容可能会被窃听,同时网站存在被劫持的风险 ...
- 通过BGP实现流量劫持
BGP BGP全称是Border Gateway Protocol,翻译成中文是边界网关协议,用于全球各个AS之间的路由.它的地位是毋庸置疑的,如果没有它就没有全球的因特网.因为全球各个AS都等价的维 ...
- Istio 流量劫持过程
开篇 Istio 流量劫持的文章其实目前可以在servicemesher社区找到一篇非常详细的文章,可查阅:Istio 中的 Sidecar 注入及透明流量劫持过程详解.特别是博主整理的那张" ...
随机推荐
- [C#] async 的三大返回类型
async 的三大返回类型 序 博主简单数了下自己发布过的异步文章,已经断断续续 8 篇了,这次我想以 async 的返回类型为例,单独谈谈. 异步方法具有三个可让开发人员选择的返回类型:Task&l ...
- 使用 JavaScript 和 canvas 做精确的像素碰撞检测
原文地址:Pixel accurate collision detection with Javascript and Canvas 译者:nzbin 我正在开发一个需要再次使用碰撞检测的游戏.我通常 ...
- [笔记]HAproxy reload config file with uninterrupt session
HAProxy is a high performance load balancer. It is very light-weight, and free, making it a great op ...
- pt-heartbeat
pt-heartbeat是用来监测主从延迟的情况的,众所周知,传统的通过show slave status\G命令中的Seconds_Behind_Master值来判断主从延迟并不靠谱. pt-hea ...
- 中国CIO最关心的八大问题(上)
中国CIO最关心的八大问题(上) 近期,ITValue和ValueResearch联合展开<IT决策者投资与生存状态大调查>,调查范围从关注CIO本身,延展至关注CIO所供职企业--其赖以 ...
- 命名sql数据集
所谓的命名sql其实也就是数据库里的sql语句,普元EOS里做了一定的封装,以方便在程序中的使用. 命名SQL的基本元素包括: 1. <parameterMap> parameterMap ...
- REGEX例子
作为REGEX的例子,代码9.3显示了一个给定的文件有多少行,具有给定的模式,通过命令行输入(注:有更有效率的方式来实现这个功能,如Unix下的grep命令,在这里只是给出了另一种方式).这个程序像下 ...
- ubuntu14 查找并删除所有文件名中带有特定关键词的文件
http://askubuntu.com/questions/625219/how-to-search-and-delete-files-who-contain-specific-string-in- ...
- HTML 学习笔记 JQuery(DOM 操作2)
接着上一节的将,这一节从复制节点讲起 复制节点 继续使用之前的例子 如果单击<li>元素后 需要在复制一个<li>元素,可以使用clone()方法完成.全部代码如下 <h ...
- Maven入门详解
什么是Maven Maven,鼎鼎大名,在今天之前,我对于它一直是处于一种"只闻其名不见其人"的状态.之所以说"只闻其名",是因为Maven太有名了,它是Apa ...