【紅藍(lán)對(duì)抗】第一期 Linux主機(jī)端應(yīng)急響應(yīng)
以下內(nèi)容為助安社區(qū)【第一期紅藍(lán)對(duì)抗】,藍(lán)隊(duì)防守方總結(jié)的筆記。
紅方筆記會(huì)發(fā)布在社區(qū)內(nèi)部,加入金主老爺即可一起和小伙伴紅藍(lán)對(duì)抗演練,實(shí)戰(zhàn)經(jīng)驗(yàn)還不是唰唰漲。
了解更多金主老爺福利,訪問(wèn):https://hackme.cc/
應(yīng)急維度
1、特征維度,大部分是文件名
2、時(shí)間維度,從文件時(shí)間入手,去匹配業(yè)務(wù)日志里面的時(shí)間段
3、網(wǎng)絡(luò)流量,上帝模式查看攻擊,比如態(tài)感、運(yùn)維鏡像流量
日志
常見(jiàn)日志
Linux系統(tǒng)中有許多重要的日志文件,可用于管理和維護(hù)Linux操作系統(tǒng)。以下是一些常見(jiàn)的日志文件和它們的作用:
/var/log/messages
messages日志是所有日志中最常用的日志之一,包含系統(tǒng)的重要信息。messages文件記錄了操作系統(tǒng)的所有日志消息,包括內(nèi)核、系統(tǒng)進(jìn)程和其他服務(wù)的消息。
/var/log/syslog
syslog日志文件是另一個(gè)記錄系統(tǒng)日志的文件,記錄了系統(tǒng)進(jìn)程和其他服務(wù)的所有日志消息。syslog日志包含來(lái)自各種組件和服務(wù)的消息,包括SMTP、POP和IMAP服務(wù),CRON作業(yè)和日志轉(zhuǎn)發(fā)等。
/var/log/auth.log
auth.log日志記錄用戶認(rèn)證、授權(quán)和訪問(wèn)控制相關(guān)的信息,例如通過(guò)sudo使用root權(quán)限用戶進(jìn)行的LDAP身份驗(yàn)證等。
/var/log/kern.log
kern.log日志記錄所有與系統(tǒng)內(nèi)核相關(guān)的事件和消息,如內(nèi)核故障或錯(cuò)誤,驅(qū)動(dòng)程序錯(cuò)誤,內(nèi)核崩潰信息等。
/var/log/daemon.log
daemon.log日志記錄所有與系統(tǒng)demon相關(guān)的事件和消息。this may include httpd、pcscd、and LIRC service and message.
/var/log/boot.log
boot.log日志記錄Linux啟動(dòng)過(guò)程中的所有日志消息。
/var/log/cron
cron日志記錄與定時(shí)或循環(huán)任務(wù)相關(guān)的所有消息,包括執(zhí)行和失敗的任務(wù)。
/var/log/dmesg
dmesg記錄了通過(guò)系統(tǒng)啟動(dòng)信息輸出到終端上,包括設(shè)備驅(qū)動(dòng)加載、內(nèi)存信息、設(shè)備探測(cè)等。
/var/log/maillog
maillog用于記錄與郵件系統(tǒng)及其相關(guān)組件相關(guān)的所有消息,如郵件服務(wù)器和POP/IMAP服務(wù)的日志信息。
/var/log/messages
其他一些日志文件也很常見(jiàn),例如Xorg.0.log(記錄圖形驅(qū)動(dòng)程序日志信息)、authpriv(用于 記錄諸如sudo、ssh等內(nèi)容的安全信息)、httpd(記錄Web服務(wù)器消息)等。
以上是Linux系統(tǒng)中常見(jiàn)的一些日志文件及其用途。掌握這些日志文件可以幫助您管理和維護(hù)Linux操作系統(tǒng),減少運(yùn)維難度。
Nginx 日志
Nginx 日志出現(xiàn)大量404,應(yīng)該如何鎖定IP地址,給我一個(gè)linux端排查命令
出現(xiàn)大量404錯(cuò)誤可能是因?yàn)樵L問(wèn)了不存在的URL,或者因?yàn)橛腥藝L試訪問(wèn)不存在的URL來(lái)進(jìn)行攻擊。為了鎖定可能的攻擊來(lái)源,可以使用以下Linux端的排查命令:
查找Nginx訪問(wèn)日志:
sudo cat /var/log/nginx/access.log
從日志中查找404錯(cuò)誤:
sudo awk '$9 == 404 || $7 == 404 {print}' /var/log/nginx/access.log
查找大量出現(xiàn)404錯(cuò)誤的IP地址:
sudo awk '$9 == 404 || $7 == 404 {print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -rn
其中,第三個(gè)命令會(huì)列出出現(xiàn)404錯(cuò)誤最多的IP地址。如果某個(gè)IP地址出現(xiàn)的次數(shù)很多,就說(shuō)明很可能是攻擊來(lái)源,可以通過(guò)防火墻來(lái)阻止該IP的訪問(wèn):
sudo iptables -I INPUT -s 192.168.1.100 -j DROP
將上面的命令中的“192.168.1.100”替換成出現(xiàn)大量404錯(cuò)誤的IP地址即可。注:防火墻命令可能會(huì)因不同Linux操作系統(tǒng)有所不同,建議先確認(rèn)防火墻類型和命令。
SSH 日志
查看SSH登錄錯(cuò)誤日志
查看/var/log/auth.log文件,找到錯(cuò)誤登入的日志記錄:
sudo cat /var/log/auth.log
查找錯(cuò)誤登錄IP地址
sudo cat /var/log/auth.log | grep 'Failed password' | awk ' {print $(NF-3)}' | sort | uniq -c | sort -rn
這個(gè)命令會(huì)輸出大量錯(cuò)誤登錄請(qǐng)求,并且按照IP地址進(jìn)行統(tǒng)計(jì)。
使用ufw屏蔽攻擊者的IP
將攻擊者的IP地址鎖定,使用以下命令將其加入ufw黑名單中:
sudo ufw insert 1 deny from 192.168.1.100 to any
將命令中的“192.168.1.100”替換成攻擊者的IP地址即可。
配置SSH登錄安全
為了提高SSH登錄的安全性,建議采取以下措施來(lái)增加服務(wù)器安全:
禁止root用戶使用SSH登錄;
配置SSH密鑰認(rèn)證,禁止密碼登錄;
通過(guò)限制IP地址、配置防火墻等措施,限制SSH登錄的范圍;
安裝和配置Fail2ban防護(hù)軟件,增加服務(wù)器安全防護(hù)等。
SSH登入成功日志
要獲取攻擊者的IP地址,可以通過(guò)查看SSH登入日志或系統(tǒng)日志來(lái)分析入侵者的IP地址,并進(jìn)行排查。以下是獲取攻擊者IP的一些方法:
查看SSH登入日志
在Ubuntu系統(tǒng)中,SSH登入的日志文件通常是/var/log/auth.log。使用以下命令查找所有的SSH登入日志:
sudo cat /var/log/auth.log | grep sshd
這個(gè)命令將顯示所有登入服務(wù)器的用戶,出現(xiàn)在日志中的用戶都是經(jīng)過(guò)SSH登入的。
您還可以使用grep命令過(guò)濾出只顯示失敗的登入嘗試:
sudo cat /var/log/auth.log | grep sshd | grep 'Failed password'
查看系統(tǒng)日志
在Ubuntu系統(tǒng)中,系統(tǒng)的日志記錄在/var/log/syslog中。使用以下命令搜索所有系統(tǒng)日志中的SSH登入記錄:
sudo cat /var/log/syslog | grep sshd
獲取登入者的IP地址
SSH登錄日志和系統(tǒng)日志都會(huì)顯示訪問(wèn)者的IP地址。查找IP地址的方法是使用grep和awk命令組合。例如,以下命令會(huì)顯示/var/log/auth.log中所有失敗的登錄嘗試并指出攻擊者的IP地址:
sudo cat /var/log/auth.log | grep 'sshd.*Failed password' | awk '{print $11}' | sort | uniq -c | sort -n
其中,“$11”是指輸出日志行的第11個(gè)字段,即攻擊者的IP地址。
使用netstat驗(yàn)證結(jié)果
可以使用以下命令驗(yàn)證獲取到的IP地址是否是攻擊者IP地址:
sudo netstat -anp | grep <IP address>
后門排查
所有的篡改文件的排查都要和運(yùn)維進(jìn)行溝通,否則你也不知道哪個(gè)是正常應(yīng)用。
內(nèi)存馬檢測(cè)
Java內(nèi)存馬是指攻擊者利用Java應(yīng)用程序漏洞,將惡意代碼隱藏在JVM進(jìn)程的內(nèi)存中,從而實(shí)現(xiàn)對(duì)服務(wù)器的控制和操作。為了排查Java內(nèi)存馬,可以采取以下措施:
檢查Java進(jìn)程
首先,使用以下命令查看當(dāng)前系統(tǒng)上所有Java進(jìn)程:
ps aux | grep java
這將列出所有正在運(yùn)行的Java進(jìn)程及其相應(yīng)的參數(shù)。
確認(rèn)Java進(jìn)程歸屬
如果您后臺(tái)運(yùn)行了多個(gè)Java應(yīng)用程序,可以確保每個(gè)Java應(yīng)用程序的所有者都是您或是您信任的其他實(shí)體。
可以使用以下命令查看每個(gè)Java進(jìn)程的所有者:
ps -ef | grep java
該命令將顯示Java進(jìn)程及其相關(guān)信息,包括進(jìn)程所有者。
檢查JVM參數(shù)
Java內(nèi)存馬通常會(huì)修改JVM參數(shù),以維持持久性和控制權(quán)限??梢允褂靡韵旅畈榭碕ava進(jìn)程參數(shù):
jps -mlv
該命令將列出所有正在運(yùn)行的Java進(jìn)程及其參數(shù)。您可以手動(dòng)分析這些參數(shù),確定是否存在可疑的參數(shù)值。
查看Java類和包
Java內(nèi)存馬通常會(huì)包含可疑的Java類和包。您可以在Java內(nèi)存堆棧中使用以下命令查看Java類和包:
jmap -histo <PID>
該命令將顯示Java進(jìn)程使用的所有類和包列表。
使用安全工具來(lái)掃描內(nèi)存
您可以使用一些針對(duì)內(nèi)存中的Java惡意代碼的安全工具來(lái)進(jìn)行檢測(cè)和掃描。其中一些工具包括JavaSnoop、Jkool、Java-ML等。
webshell查殺
懷疑服務(wù)器已經(jīng)存在webshell的情況下,可以采取以下措施進(jìn)行排查:
檢查網(wǎng)站文件
首先,檢查網(wǎng)站的文件目錄,看看是否存在可疑的文件或文件夾。檢查以用戶權(quán)限執(zhí)行的文件的命令.
例如,在Linux中使用以下命令:
# root@04a386e7005c:/var/www/public# find /var/www/public -type f \( -iname "*.php" -or -iname "*.sh" \) -exec grep -iRl "eval" {} \; ?
/var/www/public/sese.php
/var/www/public/peiqi.php
/var/www/public/cmd.php
/var/www/public/xx.php
這個(gè)命令會(huì)在/var/www/html/目錄下查找所有的.php和.sh文件,并且查找eval函數(shù)的使用情況。
檢查服務(wù)端程序
排查服務(wù)端程序是否存在可疑的后門或漏洞,檢查軟件版本是否過(guò)時(shí)。你可以安裝檢測(cè)工具如chkrootkit和rkhunter,執(zhí)行下面的命令:
sudo apt-get install chkrootkit rkhunter
sudo chkrootkit
sudo rkhunter --check
查找異常文件
可以通過(guò)檢測(cè)系統(tǒng)中一些可能與webshell相關(guān)的文件或目錄來(lái)排查:
找出最近被修改過(guò)的文件:
sudo find / -type f -mtime -7 2>/dev/null
查找WEB服務(wù)根目錄下比較大的文件和目錄:
sudo du -ah /var/www/ | grep G
找出對(duì)用戶可寫的文件和目錄:
sudo find / -xdev -type d \( -perm -0002 -a ! -perm -1000 \) -ls
找出可執(zhí)行文件設(shè)置了SETUID或SETGID權(quán)限的文件:
sudo find / -perm /6000 -type f -exec ls -la {} 2>/dev/null \;
監(jiān)控網(wǎng)絡(luò)連接
在Linux服務(wù)器上,可以借助tcpdump和netstat命令來(lái)監(jiān)控網(wǎng)絡(luò)連接,看看是否有可疑的網(wǎng)絡(luò)連接維持。例如,以下命令可以顯示處于ESTABLISHED狀態(tài)的TCP連接:
sudo netstat -tnpa | grep ESTABLISHED
審核系統(tǒng)和應(yīng)用日志文件
檢查系統(tǒng)和應(yīng)用日志文件,查找可疑的行為或異常日志記錄。攻擊者可能會(huì)將webshell文件名隱藏在日志中,查詢?nèi)罩疚募呛鼙匾摹?/p>
例如,可以使用以下命令查看/var/log/auth.log文件:
sudo cat /var/log/auth.log | grep -i sshd
使用專業(yè)的安全工具掃描服務(wù)器
可以使用一些專業(yè)的安全工具,如OpenVAS、Nessus等掃描工具來(lái)檢測(cè)是否存在安全漏洞和webshell。
注意:以上是排查webshell的方法,建議在了解相關(guān)知識(shí)或者請(qǐng)相關(guān)的安全專業(yè)人員的指導(dǎo)下進(jìn)行相應(yīng)操作,確保正確性及避免對(duì)系統(tǒng)造成其他問(wèn)題。
環(huán)境變量
如果你懷疑環(huán)境變量被篡改了,可以采取以下措施來(lái)排查:
檢查當(dāng)前環(huán)境變量
使用“echo $PATH”命令查看當(dāng)前環(huán)境變量,確保PATH的值是正確的。
echo $PATH
如果發(fā)現(xiàn)PATH的值被更改了,那么可能存在環(huán)境變量附加攻擊。
檢查系統(tǒng)環(huán)境變量
系統(tǒng)環(huán)境變量保存在/etc/environment中??梢允褂靡韵旅畈榭此?/p>
sudo cat /etc/environment
確保沒(méi)有添加可疑的目錄或路徑。
檢查shell配置文件
環(huán)境變量可以在用戶的shell配置文件中設(shè)置。在Ubuntu系統(tǒng)中,常用的shell包括Bash、Zsh和Fish。可以在用戶主目錄中查看每個(gè)shell的配置文件:
Bash:/.bashrc、/.bash_profile、/etc/bash.bashrc、/etc/environment Zsh:/.zshrc、/etc/zsh/zshrc、/etc/environment Fish:/.config/fish/config.fish、/etc/environment
查看每個(gè)文件,確保沒(méi)有添加可疑的目錄或路徑。
檢查L(zhǎng)D_PRELOAD變量
LD_PRELOAD環(huán)境變量可以用于預(yù)加載共享庫(kù),而攻擊者可以使用它來(lái)執(zhí)行惡意代碼??梢允褂靡韵旅顧z查L(zhǎng)D_PRELOAD變量:
echo $LD_PRELOAD
如果有LD_PRELOAD變量被設(shè)置,將變量名/值對(duì)刪除或更改為正確的值。
檢查可疑文件
如果你懷疑環(huán)境變量被篡改了,可以通過(guò)檢查系統(tǒng)上的一些可疑文件來(lái)排查:
/etc/ld.so.preload:該文件可能包含預(yù)加載惡意共享庫(kù)的路徑 /etc/ld.so.conf、/etc/ld.so.conf.d目錄:該文件和目錄可能包含指定共享庫(kù)路徑的配置文件。 /etc/profile、/etc/profile.d目錄:該文件和目錄可能包含全局環(huán)境變量配置信息。 ?/.bashrc、/.bash_profile、/.zshrc、/.config/fish/config.fish:這些文件包含用戶的Shell配置文件。
建議采用審核文件的方式,檢查文件內(nèi)容是否正常,并及時(shí)刪除或修改可疑文件。
檢查歷史命令
如果環(huán)境變量被篡改,攻擊者可能已經(jīng)執(zhí)行了某些命令,可以使用以下命令查看歷史命令:
history
查看歷史命令以確定系統(tǒng)被修改的時(shí)間點(diǎn)、方式和細(xì)節(jié)。
通過(guò)上述方法,可以初步排查環(huán)境變量被篡改的問(wèn)題,以進(jìn)一步保障系統(tǒng)安全。
排查系統(tǒng)異常賬戶
如果你懷疑Linux系統(tǒng)中存在可疑賬戶,可以采取以下措施來(lái)排查:
查看所有系統(tǒng)賬戶
使用以下命令查看當(dāng)前系統(tǒng)上所有賬戶:
cat /etc/passwd
該命令會(huì)列出系統(tǒng)上所有用戶的賬戶信息,包括用戶名、密碼、UID以及家目錄等信息。
查看root賬戶信息
root賬戶通常是系統(tǒng)管理員的賬戶,具有最高權(quán)限。可以使用以下命令查看root賬戶信息:
sudo cat /etc/passwd | grep 'root'
如果系統(tǒng)上有其他賬戶以0為UID,也表示該賬戶是root賬戶。
檢查sudo訪問(wèn)權(quán)限
超級(jí)用戶(root)可以使用sudo命令授予其他用戶特權(quán)??梢允褂靡韵旅畈榭聪到y(tǒng)上所有sudo用戶:
sudo cat /etc/sudoers
在sudoers文件中,可以找到所有被授權(quán)的用戶,并確定是否存在未知或可疑用戶。
查看系統(tǒng)特權(quán)用戶
Linux系統(tǒng)中有一些默認(rèn)的特權(quán)用戶,如lp、wheel、adm和root組等??梢允褂靡韵旅畈榭催@些用戶:
sudo cat /etc/group | grep -E "root|adm|lp|wheel"
在這個(gè)命令中,使用“ | ”分隔符表示查找多個(gè)關(guān)鍵詞。
檢查SSH登錄日志
可以查看SSH登陸日志,查找和登陸特定用戶的記錄、IP地址以及時(shí)間戳??梢允褂靡韵旅畈榭碨SH登錄日志:
sudo cat /var/log/auth.log | grep ' sshd'
檢查登錄歷史
可以查看系統(tǒng)中每個(gè)用戶的登錄歷史??梢允褂靡韵旅畈榭吹卿洑v史記錄:
last
該命令會(huì)列出最近登錄到系統(tǒng)的用戶和他們使用的登錄方式、時(shí)間和IP地址等信息。
通過(guò)上述方法,可以初步排查是否存在可疑賬戶,并確定賬戶是否正常。如果發(fā)現(xiàn)可疑賬戶,應(yīng)立即停用或刪除它,并確定入侵的原因,以及進(jìn)一步加強(qiáng)系統(tǒng)的安全防護(hù)措施。
檢查計(jì)劃任務(wù)
攻擊者可能會(huì)通過(guò)創(chuàng)建計(jì)劃任務(wù)來(lái)在系統(tǒng)上執(zhí)行惡意代碼。可以使用以下命令查看所有用戶的計(jì)劃任務(wù):
sudo ls -alR /etc/cron.*
sudo ls -alR /var/spool/cron/crontabs
這些命令將顯示系統(tǒng)上的cron和crontab文件。