Enzo Li @ eynzof.com

网络安全测试实验室

2019.08.29

第一章 搭建硬件及软件的测试平台


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文件,你会看到类似这样的东西。

各项以冒号分隔,从左到右分别是:

  1. 用户名
  2. 加密后的密码,通常以这种形式存储: ididsalt$hashed, $id 指的是加密算法,salt值用于混杂散列后的密文,进一步提升安全性。 1 is MD5 2a is Blowfish 2y is Blowfish 5 is SHA-256 6 is SHA-512
  3. 上次更改密码的时间: 按天计数,比如13064就是距离1970年1月1日13064天。
  4. 两次更改密码的最短间隔: 0为不限制,如果是n,意为每隔n天可以修改密码。
  5. 两次更改密码的最长间隔: 0为不限制,如果是n,意为每隔n天强制要求修改密码。
  6. 提醒修改密码的间隔: 0为不限制,如果是n,意为n天以后提醒用户修改密码。
  7. 密码过期后多少天销毁账户
  8. 账户过期时间: 按天计数,自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 页面,用于介绍公司的情况。这可能包括财报,控股情况,人员配置,物理地址等。

垃圾搜寻 得到受害者的物理地址以后,搜索受害者的生活垃圾来取得信息。

驾驶攻击 得到受害者的物理地址以后,攻击附近的无线接入点。