我正在閱讀這篇《紐約時報》 (NYT)文章,該文章涉及傑夫·貝索斯(Jeff Bezos)的電話被盜。文章指出:
2018年5月的消息突然出現,其中包含無害的視頻文件以及14字節小的惡意代碼塊
14個字節中可能包含哪些惡意代碼?似乎沒有足夠的空間來容納《紐約時報》文章概述的邏輯。文章指出,收到消息後不久,電話就開始發送大量數據。
我正在閱讀這篇《紐約時報》 (NYT)文章,該文章涉及傑夫·貝索斯(Jeff Bezos)的電話被盜。文章指出:
2018年5月的消息突然出現,其中包含無害的視頻文件以及14字節小的惡意代碼塊
14個字節中可能包含哪些惡意代碼?似乎沒有足夠的空間來容納《紐約時報》文章概述的邏輯。文章指出,收到消息後不久,電話就開始發送大量數據。
是的,可以。可能只是觸發漏洞,它將數據加載到電影中特定區域的內存中並執行。
惡意部分可能很小,有效載荷可能存儲在其他位置。提取並執行有效負載後,可以下載其他模塊,而不僅僅是加載程序。
就像大多數惡意軟件感染一樣,它起作用:一個名為“ dropper”的小組件會先執行,然後下載並執行其他模塊,直到下載並執行整個惡意軟件為止。這14個字節可能是一個滴管。僅檢查視頻不會顯示任何可疑內容,因為代碼看起來像是視頻數據(或元數據),但是來自加載器的14個字節會很突出。
這實際上取決於編程語言和代碼所要注入的上下文。
有關在很少的代碼空間中可以完成的操作的示例,請查看代碼Golf Stack Exchange網站。
它絕對適合。例如,此 CTF挑戰解決方案攻擊執行約12個字節的二進製文件。發送的有效載荷為:
0:54 push rsp1:5e pop rsi0000000000000002 <y>:2:31 e2 xor edx,esp4:0f 05 syscall6:eb fa jmp 2 <y>
pre>(假設所有寄存器都清零了)
對於一個完整的pwn來說,這只有8個字節,可以讓您執行代碼,然後生成一個遠程shell。
當然,這是有針對性的,但僅作為示例。
正如彼得·科德斯(Peter Cordes)所說,我假設視頻文件中的14個字節會觸發一些內存漏洞,這14個字節是機器代碼!
這是一個非常重要的事實,許多人回答這裡正在考慮源代碼,字符和所有內容。所有這些大約需要8位/每個字符1個字節。因此,使用14個字符,一個人可能做不到那麼多。
但是那14個字節肯定是二進制的!因此,考慮到ARM CPU,其中一條指令為32位寬(包括自變量),IP地址為32位。有足夠的空間將該IP地址放入內存並執行系統調用。
(可執行機器代碼的)真正的代碼注入通常可以很好地防禦不可執行的堆棧以及一般的W ^ X(寫xor exec)頁面權限。
如果談到緩衝區溢出,更典型的現代有效負載是一些ROP攻擊的返回地址。這不是傳統意義上的代碼,只是內存中已經存在的代碼片段的地址。 (如果我們正在談論ARM Thumb2模式,則可能是4字節指令的最後2個字節,因為這是一部電話。)
例如如果可以找到將正確的數據存入寄存器然後返回的代碼,則可以將其地址,然後是libc中的 system()
的地址放到堆棧上。因此執行到達 system()
時,它在正確的位置指向一個字符串指針,將其視為第一個arg。
該字符串可能恰好位於內存,或者它可能是有效載荷的非代碼部分。
當信息被科技新聞界稀釋到目前為止時,很難猜測它到底在說什麼或排除任何可能性
要在一條消息中執行14個(或任意數量)字節,可能會在操作系統中出現錯誤。
但是,如果執行該消息,則肯定會調用系統中已有的其他代碼(
或者,在JPEG中,嵌入式預覽可能包含更多由十四個字節調用的代碼。