網路安全封包分析:封包Payload行為判讀與常見協定安全解析
錄製封包時候我們會看到很多 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狀況封包範例:
Error message :
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 粉絲專頁