Hacked某安汽车车机系统

本文介绍了作者如何通过收集信息进入某安汽车车机系统的工程模式,使用暴力破解方法尝试获取密码,并通过绿盟科技的博客得到启发,最终成功获取root权限。过程中涉及adbshell的使用、开发者模式的开启以及Python脚本的编写和IDA逆向分析。
摘要由CSDN通过智能技术生成

        很久之前尝试对某安汽车的车机系统进行渗透测试,但是却卡在入口无法进入,尝试暴力破解但是字典不够强大,没能成功。前段时间看到了绿盟科技博客的《新型车机,如何攻防?》感觉有点熟悉,再次探索发现可以获得车机系统root权限,遂事后诸葛亮一波,就当是学习笔记了。

        通过在论坛、QQ群、贴吧收集到这款车型进入工程模式的方法,在拨号键盘输入*#*#888,然后点击拨号,如图:

        进入密码认证界面,输入收集到的密码:369875,如图:

        此时进入工程模式,可以看到工程模式的功能,如图:

        点击“USB切换”可以将中控台下边的USB口切换为adb模式,从而通过数据线连接车机系统adb shell。可能我们需要启动USB调试,首先点击“打开系统设置原始界面 ——> Settings”,如图:

        此时进入系统设置界面,可以看到下边有“关于智能平台”,如图:

         点击“关于智能平台”后可以看到Android 版本、硬件型号版本号等等信息,如图:

        连续点击7次版本号后开启开发者模式,然后开启USB调试,如图:

         在连接adb shell时提示需要输入密码,如图:

        当时卡在这里很久,编写Python脚本使用字典爆破了很久也没成功,Python3脚本如下:


import pexpect
import random
import sys
# Open the password dictionary file

if len(sys.argv) < 2:
    print("Usage: python3",sys.argv[0],"password.txt")
    exit(0)
else:
    print("ADB Shell Brute         --By Infiltrator")
    with open(sys.argv[1]) as f:
        passwords = f.readlines()
    adb = pexpect.spawnu("adb shell",timeout=1)
    #adb.logfile_read = sys.stdout
    # Try each password in the dictionary file
    for password in passwords:
        password = password.strip()  # Remove leading/trailing whitespace
        # Wait for the password prompt
        try:
            s = adb.expect("password:")
        except:
            print("[!] Please check adb if connected!")
            exit(1)
        # Enter the password
        print("\r[*] Testing password:",password,end='')
        adb.sendline(password)
        # Wait for the output and check if we successfully logged in
        s = adb.expect(["verify success!", "verify failed!"])
        if s == 0:
            # Login succeeded, we're done
            print("\n[+] Success! Password is:", password)
            break
        else:
            # Login failed, try the next password
            continue

         直到看到新型车机,如何攻防?,文中逆向分析获得的密码立即让我觉得很是熟悉,如图:

        我直接使用该密码就可以成功登录adb shell,同时把密码加入字典后也可以破解出来,说明脚本没问题:

         并且直接执行su命令就获得root权限,如图:

        虽然限制策略不严格但是,adb push和adb install都无法安装app,暂时就先不管这些了,先复现一下硬编码漏洞吧。

        普通权限的adb pull命令基本获取不到什么有用的信息,执行adb root切换为root权限的adb,然后在使用adb pull将车机系统的文件系统下载到本地,如图:

        由于下载的文件太多,等了几分钟也没下载完,然后就直接下载system目录了,如图: 

        在system/bin目录下发现adbd程序,如图:

        使用IDA逆向分析,通过搜索password字符串定位程序输入,然而根本找不到password这个字符串,查看所有字符串可以发现程序调用了/system/bin/verify_sh,如图:

        使用IDA分析verify_sh,同样直接搜索password字符串定位输入,然后跳转到代码上下文发现内存中Base64编码的内容:

        解码之后为8769b3ad,应该是小端序的原因,将原本的adb36987在内存中存储为8769b3ad,如图:

 

  • 2
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
准备工作   1、安装 SP_Flash_Tool,MTK 驱动.(掌讯方案MTK3561大屏导航ROOT固件:http://www.gpsmap.cc/caryindao/2488.html)。   2、准备好线刷版固件,以及自制 Recovery.img ,使用自制 Recovery.img 替换掉线刷版固件中的 Recovery.img 。   3、U 盘一个,格式化为 fat32 格式,在根目录放置 OTA 升级固件 xxx_evb3561sv_ct_66_m0-ota-xxx.zip ,以及 ROOT.zip 。 Recovery 安装   1、车机断电,从车机后侧的 microusb 口(非普通 usb 口)接电脑。   2、电脑会检测到 mtk preloader usb vcom,自动安装驱动,驱动安装完成后从电脑拔开 usb。   3、打开 SP_Flash_Tool,选择 scatter-loading file 为固件文件夹中的 mt3561T_Android_scatter.txt 。   4、仅勾选 Recovery,然后点击 download 开始刷机。   5、插入 usb,正常的话会开始刷入,底部横条走动。   6、刷机完毕拔开 usb,启动车机。 Root 安装   1、插入 u 盘将 ROOT.zip 复制到车机内置 sd 卡下。   2、在车机设置-导航设置中选择 Android 升级。   或者在导航中选择电话,输入*#*#5678#后会跳出设置。点击其他标签后选择 device 模式,此时导航可在电脑中识别为 adb 设备,使用 abd 程序 adb reboot recovery 即可。   3、车机重启后,将进入我们自制的 recovery。不成功的话可以多尝试几次。   4、进入 install,选择 sdcard 下的 ROOT.zip 进行安装。   5、安装完毕重启机器,Root 安装完毕。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值