網路安全攻擊手法日新月異,瞭解常見的攻擊工具和防禦策略至關重要。SSL Strip 利用中間人攻擊,將 HTTPS 流量降級為 HTTP,竊取敏感資料。Cookie Monster 則藉由注入 <img> 標籤,攔截未設定 secure 標誌的 HTTP Cookie。針對資料函式庫的攻擊,Sqlmap 可自動檢測 SQL 注入漏洞,並執行進階操作。W3AF 則提供豐富的外掛,用於 Web 應用程式的攻擊和稽核。在無線網路方面,Wi-Fi 的普及也帶來了安全風險。不安全的預設設定、弱密碼和過時的加密技術都可能成為攻擊者的目標。因此,使用 WPA3 或更高版本的加密技術、隱藏 SSID、設定強密碼以及定期更新 AP 韌體版本都是必要的防範措施。理解 Wi-Fi 掃描和偵測的原理,以及如何使用工具進行封包分析,有助於提升網路安全意識,並採取有效的防禦措施。
SSL Strip 工具
SSL Strip 是一種用於將 HTTPS 資料流轉換為 HTTP 資料流的工具。它並不是透過魔術手段來實作這一目的,而是簡單地替換掉所有 HTTPS 連結中的協定部分。使用者必須先進行中間人攻擊(Man-in-the-Middle, MitM),使受害者的流量經過攻擊者控制的主機。
工具原理與操作流程
- 中間人攻擊:攻擊者首先需要進行一個中間人攻擊,使受害者的流量經過他們控制的主機。
- 替換協定:SSL Strip 工具會自動將受害者請求中的 HTTPS 連結替換為 HTTP 連結。
- 攔截明文資料:由於 HTTP 是明文傳輸,攻擊者可以輕鬆攔截並解讀受害者的資料。
安全風險與防範措施
- 風險:SSL Strip 主要利用 HTTPS 與 HTTP 的混淆來實作攻擊。如果使用者無法察覺這一點並繼續存取可能被篡改的網站,則可能導致敏感資料洩露。
- 防範措施:
- 確認網站識別:使用者應該確認存取的網站是否使用 HTTPS,並檢查網站證書是否可信。
- 更新瀏覽器與作業系統:保持瀏覽器和作業系統的更新,以修復已知漏洞。
- 使用安全密碼管理工具:避免在非受信任網站上輸入敏感資料。
Cookie Monster 工具
Cookie Monster 是一種用於窺探 HTTPS 頁面存取記錄並攔截 HTTP 頁面 cookie 的工具。它會記住受害者存取過的所有 HTTPS 頁面,並在受害者存取任何 HTTP 頁面時注入 <img> 標籤來攔截 cookie。
工具原理與操作流程
- 記錄存取歷史:Cookie Monster 首先記錄受害者存取過的所有 HTTPS 頁面。
- 注入標籤:當受害者存取 HTTP 頁面時,Cookie Monster 注入
<img>標籤到 HTML 中。 - 攔截 cookie:由於 HTTP cookie 未設定 secure 標誌(secure flag),它會被自動傳送給攻擊者。
安全風險與防範措施
- 風險:這種攻擊利用了許多網站尚未完全採用 HTTPS 的現實情況,以及大多數 cookie 未設定 secure 標誌。攻擊者可以透過此方式攔截敏感資料。
- 防範措施:
- 設定 secure 標誌:所有重要的 cookie 必須設定 secure 標誌,以確保它們僅透過 HTTPS 傳輸。
- 全面採用 HTTPS:網站應該完全採用 HTTPS 協定來保護所有資料傳輸。
Sqlmap 工具
Sqlmap 是一個強大的 SQL 注入測試工具。它不僅能檢測 SQL 注入漏洞,還能進行進一步操作如上傳、下載檔案、執行命令以及破解資料函式庫密碼。Sqlmap 支援多種資料函式倉管理系統(DBMS),包括 MySQL、Oracle、PostgreSQL、Microsoft SQL、Microsoft Access、SQLite、Firebird、Sybase 和 SAP MaxDB。
工具原理與操作流程
- 漏洞檢測:Sqlmap 能夠自動檢測網頁中的 SQL 注入漏洞。
- 進階操作:除了漏洞檢測外,Sqlmap 還支援上傳、下載檔案、執行命令以及破解資料函式庫密碼等進階操作。
- 支援多種 DBMS:Sqlmap 支援多種 DBMS,因此適用於不同型別的資料函式庫系統。
安全風險與防範措施
- 風險:SQL 注入是最常見且危險的一類別 Web 應用漏洞之一。如果未能及時修補漏洞,攻擊者可能會完全控制資料函式庫並竊取敏感資料。
- 防範措施:
- 使用預編譯陳述式(Prepared Statements)和引數化查詢(Parameterized Queries):這些方法能有效防止 SQL 注入攻擊。
- 輸入驗證和過濾:對所有使用者輸入進行嚴格驗證和過濾。
- 最小許可權原則:將資料函式庫許可權控制在最小範圍內。
W3AF 工具
W3AF(Web Application Attack and Audit Framework)是一個針對 Web 應用進行攻擊和稽核的框架。它類別似於 Metasploit 的 Web 應用版本,提供了豐富的外掛來進行各種 Web 應用漏洞測試。
工具原理與操作流程
- 豐富外掛支援:W3AF 提供了大量外掛來進行 SQL 注入、命令注入、本地檔案包含(LFI)、跨站指令碼(XSS)、緩衝區溢位等漏洞測試。
- 多功能工具集合:除了漏洞測試外,W3AF 還提供了暴力破解工具、資訊收集工具等多功能工具集合。
- 擴充套件性強:W3AF 支援自定義外掛開發,因此可以根據需求擴充套件其功能。
安全風險與防範措施
- 風險:Web 應用漏洞可能導致敏感資料洩露、系統被遠端控制等嚴重後果。W3AF 能夠幫助我們找到這些漏洞並進行修補。
- 防範措施:
- 定期安全稽核:定期使用 W3AF 或其他安全稽核工具對 Web 應用進行安全稽核。
- 持續更新和修補:及時更新和修補已知漏洞以防止被利用。
Wi-Fi 安全性概述
Wi-Fi 已經成為我們日常生活中不可或缺的一部分。從家庭和公司 LAN 外延展到智慧家庭裝置如手機和平板電腦電腦甚至監控攝影機等都使用 Wi-Fi 作為資料傳輸方式。
Wi-Fi 的工作原理
Wi-Fi(IEEE 802.11)透過無線電波在不同頻率下進行資料傳輸:
- 常見頻率:2.4 GHz(最常見)、3.6 GHz(僅802.11y)、5 GHz(僅802.11a/ac/ad/ah/j/n/p)。
- 分頻道:例如 2.4 GHz 分為多個頻道如1到14號頻道;而5 GHz 分為更多頻道如36號到165號頻道等。
Wi-Fi 網路可分為兩種模式:即時模式(Ad-Hoc)及基礎架構模式(Infrastructure),後者需透過無線接取點(Access Point, AP)連結所有裝置以形成星型網路結構。
安全風險及其影響
Wi-Fi 的普及性導致了其被廣泛佈署並在各種意想不到之處安裝使用:
- 包含醫療裝置、監控攝影機、公共廣告螢幕等都可能透過Wi-Fi進行無線資料傳輸而產生潛在安全隱憂。
安全風險分析:
- 不當組態: Wi-Fi 預設設定通常不夠安全, 特別是舊版加密技術如WEP已經被證明不安全且不建議再使用.
- 中間人攻擊: 攻擊者可偽裝成合法AP, 取得加密前後資料包, 或伺機破解弱點.
防範措施:
- 使用最新加密技術: WPA3或以上版本提供更強大保護.
- 隱藏SSID: 不公開SSID避免被非法找到.
- 強力密碼: 組態難以猜測密碼.
- 強化AP: 組態MAC地址過濾, 持續更新韌體版本.
分頻道表格:
以下是Wi-Fi頻道分配表格:
| 頻率 (Hz) | 頻道 | |
|
| | 2412,000,000 | 1 | | 2417,000,000 | 2 | | … | … |
此圖示展示了Wi-Fi各頻率所對應之頻道編號分配方式.
無線網路掃描與封包分析
無線網路(WiFi)已成為現代社會中不可或缺的一部分,其技術細節與運作原理值得探討。本文將介紹無線網路的協定概述、封包結構及掃描工具的開發,並透過例項說明如何使用Scapy和wifi模組進行無線網路的掃描與分析。
無線網路協定概述
無線網路協定(IEEE 802.11)定義了無線通訊的各種操作模式與封包結構。無線網路卡可以設定為多種模式,例如接入點(Access Point)、中繼器(Repeater)或監控模式(Monitor Mode)。在監控模式下,無線網路卡可以接收所有經過的封包,類別似於乙太網路卡在混合模式(Promiscuous Mode)下的行為。
正常情況下,無線網路運作在基礎設施模式(Infrastructure Mode)下。接入點會每幾毫秒傳送一次Beacon封包,告知周圍裝置有可用的網路。Beacon封包包含了網路的SSID(Service Set Identifier)、支援的傳輸速率、使用的頻道以及安全機制等資訊。
此外,客戶端也可以透過傳送Probe Request來查詢可用的無線網路。當客戶端找到想要連線的網路時,會先傳送認證封包(Authentication Packet),接著是關聯請求封包(Association Request),並且根據安全機制可能需要進行EAP握手(EAP Handshake)。這些步驟詳細說明瞭802.11網路的接入流程。
封包結構
802.11協定中定義了三種主要型別的封包:管理封包(Management Frames)、資料封包(Data Frames)和控制封包(Control Frames)。
- 管理封包:包括Beacon、Probe Request/Response、認證及關聯請求/回應等。
- 資料封包:包含實際要傳輸的資料。
- 控制封包:用於預約媒體資源及確認資料接收。
以下是一些常見的管理封包子型別:
- Association Request
- Association Response
- Probe Request
- Probe Response
- Beacon
- Authentication
- Deauthentication
每個封包都有Frame Control Header,定義了封包的型別和子型別。例如,管理封包的型別為0,控制封包為1,資料封包為2。
掃描工具開發
為了掃描周圍環境中的WiFi網路,我們可以使用Python編寫一個簡單的工具。這裡我們使用Scapy和wifi模組來完成這個任務。
所需模組
首先,我們需要安裝Scapy和wifi模組。這些模組可以透過以下命令安裝:
pip3 install scapy
pip3 install wifi
注意,wifi模組僅能在GNU/Linux系統上安裝,因為它依賴於Linux內核的Wireless API。
此外,建議安裝Aircrack-ng工具套件,這是一套強大的無線網路安全工具。
掃描程式碼
以下是一段簡單的Python程式碼,用於掃描周圍的WiFi網路:
#!/usr/bin/env python3
from wifi import Cell
interface = "wlp2s0"
for cell in Cell.all(interface):
output = "%s\t(%s)\tChannel %d\tSignal %d\tMode %s" % \
(cell.ssid, cell.address, cell.channel, cell.signal, cell.mode)
if cell.encrypted:
output += " (%s)" % (cell.encryption_type.upper())
else:
output += " (Open)"
print(output)
內容解密:
上述程式碼展示瞭如何使用Python和wifi模組來掃描周圍的WiFi網路。以下是每行程式碼的詳細解釋:
#!/usr/bin/env python3:指定這個指令碼應該使用Python 3來執行。from wifi import Cell:從wifi模組匯入Cell類別,這個類別用來表示一個WiFi網路細胞。interface = "wlp2s0":指定要使用的網路介面名稱。這裡假設使用的是wlp2s0介面。for cell in Cell.all(interface)::遍歷所有在指定介面上可見的WiFi網路細胞。output = "%s\t(%s)\tChannel %d\tSignal %d\tMode %s" % \:格式化字串來顯示每個細胞的一些基本資訊,包括SSID、MAC地址、頻道、訊號強度和模式。if cell.encrypted::檢查該細胞是否加密。output += " (%s)" % (cell.encryption_type.upper()):如果加密,則新增加密型別到輸出字串中。else: output += " (Open)":如果未加密,則新增「Open」到輸出字串中。print(output):列印預出格式化後的資訊。
這段程式碼簡單但有效地展示瞭如何使用Python和wifi模組來進行無線網路掃描。透過這樣的方法,我們可以方便地取得周圍環境中的WiFi網路資訊。
Wi-Fi 瞄準與偵測技術探討
Wi-Fi 掃描與偵測的基本原理
Wi-Fi 掃描是一種主動操作,透過傳送探查請求封包來搜尋可用的接入點(Access Points)。這些封包會被廣播到網路介面,並且接收到的回應會包含接入點的相關資訊,例如SSID(網路名稱)、地址(BSSID)、頻道、訊號強度、模式以及加密型別。這些資訊對於瞭解周遭的Wi-Fi環境非常重要。
Wi-Fi 掃描器與偵測器的差異
Wi-Fi 掃描器和Wi-Fi 偵測器在操作方式上有顯著差異。Wi-Fi 掃描器主要是主動傳送探查請求封包來搜尋可用的接入點,而Wi-Fi 偵測器則是被動地讀取網路流量,並分析資料封包來提取資訊。
此圖示展示了Wi-Fi掃描與偵測的基本流程
@startuml
skinparam backgroundColor #FEFEFE
skinparam componentStyle rectangle
title 網路安全工具與 Wi-Fi 安全性深入解析
package "資料庫架構" {
package "應用層" {
component [連線池] as pool
component [ORM 框架] as orm
}
package "資料庫引擎" {
component [查詢解析器] as parser
component [優化器] as optimizer
component [執行引擎] as executor
}
package "儲存層" {
database [主資料庫] as master
database [讀取副本] as replica
database [快取層] as cache
}
}
pool --> orm : 管理連線
orm --> parser : SQL 查詢
parser --> optimizer : 解析樹
optimizer --> executor : 執行計畫
executor --> master : 寫入操作
executor --> replica : 讀取操作
cache --> executor : 快取命中
master --> replica : 資料同步
note right of cache
Redis/Memcached
減少資料庫負載
end note
@enduml內容解密:
- 主動掃描:Wi-Fi 掃描器會傳送探查請求封包到廣播地址,這些封包的SSID設定為萬用字元,目的是搜尋周遭所有可用的接入點。例如,Netstumbler是一個常見的Windows平台上使用的Wi-Fi掃描工具。
- 被動偵測:Wi-Fi 偵測器則是被動地捕捉網路流量,並分析資料封包來提取有用資訊,如SSID、頻道及客戶端IP/MAC等。
- 技術選擇:主動掃描雖然簡單且快速,但容易被檢測到,而被動偵測則更隱蔽,但需要更多時間來捕捉足夠的資料。
- 實務應用:在實際應用中,主動掃描通常用於快速檢查周遭的Wi-Fi環境,而被動偵測則常用於長期監控和資安稽核。
Wi-Fi 偵測器範例程式碼
以下是一個使用Python和Scapy函式庫編寫的Wi-Fi偵測器範例程式碼。這個程式碼會將網路卡設定為監控模式,並且在所有可用頻道上進行擷取。
#!/usr/bin/env python3
import os
from scapy.all import *
iface = "wlp2s0"
iwconfig_cmd = "/sbin/iwconfig"
os.system(iwconfig_cmd + " " + iface + " mode monitor")
# 忽略蜂巢、探查請求/回應封包
def dump_packet(pkt):
if not pkt.haslayer(Dot11Beacon) and \
not pkt.haslayer(Dot11ProbeReq) and \
not pkt.haslayer(Dot11ProbeResp):
print(pkt.summary())
if pkt.haslayer(Raw):
print(hexdump(pkt.load))
print("\n")
while True:
for channel in range(1, 14):
os.system(iwconfig_cmd + " " + iface + " channel " + str(channel))
print("Sniffing on channel " + str(channel))
sniff(iface=iface,
prn=dump_packet,
count=10,
timeout=3,
store=0)
內容解密:
- 設定網路卡為監控模式:使用
iwconfig命令將網路卡設定為監控模式,這樣可以捕捉所有無線封包。 - 頻道跳轉:程式會迴圈遍歷所有可用頻道(1到14),並將網路卡設定為該頻道進行監聽。
- 捕捉封包:每次切換頻道後,程式會監聽3秒鐘或直到捕捉到10個封包後再切換到下一個頻道。這種技術稱為「頻道跳轉」。
- 處理封包:
dump_packet函式會處理每個捕捉到的封包,如果該封包不是蜂巢、探查請求或探查回應,則會輸出該封包的摘要和載荷。
探查請求偵測
現代電腦和智慧型手機作業系統會記住所有曾經連線過的Wi-Fi網路,並且會不斷地向環境傳送探查請求來檢查這些網路是否可用。這些探查請求可以被攻擊者利用來推測使用者曾經去過哪些地方,甚至在某些情況下可能獲得WEP金鑰。
以下是一個專門針對探查請求進行偵測的Python範例程式碼:
#!/usr/bin/env python3
from datetime import datetime
from scapy.all import *
import os
iface = "wlp2s0"
iwconfig_cmd = "/sbin/iwconfig"
# 處理探查請求封包
def handle_packet(packet):
if packet.haslayer(Dot11ProbeResp):
print(str(datetime.now()) + " " + packet[Dot11].addr2 + " searches for " + packet.info)
# 設定裝置為監控模式
os.system(iwconfig_cmd + " " + iface + " mode monitor")
# 啟動擷取
print("Sniffing on interface " + iface)
sniff(iface=iface, prn=handle_packet)
內容解密:
- 處理探查請求:
handle_packet函式會檢查每個捕捉到的封包是否是探查回應。如果是的話,會輸出該封包的時間戳、來源地址和SSID。 - 設定監控模式:使用
iwconfig命令將網路卡設定為監控模式。 - 啟動擷取:啟動擷取功能,並且呼叫
handle_packet函式來處理每個捕捉到的封包。
隱藏SSID的誤解
有些管理員認為啟用「隱藏SSID」功能可以防止Wardrivers(即無線網路侵入者)發現他們的網路。其實,「隱藏SSID」功能只會避免將SSID加入蜂巢封包中,但並不能完全隱藏網路。因為SSID仍然會出現在探查請求、探查回應和連結請求等其他封包中。
以下是一個專門針對隱藏SSID進行偵測的Python範例程式碼:
#!/usr/bin/env python3
from scapy.all import *
import os
iface = "wlp2s0"
iwconfig_cmd = "/sbin/iwconfig"
# 處理探查請求/回應或連結請求
def handle_packet(packet):
if packet.haslayer(Dot11ProbeReq) or \
packet.haslayer(Dot11ProbeResp) or \
packet.haslayer(Dot11AssoReq):
print("Found SSID " + packet.info)
# 設定裝置為監控模式
os.system(iwconfig_cmd + " " + iface + " mode monitor")
# 啟動擷取
print("Sniffing on interface " + iface)
sniff(iface=iface, prn=handle_packet)
內容解密:
- 處理不同型別封包:
handle_packet函式會檢查每個捕捉到的封包是否是探查請求、探查回應或連結請求。如果是的話,會輸出該封包中的SSID。 - 設定監控模式:使用
iwconfig命令將網路卡設定為監控模式。 - 啟動擷取:啟動擷取功能,並且呼叫
handle_packet函式來處理每個捕捉到的封包。