什么是payload?
payload又稱為攻擊載荷,主要是用來建立目標機與攻擊機穩定連接的,可返回shell,也可以進行程序注入等。也有人把payloads稱 為shellcode。
Shellcode實際是一段代碼(也可以是填充數據),是用來發送到服務器利用特定漏洞的代碼,一般可以獲取權限。另外,Shellcode一般是作為數據發送給受攻擊服務器的。
payload有幾種類型:
1、singles:獨立載荷,可直接植入目標系統並執行相應的程序,如:shell_bind_tcp這個payload。
2、stagers:傳輸器載荷,用於目標機與攻擊機之間建立穩定的網絡連接,與傳輸體載荷配合攻擊。通常該種載荷體積都非常小,可以在漏洞利用后方便注入,這類載荷功能都非常相似,大致分為bind型和reverse型,bind型是需要攻擊機主動連接目標端口的;而reverse型是目標機會反連接攻擊機,需要提前設定好連接攻擊機的ip地址和端口號。
3、stages:傳輸體載荷,如shell,meterpreter等。在stagers建立好穩定的連接后,攻擊機將stages傳輸給目標機,由stagers進行相應處理,將控制權轉交給stages。比如得到目標機的shell,或者meterpreter控制程序運行。這樣攻擊機可以在本端輸入相應命令控制目標機。
由此可見,msf中的meterpreter其實就是一個payload,它需要stagers和相應的stages配合運行,meterpreter是運行在內存中的,通過注入dll文件實現,在目標機硬盤上不會留下文件痕跡,所以在被入侵時很難找到。正是因為這點,所以meterpreter非常可靠、穩定、優秀。
Metasploit中Payloads的含義是什么?
metapsloit中的Payloads是指exploit(漏洞)模塊。
Metasploit框架中有三種不同類型的Payloads模塊:Singles, Stagers, 和 Stages。這些不同的類型可以提供很多的多功能性,並且可以在多種類型的場景中使用。
無論Payloads是否上演,在Payloads名稱中用'/'表示。
例如,“windows / shell_bind_tcp”是沒有stage的single payload,而“windows / shell / bind_tcp”由一個stager(bind_tcp)和一個stage(shell)組成。
內容:
1、Singles
2、Stagers
3、Stages
Singles(獨立載荷)
Singles是獨立的和完全獨立的payload。一個Single payload可以是將用戶添加到目標系統或運行CALC.EXE簡單的東西。
這些類型的payload是獨立的,所以它們可以被例如netcat之類的非metasploit處理程序捕獲。
Stagers(傳輸器載荷)
Stagers設置攻擊者和受害者之間的網絡連接,並設計為小巧可靠。很難總是做到這一點,所以結果是多個類似的stagers。Metasploit會盡可能使用最好的一個,並在需要時回退到較不偏好的一個。
Windows NX 比較 NO-NX Stagers
- NX CPU和DEP的可靠性問題
- NX Stagers 更大(VirtualAlloc)
- 默認是現在NX + Win7兼容
Stages(傳輸體載荷)
Stages是通過Stagers模塊下載的payload組件。各種payload Stages提供了無尺寸限制的高級功能,如Meterpreter,VNC Injection和iPhone'ipwn' Shell。
Payload stages自動使用“middle stagers”
- 單個recv()失敗,並帶有大量的payloads
- 當這個stages收到了middle stager
- middle stager然后執行完整的下載
- RWX也更好
轉:https://www.fujieace.com/metasploit/payloads.html