相关审计论文

相关标签

基于无线路由器的Wi-Fi审计程序设计与实现

发布时间:2019-09-12 16:48

  摘 要:为了解决目前许多公共场所提供的免费 Wi-Fi 信号存在巨大公共安全隐患的问题,防止不法分子利用免费 Wi-Fi 散布虚假与有害信息,影响社会治安,通过在 Wi-Fi 路由器上嵌入网络审计程序,采集并关联终端用户身份信息与用户上网内容,然后将审计数据存储到数据中心作进一步分析与处理。在实际应用中,Wi-Fi审计路由器能够有效审计并采集用户上网行为,为网络安全维护提供了基础数据。因此,在路由器端进行网络 流量审计监控的方法简单、有效,审计率可达到 99%以上。

  关键词:Wi-Fi;嵌入式;路由器;网络审计

  0 引言

  近年来,随着物联网技术的快速发展与无线网络的普及 ,人 们生活中越来越离不开 Wi-Fi(Wireless Fideli? ty)。如今几乎所有智能手机和笔记本电脑都支持 Wi-Fi 通信方式,越来越多智能终端设备也支持通过无线方式接入互联网[1-2]。提供 Wi-Fi 的场所也不断增加,如火车站、宾馆、商场等,因此可能存在一些人利用公共网络匿名散 播谣言或发表攻击性言论的情况,网络安全成为当今不容忽视的问题[3]。自 2006 年起,公安部已将 WLAN 安全纳入网络安全范畴,并对其进行审查,只要是面向公众提供Wi-Fi 服务的场所,必须安装符合公安部 82 号令的互联网安全审计系统[4]。

  审计系统需要依赖路由器等硬件设备采集用户上网行为。路由器等网关设备作为终端设备与互联网之间的桥梁,所有网络数据都必须经过网关设备,以提升数据质量[5-6]。随着物联网的发展,现有路由器等网关设备性能得到了大幅提升。以路由器为例,嵌入式操作系统 OpenWRT 被应用于诸多路由器品牌中,常见的有 TP-Link、小米、极路由等。此外,OpenWRT 系统作为 Linux 的一个嵌入式版本,支持多种主流处理器,可移植性强。同时,OpenWRT 系统操作简单,适用于嵌入式软件的定制开发[7-8]。

  针对不同业务需求,网络审计方法也略有不同。王泽旺[9]基于 HTTP 协议内容进行分析,通过旁路监听的方式进行数据采集,重点分析 HTTP 协议相关内容;王庆刚等[10] 采集 2.4G 频段 MAC 数据帧,通过 python 解析内容并存储于本地;郭凯[11]基于 Windows 平台,利用 WinPcap 获取与分析流经网卡的所有数据。以上几种方法都实现了网络审计功能,但大多都是基于服务器旁路方式进行网络流量抓取,可移植性不强,也没有对用户个人信息进行采集与关联,不符合公安部的网络审计要求。

  本文采用基于 OpenWRT 操作系统的路由器,并在路由器上开发了一个网络审计客户端,包含认证模块与审计模块。用户连接路由器时必须先认证身份,然后才能访问互联网。与此同时,审计客户端会同步解析用户上网行为,将其上网日志发送至公安数据中心备份,以供公安网络安全查询或舆情预警。

  1 总体设计

  1.1 整体业务结构设计

  网络审计的主要目的是将上网用户的个人信息与该用户上网行为进行关联,提供给公安网警作进一步分析。审计流程分为 3 个步骤:① 用户身份获取;② 用户上网行为采集;③ 将用户身份与上网行为发送到数据中心进行存储,并将用户及其行为相关联[12]。整体业务系统物理结构如图 1 所示。

  图 1 整体业务系统结构

  其中审计路由器系统结构如图 2 所示。路由器的基础操作系统为 OpenWRT,除基本路由功能外,审计程序独立运行在操作系统上,随路由器系统一起启动,可利用监听路由器设备的无线网卡实现对无线数据的内容审计功能。

  图 2 路由器系统结构

  审计模块功能流程如图 3 所示。设备连接到无线路由器后,审计程序检查该设备是否已通过认证,若尚未认证,则弹出 portal 并要求用户进行认证操作。同时通过监听无线网卡,采集终端设备通信的网络数据包进行内容解析,上传到数据中心并与设备已认证的用户信息关联,形成一条记录。

  图 3 网络审计流程

  1.2 路由器操作系统选择

  审计程序运行在无线路由器设备之上,常见路由器系统有 OpenWRT、DD-WRT、Tomato 等[13]。其中 DD-WRT 系统符合用户使用习惯,操作也很简单;Tomato 系统虽然稳定性略佳,但是支持的硬件类型较为局限;相比而言,Open? WRT 更贴近开发者使用习惯,且支持用户安装软件。因此,本文选择 OpenWRT 系统作为审计路由的操作系统[14]。 OpenWRT 是基于 Linux 内核的一个开源嵌入式系统,主要用于路由器等智能设备中。OpenWRT 系统有着良好的网络特性,因此 OpenWRT 可作为路由器的基础操作系统。同时 OpenWRT 是开源系统,开发者们为 OpenWRT 提供了大量源码以及适用的 ipk 包。由于 OpenWRT 具有低成本、低功耗、体积小的特性,其被广泛应用于需要软硬结合的智能化嵌入式开发项目中[15]。

  OpenWRT 系统有如下特征:① OpenWRT 以 Linux 内核为基础,可以剪裁,非常便于定制开发;②OpenWRT 系统包含 BusyBox 工具包,BusyBox 是一个在嵌入式 Linux 中被广泛应用的 shell 工具包,集成了常用的 Linux 命令和工具,非常符合开发者使用习惯;③ OpenWRT 系统还包含OPKG 工具,OPKG 是一种轻量级的嵌入式软件包管理系统,可管理软件包的下载、安装、删除与升级[16]。

  综上所述,OpenWRT 系统以其高度模块化的设计,可方便开发者移植各个功能,既为路由器上的审计程序开发提供了极大便利,又提供了适配的运行环境,所以本文选择 OpenWRT 系统作为审计路由器的底层操作系统。

  1.3 审计程序主要技术介绍

  1.3.1 libpcap 介绍

  libpcap 是 Unix/Linux 平台下专门用于采集网络数据包的工具,而且是开源软件。许多网络数据捕获软件都依赖于 libpcap,例如 Tcpdump。libpcap 函数库提供了 C 语言接口,可以在大多数类 Unix 平台下运行。此外,winpcap 与 libpcap 类似,主要应用于 Windows 环境[17]。

  libpcap 抓取流程可大致分为如下 3 步:首先在数据链路层增加一个旁路处理,将网卡收到的数据包拷贝一份, 发送至包过滤器;然后包过滤器根据用户事先定义的规则,自动选择保存还是丢弃;最后通过内存缓冲区将数据 包上传给上层应用[18]。具体流程如图 4 所示。

  图 4 libpcap 工作原理

  libpcap 抓取的数据包格式为特定格式的数据流,只需从外到里依次去掉各层协议添加的报头,即可获取该数据 包中的各个字段信息。以太网数据帧包含 4 部分:目的地址、源地址、帧格式和数据,其中帧格式标识帧数据类型, 例如 0x0800 标识为 IP 数据,再根据 IP 协议,IP 数据的第 10 个位置为传输层协议标识,06 表示 TCP 协议,17 表示 UDP 协议等。通过层层剥离的方式解析已获取的数据包,结合一些已知特征值,即可准确获取用户具体上网日 志[19]。

  1.3.2 wifidog 介绍

  wifidog 是一款开源软件,常用于路由器的 portal 认证, 且支持 OpenWRT 系统,用户群体较多。wifidog 的工作原理主要是基于系统防火墙 iptables,并接收认证服务器传递的认证状态信息,在路由器端进行拦截或放行操作。每当新用户连接 Wi-Fi 并通过路由器接入互联网时,wifidog 会获取新用户的此次操作,并返回一个重定向到认证服务器的 http 请求给用户,用户通过认证后,wifidog 即修改 ipta? bles,放行该用户 IP[20]。认证流程如图 5 所示。

  具体流程如下:①用户连接 Wi-Fi,wifidog 监控新设备上线,通过防火墙进行拦截,然后发送 307 报文将用户重定向到认证服务器的认证登录页面;② 在认证服务器登录页面输入认证基本信息(用户名、密码),向服务器发送认证请求;③ 认证成功后,认证服务器通过 302 报文,将携带 token 信息的请求重定向到 wifidog;④ wifidog 向认证服务器发起确认,认证成功则修改防火墙配置,并将用户请求重定向到认证成功页面,至此认证完毕[21]。

  通过 wifidog 一方面可拦截未经认证的终端上网行为, 另一方面能够非常容易地获取用户个人信息。认证方法也有多种,最常见的是用户通过输入手机号接收临时密码进行身份信息认证,或者让用户先注册一个账号,通过“用户名+密码”方式进行身份认证。

  2 审计系统实现

  2.1 审计模块实现

  用户上网行为采集主要依赖于 libpcap 函数库进行实现,一个完整的采集流程分为以下步骤:

  (1) 查找网络设备。利用 pcap_lookupdev()方法查找可用网卡,并返回第一个网络适配器名称。若无可用网卡,则在参数 errbuf 中存储错误信息。

  (2) 打开网络设备。pcap_open_live()方法的返回值是一个 pcap_t 结构体类型的指针,可以理解成一个捕获句柄,也是 libpcap 中其它函数经常用到的重要参数。

  pcap_t * pcap_open_live (const char *device, int snaplen,int promisc,int to_ms,char *errbuf其中第一个参数 device 为网络设备名,snaplen 参数为数据包抓取长度,promisc 参数为网卡混杂模式配置,to_ms参数用于设置数据包返回时长,单位为 ms,errbuf 参数用于存放错误信息。

  (3) 获取网络参数。pcap_lookupne(t )方法用于获取网络设备的 IP 地址和子网掩码等信息。

  (4) 设置过滤规则。在抓包过程中通常会增加过滤规则,一方面过滤掉不需要的数据包,另一方面也能提高运行效率。libpcap 中使用 BPF(Berkeley Packet Filter,BPF)过滤数据包,而且将 BPF 语言封装成更简单的语法。这里需要用到以下两个函数:

  (5) 获取数据包。pcap_loop()方法用于获取数据包。其函数结构如下:

  通常将第 2 个参数 cnt 的抓包个数设置为负数,可以一直循环抓包,第 3 个参数是回调函数。需要说明的是, 回调函数必须为以下格式:

  (3) 添 加 设 备 信 息 完 成 后 ,wifidog 执 行 authenti? cate_clien(t ),将设备信息与认证服务器记录进行比较,根据服务器返回结果执行相应动作。一般 AUTH_DENIED 表示验证失败,AUTH_ALLOWED 表示验证成功。验证失败时会再次将终端设备重定向至认证服务器,验证通过时会通过 fw_allow()函数放行终端流量。fw_allow()函数是指在 iptables 的 mangle 表中添加一条以该设备的 mac 为源的记录,对其流量进行打标,之后检查到该标识则会放行,具体命令为:pcap_pkthdr 指针中主要存储时间戳与数据包长度,pkt 用于存放数据。pcap_loop()方法收到足够多的数据包时会自动调用回调函数,回调函数再根据捕获的数据帧解析, 获取用户上网行为。

  (6)释放网络接口。最后调用 pcap_close()方法关闭网络接口对象并释放资源,整个流程结束。

  2.2 认证模块实现

  认证模块基于开源项目 wifidog 实现,用于获取终端用户身份。wifidog 通过 3 个核心线程实现主要功能,分别为客户端检测线程、wdctrl 交互线程及认证服务器心跳检测线程。客户端检测线程用于检测设备终端状态,若认证超时,则对该设备作登出处理;wdctrl 交互线程主要用于进程间通信;认证服务器心跳检测线程用于在 wifidog 与认证服务器之间保持心跳机制[22]。

  本文重点研究路由器上的认证模块,对认证服务器端不作过多研究。wifidog 客户端实现认证主要有以下几个关键步骤:

  (1) wifidog 启动时会维护一个设备信息链表,里面包含终端 IP 与 mac 等信息;接下来 wifidog 调用 httpdGetCon? nection()函数监听终端上线,监听到终端后,函数将终端IP 等信息一并打包交给 thread_httpd 线程进行处理; thread_httpd 线程中的 httpdProcessReques(t )函数读取用户 socket 中的数据,若读取到的内容在设备信息链表中未曾出现,表明该设备还没有与服务器进行过交互,httpd_send404()函数将该设备重定向至认证服务器,并执 行 回 调 函 数 http_callback_404() ;回 调 函 数 中 的http_send_redirect_to_auth()方法用于重定向路径,例如重定 向 路 径 通 常 为 :http://authserver_addr/login/? gw_id= xxx&gw_address=xxx&gw_port=xxx&url=www.xxx.com, 接 下来设备将与认证服务器进行验证交互,获取用户认证信息。

  (2) 设备与认证服务器交互之后被重定向回来, 被 wifidog 监听到,于是再次进行数据检查。若此次可以在设备信息链表中查询到关键字,且被认证服务器重定向回 来 时 携 带 auth 、 token 字 串 , 于 是 wifidog 执 行http_call?MARK --set-mark“tag至此,设备上线认证流程完毕。

  3 工程验证

  该方案已在某品牌路由器中得到了实际应用,且大规模部署在某市。从公安数据中心可以查看路由器中实时审计采集的用户上网数据,从而为公安技侦以及舆情监控提供数据支持。

  4 结语

  本文主要利用 3 个开源项目 OpenWRT、libpcap 与wifidog,设计并实现了一种基于无线路由器的 Wi-Fi 审计程序。该方案通过嵌入式路由器实现,不仅降低了运行成本,而且开发较为容易,在应用中也通过了实践检验。当然,该设计方案也存在一些缺陷,比如在网络数据流量大的情况下可能存在审计效率降低的情况。此外,由于在路由器中增加了一个程序,会占用路由器现有计算与存储资源,因此该方案对无线路由器硬件要求较高,并不是通用的解决方案。未来可以针对以上不足,进行系统与程序优化,对该方案作进一步完善。

  参考文献:

  [1] 张冬杨. 2019 年物联网发展趋势[J]. 物联网技术,2019,9(2):5-6.

  [2] 张化明. WIFI 传输与接入技术的发展研究[J]. 通讯世界,2018,25(12):38-39.

  [3] 陈国飞. 网络信息时代国家安全面临的挑战研究[J]. 厦门特区党校学报,2018(1):54-59.

  [4] 中华人民共和国公安部. 互联网安全保护技术措施规定[J]. 信息安全与通信保密,2006(2):6-7.

  [5] 廖亮. 网络信息审计系统的设计与实现[D]. 西安:西安电子科技大学,2015.

  [6] 万加富. 网络监控系统原理与应用[M]. 北京:机械工业出版社,2003.

  [7] 魏超. 基于 OpenWrt 和 Arduino 的智能家居系统的研究与实现[D]. 西安:西安科技大学,2017.

  [8] 曹为华,凌强,张雷,等. 基于 OpenWrt 系统路由器的模式切换与网页设计[J]. 微型机与应用,2015,34(23):91-94.

  [9] 王泽旺. 基于 HTTP 协议内容的审计系统的设计与实现[D]. 西安:西安电子科技大学,2014.

  [10] 王庆刚,刘中烨. 基于 Libpcap 的无线网络监测系统的设计与实现[J]. 网络空间安全,2018,9(4):92-96.

  [11] 郭凯. 基于 WinPcap 的数据包捕获系统的设计与实现[D]. 西安: 西安电子科技大学,2013.

  [12] 陈琳婷. 云 WiFi 设备的认证与审计系统[D]. 广州:华南理工大学,2015.

  [13] 汝金星,葛良全. 无线路由器主流开源系统比较与分析[J]. 电子世界,2016(17):43,45.

  [14] 张晓华,张玉华. 基于路由器的开源嵌入式操作系统学习平台[J]. 单片机与嵌入式系统应用,2013,13(2):13-16.

  [15] KIM C G,KIM K J. Implementation of a cost-effective home lighting control system on embedded Linux with OpenWrt[J]. Personal andUbiquitous Computing,2014,18(3):535-542.

  [16] 李曙聪. 基于 OPENWRT 开源路由器的智能网关系统设计与实现[D]. 西安:西安电子科技大学,2014.

  [17] WEN S,XIE G. libpcap-MT:a general purpose packet capture li? brary with multi-thread[J]. Journal of Computer Research & Devel? opment,2011,48(5):756-764.

  [18] 高荣承. 基于 Linux 的网络数据捕获和分析系统的设计与实现[D]. 北京:北京邮电大学,2017.

  [19] 姜丽丽,杨晓辉. 网络协议分析系统的设计与实现[J]. 信息网络安全,2014,14(7):48-52.

  [20] 黄海,谢冬青,宋一赞. WiFi-WiMAX 异构无线网络认证机制研究[J]. 信息网络安全,2015,15(6):19-25.

  [21] 陈琳婷. 云 WiFi 设备的认证与审计系统[D]. 广州:华南理工大学,2015.

  [22] 胡雁平. 基于 Wifidog 协议的 WIFI 认证与设备配置的研究与实现[D]. 武汉:华中科技大学,2017.

毕业论文:http://www.3lunwen.com/kj/sj/3775.html

上一篇:基于嵌套Merkle hash tree区块链的云数据动态审计模型

下一篇:有关企业内部审计隐患以及预防措施剖析

     移动版:基于无线路由器的Wi-Fi审计程序设计与实现

本文标签:
最新论文