TCP空閒掃瞄原理

2021-08-07 12:22:37 字數 1986 閱讀 8500

tcp空閒掃瞄是一種隱秘的掃瞄技術,要知道它的原理,首先要介紹一下一般埠掃瞄的原理。

判斷乙個tcp埠是否開放,其中一種方法是向該埠傳送乙個 syn(建立會話) 資料報,如果該埠是開放的,則它會返回乙個 syn/ack(會話確認) 資料報;如果該埠是關閉的,則它返回 rst(重置) 資料報;如果埠是被過濾狀態,則它什麼都不返回。一般來說我們通過這種方法判斷掃瞄的主機埠是否開放。

還需要另乙個背景知識:網際網路上的每個ip資料報都有乙個分段身份識別號(ip id)。許多作業系統只是簡單的把該識別號遞增,因此分析最後一次的ipid就可以告訴攻擊者已經此主機傳送了多少資料報。

現在我們想象:已知一台主機 z ,他是空閒的,不在網路上與其他主機進行網路通訊。我們直接向他傳送乙個 syn/ack 包。因為他沒有向我們傳送過 syn 包,所以接受到 syn/ack 包之後不知道我們是什麼意思,就回給我們乙個 rst 包,包裡會附有 ip id,就假設是31337吧。

現在我們製作乙個ip位址偽裝成主機 z 的 syn 資料報,將它傳送到要掃瞄的真實主機 t 的某個埠(為方便描述,我們假設想掃瞄 t 的 21 號埠)。注意,這個包是我們傳送的,主機 z 並不知道有人假裝它傳送了資料報,它的 ip id 不會受到影響。然後我們等一會,再向主機 z 傳送乙個 syn/ack 的資料報,z 會返回乙個 rst ,我們檢視裡面的 ip id。

要分析此時得到的 ip id 可能是多少,就要先分析我們傳送了偽造的資料報後發生了什麼。

可想而知,根據主機 t 的 21 號埠的狀態,可能有三種情況發生:

21 埠開啟

這種情況下主機 t 收到我們的 syn 包,由於 21 埠開放,他要返回乙個 syn/ack。它檢視 syn 包裡的** ip,那裡寫著的是 z 的 ip 位址,於是它向主機 z 傳送了乙個 syn/ack 包。主機 z 接到這個包之後就傻了,它心想我沒想連線你的 21 埠啊,然後 z 傳送了乙個 rst 給 t, z t 之間通訊結束。

注意加粗的部分,z 主動傳送乙個 rst 包的時候,ip id 需要加一,這個包裡的 ip id 為 31338。所以我們接受到的那個 rst 包的 ip id 就會是 31339。

idle-scan-open.png

21 埠關閉

這種情況下主機 t 機收到我們的 syn 包,由於他沒開這個埠,所以準備返回乙個 rst 包。和 1 中情形類似,他把這個 rst 包發給了 z 。z 不明所以,就沒管。

因為這個過程中 z 沒有傳送任何資料報,所以我們接受收到來自 z 的 rst 包中的 ip id 會是31338。

idle-scan-cloesd.png

21埠被過濾

這種情況呢 t 收到 syn 之後,會直接無視這個包。同情況2,我們接受到的來自 z 的 rst 包中的 ip id 會是 31338。

idle-scan-filtered

綜上所述:

21 埠狀態

收到的 rst 包中的 ip id

open

31339 (+2)

closed

31338 (+1)

filtered

31338 (+1)

所以通過檢查收到的 rst 包中的 ip id,就可以判斷我們需要探查的主機的特定埠是否開啟。

這種掃瞄的好處就是,被掃瞄主機 t 並不知道我們在掃瞄他,t 並不知道我們的真實 ip。缺點是速度慢而且並不能判斷埠到底是關閉還是被過濾。

但是這種掃瞄還可能反映出主機間的信任關係。

空閒掃瞄有時候能夠對映出這種信任關係。因為空閒掃瞄列出的開放埠是相對於殭屍主機而言。若對上述資料庫伺服器進行一次常規的掃瞄,可能顯示未開放任何埠,但是使用老闆家裡主機的 ip 作為殭屍主機,進行空閒掃瞄卻顯示該資料庫相關的服務埠是開放的,由此可以斷定他們之間存在信任關係。

若能對映出他們之間的信任關係,將對攻擊者非常有用,可以優先把它當成攻擊目標。如果不能注意到連帶的資料庫訪問,那麼上述討論的殭屍主機對於攻擊者而言就是乙個非常普通伺服器。

一 TCP掃瞄技術

一 tcp掃瞄技術 常用的埠掃瞄技術有很多種,如 tcp connect 掃瞄 tcp syn 掃瞄 tcp fin 掃瞄 等,網路上也有很多文章專門介紹,比如 上就介紹了很多我的程式 所使用的最基本的掃瞄技術 tcp 掃瞄。作業系統提供的 connect 系統呼叫,用來與每乙個感興趣的目標計算機的...

掃瞄工作原理

條碼閱讀器 條碼閱讀器是用於讀取條碼所包含的資訊的裝置,條碼閱讀器的結構通常為以下幾部分 光源 接收裝置 光電轉換部件 解碼電路 計算機介面。它們的基本工作原理為 由光源發出的光線經過光學系統照射到條碼符號上面,被反射回來的光經過光學系統成像在光電轉換器上,使之產生電訊號,訊號經過電路放大後產生一模...

tcp埠掃瞄 使用Python進行TCP埠掃瞄

首先我們供給一台主機,要進行的步驟就是對其主機埠的掃瞄,檢視其中開放的埠。我們建立乙個tcp的全連線的掃瞄器,使用socket來建立聯結器。測試當前主機和埠是否開放,直接使用socket連線def connscan host,port try connskt socket.socket socket...