0x00:前言
从互联网上可以搜集到很多关于 ARM 平台下(主要还是基于 ARM+Android)的 Hacking 文章,忽略掉那些复制加粘贴的内容,剩下的大多是关于如何在安卓手机上安装 Kali Nethunter 的文章,当然还有一些部分关于在安卓上安装 Andrax 的文章。这些文章只是简单的减少了如何搭建一个可以用于 Hacking 的移动设备平台,并没有深入的、详细的去介绍该如何利用这类设备实施真实场景下的 Hacking,感觉很遗憾。出于自己的兴趣以及弥补 Android 移动平台下 Hacking 内容的缺失环节,我尝试入了一系列的实验,限于刚刚转入 IoT 研究,不足之处以及不当之处,望多多包涵,多多指点。
0x01:设备
现在的Android设备大多是触摸屏,只能通过软键盘进行操作,由于很多Hacking工具都是基于字符界面的,因此操作起来真的是别有一番滋味在心头。从实际使用情况来看,在设备的选择上不能局限于Android手机或平板,否则在真实场景下你几乎无法完成想要的操作。在设备选择上,根据实际操作经验,给出如下建议:
1、笔记本电脑
笔记本电脑的选择最好是轻便易于携带的,当然还要考虑电池以及电源适配器(充电头和线),尤其是在频繁操作的情况下。本本最好选择超极本,各大厂商均有销售,根据自己的使用习惯以及经济实力选择。其次,还可以选择普通的笔记本电脑,在一些咖啡厅,等候室等场所还是不“碍眼”的,而且基本都有外部电源供给接口。最后,不建议选择xPad(各种Pad),不论是iPad,三星Note,Google家亲生的Pad,受限于软键盘,操作起来真的很不方便。如果必须使用Pad,后文会有增强解决方案。
2、Android设备
在Android设备的选择上看似有很多可选项,但事实上并非如此。首先,将Android改造为Hacking设备必须要能够root手机,那么一些手机几乎是可以抛开不谈的,比如华为,中兴,Nokia等。再者,root软件和Hacking平台软件对设备也有一定的要求,比如Kali Nethunter对Google和一加的手机就支持特别好。再者,有些安卓手机不支持OTG或者阉割了部分网卡驱动软件,那么这类手机也要绕开,不然就会“跳坑”。因此,推荐适用的Android设备是Google系列手机和平台,一加手机(一加3t及之前手机不可OTG,而且全系不支持外置USB无线网卡)
3、其他
A)将Android设备打造为一款移动的智能“入侵”终端,root设备是必不可少的关键步骤,至于设备root的方法很多,建议刷入magisk来root,SuperU对Android7.0及后续版本不再适用。
B)Kali Nethunter和Andrax是打造智能“入侵”终端的必备系统,其根本原理就是安装一个chroot的工具包,这样可以通过chroot以root用户权限运行各种开源的Hacking工具。其实,我们是完全可以自己打造这样一个工具包的,当然要收集和完成软件包整合是一个工作量极大的事情。关于前面两个工具包的安装和部署可以度娘,Kali不建议刷机安装,Andrax建议手动下载andraxcore.tar.xz然后自行安装,都是从“坑里”爬出来以后总结的经验。
C)Android设备最大的特点就是其便携性,但正是如此,其人机交互和外围设备支持也相对较为,为了最大限度发挥其特性,可以“花小钱,办大事”,为其配置一些增强型装备,使其如虎添翼:
——WiFi网卡:包括可以空口监听的网卡以及普通的WiFi网卡
——OTG转接口:这样手机可以同时支持多种外部设备
——蓝牙键盘:如果没有笔记本电脑作为交互手段,必须直接操作Android设备,那么配备蓝牙键盘几乎是完美的解决方案,当然使用体验上还是不如笔记本。
0x02:软件平台
1、Android系统的选择
Android系统选择上,如果是Google系列设备,建议选择原厂AOSP系统,如果曾经刷过其他系统,建议先刷会官网提供的该设备最新系统,然后在安装Hacking软件系统。如果是一加系列手机,尽量选择Oneplus 3/3t以后的设备(之前的设备不支持OTG),系统上则使用原生一加氢氧系统,当然也可以尝试刷入LineageOS。至于其他设备和其他三方ROM,我没有时间和精力进行测试,因此给不出更好的建议。
之所以建议使用原生系统是因为原生 Android系统的设备兼容性最好,能够支持较多的USB无线网卡,这样才能完成基于Android设备的无线入侵。网卡选择的话,建议参考aircrack-ng官方网站上的FAQ,里面有介绍如何选择无线网卡。
2、渗透测试平台
目前,可以在Android设备上运行的Linux模拟器很多Anlinux等,但是能够集齐各种“杀人越货”工具的集成化Linux系统还是比较少的,一方面工作量大,另一方面用的人确实不多。不过,从社区的热度以及工具的评价来看,Kali Nethunter和Andrax应该算是佼佼者。
——Kali Nethunter
这是Offensive Security社区推出的产品,基于Kali Linux系统,总的来说有完善的社区支持和强大的设备支持,但是软件的整合上面还是缺少了一点努力和尝试。Kali Nethunter既可以通过刷机的方式,一劳永逸的安装,也可以先安装Kali Nethunter的APP,然后慢慢下载安装。当然,要正常使用Kali Nethunter,必须要ROOT!!!
——Andrax
Andrax有另外一个名称,Nethunter Killer(NH-Killer),确实这就是一个能够叫板Kali Nethunter的Hacking平台,解压后的应用软件所占存储空间近15GB(Kali Nethunter是10GB左右)。从工具的完整性和体验来说(很棒的黑客体验),Andrax应该能够吸走一大部分Kali粉丝,但是由于整个项目起步晚,社区不成熟,各种完档支持及其简陋,因此Andrax可以作为一个不做的尝试。
——支撑软件
termux:主要作用就是直接以设备的root用户权限访问整个系统,比如手动解压Kali Nethunter和Andrax的软件包。
sshdroid:主要作用是以设备的root用户(注意:不是模拟器的root用户)权限运行SSH服务器,这样就可以通过SSH远程控制整个设备。
Busybox:这个是刷机党最熟悉的工具之一,集成了大量Linux命令。
注意:不论是Kali Nethunter还是Andrax,其程序都是通过chroot运行的,因此其用户(不论是默认的普通用户还是root用户)都只是模拟器中的用户,不能完全控制设备,比如访问设备的根目录。
0x03:实际操作
基于Android设备的入侵,更多是在这是场景下的入侵,受限于WiFi路由器的位置和信号强度限制,Android设备通常不得不以特定的“姿势”,摆放在特定的位置,这样要直接操作Android设备就会很难受,甚至无法操作,比如手机躺着有信号,手机拿起来WiFi就断掉。综合考虑种种情形结合实际操作的经验,可以采用以下办法:
1、SSH远程控制
Kali Nethunter中的“Kali Services”提供了SSH开启功能,甚至可以将其设置为自启动(随着Kali启动而启动),这样就能够通过远程控制方式直接操作Kali。
在Andrax中,同样可以实现基于SSH和VNC的远程控制,不过在Andrax中,需要自己手动开启SSH服务,比如“sudo service ssh start”,默认密码为andrax。当然,Andrax默认账户和root账户密码都是可以更改的。至于Kali Nethunter则是提供了“Kali Service”功能,直接通过GUI启动SSH,并设置为开机自启动(确切的说,是开启Kali Nethunter后,自行启动)。
2、WiFi中继
正如前文所说,由于AP或者自身所处位置的限制,Android攻击设备或许要以“特定姿势”摆放在“特定位置”,这样就很难直接操作,甚至直接通过SSH连接Android攻击设备都很难。为了解决这个问题,可以在自己的电脑和Android攻击设备直接引入一个WiFi中继,也就是说Android和自己的设备加入同一个中间WiFi网络,这样既能解决信号问题,又能引入一层网络隔离。由于Android对于外接USB无线网卡支持普遍不好,因此要通过USB网卡引入WiFi中继很困难,不过可以通过蓝牙的方式来实现网络中继,但是蓝牙对于障碍物的穿透性更差。这个问题我个人还在想办法解决,蓝牙网络是目前可以容忍的一种方案。
3、蓝牙键盘
如果能够携带的设备有限,那么蓝牙键盘将会是一个很不错的选择,毕竟几乎所有的Android手机都自带蓝牙功能。从实际使用效果来看,蓝牙键盘用起来不如SSH远程控制体验好,但是Android还是能支持一些常见的快捷键,比如切换任务和显示桌面,这样能够方便在多个shell窗口接切换,提高工作效率,当然最重要的是不用轻易变动手机的位置和朝向,确保WiFi信号能够不断掉。
4、Shell脚本加持
在一个5-6英寸的屏幕上想要快速便捷输入Linux命令和各种快捷键甚至频繁切换终端窗口(Tab),这真的是一种噩梦般的体验,即便默认使用zsh的Andrax也是如此。在多次反复试验之后,我选择了做几个简单的shell脚本来提升易用性和操作速度。其实,脚本内容很简单,当然没有做任何的参数检查和条件判断,毕竟这只是试验。
脚本文件1.sh,将用于抓包的USB网卡设置为混杂模式
#!/bin/bash airmon-ng start wlan1
脚本文件2.sh,开启抓包模式,监听并记录空口数据
#!/bin/bash airodump-ng wlan1mon
脚本文件3.sh,在指定信道上监听WiFi数据,其中:参数1($1)表示信道号,参数2($2)表示AP的BSSID,参数3($3)表示存储抓包文件的名称
#!/bin/bash airodump-ng --ivs -c $1 --bssid $2 -w ./$3 wlan1mon
脚本文件4.sh,在AP和Station之间执行deauth攻击,迫使Station重新与AP建立WiFi连接,从而在这个过程中抓取握手包,其中参数1表示deauth包发送的数量,参数2表示AP的BSSID,参数3表示Staton的BSSID。
#!/bin/bash aireplay-ng -0 $1 -a $2 -c $3 wlan1mon
这些脚本文件都很简陋,没有做参数检查等合规性检查;此外,上述操作还有进一步自动化的空间。如果有时间进一步打磨,可以编写一个或几个脚本实现几乎全自动的WiFi握手包抓取脚本。
0x04:工具
基于Android设备的渗透更多应用于IoT场景,这是与传统Hacking最大的不同。要想进入IoT网络,一张“撬门”用的监听WiFi网卡必不可少,当然剩下的就跟传统的渗透测试差不多了。
1、WiFi网卡
WiFi网卡的选择应该算是一个非常让人头疼的问题,度娘一搜一堆关于Kali下面进行WiFi密码破解的文章或者帖子,但基本都是在VM中或者物理机上跑的Kali Linux(注意:不是Kali Nethunter,虽然都姓Kali,但是名字不一样,支持的硬件架构不一样,集成的网卡驱动也不一样),这样的话网卡的问题就好解决多了。如果是只在Kali Nethunter用WiFi网卡的话,建议先看看官方的帖子,不要贸贸然就到x宝上买“支持Kali的WiFi网卡”。关于网卡选择的标准,aircrack-ng官方网站给出了一个简易版的参考:购买哪一款网卡最好?当然,aircrack-ng也给出了一篇科普:如何判断网卡是否兼容?
WiFi网卡最重要的参数是:芯片的型号!
2、工具软件
- 无线破解工具
Aircrack-ng:这是WiFi破解的标配,至于其他在线破解的软件和APP并不推荐,一时没有那么多时间一直处于某一个IoT网络中,再者APP在线破解对于Android设备而言并不是很划算,时间开销和电能开销都很大。当然,也可以借助WiFixx钥匙帮助获取WiFi密码,后文会有所介绍。
- 密码破解工具
包括在线破解和密文破解。
- 信息搜集工具
- 网络扫描工具
- WEB渗透测试工具
许多IoT设备,比如WiFi路由器等,都提供WEB服务,因此做这样的Web渗透测试必不可少。
其实,从上述工具可以看得出,基于Android的渗透测试与传统的渗透测试之间有密切联系,当然不同点也很明显。上述软件包在Kali Nethunter和Andrax中都提供了丰富的软件支持,可以说常用软件都是全部囊括在内,甚至可以把被Kali和Andrax武装起来的手机看作是渗透测试的前端“堡垒机”,后端只需要一台能够运行CMD或者Putty之类工具的低配置超极本。
0x05:Let’s Hacking
为了不侵犯左邻右里的家庭隐私,我拿自家的网络做测试,做一个相对完整的案例分析,梳理一下基于Android设备实施IoT入侵的可能性。
1、WiFi破解
WiFi破解的方法这里就不多说了,主要方法有三种:一是,最具有普适性的抓取并破解WiFi握手包,这种方法需要把握好攻击时间(比如,你的邻居晚上都不在家,那么你在晚上抓取他家的WiFi握手包,可能性不大),再者是你与你邻居的WiFi路由器之间的距离(如果你们都是住别墅,两栋房子隔着百来米,那么你就别想在家里抓他家的WiFi握手包了)。二是,用Reaver软件破解WiFi,其原理可以参考文章,但是考虑到路由器WPS频次限制,加上手机电量的损耗,这种方法并不是非常可行。最后,可以利用“WiFiXX钥匙”等APP,帮助你找到进入IoT网络的捷径,至于如何查看该类APP保存的WiFi密码,可以参考相关文章,值得注意的是不同Android版本中,WiFi密码保存的路径和文件有所不同。
具体到我家,WiFi破解这步我就当做验证了,顺便用“WiFiXX钥匙”看了一下,我家WiFi没有泄露,而且我周围的邻居也都很谨慎。
#STEP-1:修改网卡为监听模式
#STEP-2:进入监听模式
以下是本人在网络调研基础上,设计的WiFi破解库,能够在一定程度上加速破解常用弱口令,8位长度复杂密码以及很少一部分8位以上的密码。WiFi破解库是加速WiFi密码破解的一个重要基础,但还需要适当的密码破解策略以及满足一定配置的硬件设备。
当然,字典库的建立是一个长期积累的过程,一方面需要自己去观察和思考,另一方面也可以把一些好的库拿过来用,比如weakpass网站上就有不少。
2、Hacking
A)Nmap扫描:一方面,扫描网关开放的端口;另一方面,扫描网段内存活的主机。
B)针对不同主机/设备可以实施传统的端口扫描,漏洞扫描,暴力破解等操作,在这里就不一一展开了,这方面的高手和好的文章太多。
C)针对一些IoT设备,可以在网上尤其是Github上找一些扫描及利用工具,包括前面提到的专门扫描海康威视设备的Hikpwn以及入侵路由设备的routersploit等工具。
D)最终能达到的效果包括但不限于:网关设备控制,DNS劫持,挂JS,中间人攻击,远程代码攻击,暴力破解等等。
3、Anti-Measure
为了保护个人的无线网络,计算机设备以及IoT设备免遭攻击,可以从一下方面入手提高网络的安全性。
由于WiFi网络通常是是家庭成员共用,因此不建议隐藏SSID,毕竟老人和小孩儿不会很适应这个,那么WiFi密码的设置尤为重要,尽量使用大小写混合加上数字的组合,即便是生日加上姓名缩写也行,这也比纯粹的数字密码强N倍了。
网关密码(包括无线网关)尽量不要使用默认密码,比如电信光猫登录密码为5位小写字母,而且网上有一大堆常见网关的默认登录用户名和密码。
尽量避免家人安装“XX钥匙”之内的WiFi分享应用。
每隔一段时间修改一下SSID或者WiFi密码,尤其是有朋友或亲戚来家里做客以后。