代码改变世界

20169201 2016-2017-2 《网络攻防实践》第七周学习总结

2017-04-14 20:38  melay  阅读(204)  评论(2编辑  收藏  举报

教材学习内容总结

windows基本框架

Windows操作系统分为运行于处理器特权模式(ring 0)的操作系统内核,以及运行在处理器非特权模式(ring 3)的用户空间代码。采用宏内核(monolithic)模式进行架构。
内核基本模块分为:Windows执行体 、Windows内核体 、设备驱动程序 、硬件抽象层 、Windows窗口与图形界面内核实现代码 、系统支持进程 、 环境子系统服务进程 、服务进程 、用户应用条件 、核心子系统DLL 。
Windows将进程视作可执行程序运行时刻的容器,而线程是指令执行的具体载体。
Windows的虚拟内存空间分为系统核心内存区间与用户内存区间两部分。在32位的Windows系统中,2GB4GB区间为系统核心内存,0GB2GB区间为用户态内存。
Windows早期使用FAT文件分配表格式来管理文件系统,现在使用NTFS文件系统,较之前更加安全,具有更高的性能、可靠性和资源利用率。Windows可执行文件采用PE格式。
Windows系统注册表在作为系统全局配置、用户和应用软件配置信息的存储仓库,在Windows系统配置和控制方面承担着关键角色。可通过自带的 regedit.exe 注册表查找编辑工具或其他第三方工具进行访问与修改,可使用 RegMon 等工具进行监控。
Windows的网络组件模块根据OSI网络模型可分为:

  • 物理层:各种网卡硬件的设备驱动程序;
  • 链路层:NDIS库及miniport驱动程序;
  • 网络层与传输层:TDI传输层,实现了TCP/IP等协议栈;
  • 会话层与表示层:网络API DLL 及 TDI 客户端;
  • 应用层:网络应用程序与服务进程。

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授权与访问控制机制
    基于引用监控器模型,由内核中的SRM模块与用户态的LSASS服务共同实施,由SRM作为安全主体访问对象资源时的中介,根据设定的访问控制列表进行授权访问。在用户等安全主体经过认证后,Windows系统会赋予用户一个访问令牌。Windows对于系统中所有需保护的资源都抽象成对象。

  • Windows安全审计机制
    系统审计策略在本地安全策略中由系统管理员来定义,来确定系统对哪些事件进行记录。

  • Windows的其他安全机制
    以上的身份认证、授权与访问控制及安全审计是三个基本安全功能特性,其他的还包括Windows安全中心、IPsec加密与验证机制等。

Windows系统的安全漏洞生命周期

  • Windows安全漏洞发现、利用与修补过程
  • 安全漏洞公开披露信息库
  • 针对特定目标的渗透测试攻击过程
  • 使用Metasploit软件实施渗透测试
    在安全漏洞当中,对攻击者最具价值的是远程渗透攻击可利用、后果为远程执行代码的高危型漏洞,或本地渗透攻击可利用、后果为本地特权提升的高危型漏洞,这二者相结合可以造成严重的安全问题。各大厂商在针对安全漏洞,也会作出相应的补丁修复。有许多安全漏洞公开披露信息库,如:CVE、NVD、SecurityFocus、OSVDB等以供查询参考。这对一个特定主机,典型渗透攻击过程包括漏洞扫描测试、查找针对发现漏洞的渗透代码、实施渗透测试。典型工具是 Metasploit工具,在后面实践当中会详细介绍。

Windows远程口令猜测与破解攻击

  • 远程口令自猜测
  • 远程口令字交换通信窃听与破解
  • 远程口令猜测与破解防范措施
    Windows通过基于服务器消息块SMB协议承载的文件与打印机共享服务来为网络用户提供远程访问文件系统和打印机的支持,因而它也就成为攻击者实施Windows远程口令字猜测的传统攻击渠道。还有一种实施远程口令字攻击的经典技术是窃听网络上的口令字交换通信实施破解。Windows的在不同版本在进行网络身份认证时,使用了LanMan、NTLM和Kerberos三种认证协议。
    这对这些攻击,最根本的防御措施还是使用高安全强度口令,尽量关闭不必要的易受远程口令猜测攻击网络服务,配置主机防火墙来限制对端口服务,利用网络防火墙限制这些服务的访问,禁用过时且存在本质缺陷的LanMan与NTLM,仅使用经过安全加固NTLMv2与Kerberos认证协议,对于安全级别较高的Windows系统服务器等主机,管理员可以制定和实施强口令字策略及设定账户锁定阈值。

Windows网络服务远程渗透攻击

  • 针对NetBIOS网络服务的著名漏洞及攻击
  • 针对SMB网络服务的著名漏洞及攻击
  • 针对MSRPC网络服务的著名漏洞及攻击
  • 针对Windows系统上微软网络服务的远程渗透攻击
  • 针对Windows系统上第三方网络服务的远程渗透攻击
    主要针对Windows系统默认开放的诸如135(TCP)、137(UDP)等端口进行渗透,针对NetBios网络服务、SMB网络服务、MSRPC网络服务进行攻击,还有针对微软网络服务及第三方网络服务进行远程攻击。防范措施包括:从软件设计根源上尽可能减少漏洞出现,管理员尽可能快的更新与应用软件安全补丁,在“零日”漏洞时间管理员应作出相应的防范,利用服务厂商及社区中的安全核对清单对服务进行配置并利用一些安全增强插件来加固所部署的网络服务,通过漏洞扫描软件来标识网络中已经存在的安全漏洞并及时修补,启用入侵检测机制,建立有效的事件应急相应计划。

Window本地安全攻防技术

  • Windows本地特权提升
  • Windows敏感信息窃取: Windows系统口令字密文提取技术、Windows系统口令字破解技术、用户敏感数据窃取、本地敏感信息窃取防范措施
  • Windows消踪灭迹: 关闭审计功能、清理事件日志
    利用之前的技术获得Windows系统的访问权后,接下来的攻击主要包括本地特权提升、敏感信息窃取、消踪灭迹、远程控制与后门程序。提权主要利用DLL注入和破解本地程序安全漏洞实现,工具有GetAdmin及Metasploit。敏感信息获取主要包括系统口令字密文提取、系统口令字破解及用户敏感数据窃取。消踪灭迹主要包括关闭审计功能和清理事件日志。远程控制与后门程序可通过各种现成的黑客工具利用命令行或是图形化界面实现。可针对各个不同的攻击手段采取相应的防范措施。

视频学习

第26节:漏洞利用之检索与利用

漏洞检索

  • searchsploit
    借助关键词搜索出漏洞信息

  • exploit-database
    每段时间都会更新,分类目录

漏洞开发工具

  • pattern create

第27节:漏洞利用之Metasploit基础

Kali下使用Metasploit,需要开启PostgreSQL数据库和metasploit服务,然后就可以完整的利用msf数据库查询exploit和记录。

msf的路径为/user/share/metasploit-framework


msfconsole:开启metasploit的console

  • 测试实例

第28节:漏洞利用之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

攻击步骤:

  • 生成Meterpreter后门
  • 打开MSF,开启监听,选择exploit/multi/handler
  • 在目标机器上执行door.exe
  • 通过help命令查看可执行的命令
  • 常见命令使用,包括系统信息,抓取屏幕截图与抓取HASH等。
  • 目录浏览
  • 键盘监听
  • 扩展工具,load/use之后再输入help,就可以了看到有关这个模块的命令的说明了
  • 扩展工具之Minikatz,抓取本地密码明文

第29节:漏洞利用之Metasploit后渗透测试

在跳板机获取一定权限后,需要积极地向内网主机权限发展,获取指定的目标信息,探查系统的漏洞,借助Msf已经得到的Meterpreter后门,可以使后续操作更容易。

  • 查看当前网卡、网段信息
  • 添加路由表 run autoroute -s 10.0.0.1
  • 开Socks代理 通过使用 auxiliary/sever/socks4a模块,创建一个Socks代理,可以作为浏览器,Sqlmp,Namp等使用。
  • 通过Background和sessions -i可以自由切换进入Session
  • 输入run可以看到Meterpreter上可以做的很多命令
  • 获取内网信息run arp_scanner -r 10.0.0.1/24
  • 也可上传文件,做端口转发后续测试
  • 应用程序/权限维持/Tunnel工具集
  • 端口转发 upload lcx.exe c:\

第30节:漏洞利用之BeeF

BeEF是浏览器攻击框架的简称,是一款专注于浏览器端的渗透测试工具,官网:http://beefproject.com/
打开beef,需命令beef-xss(登录用户名和密码都为beef)默认打开浏览器,并跳转到http://127.0.0.1:3000/ui/authentication

进入用于测试的页面http://127.0.0.1:3000/demos/basic.html。

HOOK持续的时间为关闭测试页面为止,再次期间,相当于被控制了,可以发送攻击命令,在Command中可以完成很多任务:

测试示例

选取简单的工具就可以使目标主机,测试页面弹窗:

proxy功能

选中目标主机,点右键,在菜单中选中Use as Proxy;然后在Rider选项卡中的Forge Request编辑并发送
想要发送的内容。

BeEF加载Metasploit模块

  • 更改配置文件,使metasploit可用
  • 更改一个配置文件里的ip和路径
  • 打开msfconsole,使用命令load msgrpc ServerHost=192.168.186.132 Pass=abc123
  • 进入目录/usr/share/beef-xss执行./beef -x
  • 重启beef服务service beef-xss restart,再次打开页面登录,发现commands里Metasploit模块已经加载

遇到的问题

1.开启Metasploit服务失败?

  • 解决方案:

学习进度条
Kali视频第26-30节
教材学习第七章:Windows操作系统安全攻防

参考资料
《网络攻防技术与实践》(诸葛建伟编著)