缓缓拿起桌上当了几个月垫子的metasploit渗透测试指南。
Metasploit的一些术语
渗透攻击exploit:攻击者或渗透攻击者利用系统、应用或服务中的安全漏洞所进行的攻击行为
攻击载荷payload:我们期望目标系统在被渗透攻击之后去执行的代码,在Metasploit框架中可以自由的选择、传送和植入
shellcode:在渗透攻击时作为攻击载荷运行的由汇编语言编写的一组机器指令
模块(Module):一个模块是指Metasploit框架中所使用的一段软件代码组件
监听器(Listener):Metasploit中用来等待连入网络连接的组件
Metasploit功能程序
MSF攻击载荷生成器
MSF攻击载荷生成器允许你能够生成shellcode、可执行代码和其他更多,也可以让它们在框架软件之外的渗透代码中进行使用。2015年开始Metasploit弃用了早期版本的msfpayload,转而使用集成了攻击载荷生成和编码的msfvenom替代
查看msfvenom配置选项命令是:msfvenom -h
MSF编码器
Metasploit中包含了一系列可用于不同场景下的编码器,一些编码器在你只能使用字母和数字字符来构造攻击载荷时非常有用。在2015年之后的版本,msfpayload和msfencode被一起弃用,编码的功能也一同集成于msfvenom。
如果需要查看有哪些可用的编码器以及他们的等级,可以使用命令:msfvenom -l encoders
Nasm shell
Nasm_shell.rb是一个帮助我们了解汇编代码含义的功能程序,比如我们可以运行程序请求汇编命令的opcode操作码
Metasploit使用数据库
连接数据库
Metasploit提供多种数据库的支持,帮助渗透测试人员在进行复杂渗透测试工作时记录操作
以PostgreSQL为例
启动数据库子系统
1 | /etc/init.d/postgresql start |
连接数据库需要用户名,密码,主机名以及想要使用的数据库名,postgresql的默认用户名是postgres,密码是toor,如忘记密码,可输入命令sudo -u postgres psql
登录postgresql,再输入ALTER USER postgres WITH PASSWORD 'newpassword';
修改密码即可
在metasploit中和postgresql使用msf作为数据库名建立连接
1 | db_connect postgres:password@127.0.0.1/msf |
待metasploit生成必须数据表后会返回终端指令符等待指令
执行db_status
命令确认数据连接是否正确
将数据导入metasploit
执行nmap生成基本xml报告
1 | nmap -Pn -sS -A -oX data.xml 192.168.48.0/24 |
执行db_import
命令将文件导入数据库中
执行hosts
命令核实导入的结果
如果想删除数据库中的数据,可以使用hosts -d
删除现有的数据
高级扫描技巧:TCP空闲扫描
这种扫描让我们冒充网络上另一台主机的IP地址,对目标进行更为隐秘的扫描
使用metasploit框架的scanner/ip/ipidseq
模块寻找满足TCP空闲扫描要求的空闲主机
RHOSTS参数可以使用IP段(如192.168.1.100-192.168.1.200),也可以使用CIDR(无类型域间选路)地址块(如192.168.1.0/24)和多个CIDR地址块(192.168.1.0/24,192.168.2.0/24),以及每行包含一个ip地址的IP列表文本文件
THREADS设定扫描的线程数
现在将RHOSTS设定为192.168.48.0/24,THREADS设定为50运行扫描
Incremental代表IP帧标识发生断档即该主机可用于空闲扫描,在nmap中使用-sI
选项指定扫描获取的192.168.48.2作为空闲主机对目标主机进行扫描
在MSF终端中运行nmap
metasploit能够和nmap结合使用,首先保证数据库连接成功
输入db_nmap
命令,它能使得MSF运行nmap并自动将nmap结果存储到msf数据库中
可以执行services
命令查看数据库中关于系统运行服务的扫描结果
使用metasploit进行端口扫描
除了使用nmap等第三方扫描器,metaspliot的辅助模块中也包含了几款内建的端口扫描器
执行search portscan
命令查看metasploit框架提供的端口扫描工具
使用syn端口扫描器对单个主机进行扫描
输入use scanner/portscan/syn
,设定RHOSTS和THREADS执行扫描
针对性扫描
针对性扫描是指寻找目标网络中存在的已知可利用漏洞或能够轻松获取后门的特定操作系统,服务,软件以及配置缺陷
服务器消息块协议扫描
Metasploit可以利用它的smb_version模块来遍历一个网络并获取windows系统的版本号
执行扫描如下:
搜寻配置不当的Microsoft SQL Server
MS SQL通常作为常用软件如(Microsoft Visual Studio)安装的先决条件被自动的安装在系统上,导致很多管理员会忽略该服务软件的存在,如此一来,这种情况下安装的MS SQL服务器软件通常没有实际的用处,也很少安装补丁程序
MS SQ:安装后默认监听在TCP端口1433或使用随机的动态TCP端口,Metaspliot提供了一个mssql_ping模块帮助你找到MS SQL服务器监听的TCP端口
执行扫描如下:
SSH服务器扫描
使用ssh_version模块识别目标服务器上运行的SSH版本
执行如下:
FTP扫描
FTP服务器通常是进入一个目标网络最便捷的途径,使用ftp_version模块对FTP服务进行扫描
成功识别FTP服务器,之后可以使用scanner/ftp/anonymous模块检查一下这台FTP服务器是否允许匿名用户登录
简单网管协议扫描
简单网管协议(SNMP)通常用于网络设备中,用来报告带宽利用率、冲突率和以及其他信息,但一些操作系统也包含SNMP服务器软件,主要用来提供类似CPU利用率、空闲内存和其他系统状态
可访问的SNMP服务器能够泄露某些特点系统的相当多的信息,甚至导致设备被远程攻陷。例如,如果能得到既有可读可写的Cisco路由器SNMP团体字符串,便可以下载整个路由器的配置,对其进行i修改并传回路由器中
Metasploit框架中包含一个内置的辅助模块scanner/snmp/snmp_enum。我们可以尝试对一个ip或一段ip使用字典来猜解SNMP团体字符串。