Skip to content
This repository has been archived by the owner on Dec 5, 2019. It is now read-only.

Latest commit

 

History

History
52 lines (42 loc) · 2.26 KB

如何使用FILEFORMAT mixin创建一个文件格式exploit.md

File metadata and controls

52 lines (42 loc) · 2.26 KB

Msf::Exploit::FILEFORMAT这个mixin是用来创造文件格式exploit的.这个mixin实际不是很多,但最重要的方法是file_create:

file_create示例

顾名思义,该file_create方法允许您创建一个文件。您应该使用这种方法,因为它不仅仅是将数据写入磁盘。它所做的一件重要的事情就是将文件创建以这个格式报告到数据库#{ltype}.localpath,,和这个文件将总是被写入Metasploit的本地目录,定义在Msf::Config.local_directory (默认是~/.msf4/local),这使得文件保持良好和有序。 要使用mixin,首先导入Msf::Exploit::FILEFORMAT到你的 Metasploit3 范围内

include Msf::Exploit::FILEFORMAT

下面是一个file_create用来构建一个想象的exploit的例子:

# This is my imaginary exploit
buf = ""
buf << "A" * 1024
buf << [0x40201f01].pack("V")
buf << "\x90" * 10
buf << payload.encoded

file_create(buf)

自定义文件名

这个 Msf::Exploit::FILENAME 默认情况下注册一个FILENAME 数据储存选项.它实际上是可选的,如果没有文件名提供,这mixin将会用这个格式设置名字"exploit.fileformat.#{self.shortname}", self.shortname意味着这个模块名的短版本 如果你想设置一个默认的(但仍然可以由用户更改),那么你只需在模块中重新注册它,如下所示:

register_options(
  [
    OptString.new('FILENAME', [true, 'The malicious file name',  'msf.jpg'])
  ], self.class)

固定文件名

偶尔,你可能不希望你的用户改变文件名。一个懒惰的技巧是通过FILENAME在运行时修改数据存储选项,但是这是非常不推荐的。事实上,如果你这样做,你将不会通过msftidy。相反,这是如何正确完成的: 1 - 注销FILENAME选项

deregister_options('FILENAME')

2 - 接下来,重写该file_format_filename方法,并使其返回所需的文件名:

def file_format_filename
  'something.jpg'
end

3 - 最后,请在模块描述中留下关于此的注释。

参考

https://github.com/rapid7/metasploit-framework/blob/master/lib/msf/core/exploit/fileformat.rb

https://github.com/rapid7/metasploit-framework/tree/master/modules/exploits/windows/local