WiFi流量劫持—— 长缓存脚本投毒测试

深信服安全团队详解网络钓鱼植入木马病毒的全过程 背景概述 近日,深信服终端安全研究团队中捕获到了一个木马程序,攻击者通过网络钓鱼的手段诱导受害者点击运行邮件中附带的木马程序,结合正常的Adobe CEF Helper程序进行攻击;在局域网内通过共享目录进行传播,并在用户主机上留下后门程序进行窃密或者其他恶意行为。 详细分析 从受害主机上的情况来看,病毒主要有三个部分构成: 木马的启动程序Explorer.exe其实为正常的Adobe CEF Helper程序,是Adobe Creative Cloud程序的组件之一: 该组织 阅读详情

基于此原理,我们用NodeJS来实现一个简单的样例。得益于node强大的IO管理,以及各种封装好的网络模块,我们可以很容易实现这个想法:

  

  • 开启一个特殊的DNS服务:所有域名都解析到我们的电脑上。并把Wifi的DHCP-DNS设置为我们的电脑IP。
  • 之后连上Wifi的用户打开任何网站,请求都将被我们的node服务收到。我们根据http头中的host字段来转发到真正服务器上。
  • 收到服务器返回的数据之后,我们就可以实现网页脚本的注入,并返回给用户了!
  • 当注入的脚本被执行,用户的浏览器将依次预加载各大网站的常用脚本库。我们将其感染,并设置超长的缓存时间。

  于是大功告成!

  

 

 

  为了方便测试和控制,已把整个流程:DNS、HTTP代理、代码分析和注入都使用NodeJS编写,并整合在一起。下面就来测试一下!

  获取Demo: (https://github.com/EtherDream/closurether)

$ git clone https://github.com/EtherDream/closurether.git

  运行:

$ node main

  启动成功的话,会输出:

[SYS] local ip: 192.168.1.250
[DNS] running 0.0.0.0:53
[WEB] listening 0.0.0.0:80

  当然,192.168.1.250这是我本地的IP,推荐使用固定的IP地址。打开无线路由器-DHCP配置,将主DNS设置为自己的IP,重启路由。

  到此,你已经控制了整个无线网络的流量了!

  用另一台电脑连上你的wifi:

  

  

  这时会发现,ping任何域名,不出意外的话都会返回你的IP。

复制代码
$ ping www.baidu.com
PING www.baidu.com (192.168.1.250): 56 data bytes
Request timeout for icmp_seq 0

$ ping www.google.com
PING www.google.com (192.168.1.250): 56 data bytes
Request timeout for icmp_seq 0
复制代码

  

  打开任意网页,一切正常。我们可以在node控制台看到用户访问的每一个请求。

  

  

  当然这时网页上什么效果也没出现。这个Demo毕竟是个间谍程序,怎么可能会有界面呢?

  想看效果的话修改项目里的asset/inject.js,往里面加一条:

alert('Hello World');

 

  这时再刷新页面,效果出现了!

  

  打开任意网页的源文件,发现其中都注入了inject.js这个脚本的内容。为了隐蔽性,这里将注入的脚本伪装成运营商的url,别人还以为是联通宽带插的广告 ^_^

  具体想伪装成什么地址,可以在config.json里配置。

  

  脚本内容正是asset/inject.js文件:

  

  到此,我们已实现把javascript代码注入到wifi网络流量里了!

  下面测试我们的终极目标:能穿越到未来执行的脚本时光机。

  

  前面仔细观察的话,不难发现inject.js里多出一大堆url,这些正是我们需要让用户预加载并缓存的各大网站脚本。具体原理在上一篇里已经详细讲解了。

  如果想入侵更多的网站,往tool/url.txt里添加。运行:

$ phantomjs sniffer.js

  node将自动更新注入脚本的内容。

  要想预加载并缓存一个脚本很容易,只需new Image().src='...'。当然有少数浏览器不支持,不过ie和chrome都是支持的。尽管js文件并不是一个图片,但仍然会缓存。

  上一篇文章已说明,为了减少一次请求大量脚本文件消耗的带宽,我们并不返回真正的原始脚本文件,而是一个很小的“桩文件”,用来启动我们的入侵代码,以及恢复原始脚本文件。

  因此这个“桩文件”代码量非常少,区区百来字节而已。例如hao123网站下的某个已被感染了的脚本:

  

  我们创建两个script元素,来加载外网的入侵代码,以及恢复原始脚本代码,使网页能正常运行。注意:原始脚本url后面的?1必不可少,否则又会从缓存里加载被感染的当前脚本,进入死循环。

  使用document.write的好处在于,它创建的脚本是异步加载顺序执行的。所以在原始脚本未加载完之前,后面的脚本不会执行,避免了未定义错误的发生。

  入侵代码的url可以在config.json里hacker_url字段配置。为了保证未来被感染的脚本被唤醒时,能正常调出你的入侵代码,所以选择一个可靠的外网来存放。

  本Demo演示如何入侵并截获网易首页的账号,可以参考代码:http://jslog.sinaapp.com/ad.js

  

  下面把wifi从我们的KFC热点切换到家里Home-AP的。

      

  这时用户的流量已完全不在我们的可控之中,看我们的脚本是否仍能从沉睡之中唤醒呢?

  打开www.163.com,一切正常~

  

  输入用户名密码,一切正常~

  

  似乎并没有感觉到任何的异常。回到我们自己的电脑上来看看,后台的笼子里是否有猎物捕捉到。。。

      

  很好,我们的入侵代码已成功执行。在用户离开了我们的网络之后依旧能够运行!

  事实上,只要用户不清空缓存(或者强制刷新),这段代码终将附着在用户的硬盘缓存里,直到缓存过期。有可能是1个星期,甚至数月的时间。

  所谓一时失足成千古恨莫过于此。一时大意连接了一个wifi热点,不经意间间谍已潜入你的浏览器缓存里。。。

  

  ==============================

  使用NodeJS,我们只需数百行代码就实现了这个想法。当然,简单的同时,缺点也是不言而喻的。node只提供了传输层的网络接口,我们无法操作底层网络数据。所以只能使用DNS劫持的方法来获得用户的流量。因此也就产生了一个非常纠结的问题:

  怎样才能确定用户查询的域名是HTTP主机呢?

  由于我们把所有的域名都解析到了自己的电脑上,因此包括其他的网络程序数据也转发到了我们这里。然而我们的node只监听了tcp:80端口,对于其他的端口则是完全忽略的。

  即使我们监听了其他端口,我们也无法把收到的数据转发到真实的服务器 —— 我们根本不知道发到哪个地址上!

  HTTP之所以能实现转发,得益于头部有个host字段;而非HTTP协议,甚至包括HTTPS,我们只能收到一堆二进制数据,然后就不知道的该交给谁了。

  

  此问题虽然无法避免,但也有一定程度的解决方案:

  1.) 事先收集各大网站的域名。之后用户查询的域名在列表里的话,直接返回自己的电脑IP;否则转发给外网DNS。

    当记录足够多的话,我们可以拦截住用户大多数的网站流量。

  但要收集大量的网站域名并不容易,而且仍会有不少的遗漏。因此我们使用更简单的方法:

  

  2.) 仍然将所有的域名解析到自己电脑上,但域名TTL时间很短,几秒后就过期。

    如果在之后的几秒时间里,收到访问这个域名的http请求(host字段是这个域名),那么就认为这个域名是http服务的;

    如果规定时间里没有收到,那么就当做非http服务的域名。当域名ttl过期后,下次再查询这个域名时,就解析到外网真实的服务器IP了。反正不是http协议,收到了也没用。

  

  当然方法2也有很大的问题,如果用户仅仅ping了一个网站的域名,之后的几秒时间里并没有访问该网站,于是也被归为非http域名了。

  所以方法1和2要配合着使用,效果才会更好些。事实上基于DNS的流量劫持还有更大缺陷:

  • 如果用户手工设置的DNS怎么办?比如8.8.8.8的用户就非常多。
  • 不是80端口的网站又如何是好?难道我们要把1~65535的端口都监听吗?
  • 一个网站域名下同时有http和其他服务了,拦截就导致那个服务不可用了。
  • 最麻烦的当属纯IP的网站,那么就完全无法拦截了~

  纠结之处就不再吐槽,不然就永远实现不了我们的想法了,以后再使用node扩展慢慢完善。

  即便面临着不少问题,我们的Demo仍能顺利跑起来 —— 完全按照我们的预想运行!

  

  

  ==============================

  当然,你在想这招也只能获取普通的账号而已,对于https加密的账号就无能为力了。

  的确如此,不过别忘了https网站是如何登陆的呢?是用户在地址栏一个字符一个字符的敲入https...然后回车吗?

  下一篇将演示如何把javascript注入到支付宝网页,并截获用户的账号和密码。

  事实上本Demo里已包括了https页面的注入代码,下回详细讲解原理及应用。

WiFi流量劫持—— 截获支付宝账号 前两篇讲述了长缓存投毒的原理和实现。用户只要在我们的wifi下随便看个网页,就能植入一堆超长潜伏期的后门脚本。   究其原因,还是因为登陆页面的安全性不够。明文传输的网页,总是能轻而易举的注入脚本代码,因此存在风险也就不足为奇。   所以在必要的场合使用HTTPS加密传输,就能完全避免这类安全隐患。这意味着我们的入侵脚本对HTTPS无能为力了吗?   如果从数据解密的角度来说,确实如此。 ... 阅读详情

相关推荐

node-dhcp:使用纯JavaScript编写的DHCP服务器和客户端

node-dhcp是在node.js之上的符合RFC的DHCP客户端和服务器实现。 动机 DHCP服务器可用于配置整个本地网络。 可以用DHCP服务器来组织的典型参数是IP地址,网关/路由器,DNS服务器等等。 DHCP已有很长的历史,并且在市场上,商业上和开放源代码中都建立了完善的解决方案-那么为什么要重新实施呢? 我正在寻找功能强大且可高度配置的简约DHCP服务器。 我遇到的第一个问题是:我想直接在Macbook上为Raspberry PI提供IP地址而无需进行静态配置。 但是,Apple几乎不可能用较新版本的OSX配置板载DHCP服务器。 第二个动机是这个。 在家庭自动化和物联网时代

实战!使用手机进行wifi入侵

出门在外,总离不开手机,手机总离不开网络,而网络就涉及到WiFi了。到一个地方总会问下这里的wifi密码多少,公共场所的wifi其实特别不安全,表面上风平浪静,其实你连接上wifi之后,你所输入的账户密码,个人信息等一些敏感信息都被某个暗中观察的设备一览无余。作者写这篇文章的初衷是让大家提起警惕,起到有安全意识作用。下面我为大家演示如何使用手机进行wifi入侵,手机操作的局限不亚于电脑,只要你手机配置好,也是一样可以在手机装个linux系统和电脑进行一样的操作攻击,只是手机打字比较慢。

jennycisp的博客 1万+

R语言,charls数据库清洗、基线特征描述、logistics回归、rcs模型、森林图

【代码】R语言,charls数据库清洗、基线特征描述、logistics回归、rcs模型、森林图。

2402_87751128的博客 2512

探索网络配置的新境界:node-dhcp项目介绍

探索网络配置的新境界:node-dhcp项目介绍 在当今的数字化世界中,网络配置的灵活性和自动化变得越来越重要。特别是在家庭自动化和物联网(IoT)的背景下,一个高效且可编程的DHCP服务器变得不可或缺。今天,我们将深入探讨一个开源项目——node-dhcp,它提供了一个基于Node.js的RFC合规DHCP客户端和服务器实现。 项目介绍 node-dhcp项目旨在提供一个最小化、高度可配置且稳定...

gitblog_01093的博客 625

【WebLogic】Linux图形化界面安装WebLogic 14.1.2.0

Linux系统图形化界面安装WebLogic 14.1.2.0.0版本

cnskylee的博客 838

Cursor AI编程工具保姆级安装指南:从下载到中文界面设置(含免费额度说明)

本文提供Cursor AI编程工具的保姆级安装与设置教程。详细指导从官网下载、安装到中文界面切换的每一步,并重点说明其每月500次高级模型调用的免费额度策略。通过个性化设置与核心插件推荐,帮助开发者快速上手,提升AI辅助编程效率。

weixin_29191761的博客 672

JS投毒的另一种尝试

半个月前看了EtherDream写的那篇wifi流量劫持和JS投毒,随手就在公司实验室里折腾了一下,头一次接触这个领域,感觉挺新鲜的。然后又看到sh4dow@lcx.cc写了一篇《内网DNS投毒技术劫持会话》,我决定把我做的东西也分享一下。0×01 ***思路1、用树莓派建立一个AP,诱使别人过来连接。2、在树莓派里,设定DNS,指向一台代理主机(其实就是中间人)。3、在代理...

weixin_34096182的博客 629

工业4.0 底层逻辑

工业4.0 的概念已经被滥用了,它与物联网,工业物联网等概念一样,几乎什么都往里面装。演变成了一句口号和愿景。许多人并不清楚工业4.0的底层逻辑到底是什么?如何遵循工业4.0 的思想构建新一代智能制造系统?并没用清晰地展示工业4.0的技术路线图。

姚家湾博客 1994

流量劫持 —— 浮层登录框的隐患

传统的登录框 在之前的文章流量劫持危害详细讲解了 HTTP 的高危性,以至于重要的操作都使用 HTTPS 协议,来保障流量在途中的安全。   这是最经典的登录模式。尽管主页面并没有开启 HTTPS,但登录时会跳转到一个安全页面来进行,所以整个过程仍是比较安全的 —— 至少在登录页面是安全的。 对于这种安全页面的登录模式,黑客硬要下手仍是有办法的。在之前的文章里也列举了几种最常用的方

真理部 695

SAP物料主数据归档详解(物理删除)

顾问们的回答肯定的统一的不能,只能打上删除标记。物料设置好需要删除的物料号这里我们需要删除的物料是AG88,其中,若不选“考虑无删除标记的物料”,需要将需要归档的物料MM06打删除标记。平时在操作系统过程中经常会不小心创建出很多无用的物料主数据,但是系统只能通过MM06打上删除标记,但是物料最终在系统中还是可以查询到的。6、执行已设置变式的归档程序,执行完毕,点下图中的“Job”,每次执行完归档程序会产生两条作业。然后设置好开始的参数和假脱机的参数,三个都是绿灯就可以执行归档的操作,物理上删除物料主数据。

我小时候很黑的博客 5525

YOLOv11改进 - 卷积Conv | PConv(Pinwheel-shaped Conv): 风车状卷积用于红外小目标检测 | AAAI 2025

本文介绍了风车状卷积(PConv)和基于尺度的动态(SD)损失在YOLOv11中的结合应用。PConv采用不对称填充,通过特殊结构设计、卷积运算和分组卷积技术,能更好地适应红外小目标的像素高斯空间分布,在少量增加参数的情况下极大扩展感受野。SD损失可根据目标大小动态调整尺度和位置损失的影响。我们将PConv集成到YOLOv11的主干网络低层,并在相关配置文件中进行设置。实验证明,YOLOv11 - PConv在IRSTD - 1K和SIRST - UAVB数据集上取得显著性能提升,验证了方法的有效性和泛化能

魔改工程师的博客 1334

利用msf进行内网的木马渗透详细教程

内网渗透木马测试

m0_52332592的博客 4642

Android平台实现Airplay的方法及源代码

Airplay是由苹果公司推出的一项无线音视频传输技术,它允许用户将音频、视频和照片从iOS设备(如iPhone、iPad)或Mac电脑无线传输到支持Airplay的设备(如Apple TV、智能音箱等)。具体的解码和播放方式取决于你选择的库和技术。当Android设备启动AirplayService服务后,它将监听来自iOS设备的连接请求,并在建立连接后接收、解码和播放音视频数据。在AirplayService类的onStartCommand()方法中,我们需要处理Airplay的请求。

CyberLynxX的博客 1599

无线 WiFi 流量劫持

文章目录实验目的:实验原理:实验内容:实验步骤:步骤一:有线网卡联网步骤二:开放式假冒AP配置步骤三:开启假冒AP步骤四:配置Apache服务器步骤五:连接假冒 AP 实验目的: 熟悉hostapd软件、dnsmasq软件、iptables软件以及wapache软件 掌握假冒AP的过程 实验原理: 在无线网卡上使用 hostapd 开启一个伪造的开放 ap,然后用 dnsmasq 为连接该 ...

jiet07的博客 3446

【DaVinci Developer专题】-41-APP SWC如何读取写入NVM Block数据

APP SWC Port如何Read读取/Write写入NVM Block数据; DaVinci Developer中的Calibration Parameter/Per-Instance Memory/Service Need如何配置。

「汽车电子助手」的博客 4469

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

nodejs 监控ip地址变化_只需6招, 轻松搞定IP地址管理难题

企业IP地址管理现状“互联网+”行动浪潮下,ICT改造和新系统引入加速进行。然而,最基础的网络地址管理环节却成为了企业信息化的最短板,严重阻碍了企业的信息化进程,主要表现在:1、落后的IP地址管理方式自互联网诞生至今从未改善。1994年中国首次接入互联网,至今已经过去了20多年。20年间,网络带宽不断提速、计算机硬件不断升级,操作系统持续更新换代……与之相反,企业仍旧使用20年前的ex...

weixin_39844880的博客 771

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

Kali 使用ettercap模拟局域网内DNS劫持

本次实验皆为虚拟机内网测试!!!

weixin_53570232的博客 826

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

如何五分钟实现无线WEP网络入侵(ZZ)

<br /><br />相信了解无线网络的读者都知道安全性是无线网络的先天不足,正是因为他的传播通过空气,所以信号很容易出现外泄问题,相比有线网络来说信号监听变得非常简单。部分用户通过WEP加密的方式来保护网络通讯数据包避免被监听者破译,不过WEP加密在现今这个安全技术飞速发展的时代已经不再保险,网上也有很多介绍实现无线WEP入侵的方法。今天笔者就再介绍一个更为精简的方法,让我们可以在五分钟之内实现无线WEP网络的入侵,将WEP加密密钥轻松还原出明文。<br />一,五分钟实现无线WEP入侵的特点:<br

conanlrj的专栏 1417

Wi-Fi定位劫持

一、 Wi-Fi定位原理 在Apple官方条款《关于隐私和定位服务》一文中有这样一句话:“如果启用了‘定位服务’,您的设备会定期将附近 Wi-Fi 热点和信号塔的地理标记位置发送给 Apple,以便扩充 Apple 的众包 Wi-Fi 热点和信号塔位置数据库。”通过这句话的描述...

1296

WiFi流量劫持—— JS脚本缓存投毒

在上一篇《WiFi流量劫持—— 浏览任意页面即可中毒》构思了一个时光机原型,让我们的脚本通过HTTP缓存机制,在未来的某个时刻被执行,因此我们可以实现超大范围的入侵了。 基于此原理,我们用NodeJS来实现一个简单的样例。得益于node强大的IO管理,以及各种封装好的网络模块,我们可以很容易实现这个想法: 开启一个特殊的DNS服务:所有域名都解析到我们的电脑上。并把Wifi的DHCP-DNS设置...

我的博客 891

【智能路由器】离线缓存投毒实现分析

【智能路由器】系列文章连接 http://blog.youkuaiyun.com/u012819339/article/category/5803489 在路由器上实现广告植入已不是什么新鲜技术,绝大部分免费公共wifi上几乎都实现了广告植入,而这些wifi可能正是靠植入广告来获取一些收入。 今天arvik和童鞋们一起聊聊一下路由器下一种小小的hacker技术——离线缓存投毒 我们知道广告植入的

图像、视频、算法、Linux 1997

wifi流量劫持 —— html5离线储存投毒,WiFi流量劫持—— 浏览任意页面即可中毒...

E:\NodeJS\closurether\tool\cache-sniffer>phantomjs sniffer.js== www.hao123.com ====================-2 / +360 http://s0.hao123img.com/res/js/track.js?381633== www.taobao.com =================...

weixin_36059638的博客 287

【前端安全】web缓存投毒

核心概念 缓存 web缓存位于用户和应用程序服务器之间,用于保存和提供某些响应的副本。在下图中,我们可以看到三个用户一个接一个地获取相同的资源: 缓存技术旨在通过减少延迟来提升页面加载速度,还可以减少应用程序服务器上的负载,同时达到防止Dos攻击的目的。 缓存键 缓存的概念可能听起来简单明了,但它隐藏了一些风险的假设。 每当缓存服务收到对资源的请求时,它需要确定: 是否已保存此指定资源的副本 是否可以使用该副本进行响应 是否需转发给应用程序服务器 确定两个请求是否正在尝试加载相同的资源可能是很棘手的问

'Ablaze 的专栏 3404

【有啥问啥】大模型应用中常听说的投毒实验是什么?

数据投毒(Data Poisoning)模型中毒(Model Poisoning)后门攻击(Backdoor Attacks)大模型投毒实验是一个严重的安全问题,需要在数据收集、模型训练、验证和部署的各个环节采取有效的防范措施。通过数据审查、模型验证、安全审计和用户反馈等手段,可以有效降低投毒攻击的风险,确保大模型的安全和可靠性。在人工智能技术不断发展的今天,模型的安全性问题将越来越受到关注,只有通过不断提升安全防护措施,才能应对日益复杂的安全威胁。

Chauvin的博客 3745

Nodejs的学习Ⅲ(cheerio、Puppeteer、网络协议、简单服务器搭建)

一、cheerio cheerio是jquery核心功能的一个快速灵活而又简洁的实现,主要是为了用在服务器端需要对DOM进行操作的地方 cheerio是nodejs的抓取页面模块,为服务器特别定制的,快速、灵活、实施的jQuery核心实现。适合各种Web爬虫程序。 安装: npm install cheerio 特点 熟悉的语法:cheerio实现了jQuery的一个子集,去掉了jQuery中所有与DOM不一致或者是用来填浏览器的坑的东西,重现了jQuery最美妙的API 快到没朋友:cheerio使用

胡图图不糊涂的博客 2333

纯nodejs简易实现DNS解析服务器

dns-server A DNS server app written by pure Nodejs for develop and test use. Only support IPv4 now. To resolve specified domain name to specified IP using keyword-matching algorithm. Useful for fron...

小蒙面侠的博客 5551
上一篇: WiFi流量劫持—— 浏览任意页面即可中毒!
下一篇: ubuntu 下配置tomcat
goodspringin
博客等级 码龄14年 3粉丝 33原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值