企業(yè)安全最佳實(shí)踐-全流量Web入侵檢測(cè)系統(tǒng)

?一.背景說(shuō)明

從目前來(lái)看,大多數(shù)互聯(lián)網(wǎng)業(yè)務(wù)是以web服務(wù)對(duì)外交付的,攻擊者大多數(shù)也是通過(guò)web入侵到系統(tǒng)里,不管什么方式,都繞不過(guò)web系統(tǒng)的探測(cè)和入侵嘗試這一關(guān),所以如果要做入侵檢測(cè),可以嘗試從web日志中分析入侵詳情。

二.Web入侵檢測(cè)系統(tǒng)技術(shù)架構(gòu)

第一步 考慮日志的收集

web日志常用的方法是收集accesslog,但因?yàn)橐话鉧ccesslog日志中缺少post,response,header數(shù)據(jù),對(duì)于檢測(cè)效果會(huì)有較大影響,后來(lái)我們考慮通過(guò)全流量收集http日志,使用Bro解析HTTP流量,可以較好解決以上問(wèn)題。

說(shuō)明:由于現(xiàn)在的網(wǎng)站基本上都采用了https加密,所以抓包的位置我們是放在Nginx服務(wù)器所在的接口上。

第二步 考慮入侵檢測(cè)分析

部分實(shí)時(shí)特征非常明顯的攻擊,我們直接在Bro這一層分析,如信息泄露/命令執(zhí)行/webshell執(zhí)行;

部分需要進(jìn)一步分析的,我們將http日志存儲(chǔ)到ES后進(jìn)一步分析,如SQL注入/暴力破解

第三步 考慮告警展現(xiàn)

我們開(kāi)發(fā)了一個(gè)安全管理平臺(tái),將入侵詳細(xì)信息展現(xiàn)在這個(gè)平臺(tái)上

第四步 考慮告警

我們將入侵告警接入到釘釘機(jī)器人,對(duì)于攻擊行為第一時(shí)間告警出來(lái)

三.Web入侵檢測(cè)技術(shù)實(shí)現(xiàn)

1.SQL注入

利用elasticsearch的API從elasticsearch中檢索特定的敏感關(guān)鍵字如

["select", "ifnull", "cast", "union", "sleep", "substring", "substr","mid", "ascii", "when", "case", "sysdate", "now", "database", "version", "information_schema"]等關(guān)鍵字,并關(guān)聯(lián)到IP信息查看此IP請(qǐng)求的URL中出現(xiàn)敏感關(guān)鍵字的次數(shù),如果次數(shù)超過(guò)預(yù)定閥值10次,則將此IP 定為惡意IP。將此IP的最近30分鐘的訪問(wèn)記錄從ES中取出來(lái)存入Redis中后續(xù)處理。 由于SQL注入想跨數(shù)據(jù)庫(kù)獲取數(shù)據(jù)必須使用到information_schema.schemata這個(gè)數(shù)據(jù)表,因此我們對(duì)單個(gè)IP的訪問(wèn)分析請(qǐng)求中是否匹配 .*schema_name.*from.*information_schema\.schemata.*等模式,如果匹配一次記錄為一次異常,此IP最近30分鐘的異常次數(shù)超過(guò)10此判 定為存在SQL注入成功。觸發(fā)報(bào)警。

程序每5分鐘從elasticsearch中拉取最近15分鐘的數(shù)據(jù)分析查看是否有惡意IP,如果有實(shí)施檢測(cè)。

2.暴力破解

利用ES的API的排序功能從elasticsearch中抽取訪問(wèn)量排名top3000的url,取這些url的hash值和訪問(wèn)量存入數(shù)據(jù)庫(kù)中。 每五分鐘抽取一次數(shù)據(jù)與前五分鐘的數(shù)據(jù)對(duì)比,并且計(jì)算出下個(gè)五分鐘的預(yù)估值并且計(jì)算出最大偏差量,下一次五分鐘的訪問(wèn)量與上次的 預(yù)估值對(duì)比超過(guò)閥值就認(rèn)為存在異常展示在首頁(yè)。

監(jiān)控url中含有l(wèi)ogin/captcha/register等關(guān)鍵字的url,過(guò)濾掉非重要接口

3.webshell檢測(cè)

利用bro腳本對(duì)請(qǐng)求頭、uri、POST、響應(yīng)狀態(tài)碼數(shù)據(jù)做規(guī)則匹配,如

(/eval.*base64_decode/ in c$http$post_body || /eval.*base64_decode/ in c$http$uri) && c$http$status_code == 200

4.信息泄漏檢測(cè)

利用bro腳本實(shí)時(shí)檢測(cè)請(qǐng)求和響應(yīng)中對(duì)應(yīng)的關(guān)鍵字、狀態(tài)碼,如 響應(yīng)中包含下面關(guān)鍵字,狀態(tài)碼是200時(shí),記錄下來(lái) [phpinfo(),root:x:0:0,Index of /,Directory Listing,.git,.svn] 請(qǐng)求中包含下面關(guān)鍵字,狀態(tài)碼是200時(shí),記錄下來(lái) [.bak,.swp,.old,.bat,.sh,.zip,.7z,.gz,.rar,.iso] 記錄這些泄露信息的請(qǐng)求到數(shù)據(jù)庫(kù)中,然后展示到前端頁(yè)面。

5.命令執(zhí)行檢測(cè)

利用bro腳本對(duì)請(qǐng)求頭、uri、POST數(shù)據(jù)做規(guī)則匹配,如 "@type" in c$http$post_body || "@type" in c$http$uri

/[^a-zA-Z0-9][oO][gG][nN][lL]/ in c$http$post_body || /[^a-zA-Z0-9][oO][gG][nN][lL]/ in c$http$uri || /[Rr][Uu][nN][tT][iI][mM][eM].*[eE][xX][cC]/ in c$http$post_body || /[Rr][Uu][nN][tT][iI][mM][eM].*[eE][xX][cC]/ in c$http$uri || "/dev/tcp/" in c$http$uri || "/dev/tcp/" in c$http$post_body || /[^a-zA-Z0-9][oO][gG][nN][lL]/ in c$http$header_string || /[Rr][Uu][nN][tT][iI][mM][eM].*[eE][xX][cC]/ in c$http$header_string || "/dev/tcp/" in c$http$header_string

/[^a-zA-Z0-9][pP][iI][nN][gG].*-c[^a-zA-Z0-9]/ in c$http$post_body || /[^a-zA-Z0-9][pP][iI][nN][gG].*-c[^a-zA-Z0-9]/ in c$http$uri || /[^a-zA-Z0-9][cC][uU][rR][lL][^a-zA-Z0-9]/ in c$http$post_body || /[^a-zA-Z0-9][cC][uU][rR][lL][^a-zA-Z0-9]/ in c$http$uri

6.敏感接口信息異常訪問(wèn)

統(tǒng)計(jì)含有手機(jī)號(hào)等敏感信息的接口訪問(wèn)次數(shù),記錄異常訪問(wèn)情況并告警。

四.實(shí)際使用效果

1.暴力破解

2.命令執(zhí)行

Struts2命令執(zhí)行漏洞嘗試攻擊(用到header數(shù)據(jù))

3.信息泄露

phpinfo泄露

4.sql注入

生產(chǎn)環(huán)境沒(méi)有發(fā)生過(guò)注入攻擊,以下為測(cè)試的截圖

5.webshell檢測(cè)

菜刀webshell執(zhí)行

五.項(xiàng)目收益

該系統(tǒng)建成后,大大提升了公司的安全威脅感知能力!

1.比如在Struts2-045漏洞爆發(fā)后的一周內(nèi),我們頻繁收到入侵嘗試告警;

2.檢測(cè)出開(kāi)發(fā)在測(cè)試過(guò)程中上傳phpinfo代碼文件并執(zhí)行

3.安全眾測(cè)過(guò)程中發(fā)現(xiàn)暴力掃描,白帽子測(cè)試未經(jīng)授權(quán)APP情況

4.發(fā)現(xiàn)敏感接口大量遍歷行為,確認(rèn)存在安全漏洞

5.有了這個(gè)安全數(shù)據(jù)平臺(tái),安全團(tuán)隊(duì)可以從中統(tǒng)計(jì)各種入侵類型 入侵IP分布,安全風(fēng)險(xiǎn)態(tài)勢(shì)等

五.未來(lái)展望

全流量抓包的優(yōu)點(diǎn)是數(shù)據(jù)全,擴(kuò)展性強(qiáng),但這個(gè)實(shí)施起來(lái)技術(shù)難度有點(diǎn)大,涉及端口鏡像/Bro/ELK部署等,我們投入3個(gè)人,花半年時(shí)間才完成的。

未來(lái)可以繼續(xù)擴(kuò)展,把系統(tǒng)日志 /安全日志 /堡壘機(jī)日志 /VPN日志接入到這個(gè)平臺(tái)上,進(jìn)一步加強(qiáng)安全檢測(cè)能力。

當(dāng)然跟HIDS相比,對(duì)于系統(tǒng)級(jí)別的入侵,檢測(cè)能力還是非常不足。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容