首页 > 开发 > Java > 正文

利用JavaScript缓存远程窃取Wi-Fi密码的思路详解

2020-07-28 14:49:43
字体:
来源:转载
供稿:网友


我一直想在这个小项目上花一些时间做一些研究,但是由于生活所迫让我总是一直繁忙。现在我终于可以抽出一些时间了继续研究这种攻击技术了,我将在本文中阐述我的研究成果。

很久以前,我学习了Vivek Ramachandran讲解的“无线局域网安全Megaprimer课程”(课程非常好,强烈推荐),顺便说一下,在我做旅行的时候,我住的那些不同的酒店都会提供Wi-Fi。毋庸置疑,我的大脑开始变得疯狂,因此我一直在思考获取Wi-Fi密码的“非常规”的方法。

Can't turn my brain off, you know.
It's me.
We go into some place,
and all I can do is see the angles.
 Danny Ocean (Ocean's Twelve)

我即将描述的想法非常简单,可能也不是什么新的思路了。尽管如此,对我来说这是一种有趣的方式,让我将放在架子上一直吃灰的Raspberry Pi重新用了起来。

思路描述

我们的想法是利用网络浏览器的缓存来窃取Wi-Fi密码。因为我需要为项目起一个名字,所以我在开发完这个项目后将其命名为“Dribble”:-)。Dribble 会创建一个虚假的Wi-Fi接入点,并等待客户端连接它。当客户端连接时,dribble会拦截对JavaScript页面执行的每个HTTP请求,并在响应中注入恶意JavaScript代码。新响应的HTTP头也会被更改,以便恶意的JavaScript代码被缓存并强制在浏览器中保留。当客户端与虚假接入点断开连接并重新连接到家庭路由器时,恶意JavaScript代码将激活,从路由器窃取Wi-Fi密码并将密码发送给攻击者。 很简单,对吧?

为了达到这个攻击目的,我必须弄清楚这三件事:

如何创建虚假接入点

1.如何强迫人们连接到这个伪造的热点 2.恶意的JavaScript代码应如何从路由器窃取密码 3.如何创建虚假的无线接入点

这非常简单,伪造的方法也包含在无线局域网安全Megaprimer课程中,并且有许多不同的github存储库和gist上的代码可以用来创建一个虚假的访问点。因此,我不会过多地描述细节,但为了完整起见,让我们讨论一下我使用的方法。我之前使用 hostapd 创建过Wi-Fi接入点,dnsmasq 作为DHCP服务器和DNS中继服务器,并使用 iptables 创建NAT网络。下面的bash脚本将创建一个非常简单的不受任何密码保护的Wi-Fi访问点。我在代码中添加了一些注释,希望能提高可读性。

#!/bin/bash# the internet interfaceinternet=eth0# the wifi interfacephy=wlan0# The ESSIDess# bring interfaces upip link set dev $internet upip link set dev $phy up################### DNSMASQ##################echo "interface=$phybind-interfaces# Set default gatewaydhcp-option=3,10.0.0.1# Set DNS servers to announcedhcp-option=6,10.0.0.1dhcp-range=10.0.0.2,10.0.0.10,12hno-hostsno-resolvlog-querieslog-facility=/var/log/dnsmasq.log# Upstream DNS serverserver=8.8.8.8server=8.8.4.4" > tmp-dnsmasq.conf# start dnsmasq which provides DNS relaying servicednsmasq --conf-file=tmp-dnsmasq.conf################### IPTABLES################### Enable Internet connection sharing# configuring ip forwardingecho '1' > /proc/sys/net/ipv4/ip_forward# configuring NATiptables -A FORWARD -i $internet -o $phy -m state --state ESTABLISHED,RELATED -j ACCEPTiptables -A FORWARD -i $phy -o $internet -j ACCEPTiptables -t nat -A POSTROUTING -o $internet -j MASQUERADE################### HOSTAPD##################echo "ctrl_interface=/var/run/hostapdinterface=$phy# ESSIDssid=$essiddriver=nl80211auth_algs=3channel=11hw_mode=g# all mac addresses allowedmacaddr_acl=0wmm_enabled=0" > tmp-hotspot.conf# Start hostapd in screen hostapdecho "Start hostapd in screen hostapd"screen -dmS hostapd hostapd tmp-hotspot.conf
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表