当前位置:首页 > 技术文章 > 正文内容

你的Wi-Fi网络安全吗?一文教你成功检测恶意挖矿热点

arlanguage4个月前 (01-13)技术文章33

2017 年 12 月有一则新闻称,国外一家星巴克店内的无线网络被发现植入了恶意代码,劫持网络流量,利用用户设备挖掘门罗币(XMR)。与加密货币相关的安全事件总是引人注目,我们也再次见识到了公共 Wi-Fi 的危险。

不久,Arnau Code 写了一篇文章 CoffeeMiner: Hacking WiFi to inject cryptocurrency miner to HTML requests,其中详细介绍了如何通过 MITM 攻击植入 JavaScript 代码,从而让 Wi-Fi 网络内的所有设备帮助攻击者挖矿,架构如图 2-132 所示。

在本文内容中,我们将提出一种可以检测周围 Wi-Fi 网络是否被植入挖矿代码的便捷方法。


1. 什么是 CoinHive

在星巴克挖矿事件中所使用的便是 CoinHive 挖矿程序。CoinHive 是一个提供了门罗币挖矿脚本的网站平台,攻击者将该平台提供的脚本植入到自己或入侵的网站上。一旦有用户访问加载网页上的JavaScript 代码,便会利用用户设备来挖掘门罗币。

在 CoinHive 官网中可以发现多种部署方式,包括 JavaScript 代码形式、人机验证形式、WordPress插件形式等,种类非常丰富。例如,在注册登录时的人机验证,界面如图 2-133 所示。一旦单击就会启动挖矿程序,在运算一段时间后用户才可以继续登录。

根据 JavaScript Miner 的介绍文档,将示例代码放入网站的 HTML 文件中就可以了,部署极其简单,如图 2-134 所示。

由于 JavaScript 挖掘代码的易用性及加密货币的经济价值,CoinHive 经常被不法分子所利用。例如,站长或黑客攻破网站后主动插入挖矿代码,站点本身没有挖矿脚本却被运营商链路劫持插入挖矿代码,通过广告联盟将挖矿代码随着广告分发到大量的网站上。

这次星巴克热点的挖矿事件向大家揭示了公共 Wi-Fi 网络也是容易被不法分子利用的场景。


2. 无线热点中的挖矿代码植入原理

在星巴克热点挖矿案例中,可以通过多种方式达到植入挖矿代码的目的。

(1) 在商家无线网络中,通过中间人攻击植入挖矿代码,如图 2-135 所示。

ARP 欺骗是中间人攻击中最为常见的一种。在局域网中,设备间的通信依赖于 MAC 地址(而不是 IP),每个设备都会在本地维护一个 ARP 映射表,记录 MAC 与 IP 的对应关系。所谓 ARP 欺骗,就是让目标设备在本地 ARP 表中记录错误的对应关系(如图 2-136 所示的 ARP 映射表),使其将数据发向错误的目标,从而被黑客所劫持。黑客通过对用户进行中间人攻击,进而劫持目标与网关间的通信数据,例如替换网页图片(如图 2-137 所示)、替换安装包及植入挖矿代码等。

(2) 攻击者创建钓鱼热点植入挖矿代码。在 2.4 节中我们了解到,当无线设备发现周围存在同名同加密类型的历史连接热点时,会尝试自动连接。黑客可以通过创建与星巴克热点同名的开放式热点骗取用户主动或被动连接。而该处的 DNS 是由黑客控制的,可以将所有的网页请求指向被黑客植入了挖矿代码的网页,如图 2-138 所示。


3. 检测工具的原理与实现

现有检测工具大多数使用终端上的安全软件对网络入口流量进行检测,进而发现挖矿代码,这需要设备先连接目标网络才能检测。如果想检测周边的所有热点就只能逐个连接,可预想到效率会非常低。而下面介绍的检测方法可以在无连接的情况下批量检测周边热点,这种检测方式主要基于以下两点。

① 由于恶意热点出于吸引更多用户的目的,往往是无密码的开放式热点。

② 开放式热点的通信数据是未加密的。

检测工具的原理就呼之欲出了,即监听明文的802.11 数据帧,当发现挖矿特征便进行告警。

(1) 搭建测试热点

为方便后续测试,先建立一个包含挖矿代码的开放式热点。参考 2.4 节钓鱼热点中的内容,通过hostapd 建立热点,利用 dnsmasq 提供 DHCP 及 DNS 服务,本地 nginx 提供 Web 服务并植入 CoinHive代码,最后通过 iptables 配置 Captive Portal 强制门户。如此,当移动设备连接该热点时会自动弹出窗口提示需要认证,单击后就会访问含有挖矿代码的网页了。

(2) 监听明文 802.11 数据帧

监听传递在空中的 HTTP 数据。将无线网卡配置为 Monitor 模式,切换到热点所在的 Channel,并使用 Wireshark 进行观察。命令如下:

ifconfig wlan0 down
iwconfig wlan0 mode monitor
ifconfig wlan0 up
iwconfig wlan0 channel 11

我们的目标是获取未加密的数据帧,其中的 HTTP 数据将会被 Wireshark 所解析,在图 2-139 中输入 http.response 进行 HTTP Response 帧筛选。与此同时,需要让移动设备访问目标网页,接着就能观察到一些数据。

直接尝试过滤出包含 CoinHive 特征代码的数据包 data-text-lines contains CoinHive.Anonymous,结果如图 2-140 所示。

此时便能得出结论,该热点存在 CoinHive 挖矿代码。从 wlan.sa 字段取得该热点的 MAC 地址,再结合 Beacon 帧或 Probe 帧获取该热点的名称。以上描述的方法也可以使用 Wireshark 的命令行工具Tshark 在终端中进行操作。

(3) 使用 Scapy 编写挖矿热点识别框架

我们即将打造的程序就是一个对明文 802.11 数据帧的分析器。按照这个思路,只需要添加不同的识别规则就能扩展出对攻击代码的检测了。为了便于扩展,使用 Scapy 来编写一个简单的框架。

① 安装Scapy。由于Scapy 没有对HTTP 协议进行解析,所以需要引入了scapy_http 扩展包。命令如下:

apt install python-pip
pip install scapy
pip install scapy_http

② 获取热点列表。扫描周边热点信息,以便后用,相关代码如下:

from scapy.all import *
from scapy.layers import http
iface = "wlan0"
ap_dict = {}
def BeaconHandler(pkt) :
  if pkt.haslayer(Dot11) :
     if pkt.type == 0 and pkt.subtype == 8 :
         if pkt.addr2 not in ap_dict.keys() :
             ap_dict[pkt.addr2] = pkt.info
sniff(iface=iface, prn=BeaconHandler, timeout=1)

③ 监听含有关键字的HTTP 数据包。当匹配到告警规则后,输出热点名称、MAC 地址及告警详情,相关代码如下:

filter_response = "tcp src port 80"
def HTTPHandler(pkt):
  if pkt.haslayer('HTTP'):
    mac = pkt.addr2
    if "CoinHive.Anonymous" in pkt.load:
      reason = "CoinHive"
    else:
      return
    if mac in ap_dict.keys() :
      ssid = ap_dict[mac]
      print "Find Rogue AP: %s(%s) -- %s" %(ssid, mac, reason)
    else:
      print mac

sniff(iface=iface, prn=HTTPHandler, filter=filter_response, timeout=5)

④ 监听模式及信道切换。在2.4 GHz 中,热点一般会建立在1、6、11 三个互不干扰的信道上。为了增加监听覆盖的信道,可以让程序增加信道切换功能,相关代码如下:

import os
print "[+] Set iface %s to monitor mode" %(iface)
os.system("ifconfig " + iface + " down")
os.system("iwconfig " + iface + " mode monitor")
os.system("ifconfig " + iface + " up")
channels = [1,6,11]
print "[+] Sniffing on channel " + str(channels)
while True:
    for channel in channels:
        os.system("iwconfig " + iface + " channel " + str(channel))
        ...

把以上模块组装在一起就可以使用了(完整代码见https://github.com/PegasusLab/WiFi-Miner-Detector)。如果想添加更多的检测规则,可以在HTTPHandler 函数中进行扩展。

本文节选自《黑客大揭秘 近源渗透测试》

网络安全一直是计算机领域的热点,“黑客”一词在生意参谋上的热度排名第七,随着Wifi已经遍及生活的各个角落,近源信息安全必将成为未来信息安全领域的热点。

本书由国际知名安全研究团队天马安全团队(PegasusTeam)荣誉出品,专业技术过硬,内容值得信赖;用漫画故事引出全篇的内容,富有趣味和新意;汲取多年无线渗透测试案例精华与技巧,讲解渗透测试领域全新概念“近源渗透测试”;数十位业内黑客大咖倾力推荐。

扫描二维码推送至手机访问。

版权声明:本文由AR编程网发布,如需转载请注明出处。

本文链接:http://www.arlanguage.com/post/819.html

标签: nginx 检测
分享给朋友:

“你的Wi-Fi网络安全吗?一文教你成功检测恶意挖矿热点” 的相关文章

Nginx笔记

内容介绍 1、nginx基本概念。(1) nginx是什么,能做什么事情(2) 反向代理。(3) 负载均衡。(4) 动静分离2、nginx 安装、常用命令和配置文件(1)在liunx系统中安装nginx.(2) nginx常用命令。(3) nginx 配置文件。3、nginx 配置实例 1-反向代理...

为何说捣腾 Nginx 少不了 Nginx-ui ?还自带 GPT 助手?

大家好,很高兴又见面了,我是"高级前端进阶",由我带着大家一起关注前端前沿、深入前端底层技术,大家一起进步,也欢迎大家关注、点赞、收藏、转发!什么是 Nginx UINginx UI 是一个基于 Web 的管理界面,旨在简化 Nginx 服务器的管理和配置。Yet another N...

nginx监控与调优(三)

nginx监控通常有两种方法:一是status监控;二是ngxtop监控。一、status监控使用status监控的步骤:1.确定nginx中status模块是否已安装[root@localhost sbin]# nginx -V nginx version: nginx/1.13.7 built...

php高并发的瓶颈到底在哪

php高并发的瓶颈到底在哪?是同步阻塞?还是nginx+fpm不断创建-销毁进程资源过度消耗?高并发到底是什么问题,是语言问题嘛,为什么说php不适合高并发?求大佬指点从2009年后一直用lnmp,从5.2.17一直到现在的PHP7.4,做的项目无数个,大到日IP10W+、PV50W+的平台,小到日...

docker安装php

本节将介绍在线使用Docker安装PHP解析器的步骤。通过本节的实操,您可以掌握从Docker环境的使用,PHP镜像以及Nginx服务器的拉取、导入、容器的启动的全部过程,从而具备使用Docker安装并部署PHP与ngninx的能力。本节要求您具备的基本能力有Linux,Docker,以及nginx...

Nginx 的日志 nginx的日志能否保存到日志审计里面?

Nginx 的日志主要有 2 个,一个是 access.log, 一个是 error.log。如果你不进行任何配置的话,这 2 个日志将会使用默认的日志配置,这个日志将会位于/var/log/nginx 目录中。针对虚拟主机的配置如果你使用了 Nginx 为虚拟主机的话。那么你可以在你的虚拟主机的配...