系統被黑不要慌,十個步驟來排查

系統被黑不要慌,十個步驟來排查

問題背景

安全人員在日常工作中通常要手工排查 Linux 伺服器的安全性,對於中馬的伺服器,我將其歸納為4個階段:

  1. 木馬如何傳播到伺服器上 (Eg:暴力破解系統用戶);
  2. 木馬的目的是什麼(Eg:挖礦、DDOS 攻擊);
  3. 木馬怎樣清除痕迹(Eg:刪除日誌和歷史命令);
  4. 木馬如何保持連接(Eg:通過啟動項和定時任務)。

本文將從檢查用戶、日誌、文件等十個步驟,通過相關具體命令來講解如何手工排查 Linux 伺服器的安全性。

Linux 常用命令

命令

注釋

du -sh *

查看當前文件夾大小

head -n 100 1.log

查看一個大文件的前100行

grep -ri "nameseve" --include="*.php" /

查看文件字元串

free -m

查看系統內存大小

cp 原始文件 目的文件;

cp -r /root/* 目的目錄;

複製文件及文件夾

tar -cvf a.tar 原始文件;

壓縮文件

tar -xvf a.tar;

tar -xvfz a.tar.gz;

unrar e a.rar;

unzip a.zip

解壓文件

lsof -p pid

查看進程

lsof -c 進程名

查看進程所打開的埠及文件

Scp root@x.x.x.x:原始文件夾 目的文件夾;

在當前伺服器,將遠程伺服器文件拷貝到當前

scp 原始文件 root@x.x.x.x:目的文件

把當前文件傳到遠程伺服器上

tcpdump -i eth0 -w eth0.cap -c 100000

本地抓包

kill

殺死進程

chmod

改變文件許可權

Sed

本身是一個管道命令,主要是以行為單位進行處理,可以將數據行進行替換、刪除、新增、選取等特定工作,刪除某行

Uniq

用於報告或忽略文件中的重複行,一般與sort命令結合使用。

Sort

將文件進行排序,並將排序結果標準輸出。

Linux伺服器應急常用命令及思路

1

檢查用戶及登入情況

last

last -x reboot

查看重啟的記錄

last -x shutdown

查看關機的記錄

last -d

查看登陸的記錄

lastb

這個命令用於查看登錄失敗的情況,本質就是將 /var/log/btmp 文件格式化輸出。

相關參數:

lastb name(root)

查看root用戶登陸失敗記錄

lastb -10(-n)

查看最近10條登陸失敗記錄

lastlog

這個命令用於查看用戶上一次的登錄情況,本質就是將 /var/log/lastlog 文件格式化輸出。

相關參數:

lastlog

所有用戶上一次登陸記錄

lastlog -u username(root) root

用戶上一次登陸記錄

lastlog –help

命令幫助信息

Linux不同的用戶有不同的操作許可權,但是所有用戶都會在 /etc/passwd、/etc/shadow、/etc/group 文件中記錄。

less /etc/passwd

查看是否有新增用戶

grep :0 /etc/passwd

查看是否有特權用戶(root許可權用戶)

ls -l /etc/passwd

查看passwd最後修改時間

stat useradd

查看該命令的時間變化,來判斷是否有新增用戶

cat /etc/passwd | grep -E "/bin/bash$"

查看能夠登錄的帳號

2

查看日誌信息

/var/log/message

包括整體系統信息

/var/log/auth.log

包含系統授權信息,包括用戶登錄和使用的許可權機制等

/var/log/userlog

記錄所有等級用戶信息的日誌

/var/log/cron

記錄crontab命令是否被正確的執行

/var/log/lastlog

記錄登錄的用戶,可以使用命令lastlog查看

/var/log/secure

記錄大多數應用輸入的賬號與密碼,登錄成功與否

/var/log/wtmp

記錄登錄系統成功的賬戶信息,等同於命令last

/var/log/faillog

記錄登錄系統不成功的賬號信息,一般會被黑客刪除

檢查日誌時一定要查看下 root 用戶是否有被暴力破解的情況:

grep -ri "Fail" /var/log/secure*

查看失敗登入情況

grep -ri "accept" /var/log/secure*

查看成功登入情況

3

查看歷史命令

cat ./bash_history

history n

通過用戶的歷史操作命令來排查主機的安全性,可以關注以下四個方面:

  • wget 遠程某主機(域名&IP)的遠控文件;

  • 嘗試連接內網某主機(ssh scp),便於分析攻擊者意圖;

  • 打包某敏感數據或代碼,tar zip 類命令

  • 對系統進行配置,包括命令修改、遠控木馬類,可找到攻擊者關聯信息…

4

查看進程

一般被入侵的伺服器都會運行一些惡意程序,或是挖礦程序,或者 DDOS 程序等。如果程序在運行中,那麼通過查看進程可以發現一些信息。

*查看普通進程

ps -aux

查看進程(注意uid為0的用戶)

top

提供了實時的對系統處理器的狀態監視 (尤其是一些挖礦程序會消耗大量資源的)

如果進程中沒有發現異常,那麼可以看看有沒有開啟某些隱藏進程。

*查看隱藏進程

ps -ef | awk {print} | sort -n | uniq >1

ls /proc | sort -n |uniq >2

diff 1 2

通過以上3個步驟可以檢查是否開啟了某些隱藏進程。

5

查看文件

攻擊者入侵成功後,會將木馬上傳到一個合適的文件夾下,要求具有可寫可執行的許可權,/tmp / 文件夾通常是合適的選擇,所以可以重點看一下。

被入侵的網站,通常肯定有文件被改動,那麼可以通過比較文件創建時間、完整性、文件路徑等方式查看文件是否被改動。可以重點查看下相關配置文件,比如 /etc/init.conf。

find / -uid 0 -print

查找特權用戶文件

find / -size +10000k -print

查找大於10000k的文件

find / -name "…" -print

查找用戶名為…的文件

md5sum -b filename

查看文件的md5值

whereis 文件名

查看文件路徑

stat 文件名

查看文件時間修改等詳細信息

du -sh 文件名

查看文件大小

find / -atime 2 > /tmp/1.txt

查看最近兩天訪問的文件

find / -ctime 2 > /tmp/1.txt

查看最近兩天狀態改變的文件(比如文件的許可權 所屬組信息等)

find / -mtime 2 > /tmp/1.txt

查看最近兩天內容改變的文件

註:find -mtine 2 表示兩天以內,find +mtime 2 表示兩天以前。

6

查看計劃任務

當我們嘗試 kill 惡意程序時,往往會遇到被 kill 掉的程序自動啟動的問題,那麼就要檢查下計劃任務(cron)了。

查看root用戶的計劃任務

crontab -u root -l

cat /etc/crontab

查看cron文件是否變化的詳細信息

ls /var/spool/cron/

ls -l /etc/cron.*

7

查看啟動項

系統開機後,此目錄下的文件會被啟動

ls /etc/rc.dl

ls –alt /etc/init.d/

8

檢查網路

檢查網路的目的,是查看黑客是否通過篡改網卡類型,進行流量嗅探等操作。

ip link | grep PROMISC

正常網卡不應該存在promisc,如果存在可能有sniffer

netstat -nap

查看不正常埠

arp -a

查看arp記錄是否正常

ifconfig -a

查看網卡設置

9

檢查常用命令

有時攻擊者會替換掉 ps,netstat 等命令,需要查看下相關命令的大小以及修改的時間。

可以使用stat進行創建修改時間、訪問時間的詳細查看,若修改時間距離事件日期接近,有線性關聯,說明可能被篡改或者其他。

10

查看系統路徑

echo $PATH

分析有無敏感可疑信息

以上是我的一些經驗總結,對於角度不夠全面的地方歡迎大家共同探討。

本文指令參考:

man.linuxde.net/

cnblogs.com/maifengqian


推薦閱讀:

小編告訴你如何重裝系統win7
主存管理 | 段式存儲管理方式
怎樣重裝操作系統
Linux vs. Unix:有什麼不同?
藍屏了怎麼辦?寫在開啟Windbg之旅前的話

TAG:科技 | 計算機科學 | 操作系統 |