年1月,微軟終于宣布將Windows 7的延長支持徹底終止,不知不覺間,Windows 10今年也5歲了。
但肉眼可見的,盡管微軟通過各種方法向大家推廣Win 10系統,卻仍有相當一部分用戶堅守在Win 7甚至是更早的系統版本中。
其中,于2001年8月24日首次發布的Windows XP,仍占據了不小的市場份額,是很多釘子戶難以割舍的經典版本。
這時候,一些人和組織就盯上了這些停止維護的操作系統。
比如今年1月,自由軟件基金會就搞出了一個神操作——公開發起一個請愿,要求微軟對其開放Win 7的源代碼。
在收集完請愿簽名后,自由軟件基金會還真的給微軟寄去了空硬盤,要微軟把Win 7源代碼拷到硬盤,然后再寄回。
當然,這件事從頭到尾都被微軟官方無視了。
可想而知,擁有如此龐大用戶群的Windows操作系統,如果真的開源也勢必會讓全球計算機陷入危機。
所以,想讓Windows操作系統開源,幾乎是一件不可能的事。
但在9月25日晚間,國外科技媒體突然爆出消息稱,微軟歷史上最受歡迎的操作系統Windows XP的源代碼,疑似遭到大規模泄露。
泄漏人士將Windows XP的源代碼和微軟其他類似的系統代碼打包成一個BT種子文件,公開放在MEGA網盤,文件名為“nt5src.7z”,大小2.93GB。
一開始,泄露人士將此消息在4ch上發布,聲稱這是他收集了兩個月的寶貴資料,或許是本著free的互聯網精神分享給了大家。
隨后,該種子便經由該論壇、推特迅速傳播到全球各地,國內的百萬網盤和迅雷大軍也迅速出動。
不過,泄露人士也表示,這些資料已經在黑客圈中傳了很多很多年,今天只是第一次正式公布而已。
他稱,自己花了大約兩個月的時間收集了所有被泄漏的文件,并已經檢查了所有的存檔,以確保它們的真實性。
有網友下載了源碼包后公開了截圖,可以看到,整個文件大小為42.92GB。
這次全部的泄露內容遠不止Windows XP源碼,從目錄結構來看,被泄露的內容還包括Xbox操作系統源碼、Windows NT 5內核、Windows NT 4內核和Windows NT 3.5內核源碼。
此外還有Windows 2000等其他版本操作系統的源碼,其中名為misc的文件夾體積最大,總共31.17GB,占到了整個文件的70%。
值得一提的是,DOS、NT、2000、Xbox相關源代碼此前的確已被曝光泄露,一定程度上印證了泄露人士所說的資料為網絡搜集而來。
不過,源代碼中還包含和“永恒之藍”漏洞結合的BUG,可能會對目前仍在使用Windows XP 系統的用戶不利。
此次泄露的源代碼,還展示了微軟當初打造Windows XP更多不為人知的故事。
比如,他們曾秘密準備了一個版本,這個版本的操作系統主題看起來非常接近于蘋果的Mac。
而且,里面的media文件夾貌似還夾帶了不少私貨,比如與微軟創始人比爾·蓋茨有關的陰謀論文件。
目前,這些泄露的源代碼部分已經被證實是真實的。微軟官方回應稱,正在積極調查此事。
從2001年發售到2014年微軟宣布停止支持,Windows XP成為全球使用人數最多的一個操作系統,在其最輝煌的2008年,Windows XP的市場占有量接近了80%。
盡管它已經停止支持多年,但世界上仍然有很多人在使用這個系統。
而且,Windows 10中也有可能仍使用其中的一些代碼。
也就是說,不法分子有可能利用此次泄露的源代碼進行反向工程,以發現可利用的漏洞。
理論上來講,像Windows操作系統這樣安裝量巨大的軟件,如果其源代碼遭到泄漏的話,那將會有一場災難性的事故。
但也有專業人員稱,這次泄露事件對于安全性的影響較為有限,不用過度擔心。因為對于黑客來說,花費精力在一個已經被放棄多年的軟件中尋找“商機”,顯然很不劃算。
但是,社交媒體上仍然有很多人呼吁那些仍然在使用XP的用戶,及時升級到最新的Windows 10。
目前,最早散播此漏洞的4chan論壇帖子已被歸檔,暫不允許回復。
為避免惡意傳播,本文也不會放出BT種子鏈接,如果大家想要從網上下載請慎重,因為有心人士很可能在文件包中加入了惡意軟件。
一、小白劇場
小白:東哥,你現在用的是什么系統的電腦呀?
大東:用的是Windows系列的電腦,你今天怎么突然談起電腦來了?
小白:別提了,現在的電腦更新換代太快了,前幾年買的電腦已經跟不上現在的配置了。
大東:是內存不夠還是磁盤不夠?
小白:感覺這兩個都有點不夠,可能因為我最近電腦上裝了幾個虛擬機,所以現在運行起來特別慢,每次都要卡很久。
大東:那你可以換臺配置高點的電腦呀!
小白:這不是要省錢嘛,東哥,能不能給些建議呀?
大東:如果內存不夠的話,你可以買幾塊型號相同的內存條,插在電腦上,這樣可能會速度快些。
小白:可能?
大東:沒錯,因為電腦的速度不是你內存大就一定快的,還要看硬件以及CPU。
小白:額……看來我還真是個電腦小白,感覺自己啥都不懂。
大東:沒事,你可以嘗試換一下內存條,只有實踐才是學習最高效的方法。
小白:確實,我記得我買的第一臺電腦是Windows系統的XP,當時啥也不懂,全靠自己摸索才學會用電腦。
大東:以后就叫你獨立白吧,不過XP的系統確實是好早之前的系統了。
小白:嗯嗯,現在Windows系統基本都是Win10了,像XP的系統已經都淘汰了。
大東:不過說起XP系統,我倒是想起一件最近在安全圈很火的一件事。
小白:啥事,XP系統不都已經淘汰了嗎?怎么還會引起熱度呢?
大東:小白,你的這種想法可不對,即使有些電子產品的舊版本已經被淘汰了,但是新版本也是從舊版本的基礎上改進的,所以充分的了解舊版本對于我們研究補充新版本會有很大的幫助。
小白:東哥,我明白了,你快講講XP系統到底發生了什么大事吧。
大東:其實之前的談話我也有提及到,可能你沒有注意到。
小白:東哥,不要吊我胃口了,快揭曉吧!!
大東:其實就是Windows XP系統的源代碼被泄露了。
二、話說事件
小白:什么?東哥,你沒有開玩笑吧?!
大東:當然沒有了,雖然剛開始我也認為這是假的,但是這確實是真的。
小白:東哥,能不能詳細的介紹一下呀?源碼是在哪里泄露的?泄露的內容里都有什么?
大東:別著急,我先回答你的第一個問題吧,事件起源于論壇,前幾天4chan 論壇的一名用戶發帖稱 Windows XP 源碼已被泄露,并在帖子里面附上了一張正在解壓 Windows NT 內核源碼的截圖。
Windows NT 內核源碼的截圖(圖片來自網絡)
小白:那泄露的源碼是XP系統的哪個版本呢?
大東:從解壓路徑來看,被泄露的系統版本是 Windows XP SP1。
小白:一會去那個論壇看看。
大東:帖子放出來沒多久就被歸檔了,暫不允許回復。
小白:東哥,除了這個,該用戶沒有提供一些其他新的情報嗎?
大東:有呀,已下載泄露文件的用戶提供了如下截圖,可以看到整個文件大小為 42.92GB,從目錄結構來看,被泄露的內容還包括 Xbox 操作系統源碼,以及 Windows NT 5 內核、Windows NT 4 內核和 Windows NT 3.5 內核源碼。
泄露文件目錄(圖片來自網絡)
小白:這也太恐怖了吧!!
大東:不僅如此,泄露的文件還有 Windows 2000 等其他版本操作系統的源碼,其中名為"misc"的文件夾體積最大,總共 31.17GB,占到了整個文件的 70%。
小白:這個提供源碼的用戶是怎樣收集到的這些文件?難道是從微軟內部拿到的嗎?
大東:創建并提供種子下載的用戶表示,這些文件已在黑客中秘密傳播了很多年,他花了大約2個月的時間收集了所有被泄漏的文件,并已經檢查了所有的存檔,以確保它們的真實性。
三、大話始末
小白:我還是覺得XP系統已經過時了,它的源代碼的泄露不會對現在的Windows系統產生太大的影響。
大東:其實源碼泄露的最重要的影響在于它可以拿過來更好的去分析里面的漏洞。因為Windows的開發,這些代碼之間是有同源性的,如果是拿上這個源碼去分析,對于專業漏洞人員就可以分析出來現在新的一些操作系統的漏洞。
小白:有沒有什么例子呢?
大東:其實像Windows內部的堆結構我們一直都不清楚,堆結構都是靠專業人員的猜測以及部分泄露的代碼建立的,如果我們可以看到Windows XP系統的源碼,那么就可以很清楚的知道堆的結構了,對于我們發起堆溢出攻擊可能會更加容易,也可能會研發更多的攻擊手段。
小白:但是它們之間肯定是不同的呀。
大東:沒錯,不過基礎的架構都差不多,現在的架構只是在原有的架構上加了更多的安全機制。
小白:東哥,我還有個問題,泄露的源碼是XP系統的,會不會對現在的Win10系統產生影響?
大東:小白,你這個問題問的很好,其實此前已經有微軟內核工程師 Axel Rietschin 發表了一篇博客,帶大家一窺Windows 10 內核的魅力。
小白:那他都介紹了什么?
大東:Axel 介紹,Windows 10 與 Windows 8.x、7、Vista、XP、2000 和 NT 的代碼庫是相同的,其中每一代都在之前的基礎上進行重大的重構,并增加大量新功能,改進性能和硬件支持,此外還有安全性的提升,同時保持非常高的后向兼容性。
小白:這個說法跟東哥剛才說的很相似呀,看來大多數新系統都是在舊系統的基礎上改進的。那這些參考的代碼還有其他途徑獲得嗎?
大東:在 GitHub 上其實可以找到 Windows 內核研究的泄露副本,雖然這些代碼已經過時且很不完整,但它們還是具有很高的研究價值。
小白:為什么這么說呢?
大東:我給你舉個例子你就明白了,比如 wrk-v1.2/base/ntos/config 源碼實現了一個大名鼎鼎的內核組件配置管理器 Registry,也就是注冊表,它在內部稱被為 Cm。
小白:聽你這么一說,我還真的對這個產生了興趣,東哥,這個系統內核是用什么語言編寫的?
大東:Axel 介紹,ntoskrnl.exe 內核大部分是使用 C 編寫的,在內核模式下運行的大多數內容也是用 C 編定的,包括文件系統、網絡與驅動程序等。其中也包含一些 C++ 代碼,而越靠近用戶模式、越接近新的源碼時,C 的使用變得越來越少,反之 C++ 變多。
內核的簡要介紹(圖片來自網絡)
小白:那Windows10的內核也是這樣嗎?
大東:我們可以具體看一下 Windows 10“DVD”的源碼,我猜測其中 98% 由 C 和 C++ 寫的,而 C在其中占據大比例。此外,.NET BCL 與一些相關庫和框架通常都是用 C# 編寫的,“但它們也只不過是帶有幾座 C++ 小島的 C 汪洋大海的一粟”,它們來自不同的部門,代碼并不屬于 Windows 源碼樹。
小白:那看來我是應該要好好學習一下C和C++了。
大東:你們本科不都學過這兩種語言了嗎?
小白:學是學過,但是感覺學的內容特別淺,而且當時也沒有認為這個很重要。
大東:但你們的老師肯定跟你們講過:C語言可以說是高級語言的基礎,雖然C語言問世了很多年,但是在各種語言的使用排行榜中依舊排名前十。
小白:這個老師有介紹,但是當時沒有好好聽,而且現在不是有更方便的語言嗎?比如說python。
大東:雖然說現在的一些語言更容易學習和實現功能,但是如果你嘗試用C語言和其他語言寫功能類似的代碼,你會發現C語言寫的代碼會更快。
小白:我還真的沒有試過這個,過會我去嘗試一下。
大東:不僅如此,其實大多數語言的底層也都是用C實現的,只不過他們把一些代碼封裝起來,這樣我們寫代碼的時候就不用自己寫某種功能的代碼了,只需要調用API就可以了。
小白:那為什么底層的代碼不用匯編語言來實現呢?匯編語言不應該比C語言更快嗎?
大東:確實,但是匯編語言的語法比較難懂,不如C語言簡潔,而且C語言的代碼中是可以嵌入匯編代碼的,他們可以兼容運行。
小白:聽東哥這么一說,更加堅定了我學好C語言的決心了。
大東:哈哈,其實有本科的知識基礎的話,想要深入的了解C不算很吃力。
小白:等我學好了C語言,我就去搜集研究下Windows 內核研究的泄露副本,等我研究透了我就不再是小白了。
大東:那你的夢想可能要落空了。
小白:為什么?
大東:你知道嗎,在windows源碼泄露后,研究人員才發現Windows 源碼的規模如此巨大,這可以說是一個真正史詩般的巨型項目。
小白:到底有多么大呢?
Windows代碼樹(圖片來自網絡)
大東:完整的源碼樹包含所有代碼,如上圖所示,測試代碼與一起構成“Windows 源碼”的所有內容加起來超過 400 萬個文件、50 萬個文件夾、大小超過 0.5 TB,其中包含了構成 OS 工作站、服務器和所有版本的工具、相關開發工具包的每個組件的代碼。
小白:我的天!感覺我內心的熱火突然被澆了一盆涼水,這么多的代碼,要多久能研究完呀?
大東:網上有網友估計完全查看這些源碼的文件名,并試圖理解源碼具體是用來干什么的,需要花上一生的時間。
小白:果然微軟能發展到今天的規模是有原因的。
大東:其實有研究人員舉過這樣一個例子:有一次,他離開了一個 Git 分支幾個星期,當他再次回來時,已經落在了將近 60000 次 commit 之后。
小白:看來研究人員的高薪之下隱藏的也是無比巨大的壓力呀。
大東:沒錯,所以我們不應該在這次事情中僅僅只看到代碼泄露的利益以及風險,我們更應該看到這種努力的品質,然后借鑒學習。
小白:鼓掌!東哥說的太好了,經過今天的學習,感覺收獲良多。我要去學習C語言了,再見,東哥!
參考資料:
1. Windows XP源碼泄露https://mp.weixin.qq.com/s/CXRuDY3Kqfyljgb7V54MdQ
來源:中國科學院計算技術研究所