第一章 搭建硬件及软件的测试平台 #
1.1 为什么要搭建网络实验室 #
1.2 硬件要求 #
1.2.2 虚拟化的相关知识 #
虚拟化的类型 #
在计算机技术中,虚拟化(Virtualization)是一种资源管理技术,是将计算机的各种实体资源(CPU、内存、磁盘空间、网络适配器等),予以抽象、转换后呈现出来并可供分割、组合为一个或多个计算机配置环境。由此,打破实体结构间的不可切割的障碍,使用户可以比原本的配置更好的方式来应用这些计算机硬件资源。这些资源的新虚拟部分是不受现有资源的架设方式,地域或物理配置所限制。一般所指的虚拟化资源包括计算能力和数据存储。 按照抽象程度分类
- 指令集架构级别的虚拟化(Instruction Set Architecture Level)如Bochs以及QEMU。
- 硬件抽象层级别的虚拟化(Hardware Abstraction Level)如VMware_ESXi、Hyper-V、Virtualbox。
- 操作系统级别的虚拟化(Operating System Level)如Docker、VPS以及KVM。
- 编程语言等级的虚拟化(Programming Language Level)如Java、.NET
- 库等级的虚拟化(Library Level)如Wine以及WSL
虚拟机的实现技术 #
虚拟机属于硬件抽象层的虚拟化,其实现依赖于虚拟化管理程序(Hypervisor),也叫做虚拟机监视器(VMM)。Hypervisor是一种在虚拟环境中的底层操作系统。它可以协调并分配服务器上包括磁盘和内存在内的所有物理设备。 按照Hypervisor的运行层次,可以把虚拟机技术分为第一类虚拟化技术Type-1和第二类虚拟化技术Type-2。
而如果按照实现方式分类,虚拟机技术可以分为这样几种:
完全虚拟化/可归类到第一类虚拟化 使用Hypervisor在底层硬件和虚拟系统之间建立抽象层,Hypervisor可以自动捕获CPU指令,为指令访问硬件充当中介。因此客户操作系统无需修改,所有软件都能在虚拟机中运行。 在完全虚拟化的环境下,Hypervisor直接运行在硬件上,充当主机操作系统,而由Hypervisor管理的虚拟服务器运行客户端操作系统。 例子: VMware ESXi
硬件(辅助)虚拟化/可归类到第二类虚拟化 软件利用硬件(主要是CPU)辅助处理敏感指令以实现完全虚拟化的功能,客户操作系统无需修改,
这种辅助技术由CPU的制造商提供,对于Intel处理器,这叫做Hyper-V,对于AMD处理器,这叫做AMD-V。 例子: VMware Workstation
准虚拟化/超虚拟化(paravirtualization) 为应用程序提供与底层硬件相似但不相同的软件接口,客户操作系统需要进行修改。例如Xen的半虚拟化模式。 准虚拟化技术的优点是性能高。经过准虚拟化处理的服务器可与Hypervisor协同工作,其响应能力几乎不亚于未经过虚拟化处理的服务器。它的客户操作系统(Guest OS)集成了虚拟化方面的代码。该方法无需重新编译或引起陷阱,因为操作系统自身能够与虚拟进程进行很好的协作。 例子: Xen
操作系统层虚拟化 将宿主操作系统的特定部分(操作系统内核)分割,形成彼此独立的实例,这种实例也被称为容器(container),虚拟引擎(Virtual Engine)或虚拟专用服务器(VPS Virtual Private Servers)。
这种技术的特点是,对于用户来说,使用时,感觉像是一台独立的物理服务器。而对于管理者来说,所有的虚拟服务器上使用单一、标准的操作系统,管理起来比异构环境要容易。
例子: OpenVZ
桌面虚拟 桌面虚拟化可以使得一个人拥有多个桌面环境,也可以把一个桌面环境供多人使用。另外,桌面虚拟化依托于服务器虚拟化。 Windows系统基于DOS系统,而DOS系统是单用户登录系统。 因此,家用的Windows版本不支持多用户同时使用,也不支持远程桌面。 但是Windows Server可以通过远程桌面来进行多用户操作。 我个人将远程桌面相关的系统看作是Windows实现多用户的方式。 例子: Microsoft Remote Desktop
1.3 软件要求 #
1.3.1 Linux基础知识 #
Linux基础命令
命令
描述
cd /
切换到根目录
cd ~
切换到用户目录
history
查看命令历史记录
ps
列出当前运行的进程和PID
pwd
查看当前目录
Ctrl + P
暂停程序
Ctrl + B
使程序在后台运行
https://www.geeksforgeeks.org/linux-commands/
Linux将用户密码储存在/etc/shadow文件中,只有root用户有权访问。
Shadow文件详解 如果你以root权限打开/etc/shadow文件,你会看到类似这样的东西。
各项以冒号分隔,从左到右分别是:
- 用户名
- 加密后的密码,通常以这种形式存储: idsalt$hashed, $id 指的是加密算法,salt值用于混杂散列后的密文,进一步提升安全性。 1 is MD5 2a is Blowfish 2y is Blowfish 5 is SHA-256 6 is SHA-512
- 上次更改密码的时间: 按天计数,比如13064就是距离1970年1月1日13064天。
- 两次更改密码的最短间隔: 0为不限制,如果是n,意为每隔n天可以修改密码。
- 两次更改密码的最长间隔: 0为不限制,如果是n,意为每隔n天强制要求修改密码。
- 提醒修改密码的间隔: 0为不限制,如果是n,意为n天以后提醒用户修改密码。
- 密码过期后多少天销毁账户
- 账户过期时间: 按天计数,自1970年1月1日起。
1.3.2 软件和应用程序 #
1.3.3 学习软件 #
VulnHub: https://www.vulnhub.com Wechall: http://www.wechall.net Hacme Bank: 一个基于网络的银行系统,可以用于练习 https://github.com/o2platform/Demos_Files/tree/master/HacmeBank_v2.0 (7 Dec 08) Damn Vulnerable Linux: 一个古老的,包含诸多漏洞的系统 http://www.fantaghost.com/how-to-install-and-configure-foundstone-hacme-bank-on-windows-server-2003-r2
本书介绍的内容相当一部分已经过时(2008~)
1.3.3 黑客软件 #
http://sectools.org 列举了最热门的黑客工具。
- Wireshark 数据包嗅探
- Metasploit 漏洞攻击框架
- Nessus 漏洞评估
- AirCrack 无线攻击
- Cain&Abel https://www.cybrary.it/course/cain-abel-tutorial/
- Netcat 命令行隧道
- tcpdump 数据包嗅探
- John the Ripper 密码恢复
- Kismet 无线黑客工具
- Burp Suite 网络代理,网络应用测试器
- Nmap
- Foca
第二章 被动信息收集 #
2.1 从目标源入手 #
信息的最佳途径是目标公司的网站,大部分公司的页面都会包含一个 About 页面,用于介绍公司的情况。这可能包括财报,控股情况,人员配置,物理地址等。
垃圾搜寻 得到受害者的物理地址以后,搜索受害者的生活垃圾来取得信息。
驾驶攻击 得到受害者的物理地址以后,攻击附近的无线接入点。