甲方安全工作二三事
觀點:保證基礎設施安全的情況下,甲方安全是需要圍繞著業務開展的,一切需要為業務服務,脫離業務去做安全是脫離企業競爭原則的,安全越貼近業務越好。
熟悉組織架構
1、熟悉組織架構,因為在甲方大多數工作是需要業務方配合的。瞭解一個業務線適合的安全介面人,最好對安全感興趣並且對該業務線產品非常熟悉的人。快速瞭解公司的一些安全產品,每個產品提供怎麼樣場景的安全服務,向業務推廣。
2、熟悉安全管理體系,大公司內部安全需要給各個業務做一些安全認證,也要建設集團公司層面安全體系。和一些行業法律合規方面的安全建設。也和要關注核心業務,在核心業務投入更多的經歷。
PCI DSS
一般涉及信用卡支付的公司都要過PCI DSS安全標準,才能開展金融支付業務
ISO27001
我瞭解比如Ctrip的商旅,Kingdee的雲之家、友商網、金蝶金融、58同城、騰訊雲等都做了ISO27001認證。
ITIL
ITIL為企業的IT服務管理實踐提供了一個客觀、嚴謹、可量化的標準和規範。
3、大致熟悉公司戰略方向
為什麼要研究公司的大致方向,因為有一些技術是需要預研,而不是臨時拍腦袋。
比如小米公司出一些智慧硬體方面的產品,那麼需要提前投入到智慧硬體的安全研究 。
比如百度公司出一些無人駕駛汽車,那麼他們提前嚴一些相關的法律法規以技術上問題。
再比如阿里雲,他們就要研究雲服務安全的問題,雲平臺上面很多SAAS產品,當然也要研究SAAS安全問題。
比如某些公司把自己的服務搬到雲上去,是不是要考慮雲安全問題?
安全測試
Web安全:xss csrf xxe jsonp sqli clickhijack owasp top ten etc..
關於XSS當時學習的時候看的evilcos那邊web前端黑客,很榮幸當時還得到了evilcos本人的指點。後面就改造了evilcos的xssproble增加了包括內網埠掃描等功能,還有evilcos的xssor工具新增xxe、jsonp劫持。對這些黑客工具改改用用對漏洞理解就加深了一些,在這裡不得不感謝evilcos。
SQL注入漏洞屬於Server端的安全問題SQL注入漏洞已經20來年但從沒有消失過,因為很多新手devs對安全理解有限所以很容易寫出漏洞程式碼。可能一開始學習union聯合注入各種盲注技巧,後面就是繞過各種waf。再後面就要研究各種老外的paper來面對各種奇葩環境。後面就是需要有自己獨特的思路才能檢測出更多的安全漏洞,最近看到AK48師傅的payload。
1、Another way for regex error based on MariaDB-
id=1 rlike repeat(0x5b,substr(hex(hex(version())),1,8));
MySQL 5.7.X Error based injection:
2、?id=JSON_ARRAY_APPEND(concat(0x414b3438,0x09,@@version,0x09,user(),0x09,database()),1,1)
3、MySQL 5.7.X Error based injection:
?id='%26ST_AsText(ST_LongFromGeoHash(concat(0x414b3438,0x09,@@character_sets_dir,0x09,@@log_bin_index)))%26'
適用於掃描器, 可繞過Waf探測基於顯錯型注入。
關注一下各大安全廠商對外開放的安全議題,裡面可以反映出一些安全方面的趨勢,當然很多內容都是反反覆覆。
安全評審
安全評審要根據現有的規章制度來給出接受評審方安全意見解決方案,所以首先要制定標準的安全規範,並且要得到個業務部門的認可才行。
1)、安全產品設計開發紅線
--前端開發安全規範
--web安全開發規範
--app安全開發規範
--webservice安全開發規範
--網路管理安全規範
--企業資料安全使用規範
--資訊系統賬戶密碼規範
--作業系統安全基線規範
--原始碼安全管理規範
--開放框架使用安全規範
--網路運維安全規範
--業務安全相關規範·
通過百度你可以找到 阿里 華為 百度的安全編碼規範,和其他的安全規範,內容都挺不錯的,有些這些規範我們才能順利開展評審等工作。隨著評審專案的越多對一些常見的業務場景也應該總結出來最優的解決方案。當然在工作生活中遇到的一些產品功能點,也可以從自己的角度給出一些安全安全,比如一些線上預訂機票環節,微信錢包改密、某某金融放貸的安全策略是什麼樣的,要用專業的眼光看周圍的世界。當然個人的理解可能是片面的,公司可以成立專門的安全設計委員會等形式組織。
上面的安全規範都是N年前的玩法,最好在關鍵的系統裡面實現自動化確保設定安全規範不是擺設可以落地執行,比如:
--前端開發安全規範
安全機制實現在公司框架裡面,實在不行提供jar、dll給業務呼叫。
--app安全開發規範
android的授權能否做在framework層,在bulid專案的是否自動化檢測,發版的apk能否立即發現高危問題。
--資訊系統賬戶密碼規範
賬號體系中的登入、改密有安全提供統一安全模型/密碼規則/業務邏輯,然後跟業務風控適配。經常看到很複雜的防護邏輯被黑客的一個小trick給bypass了,這很尷尬。
--企業資料安全使用規範
很多事件告訴內鬼是可怕的,所以資料的使用嚴格的審批機制是必須的,再就是做好安全審計,及時發現問題。
--作業系統安全基線規範
在系統初始化的時候關閉掉不需要的服務,設定好webserver的啟動許可權,在server上定期基線安全檢測指令碼,那些不符合的即時發現處理,再有可以安裝一些HIDS,比如OSSEC。安全是動態的,這些安全配置需要定期review,把最新的安全屬性add到裡面。
--安全開發規範
內否把安全機制內嵌在框架層面,如果不能從框架層面解決,能否以Lib形式提供devs使用。我感覺企業應該在設立安全架構部,在公司的核心繫統設計之初加入安全屬性。比如阿里的Druid實現了SQL注入檢測,在框架層面解決了防注入問題;比如百度的前段框架tangram;
資訊保安團隊的人數一般相對於研發有較少的人數,所以推動問題需要從整體考量,而不是點對點解決問題,否則永遠都擦屁股。用統一收口,使用者自治思路來解決問題。
--網路運維安全規範
想在好多網際網路公司推行devops,可以在關鍵節點加入關鍵的安全控制。比如在釋出程式碼環節灰度釋出。在程式碼構建環節整合安全掃描,踢掉不合規的程式碼。
應急響應:·
1)、應急響應標準流程
--網站被掛馬
--伺服器遭受DDOS攻擊、CC攻擊等
--釣魚郵件
--資料災備DR
為什麼要強調應急流程,因為這樣盡最大可能縮減排查時間。說到應急響應需要總結公司核心系統的安全介面人,否則真正的出現問題時候找不到人乾著急。
舉幾個例子,兩年前的事件了。
案例一:公司出一款理財產品在論壇釋出一些營銷方面的帖子,不料活動才不到一週,就招到了競爭對手的cc攻擊。
案例二:公司某重要業務2,網路層面的攻擊,分析資料包發現sync洪泛攻擊。
每一次入侵攻擊都應該做出總結,以抵禦下一次攻擊的到來。
開發知識
1)運維知識和開發知識有助於出促進安全工作,因為大多數安全問題是由於運維和開發引起的,開發是做安全的基礎中的基礎沒必要多說,最好學習一門保值的語言(java c python javascript),長期打磨。
時間管理和工作方式
1)、學會觀察牛人的做事方式,比如公司某些大牛在infoq或者一些國際會議上講的知識,我們可以查閱他的工作履歷,發表過那些文章,學序漸進的學習。
2)、PPT要規範,在Kingdee的時候總是因為PPT和郵件書寫不規範被領導批,自從那以後每次寫郵件或者PPT一般都檢查兩次或者以上。寫郵件或者PPT要適當的站在對方角度以使其理解。
研究前沿的安全技術
1、漏洞預警,當漏洞來的時候搭建環境復現,即使不能復現也能加深一下印象,自從2014年到現在只要是高危的漏洞我都是持續跟進的。當時還有一個好的習慣,每週週一都會花費1個小時左右到exploit wooyun freebu等網站看下有沒有最新的安全漏洞爆出。
2、你會發現隨著時間推移devs會自然而然接觸到很多企業核心的技術,而我們部分搞安全的還是停留在"救火階段",這個我認為是甲方安全比較蛋的事,當然只要是做對公司有意義的事情就是值得的。所以為了自己不可替代性就要不斷的自己學習。
長期專注一個比較感覺興趣的領域,比如java安全:
http://wouter.coekaerts.be/
http://www.pwntester.com/
http://blog.diniscruz.com/
http://wouter.coekaerts.be/
http://blog.csdn.net/ajaxuser/
http://www.angelwhu.com/blog/
個人比較看好的方向大資料安全分析。
開發屬於自己創新的產品
安全是需要創新的,自己的工作不能停留在憑經驗上面,經驗的東西不必要花太多時間摸索,可以相互交流探討,大家應該爭取更多的時間去做創新的事情。
攜程雲安全:https://security.ctrip.com/
騰訊安全響應:https://security.tencent.com/
阿里雲聚安全:http://jaq.alibaba.com/
以上內容僅自己安全觀點的簡單總結,不一定正確。如有不同看法,歡迎探討。
之前整理的各大SRC、安全峰會的議題:
https://github.com/0xwindows/SecurityPaper