20199325 2019-2020-2 《网络攻防实践》第7周作业
一.学习总结
windows操作系统基本框架概述
这是整个windows的体系结构的总览。从图上可以看出系统被分成内核模式和用户模式。
内核模式的构成文件是系统的核心文件包含:
- hal.dll
- ntoskrnl.exe
- 设备驱动
- 文件系统驱动
- 图形设备驱动
- win32k.sys
1.首先来看第一层HAL(硬件抽象层)
HAL使得reactOS 内核可以运行在不同的x86母板上。HAL为内核抽象母板的特定代码也许是对不同母板定义一种抽象的接口,向上提供一种标准的接口调用,这样不同的母板就不需要改变内核,思想上有点像驱动程序的设计,不过用在另外一个地方。
2.ntoskrnl(内核)
内核又分成两层,第一层有的称为核心层(core)提供非常原始且基本的服务,如多处理器的同步、线程调度、中断分派等等。第二层是执行体(EXECUTIVE)内核执行体提供了系统的服务,这里的服务不是指windows服务管理器看到的那种服务,而是一些系统函数。而这些函数被划分成不同的类别:
具备虚拟存储的内存管理:采用分段和分页以及虚拟内存的方式管理内存的使用。
- 对象管理:采用面向对象的思想,用C来实现,在windows中一切资源都被抽象为对象。如文件对象,进程线程对象等。
- 进程线程管理:负责创建和终止进程、线程。
- 配置管理:负责管理注册表
- 安全引用监视:在本地计算机上执行安全策略,保护计算机的资源
- I/O管理:实现I/O的设备无关性,并负责把I/O请求分配给相应的设备驱动程序以进一步处理
- 即插即用管理器(PNP):确定设备应该由哪个驱动程序来支持并负责加载相应驱动。在启动时的枚举过程中,它收集每个设备所需要的硬件资源,并根据设备的需要来分配合适的硬件资源如I/O端口,IRQ,DMA通道之类,当系统中的设备发生变化时它负责向系统和应用程序发送通知消息。
- 电源管理:协调电源时间,通过合理的配置,使得CPU降低电源消耗
- 缓冲管理器:将最近使用过的数据留在CACHE中来提高系统的整体性能
- 本地过程调用(LPC)管理
3.设备驱动程序
设备驱动程序是核心态可加载模块(以.SYS为扩展名,存放在system32drivers),它们是I/O管理器和相关硬件设备的接口。设备驱动程序采用一种I/O管理所规定的接口标准来编写,因此可以被内核执行体的I/O管理单元调用来驱动硬件的工作。
4.文件系统驱动程序
文件系统驱动程序也是核心态可加载模块(以.SYS为扩展名system32drivers),文件系统其实是强加给存储硬件的一种文件存放规则。某类文件系统其实就是按照他的文件存取规则在存储器上组织文件的信息。比如FAT32 按照FAT32的存储规则来存放文件ext2又按照ext2的文件规则存放文件。
文件系统按照I/O管理的接口标准来实现一组存储规则,同时文件系统也可以将信息按照自己的存储方式请求I/O管理单元,让I/O管理单元通过这个设备的设备驱动程序将信息存放到该设备上。
这样的方式使得文件系统只负责存储规则的定义。而驱动程序去处理硬件的调度(比如如何移动磁头臂,采用什么调度算法等)而I/O管理仅仅是他们之间的协调员,至于如何协调,I/O管理向外定义了自己的标准。
5.图形设备驱动
这个设备有点独特,只有内核模式设备驱动也就是win32k.sys才能启动。图形设备驱动其实和其他的设备驱动程序我想也不会有太大的差别。不过有一点可以了解,那就是图形设备驱动是由win32k来驱动的,提供的也是硬件驱动。
6.win32k
这个东西应该是windows所说的win32子系统的内核部分(原生子系统,其他的子系统是可以分割的)win32k也被划分成两个部分,第一个是USER32,第二个是GDI32,ReactOS的win32K估计基本上都是通过wine移植过来的。
USER32:
包含了windows管理的操作吧,比如如何创建窗口,显示窗口,隐藏窗口,移动窗口排列窗口z轴,对拥有窗口的Z轴排序,Region(可视区域)操作,鼠标集中测试等。
GDI32:
包含图形设备的绘制操作(这些操作也可以叫服务),比如画点,画线,位图操作等,GDI会将一些复杂的绘图操作转变成简单的绘制请求发送给图形驱动程序(如果这个图形驱动程序不支持复杂绘制)还有就是一些设备无关的位图操作,有的可以保存在内存或文件,而如果将设备无关的位图输出的话就会被转换成设备相关的位图然后再输出。
Windows操作系统安全体系结构与机制
Windows安全体系结构主要分为三个层次,通用基础设施、安全基础设施和应用安全。
-
通用基础设施:此模块是操作系统的核心部分,主要为上层提供计算、通信和存储等基本服务。
-
安全基础设施:此模块包括系统安全服务的主要模块,为操作系统、应用程序和网络提供安全服务。包括以下模块:
- 安全硬件服务:Windows所支持的硬件安全服务,如USB Key以及Vista中引入的智能卡和可信计算模块(Trusted Computing Module, TPM)等。
- 密码服务:此模块主要为系统中其他模块提供加密解密、密钥管理等密码服务。包括公钥基础设施(PKI)和CryptoAPI、CNG密码模块。
- 认证:对用户身份进行鉴别,在此基础上给用户赋予不同的权限。
- 通信安全:此模块主要提供安全的网络、通讯服务,保护网络上传输数据的安全以及保证系统和服务免受非法用户的访问或攻击。主要包括IP安全协议(IPSec),安全套接字层(SSL)以及虚拟专用网络(VPN)。
- 安全存储:此模块在密码服务的基础上对文件系统进行加密,以防止数据的非法访问。
- 访问控制:在用户认证的基础上,给用户提供相应权限的服务,而防止非授权用户访问资源。
- 审计:通过日志的形式对系统中有关安全的活动进行记录、检查和审核。
- 安全管理:包括安全策略管理和安全补丁管理。在windows 7中微软引入了Action Center,从中可以对系统安全特性以及备份、更新等功能进行配置
Windows系统实现安全机制的基本手段有哪些
1.标识、鉴别及可信通路机制
用于保证只有合法用户才能以系统允许的方式存取系统中e69da5e6ba90e79fa5e9819331333332623337的资源。用户合法性检查和身份认证机制通常采用口令验证或物理鉴定(如磁卡或IC卡、数字签名、指纹识别、声音识别)的方式。而就口令验证来讲,系统必须采用将用户输入的口令和保存在系统中的口令相比较的方式,因此系统口令表应基于特定加密手段及存取控制机制来保证其保密性。此外,还必须保证用户与系统间交互特别是登陆过程的安全性和可信性。
2.自主访问控制与强制访问控制机制
访问控制是操作系统安全的核心内容和基本要求。当系统主体对客体进行访问时,应按照一定的机制判定访问请求和访问方式是否合法,进而决定是否支持访问请求和执行访问操作。通常包括自主访问控制和强制访问控制等两种方式,前者指主体(进程或用户)对客体(如文件、目录、特殊设备文件等)的访问权限只能由客体的属主或超级用户决定或更改;而后者则由专门的安全管理员按照一定的规则分别对系统中的主体和客体赋予相应的安全标记,且基于特定的强制访问规则来决定是否允许访问。
3.最小特权管理机制
特权是超越访问控制限制的能力,它和访问控制结合使用,提高了系统的灵活性。然而,简单的系统管理员或超级用户管理模式也带来了不安全的隐患,即一旦相应口令失窃,则后果不堪设想。因此,应引入最小特权管理机制,根据敏感操作类型进行特权细分及基于职责关联一组特权指令集,同时建立特权传递及计算机制,并保证任何企图超越强制访问控制和自主访问控制的特权任务,都必须通过特权机制的检查。
4.隐蔽通道分析处理机制
所谓隐蔽通道是指允许进程间以危害系统安全策略的方式传输信息的通信信道。根据共享资源性质的不同,其具体可分为存储隐蔽通道和时间隐蔽通道。鉴于隐蔽通道可能造成严重的信息泄漏,所以应当建立适当的隐蔽通道分析处理机制,以监测和识别可能的隐蔽通道,并予以消除、降低带宽或进行审计。
5.安全审计机制
安全审计是一种事后追查的安全机制,其主要目标是检测和判定非法用户对系统的渗透或入侵,识别误操作并记录进程基于特定安全级活动的详细情况。通常,安全审计机制应提供审计事件配置、审计记录分类及排序等附带功能。
二.实践过程
动手实践: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中打开msfconsole
首先先查询ms08_067这个漏洞,查看漏洞具体的情况,rank表示这个漏洞的效果程度,这个漏洞程度未great
可以看到该漏洞的target,即可使用的操作系统版本,也可以看到该漏洞的简介。
分别绑定可攻击荷载。要求是shell远程控制,所以设定shell的正向链接和反向连接。
反向链接通常用于被控端因防火墙受限、权限不足、端口被占用等情形。
举例:假设我们攻击了一台机器,打开了该机器的一个端口,攻击者在自己的机器去连接目标机器(目标ip:目标机器端口),这是比较常规的形式,我们叫做正向连接。远程桌面、web服务、ssh、telnet等等都是正向连接。那么什么情况下正向连接不能>用了呢?
有如下情况:
1.某客户机中了你的网马,但是它在局域网内,你直接连接不了。
2.目标机器的ip动态改变,你不能持续控制。
3.由于防火墙等限制,对方机器只能发送请求,不能接收请求。
4.对于病毒,木马,受害者什么时候能中招,对方的网络环境是什么样的,什么时候开关机等情况都是未知的,所以建立一个服务端让恶意程序主动连接,才是上策。
再设置一下攻击机的IP地址和靶机的IP地址,能够攻击。show payloads,显示所有能够使用的载荷,挑选我们想要使用的shell载荷。
能够看到已经可以控制到靶机了。
使用exploit执行
能够看到已经连接到win2k靶机当中,使用mkdir的shell命令,创建一个文件夹起名为个人学号。
打开win2k的c盘目录,可以看到已经创建了一个文件夹
取证分析实践:解码一次成功的NT系统破解攻击
任务:来自213.116.251.162的攻击者成功攻陷了一台由rfp部署的蜜罐主机172.16.1.106,(主机名为lab.wiretrip.net),分析数据为包含整个攻击过程的二进制文件,提取并分析攻击的全部过程
1.攻击者使用了什么破解工具进行攻击
2.攻击者如何使用这个破解工具进入并控制了系统
3.攻击者获得系统访问权限后做了什么
4.我们如何防止这样的攻击
5.你觉得攻击者是否警觉了他的目标是一台蜜罐主机?如果是,为什么?
实践过程如下:
首先利用wireshark打开.log文件,查看到整个网络包的流图。
查看第二次的http连接可以看到有%c0%之类的字符,可以看出是unicode编码,通过查看相应的tcp流,可以看到后续,这里只是通过请求打开了boot.in文件,查看NT当中的启动。
可以看到攻击者通过连接到靶机之后,使用cmd命令来控制靶机。
之后观察到会有两次msadc的调用,不过暂时不知道是什么。不过接下来在TCP流当中看到了ADM!ROX!YOUR!WORLD,很明显不是正常发送报文的文字。上网查询得知这是msadc(2).pl的攻击
攻击者首先创建了一个ftpcom脚本,并使用ftp连接freenet.nether.net(给出了用户名密码),尝试下载 samdump.dll、pdump.exe和nc.exe。
继续查看会话1791-80之后出现了ftp的连接,目标IP为204.42.253.18。通过追踪TCP流发现,这个连接由于口令错误导致连接失败。说明这次攻击是一个失败的攻击。
查看到在下载几个文件之后,攻击者在靶机的6969端口进入并控制靶机,所以接下来查看6969号端口就能看到攻击者获得权限后做了什么
攻击者获得系统访问权限后他做的事情可以通过追溯tcp流查看他所使用的shell命令,做了什么
如何防止这样的攻击:
1.禁用用不着的 RDS 等服务。
2.及时修补漏洞,对漏洞打上相应的补丁。
3.防火墙封禁网络内部服务器发起的连接。
攻击者发现了是蜜罐主机。因为在写入的时候写下如下字符
这是他见过最好的蜜罐主机写入rfp文件当中。说明他意识到了。
团队对抗实践:Windows系统远程渗透攻击和分析
攻击方使用metaploit选择漏洞进行渗透攻击,获得控制权。
防守方使用wireshark监听获得网络攻击的数据包,结合分析过程,获得攻击者IP地址、目的IP地址和端口、攻击发起时间、攻击利用漏洞、攻击使用的shellcode,以及本地执行的命令输入信息。
实践过程如下:
攻击过程主要是实践1当中的实践,使用msfconsole,利用漏洞连接靶机,使用shell命令控制靶机创建文件夹。
在攻击机输入exploit之后,获得靶机的shell。然后输入ipconfig,观察wireshark的反应。
在这里可以看到攻击者IP地址192.168.200.3、目的IP地址192.168.200.124和端口135号端口,135号端口真是windows当中rpc经常被攻击的端口、攻击发起时间2020年14:44分 April、攻击利用漏洞可以通过remoteActivation看到是Unicode漏洞攻击、攻击使用的shellcode是mkdir和ipconfig。
三.问题解决
最开始由kali连接win2k靶机连接不同,后来发现是上一次实验,将kali的防火墙设置为屏蔽其他所有的tcp报文
四.感想体会
https://blog.csdn.net/bcbobo21cn/article/details/51038994 Windows系统漏洞学习总结