<menu id="guoca"></menu>
<nav id="guoca"></nav><xmp id="guoca">
  • <xmp id="guoca">
  • <nav id="guoca"><code id="guoca"></code></nav>
  • <nav id="guoca"><code id="guoca"></code></nav>

    一個BLE智能手環的分析

    一顆小胡椒2022-03-29 16:32:39

    首先確定手環的 MAC 地址,使用 APP 進行掃描連接,連接成功就會顯示設備的 MAC 地址:A4:C1:38:6A:1C:BF。

    接下來解除綁定,使用 TI 的 packet sniffer 進行藍牙數據包的捕獲,插入 CC2540 后選擇好類型,開始捕獲后再查找手環進行綁定。

    因為 BLE 會隨機在 37、38、39 三個信道中選擇一個,而 packet sniffer 只能監聽一個信道,所以可能需要多試幾次才能捕獲到,其中 M->S 表示是手機發送給手環,S->M 是手環發送給手機。

    有些可疑的包標記一下,這兩個都包含了當前的步數 100,即 0x64,且都是從手機端發送一個請求之后從手環發回來的。

    在捕獲的最后階段,我摁下了幾次查找手環的命令,這應該是查找手環的震動效果。

    但是此時通過 gatttool 或者 nRFconnect 進行發送是不成功的,因為手環需要進行綁定才能通信,接下來使用 AndroidKiller 抓取 APP 的日志進行分析,查看 APP 是如何與手環進行通信的。

    打開 AndroidKiller 后連接手機,在 Android 中已找到設備中就可以看到手機了,然后點擊日志。

    點擊開始進行日志的捕獲。

    這里進行 BLE 的連接。

    BLE 連接成功,此時雖然連接成功但是仍然沒有綁定設備。

    向手環發送了一條指令:430000dc,猜測是用來進行綁定,可以先記錄下來,后邊通過 gatttool 進行驗證。

    獲取手環電量指令:27000074

    獲取步數、卡路里、距離等指令:2001000070

    獲取心率等指令:21010000c6

    (這里只是根據值大致推測了一下,并沒有逆向APP查看每個字段的范圍)

    獲取體溫數據指令:2c01000078(我還沒測過體溫,所以沒啥數據)

    查找手環指令:1008000000000001000000c00000000000000000,效果是三次長時間的震動。

    手環還支持將 APP 收到的消息推送到手環上顯示,打開該功能后給手環支持的 APP 發送消息,手環就會顯示收到的消息。

    查看一下這個過程的日志,可以發現如下信息:首先是 0a020000020e,告訴手環要推送消息。

    然后是發送人的昵稱:test,這里的指令為 0a050001746573743a

    這里是發送的消息,1234,指令為 0a05000231323334

    最后是指令 0a0100030e 表示消息都發送完了,手環可以顯示了。

    除了前后兩條指令,消息部分指令中間一部分可以很明顯知道是 ASCII 的十六進制,但是整條指令的構成需要對 APP 進行逆向分析,通過日志前面的 tag 可以知道這是在 CmdHelper.java 中實現的,使用 jadx 打開 APP,找到CmdHelper,位置在 com->runmifit.android->util->ble->CmdHelper,找到 setMessage2。

    可以看到他接收的參數是一個整形一個字符串,根據日志的上下文可以推測是 IntelligentNotificationService傳給他的參數,定位到 com->runmifit.android->sevice->IntelligentNotificationService,發現只有兩個地方調用了 setMessage2,一個傳 1 一個傳 2。

    此時再回來看一下 setMessage2 中參數 i 的用途,猜測這個是用來區分是發送人昵稱還是消息的字段。

    setMessage2 函數主要作用是構造一個 bArr2 數組給 spliteData 函數,這里主要看以下 bArr2 的構成。

    這里的 i2 是之前計算的長度,它加了5個字節作為構造出的指令的長度,bArr2[0] = 10;。

    開頭是固定的 0a,然后兩個是用來存放長度+1 的,然后是區分昵稱還是消息的字段,接著把消息拼接上,最后是一個 completeCheckCode,往上面翻一下定位到該函數。

    他只是把傳進去的數組挨個遍歷加起來然后乘上 86 再加上 90,得到的結果取末尾一字節,作為一個校驗。因為昵稱和消息內容都是用 setMessage2 函數生成的,所以構成方法一致。

    至此,消息指令的構成就分析完了,試著來構造一個消息:sec 發送的 hacked。

    sec 的 ascii 碼分別是73 65 63,長度是 3+1=4,計算最后的校驗位 0a+04+01+73+65+63=14A 即十進制的 330,330*86+90=28470,也就是 6F36,取末尾一字節 36。

    所以昵稱的指令為:0a04000173656336,同理消息的指令為:0a0700026861636b6564fc

    接下來使用 gatttool 進行驗證,需要藍牙適配器支持 ble 通信,使用命令 hciconfig hci0 up 將藍牙適配器激活。

    gatttool -I -b A4:C1:38:6A:1C:BF 進入交互模式,其中 -I 表示進入交互模式,-b 指定 MAC 地址,進入后使用 connect 進行連接,輸入 help 可以查看幫助。

    輸入 characteristics 查看所有的特征,我們要使用的句柄是 0x11。

    首先發送 430000dc 進行綁定,然后就可以發送其他的指令。例如獲取手環步數、查找手環讓手環震動、獲取手環心率等,我們先給手環推送一下之前分析的消息,測試一下判斷的是否正確。

    可以看到我們自定義的消息成功被推送到了手環上并顯示出來。

    另外既然是通過 BLE 通信的,那么打開消息通知和關閉消息通知肯定也是有對應的指令的,通過 APP 日志也可以找出來。

    附:

    021000320500010001010001ff000000000000e2  打開消息推送

    021000320500010001010000ff0000000000008c  關閉消息推送

    手環ble
    本作品采用《CC 協議》,轉載必須注明作者和本文鏈接
    接下來解除綁定,使用 TI 的 packet sniffer 進行藍牙數據包的捕獲,插入 CC2540 后選擇好類型,開始捕獲后再查找手環進行綁定。BLE 連接成功,此時雖然連接成功但是仍然沒有綁定設備。
    藍牙低功耗(BLE,Bluetooth Low Energy)協議在資源受限的設備之間實現高能效的無線通信。
    研究人員首次發現藍牙信號可作為指紋用于追蹤智能手機。 智能手機、智能手表、健身手環等移動設備常以每分鐘500 藍牙beacon的速率用來傳輸信號。這些beacon可以用于蘋果的“Find My”丟失設備追蹤服務、疫情追蹤APP、連接智能手機到其他設備等。
    如今,很多特斯拉車主都已習慣不帶鑰匙用手機解鎖車輛,但最近一位網絡安全研究人員已經展示了「無鑰匙進入」把電動汽車開走的技術,新的漏洞為人們敲響了警鐘。
    在極棒(我是極客)比賽上看到玄武的追蹤信標團隊展示的項目,效果就是在耳機近場范圍內,選手對耳機發起攻擊然后變成了一個類似airtag跟蹤器,技術評委帶上耳機后在十分鐘開車隨便選擇了一個地點,選手跟蹤耳機最終確定了評委所在地。
    隨著網絡在社會發展中重要性的不斷凸顯,網絡空間成為國家角力的“第五疆域”,網絡空間的主權博弈和沖突進一步加劇,我國網絡主權戰略體系建設態勢愈發急迫。通過對當前網絡空間絕對優勢國家——美國的戰略體系與實施機制分析與梳理,挖掘其戰略模塊與實施范式,同時與我國當前的戰略體系進行對比,思考我國戰略體系發展路徑。
    Bleeping Computer 網站披露,勒索軟件 BlackByte 帶著 2.0 版本回歸了。新版本做了大量升級,主要包括利用從 LockBit 借來的新勒索技術,創建了一個新的數據泄露網站。
    工業物聯網定義為利用工業通信技術將物聯網技術應用到自動化領域。
    Bleeping Computer 網站消息,在 Fortinet 發布 CVE-2023-27997 漏洞補丁近一個月后,數十萬 FortiGate 防火墻易受該漏洞的影響。FortiOS 連接所有 Fortinet 網絡組件,以將其集成到供應商的 Security Fabric 平臺中的操作系統,在 6 月中旬發布的公告中,供應商警告稱該漏洞可能已被攻擊者利用。
    一顆小胡椒
    暫無描述
      亚洲 欧美 自拍 唯美 另类