《白帽子講Web安全》讀后感
——Deep Blue
(一個安全小兵的感受)
這是一篇作業(yè);這是一篇讀后感;這是一篇記錄安全的感悟;這是一篇對道哥的敬仰;這是我安全啟蒙的鑰匙......
和《白帽子講Web安全》的緣分來自一個小意外,在來大學之前的我選擇了信息安全這個專業(yè)。通過各種渠道吧,我在方方面面了解到這個行業(yè)的那些事兒,一點一滴的積累這我的安全觀。指導我遇見這本書,第一次覺得安全原來是那么清晰的展示在我眼前。“互聯(lián)網(wǎng)本來是安全的,自從有了研究安全的人之后,互聯(lián)網(wǎng)就變得不安全了”當我看到這一句的時候,毫不猶豫的把它作為我的簽名,原來我們才是讓互聯(lián)網(wǎng)變得不安全的人?。?/p>
初來大學,第一次進入圖書館。當我發(fā)現(xiàn)AUST圖書館也藏有這本書的時候,我是多么激動,轉便了所有的書架找到這本書??梢哉f是笑著抱回宿舍,開始了我的第一次閱讀。
第一次看道哥的作品難度還是很大的,整本書四篇十八章,包括世界觀安全、客戶端腳本安全、服務端應用安全以及互聯(lián)網(wǎng)公司安全運營四大部分。當時還是大一小萌新的我只看了世界觀安全,第一次徹底了解到ROOT是個啥,以前只知道手機ROOT能刪除一些系統(tǒng)應用。當我知道“root”對黑客的吸引,就像大米對老鼠,美女對色狼的吸引的時候,立下一個小flag拿下一個網(wǎng)站的root。不想拿到“root”的黑客,不是好黑客。說到黑客我也又不得不多說點,在黑客的世界里,有的黑客,精通計算機技術,能夠自己挖掘漏洞,并編寫“exploit”(黑客們使用的漏洞利用代碼叫做exploit);而有的黑客,只是對攻擊本身感興趣,對計算機原理和各種編程技術的了解比較粗淺,因此只懂得編譯別人的代碼,自己并沒有動手能力,這種黑客被稱為“Script Kids”(腳本小子)。在現(xiàn)實世界中,真正造成破壞的,往往并非那些挖掘并研究漏洞的“黑客們”,而是這些腳本小子。在安全的道路上總是有人疑惑自己已經(jīng)到了那一步,曾看到這樣一個分級:會使用工具找漏洞就屬于初級,能寫自己的黑客工具應該就是中級階段,能自動化“挖漏洞”就屬于高級的大牛了。談黑客,這本書中的黑客簡史真的深深的吸引了我。
中國黑客發(fā)展分為三個階段:啟蒙時代、黃金時代、黑暗時代
啟蒙時代
20世紀90年代,也正是中國互聯(lián)網(wǎng)剛剛起步階段,熱愛新興技術的青年收到國外黑客技術影響,開始研究安全漏洞。啟蒙時代的黑客大多由于個人愛好走上這條路,好奇心和求知欲是他們前進的動力,沒有任何利益瓜葛。這個時期的中國黑客們通過互聯(lián)網(wǎng),看到了世界,因此與西方發(fā)達國家同期誕生的黑客精神是一脈相傳的,他們崇尚分享、自由、免費的互聯(lián)網(wǎng)精神,并熱衷于分鐘自己的最新研究成果。
黃金時代
以2001年中美黑客大戰(zhàn)為標志(感興趣的同學可以百度一下“中美黑客大戰(zhàn)”,相信大家都記得2001年中國飛行員王偉為了捍衛(wèi)國家主權,被美國偵察機撞毀事件,起因正是這件事,這次事件中,中國黑客空前團結,與美國黑客開展了一場激烈的黑客大戰(zhàn),非常轟動,也這是世界第一次黑客大戰(zhàn)),這次事件大大推動了中國黑客的發(fā)展,崛起了一批黑客、紅客聯(lián)盟,也讓黑客這個特殊群體一下吸引了社會的眼球,黑客圈子所宣揚的黑客文化和黑客技術的獨特魅力也吸引了無數(shù)的青少年走上黑客這條道路。這次事件之后,各種黑客組織如雨后春筍般冒出,他們普遍的特點是:年輕、有活力、充滿激情,但技術上也許還不夠成熟。此時,黑客圈子里販賣漏洞、惡意軟件的現(xiàn)象開始升溫,因為黑客群體良莠不齊,開始出現(xiàn)以贏利為目的的攻擊行為,黑色產(chǎn)業(yè)鏈逐漸成型。
黑暗時代
這個時代大概從幾年前開始一直持續(xù)到現(xiàn)在(PS. 是哪一年呢?個人覺得大概是07年底左右開始吧),也許還將繼續(xù)下去。這個時期的黑客組織也遵循社會發(fā)展規(guī)律,優(yōu)勝劣汰,大多數(shù)黑客組織沒有堅持下去,20世紀非常流行的黑客技術論壇也越來越?jīng)]有人氣,最終走向沒落。所有門戶型的漏洞披露站點,再也不公布任何漏洞相關技術細節(jié)。隨著安全產(chǎn)業(yè)發(fā)展,黑客的功利性越來越強,黑色產(chǎn)業(yè)鏈開始成熟。在20世紀技術還不太成熟的黑客們,凡是堅持下來的,都已經(jīng)成為安全領域的高級人才,要么,在安全公司貢獻自己的專業(yè)技能,要么帶著非常強的技術進入黑色產(chǎn)業(yè)。此時期的黑客群體因為互相之間缺失信任,已經(jīng)不再具有開放和分享的精神,最純粹的黑客精神實質上已經(jīng)死亡。整個互聯(lián)網(wǎng)籠罩在黑色產(chǎn)業(yè)鏈的陰影之下,每年數(shù)十億經(jīng)濟損失和數(shù)千萬網(wǎng)民受害,黑客精神的死亡,讓我們沒有理由不把這個時代稱為黑暗時代。也許,黑客精神所代表的Open、Free、Share,真的一去不復返了!
真羨慕那個令人熱血的時代,但如今依舊是互聯(lián)網(wǎng)充滿機遇的時代!
不過你知道嗎? “黑客”是有好壞之分的!白帽子、黑帽子,他們是誰:在黑客的世界中,往往用帽子的顏色來比喻黑客的好壞。白帽子,是指那些精通安全技術,工作在反黑客領域的專家們;而黑帽子,是指利用黑客技術造成破壞,甚至進行網(wǎng)絡犯罪的群體。
白帽子和黑帽子工作的心態(tài)完全不同:正是因為白帽子和黑帽子的目標不同,所以他們在工作時的心態(tài)是完全不同的。對于黑帽子來說,只要能夠找到系統(tǒng)的一個弱點,就可以達到入侵系統(tǒng)的目的;而對于白帽子來說,必須找到系統(tǒng)的所有弱點,不能有遺漏,才能保證系統(tǒng)不會出現(xiàn)問題。白帽子要求全面宏觀、黑帽子思考問題是有選擇性的、微觀的:白帽子一般為企業(yè)或安全公司服務,工作的出發(fā)點就是要解決所有的安全問題,因此所看所想必然要求更加的全面、宏觀;黑帽子的主要目的是要入侵系統(tǒng),找到對他們有價值的數(shù)據(jù),因此黑帽子只需要以點突破,找到對他們最有用的一點,以此滲透,因此思考問題的出發(fā)點必然是有選擇性的、微觀的。
從對待問題的角度來看,黑帽子是不斷組合問題,白帽子是不斷分解問題:黑帽子為了完成一次入侵,需要利用各種不同漏洞的組合來達到目的,是在不斷地組合問題;而白帽子在設計解決方案時,如果只看到各種問題組合后產(chǎn)生的效果,就會把事情變復雜,難以細致入微地解決根本問題,所以白帽子必然是在不斷地分解問題,再對分解后的問題逐個予以解決。這種定位的不對稱,也導致了白帽子的安全工作比較難做?!捌茐挠肋h比建設容易”,白帽子選擇的方法,是克服某種攻擊方法,而并非抵御單次的攻擊。
安全問題往往發(fā)生在一些意想不到的地方:上述一切都是理想狀態(tài),在現(xiàn)實世界中,存在著各種各樣不可回避的問題。工程師們很喜歡一句話:“No Patch For Stupid!”,在安全領域也普遍認為:“最大的漏洞就是人!”。寫得再好的程序,在有人參與的情況下,就可能會出現(xiàn)各種各樣不可預知的情況,比如管理員的密碼有可能泄露,程序員有可能關掉了安全的配置參數(shù),等等。安全問題往往發(fā)生在一些意想不到的地方。防御技術在不斷完善的同時,攻擊技術也在不斷地發(fā)展。這就像一場軍備競賽,看誰跑在前面。
世界安全觀不僅僅講的是黑客是理念,更多的是思想。道哥也點出安全問題的本質是信任的安全問題。一切的安全方案設計的基礎,都是建立在信任關系上的。我們必須相信一些東西,必須有一些最基本的假設,安全方案才能得以建立;如果我們否定一切,安全方案就會如無源之水,無根之木,無法設計,也無法完成。
把握住信任條件的度,是安全的藝術魅力:在現(xiàn)實生活中,我們很少設想最極端的前提條件,因為極端的條件往往意味者小概率以及高成本,因此在成本有限的情況下,我們往往會根據(jù)成本來設計安全方案,并將一些可能性較大的條件作為決策的主要依據(jù)。
從另一個角度來說,一旦我們作為決策依據(jù)的條件被打破、被繞過,那么就會導致安全假設的前提條件不再可靠,變成一個偽命題。因此,把握住信任條件的度,使其恰到好處,正是設計安全方案的難點所在,也是安全這門學問的藝術魅力所在。
安全的世界里,沒有一勞永逸的銀彈:在解決安全問題的過程中,不可能一勞永逸,也就是說“沒有銀彈”。任何人想要一勞永逸地解決安全問題,都屬于一相情愿,是“自己騙自己”,是不現(xiàn)實的。
安全是一個持續(xù)的過程。?自從互聯(lián)網(wǎng)有了安全問題以來,攻擊和防御技術就在不斷碰撞和對抗的過程中得到發(fā)展。從微觀上來說,在某一時期可能某一方占了上風;但是從宏觀上來看,某一時期的攻擊或防御技術,都不可能永遠有效,永遠用下去。這是因為防御技術在發(fā)展的同時,攻擊技術也在不斷發(fā)展,兩者是互相促進的辯證關系。以不變的防御手段對抗不斷發(fā)展的攻擊技術,就犯了刻舟求劍的錯誤。在安全的領域中,沒有銀彈。
我的世界安全觀就這么建立了吧,安全問題的本質是信任的問題。并且安全是一個持續(xù)的過程,并不存在所謂的銀彈。也知道一個安全評估的過程可以分為4個階段:資產(chǎn)等級劃分、威脅分析、風險分析、確認解決方案。雖然懵懵懂懂但總算是讀下來了,還有那幾個不太懂的白帽子兵法 1.Secure By Default 原則(白名單黑名單、最小權限原則)2.縱深防御原則 3.數(shù)據(jù)和代碼分離原則 4.不可預測性原則
可喜可賀的是我也擁有了一本自己的《白帽子講Web安全》這本書了,再也不用擔心圖書館的這本書會被借走了。也在慢慢接觸Web安全的一些漏洞。
Web 攻擊技術發(fā)展的幾個階段:①Web 1.0時代,人們更多的是關注服務器端動態(tài)腳本的安全問題,比如將一個可執(zhí)行腳本(俗稱webshell)上傳到服務器上,從而獲得權限。動態(tài)腳本語言的普及,以及 Web 技術發(fā)展初期對安全問題認知的不足導致很多“血案”的發(fā)生,同時也遺留下很多歷史問題,比如PHP 語言至今仍然只能靠較好的代碼規(guī)范來保證沒有文件包含漏洞,而無法從語言本身杜絕此類安全問題的發(fā)生。②SQL注入的出現(xiàn)是Web 安全史上的一個里程碑。SQL注入最早出現(xiàn)在 1999年,并很快就成為Web 安全的頭號大敵。通過SQL 注入攻擊,可以獲取很多重要的、敏感的數(shù)據(jù),甚至能夠通過數(shù)據(jù)庫獲取系統(tǒng)訪問權限,這種效果并不比直接攻擊系統(tǒng)軟件差,Web 攻擊一下子就流行起來。(SQL 注入漏洞至今仍然是Web 安全領域中的一個重要組成部分。)③XSS (跨站腳本攻擊)的出現(xiàn)則是 Web 安全史上的另一個里程碑。實際上,XSS 的出現(xiàn)時間和SQL 注入差不多,但是真正引起人們重視則是在大概 ?2003年以后。在著名的是2005年的MySpace的XSS 蠕蟲事件后,安全界對 XSS 的重視程度提高了很多。④隨著Web 2.0 的興起,XSS 、CSRF(跨站請求偽造) 等攻擊已經(jīng)變得更為強大。Web 攻擊的思路也從服務器端轉向了客戶端,轉向了瀏覽器和用戶。黑客們天馬行空的思路,覆蓋了Web 的每一個環(huán)節(jié),變得更加的多樣化。⑤互聯(lián)網(wǎng)的蓬勃發(fā)展,也催生出許多新興的腳本語言,比如Python 、Ruby、NodeJS等,敏捷開發(fā)成為互聯(lián)網(wǎng)的主旋律。而手機技術、移動互聯(lián)網(wǎng)的興起,也給HTML 5 帶來了新的機遇和挑戰(zhàn)。Web安全技術,也緊跟著互聯(lián)網(wǎng)發(fā)展腳步,不斷地演化出新的變化。(以上名詞:SQL注入、XSS跨站、CSRF跨站偽請求偽造等,不明白意思沒關系,先熟悉個名詞吧,知道它們是WEB應用安全的重要敵人就行,后面慢慢講解他們具體是什么,有什么危害,怎么防范)
暫且研究了這么多,互聯(lián)網(wǎng)公司的安全運營還得需要一個更堅實的基礎去學習。
給自己一個小目標
目標一:讓工程師寫出的每一行代碼都是安全的。
目標二:讓所有已知的、未知的攻擊,都能在第一時間發(fā)現(xiàn),并迅速報警和追蹤。
目標三:讓安全成為公司核心競爭力,深入到每一個產(chǎn)品的特性中,能夠更好地引導用戶使用互聯(lián)網(wǎng)的習慣。
目標四:能夠觀測到互聯(lián)網(wǎng)安全趨勢的變化,對未來一段時間內(nèi)的風險做出預測。
最后再提起安全問題的本質:
安全問題的本質是信任問題。
把握信任條件的度,使其恰到好處。
安全是一個持續(xù)的過程。
安全是為業(yè)務服務的。
Find and Fix,? Defend and Defer,? Secure at the Source.
?待我第三次閱讀我想一定會有新的收獲,屆時我會繼續(xù)更新這篇文章。