又想入坑了?
大家好,我是軒轅。
很多小伙伴都在微信上問我:軒轅,搞安全開發(fā),需要學什么編程語言呢?
今天就來詳細說說這個話題,我打算從安全公司研發(fā)的產(chǎn)品這個角度來切入,看看都有哪些產(chǎn)品,以及都用到哪些語言。
安全公司的產(chǎn)品研發(fā),主要是下面這些東西,下面分別來說一下。
WAF(Web網(wǎng)站應用防火墻) 數(shù)據(jù)庫網(wǎng)關(guān) 防火墻、IDS、IPS NTA(網(wǎng)絡流量分析) SIEM(安全事件分析中心、態(tài)勢感知、大數(shù)據(jù)安全分析) EDR(終端設(shè)備上的安全軟件) DLP(數(shù)據(jù)泄漏防護) UBA(用戶行為分析) 殺毒軟件 安全檢測沙箱
WAF
WAF全稱Web網(wǎng)站應用防火墻,是一種特殊的防火墻,專門用來保護Web應用安全的安全產(chǎn)品,主要防御SQL注入、XSS注入、CSRF、CC攻擊之類的網(wǎng)絡攻擊。

這類產(chǎn)品一般有兩個流派。一種是基于底層網(wǎng)絡流量來做,一種是基于nginx/openresty這類上層WebServer來做。
基于底層流量分析引擎的來做的,以 C/C++ 為主。
基于nginx/openresty引擎來做的,以C/C++ 和 Lua為主。
數(shù)據(jù)庫網(wǎng)關(guān)
和WAF有點類似,但保護的目標不是Web應用,而是數(shù)據(jù)庫。
畢竟,對于絕大多數(shù)互聯(lián)網(wǎng)公司來說,WebServer和數(shù)據(jù)庫是支撐他們業(yè)務中最重要的兩個角色,所以守護好這兩個東西是必須的!

數(shù)據(jù)庫網(wǎng)關(guān),主要負責防御對數(shù)據(jù)庫的攻擊,檢測高危操作,數(shù)據(jù)安全備份等。
用到的編程語言以C/C++ 和 Java為主。
現(xiàn)在云計算時代,很多公司的業(yè)務都放在了云端,這些云計算廠商相應的也都有推出自己的安全防護服務,WAF、數(shù)據(jù)庫網(wǎng)關(guān)、DDOS云盾三大件是標準配置。
殺毒軟件
最常見的,普通人最能直接接觸的應該就是安全軟件了。

安全軟件的開發(fā),我之前寫過一篇文章:想開發(fā)一個安全軟件,怎么搞?
主要涉及到的技術(shù)有病毒木馬分析、驅(qū)動開發(fā),使用的編程語言主要是C、C++。
NTA、防火墻、IDS、IPS
NTA就是網(wǎng)路流量分析的簡稱,IDS是入侵檢測系統(tǒng),IPS是入侵防御系統(tǒng)。

這類東西,主要是基于網(wǎng)絡流量的安全檢測和防御產(chǎn)品。涉及到網(wǎng)絡抓包、抓包分析等東西。
一般來說,這類產(chǎn)品對性能要求特別高,因為通常需要處理非常大的流量數(shù)據(jù),10Gbps的萬兆網(wǎng)絡流量分析是常規(guī)操作。
所以,這部分抓包、分析比較底層的引擎基本都是用 C/C++ 來開發(fā)。
SIEM
SIEM全稱Security Information Event Management(安全信息事件管理中心),差不多就是很多公司中的大數(shù)據(jù)安全分析系統(tǒng)、態(tài)勢感知系統(tǒng)之類的玩意兒。
那些看起來各種高端大氣狂拽炫酷的界面,基本上都是這種產(chǎn)品:

這是一個安全分析平臺,通過匯集多方(網(wǎng)絡流量、日志、威脅情報、沙箱檢測等)產(chǎn)生的數(shù)據(jù),并對這些數(shù)據(jù)進行關(guān)聯(lián)分析,然后判斷有沒有安全風險,產(chǎn)生安全告警。
SIEM,基本上很多公司都有,但真正做得好的不多,想要做好,除了數(shù)據(jù)源的高價值,對分析算法、算法模型都有非常高的要求,這方面的人才很難找。
這塊偏重于業(yè)務層的分析工作,涉及各種處理,在我見到的各大公司產(chǎn)品中,主要是Java開發(fā),畢竟Java背后的大數(shù)據(jù)生態(tài)是一大優(yōu)勢,對于數(shù)據(jù)挖掘,關(guān)聯(lián)分析都是緊密相關(guān)的。
EDR
全稱終端安全響應系統(tǒng),是運行在終端設(shè)備上的一套軟件。
其實跟我們常見的殺毒軟件很像,除了具備基礎(chǔ)的安全防御功能,保護主機免受攻擊,還會將主機上發(fā)生的一些事情匯報到SIEM用于安全分析。
EDR和殺毒軟件類似,也是用 C/C++ 開發(fā)。
UBA
全稱用戶行為分析,是基于EDR、NTA等產(chǎn)品的產(chǎn)生數(shù)據(jù)之上,用來分析用戶行為的一套系統(tǒng)。
簡單來說,這玩意根據(jù)收集到的員工的行為(電腦上的操作、上網(wǎng)數(shù)據(jù)等),可以分析出,這個用戶是不是異常,有沒有干什么壞事。

比如某個用戶工作時間微信相關(guān)的IP產(chǎn)生的流量非常多,則很有可能判斷這家伙上班經(jīng)常群聊摸魚~
這套系統(tǒng)是一套純后端系統(tǒng),一般也是使用Java開發(fā)。
DLP
全稱數(shù)據(jù)泄漏防護,也是運行在終端設(shè)備上的一套軟件,當然也有一些不在終端而以網(wǎng)關(guān)形式存在。


不同于殺毒軟件和EDR,DLP的主要作用是防止主機上的數(shù)據(jù)泄露。一般用在一些比較重要的單位中,員工電腦上的數(shù)據(jù)非常重要,用于防止竊密事件發(fā)生。
主要涉及的技術(shù)是驅(qū)動開發(fā)技術(shù),流量分析技術(shù),用的編程語言也是C/C++。
安全檢測沙箱
病毒木馬和Exploit的分析,除了傳統(tǒng)的基于特征和規(guī)則的靜態(tài)分析引擎之外,動態(tài)分析技術(shù)是另一個重要的補充。而動態(tài)分析中,則主要是以沙箱分析為代表。

所謂沙箱,就是一個虛擬的執(zhí)行環(huán)境,將待分析的目標丟進去,觀察并記錄其行為,從而判定其威脅程度。
沙箱用到的技術(shù)主要有內(nèi)核驅(qū)動開發(fā)、虛擬化技術(shù)、后端服務系統(tǒng)。
底層的分析引擎主要是C/C++開發(fā),上層的安全分析主要是Python。
總結(jié)
以上就是安全行業(yè)常見的一些產(chǎn)品了。
編程語言上面呢,C/C++是主流,尤其是在終端側(cè)的產(chǎn)品上,無一例外是C/C++。
在后端的安全系統(tǒng)方面,涉及到流量分析等對性能要求很高的場景,也一般是C/C++,若涉及數(shù)據(jù)關(guān)聯(lián)分析,則Java比較多。
除此之外,有一些小型的后端服務也會采用Python進行開發(fā)。
基本上,C/C++、Java、Python,就是安全開發(fā)領(lǐng)域的三大主流技術(shù)棧了。
最后限于見識有限,可能列舉的不全面,歡迎大家補充。
