• 駭客眼中的 3-way handShake

     

    TCP 為了確保封包的送達與錯誤的處理,額外加入許多網路溝通的控制訊號。

    這些控制訊號雖然可以讓 TCP封包使命必達的送達,

    但是也可以讓駭客透過這些訊號偵查網路與伺服器。

    這篇文章主要就是要說明駭客眼中的這些TCP 訊號,

    駭客如何透過這些TCP訊號來判斷網路與伺服器的狀態。

     

    3-Way handShake

    任何情況下兩台電腦要相互溝通,只要是透過 TCP 傳輸協定,

    一定需要建立 3-way handShake,

    • 1. 發送端傳送 Syn
    • 2. 接收端回傳 SYN/ACK
    • 3. 發送端回傳 ACK

    這就是所謂的 3-way handshake,

    因此,我們得到一個結論:

    只要接收斷回傳 SYN/ACK就表示該伺服器的 port 是通的!

    port 是通的表示該伺服器透過該 port 提供某種服務。例如 80 port 的網站服務等。

    反向解釋,只要接收端沒有回傳 SYN/ACK或是回傳RST就表示該伺服器 port 是不通的!

    這就是駭客用來偵查特定伺服器有提供哪些服務的基本原理與方法。

    Xmas scan

    這是另外一種變形的方式,用來判斷 port 有沒有通的方式之一。

    不同的是,駭客並不是傳送 SYN 訊號,而是傳送FIN的訊號。

    根據 RFC 793,如果 port 不通,伺服器應該要回覆 RST/ACK。

    反向解釋,如果 port 通的話,應該就沒有回應。

    Open Port (Server IP:23)

    (Hacker client IP):4031 ———–FIN/URG/PSH———–>  (Server IP):23
    (Hacker client IP):4031 <———-NO RESPONSE————  (Server IP):23

    Closed Port (Server IP:23)

    (Hacker client IP):4031 ———–FIN/URG/PSH———–>(Server IP):23
    (Hacker client IP):4031<————-RST/ACK————–(Server IP):23

     

    FIN Scan

    這種偵測方式與 Xmas Scan 原理相同。

    Open Port (Server IP:23)

    (Hacker client IP):4031 ———–FIN—————–>(Server IP):23
    (Hacker client IP):4031 <———-NO RESPONSE———-(Server IP):23

    Closed Port (Server IP:23)

    (Hacker client IP):4031 ————-FIN—————>  (Server IP):23
    (Hacker client IP):4031<————-RST/ACK————(Server IP):23

    Null Scan

    Null Scan 是TCP 封包傳送並不設定任何訊號。如果 port 不通,伺服器會回傳 RST/ACK

    Open Port (Server IP:23)

    (Hacker client IP):4031 ———–NO FLAGS SET———->(Server IP):23
    (Hacker client IP):4031 <———-NO RESPONSE————(Server IP):23

    Closed Port (Server IP:23)

    (Hacker client IP):4031 ————-NO FLAGS SET———(Server IP):23
    (Hacker client IP):4031<————-RST/ACK-————-(Server IP):23

     

    IP ID Sequence Number

    TCP 封包為了讓封包不遺失,每個封包都會有Sequence Number,

    透過這個序號也可以讓我們知道該伺服器是否有 Load Balance。

    可以使用 hping的工具測試。

    hping2 -c 10 -i 1 -p 80 -S    victim.server.com

    從這個執行結果我們知道該 victim.server.com背後有兩台電腦所組成的 load balance。

    因為 ID 通常為序號越來越大。我們觀察到 id= 57xxx 與 id=18xxx ,表示有兩台電腦回覆產生不同的 id 所造成。

    46 bytes from 207.46.197.115: flagsSA seq0 ttl=56 id=57645 win=16616 rtt=21.2 ms
    46 bytes from 207.46.197.115: flagsSA seq1 ttl=56 id=57650 win=16616 rtt=21.4 ms
    46 ms bytes from 207.46.197.115: flagsRA seq2 ttl=56 id=18574 win=0 rtt=21.3
    46 ms bytes from 207.46.197.115: flagsRA seq3 ttl=56 id=18587 win=0 rtt=21.1

    Firewalk Router’s Gateway

    利用IP TTL的機制來得知防火牆的設定與存在。

    1. 這個方是主要利用 TTL 來間接知道網路中間有幾個節點。

    2. 如果 port 是通的話,應該會回覆 ICMP_TIME_EXCEEDED。

    如果 port 不同的話,就timeout。透過這個方式就可以知道網路截點過程中有哪些port 是通的。

    使用nmap 測試結果範例

    | firewalk:
    | HOP HOST         PROTOCOL  BLOCKED PORTS
    | 2   192.168.1.1  tcp       21-23,80
    |                  udp       21-23,80
    | 6   10.0.1.1     tcp       67-68
    | 7   10.0.1.254   tcp       25
    |_                 udp       25

     

    https://nmap.org/nsedoc/scripts/firewalk.html

     

     

     

     

     

    Posted by Tony @ 10:43 pm

  • Leave a Reply

    Your email address will not be published.