二子從周 作品
第兩千三百五十一章 空操作雪橇(第2頁)
將這個“門牌”設置成某個變量的地址,那麼現在的返回地址就變成了指向這個變量,如果這個變量當中盛放的是惡意代碼,於是這個惡意代碼就被成功地讀取進了系統裡。
這個方式,叫做“堆棧緩衝區溢出”,通過緩衝區溢出,我們能改變程序原有的正常執行流程,去改為執行黑客準備好的惡意代碼。
這套操作在windows系統上一用一個準,也是周至他們研發的防火牆和殺毒軟件所保護的重點。
但是這個問題在unix為基礎的系統上卻並不存在,因為unix系統對於結果緩衝區的地址分配是隨機的,也就是說其返回結果的地址並不一定就在變量地址的後面,可以被黑客輕易推測到,並且利用緩衝區溢出功能輕易替換。
四葉草集團的內部系統,其實使用的就是基於unix架構的自主系統,服務器版的Cos系統。
不過論壇的信息技術板塊上,有人提出過一個攻擊方法,那就是“nop sled”,翻譯過來就是“空操作雪橇”。
論文指出,雖然unix體系的結果返回地址是隨機的,但是隻需要在實際的攻擊代碼前注入很長的nop指令,就可以清出一個很大的空間序列來。
然後還是用之前的緩衝區溢出方式進行攻擊,只要將程序的控制流指向該序列任意一處,程序計數器逐步加一,直到到達攻擊代碼的存在的地址,並執行。
這就類似於將之前一個小小的靶子變成了一個巨大的牆,之前需要將箭射中靶子才能完成攻擊,現在只需要將箭射到牆上,箭就會被自動送到牆上掛著的靶子上去。