渗透测试之漏洞利用
一次性进群,长期免费索取教程,没有付费教程。
教程列表见微信公众号底部菜单
进微信群回复公众号:微信群;QQ群:16004488
微信公众号:计算机与网络安全
ID:Computer-network
主动侦察和被动侦察的目的是找出测试者或攻击者最有可能利用的安全漏洞以支持他们的目标(拒绝服务攻击、窃取或数据修改)。杀链的利用阶段的重点是创建访问以到达目标;或者通过创建拒绝服务以停止目标的接入服务;又或者,创建攻击者与目标建立持久的接入关系,这种方法更常见。
渗透测试者在利用阶段必须关注以下几方面:
目标的整体特征是什么?如果攻击者不能对目标对象的网络和主机架构进行全方位的了解,攻击将失败,并且给侦察带来风险。
利用在目标系统上定义的众所周知的行动?当使用一个没有特征的渗透时,可能会产生意想不到的后果,并且造成的损害可能对测试进程产生负面影响。测试者在渗透前,应该在某个特定的设置下提前验证所有的渗透方法。
漏洞产生是来源于远程位置,还是来源于本地目标系统?对于攻击者,远程渗透相对来说是安全的,因为被验明正身的机会较小;然而,在本地渗透中,攻击者可以更好地控制渗透操作,并降低被侦察到的可能性。
需要什么样的后期渗透活动?如果攻击者需要从目标窃取数据,则渗透必须支持建立交互式连接。
是持续访问被入侵的系统,还是短期侵入被入侵的系统?这将确定是否使用隐身方法。
数以千计可利用的漏洞已被确定,而且大多数与至少一个概念验证代码或技术相关联,允许系统受到攻击。尽管如此,网络、操作系统和应用程序成功的基本原理是相同的。
一、威胁建模
被动和主动侦察阶段,将在目标网络和系统之间形成映射,同时识别攻击者可利用的安全漏洞。在这个阶段,攻击者的杀链对动作有一个强烈的偏见——测试者希望通过直接启动攻击来证明他们可以击垮目标。然而,意外攻击可能并不是实现目的最为有效的手段,它可能以牺牲所需要的隐身性为代价来实现攻击目的。
渗透测试者已经采取的(正式或非正式的)一个过程,被称为威胁建模。这最初是由网络规划者发展起来的,制定针对攻击的防御对策的过程。
渗透测试者和攻击者通过不断寻找防御威胁建模方法来提高攻击的成功率。攻击威胁建模是制定攻击策略的一个较为常见的手段,它将侦察和研究的结果相结合。攻击者必须充分考虑现有的目标,并确定目标是以下何种类型:
首要目标:当这些目标被击垮时,这些目标将直接帮助攻击者达到目的。
次要目标:这些目标可以提供信息(安全控制、密码、登录政策、本地,以及域管理员名字和密码)以支持对首要目标进行攻击或访问。
第三目标:这些目标可能与测试或攻击无关,但是相对容易攻击,可以为实际攻击提供信息或者其他的思路。
对每种类型的目标,测试者需要确定相应的测试方案。单个漏洞可以通过隐身技术进行攻击,而多目标可以通过大量攻击来对目标进行快速渗透。如果实施一个大规模的攻击,防护者的控制装置产生的噪声,经常会导致他们减少在路由器和防火墙的登录次数,甚至完全禁用它们。
该方法对渗透选择具有指导性作用。一般情况下,攻击者创建威胁模型时,将遵循下图所示的攻击树方法。
威胁模型的攻击树图
攻击树方法为测试者查看可用的攻击选项提供了便利,如果一个攻击方案没有成功,也可以快速找到替代方案。一旦生成攻击树,接下来渗透阶段需要确定该渗透是否可以对目标对象的漏洞进行攻击。
二、使用在线和本地漏洞资源
总之,被动侦察和主动侦察确定了目标的攻击面,也就是说,可以对漏洞进行评估的点的总数。服务器是否能够被渗透与所安装的操作系统是否存在漏洞相关;然而,潜在的漏洞数量将随着安装的应用程序的数量的增长而增长。
渗透测试者和攻击者必须找到即将攻击的具体漏洞,包括已知的漏洞以及怀疑的漏洞。漏洞搜索可以从供应商的网站开始;在发布补丁和升级的同时,大多数的硬件和应用程序供应商会提供和安全漏洞相关的信息。如果一个特定弱点的利用是已知的,大多数供应商都会向客户强调那些特定的、已知的漏洞。虽然他们的目的是让客户来测试漏洞是否存在,但同时,攻击者和渗透测试者也可以利用这类信息。
漏洞数据库也被复制到本地Kali,并且可以在/usr/share/exploitdb目录中找到。在使用之前,确保使用以下命令进行更新:
搜索漏洞数据库(exploitdb)的本地副本,需要打开终端窗口,在命令提示符下输入searchsploit和需要搜索的关键词。这将调用一个脚本,脚本搜索含所有漏洞列表的数据库文件(.csv)。搜索将返回对已知漏洞的描述,以及和该漏洞相关的路径。特定漏洞可以被提取、编译和运行。下图是漏洞数据库的查询图。
查询漏洞数据库(exploitdb)
搜索脚本从左至右扫描数据库CSV文件中的每一行,因此搜索项的顺序很重要,对于oracle 10g数据进行搜索将返回多个漏洞,但10g oracle数据本身不会返回任何漏洞。并且,该脚本是区分大小写的;虽然对搜索词要求使用小写字符,搜索Bulletproof FTP不会返回任何结果,但搜索bulletproof FTP会返回7个结果。可以通过使用grep命令,或搜索工具如KWrite(apt-get install kwrite),对数据库文件CSV进行更有效的搜索。
通过扫描和路径列表对本地数据库进行搜索,可以识别几种可能的漏洞;然而,这需要根据你的相应环境进行定制,并在使用前进行编译。复制漏洞到/tmp目录下(给定路径不考虑保留在/platforms目录中的/windows/remote目录)。
漏洞利用以脚本的形式呈现,例如,Perl、Ruby和PHP等,都是相对易于实现的脚本语言。例如,如果攻击目标是Microsoft II 6.0服务器,攻击者会相对容易绕过远程认证,复制该漏洞利用到根目录,然后像标准的Perl脚本那样执行,如下图所示。
运行标准的Perl脚本
许多漏洞在使用前必须像源代码那样进行编译。例如,搜索RPC-specific漏洞,识别多种可能的漏洞利用。摘录如下图所示。
PRC漏洞利用编译截图
RPC DCOM漏洞识别工具,如76.c,实践中证明它是相对稳定的。因此,我将用它作为例子。为了编译该漏洞利用工具,首先将它从存储目录复制到/tmp下。在该位置,使用GCC的命令进行编译,命令如下:
这里将使用GNU编译器集(GNU Compiler Collection)对76.c进行编译,然后输出(-o)文件76.exe,如下图所示。
用GNU编译76.c,生成76.exe
当针对目标调用应用程序时,你必须使用如下所示的符号链接来调用可执行文件(该文件并未存储在/tmp目录):
这个漏洞利用的源代码有清晰的文档记录,并且,需要执行的参数一目了然,如下图所示。
76.exe文件的运行参数
遗憾的是,不是所有来自漏洞数据库和其他公共资源的漏洞都像76.c一样容易编译。这里为渗透测试者列出了几种可能存在危险的漏洞利用情况:
会经常遇到蓄意的错误或不完整的源代码,因此有经验的开发人员尽量让漏洞远离没有经验的用户,尤其是试图破坏系统但又不清楚自己行为将带来什么风险的新手。
漏洞利用并不总是有详尽的文档解释;毕竟,没有一个标准用于管理数据系统攻击代码的创建和使用。作为一个结果,实践往往较为困难,特别是对于缺乏应用开发的测试者。
由于环境变化导致行为不一致(新的补丁应用到目标系统、目标应用程序中的语言变化)可能需要对源代码进行重大调整;这需要一个有经验的开发人员。
免费提供的、包含恶意的代码,总是存在风险。渗透测试人员可能会认为他是在进行概念验证(POC)练习,并不知道该代码同时为该应用程序建了一个后门,可以供开发者使用。
为了确保结果的一致性,遵循一致性实践的程序员创建了一个程序员社区,已经开发出几种渗透利用的框架。其中,最为流行的是Metasploit框架。
(一)Metasploit框架
Metasploit框架(Metasploit Framework,MSF)是一个开源工具,旨在便利渗透测试。用Ruby语言编写,它采用了模块化的方法来完成渗透测试。这使得它易于扩展和编写代码,而且可以更容易实现复杂的攻击。
MSF可向后端模块提供多种用来控制测试的接口(控制台、CLI和Web)。考虑到速度问题,我们将使用控制台接口,因为控制接口提供了攻击命令,并且它在一个易于理解的界面提供了所需要的配置参数。要访问该界面,需在命令提示符下输入msfconsole,或从下拉菜单中查找十大安全工具(Top 10 Security Tools)。下图显示了该应用程序的启动界面。
MSF启动界面
MSF框架由多个模块组成,这些模块组合起来可以影响一个漏洞利用。各个模块及其具体的功能如下:
渗透模块:该代码片段针对特定漏洞。主动渗透会针对某个特定的目标进行持续性渗透,直到完成任务,然后退出(例如,缓冲区溢出)。被动渗透是指等待进入主机,如Web浏览器或FTP客户端,当它们连接时再进行渗透。
有效载荷:这是在成功渗透后立即执行的恶意代码。
辅助模块:这些模块不会直接在测试者和目标系统之间建立访问路径;相反,它们执行如扫描、模糊或嗅探等相关功能以支持渗透测试。
后期模块:成功攻击目标后,这些模块运行在受损目标上,收集有用的数据,支持攻击者深入到目标网络。我们将在第5章继续学习后期模块利用。
编码器:当渗透必须绕过杀毒防御时,这些模块对有效载荷进行编译,以使得它不会被签名匹配技术检测到。
无操作(NOP):这些是在攻击时用来促使缓冲区溢出的。
这些模块一起使用,用于对目标进行侦察并发动攻击。使用MSF渗透目标系统的大致步骤如下:
1、选择并配置一个漏洞利用(用于击溃目标系统上特定漏洞的代码)。
2、检查目标系统,以确定它是否容易受到漏洞利用的攻击。此步骤是可选的,通常将其省略来减少侦察步骤。
3、选择和配置有效载荷(在成功攻击后,该代码将在目标系统上执行。例如,从遭到破坏的系统恢复反向的外壳到源代码)。
4、选择一个编码技术,用其来绕过检测控制(IDs/IPs或防病毒软件)。
5、执行渗透利用。
下面的例子呈现了对目标(基于Linux操作系统Metasploitable2)的简单攻击。该工具可以在网站http://sourceforge.net/projects/metasploitable/files/Metasploitable2下载。Metasploitable2被设计成易攻击的,它包含各种已知并且有特征的漏洞,它提供了一个标准的、用于训练和检验渗透工具的平台。
当作为一个虚拟机安装的时候(见附录),Metasploitable可以用nmap扫描,用于识别开放端口和相关的应用程序。下图显示了nmap扫描的部分结果。
nmap扫描的部分结果
在前面的例子中,几个应用程序都被nmap识别。作为一个测试者,我们应该逐一调查任何已知的漏洞。开始的第一步,Metasploit拥有利用的集合。可以使用以下命令行搜索:
samba服务返回漏洞利用的列表,列表按照各个漏洞被利用成功的相对难易进行排名。下图显示了使用samba扫描漏洞的部分内容。
使用samba扫描漏洞
因为exploit/multi/samba/usermap_script漏洞利用的排名靠前,所以剩下部分选择其作为例子。这个排名由Metasploit的开发团队确定,并注明了一个熟练的测试者如何可靠地测试一个稳定的系统的漏洞。在现实生活中,许多不确定因素(测试者的技能、网络中的保护装置、对操作系统和应用程序的修改)会对漏洞利用的可靠性产生显著影响。
有关漏洞利用的附加信息可以通过下面的命令获得:
返回的信息包括引用,如下图所示。
漏洞利用的附加信息
为了对Metasploit进行演示,我们将通过该漏洞利用来攻击目标,命令如下:
Metasploit将命令提示符msf>变为msf exploit(usermap_script)>。
Metasploit提示测试者选择有效载荷(例如,从遭到破坏的系统恢复的逆向外壳),同时设置其他变量,变量如下所示:
远程主机(Remote host,RHOST):被攻击的系统IP地址。
远程端口(Remote port,RPORT):用于漏洞利用的端口号。
本地主机(Local host,LHOST):用于发动攻击的系统IP地址。
设置完所有参数变量后,在命令提示符下输入渗透利用命令,发动攻击。Metasploit发起攻击,然后确认一个逆向shell已经由命令command shell 1 opened启动,给出源IP地址,最后终止逆向shell。
为了验证shell是存在的,测试者针对主机名、用户名(uname-a)和whoami进行询问、查询,并确定结果是否与远程目标系统相对应,参见下图。
验证shell
为Metasploit添加新的漏洞利用时,用Ruby脚本(.rb)或Python(.py)语言,将它们放置在位于主目录下的隐藏文件夹.msf4中,然后重新加载msfconsole。
(二)利用易受攻击的应用程序
Metasploit框架针对第三方应用的漏洞攻击效果,等同于对操作系统的漏洞攻击效果。在这个例子中,我们将利用一个缓冲区溢出漏洞,这是Chasys Draw IES(版本4.10.01)的一个漏洞。由于ReadFile函数存在脆弱性,它用一个不安全的方式存储用户提供的数据。利用的结果是在用户的上下文中执行任意代码。
发起攻击,测试者需要生成一个特制的BMP文件,然后让受害者用Chasys应用程序打开文件。当打开文件时,它会击垮受害者的基本操作系统(对Windows XP SP3、Windows 7 SP1是有效的)。
第一步是打开MSF控制平台(msfconsole),并且使用exploit/windows/fileformat/chasys_draw_ies_bof设置的Metasploit,如下图所示。
打开msfconsole使用Chasys-Draw
二步,该漏洞利用是一个相对简单的漏洞利用。它要求测试人员设置一个反向shell(reverse_tcp),从被击垮的系统回到攻击者的系统,即本地主机(LHOST)。
当利用完成后,它创造了特制的BMP文件,存储文件的默认名为msf.bmp。要吸引目标打开该文件,并且避免一些设备可能检测到默认名称,最好将文件名改为与预定目标更为相关的名称。
第三步是打开MSF控制台的一个新实例,并为传入的逆向TCP的外壳设置一个监听,便于即时监听到目标投降的信息。一个简单的监听器如下图所示。
一个简单的监听器
一旦受害者在易受攻击的应用程序中打开特制的BMP图像文件,一个meterpreter会话会在两系统之间打开。msf提示符被meterpreter提示符取代,攻击者使用命令shell可以有效地访问远程系统。攻击的第一步是验证你在目标系统上;你可以在下图中看到,sysinfo命令标识出计算机名称和操作系统,这验证了一次成功的攻击。
使用sysinfo命令
三、使用Armitage的多目标渗透
Armitage经常被渗透测试者忽视,由于测试者喜欢Metasploit控制台的传统命令行输入,而避开Armitage的图形界面。然而,Armitage在可视化选项的环境下,拥有Metasploit的功能,使其成为在复杂测试环境下的一个绝传选择。不与Metasploit不同,它允许你在同一时间测试多个目标,上限为512个。
启动Armitage,并确保已启动数据库和Metasploit服务,使用以下命令:
完成上一步之后,在命令提示符下输入armitage,并执行该命令。Armitage并不总是能正常执行,它可能需要重复启动的步骤,以确保它在正确运行。
为了发现可用的目标,你可以手动提供IP地址增加主机,或选择菜单栏上的nmap扫描添加主机。Armitage还可以使用MSF辅助命令或DNS枚举来列举目标。
Armitage可以从下列文件获得主机的数据:Acunetix、amap、AppScan、Burp proxy、Foundstone、Microsoft Baseline Security Analyzer、Nessus NBE和XML files、NetSparker、NeXpose、nmap、OpenVas、Qualys,以及Retina。Armitage启始界面如下图所示。
Armitage启始界面
Armitage允许通过右击选择一个主机,设置该主机的标签,然后选择一个主机(host)菜单,并且选择设置标签(set Label)功能。这允许你使用一个共同的名字来标记某个特定的地址或确认主机,当使用基于团队的测试时,这是很有帮助的。这个过程如下图所示。
设置主机标签
Armitage还支持动态工作空间——网络的筛选视图,可以将网络标准、操作系统、开放的端口和服务、标签等作为筛选的条件。例如,你可以测试一个网络,并确定几个服务器,但是不出现该网络的其他剩余内容。给它们一个标签,让这些内容能够突出显示,然后将它们放置在一个优先级的工作空间中。
一旦在网络上确定了目标系统,就可以选择特定的模块作为实现漏洞利用过程的一部分。你还可以使用菜单栏中的攻击(Attacks)选项来查找攻击方法。
右击所利用主机,点击攻击(Attacks)菜单,选择一个漏洞(确保设置正确的主机操作系统,这并不总是自动发生)。
一个有趣的选项是Hail Mary,位于攻击(Attacks)菜单下。通过选择这个功能,所有识别系统都会自动对漏洞目标进行攻击,以达到可能击垮目标的最大数量。这是一个非常嘈杂的攻击,因此应该被用来作为测试选择的最后手段。这也是一个很好的方式,用来确定是否安装好了入侵检测系统,并且配置正确!
被击垮的系统显示为一个带电火花的红色边界图标。在下图中,两个测试系统已经被击垮,在这些系统和测试者之间有四个活动会话。活动会话(Active Sessions)面板表示这个连接,并确定了哪些漏洞会成为攻击目标。下图代表了不同的选择。
被攻击主机与测试者之间的活动会话
在渗透测试进行的过程中,Hail Mary选择确定了目标的两个可利用的漏洞,并且启动了两个活动会话。手工测试同一目标,最终确定了8个可利用的漏洞,在被击垮的系统和测试之间建立了多条通信通道。在真实世界这种类型的测试强化了这种类型的优点,并且强化了在渗透测试过程中使用自动化工具的弱点。
(一)Armitage测试团队
Armitage的前端图形界面超过Metasploit框架,它是一个使用脚本的渗透测试工具,允许一个团队使用Metasploit框架的一个实例,GUI显示以下功能:
它使用同一个会话,允许一个测试人员来监督这个过程,识别感兴趣的结果,并控制测试的方向。
它运行脚本以自动测试任务。
它共享下载的文件,如密码文件。这允许一个团队成员集中在密码破解上,而其他团队成员继续渗透阶段。
它使用一个共享事件日志进行通信。
为了充分利用团队配置,确保Armitage没有正式运行,然后在Armitage目录提示符下调用teamserver脚本,通常的目录是/usr/share/armitage,命令如下:
确保IP地址是正确的,因为它不被Armitage验证,所有的团队成员都可以通过端口55553访问主机。当你开启Armitage团队服务器时,团队成员使用一个SSL证书通信;团队成员应该验证证书的SHA-1与服务器的SSL证书的相应值是否匹配。
当teamserver脚本运行时,不要连接到127.0.0.1,因为Armitage使用这个IP地址连接,并确定它是否应该使用SSL(teamserver或远程地址)或者不使用SSL(localhost或msfrpcd)。为了连接Armitage到本地的teamserver,在主机领域使用外部IP地址。
用户可以打开一个或多个命令shell、浏览文件、下载数据,并抓取截图。在使用时,shell会话会自动锁定,然后解锁。然而,一些Meterpreter脚本可能随着时间的推移而失效。
为作为一个团队通信,点击菜单栏中的视图(view)菜单以打开共享事件日志。你可以进入日志只要你曾经使用IRC,或一些其他的聊天室,并且这个日志保留所有注释的永久记录。
(二)Armitage攻击脚本
Armitage包括:Cortana脚本语言,它基于Sleep,一个类似于Perl语言的扩展语言。Cortana脚本可以定义键盘快捷键、插入菜单,并创造独特的用户界面。
脚本可以作为独立的实体来运行(前提是Armitage团队服务器处于活动状态),或者直接从Armitage运行。要加载现有的脚本,在主菜单栏中选择Armitage,然后选择脚本(Scripts)。会打开分页视图,通过一个按钮便可选择加载脚本。
Armitage还提供了一个脚本环境,它从菜单的View|Script Console表调用,如下图所示。
Armitage脚本环境
使用Metasploit框架的、完全扫描目标系统的一个简单脚本可以写成scanner.cna。每当一个新的主机加入(host_add)时,MSF的端口扫描程序会扫描一个定义的TCP端口列表,以及可用的UDP端口。参考下面的代码片段,这就是一个扫描脚本:
由于Cortana已经广泛与Metasploit框架结合,脚本可以被用于自动发动攻击,进行后期漏洞利用活动,如跟踪用户活动,便于多个用户跨过攻击者的杀链活动。
四、绕过IDS与反病毒侦测
杀链的利用阶段是最危险的一个阶段,渗透测试者或攻击者直接与目标网络或系统交互,他们的活动很可能会被记录,他们的身份也很可能会被发现。因此,必须采用隐身技术,以最大限度地减少测试者暴露的风险。虽然没有具体的方法或工具可以确定无法检测的,但是,改变一些配置,以及利用特别的工具,将使检测更加困难。
当考虑远程攻击时,大多数网络和系统采用不同类型的防御控制,以减少攻击的风险。网络设备包括路由器、防火墙、入侵检测和预防系统,以及恶意软件检测工具。
为了方便漏洞利用,大多数的框架纳入了使攻击具有某种隐身的功能。Metasploit框架允许你手动设置基于利用漏洞利用(exploit-by-exploit)的规避因素;然而,确定那一个因素(如作为加密、端口号、文件名和其他因素)是困难的,同时,改变每一个特定的IDS也是困难的。该Metasploit框架还允许目标和攻击系统之间的通信是加密的(Windows/meterpreter/reverse_tcp_rc4有效载荷),使得检测到所利用的有效载荷变得非常困难。
Metasploit Pro可作为Kali分布的一个试验,包括以下具体绕过入侵检测系统的方法:
在发现扫描(Discovery Scan)的设置中,扫描速度可以调整,为减少与目标的交互速度,可以将速度设置为较低。
通过发送小的TCP数据包,并增加数据包之间的传输时间。
减少针对目标系统的同时攻击的数量。
设置DCERPC、HTTP和SMB。
大多数反病毒软件依靠签名匹配来定位病毒和其他恶意软件。它们检查每一个已知的病毒(签名)的可执行代码串,当检测到一个可疑的字符串时,创建一个报警。许多Metasploit的攻击者依赖于可能具有签名的文件,随着时间的推移,这样的文件将被杀毒厂商识别。
对此,Metasploit框架允许独立的可执行文件通过编码来绕过检测。不幸的是,在公共场所,这些可执行测试的泛滥(如virustotal.com)降低了其绕过AV软件的有效性。
一个新的AV–逃脱框架,由Chris Truncer完成,叫作Veil-Evasion(www.veil-evasion.com),正在对独立的漏洞利用提供有效的保护。Veil-Evasion利用一个简单管理框架,规避各种外壳代码(shellcode)注入技术。
作为一个框架,Veil-Evasion具有一些特性,主要包括如下几点:
它可以让自定义的shellcode与多种编程语言结合,包括C、C#、Python。
它可以使用Metasploit生成shellcode。
它可以集成第三方工具,如Hyperion(使用AES-128加密EXE文件)、PEScrambler、BackDoor Factory。
Veil-Evasion_evasion.cna脚本允许Veil-Evasion被集成到Armitage和其商业版Cobalt Strike中。
有效载荷可以生成和无缝代入到所有PsExec调用。
用户有能力重用shellcode或实现他们自己的加密方法。
它具有自动化部署脚本的功能。
Veil-Evasion在不断发展,它的框架已经有扩展模块,如Veil-Evasion-Catapult(有效载荷交付系统)。
Veil-Evasion可以产生漏洞利用有效载荷;独立的有效载荷包括以下选项:
调用shellcode安装最小版的Python;上传一个最小的python.zip安装文件和7zip二进制文件。Python环境是解压缩的,调用shellcode。因为唯一的文件,与受害者互动的是值得信赖的Python库和解释器,受害者的AV不检测或不报警任何不寻常的活动。
Sethc后门,它将配置受害者的注册表,启动粘滞键RDP后门。
PowerShell的shellcode注入。
当载荷已经建立,可以用以下两种方法之一传递到目标:
使用Impacket和PTH工具包上传并执行。
UNC调用。
Veil-Evasion可从Kali库中使用,如安装Veil-Evasion,在提示符下简单地输入apt-get install veil-evasion命令即可。
在安装过程中,如果你收到任何错误,重新运行:/usr/share/veil-evasion/setup/setup.sh脚本。
Veil-Evasion为用户呈现一个主菜单,它提供几个负载模块,并且这些载荷用命令的方式使用。命令list将列出所有可用的payloads,命令list langs将列出有效载荷的可用语言,命令list<language>将列出特定语言的有效载荷表。Veil-Evasion开始启动的初始界面如下图所示。
Veil-Evasion开始启动的初始界面
Veil-Evasion正在快速发展,几乎每个月都有重大的发布,重要的升级更加频繁地发生。目前,采用加密或直接注入到内存空间的技术,有24个有效载荷能绕过杀毒软件。这些有效载荷如下图所示。
Veil-Evasion可用的有效载荷
要获得一个特定的负载信息,输入info<载荷数字/载荷名>,或者输入info<tab>,自动填充可用有效载荷的信息。你还可以输入列表中的数字。在下面的例子中,我们输入19选择python/shellcode_inject/aes_encrypt载荷(见下图)。
python/shellcode_inject/aes_encrypt载荷
利用包括expire_payload选项。如果模块不能被目标用户在指定的时间内运行,该模块不能操作。此功能有助于攻击的隐蔽性。
所需的选项包括选项的名称、默认值和描述。如果所需的值不是默认值,则测试人员需在有效载荷生成前输入一个值。要设置一个选项的值,输入set<选项名>,然后输入期望值。如果要接受默认选项,并创建该利用时,需在命令提示行输入生成类型。
如果载荷使用shellcode,将为你呈现shellcode菜单,你可以选择msfvenom(默认shellcode)或自定义的shellcode。如果自定义shellcode选项已经选择,以\X01\X02的形式进入shellcode,不能有引号和换行符(\n)。如果默认msfvenom被选中,你的默认载荷选择提示符是windows/meterpreter/reverse_tcp。如果你想使用另一个有效载荷,按Tab键来完成有效载荷。可用的有效载荷如下图所示。
选择载荷
在下面的例子中,使用tab命令来展示一些可用的有效载荷;然而,默认(windows/meterpreter/reverse_tcp)被选定,如下图所示。
使用tab命令显示可用的载荷
然后,用户将看到输出菜单上显示一个提示,在这里选择所生成的负载文件的基本名。如果负载是基于Python的,并且你选择了compile_to_exe选项,用户使可以使用pyinstaller创建EXE文件,或者直接生成Py2Exe文件,如下图所示。
选择输出文件的类型
已经生成载荷的屏幕最后显示的信息,如下图所示。
生成载荷后显示的信息
使用以下选项还可以直接从命令行创建该利用:
一旦一个漏洞利用被创建,测试人员应该验证载荷对抗VirusTotal的能力,确保载荷放在目标系统中不会触发警报。如果负载样品被直接提交到VirusTotal,并且它的行为被标记为恶意软件,那么,在短短一个小时内,反病毒供应商将发签名更新以阻击载荷。这就是为什么用户被明确警告的信息“不提交样品到任何在线扫描!”
Veil-Evasion允许测试人员使用安全检查对抗VirusTotal。当创建了任何有效载荷时,将创建一个SHA1散列,并添加到hashes.txt文件,位于~/veiloutput目录。测试人员可以调用checkvt脚本提交散列值到VirusTotal,并检查该SHA1散列值与VirusTotal的恶意软件数据库。如果一个Veil-Evasion的有效载荷触发了一个匹配,那么测试人员知道它可以被目标系统检测到。如果它不触发匹配,那么该漏洞利用载荷将绕过反病毒软件。一个使用checkvt命令的成功的查找(没有被AV检测到),如下图所示。
检查VirusTotal中的载荷
如果checkvt不能在VirusTotal中找到匹配,该载荷将不会被目标的杀毒软件检测到。为了使用Metasploit框架,使用exploit/multi/handler,并且设置PAYLOAD为windows/meterpreter/reverse_tcp(与Veil-Evasion有效载荷的选项相同),也如Veil-Evasion一样使用LHOST和LPORT。当监听器功能正常,发送利用到目标系统。当监听器启动时,它将建立一个逆向的外壳,返回给攻击者的系统。
五、结语
我们专注于漏洞利用作为工具,将调查结果转换为一个已定义的行动,该动作将建立测试人员和目标之间的访问。
Kali提供了一些工具来方便开发、选择和激活利用,其中包括内部开发数据库以及几个框架,简化了漏洞利用的使用与管理。在这些框架中,Metasploit框架和Armitage尤为重要;然而,Veil-Evasion增强了绕过杀毒软件、检测软件的能力。
微信公众号:计算机与网络安全
ID:Computer-network
【推荐书籍】