查看 cpu 占用率#
查看 cpu 占用率的目的是為了查清是哪个進程占用 cpu 過高 (針對挖礦)
top -c -o %CPU
htop -t
# 查看cpu占用前五的進程
ps -eo pid,ppid,%mem,%cpu,cmd --sort=-%cpu | head -n 5
內存占用率#
top -c -o %MEM
htop -t
# 查看內存占用前五的進程
ps -eo pid,ppid,%mem,%cpu,cmd --sort=-%mem | head -n 5
網絡占用率#
iftop # 需要安裝,root權限運行,不會展示進程id
nethogs # 需要安裝,root權限運行,展示進程id
ss -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr # 查看本地網卡ip連接數(源ip)
ss -ntu | awk '{print $6}' | cut -d ":" -f1 | sort | uniq -c | sort -nr # 查看目的ip連接數(目的ip)
外連 ip#
# 根據目的ip查找
netstat -pantu | grep 1.1.1.1
netstat -pantu | grep 3389
lsof -i:3389 # root權限
# 根據本機ip查找
netstat -pantu | grep 3389
lsof -i:3389
尋找惡意樣本#
- 獲取 PID - 找到惡意文件路徑
- 找到了惡意文件 - PID
根據進程名字或者部分字符串獲取 pid
pidof "name"
ps -aux | grep "name"
ps -ef | grep "name" | grep -v grep | awk '{print $2}'
pgrep -f "name"
根據 pid 獲取進程的詳細信息
lsof -p PID # root權限
pwdx PID # root權限,獲取該PID的進程啟動時候的目錄,也就是惡意文件啟動的路徑
systemctl status PID # 獲取這個進程的status信息
cat /proc/PID/maps # 輸出指定進程的內存映射信息
ls -al /proc/1505945/exe # 輸出指定進程所執行的程序的絕對路徑
cat /proc/$$/mountinfo # 查看當前進程所掛載的文件系統信息,其中,$$ 表示當前進程的進程 ID (PID)。
查看線程
ps H -T -p PID # pid是進程id,spid是線程id,CMD 表示進程/線程的命令行
ps -Lf PID # 顯示指定進程中各個線程的信息
pstree -agplU # 顯示系統中所有的進程關係 ✅
根據文件找 PID
lsof | grep FILENAME
lsof FILENAME
fuser FILENAME # 用於查找使用特定文件或套接字的進程的命令
確定程序運行時間#
ps -eo pid,lstart,etime,cmd | grep PID
# 對比惡意文件的創建時間
stat FILENAME
ls -al FILENAME
處理異常進程#
1、從伺服器上下載樣本
2、病毒在線分析
3、進程查殺
1、查看是否存在子進程
ps ajfx ✅
systemctl status
2、如果無子進程
kill -9 PID
3、如果存在子進程
kill -9 -PID
刪除惡意文件#
1、查看進程是否佔用
lsof FILENAME
2、如果遇到 a 和 i 屬性導致文件不可刪除
chattr -a
chattr -i
3、奇怪文件名導致不能刪除
- 使用 inode 節點進行刪除
ls -li FILENAME # 查看inode
- 刪除文件
find ./* -inum INODE -delete
find ./ -inum INODE -exec rm {} \;
find ./* -inum INODE -exec rm -i {} \; # 提示是否刪除
find ./* -inum INODE -exec rm -f {} \; # 強制刪除
find ./* -inum INODE | xargs rm -rf
rm `find ./* -inum INODE`
大部分的應急事件的流程大概需要的命令也就是這些了,針對不同的事件還有一些區別:
擴展 1 netstat 中 TCP 連接狀態的示例#
狀態 | 類型 | 描述 |
---|---|---|
LISTEN | TCP 監聽端口 | 侦听状态。表示該端口正在等待對端的連接,以進行通信。 |
SYN_SENT | TCP 傳輸控制協議狀態 | 已經發送連接請求。表示 TCP 連接已經被發起,但是尚未收到確認。 |
SYN_RECV | TCP 傳輸控制協議狀態 | 正在接收連接請求。表示 TCP 連接已經被接收,正在等待確認。通常在伺服器上才會出現,表示已經接收到客戶端的請求。 |
ESTABLISHED | TCP 傳輸控制協議狀態 | 表示 TCP 連接已經建立,正在通信中。 |
FIN_WAIT1 | TCP 傳輸控制協議狀態 | 表示 TCP 連接已經被關閉,在等待對方關閉連接的請求。 |
FIN_WAIT2 | TCP 傳輸控制協議狀態 | 表示 TCP 連接已經被關閉,在等待對方關閉連接的請求,或者正在從對方接收最終確認。 |
TIME_WAIT | TCP 傳輸控制協議狀態 | 表示 TCP 連接已經被關閉,並且所有數據都傳輸完畢,正在等待一段時間以確保所有分組都得到處理。 |
CLOSE_WAIT | TCP 傳輸控制協議狀態 | 表示 TCP 連接已經被關閉,但是本地應用程序尚未關閉連接。 |
LAST_ACK | TCP 傳輸控制協議狀態 | 已經發送關閉請求,正在等待對方的關閉請求。 |
CLOSING | TCP 傳輸控制協議狀態 | 表示 TCP 連接正在關閉過程中。 |
擴展 2 ip 是否正常#
微步威脅情報可以查詢到一些信息
還可以查詢如下等信息
有域名就可以查備案(國內)
有備案就可以查公司
其他#
GitHub - T0xst/linux: linux 安全檢查
Security/1earn/Security/BlueTeam/ 應急
Blue-Team / 應急 /linux 應急響應手冊
linux 應急響應手冊 1.7