網路安全封包分析:封包Payload行為判讀與常見協定安全解析

Kuro Huang
資安工作者的學習之路
10 min readNov 19, 2019

錄製封包時候我們會看到很多 Payload,以下是一些快速判讀的規則筆記:

常見的封包內Payload狀況

被網站弱點掃描時候行為可能會有以下情形

  • 相同SRC(來源)IP位置大量傳送HEAD,OPTIONS,TRACE指令,通常為弱點掃描
  • Payload 帶有完整URL(HTTP/HTTPS)代表過proxy
  • 先看Port號與HTTP Method 帶什麼來判斷可能行為
  • 問的東西大量回應為404 Not found

HTTP METHOD (Query Command) 判讀封包時候的依據(大方向)

  • HEAD: 在不在 ,ask for Web Resource files <正常測試行為>
  • OPTIONS: 能不能存取(權限) , ask for checking parameters of applications <正常測試行為>
  • TRACE : 行不行 執行 ,ask for checking loops of applications

<正常測試行為>

  • CONNECT : Dynamic switch to a tunnel by proxy (for proxy server)

<惡意行為>

  • PUT : Upload file to store into server <惡意行為 但現在很難成功>
  • DELETE : Erase file from Server <惡意行為 但現在很難成功>

HTTP Response Status Code

1xx: General Host Info 通常不會出現

2xx: Execute Command successfully

  • 200 OK
  • 206 Partial Content (分段回應、分段續傳、檔案太大分段傳送封包)

3xx: Resource Redirection

  • 301 Moved Permanently 檔案原本在該目的地,但現在不見了,被永久改變位置(永久轉移 Permanently Moved )
  • 302 Relocate URL 暫時不在這(暫時轉移 Temporarily Moved )
  • 304 NOT modified (Local Cache) 本機端就有Cache可以讀取了

4xx : Client Error 錯誤訊息

  • 400 Bad Request 格式錯誤
  • 401 Unauthorized (禁止存取) 未經授權代表有些人可以存取,有些人不可,代表可能有弱點。
  • 403 Forbidden 對所有人拒絕
  • 404 File not Found 檔案不存在,弱掃時候可能會有很多測試導致404封包

5xx: Server Error

  • 500 internal server error SQL Injection 失敗時候可能會有Code 500
  • ‘% <-注意有這種符號出現,可能有人想測試SQL injection 的問題
  • Wireshark快速判斷:

(tcp.port == 80 or http) and (tcp contains “ 500 “)

Port Scan狀況封包範例:

Port scan

Error message :

code : 500

2.DNS-Client Security 惡意行為判讀規則

Client 端對外連線時,特別是HTTP/HTTPS會產生DNS查詢封包。

但如果下列情況可能沒有DNS封包:

  • 有DNS快取
  • 直接輸入IP位置
  • etc目錄下host檔案異動

其他很有可能為惡意程式行為(封包Payload 有dir,ls等指令)

3.HTTP/HTTPS Security 惡意行為判讀規則

HTPP/HTTPS預設通訊port為TCP-80/443,但可變更為其他TCP port,

但TCP-80(443)一定必須為HTTP/HTTPS

如果TCP-80的通訊行為不符合HTTP/HTTPS模式,則異常

常見的協定介紹與封包狀態安全:

CIFS/SMB Protocol Security

常見漏洞: , MS17–010,勒索病毒

  • CIFS/SMB 走 TCP-139(舊版系統)/TCP-445(新版系統),但都要注意。
  • UDP-135,137,138 NetBIOS,會發廣播封包。如看到目標IP一直變動但Port皆為135就可能有問題。
  • 在現今絕大多數情況下,SMB雖然可以連上公開IP,但不應該可上WAN,通常用於內部網路使用,SRC-IP與DST-IP都應該為內網IP位置
  • SMB的UDP封包,來源與目標Port號理應相同(SRC-PORT與DST-PORT)。若不相同且SRC電腦又為Windows,則SRC電腦可能有問題(中毒等)
  • SMBv1在登入是走TCP-139 ,如在封包內看到SMBsm(錯誤訊息)、SMBt(斷線)好幾次,代表帳號密碼錯誤,可能有問題。(登入成功會有SMBu=Null session、SMB%=Resource )

封包Payload 訊息意義:

…… SMBsm…….. : server responses login fail

…SMBs… : server responses login successful

……SMBr………..: request login into server with authentication

…… SMBs………..: reply login message with version and license

ARP Spoofing 與 Relay Host attack

ARP Spoofing

  • ARP是廣播
  • 替換MAC位置
  • 如果封包內容完全相同(兩個一樣的),但其中一個MAC位置從DST-IP(接收端)轉為SCR-IP(發送端)就要注意是不是被替換。

Relay Host /proxy host 跳板

  • 如果封包內容完全相同(兩個一樣的),但其中一個IP位置從DST-IP(接收端)轉為SCR-IP(發送端)就要注意是不是被替換。

ARP Spoofing 與 Relay Host attack差別在一個是L2的MAC位置被替換,另一個是IP位置被替換當跳板。

SMTP:

  • SMTP is used for sending email
  • Port: TCP-25
  • 由Server發起連線 (如80 port ),由Server發起 Hello session
  • Server端會發起DNS(53) Query先驗證 , Client 端不會看
  • 帳號密碼會用base64編碼
  • SMTP Server封包可能會帶有版本號
  • 使用Wireshark來判斷是否有異常SMTP的IP :

smtp and not ip.addr == [mail server]

列出非公司mail server的IP

SMTP Commands

  • HELO: client uses standard SMTP Protocol 標準命令
  • EHLO : client uses Extended SMTP Protocol 使用擴充命令
  • RCPT TO : Receiver 收件者
  • MAIL FROM : Sender 寄件者 (寄件者不被驗證正確性)
  • DATA: mail body
  • QUIT : Close session 關閉通訊
  • AUTH: account ID
  • PASS : password
  • VRFY: ask server to check user
  • EXPN ask server to check mail list

SMTP Response Reply Code

1xx: initialize

2xx: complete (Successful)

  • 220 : Service ready
  • 250 : action ok! Completed

3xx: sequence (尚未結束、繼續)

  • 354: Start mail input

5xx: Game over

  • 502 not implemented
  • 550 Requested action not taken (可能是驗證錯誤,如帳號密碼)

POP3

  • Used for receiving email
  • TCP -110
  • 看到payload有 + 代表 OK
  • 看到 — (減號)代表Not OK
  • Server先發起連線
  • 比較容易被Try帳號密碼

POP3 Commands

  • USER: client sends mail box account ID
  • PASS :client sends mail box password
  • STAT : client asks how many item in mail box
  • RETR: receive the content of specific mail box
  • DELETE: delete tht specific number mail in server
  • QUIT : client closes POP3 session

Response Reply Code = SMTP Code

IMAP

  • TCP-143
  • used for receiving email

IMAP Commands

  • CAPABILITY: Query the functions (=ask指令)
  • LOGIN: Send user-name and password
  • SELECT:Change the folder of mail box
  • LIST: Receive each mail in mail server
  • FETCH: Receive the content of specific mail
  • STARTTL :USE SSL for IMAP
  • LOGOUT: Client Closes IMAP session

Response:

  • ok:指令成功
  • no指令失敗
  • bad 不支援

SQL Security

Default SQL Service

  • MS-SQL: TCP-1433,UDP-1433
  • Oracle:TCP-1520,1521等

Wireshark:

  • Protocol 欄位如顯示TNS 代表是Oracle SQL
  • PostgreSQL在Wireshark內Payload 會顯示R與Q開頭,分別是Query與Result,或又看到pg_ 內容
  • 看到payload有重複的sa的字眼(MS-SQL) 可能在try login

FTP and TELNET

  • FTP走TCP-21、Telnet走TCP-23、SSH走TCP-22
  • FTP有主動模式與被動模式,也有相關漏洞存在。
  • 容易被Try帳號密碼
  • 明文傳輸

Summary

Wireshark 對於資安人員分析ARP、PortScan、SQL injection、SMB Attack(勒索軟體)都可以輕易地做到,並做出判斷。

封包分析這塊領域就要推一下封包大神劉德民前輩,從C/C++、組合語言到資料庫安全、逆向回去與網路封包的分析經驗真的很厲害,推薦聽這位老師的課程。

其他聯絡方式 : https://kuronetwork.me/contact/

所有文章: https://kuronetwork.me/posts/

想跟我聊聊資安、認識或準備考試,可以一起出來喝一杯咖啡(歡迎!!)

若您喜歡我的文章,歡迎按下「拍手」與Liker按讚給我支持並轉發給你的朋友們(可以多拍幾下手喔),或是「Follow」我,讓我提供文章給您。

Facebook 粉絲專頁

--

--

Kuro Huang
資安工作者的學習之路

對教育充滿期待的資安從業者,現任ISC2台北分會理監事會成員,喜歡用專業興趣交朋友建立友誼。曾擔任資安管理師與四大會計師事務所資安顧問,希望對資安社群盡一點心力,並期望自己與身旁的人能有所進步,歡迎喝咖啡聊資安。希望保持著定期參與資安社群活動。個人介紹網站https://portaly.cc/kurohuang