日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

费尔个人防火墙采用两种封包过滤技术

發(fā)布時間:2023/12/14 编程问答 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 费尔个人防火墙采用两种封包过滤技术 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

費爾個人防火墻采用兩種封包過濾技術(shù) [轉(zhuǎn)原作者:FLASHSKY?

EMAIL:flashsky@xfocus.org


?

????? 由于互聯(lián)網(wǎng)發(fā)展的歷史原因, TCP/IP 協(xié)議及 HTTP 、 FTP 等基于 TCP/IP 協(xié)議的各種應(yīng)用層協(xié)議,在協(xié)議設(shè)計之初均未考慮安全傳輸問題。隨著互聯(lián)網(wǎng)的發(fā)展,國際標準組織雖陸續(xù)推出了 SSL 、 HTTP1.1 等具有安全傳輸能力的應(yīng)用層協(xié)議,但作為應(yīng)用層承載協(xié)議的 TCP/IP 協(xié)議仍存在著固有的安全缺陷,造成至今未能有徹底的、低成本的、不需硬件支持的互聯(lián)網(wǎng)安全傳輸解決方案。正是由于網(wǎng)絡(luò)傳輸安全問題的現(xiàn)實存在,推動著黑客攻擊技術(shù)、防火墻技術(shù)的不斷發(fā)展。

????無論是黑客攻擊技術(shù)還是防火墻技術(shù),其實現(xiàn)均必須具備網(wǎng)絡(luò)封包截獲技術(shù)。黑客利用網(wǎng)絡(luò)封包截獲技術(shù),偵聽獲取網(wǎng)絡(luò)傳輸數(shù)據(jù),并發(fā)起仿冒攻擊、篡改攻擊等;防火墻利用網(wǎng)絡(luò)封包截獲技術(shù),截斷式地或偵聽式地獲取通過本機的網(wǎng)絡(luò)封包,進行安全策略撿擇后,或放行、或攔截丟棄網(wǎng)絡(luò)封包,以達到反攻擊的目的。

一、概述

????網(wǎng)絡(luò)封包截獲,涉及驅(qū)動編程技術(shù)、核心態(tài)編程技術(shù)、系統(tǒng)動態(tài)鏈接庫編程技術(shù)、協(xié)議生成與解析編程技術(shù)等,集中體現(xiàn)了網(wǎng)絡(luò)應(yīng)用的核心技術(shù),是防火墻等高級網(wǎng)絡(luò)應(yīng)用開發(fā)的基礎(chǔ)。基于 Windows 2000 和 Windows XP 的網(wǎng)絡(luò)封包截獲技術(shù)主要分為三種: WinSock2 動態(tài)鏈接庫重載、傳輸層過濾驅(qū)動、中間層驅(qū)動。

??????WinSock2 動態(tài)鏈接庫重載 :?系統(tǒng)的 WinScok2 動態(tài)鏈接庫( ..\system32\winsock.dll ),隨系統(tǒng)啟動而載入內(nèi)存,提供 29 個用于網(wǎng)絡(luò)傳輸?shù)墓δ芎瘮?shù)。 IE 等普通上層應(yīng)用程序,調(diào)用 WinScok2 動態(tài)鏈接庫中的 WSPSend 、 WSPRecv 等函數(shù),實現(xiàn)網(wǎng)絡(luò)收、發(fā)功能。修改注冊表中 HKEY_LOCAL_MACHINE\SYSTM\CURRENTCONTROLSET\SERVICES\WinSock2 項,建立新的自定義 WSPStartup 入口函數(shù),可以重載 winsock.dll 。通過重載 winsock.dll 中的有關(guān)網(wǎng)絡(luò)收、發(fā)函數(shù),增加網(wǎng)絡(luò)封包收、發(fā)前、后的自定義處理功能,實現(xiàn)網(wǎng)絡(luò)封包截獲。公開源代碼的費爾防火墻,使用了 WinSock2 動態(tài)鏈接庫重載,實現(xiàn)網(wǎng)絡(luò)封包的截獲與安全解析。

??????傳輸層過濾驅(qū)動:?使用 NDIS ( Network Driver Interface Specification 網(wǎng)絡(luò)驅(qū)動接口規(guī)范)技術(shù),又稱為 TDI 編程( Transport Driver Interface 傳輸層驅(qū)動接口編程 )。 Windows 2000 和 Windows XP 操作系統(tǒng)中, TCP/IP 協(xié)議作為系統(tǒng)驅(qū)動程序( ..\system32\TcpIp.sys ),在系統(tǒng)啟動時加載入系統(tǒng)內(nèi)存,以 TCP/IP 設(shè)備對象( DeviceObject )的形式供應(yīng)用程序或其它系統(tǒng)程序調(diào)用。傳輸層過濾驅(qū)動程序創(chuàng)建一個或多個設(shè)備對象,直接掛接到 TCP/IP 設(shè)備對象之上。掛接成功后,當其它程序使用網(wǎng)絡(luò)傳輸功能,調(diào)用 TCP/IP 設(shè)備對象時,操作系統(tǒng)首先將該調(diào)用映射到 TCP/IP 設(shè)備對象之上所掛接的傳輸層過濾驅(qū)動程序。通過傳輸層過濾驅(qū)動程序,再調(diào)用下層的 TCP/IP 設(shè)備對象,從而完成網(wǎng)絡(luò)訪問功能。同樣,從 TCP/IP 層上傳至應(yīng)用程序的網(wǎng)絡(luò)封包,也要經(jīng)傳輸層過濾驅(qū)動程序后,再轉(zhuǎn)發(fā)至目標應(yīng)用程序端口。基于此工作原理,可以在傳輸層過濾驅(qū)動程序中實現(xiàn)網(wǎng)絡(luò)封包截獲,完成網(wǎng)絡(luò)封包的過濾及加解密處理。公開原代碼的 TcpIpDog.sys 及微軟官方 2000 DDK 的 Packet.c 例程,使用傳輸層過濾驅(qū)動技術(shù),實現(xiàn)了網(wǎng)絡(luò)封包截獲。

??????中間層驅(qū)動:?與傳輸層過濾驅(qū)動實現(xiàn)基本原理一致,也是使用 NDIS 技術(shù)。主要差別在于,中間層驅(qū)動程序,掛接在協(xié)議設(shè)備對象(包括 TCP/IP 設(shè)備對象)和網(wǎng)卡設(shè)備對象之間。任何進出網(wǎng)卡的網(wǎng)絡(luò)封包,均必須首先經(jīng)過中間層驅(qū)動程序的處理。從某種意義上分析,中間層驅(qū)動程序更象一個虛擬網(wǎng)卡。該虛擬卡封裝了物理網(wǎng)卡,對物理網(wǎng)卡的一切網(wǎng)絡(luò)訪問操作,均必須先經(jīng)虛擬卡處理。公開原代碼的微軟官方 2000 DDK 的 Passthru.c 例程,使用中間層驅(qū)動技術(shù),實現(xiàn)了網(wǎng)絡(luò)封包截獲。

????以上三種網(wǎng)絡(luò)封包截獲技術(shù)中, WinSock2 動態(tài)鏈接庫重載、傳輸層過濾驅(qū)動截獲網(wǎng)絡(luò)封包不夠徹底,均存在被繞開的技術(shù)可能,而 中間層驅(qū)動作用于協(xié)議層之下、物理網(wǎng)卡驅(qū)動層之上,與協(xié)議無關(guān),對網(wǎng)絡(luò)封包的截獲最為徹底,基本不存在被繞開的技術(shù)可能,但也最具有技術(shù)難度。中間層驅(qū)動程序的技術(shù)難點主要體現(xiàn)為:

??????缺少公開的技術(shù)資料,基本無中文講解資料、教材書籍。即使是 微軟官方 2000 DDK 的 Passthru.c 例程,也僅公開了偵聽式數(shù)據(jù)報頭的截獲方法與數(shù)據(jù)結(jié)構(gòu),而對 IRP ( I/O Request Packet 系統(tǒng) I/O 請求包)結(jié)構(gòu)未作進一步的公開。
???? ??與硬件相關(guān)性大。某種意義上,中間層驅(qū)動程序更象虛擬網(wǎng)卡,而網(wǎng)卡硬件性能的不一致,在中間層驅(qū)動程序中也必須有所體現(xiàn)。如,總線型網(wǎng)卡與非總線型網(wǎng)卡接收數(shù)據(jù)包的原理并不相同,就要求中間層驅(qū)動程序也必須同時考慮兩種網(wǎng)卡的不同要求。
????? 作用于協(xié)議層之下,必須手動解析各種傳輸協(xié)議,造成在中間層解析協(xié)議的技術(shù)難度較大。
????? 編程與調(diào)試困難。驅(qū)動程序的編制與調(diào)試本身就極為困難,加之中間層驅(qū)動程序作用于網(wǎng)卡驅(qū)動程序之上,而基本不可能擁有網(wǎng)卡驅(qū)動的原程序,無法使用 So ftICE.exe 等調(diào)試工具加載網(wǎng)卡驅(qū)動的調(diào)試符號,加之網(wǎng)卡工作原理復(fù)雜,使得中間層驅(qū)動程序的調(diào)試較 USB 接口等一般硬件驅(qū)動程序調(diào)試更為困難。

由于以上原因,基于中間層驅(qū)動技術(shù)的網(wǎng)絡(luò)通信產(chǎn)品,基本止于試驗室內(nèi),止于項目定制式的產(chǎn)品,少有成熟的通用產(chǎn)品問世。而也正是由于中間層驅(qū)動程序的協(xié)議無關(guān)性、不可繞開性及存在的技術(shù)挑戰(zhàn)性,吸引著包括黑客在內(nèi)的大量精英程序員。

二、 NDIS 簡介

????NDIS 是 Network Driver Interface Specification (網(wǎng)絡(luò)驅(qū)動程序接口規(guī)范)的縮寫,為傳輸層提供了標準的網(wǎng)絡(luò)接口。在 Windows 操作系統(tǒng)中,所有的應(yīng)用程序都最終通過調(diào)用 NDIS 接口,實現(xiàn)網(wǎng)絡(luò)訪問。 NDIS 在操作系統(tǒng)中的結(jié)構(gòu)如圖一所示。

圖一: NDIS 結(jié)構(gòu)圖

如圖一所示, NDIS 支持 3 種類型的驅(qū)動程序:

??????傳輸層驅(qū)動程序 ( Protocol Drivers ): 對上層應(yīng)用程序開放 TDI 接口,對下層驅(qū)動程序開放 Protocol 接口,與下層 Miniport 接口對接,實現(xiàn)協(xié)議驅(qū)動功能。嚴格意義上講,傳輸層驅(qū)動與協(xié)議驅(qū)動尚有區(qū)別,但本文僅涉及 TCP/IP 協(xié)議,并不涉及本地介質(zhì)認可的其它協(xié)議,為便于理解,而將傳輸層驅(qū)動、協(xié)議驅(qū)動簡化為傳輸層驅(qū)動。
????? 中間層驅(qū)動程序( Intermediate Drivers ): 位于物理網(wǎng)卡驅(qū)動程序(即微軟官方所稱的微型端口驅(qū)動程序)之上, 同時具備 Miniport 接口和 Protocol 接口,可與上、下層驅(qū)動程序?qū)?#xff0c;提供轉(zhuǎn)發(fā)驅(qū)動功能。利用其位于物理網(wǎng)卡之上的轉(zhuǎn)發(fā)功能,可以實現(xiàn)不可繞開的網(wǎng)絡(luò)封包截獲。
????? 微型端口驅(qū)動程序( Miniport Drivers ): 對上層的中間層驅(qū)動程序開放 Miniport 接口,再通過 NDIS 接口完成對物理網(wǎng)卡的操作,實現(xiàn)對物理網(wǎng)卡的驅(qū)動功能。

三、開發(fā)工具簡介

????由于缺少教材性的中文資料,客觀上造成理解、建立驅(qū)動程序開發(fā)環(huán)境有一定困難。許多對驅(qū)動開發(fā)感興趣的程序員,往往是因為不能夠正確理解和建立驅(qū)動程序開發(fā)環(huán)境,要么放棄了驅(qū)動程序研究,要么人為復(fù)雜化了驅(qū)動程序開發(fā)過程。筆者結(jié)合實際工作經(jīng)驗,在有關(guān)幫助文檔之外,主要強調(diào)各種開發(fā)包的本質(zhì)功能及相互關(guān)系。具體開發(fā)環(huán)境的建立步驟,特別是各種開發(fā)包的安裝順序,請參見有關(guān)開發(fā)包的幫助文檔。

????與 USB 接口驅(qū)動等其它驅(qū)動程序開發(fā)一樣,中間層驅(qū)動程序開發(fā)也主要是利用微軟提供的 Windows 2000 DDk 開發(fā)包,其中 DDK 是 Drivers Develop Kit 的簡稱。 DDK 提供了大量符合 Windows 操作系統(tǒng) NDIS 接口規(guī)范的 C 語言函數(shù),為驅(qū)動開發(fā)程序員提供了良好的開發(fā)接口。

????鑒于 DDK 開發(fā)包理解和使用較為困難,許多第三方公司對 DDK 進行了不嚴格的面向?qū)ο蟮姆庋b,為程序員在 VC++6.0 環(huán)境中使用面向?qū)ο蟮恼Z言開發(fā)驅(qū)動程序,提供了更為友好的平臺接口。其中影響較大,應(yīng)用較為成功的是 Compware 公司的 DriverStudio 3.1 。特別是 DriverStudio 3.1 提供了封裝類庫的原代碼(含注示),和常見的驅(qū)動例程,程序員不但可以參考其提供的驅(qū)動例程,而且可以通過修改現(xiàn)有的封裝類庫簡化開發(fā)功能的實現(xiàn),甚至能夠生成自定義驅(qū)動類。同時, DriverStudio 3.1 還提供了開發(fā)向?qū)Чδ?#xff0c;可以象使用 MFC 開發(fā)向?qū)б粯?#xff0c;通過向?qū)Чδ茏詣由纱罅侩y以編寫的驅(qū)動公共模塊,極大地減少了開發(fā)工作量,降低了開發(fā)難度。

VC++6.0 、 DriverStudio 3.1 、 Windows 2000 DDk 三種主要開發(fā)工具的關(guān)系可簡述如下:

??????Windows 2000 DDk 是微軟官方提供的 Windows 2000/XP NDIS 接口的具體 C 語言編程實現(xiàn),是包括中間層驅(qū)動在內(nèi)的各種驅(qū)動程序的核心開發(fā)包。
????? DriverStudio 3.1 是 Compware 公司提供的基于 Windows 2000 DDk 的開發(fā)包,其主要是對 Windows 2000 DDk 進行了不嚴格的面向?qū)ο蟮姆庋b,并能夠在安裝過程中自動設(shè)置 VC++6.0 開發(fā)環(huán)境、自動設(shè)置系統(tǒng)環(huán)境變量,使程序員可以象調(diào)用 MFC 類庫一樣調(diào)用 DriverStudio 3.1 類庫,可以使用面向?qū)ο蟮恼Z言進行驅(qū)動程序開發(fā),以降低開發(fā)難度。同時, DriverStudio 3.1 還提供了 Compware 公司的 SoftICE.exe 調(diào)試工具,以提高驅(qū)動程序調(diào)試效率。
???? ? 通過 DriverStudio 3.1 的 DDK Build Setting 菜單功能調(diào)用 VC++6.0 ,能夠自動設(shè)置環(huán)境參數(shù),使 VC++6.0 能夠編譯鏈接至 DriverStudio 3.1 的類庫文件,從而編譯鏈接至 DDK 庫文件,使 VC++6.0 成為驅(qū)動程序的最終開發(fā)平臺。

四、中間層驅(qū)動程序模型分析

????上文已簡單地提到過中間層驅(qū)動程序位于 Miniport 和 Protocol 驅(qū)動程序之間,同時具有 Miniport 和 Protocol 兩種驅(qū)動程序接口。具體來講,中間層驅(qū)動程序在自己的上下兩端分別開放出一個 Miniport 接口(對上)和 Protocol 接口(對下)。其中,位于中間驅(qū)動程序上面的 Miniport 接口,與上層驅(qū)動程序的 Protocol 接口對接;位于下面的 Protocol 接口,與下層驅(qū)動程序的 Miniport 接口對接。通過兩種接口的使用,使得中間層驅(qū)動程序能夠插入 Miniport 和 Protocol 驅(qū)動程序之間。

?

圖二: NDIS 中間層驅(qū)動程序安裝前后的對比結(jié)構(gòu)示意

如圖二所示,中間層驅(qū)動程序安裝前,物理網(wǎng)卡驅(qū)動程序與傳輸層驅(qū)動程序進行直接通信,兩者間通過 NDIS 接口完成網(wǎng)絡(luò)封包傳遞;中間驅(qū)動程序安裝后,網(wǎng)絡(luò)封包經(jīng)中間層驅(qū)動程序在物理網(wǎng)卡驅(qū)動程序、傳輸層驅(qū)動程序之間進行轉(zhuǎn)發(fā),從而使得中間層驅(qū)動程序具備了網(wǎng)絡(luò)封包截獲功能。

????利用 NDIS 中間驅(qū)動程序,可以在網(wǎng)卡驅(qū)動程序和傳輸層驅(qū)動程序之間插入一層自定義處理,從而可以用來截獲網(wǎng)絡(luò)封包,并重新進行封包、加密、網(wǎng)絡(luò)地址轉(zhuǎn)換及過濾等操作。且由于中間層驅(qū)動程序位于網(wǎng)卡驅(qū)動程序和傳輸層驅(qū)動程序之間,可以截獲較為底層的與協(xié)議無關(guān)的網(wǎng)絡(luò)封包,可以完成更為底層的操作,編寫網(wǎng)絡(luò)安全軟件的安全強度更有保證。

????考慮到篇幅和水平所限,且考慮到 DriverStudio 3.1 開發(fā)向?qū)軌蜃詣由纱罅恐虚g層驅(qū)動的基礎(chǔ)代碼,本文不再對中間層驅(qū)動程序內(nèi)部的 UML 模型展開深入分析,有興趣的讀者可參見 DriverStudio 3.1 幫助文檔中的 DriverNetworks Help/Programing Guide/NDIS Drivers Framework/NDIS Intermediate Drivers Framework 的詳細分析說明,且可參見 DriverStudio 3.1 目錄 SOURCE 下的 DNW.dsw 中的 KndisLib Classes 進行原代碼級的理解分析。在此,筆者特別強調(diào),對 KndisLib Classes 進行原代碼級的理解分析是打牢驅(qū)動程序開發(fā)技術(shù)基礎(chǔ)、提高驅(qū)動程序開發(fā)能力的有效方法。

五、網(wǎng)絡(luò)封包截獲核心原代碼分析

????網(wǎng)絡(luò)封包無外乎分為收、發(fā)兩種封包,因此截獲網(wǎng)絡(luò)封包的理想位置應(yīng)是發(fā)送封包之前,和接收封包之后。具體來講,接收封包的截獲位置,應(yīng)位于物理網(wǎng)卡接收封包之后;發(fā)送封包的截獲位置,應(yīng)位于通過物理網(wǎng)卡發(fā)送封包之前。

????DriverStudio 3.1 開發(fā)包提供了 OnReceive 和 OnSend 兩個十分方便的虛函數(shù)。其中,物理網(wǎng)卡接收封包之后, NDIS 將調(diào)用 OnReceive 虛函數(shù);通過物理網(wǎng)卡發(fā)送封包之前, NDIS 將調(diào)用 OnSend 虛函數(shù)。因此,只需在自開發(fā)的中間層驅(qū)動程序中實現(xiàn)這兩個虛函數(shù),加入自定義的封包處理方法,就能夠很方便地實現(xiàn)網(wǎng)絡(luò)封包截獲處理功能。 DriverStudio 3.1 開發(fā)向?qū)軌蜃詣由纱罅炕A(chǔ)代碼,甚至自動生成了空處理的 OnReceive 和 OnSend 兩虛函數(shù),程序員只要加以改寫,就能夠?qū)崿F(xiàn)自定義的封包處理功能,極大地簡化了開發(fā)過程。

????但我們應(yīng)注意到,中間層驅(qū)動程序位于傳輸層驅(qū)動程序或協(xié)議層驅(qū)動程序之下,因此就要求我們必須自編程實現(xiàn)協(xié)議的解析功能。之所以在此再次強調(diào)協(xié)議的解析,是因為 DriverStudio 3.1 開發(fā)包所提供的例程中,對 TCP/IP 協(xié)議的數(shù)據(jù)結(jié)構(gòu)定義有誤( TCP 包頭長度的計算方法不正確),雖不影響該例程的正常編譯和運行,但若在該例程基礎(chǔ)上修改設(shè)計更完善的 TCP/IP 封包的截獲程序,將會造成難以測試發(fā)現(xiàn)的漏包現(xiàn)象。

(一) TCP/IP 協(xié)議數(shù)據(jù)結(jié)構(gòu)的定義

????定義正確的協(xié)議數(shù)據(jù)結(jié)構(gòu),是實現(xiàn)協(xié)議解析,進而實現(xiàn)封包截獲的基礎(chǔ)。所謂協(xié)議數(shù)據(jù)結(jié)構(gòu),其實質(zhì)是協(xié)議的包頭數(shù)據(jù)結(jié)構(gòu),包體內(nèi)是 HTTP 等應(yīng)用層協(xié)議數(shù)據(jù),無關(guān)于本文涉及的網(wǎng)絡(luò)封包截獲。任何有效的 TCP/IP 數(shù)據(jù)包均由包頭數(shù)據(jù)和包體數(shù)據(jù)組成,其中包頭包括以太幀數(shù)據(jù)頭、 IP 數(shù)據(jù)頭、 TCP 數(shù)據(jù)頭;包體內(nèi)包含應(yīng)用層協(xié)議數(shù)據(jù)。

// Ethernet Packet Header

typedef struct _ETHERNET_HEADER {

UCHAR eth_dest[6]; // Destination address

UCHAR eth_src[6]; // Source address

union {

USHORT eth_len; // 802.3 length field.

USHORT eth_type; // Ethernet type field.

};

} ETHERNET_HEADER, *PETHERNET_HEADER;

// Internet Protocol (IP) Packet Header

typedef struct IP_HEADER

{

UCHAR iph_verlen; // Version and length

UCHAR iph_tos; // Type of service

USHORT iph_length; // Total datagram length

USHORT iph_id; // Identification

USHORT iph_offset; // Flags, fragment offset

UCHAR iph_ttl; // Time to live

UCHAR iph_protocol; // Protocol

USHORT iph_xsum; // Header checksum

ULONG iph_src; // Source address

ULONG iph_dest; // Destination address

} IP_HEADER, *PIP_HEADER;

// TCP Packet Header

typedef struct TCP_HEADER

{

USHORT tcph_src; // Source Port Number

USHORT tcph_dest; // Destination Port Number

ULONG tcph_seq; // Sequence Number

ULONG tcph_ack_seq; // Acknowlegdement Number

USHORT tcph_flags; // Flags

USHORT tcph_window; // Window

USHORT tcph_check; // Checksum

USHORT tcph_urgent; // Urgent pointer

UCHAR GetDataOffset() {

USHORT nLen=(tcph_flags & 0x 00f 0);// 例程中無此處理,造成標志字段高 4 位為全零(如 //tcph_flags=0x0270 )時, TCP 包頭長度計算出錯。 // 雖標志字段高 4 位為全零在正常收發(fā)封包過程中不 // 會出現(xiàn),但在通過“三次握手”建立 TCP 連接和結(jié) // 束 TCP 連接過程中,必然出現(xiàn)高 4 位為全零情況, // 進而造成在此過程中 TCP 包頭長度計算錯。一但 //TCP 包頭長度計算錯,可能引發(fā)進一步的異常。

return (nLen >> 4)*4;

}

} TCP_HEADER, *PTCP_HEADER;

(二) TCP/IP 協(xié)議解析函數(shù)的實現(xiàn)

????在 TCP/IP 協(xié)議數(shù)據(jù)結(jié)構(gòu)的定義的基礎(chǔ)上,可根據(jù)項目開發(fā)需要實現(xiàn)協(xié)議解析功能函數(shù)。下文原代碼中,主要實現(xiàn)了源 IP 地址、目的 IP 地址、源 TCP 端口號、目的 TCP 端口號、包頭總長度的解析功能。現(xiàn)有的 DriverStudio 3.1 開發(fā)包例程和 Windows 2000 DDk 例程中,未能提供協(xié)議解析代碼。因此,初學(xué)者應(yīng)特別注意下文原代碼中的移位計算。部分初學(xué)者就是因為對 VC 指針與協(xié)議中數(shù)據(jù)類型的對應(yīng)關(guān)系理解不正確,或未進行移位處理,或移位處理不正確,均造成協(xié)議解析不正確,進而造成封包無法正確截獲。

//Parse address in KNdistPacket

bool SecurityVirtualCardAdapter::GetAddr_OnRec(const KNdisPacket& Original, //Data packet

//Out parameters

ULONG *pIpScrAddr,ULONG *pIpDesctAddr,

USHORT *pTcpScrAddr,USHORT *pTcpDesctAddr,

ULONG *pPckHdLen)

{

//Return buffers count in the packet

UINT nBufCnt=Original.QueryBufferCount();

//Return the first buffer in the packet

KNdisBuffer Buf=Original.QueryFirstBuffer();

//Tests if the buffer is initialed correctly

if(!Buf.IsValid())

return false;

//Return the first buffer length

//KNdisBuffer::Length

// UINT Length( ) ;

// Gets the length.

//Length of the underlying buffer in bytes.

ULONG nBufLen = Buf.Length();

//Return TCP packet header length

ULONG nHdrLen=sizeof(ETHERNET_HEADER)

+sizeof(TCP_HEADER)

+sizeof(IP_HEADER);

if(nHdrLen>nBufLen)

return false;

//KNdisBuffer::Address

// PVOID Address( ) ;

// Gets the virtual address.

//Virtual address of the first byte of the buffer, or NULL if an error has occurred.

PETHERNET_HEADER pEthHdr = (PETHERNET_HEADER) Buf.Address();

//Return false if ethernet packet is not IP protocol

if(pEthHdr->eth_type!=ETH_TYPE_IP)

return false;

//Return false if not TCP protocol

PIP_HEADER pIpHdr=(PIP_HEADER)((PCHAR)pEthHdr+sizeof(ETHERNET_HEADER));

if(pIpHdr->iph_protocol!=IP_PROTOCOL_TCP)

return false;

//Get IP address

ULONG srcIp=pIpHdr->iph_src;

*pIpScrAddr=((srcIp&0xff)<<24)+

((srcIp&0xff00)<<8)+

((srcIp&0xff0000)>>8)+

((srcIp&0xff000000)>>24);

ULONG destIp=pIpHdr->iph_dest;

*pIpDesctAddr=((destIp&0xff)<<24)+

((destIp&0xff00)<<8)+

((destIp&0xff0000)>>8)+

((destIp&0xff000000)>>24);

//Get TCP port number and TCP packet header length

PTCP_HEADER pTcpHdr=(PTCP_HEADER)((PCHAR)pIpHdr+sizeof(IP_HEADER));

UCHAR nTcpPckHdLen=pTcpHdr->GetDataOffset();

USHORT scrPort=pTcpHdr->tcph_src;

*pTcpScrAddr=((scrPort&0xff00)>>8)+((scrPort&0x00ff)<<8);

//TRACE("GW Rec Source TCP port=%d\n",*pTcpScrAddr);

USHORT desctPort=pTcpHdr->tcph_dest;

*pTcpDesctAddr=((desctPort&0xff00)>>8)+((desctPort&0x00ff)<<8);

//TRACE("GW Rec Desct TCP port=%d\n",*pTcpDesctAddr);

//Return packet header length

*pPckHdLen=sizeof(ETHERNET_HEADER)+sizeof(IP_HEADER)+nTcpPckHdLen;

return true;

}

(三) OnReceive 虛函數(shù)的實現(xiàn)

????根據(jù)物理網(wǎng)卡工作方式的不同,接收封包方式主要有全包接收方式和部分接收方式。其中,全包接收方式對應(yīng)于總線型網(wǎng)卡,網(wǎng)卡收到封包后, NDIS 將一次性把完整的封包提交至 OnReceive 虛函數(shù);部分接收方式對應(yīng)于非總線型網(wǎng)卡,網(wǎng)卡收到封包后, NDIS 將先把封包的一部分提交至 OnReceive 虛函數(shù),上層程序根據(jù)封包的一部分判斷是否同意接收,若同意接收網(wǎng)卡將再次提交封包的其它部分,若不同意接收網(wǎng)卡則丟棄該封包。相對應(yīng)于以上兩種接收方式, DriverStudio 3.1 開發(fā)包也提供了 OnReceive 虛函數(shù)的兩種形式:

??????NDIS_STATUS SecurityVirtualCardAdapter::OnReceive

(const KNdisPacket& Original, KNdisPacket& Repackaged)// 對應(yīng)于全包接收方式

??????NDIS_STATUS SecurityVirtualCardAdapter::OnReceive

(IN OUT KNdisPartialPacket& PacketToAccept,

IN PVOID HeaderBuffer, IN UINT HeaderBufferSize,

IN PVOID LookAheadBuffer, IN UINT LookaheadBufferSize,

IN UINT PacketSize)// 對應(yīng)于部分接收方式

????全包接收方式下的 OnReceive 虛函數(shù)的實現(xiàn)較為簡單,且與 OnSend 虛函數(shù)的實現(xiàn)原理完全一致,開發(fā)包例程中有詳細參考,本文“ OnSend 虛函數(shù)的實現(xiàn)”也將有原代碼展示,因此下文原代碼將僅涉及部分接收方式下的 OnReceive 虛函數(shù)的實現(xiàn)。

????部分接收方式下,若在中間層程序程序中對全包進行處理,按照 DriverStudio 3.1 的幫助說明,將需要進行私有包池的建立和管理,編程復(fù)雜、調(diào)試難度大。筆者研究測試發(fā)現(xiàn),在 Windows 2000/XP/2003 下,由于操作系統(tǒng)對網(wǎng)卡緩存管理有相當好的連續(xù)性,完全可以經(jīng)計算后,通過部分接收包的指針獲得全包指針。簡而言之,在 Windows 2000/XP/2003 下,可以通過指針位置計算后,采用全包接收處理方式對部分接收進行全包處理,從而極大地降低了部分接收方式的中間層驅(qū)動程序開發(fā)難度。指針位置計算的關(guān)鍵,是在部分包緩存區(qū)中忽略以太幀頭。

????具體原代碼如下(為補充上文的協(xié)議解析功能,其中涉及了包頭中其它字段的解析):

NDIS_STATUS SecurityVirtualCardAdapter::OnReceive

(IN OUT KNdisPartialPacket& PacketToAccept,

IN PVOID HeaderBuffer, IN UINT HeaderBufferSize,

IN PVOID LookAheadBuffer, IN UINT LookaheadBufferSize,

IN UINT PacketSize)

{

PETHERNET_HEADER pEthHd=(PETHERNET_HEADER)HeaderBuffer;

PIP_HEADER pIpHd=(PIP_HEADER)((PUCHAR)HeaderBuffer+sizeof(ETHERNET_HEADER));

PTCP_HEADER pTcpHd=(PTCP_HEADER)((PUCHAR)HeaderBuffer+

sizeof(ETHERNET_HEADER)+

sizeof(IP_HEADER));

USHORT nEthType=pEthHd->eth_type;

UCHAR nProtocol=pIpHd->iph_protocol;

if(nEthType!=ETH_TYPE_IP||nProtocol!=IP_PROTOCOL_TCP)

{

//TRACE("Not TCP/IP");

UNREFERENCED_PARAMETER(PacketToAccept);

return NDIS_STATUS_SUCCESS;

}

ULONG nScrIpAddr=pIpHd->iph_src;

ULONG nDestIpAddr=pIpHd->iph_dest;

USHORT nScrPort=pTcpHd->tcph_src;

USHORT nDestPort=pTcpHd->tcph_dest;

USHORT nTcpHdLen=pTcpHd->GetDataOffset();

nScrIpAddr=((nScrIpAddr&0xff000000)>>24)+

((nScrIpAddr&0x00ff0000)>>8)+

((nScrIpAddr&0x0000ff00)<<8)+

((nScrIpAddr&0x000000ff)<<24);

nScrPort=((nScrPort&0xff00)>>8)+((nScrPort&0x00ff)<<8);

nDestIpAddr=((nDestIpAddr&0xff000000)>>24)+

((nDestIpAddr&0x00ff0000)>>8)+

((nDestIpAddr&0x0000ff00)<<8)+

((nDestIpAddr&0x000000ff)<<24);

nDestPort=((nDestPort&0xff00)>>8)+((nDestPort&0x00ff)<<8);

if(!IsEncrypt(nScrIpAddr,nDestIpAddr,nScrPort,nDestPort))

{

//TRACE("Submit not encrypt packet");

UNREFERENCED_PARAMETER(PacketToAccept);

return NDIS_STATUS_SUCCESS;

}

TRACE("******** Receive partial *************");

TRACE("HeaderBufferSize=%d",HeaderBufferSize);

TRACE("PacketSize=%d",PacketSize);

TRACE("LookaheadBufferSize=%d",LookaheadBufferSize);

TRACE("pHeaderBuffer=0x%0x",HeaderBuffer);

TRACE("pLookAheadBuffer=0x%0x",LookAheadBuffer);

TRACE("Source=%d.%d.%d.%d:%d",(nScrIpAddr&0xff000000)>>24,

(nScrIpAddr&0x00ff0000)>>16,

(nScrIpAddr&0x0000ff00)>>8,

(nScrIpAddr&0x000000ff),

nScrPort);

TRACE("Dest=%d.%d.%d.%d:%d",(nDestIpAddr&0xff000000)>>24,

(nDestIpAddr&0x00ff0000)>>16,

(nDestIpAddr&0x0000ff00)>>8,

(nDestIpAddr&0x000000ff),

nDestPort);

TRACE("// TCP Pakcet Header ///");

ULONG nSeq=pTcpHd->tcph_seq;

nSeq=((nSeq&0xff000000)>>24)+

((nSeq&0x00ff0000)>>8)+

((nSeq&0x0000ff00)<<8)+

((nSeq&0x000000ff)<<24);

ULONG nAck=pTcpHd->tcph_ack_seq;

nAck=((nAck&0xff000000)>>24)+

((nAck&0x00ff0000)>>8)+

((nAck&0x0000ff00)<<8)+

((nAck&0x000000ff)<<24);

USHORT nFlags=pTcpHd->tcph_flags;

USHORT nWin=pTcpHd->tcph_window;

TRACE("Seq=0x%0x",nSeq);

TRACE("Ack=0x%0x",nAck);

TRACE("Flags=0x%0x",nFlags);

TRACE("Win=0x%0x",nWin);

TRACE("///");

?

PUCHAR pLook=(PUCHAR)LookAheadBuffer;

USHORT nIpandTcpHdLen=sizeof(IP_HEADER)+nTcpHdLen;

if(PacketSize<(UINT)(nIpandTcpHdLen+7))

{

TRACE("Submit no Encrypt packet");

UNREFERENCED_PARAMETER(PacketToAccept);

return NDIS_STATUS_SUCCESS;

}

//LookaheadBufferSize

for(USHORT i=0;i<PacketSize;i++)

{

if(i>nIpandTcpHdLen-1)

{

UCHAR test=pLook[i];

TRACE("Look[%d]=(0x%0x,%c)->(0x%0x,%c",i,test,test,pLook[i],pLook[i]);

}

}

UNREFERENCED_PARAMETER(PacketToAccept);

return NDIS_STATUS_SUCCESS;

}

(四) OnSend 虛函數(shù)的實現(xiàn)

????OnReceive 虛函數(shù)的實現(xiàn)相對較為簡單, DriverStudio 3.1 提供了詳細例程及說明,本文不再詳細分析,僅列出自編寫的原代碼。

NDIS_STATUS SecurityVirtualCardAdapter::OnSend

(const KNdisPacket& Original, KNdisPacket& Repackaged)

{

NDIS_STATUS Status = NDIS_STATUS_SUCCESS;

ULONG IpScrAddr=0,IpDesctAddr=0;

USHORT TcpScrAddr=0,TcpDesctAddr=0;

ULONG PckHdLen=0;

ULONG *pIpScrAddr,*pIpDesctAddr;

USHORT *pTcpScrAddr, *pTcpDesctAddr;

ULONG *pPckHdLen;

pIpScrAddr=&IpScrAddr;

pIpDesctAddr=&IpDesctAddr;

pPckHdLen=&PckHdLen;

pTcpScrAddr=&TcpScrAddr;

pTcpDesctAddr=&TcpDesctAddr;

if(GetAddr_OnSend(Original,

pIpScrAddr,pIpDesctAddr,

pTcpScrAddr,pTcpDesctAddr,

pPckHdLen))// 判斷是否是須加密處理的封包

{

TRACE("----- Send Encrypt -----");

Repackaged.CloneDown(Original);// 開發(fā)包提供的向下復(fù)制封包方法

EncryptPacket_OnSend(Repackaged,*pPckHdLen);// 自定義的加密處理函數(shù)

TRACE("----- Send Encrypt End -----");

return Status;

}

else

{

Repackaged.CloneDown(Original);

return Status;

}

}
【參考文獻】

?????《 Windows 防火墻與網(wǎng)絡(luò)封包截獲技術(shù)》 朱雁輝 電子工業(yè)出版社 2002
????? Windows 2000 DDk 幫助文檔 Microsoft 公司 2003
????? DriverStudio 3.1 幫助文檔 Compware 公司 2004

費爾個人防火墻采用兩種封包過濾技術(shù):

1. 應(yīng)用層封包過濾,采用 Winsock 2 SPI。

2. 核心層封包過濾,采用 NDIS-HOOK。

Winsock 2 SPI 的技術(shù)特點:

Winsock 2 SPI 工作在 API 之下 Driver 之上,屬于應(yīng)用層的范疇。利用這項技術(shù)可以截獲所有的基于 Socket 的網(wǎng)絡(luò)通信。比如:IE、OUTLOOK 等常見的應(yīng)用程序都是使用 Socket 進行通信。它的技術(shù)特點主要有:

優(yōu)點:

1. 工作在應(yīng)用層,以 DLL 的形式存在,編程、調(diào)試方便。

2. 跨 Windows 平臺,可以直接在 Windows 98/ME/NT/2000/XP上通用,Windows 95 只需安裝上 Winsock 2 for 95,也可以正常運行。

3. 效率高,由于工作在應(yīng)用層,CPU 占用率低。

4. 封包還沒有按照低層協(xié)議進行切片,所以比較完整,很容易做內(nèi)容過濾。

5. 做防色情之類的軟件,不用根據(jù)具體的瀏覽器進行分別編程,既簡單又安全。

缺點:

1. 不用 Socket 的網(wǎng)絡(luò)通信無法攔截,比如:使用NetBios的網(wǎng)上鄰居,和使用ICMP協(xié)議的Ping。

2. 微軟對SPI設(shè)計的問題,導(dǎo)致如果安裝順序出錯很容易造成網(wǎng)絡(luò)癱瘓。這意味著如果同時安裝幾個使用SPI技術(shù)的軟件,而且有使用非標準安裝方式的軟件,很容易有的被繞過或者不能正常網(wǎng)絡(luò)通信。所以建議編寫SPI程序一定要用標準的安裝方式。

SPI 在 操作系統(tǒng)種的結(jié)構(gòu)如下圖:我們需要處理的是傳輸服務(wù)提供者。

層次結(jié)構(gòu)圖:費爾個人防火墻的XFILTER.DLL處的就是基礎(chǔ)服務(wù)提供者的位置。

NDIS-HOOK 的技術(shù)特點:

NDIS 是網(wǎng)絡(luò)接口規(guī)范,Windows 使用 NDIS 函數(shù)庫實現(xiàn) NDIS 接口。所有的網(wǎng)絡(luò)通信最終必須通過 NDIS 完成。NDIS 橫跨 傳輸層、網(wǎng)絡(luò)層和數(shù)據(jù)鏈路層,NDIS 的結(jié)構(gòu)如下圖:

微軟提供了以下幾種標準接口編程方式:

1. TDI 傳輸層過濾驅(qū)動程序(TDI Filter,比如常見的 Tcp Filter Driver)

2. 協(xié)議驅(qū)動程序 (Protocol Driver)

3. 中間驅(qū)動程序 (IM Driver)

4. 小端口驅(qū)動程序 (Miniport Driver)

其中 TDI Filter Driver 和 IM Driver 通常用做封包過濾。也是防火墻和VPN軟件常用的技術(shù)。但是它們都有一些缺陷:

TDI Filter Driver 屬于 Upper Driver,位于 TcpIp.sys 之上,這就意味著由 TcpIp.sys 接收并直接處理的數(shù)據(jù)包就不會傳送到上面,從而無法過濾某些接收的數(shù)據(jù)包,典型的就是ICMP,ICMP的應(yīng)答包直接由TcpIp.sys生成并回應(yīng),上面的過濾驅(qū)動程序全然不知。

IM Driver 功能比較強大,但編程接口復(fù)雜。最麻煩的是安裝,自動化安裝太困難。

NDIS-HOOK 克服了上面的缺陷。NDIS-HOOK 的工作原理是直接替換 NDIS 的函數(shù)庫中的函數(shù)地址,這樣只要向 NDIS 的請求就會先經(jīng)過我們自己函數(shù)的處理,這樣就非常簡單,處理完轉(zhuǎn)發(fā)給系統(tǒng)函數(shù)就完成了。NDIS-HOOK技術(shù)有以下特點:

1. 編程方便、接口簡單、思路明確、性能穩(wěn)定。

2. 更靈活,可以僅僅截獲自己需求的,不需要冗余的代碼。

3. 功能強大,可以截獲所有 NDIS 和 TDI 函數(shù)完成的功能。當然比標準方式功能強大許多。還可以用這項技術(shù)延伸到 HOOK 所有系統(tǒng)函數(shù)。

4. 安全性高,這樣截獲封包較為底層,不容易被穿透。

5. 安裝簡單。

NDIS-HOOK 安裝前的結(jié)構(gòu)示意圖:

NDIS-HOOK 安裝后的結(jié)構(gòu)示意圖:

總結(jié)

以上是生活随笔為你收集整理的费尔个人防火墙采用两种封包过滤技术的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

亚洲精品女人久久久 | 中文字幕乱码在线播放 | 国产福利91精品一区二区三区 | 亚洲精品小区久久久久久 | 国产一二区免费视频 | 国产看片 色 | 国产又粗又猛又黄又爽的视频 | 中文字幕在线免费看线人 | 麻豆视频在线观看 | 狠狠色丁香婷婷综合欧美 | 一区二区高清在线 | 免费成人在线观看视频 | 国产不卡视频在线 | 国产精品第二十页 | 国产精品第三页 | 久产久精国产品 | 二区三区毛片 | 精品久久久久久亚洲综合网 | 国产精品久久久久一区二区三区 | 天天干天天干天天射 | 亚洲综合成人专区片 | 91在线视频一区 | 在线性视频日韩欧美 | 国产xx在线 | 亚洲欧美在线观看视频 | av电影在线免费观看 | 久久精品高清 | 国产精品久久中文字幕 | 69久久99精品久久久久婷婷 | 天堂中文在线播放 | 91在线观看高清 | 国产中文视 | 小草av在线播放 | 亚洲伊人第一页 | 麻豆免费看片 | 亚洲综合成人专区片 | 91av社区| 久草免费在线观看视频 | 精品成人在线 | 香蕉视频亚洲 | 亚洲在线视频网站 | 亚州视频在线 | 国产精品a久久 | 中文一区二区三区在线观看 | 国产亚洲成av人片在线观看桃 | 国产精品永久久久久久久久久 | 国产视频综合在线 | 天天爱综合 | 中文字幕日韩伦理 | 超碰国产人人 | 亚洲综合色视频 | 精品欧美一区二区精品久久 | 狠狠操狠狠干天天操 | 永久免费精品视频 | 国产麻豆精品久久 | 欧美日韩91 | 国产大片免费久久 | 中文字幕综合在线 | 成人久久18免费网站图片 | 中文字幕在线观看完整 | 美女露久久 | 国产亚洲人 | 91麻豆国产福利在线观看 | 久精品视频在线观看 | 久久人人爽av | 国产精品videossex国产高清 | 日韩免费一级电影 | 91久久精品一区二区三区 | 久久国产精品99久久久久 | 日韩精品播放 | 激情图片久久 | 在线国产高清 | 日韩av一区在线观看 | 日本h视频在线观看 | av电影av在线 | 国产九九九九九 | 久久久高清免费视频 | 91人网站| 夜夜夜草 | 欧美日韩国产mv | 成人av电影在线播放 | 成年人黄色大全 | 国产在线久久久 | 久久久久国产精品午夜一区 | 97色免费视频 | 久久久久久国产精品免费 | 日本久久中文 | 久久99国产精品久久 | 国产一级性生活 | 久久久久久久久久久精 | 日韩精品在线观看视频 | 在线日韩中文 | 狠狠操狠狠干天天操 | 97电影院在线观看 | 婷婷亚洲五月色综合 | 国产精品电影一区二区 | 综合久久一本 | 久久精品欧美日韩精品 | 91九色蝌蚪视频在线 | 亚洲天天摸日日摸天天欢 | 高清av免费观看 | 日韩av成人| 色资源二区在线视频 | 久久看毛片 | 婷婷久久久 | 国产呻吟在线 | 国产成人一区二区三区免费看 | 欧美日韩精品在线免费观看 | 六月激情 | 色婷婷久久一区二区 | 日本久久久久久久久 | 激情电影影院 | 久草在线手机观看 | 亚洲精品黄色 | 日韩视频1 | 在线播放91 | 国产精品美女久久久久久久久 | 精品视频久久久 | 永久免费的啪啪网站免费观看浪潮 | 国产综合精品一区二区三区 | av视屏在线播放 | 日韩乱理 | 亚洲一区尤物 | 国产黄色片免费看 | 中文字幕在线精品 | 又黄又爽又无遮挡的视频 | av免费看看| 久久精品一区二区三区视频 | 婷婷中文字幕综合 | 亚洲午夜久久久久久久久久久 | 97超碰人人澡人人爱学生 | 成人黄色在线观看视频 | 五月婷婷狠狠 | 人成在线免费视频 | 成人在线免费观看网站 | 能在线观看的日韩av | 亚洲狠狠干 | 色94色欧美| 国产成人免费高清 | 91九色在线观看 | 亚洲精品视频在线观看免费视频 | av电影久久| 国产一级视频免费看 | 久久激情婷婷 | 亚洲精品乱码久久久久久按摩 | 中文日韩在线视频 | 黄视频网站大全 | 久草在线手机视频 | 国产福利91精品 | 一区二区视频欧美 | 免费成人黄色av | 中文视频在线看 | 国产在线观看你懂得 | 午夜 久久 tv| av中文在线影视 | 五月激情六月丁香 | 亚洲一区美女视频在线观看免费 | 国产精品一区二区62 | 欧美一级看片 | 国产视频在线观看一区 | 久久网站免费 | 日韩网站在线播放 | 国产精品99免费看 | 午夜精选视频 | 久久99精品久久久久久 | 美女网站一区 | 国产一区二区不卡视频 | 国产精品久久久久毛片大屁完整版 | 免费黄色av电影 | 国产精品都在这里 | 久久99久久99精品免视看婷婷 | 国产精品av在线 | av成人动漫在线观看 | 综合久久网 | 久久精品系列 | 欧美日韩精品二区第二页 | 国产三级国产精品国产专区50 | 国产精品久久久久久久99 | 久久99久久精品国产 | 久久中国精品 | 久草久草在线观看 | 免费麻豆网站 | 亚洲综合国产精品 | 伊人宗合| 99久久er热在这里只有精品15 | 九九热中文字幕 | 天堂v中文 | 久久精品男人的天堂 | 在线视频欧美日韩 | 国产区网址 | 亚洲蜜桃av| 国产专区日韩专区 | 亚洲电影一级黄 | 中字幕视频在线永久在线观看免费 | 五月天丁香综合 | 久久午夜国产 | 精品亚洲欧美一区 | 国产999精品久久久久久 | 久久免费视频4 | 91久久精品日日躁夜夜躁国产 | 蜜臀久久99精品久久久酒店新书 | 国产麻豆果冻传媒在线观看 | 日本高清xxxx | 丁香婷婷成人 | 狠狠狠色丁香婷婷综合久久五月 | 国产在线视频在线观看 | 亚洲国产精品成人av | 性色xxxxhd| 亚洲国产成人精品久久 | 国产精品麻豆视频 | 国产精品自产拍在线观看网站 | 成人精品国产免费网站 | 久久国语露脸国产精品电影 | 成人性生交大片免费看中文网站 | 亚洲电影网站 | 国产精品精品久久久 | 亚洲mv大片欧洲mv大片免费 | 国产亚洲一区 | 97福利视频 | 91看片淫黄大片91 | 日日夜夜噜噜噜 | 婷婷在线视频观看 | a天堂最新版中文在线地址 久久99久久精品国产 | 精品国产乱码久久久久久1区2匹 | 中文字幕视频三区 | 午夜精品久久久久久久久久久久久久 | 亚洲手机av | 欧美高清成人 | 国产区免费在线 | 国产视频精品网 | 日韩av电影中文字幕 | 欧美亚洲一级片 | 久久爱综合 | 国产精品久久久久免费a∨ 欧美一级性生活片 | 日韩亚洲在线 | 久久蜜臀一区二区三区av | 免费观看一级一片 | 久久综合久久综合九色 | 精品国产免费一区二区三区五区 | 一级特黄aaa大片在线观看 | 欧美日本啪啪无遮挡网站 | 超碰97中文 | 国产精品电影一区二区 | 欧美三级免费 | 国产日韩精品一区二区在线观看播放 | 99精品视频在线观看 | 在线免费看黄网站 | 欧美精品中文在线免费观看 | 精品中文字幕视频 | 久久久午夜精品福利内容 | 在线观看国产www | 久久久久久免费 | 午夜美女wwww | 97国产大学生情侣白嫩酒店 | 激情伊人五月天 | 婷婷综合国产 | 黄色成年片 | 91九色在线观看视频 | 成人国产精品电影 | 免费亚洲成人 | 夜夜夜草 | 99精品网站| 国产免费av一区二区三区 | 久久综合久久综合这里只有精品 | 日韩资源在线播放 | 不卡av在线 | 在线观看免费成人 | 中文字幕免费一区二区 | 国产91精品久久久久久 | 日本在线观看黄色 | 播五月婷婷 | 美女网站在线免费观看 | 日本不卡一区二区三区在线观看 | 日韩美女av在线 | 国产精品视频免费看 | 久久人网 | 亚洲精品美女 | 欧美精品一区二区三区一线天视频 | 国产精品一级在线 | 国产一区二区视频在线 | 国产自在线 | 中文字幕av在线不卡 | 麻豆视频在线观看 | 五月婷婷一区二区三区 | 欧美日韩一区二区免费在线观看 | 在线免费观看视频你懂的 | 久久综合狠狠 | 久久最新 | 日韩av手机在线观看 | 99视频国产精品免费观看 | 久久69精品久久久久久久电影好 | 娇妻呻吟一区二区三区 | 韩国三级av在线 | 亚洲精品一区二区精华 | 国产美女视频一区 | 4438全国亚洲精品在线观看视频 | 久久国产精品一区二区三区四区 | 九色自拍视频 | 日韩电影久久 | 国产最新91 | 丰满少妇久久久 | 久久 在线 | 三级黄色网址 | 久青草电影 | 综合网婷婷 | 亚洲精品国产精品国自产观看 | 日韩和的一区二在线 | 久久狠狠干 | 成人免费视频免费观看 | 激情视频综合网 | 国产在线观看av | 久久99精品国产 | 香蕉视频最新网址 | 国产精品毛片一区二区在线看 | 国产激情久久久 | www.xxxx变态.com | 久久亚洲私人国产精品va | 国产成人一二片 | 成人全视频免费观看在线看 | 国产伦理剧| 亚洲一级片免费观看 | 日韩乱色精品一区二区 | 精品影院| 精品国产成人在线影院 | av综合站 | 精品久久精品久久 | 500部大龄熟乱视频使用方法 | 国内精品久久久久久久久久清纯 | 91手机视频在线 | 亚洲午夜久久久综合37日本 | 亚洲精品av中文字幕在线在线 | av高清一区二区三区 | 欧美一区二视频在线免费观看 | 人人干干人人 | 成人在线观看网址 | 美女网站免费福利视频 | 日韩精品一区二区在线 | 超碰在线人人艹 | 在线观看免费色 | 欧美日韩视频一区二区三区 | 成人午夜在线电影 | 日韩av在线资源 | 亚洲视频 一区 | 色婷婷成人网 | 日韩电影中文字幕在线 | 国产黄色看片 | 狠狠躁夜夜躁人人爽超碰97香蕉 | 男女啪啪免费网站 | 97在线免费观看 | 亚洲欧美色婷婷 | 欧美久久九九 | 一区二区视频电影在线观看 | 国产高清精品在线观看 | 日韩高清在线观看 | 99中文在线| 91久久影院 | 中文字幕 国产精品 | 手机在线中文字幕 | 97超碰资源站 | 丁香电影小说免费视频观看 | 国产又粗又硬又爽视频 | 一级一片免费看 | 亚洲国产av精品毛片鲁大师 | 区一区二区三在线观看 | 日日夜夜精品免费视频 | av中文字幕在线看 | 国产一区二区视频在线播放 | 午夜精品久久久久99热app | 狠狠插狠狠操 | 开心激情网五月天 | 黄av资源| 五月婷婷在线观看 | 日韩电影一区二区三区 | 97色婷婷成人综合在线观看 | 日韩视频免费看 | 国产日产在线观看 | 国产69精品久久久久久久久久 | 亚洲精品久久久久久中文传媒 | 毛片网站在线看 | 日韩在线中文字幕视频 | 九九99| 五月婷婷六月综合 | 国产在线黄色 | 成年人在线电影 | 日韩免费三区 | 特级免费毛片 | 91探花视频 | 成人免费毛片aaaaaa片 | 亚洲欧洲日韩 | 国产欧美在线一区 | 在线免费观看羞羞视频 | 亚洲成色777777在线观看影院 | 久久a热6| 国产精品久久久久久久久免费看 | 亚洲 欧美 另类人妖 | 中文字幕av电影下载 | www视频在线播放 | 香蕉久久久久久av成人 | 国产一区二区三区午夜 | 免费观看成人av | 高清中文字幕 | 91在线一区二区 | 国产一区二区三区视频在线 | 免费看国产黄色 | 成人福利在线播放 | 少妇bbb搡bbbb搡bbbb | 国产精品久久久久婷婷 | 91九色在线观看 | 国产三级在线播放 | 日韩欧美一区二区三区视频 | 亚洲涩涩网站 | 国产视频一区二区在线 | 国产精品视频999 | 欧美日韩视频在线观看一区二区 | 中文字幕免费久久 | 国产美女被啪进深处喷白浆视频 | 日日麻批40分钟视频免费观看 | 久久久观看 | 亚洲成年人免费网站 | 热re99久久精品国产66热 | 337p日本欧洲亚洲大胆裸体艺术 | 日韩电影一区二区在线 | 日韩免费视频线观看 | 97国产精品久久 | 日日干,天天干 | 国产人成免费视频 | 亚洲国产欧美在线人成大黄瓜 | 欧美在线free | 亚洲天堂网在线观看视频 | 国产福利中文字幕 | 九九99靖品 | a级黄色片视频 | 久久精品亚洲 | 国产在线观看高清视频 | 国产精品原创 | 99亚洲视频 | 精品理论片 | av大全在线播放 | av怡红院| 奇米影视8888在线观看大全免费 | 欧美调教网站 | 18做爰免费视频网站 | 三级小视频在线观看 | 久久九九影视 | av在线超碰 | 亚洲精品麻豆视频 | 国产成人免费 | 午夜精选视频 | 日韩av片免费在线观看 | 99综合影院在线 | 成人免费网站视频 | 爱情影院aqdy鲁丝片二区 | 中文字幕有码在线观看 | 国产精品免费不卡 | 国产高清不卡 | 激情丁香综合五月 | 精品免费久久久久久 | 久久在线免费观看视频 | 69热国产视频 | 国产一级二级视频 | 天天综合操 | 天天躁天天狠天天透 | 麻花豆传媒mv在线观看网站 | 国产午夜一区 | 人人插超碰 | 久久综合五月 | 日韩精品一区二区三区免费观看 | 久久国产精品免费一区 | 日韩av资源在线观看 | a级黄色片视频 | 久久国产精品免费观看 | 国产极品尤物在线 | 福利网址在线观看 | 五月天电影免费在线观看一区 | 日韩久久久久久久久 | 欧美视频在线观看免费网址 | 精品国产自在精品国产精野外直播 | 午夜婷婷综合 | 国产一区不卡在线 | 美女视频黄频大全免费 | 一级片观看 | 十八岁以下禁止观看的1000个网站 | 亚洲va欧美 | 伊人干综合 | 中文区中文字幕免费看 | 久草免费在线 | www·22com天天操 | 久久夜夜操 | www激情com| 安徽妇搡bbbb搡bbbb | 久久婷亚洲五月一区天天躁 | 蜜臀av免费一区二区三区 | 日韩伦理一区二区三区av在线 | 日日日操操 | 国产特级毛片aaaaaa毛片 | 亚洲国产天堂av | 三级黄色欧美 | 国产欧美日韩一区 | 成年人av在线播放 | 亚洲乱码国产乱码精品天美传媒 | 天天干天天干天天操 | 久久精品久久精品 | 亚洲国产精品激情在线观看 | av成年人电影 | 精品色999 | 久久 一区| 91视频最新网址 | 亚洲精品综合欧美二区变态 | 亚洲综合色网站 | 正在播放一区 | 九九在线高清精品视频 | 久久99精品久久久久婷婷 | 久久久福利视频 | 日韩色综合 | 日韩av在线免费看 | 国产小视频在线免费观看 | 丰满少妇高潮在线观看 | 国产特黄色片 | 亚洲精品国产精品乱码不99热 | 国产成人在线一区 | 中文字幕一区二区三区乱码不卡 | 不卡电影一区二区三区 | 欧美aa在线| 久久激情电影 | 国产片免费在线观看视频 | www.五月天婷婷.com | 中文字幕在线观看av | 国产黄色精品在线 | 亚洲免费av电影 | 狠狠的干狠狠的操 | 日日干av| www.伊人网 | 精品久久久久久综合 | 亚洲精品国产精品国自产 | 国内精品视频在线 | 亚洲激情校园春色 | 日韩精品一区二区不卡 | 国产小视频在线观看免费 | 免费av网址大全 | 黄色片视频在线观看 | 欧美日韩一区二区三区免费视频 | 五月天综合婷婷 | 亚洲五月婷 | www.91av在线| 在线免费观看黄网站 | 97精品久久 | 日日色综合 | 国产精品一区一区三区 | 久久综合五月婷婷 | 国产在线播放一区 | 日韩高清在线一区 | 国产精品久久久久久麻豆一区 | 国产三级香港三韩国三级 | 亚洲最新av在线 | 麻豆国产电影 | 欧美另类重口 | 成人久久国产 | 亚洲欧美在线视频免费 | 天天操天天操天天操天天操天天操 | 久久精品免费 | 久草视频免费播放 | 日韩欧美区 | 人人插人人舔 | 日韩在线观看不卡 | av在线播放快速免费阴 | 久久免费视频6 | 国产一区二区三区久久久 | 午夜色站 | 最新av免费在线观看 | 日本在线观看视频一区 | 激情网五月 | 九色91在线视频 | 日日夜夜免费精品视频 | 日韩中文字幕视频在线观看 | 国产精品亚洲综合久久 | 国产伦理剧 | 麻豆一区在线观看 | 中日韩欧美精彩视频 | 黄色在线成人 | 亚洲精品视频大全 | 国产在线日韩 | 91九色蝌蚪国产 | 91精品国产一区二区三区 | 黄色毛片一级片 | 欧美少妇xxx | 夜添久久精品亚洲国产精品 | 中文字幕国产一区二区 | 国产精品一区一区三区 | 国产色小视频 | 丝袜美女视频网站 | 亚洲尺码电影av久久 | 成人中文字幕在线观看 | 色婷婷成人 | 久久99久久99精品中文字幕 | 欧美日性视频 | 成人av在线观 | 色视频网站免费观看 | 国产 中文 日韩 欧美 | 欧美日韩国产精品一区二区三区 | 国产成人av在线 | 九九热精品视频在线播放 | 深夜激情影院 | 亚洲视频999 | 国产精品一区二区白浆 | 久久99精品国产 | 国产尤物在线视频 | 中文字幕国产精品 | av高清一区二区三区 | 一级免费av | 欧美日韩中文国产 | 免费在线色 | 久久 国产一区 | 视频二区| 特级aaa毛片| 国产精品丝袜久久久久久久不卡 | 国产成人一二片 | 精品久久久久久久久久久久久久久久久久 | 成人黄色一级视频 | 在线观看免费av片 | 中文字幕免费 | 97成人在线 | 美女视频黄是免费的 | 中文字幕网站视频在线 | 欧美日韩一区二区久久 | 国产精品久久久久婷婷二区次 | 久久99热精品这里久久精品 | 最近日本mv字幕免费观看 | 超碰人人91 | 久久国内精品 | 国产在线播放一区二区 | 国产粉嫩在线观看 | 日韩视频一区二区 | 丁香花在线观看免费完整版视频 | 日韩精品视频免费看 | 国产夫妻性生活自拍 | 亚洲色影爱久久精品 | 午夜美女av | 久久久精品 一区二区三区 国产99视频在线观看 | 天天操天天色天天射 | 91av99| 97综合网| 国产精品久久久久久99 | 国产亚洲久一区二区 | 国产高h视频 | 黄色免费网 | 西西大胆免费视频 | 少妇高潮冒白浆 | 亚洲黄色在线播放 | 热久久免费视频精品 | 国产精品永久久久久久久久久 | 国产亚洲欧洲 | 99国内精品久久久久久久 | 亚洲精品www久久久 www国产精品com | 99成人免费视频 | 久久精品视频在线播放 | 波多野结衣一区二区三区中文字幕 | 国产成人a亚洲精品v | 亚洲乱码久久久 | 蜜桃视频成人在线观看 | 日本黄色a级大片 | 国产精品爽爽久久久久久蜜臀 | 日日摸日日添夜夜爽97 | 日韩精品一区二区三区第95 | 人人爽人人澡 | 超碰在线公开免费 | 日日噜噜噜噜夜夜爽亚洲精品 | 韩国av免费观看 | 草免费视频 | 午夜久久影视 | 成人亚洲免费 | 亚洲激情国产精品 | 黄色网免费 | 999视频精品 | aⅴ精品av导航| 91精品电影 | 91桃色免费视频 | 久久97久久 | 91精品色 | 黄色大全免费观看 | 人人玩人人添人人澡超碰 | 少妇高潮流白浆在线观看 | 午夜精品久久久久久久99 | 欧美一级久久久久 | 成人黄色视 | 色婷婷啪啪免费在线电影观看 | 91探花视频| 亚洲精品小视频 | 91在线视频播放 | 一级久久久| 国产亚洲婷婷免费 | 久久色亚洲 | 国产特黄色片 | 亚洲一区 影院 | 超碰在线公开免费 | 99视频国产精品免费观看 | 91精品啪在线观看国产线免费 | 2021av在线| 最近日韩免费视频 | 888av| 亚洲天堂网在线播放 | 日韩专区在线观看 | 欧美激情第一区 | 天天操夜夜叫 | 日韩免费在线观看视频 | 亚洲精品视频二区 | 丁香狠狠 | 久久久久久久久艹 | 日韩二区三区在线观看 | 久久99国产精品自在自在app | 91精品在线免费观看视频 | 欧美人人| 91中文字幕在线 | 国产精品免费视频一区二区 | 成人黄色在线观看视频 | 日韩中文在线观看 | 亚洲性xxxx | 国产精品婷婷午夜在线观看 | 在线免费色视频 | 最近高清中文字幕 | 色视频在线观看 | 六月婷婷色 | 91最新网址在线观看 | 欧美日韩一区二区三区在线观看视频 | 婷婷在线观看视频 | 91丨九色丨91啦蝌蚪老版 | 五月天激情在线 | 国产一区二区视频在线播放 | 麻花豆传媒mv在线观看 | 最新中文字幕在线播放 | 日韩免费二区 | 国产成人av电影在线观看 | 九九一级片 | 欧美一级片在线播放 | 久久久999免费视频 日韩网站在线 | 综合网伊人 | 亚洲综合小说电影qvod | 在线视频 日韩 | 日日噜噜噜噜夜夜爽亚洲精品 | 亚洲成人资源在线 | 亚洲精品免费在线视频 | 国产高清在线一区 | 一本一本久久a久久精品综合 | www久久99 | 又黄又刺激又爽的视频 | 国产免费人成xvideos视频 | 色婷婷视频在线观看 | 欧美男男激情videos | 国产高清99| 日韩sese| 在线观看亚洲国产精品 | 18女毛片 | 日韩网站在线播放 | 午夜精品影院 | 日韩a在线播放 | 91av视频网 | 国产视频精品久久 | 天天爽天天爽夜夜爽 | av韩国在线 | 婷婷综合久久 | 久久激情视频 久久 | 久久精久久精 | 97国产在线视频 | 国产精品久久久久久久免费大片 | 日韩有码中文字幕在线 | 亚洲午夜av久久乱码 | 亚洲精品成人av在线 | 免费高清无人区完整版 | 午夜私人影院 | 国产999视频在线观看 | 日韩av成人免费看 | 麻豆国产网站入口 | 五月天丁香视频 | 国产精品美女在线观看 | 99久久99久久免费精品蜜臀 | 最近日本韩国中文字幕 | 黄色亚洲片 | 久久久久久久久久伊人 | 91亚洲欧美激情 | 久久人人射 | 久久久久久久久久久久影院 | 欧美少妇18p | 伊人夜夜 | 九九综合九九综合 | 91成人午夜 | 天天爱天天 | 亚洲精品乱码久久久久久久久久 | 91精品对白一区国产伦 | 久久久亚洲影院 | 国产精品手机在线 | 色婷婷六月 | 爱射综合 | www激情久久 | 中文字幕 影院 | 亚洲涩综合 | 国产视频一二区 | 国产香蕉久久精品综合网 | 久久综合久色欧美综合狠狠 | 亚洲狠狠丁香婷婷综合久久久 | 在线观看国产成人av片 | 免费看搞黄视频网站 | 91精品电影 | 人人澡超碰碰97碰碰碰软件 | 午夜精品久久久久久久99婷婷 | 亚洲动漫在线观看 | 久久久久国产精品厨房 | 91在线视频免费91 | 在线免费观看亚洲视频 | 五月天高清欧美mv | 欧美亚洲精品在线观看 | 久久激情婷婷 | 久久乱码卡一卡2卡三卡四 五月婷婷久 | 九九在线高清精品视频 | 久久久www成人免费毛片麻豆 | 亚洲成人精品久久久 | 亚洲做受高潮欧美裸体 | 色偷偷88欧美精品久久久 | 国产精品一区二区三区在线看 | 日韩三区在线 | 日韩一级精品 | 久久综合久久88 | 四虎影视成人永久免费观看亚洲欧美 | 久久人人97超碰国产公开结果 | 美女视频黄免费的 | www.888av | 成人精品在线 | 激情五月在线观看 | 日韩高清观看 | 国产中文在线字幕 | 国产精品一区二区三区在线看 | 9999国产| 亚洲一二三久久 | 久久九九九九 | 亚洲精品国产精品乱码在线观看 | 最新超碰| 久久久久久免费 | 免费成人黄色 | 日韩在线无 | 国产视频精品在线 | 97人人澡人人爽人人模亚洲 | 天天爽天天爽 | 97超视频免费观看 | 亚洲 欧美 变态 国产 另类 | 日本丶国产丶欧美色综合 | 91高清在线 | 青青河边草免费 | 国产亚洲视频在线观看 | 久久蜜臀av | 国产精品久久久久久婷婷天堂 | 亚洲精品国产成人 | 伊人天堂av | 黄色亚洲大片免费在线观看 | 亚洲精品国产精品国自产观看浪潮 | 成人国产电影在线观看 | 四虎精品成人免费网站 | 日本精品一区二区三区在线观看 | 一级片免费在线 | 日本一区二区三区免费观看 | 在线激情网 | 婷婷色综合网 | 国产区高清在线 | 99免费在线播放99久久免费 | 日韩色一区二区三区 | 在线观看视频一区二区三区 | 中文字幕av最新更新 | 日韩xxx视频 | 99精品在线免费视频 | 国产精品一区在线观看 | 午夜精品一区二区三区免费 | 久久艹艹 | 五月婷在线观看 | av日韩精品| 天天综合区 | 欧美在线视频一区二区 | 中文字幕欧美日韩va免费视频 | 久久夜色精品国产欧美一区麻豆 | 综合婷婷 | 国产精品黑丝在线观看 | 国产91在线 | 美洲 | 亚洲国产人午在线一二区 | 91亚洲精品国偷拍自产在线观看 | 欧美一级片免费 | 久久五月情影视 | 99热精品国产一区二区在线观看 | 日韩精品视频在线观看网址 | 久久久久久久久久久精 | 99精品一区二区三区 | 国语自产偷拍精品视频偷 | 国内精品久久久久久久影视简单 | 国产麻豆剧传媒免费观看 | 国产视频一区二区在线 | 在线小视频你懂得 | 99精品国产高清在线观看 | 久久精品中文字幕免费mv | av在线看片 | 国产小视频免费在线网址 | 一级成人在线 | 韩国一区二区三区在线观看 | 九九久久影院 | 亚洲aⅴ在线 | 国产专区日韩专区 | 永久免费毛片在线观看 | 欧美午夜精品久久久久久浪潮 | 日韩欧美国产免费播放 | 午夜精品视频一区二区三区在线看 | 婷婷在线网 | 日韩在线色 | 色在线亚洲 | 国产精品高潮呻吟久久av无 | 精品久久网站 | 亚州国产视频 | 色综合天天综合网国产成人网 | 亚洲精品黄网站 | 久久成人国产精品一区二区 | 在线观看免费黄视频 | 超级碰碰碰碰 | 久久免费一 | 久久久穴 | 国产一级高清视频 | 中文字幕资源在线观看 | 99视频久 | 五月天婷婷免费视频 | 天天操天天射天天爱 | ww视频在线观看 | 婷婷网站天天婷婷网站 | 超碰午夜 | japanesexxx乱女另类 | 精品国产一区二区三区不卡 | av丝袜在线 | av网站手机在线观看 | 天天操夜夜操国产精品 | 久久黄色美女 | 免费看黄在线网站 | 国产亚洲精品美女 | 国产精品美女久久 | 久久成人国产精品免费软件 | 一本一道久久a久久精品蜜桃 | 在线观看国产成人av片 | 国产精品久久电影观看 | 色综合网在线 | 日韩三区在线观看 | 伊人一级| 天天干夜夜夜操天 | 日本免费一二三区 | 亚洲成人xxx | 黄色av三级在线 | www.av免费观看 | 五月婷婷在线播放 | 国产精品专区h在线观看 | 国产精品9999久久久久仙踪林 | 久久综合毛片 | 欧美精品在线视频 | 免费av网址大全 | 狠狠躁日日躁狂躁夜夜躁av | 五月婷婷丁香色 | 久久免费视频国产 | 久久久免费高清视频 | 久久曰视频 | 久久免费视频播放 | 国产精品18videosex性欧美 | 国产99久久精品 | 91欧美日韩国产 | 国产一卡二卡在线 | 天天色宗合 | 亚洲成人精品在线观看 | 中国美女一级看片 | 免费午夜在线视频 | 国产精品久久久久av免费 | 91免费高清视频 | 亚洲区另类春色综合小说校园片 | 国产亚洲精品久久久久久 | 亚洲成人资源网 | 五月天久久 | 亚洲人久久 | 精久久久久 | 国产视频一区在线免费观看 | 午夜精品一二区 | 黄色小说免费在线观看 | 91精品91| 青青网视频 | 久久免费公开视频 | 国产精品欧美久久久久无广告 | 久久成人高清视频 | 成人免费在线电影 | 韩日精品在线 | 天天操天天操天天操天天操天天操 | 91在线看免费 | 婷婷丁香在线观看 | 亚洲欧美国产精品18p | 日韩视频一区二区在线观看 | av电影在线免费 | 日韩av一区二区在线播放 | 亚洲综合视频网 | 久久99在线视频 | av看片网| 日韩高清无线码2023 | 亚洲综合色视频 | 在线观看视频一区二区 | 六月天综合网 |