假設硬碟裡發現一個可疑程式:
suspicious.exe
光看到它,其實還不知道它做了什麼。
但如果在 Memory 裡發現:
suspicious.exe
↓
192.168.1.10:49152
↓
203.0.113.50:443
就多了一個重要線索:
這個 Process 在某個時間點可能與外部主機建立了網路連線。
Process
+
Network Connection
↓
更完整的事件線索
一筆 Network Connection 通常可以看到一些重要欄位:
| 欄位 | 意義 |
|---|---|
| Local Address | 本機 IP |
| Local Port | 本機使用的 Port |
| Foreign Address | 對方 IP |
| Foreign Port | 對方 Port |
| Protocol | 使用的通訊協定 |
| State | 目前連線狀態 |
| PID | 建立連線的 Process |
例如:
Local Address Foreign Address State
192.168.1.10:49152 203.0.113.50:443 ESTABLISHED
這時我們就知道:
本機 IP:192.168.1.10
本機 Port:49152
對方 IP:203.0.113.50
對方 Port:443
狀態:ESTABLISHED
如果看到:
203.0.113.50:443
最後的 443 就是 Port。
Port 可以想成同一台電腦上,不同網路服務的入口編號。
例如常見的:
| Port | 常見用途 |
|---|---|
| 22 | SSH |
| 25 | SMTP |
| 53 | DNS |
| 80 | HTTP |
| 443 | HTTPS |
| 3389 | RDP |
但要注意:
Port 不是服務的絕對證明。
例如看到 443,通常會讓人想到 HTTPS,但不能只因為 Port 是 443,就直接認定一定是 HTTPS。
如果是 TCP Connection,還會看到不同的 State。
例如:
ESTABLISHED
LISTENING
TIME_WAIT
CLOSE_WAIT
代表 TCP 連線已建立。
A ─────────── B
TCP
ESTABLISHED
如果看到某個可疑 Process 有 ESTABLISHED 的外部連線,就可以進一步調查。
代表程式正在等待其他主機連進來。
例如:
Server
│
└── :8080
↓
LISTENING
如果是一台一般使用者電腦,卻突然出現一個不熟悉的服務正在 Listen,就可能值得進一步查看。
PID 是 Process ID(Process Identifier),可以把它想成每個 Process 的編號。
例如:
PID Process
2456 suspicious.exe
3120 chrome.exe
4012 powershell.exe
這裡的 2456 就是 suspicious.exe 的 PID。
同一台電腦上可能同時執行很多 Process,PID 可以幫助我們知道這筆資料屬於哪一個 Process。
從 Memory 找 Network Connections,不只是找「連到哪個 IP」,更重要的是把「誰(Process)在什麼狀態下,和誰(Remote Host)通訊」串起來。