駭客眼中的 3-way handShake成也蕭何敗也蕭何

駭客眼中的 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

 

 

 

 

 

Leave a Reply

Your email address will not be published. Required fields are marked *