20199317 2019-2020-2 《网络攻防实践》第7周作业

20199317 2019-2020-2 《网络攻防实践》第7周作业

1.实践内容

1.1 Windows操作系统基本框架概述

1.1.1 Windows操作系统的基本结构

  • Windows操作系统的基本结构

  • 在上述系统架构下,Windows操作系统内核中实现了如下的核心机制
    Windows进程和线程管理机制:Windows将进程视作可执行程序运行时刻的容器,线程作为进程内部指令执行的具体载体。
    Windows内存管理机制:Windows的虚拟内存空间分为系统核心内存区间与用户内存区间两部分。系统核心内存用于映射内核、HAL、Win32k.sys等内核执行模块,并存储内核内存对象,对于用户态程序是无法直接访问的,但对于在内核中运行的特权代码,则可通过DKOM技术来进行枚举和操纵。用户态内存中包含用户程序的代码段、数据段,并对每个线程对应有一个栈和一个堆。
    Windows文件管理机制:NTFS文件系统基于ACL访问控制列表来保证文件资源读/写的安全性,较FAT更加安全,此外具有更高的性能、可靠性和磁盘利用效率。
    Windows注册表管理机制:Windows系统注册表在作为系统全局配置、用户和应用软件配置信息的存储仓库,操作系统引导启动、服务运行以及各类应用软件启动、应用程序和设备驱动安装等都几乎每个Windows操作都伴随着大量从注册表中读取和修改配置信息的动作。
    Windows的网络机制

1.2 Windows操作系统的安全体系结构与机制

1.2.1 Windows安全体系结构

  • 位于内核中的SRM(Security Reference Monitor)安全引用监控器,以及位于用户态的LSASS(Local Security Authority Subsystem Service)安全服务,与Winlogon/Netlogon及Eventlog等服务一起,实现了对主体用户的身份认证机制、对所有资源对象的访问控制机制,以及对访问的安全审计机制。

  • Windows系统安全体系结构

1.2.2 Windows身份认证机制

  • Windows为每个用户和计算机设置账户进行管理,作为这些安全主体运行程序代码的执行环境,而账户权限的根本作用就是限制这些账户内运行程序对系统资源对象的访问。本地Administrator和SYSTEM账户拥有最高的权限,是黑客攻击的终极目标。

  • Windows系统的内建用户组包括:本地最高权限用户组Administrator、具有单一方面系统权限的Account/Backup/Server/Print Operators等操作组、用于容纳服务账户的Network Service与Local Service用户组,以及所有用户账户所在的Users组等。同样,黑客们也往往希望将自建的后门账户添加入Administrator用户组,来获得系统的最高权限。

  • 对于试图使用Windows系统的用户与远程计算机等安全主体,Windows通过一些秘密信息(如保存的口令字、登记的指纹等)来认证安全主体真实合法的身份,进行用户身份认证。Windows支持本地身份认证和网络身份认证两种方式,分别对在本地系统登录和远程网络访问的主体进行合法性验证,具体实现原理如下所示:

1.2.3 Windows授权与访问控制机制

  • Windows的授权与访问控制机制是基于引用监控器模型,由内核中的SRM模块与用户态的LSASS服务共同来实施,由SRM作为安全主体访问对象资源时的中介,根据设定的访问控制列表进行授权访问。

1.2.4 Windows安全审计机制

  • 系统审计策略在本地安全策略中由系统管理员定义,来确定系统对哪些事件进行记录。LSASS服务将保存审计策略,并在对象启动审计功能后,在对象安全描述符中的SACL列表中进行保存;SRM安全引用监控器在进行对象访问授权时,也将依据对象的SACL列表配置,对指定的对象访问和操作事件进行审计记录,发送给LSASS服务;由LSASS服务补充审计记录细节信息后,再将这些审计记录发送给EventLog事件日志服务;EventLog服务最后将事件日志写入日志文件中,并通过事件查看器展示给系统管理员,也可以作为第三方审计日志分析工具的分析输入数据源。

1.2.5 Windows的其他安全机制

  • 除了身份认证、授权与访问控制及安全审计这三个基本安全功能特性之外,Windows操作系统还实现了大量其他安全机制,其中一项比较重要的安全机制是由Windows XP SP2开始引入的Windows安全中心,在此集成了对于保护Windows系统安全稳定运行最为关键的三项安全措施————防火墙、补丁自动更新以及病毒防护。除安全中心之外,Windows的安全特性还包括IPSec加密与验证机制、EFS加密文件系统、Windows文件保护机制、捆绑的IE浏览器所提供的隐私保护与浏览安全保护机制等。

1.3 Windows远程安全攻防技术

1.3.1Windows系统的安全漏洞生命周期

  • 针对特定目标的渗透测试攻击过程:漏洞扫描测试、查找针对发现漏洞的渗透代码、实施渗透测试。

  • 使用Metasploit软件实施渗透测试
    Metasploit是一款非常优秀的、完全开源的渗透测试软件,Metasploit软件采用开发框架和模块组件的可扩展模型,其中模块组件是真正实施渗透攻击的代码,包括利用安全漏洞的Exploits模块,进行扫描、查点等其他辅助任务的Auxiliary模块等等。
    Metasploit软件提供了CLI、Console、Web和GUI四种不同的用户交互接口,其中Console终端是比较常用的方式,其主要命令及其功能描述如下所示:

1.3.2 Windows远程口令猜测与破解攻击

  • 远程口令猜测与破解防范措施
    (1)尽量关闭不必要开放的易受远程口令猜测攻击服务,包括TCP 139/445端口的SMB服务、TCP 135端口的WMI服务等。
    (2)配置主机防火墙来限制能够访问上述端口服务的源IP地址范围。
    (3)利用网络防火墙来限制到这些服务的访问。
    (4)应对远程口令字交换通信窃听与破解攻击最基本的途径是禁用过时而且存在本质上安全缺陷的LanMan与NTLM ,而仅使用经过安全加固的NTLMv2与Kerberos认证协议,应保持Windows补丁的自动更新并确认NTLMv2协议中发现的安全漏洞已被修补(MS08-068与MS10-012补丁)。
    (5)对于安全级别较高的Windows系统服务器等主机,管理员可以制定和实施强口令字策略,还可以设置账户锁定阈值,在输错特定次数口令之后对用户账户进行一段时间的锁定,还可以在系统上激活账户登录失败事件审计功能。

1.3.3 Windows网络服务远程渗透攻击

  • 网络服务远程渗透攻击防范措施
    (1)从软件设计开发根源上尽可能减少安全漏洞的出现,对于被发现的漏洞,应尽快提供修补的安全补丁。
    (2)作为系统的使用者和管理员,应尽可能快地更新与应用软件安全补丁。
    (3)在安全漏洞从被意外公布和利用到补丁发布的这段“零日”漏洞时间,管理员对安全敏感的服务器应该测试和实施可用的攻击缓解配置。
    (4)利用服务软件厂商及社区中提供的安全核对清单(Check List)来对服务进行安全配置,并利用一些安全增强插件,来加固所部署的网络服务。
    (5)通过漏洞扫描软件来标识网络中存在的已知安全漏洞并及时修补,启用入侵检测与防御机制来检测或抵御网络渗透攻击,并建立起一个有效地事件应急响应计划。

1.4 Windows本地安全攻防技术

  在利用远程渗透攻击技术获取到Windows系统的访问权之后,攻击者下一步的目标就是破解本地程序安全漏洞,进行特权提升以取得系统的完整控制权,并在系统中窃取口令等敏感信息扩大战果,进-一步掩踪灭迹,植入远程控制后门]程序以维护对系统的长期控制。

1.4.1 Windows本地特权提升

  • 攻击者获得Windows系统上的受限用户权限之后,他们将立即着眼于获得终极特权:Administrator或Local System 账户。从受限用户权限尝试获得特权账户的攻击技术也被称为特权提升(Privilege Escalation), 业内简称为“提权”。Windows 系统上进行特权提升的攻击途径主要是通过DLL注入和破解本地程序安全漏洞。

  • 从技术上来说,获得了Administrator 权限并不意味着获得了Windows系统的最高权限,Local System 账户比Administrator账户的权限更高,比如Administrator不能在系统运行时刻读取SAM位置注册表键值,而Local System 却可以。不过,有了Administrator权限,获得Local System权限就很简单了,一种方法是利用 Windows的计划任务服务,执行“at XX:XX /INTERACTIVE cmd.exe"打开- -一个命令Shell,该Shell的权限即为Local System; 另一种方法 是利用sysinternals的免费工具psexec,它甚至允许以远程方式获得和使用Local System权限。

  • 针对本地提权攻击的最根本的防范措施:及时给系统打好各种补丁。

1.4.2 Windows敏感信息窃取

  • Windows系统口令字密文提取技术
    在本地获取口令字密文的主要包括如下三种途径:
    (1)从另一操作系统启动后拷贝文件系统中的口令密文文件,这需要攻击者对目标系统拥有物理访问权限,能够在物理主机设备上插入可启动光盘或U盘,并重启系统,通过攻击者控制的操作系统对系统磁盘上的密文文件进行获取。这种攻击途径在远程攻击中无法实施。
    (2)利用硬盘修复工具包中的rdisk工具,执行“rdisk/s-”命令创建SAM备份文件副本。
    (3)使用pwdumpX系列工具直接从SAM文件或活动目录中提取口令字密文。

  • Windows系统口令字破解技术:L0phtCrack是一款非常经典的Windows口令破解软件,支持多种口令字密文数据格式,包括本地注册表、原始SAM文件等,并综合使用了字典、暴力破解、组合破解和彩虹表等密码破解技术,能够很快恢复出强度比较弱的用户口令字。另一款著名的口令字破解软件是John the Ripper,但主要用于破解UNIX/Linux系统的口令字。

  • 用户敏感数据窃取:对于用户在系统中的文件,攻击者可以执行find、findstr、grep等命令行工具来实施查找,一些强大的后门软件,如灰鸽子、Metasploit中的Meterpreter,也支持复杂的文件搜索功能。此外,攻击者也可能使用键击记录器来对用户键盘输入进行监听。

  • 本地敏感信息窃取防范措施:选择强度高、能够抵御破解攻击的好口令;使用更安全的加密算法保护明文口令字,以及通过安全配置策略避免缓存关键服务器的敏感登录口令信息。

1.4.3 Windows消踪灭迹

  • 关闭审计功能:攻击者在攻陷系统获得Administrator 权限后,他们最先查看的就是目标系统上的审计策.略,而Windows Resource Kit工具包里的auditpol程序可以让他们轻易地关闭审计功能。

  • 清理事件日志:Windows系统上除了Event Log系统审计日志信息之外,其他的IIS、MS SQL Server等服务也都有自己的日志记录,有经验的攻击者会清晰地了解他们的攻击过程可能会被哪些日志所记录,然后进行相应的清理。

  • 针对消踪灭迹的防范措施:可以选择将Windows服务器的日志记录到不可擦写的CDROM中,或者通过网络传输到安全的日志服务器中,也可以采用定期备份的方式进行固化保全,而并非一直保存在服务器本地,这可以避免有经验的攻击者在攻陷系统之后完全清除或选择性地清理事件日志。

1.4.4 Windows远程控制与后门程序

  • Windows系统本身提供的远程控制机制就是基于RDP协议的远程桌面,但攻击者在使用远程桌面控制目标主机时,会很容易被系统用户或管理员所发现,因为桌面Windows系统的远程桌面只支持开放一个实例,一旦攻击者控制桌面,那么用户终端将出现桌面已被登录的提示,服务器Windows系统支持多个桌面终端管理,但会在终端管理器中显示当前活跃的管理桌面终端,系统管理员也会轻易发现攻击者的控制连接。
    因而攻击者往往会在受控的系统中自主植入第三方的远程控制与后门程序,主要分为命令行远程控制工具、图形化远程控制工具这两大类。

  • 针对后门程序的防范措施:采用一些后门检测软件尝试发现攻击者隐藏的后门程序,常用的检测软件包括反病毒厂商所提供的杀毒软件,以及一些专门的后门及Rootkit检测软件。如Sysinternals的RootkitRevealer、国内的IceSword等。

2.实践过程

实践一: Metasploit Windows Attack

任务:使用Metasploit软件进行Windows远程渗透攻击实验。
具体任务内容:使用Windows Attacker/BT4攻击机尝试对Windows Metasploitable靶机上的MS08-067漏洞进行远程渗透攻击,获取目标主机访问权。
实践步骤:
(1)启动metasploit软件,可根据个人喜好使用msfconsole、msfgui、 msfweb 之一;
(2)使用exploit: windows/smb/ms08_ 067 _netapi 渗透攻击模块;
(3)选择攻击PAYLOAD为远程shell, (正向或反向连接均可);
(4)设置渗透攻击参数(RHOST,LHOST,TARGET 等);
(5)执行渗透攻击:
(6)查看是否正确得到远程Shell,并查看获得的权限。

本次实践以VMware中的kali为攻击机,Windows2kServer为靶机。注意两台虚拟机需要处于同一个网段,两者的IP地址如表所示:

虚拟机 IP地址
kali 192.168.200.2
Windows2kServer 192.168.200.124

(1)在kali输入命令msfconsole,打开metasploit,进入其控制界面:

然后再搜索一下ms08_067漏洞,命令为search ms08_067搜索结果如下图。

这是针对这个漏洞的渗透攻击模块。

输入命令use exploit/windows/smb/ms08_067_netapi,进入该渗透攻击模块

(2)输入show payloads,选择攻击负载模块

选择3,反转tcp,或者选择直接输入那个路径也可,输入set PAYLOAD 3

(3)然后show options,查看需要配置的参数,主要是配置ip地址。按照靶机RHOST,攻击机LHOST的原则配置就行

(4)设置目标操作系统平台类型,这个选择0就行,0代表自动识别,输入命令set TARGET 0

(5)输入exploit开始攻击。攻击结果如下图

(6)攻击成功后,回车,发现进入了靶机的cmd页面上,输入ipconfig查看一下靶机ip

发现是靶机的IP地址,这样就验证了我们的攻击是成功的。

实践二:取证分析实践:解码一次成功的NT系统破解攻击。

  来自213.1 16.251.162的攻击者成功攻陷了- -台由rfp部署的蜜罐主机172.16.1.106(主机名为: lab.wiretrip.net), 这是一次非常典型的针对NT系统的攻击,而且我们有理由相信攻击者最终识别了蜜罐主机,因此这将是一个非常有趣的案例分析挑战。
  你的分析数据源只有包含整个攻击过程的二进制记录文件,而你的任务就是从这个文件中提取并分析攻击的全部过程。
  1.攻击者使用了什么破解工具进行攻击?
  2.攻击者如何使用这个破解工具进入并控制了系统?
  3.当攻击者获得系统的访问权后做了什么?
  4.我们如何防止这样的攻击?
  5.你觉得攻击者是否警觉了他的目标是一台蜜罐主机?如果是,为什么?

(1)在kali上输入命令sudo wireshark snort-0204@0117.log打开从云班课上下载的.log文件

(2)以ip.addr == 172.16.1.106为过滤条件,可以发现有很多http包,接下来使用wireshark自带的统计工具,点击Statics->http->请求,得到如下图:

从这个统计图可以看到。那个突出的一部分应该就是这次的攻击下载的一些文件。

(3)接下来一步步分析,在wireshark中以ip.addr == 172.16.1.106 && http为过滤条件,前边一些http包是攻击主机213.116.251.162首先访问了,蜜罐172.16.1.106上的http://lab.wiretrip.net/这个网页,如下图:

接下来看到编号为117的这一行有如下内容:
/guest/default.asp/..%C0%AF../..%C0%AF../..%C0%AF../boot.ini

查看老师给的文件知道,boot.ini是NT系统的启动文件,%C0%AF是"/"的Unicode编码,说明攻击者成功进行了Unicode攻击以打开NT系统启动文件boot.ini。而IIS4.0和5.0存在着Unicode漏洞。

(4)接着往下看,我们可以看到攻击者试图向服务器获取一个msadcs.dll文件,确定其存在后,开始进行攻击。

(5)攻击者通过msadcs.dll存在RDS漏洞,输入数据查询语句进行SQL注入攻击。根据“ADM!ROX!YOUR!WORLD”特征字符串,以及在查询语句中使用了mdb。我们可以通过谷歌查询到它是通过rain forest puppy编写的msadc(2).pl渗透攻击代码发起的。

(6)接下来攻击者开始了一连串的攻击动作,创建ftpcom脚本,建立ftp连接

然后follow tcp stream,看到如下结果:

可以看到成功下载文件

(7)然后攻击者连接6969端口,获得了访问权限

(8)然后从1369编号开始,攻击机发起了多次SQL注入攻击

(9)接下来在编号2339追踪http流,我们可以看到,根据add,应该是想提升权限。

(10)防止这样的攻击:及时更新系统,为漏洞打上补丁

(11)攻击者应该是警觉到了这是个蜜罐。

实践三:团队对抗实践: Windows 系统远程渗透攻击与分析。

  攻防对抗实践内容:攻击方Metasploit Windows Attack,防御方: wireshark 捕获攻击流,分析出攻击哪个安全漏洞,从官方网站上下载该安全漏洞补丁进行修补,给出攻防过程报告。
  攻击方:使用metasploit,选择metasploitable中的漏洞进行渗透攻击,获得控制权。
  防守方:使用tcpdump/wireshark/snort 监听获得网络攻击的数据包文件,并结合wireshark/snort分析攻击过程,获取攻击者IP地址、目标IP和端口、攻击发起时间、攻击利用漏洞、攻击使用shellcode,以及攻击成功之后在本地执行的命令输入等信息。
  团队共同合作完成渗透攻击与分析实验报告。

(1)选择攻击的漏洞为ms08_067漏洞,于是攻击过程跟实践一一样。
我们要做的就是在攻击机输入exploit之后,回车之前,利用wireshark实时监听经过网卡的数据包。由于靶机没有wireshark,所以选择用kali上的wireshark监听。
从下图可以看出攻击者ip地址,端口,靶机ip地址,端口,时间等信息。

(2)从上图中可以看到,一开始是TCP三次握手包,这是攻击机和靶机之间的建立连接过程。然后看到攻击机与靶机之间有很多SMB包,而MS08-067漏洞是通过MSRPC over SMB通道调用Server服务程序中的NetPathCanonicalize函数时触发的。所以据此可以推断出,是利用ms08_067漏洞攻击的

(3)接下来重复实践一的第(6)步,输入ipconfig,打开wireshark,查看刚刚捕获到的包

3.学习中遇到的问题及解决

  • 问题1:使用wireshark抓包时,选择网卡为any,抓不到数据包
  • 问题1解决方案:选择网卡为eth0,就能抓到了

4.实践总结

  通过这次实践,总算是有了黑客的一点感觉,同时也深深开始佩服那些黑客的专业能力,因为分析实践二太费劲了。。。另外也看到了电脑存在漏洞是多么可怕的一件事,所以一定要及时更新系统,及时打补丁。

参考资料

posted on 2020-04-15 17:15  20199317-程峥华  阅读(307)  评论(0编辑  收藏  举报

导航