iT邦幫忙

2024 iThome 鐵人賽

DAY 5
1
Security

前端小廢物誤入 Hackthebox Module系列 第 5

Nmap 與繞過防火牆規則和 IDS/IPS

  • 分享至 

  • xImage
  •  

簡介 Firewall

防火牆是一種針對「未授權連線嘗試」的安全措施,旨在保護內部網路免受外部網路的威脅。

防火牆會「檢查每個網路封包」,並決定是否允許通過、忽略,或直接阻擋它

這種機制的設計目的是「防止可能危險的未授權連線進入網路」,從而保障系統的安全。

簡介 IDS/IPS

IDS (Intrusion Detection System,入侵偵測防禦系統)

簡單來說,IDS 的主要功能是監控網路流量,檢測可能的威脅或異常行為~

它偵測到問題會生成警報,但是是被動的,並不會主動阻止攻擊行為。


筆者 say say 念:

用一句話比喻,就是 IDS 有點草食啦 XD


/images/emoticon/emoticon33.gif

IPS (Intrusion Prevention System,入侵防禦系統)

IPS 則是能夠根據預設的規則阻擋或拒絕可疑流量,從而防止攻擊成功。

它能檢測到潛在威脅,也能主動阻止攻擊!


筆者 say say 念:

IPS 就有點肉食,比較主動阿捏~


/images/emoticon/emoticon09.gif

Firewall / IDS / IPS 與 Nmap

針對 Firewall,Nmap 可以拿來幹嘛?

Nmap 提供了多種「繞過防火牆規則和 IDS/IPS 系統」的方法,這些方法有助於攻擊者「躲避安全監測工具的檢測」。

筆者在這邊列出幾個「逃避防火牆檢測」方法~

封包碎片化(Fragmentation of Packets)

通過將封包「分割成較小的片段」來進行傳輸,目的是「使防火牆或入侵偵測系統難以完全重組和分析完整的封包內容」。

當封包被分割後,安全系統需要重新組合這些片段才能進行完整的檢查,部分防火牆或 IDS/IPS 在面對大量小封包時可能無法正確分析,從而造成漏洞。


筆者 say say 念:

碎片化就有點像是「散彈攻擊」,當你被攻擊了要蒐集完整證據就比較困難,因為太多雜七雜八的東西砸到你身上 ><


範例

sudo nmap -sS -p80 -f 10.129.2.28

這邊就是針對 10.129.2.28 的 port 80 來進行 -sS SYN 掃描,並加上 -f 來啟用封包分片 ~

誘餌(Decoys)

通過「偽造多個來源地址」進行掃描,從而混淆目標系統,讓目標難以確定實際的攻擊來源。

防火牆和 IDS/IPS 系統可能會看到多個不同的來源地址同時進行掃描,這會增加防禦方判斷真實攻擊者的困難~

Decoy 可以搭配 ACK / SYN / ICMP 掃描做使用 ~


筆者 say say 念:

誘餌就是透過「影分身之術」,讓別人眼花撩亂。


範例

此範例生成 5 個隨機的 Decoy IP 地址,並將其中一個作為真實 IP 地址插入封包中 XD

sudo nmap 10.129.2.28 -p 80 -sS -Pn -n --disable-arp-ping --packet-trace -D RND:5

這邊用到了很多參數,稍微說明一下 ~

-p 80: 掃描目標的 80 端口。
-sS: 執行 SYN 掃描。
-Pn: 禁用 ICMP Echo 請求,假設主機在線。
-n: 禁用 DNS 解析。
--disable-arp-ping: 禁用 ARP ping
--packet-trace: 顯示所有發送和接收的封包。
-D RND:5: 生成 5 個隨機的 Decoy IP 地址,隱藏真實 IP 地址。

結果示意圖大概是長這樣 ~

SENT (0.0378s) TCP 102.52.161.59:59289 > 10.129.2.28:80 S ttl=42 id=29822 iplen=44 seq=3687542010 win=1024 <mss 1460>
SENT (0.0378s) TCP 10.10.14.2:59289 > 10.129.2.28:80 S ttl=59 id=29822 iplen=44 seq=3687542010 win=1024 <mss 1460>
SENT (0.0379s) TCP 210.120.38.29:59289 > 10.129.2.28:80 S ttl=37 id=29822 iplen=44 seq=3687542010 win=1024 <mss 1460>
SENT (0.0379s) TCP 191.6.64.171:59289 > 10.129.2.28:80 S ttl=38 id=29822 iplen=44 seq=3687542010 win=1024 <mss 1460>
SENT (0.0379s) TCP 184.178.194.209:59289 > 10.129.2.28:80 S ttl=39 id=29822 iplen=44 seq=3687542010 win=1024 <mss 1460>
SENT (0.0379s) TCP 43.21.121.33:59289 > 10.129.2.28:80 S ttl=55 id=29822 iplen=44 seq=3687542010 win=1024 <mss 1460>
RCVD (0.1370s) TCP 10.129.2.28:80 > 10.10.14.2:59289 SA ttl=64 id=0 iplen=44 seq=4056111701 win=64240 <mss 1460>

此輸出顯示了多個不同的 Decoy IP 地址發送封包的過程,其中 10.10.14.2 是實際的來源 IP 地址,隱藏在生成的 5 個隨機 IP 地址中。

分析防火牆規則

還記得我們之前說的 Filtered 嗎?

這邊稍微說明一下 Filtered 狀態與防火牆的關係 ~

端口過濾(Filtered Port)

當端口顯示為filtered(已過濾)時,這可能是因為防火牆設置了規則來處理特定的連接請求。

而防火牆的規則通常決定封包是被「丟棄」(drop)還是「拒絕」(reject)。

這邊分別詳細說明一下這兩種狀態~

丟棄的封包

封包直接被忽略,且不會返回任何回應,讓攻擊者無法得知主機的狀態。

拒絕的封包

會返回帶有 RSTresetflag 的封包,並可能包含不同的 ICMP 錯誤代碼 ~

這些 ICMP 錯誤可能包括以下幾種:

  • 網路無法連線(Net Unreachable

  • 網路被禁止(Net Prohibited

  • 主機無法連線(Host Unreachable

  • 主機被禁止(Host Prohibited

  • 端口無法連線(Port Unreachable

  • 協議無法連通(Proto Unreachable

說了這麼多,分別就是與網路/主機/端口/協議相關的狀態 ~

使用 Nmap 掃描來面對防火牆

ACK 掃描的工作原理

TCP ACK 掃描只發送帶有 ACK 標誌的 TCP 封包,而不包含 SYN 標誌。

當目標主機收到 ACK 封包時,如果目標端口是開啟的或關閉的,都應該回傳一個帶有 RST(重置)標誌的封包。這樣的行為讓掃描者可以根據 RST 封包的回應來推測該端口的狀態。

我們來看看 ACK 掃描的流程圖 ~

https://ithelp.ithome.com.tw/upload/images/20240919/20107197nGpLQE86HK.png


筆者 say say 念:

不過這邊要注意的是,當目標端口無論是開放還是關閉,主機都會回應一個帶有 RST 標誌的封包。這樣可以確認該端口是存在的,但並無法確定該端口是否真的開放


相較之下,SYN 掃描就比較麻煩一些,它會發送帶有 SYN 標誌的封包以請求建立連線,也就容易被盯上 ><

https://ithelp.ithome.com.tw/upload/images/20240919/201071971Nl9kOoILW.png


總結 ACKSYN:

還記得筆者之前有提及 -sA ACK 掃描相較 SYN 更為隱蔽嗎?

因為他只有傳送 ACK 的封包 ~ 看起來像是對現有連線的回應,而不是新連線的請求。

相較之下,SYN 掃描發送 SYN 封包以請求建立連線,而防火牆通常會對 SYN 封包設置更嚴格的規則容易攔截到它,而 ACK 封包容易通過。


ACK 與 SYN 的實用場域比較

特性 SYN 掃描 ACK 掃描
隱蔽性 高,僅進行部分握手,通常被認為是 "半開" 掃描。 高,專門用來探測防火牆規則,較不容易被防火牆阻擋。
主要用途 直接檢查目標端口的狀態(開啟、關閉或過濾)。 探測防火牆的行為和規則,判斷流量是否被過濾。
掃描效率 快速且高效,能夠在短時間內掃描大量端口。 專注於檢查防火牆規則,相對於 SYN 掃描效率較低。
防火牆阻擋的可能性 可能被防火牆阻擋,但即使封包被阻擋,也能從回應推測端口狀態。 不容易被防火牆阻擋,因為 ACK 封包通常被視為已建立連線的一部分。
適用場景 適合直接掃描端口,快速檢查大量端口的開放狀態。 適合探測防火牆的規則,了解哪些端口被過濾或開放。
回應行為 開放端口會回應 SYN/ACK,關閉端口會回應 RST 根據防火牆的規則,可能返回 RST,也可能無回應。

結論:

  • SYN 掃描 更適合在需要快速檢查端口狀態時使用,特別是當你想要悄無聲息地進行大量掃描。
  • ACK 掃描 更適合探測防火牆規則,了解流量如何被處理,而不是直接用來判斷端口的開放或關閉狀態。

範例

有幾種測試防火牆的掃描方式,除了之前說的基本 SYN 掃描或是 ACK 掃描外,我們還可以使用手動來源 IP 掃描來指定來源 IP 或是來源 port ~

使用手動來源 IP 掃描

如果讀者想要指定來源,可以參考以下的指令 ~

sudo nmap 10.129.2.28 -n -Pn -p 445 -O -S 10.129.2.200 -e tun0

-S 10.129.2.200: 使用 IP 地址 10.129.2.200 進行掃描。
-e tun0: 指定要使用的網絡接口(這裡使用的是 tun0)。

使用不同來源端口的掃描

這個掃描技術利用 TCP 來源端口來繞過防火牆或 IDS 系統。如果目標防火牆允許來自特定端口的流量,你可以模擬來自該端口的封包,從而繞過防火牆規則。

sudo nmap 10.129.2.28 -p50000 -sS -Pn -n --disable-arp-ping --packet-trace --source-port 53

這邊有使用到 source port 53,在此多做說明 ~

--source-port 53: 使用來源端口 53 進行掃描,這常常被允許通過防火牆,因為它是 DNS 的標準端口。

總結

說了這麼多掃描,其實就是根據讀者自身的需求去做使用 ~
如果讀者想要知道比較詳細的 port STATE,你可以使用 SYN (-sS) 掃描 ~
如果不 care 這麼多,只想知道防火牆是否允許 ACK 封包進入,就用 ACK (-sA) ><
需要大量測試端口,又怕被 ban 就去看之前說的 Nmap Performance
再來就是看你有沒有想要看特定資訊,就可以使用 -sV 查看 version 或是 -O 查看 OS
最後,就是若有想要看詳細封包的需求, --packet-trace 就開下去吧!

今日心得

這篇東西真的有夠多...
最近發生好多事情,希望都能一一解決!
/images/emoticon/emoticon02.gif

參考資源

https://academy.hackthebox.com/


上一篇
Nmap - 網路檢測的魔法 (下卷)
下一篇
Shell - 初探魔法洞
系列文
前端小廢物誤入 Hackthebox Module31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言