應急響應筆記
基礎知識
- Linux操作系統基礎
- 一些常見的命令必須熟悉:
- ls怎麼按照時間排序列出當前目錄文件?
- ls實現列文件按時間排序
- 1) ls -lt 時間最近的在前面
- 2) ls -ltr 時間從前到後
- stat命令是幹嘛的?
- 顯示文件詳細信息,訪問時間、內容修改時間、狀態修改時間
- lsof的作用是什麼?lsof每一列分別代表什麼?
- 查看你進程開打的文件,打開文件的進程,進程打開的端口(TCP、UDP)。找回/恢復刪除的文件
-
lsof輸出各列信息的意義如下:
COMMAND:進程的名稱
PID:進程標識符
PPID:父進程標識符(需要指定-R參數)
USER:進程所有者
PGID:進程所屬組
FD:文件描述符,應用程序通過文件描述符識別該文件。如cwd、txt等
TYPE:文件類型,如DIR、REG等,常見的文件類型
DEVICE:指定磁盤的名稱
SIZE:文件的大小
NODE:索引節點(文件在磁盤上的標識)
NAME:打開文件的確切名稱
- strace命令的作用是什麼?
- 在命令執行的過程中,strace會記錄和解析命令進程的所有系統調用以及這個進程所接收到的所有的信號值
-
- 怎麼樣通過cat命令組合awk和sed和cut等命令進行快速的日誌分析?
-
cut與awk提取列
cut 選項 文件名
-f:指定提取的列
-d:指定分隔符
sed主要是用來將數據進行選取,替換,刪除,新增的命令。
sed [選項] '[動作]' 文件名
- 通過Linux下的哪個文件可以得到當前主機上所有的用戶信息?
-
cat /etc/passwd;
cat /etc/group
- .bash_history這個文件的作用是什麼?crontab在Linux下是幹嘛的?
- history,歷史bash命令
- 定時任務
- xargs命令的作用是什麼?find /var/www/html/ -type f -name "*.jsp" | xargs grep "exec("這條命令的作用是什麼?/var/log/cron這個文件是記錄什麼?
- xargs :給命令傳遞參數,例如
xargs將find 命令的輸出傳遞給ls -l
# find /etc -name "*.conf" | xargs ls –l
命令作用爲:找到/var/www/html目錄下類型爲普通文件,名字後綴爲jsp的文件,然後通過xargs傳遞給grep去匹配jsp中爲exec的文本內容。排查jsp後門用。 - cron(定製任務日誌)日誌
- /var/log/btmp?
- 文件是記錄錯誤登錄的日誌/ssh登錄
- last命令的作用是什麼?
- 顯示用戶最近登錄信息
- /var/log/secure?
- 包含驗證和授權方面信息、例如,sshd會將所有信息記錄(其中包括失敗登錄)在這裏
- curl ip.cn -H "X-Forwarded-For: 117.34.5.6"這句命令作用是?
- 訪問ip.cn爲其加上X-Forwarded-For: 117.34.5.6的header頭
- ps -ef、lsof -i:8080、netstat -lanp?
- ps [選項]
下面對命令選項進行說明:
-e 顯示所有進程。
-f 全格式。
-h 不顯示標題。
-l 長格式。
-w 寬輸出。
a 顯示終端上的所有進程,包括其他用戶的進程。
r 只顯示正在運行的進程。u 以用戶爲主的格式來顯示程序狀況。
x 顯示所有程序,不以終端機來區分。
ps -ef 顯示出的結果:1.UID 用戶ID
2.PID 進程ID
3.PPID 父進程ID
4.C CPU佔用率
5.STIME 開始時間
6.TTY 開始此進程的TTY----終端設備
7.TIME 此進程運行的總時間
8.CMD 命令名 - lsof -i :port_number
example:
lsof -i :22 查看22端口運行的進程 ****
lsof -i :22 -t 查看22端口運行的進程的pid ***
kill -9 `lsof -i :22 -t` 查出使用22端口的進程pid,並殺掉該進程
lsof -i -sTCP:LISTEN 查看正在被監聽的端口(或者lsof -i |grep LISTEN)
4.列出在某一個端口段間的所有進程
lsof -i :500-5000 (查看打開端口在500到5000間的所有進程
5.列出某個進程id打開的文件
lsof -p 5001 查看進程id爲5001的進程所打開的文件 ****
6.查看某個目錄下被打開的全部文件(ps:會搜索目錄下所有目錄 +d參數只會搜素目錄第一層
lsof +D /usr/ison 查看該目錄下全部被打開的文件 ***
7.根據進程名查看被打開的文件
lsof -c mysql 查看mysql打開的文件名 *** - netstat命令用於顯示網絡狀態
- 怎麼樣通過個grep命令找到web訪問日誌中的awvs和sqlmap的掃描記錄?
- find /var/log/apapche2/ -type f -name "access.log" | xargs grep "sqlmap"
- sz和rz命令是幹嘛的?scp呢?
- sz:將選定的文件發送(send)到本地機器
rz:運行該命令會彈出一個文件選擇窗口,從本地選擇文件上傳到服務器(receive)
scp:Linux之間複製文件和目錄 - 怎麼用tar命令打包文件夾?strings?
- tar cvf test.tar test.txt 壓縮文件
- tar -xzvf archive.tar.gz 解壓文件
- ……
- windows操作系統基礎
- 熟悉基本的cmd命令(參考:https://ss64.com/nt/)
- windows eventID在線查詢:http://www.eventid.net/
- 熟悉常見的針對windows操作系統的攻擊方式
- 熟悉常見組件以及端口的被攻擊的方式(例如典型的:redis部署在公網或者阿里雲內網,進redis的配置文件查看,如果requirepass沒有啓用,那麼攻擊者可以通過redis向crontab或者.ssh寫入惡意語句入侵服務器;例如部署了tomcat那麼就需要看看manager目錄是否刪除?沒有刪除可以通過manager部署一個惡意的war入侵服務器等等)
- 能夠使用IDA Pro 對惡意二進制文件進行簡單的靜態分析,使用網上公開的在線惡意文件分析平臺對惡意二進制文件進行簡單的動態分析,
應急大概流程
- 詢問(問:1.當前情況。主要是問當前發現了哪些異常;2.服務器組件部署情況;3.是否處於內網環境?是否還有其他關聯服務器?4.如果當前服務器上部署了web應用還需要問這個項目是否經過安全測試?)
- 事件處理
- 需要依據對項目組詢問的結果進行排查,心裏大概列出攻擊者可能通過哪幾條路進來並且在心裏進行排序。這塊的依據是基礎知識那塊的第二點,能不能快速的找到問題取決於你是否瞭解常見的攻擊套路。
- 初步對事件進行判斷,是否需要關停業務或者是否需要隔離被攻擊主機,是否需要對被攻擊主機進行斷網等等,防止損失/危害進一步擴大。
- 建討論組。拉相關人員進組方便溝通交流(一般包括:項目組運維、開發、領導、我方的事件處理人員、領導)
- 依據上一步的排序結果進行對應日誌調取,需要注意的是:日誌不要在線上服務器進行分析,將線上日誌打包下載回本地。不要在線上服務器進行任何多餘的操作,操作的時候要小心小心再小心。可以讓項目組的韻味取日誌之後再發給你。對日誌進行分析(考慮到我們這邊項目的特徵一般採用Linux下shell分析的方式,對於windows自帶的事件日誌一般採用splunk或者windows自帶的日誌分析工具或者log parser)比如通過詢問瞭解到這臺被黑的服務器用到了tomcat並且manager也存在弱口令,那麼你首先需要調取的就是tomcat的日誌,因爲tomcat manager的入侵是需要上傳war包,所以你的語句應該是:cat log.log | grep -i ".war"
- 如果上一步驟中你找到了異常的war包(看文件名看上傳時間)那麼需要在服務器中找到這個war包下載到本地進行分析(主要分析是否是惡意的war包,如果是他的主要作用是什麼)依據war包第一次上傳的時間爲準通過日誌整理出攻擊者的攻擊時間線,依據時間線進行整體的入侵行爲分析。分析攻擊者在這個時間段內做了什麼。
- 如果被黑服務器處在內網還需要對內網其他服務器進行分析,是否存在被黑的情況,重點關注和被黑服務器共享同一密碼的服務器。
- 如果服務器中存在惡意的二進制文件,需要對二進制文件進行分析。使用IDA Pro對惡意文件進行靜態分析,使用在線文件分析平臺(金山火眼、文件B超、virustotal等等)對惡意文件進行動態分析。結合兩者的分析結果判定惡意文件的行爲,例如是否會對服務器系統文件進行替換?是否感染了系統其他關鍵文件?是否將自身寫入開機啓動項?同時可以將惡意文件的md5值放到網上搜索看看有沒有人已經對該惡意文件進行過分析。
- 確定此次事件的影響大小。
- 報告
如何在日誌中快速對應攻擊者信息:
攻擊者IP/攻擊時間(甲方交流,文件修改,文件新建)/對木馬文件的訪問