教材学习总结
Windows操作系统的基本结构
- Windows操作系统内核的基本模块
- Windows执行体
- Windows内核体
- 设备驱动程序
- 硬件抽象层
- Windows窗口与图形界面接口内核实现代码
- Windows操作系统在用户态的代码模块
- 系统支持进程
- 环境子系统服务进程
- 服务进程
- 用户应用软件
- 核心子系统DLL
- Windows操作系统内核中的核心机制
- Windows进程和线程管理机制
- Windows内存管理机制
- Windows文件管理机制(NTFS)
- Windows注册表管理机制
- Windows的网络机制
结构图:
Windows操作系统的安全体系结构与机制
- Windows安全体系结构
Windows操作系统基于引用监控器模型来实现基本的对象安全模型。系统中所有主体对客体的访问都通过引用监控器作为中介,由引用监控器根据安全访问控制策略来进行授权访问,所有访问记录也都由引用监控器生成审计日志。
Windows操作系统实现基础的安全机制,其中最核心的是位于内核的SRM安全引用监控器,以及位于用户态的LSASS安全服务,它们与Winlogon/Netlogon及Eventlog等服务一起,实现了对主体用户的身份认证机制,对所有资源对象的访问控制机制,以及对访问的安全审计机制。
- Windows身份认证机制
Windows操作系统中以安全主体概念来包含所有进行系统资源访问请求的实体对象,有用户、用户组和计算机三大类,对于每个安全主体,以时间和空间上都全局唯一的SID安全标识符来进行标识。账户权限的根本作用就是限制这些账户内运行程序对系统资源对象的访问。
Windows系统中拥有一些内建账户,如拥有最高权限的本地Administrator账户,作为自动运行系统进程环境的SYSTEM/LocalSystem账户,具有相对极少权限的Guest匿名访问用户,以及IUSR_Machinename IIS服务的匿名网络访问账户等。而这些账户在黑客眼中,本地Administrator和SYSTEM账户拥有最高的权限,是他们攻击的终极目标。
Windows系统的内建用户组包括:本地最高权限用户组Administrators、具有单一方面系统权限的Account/Backup/Server/Print Operators等操作组、用于容纳服务账户的Network Service与Local Service用户组,以及所有用户账户所在的Users组等。 Windows用户账户的口令字经过加密处理之后被保存于SAM或者活动目录AD中,其中本地用户账户口令信息经过不可逆的128位随机密钥Hash加密后存储在SAM文件中,SAM存储于%systemroot%\system32\config\sam文件系统路径位置,并在注册表的HKEY_LOCAL MACHINE\SAM存有副本。
Windows域账户口令信息则保存在域控制器的活动目录AD中,加密方式与单机平台一致,存储文件系统位置是域控制器的%systemroot%\ntds\ntds.dit路径。
Windows支持本地身份认证和网络身份认证两种方式,分别对在本地系统登录和远程网络访问的主主体进行合法性验证。网络身份认证过程由LSASS服务的Netlogon模块主导完成。
Windows进程、GINA图形化登录窗口,与LSASS服务通过协作来完成本地身份认证过程。
- Windows授权与访问控制机制
Windows授权与访问控制机制是基于引用监控器模型,由内核中的SRM模块与用户态的LSASS服务共同来实施。在Windows服务器操作系统中,用户可以执行内建的whoami命令来查看当前用户的访问令牌信息。Windows对于系统中所有需保护的资源都抽象成对象,具体类型包括文件、目录、注册表键值、内核对象、同步对象、私有对象、管道、内存、通信接口等,而对每个对象会关联一个SD安全描述符。
windows远程安全攻防技术
1.包括远程口令猜解攻击、windows网络服务攻击,windows客户端和用户攻击。
2.生命周期:
- windows安全漏洞发现,利用与修补过程
- 安全漏洞公开披露信息库:CVE,NVD,SecyrityFocus,OSVDB
- 针对特定目标的渗透测试攻击过程:漏洞扫描测试、查找针对发现漏洞的渗透代码、实施渗透测试
- 使用metasploit软件实施渗透测试:用户接口(CLI、Console,web,GUI)
3.远程口令猜解攻击:
- 远程口令猜解:SMB协议(tcp445、tcp139),其他包括WMI服务、TS远程桌面终端服务,MY SQL数据库服务、SharePoint。工具包括:Legion、enum、smbgrind、NTScan、XScan、流光
- 远程口令字交换通信窃听与破解:NTLM、Lanman、NTLMV2和kerberos网络认证协议的弱点。
- 远程口令猜解的防范:关闭不必要的易受攻击的网络服务、配置主机防火墙来限制某些端口服务、网络防火墙限制这些服务的访问、禁用过时且有安全缺陷的Lanman和NTLM、指定强口令策略。
4.网络服务远程渗透攻击:针对NETBIOS服务的著名漏洞和攻击、针对SMB服务的著名漏洞和攻击、针对MSRPC服务的著名漏洞和攻击、针对windows系统上微软网络的远程渗透攻击、针对windows系统上第三方服务的远程渗透攻击。
防范措施:最基本的是尽量避免与消除这些渗透攻击所依赖的服务软件安全漏洞。
Windows本地安全攻防技术
- windows本地特权提升
受限用户权限尝试获得特权账户的攻击技术也被称为特权提升,业内简称为“提权”。Windows系统上进行特权提升的攻击途径主要是通过DLL注入和破解本地程序安全漏洞。
- windows敏感信息窃取
- Windows系统口令字密文提取技术
- Windows系统口令字破解技术
- 用户敏感数据窃取
- 本地敏感信息窃取
- windows消踪灭迹
- 关闭审计功能
- 清理事件日志
- 针对消踪灭迹的防范措施
- windows远程控制与后门程序
- 命令行远程控制工具
- 图形化远程控制工具
- 针对后门程序的防范措施
视频学习总结
漏洞利用之检索与利用
searchsploit可以借助关键词搜索漏洞信息以及漏洞对应的exp。
searchsploit wordpress列出了漏洞和文件地址。
漏洞利用之Metasploit基础
Metasploitable在渗透测试中经常被用到,实际上这套软件包括了很多工具,这些工具组成了一个完整的攻击框架。
先使用命令service postgresql start开启PostgreSQL数据库服务,然后使用msfconsole开启metasploit服务。
测试,首先使用nmap扫描目标主机开启的服务,这里选择21号端口作为攻击目标:
使用search命令查找该服务对应的攻击文件:
选择一个攻击文件用use命令启动:
使用show options
查看帮助,设置是需要设置的选项,这里设置主机监听端口和目标地址IP:
设置payload:
可以使用msfpayload生成payload或者shellcode,也可以使用预制的payload。
搜索的时候可以用msfpayload -l |grep "windows"这样的命令查询。-o 选项可以列出payload所需的参数。
漏洞利用之Meterpreter介绍
Meterpreter是metasploit框架中的一个扩展模块,作为溢出成功以后的攻击载荷使用,攻击载荷在溢出攻击成功以后绐我们返回一个控制通道。使用它作为攻击载荷能够获得目标系统的—个meterpretershell的链接。
打开MSF,开启监听(选择exploit/multi/handler)。
在指定目录,生成exe后门:
现在可以将生成的exe文件保存到目标主机开始攻击。
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:
漏洞利用之BeeF
在Kali下,BeeF是一个不逊色于XSS平台的工具。Beef是浏览器攻击框架的简称,是一款专注于浏览器端的渗透测试工具。官网http://beefproject.com/
命令行下启动Beef:
输入用户名和密码登录:
主界面:
我们假设被测试主机由于XSS漏洞请求到页面http://127.0.0.1:3000/demod/basic.html,这是一个测试页面,如果通过XSS把该页面加入页面请求中,也就是说每个访问某个页面的人都会访问该页面,则访问者就会被BeEF hook 到,即加入到 Online Browsers中。
可以查看详细信息:
HOOK持续的时间为关闭测试页面为止,在此期间,相当于被控制了,可以发送攻击命令(js代码)。
我们以MISC下的Raw JavaScript模块为例进行测试,右端输入 Javascript code 给目标弹出窗口,点击Excute进行攻击。
被攻击方显示如下:
BeFF还有Proxy功能,右键目标主机:
来到如下界面:
点击send,在history中可以查看历史:
以上就是依赖目标做一个代理,然后请求一个特定页面的过程。BeEF还能够配合Metasploit进一步渗透主机。BeEF 默认不加载 Metasploit,如果要使用 Metasploit 丰富的攻击模块,需要做以下配置:
- 进入目录/usr/share/beef-xss/,修改 config.yaml 文件,将metasploit设置为true。
- 进入目录/usr/share/beef-xss/extensions/metasploit,修改 config.yaml 文件,host和callback_host设置成本机IP地址,然后再修改Custom路径即可。
- 打开msfconsole,输入命令load msgrpc ServerHost=192.168.199.162 Pass=abc123
- 进入目录/usr/share/beef-xss/,执行./beef -x命令,重新加载metasploit模块。
- service beef-xss start命令重启服务,然后重新登陆 BeEF,metasploit下增加了很多可以使用的模块,现在就可以使用metasploit的模块进行攻击了。
教材实践内容
课上已完成
Black Hat Python3 chapter 6、9
第六章代码用到的Jyphon包不支持python3版本,因此本次代码均使用书中原版代码(小幅修改)。
模糊测试
首先配置好jyphon包的路径,之后将bhp_fuzz.py文件加入到工具:
模拟运行结果如下:
BING API 反查域名
成功添加该工具:
运行结果:
可以看到并没有查询得到结果。首先bing search API的网址已经变了,现在网址为:https://api.cognitive.microsoft.com/bing/v7.0/。
其次,新版的API已经取消了该搜索功能(至少我是没找到,在bing搜索中按照IP:XXX.XXX.XXX.XXX的方式也得不到有效结果,结果为Ref A: 2EBF0909B997498C843D95CDC73B2946 Ref B: BJ1EDGE0307 Ref C: 2019-04-12T01:19:46Z
),因此通过本扩展实现反查域名已经不可行了。需要另求它法。
生成字典
首先由host地址发现拓扑结构:
生成字典:
结果如下:
好兄弟IE
IE浏览器是目前市场占有率最高的浏览器,为了在ie浏览器完成此实验,不得不重装一个win7虚拟机进行此实验。此部分代码使用python3重写。
书中让我观察浏览器是否有难以理解的动作,确实有,当我进入程序中target_site中的登录界面后,或者我本身就在登录状态,浏览器会不停的刷新回输入账户的界面···
实际上是try部分转为python3后出错了,没有错误提示,改正后运行结果如下:
html标签中没有id怎么办
本代码要求比较复杂,首先需要使用keygen.py生成RSA公私钥对,然后使用ie_exfil.py将明文文件名加密后在目标网站以标题的形式发出,之后还可以用decryptor.py解密。
在修改过程中其他的不谈,原程序使用win32com这个包来进行浏览器操作,对于目标网站来说存在以下几个问题:
- win32com使用id来寻找网页中的标签,但是目标网站中我们需要插入数据的地方没有id
- win32com在插入数据时使用setAttribute来进行修改,问题在于从网页返回的实例中难以获得有哪些attribute,多次使用dir()命令也没有得到什么有效信息
因此在我的视角中使用书中的win32com包来完成这项工作几乎是不可能的。
因此我用selenium包重写了这个程序,在程序链接中命名为ie_exfil_new.py。更换工具包后一切都变得简单了起来,运行结果如下:
仍需要注意的是,selenium操作浏览器需要下载对应浏览器的驱动文件,在64位的iedriver中存在bug,在想IE11浏览器中输入英文字母和数字时会非常缓慢,大约5s才能输入一个字符。
据悉对IE浏览器进行降级或者换用32位的驱动可以解决这个问题,但是我将IE11降级为IE10后依然存在这个问题,也有可能是iedriver和selenium版本不匹配的问题?我只是单纯的下载了最新版没有注意版本是否对应。不过具体怎样其实也不重要了,因为selenium只要有对应浏览器的驱动,可以操作任何浏览器,谁还会去用集万千缺点于一身的IE呢?