奇犽 发表于 2019-3-29 15:18:15

web安全测试概述

一、关于安全

1、安全问题的根源:

1)、分层思想,这个分层包括网络分层和软件分层等,分层可以将大的问题划分为不同的层次,层次与层次之间通过一定的接口标准进行信息交换,从而将一个大问题拆分开来由不同层次的模块去实现扩展。

· 从功能实现的角度看,分层是很方便高效的。

· 从系统安全的角度看,不同层次由不同的人去负责,每个人的眼光具有局限性,无法意识到其他层次的安全问题。

· 系统安全要保证完全的安全,任何一点的漏洞都有可能导致系统崩溃,所以要全面地考虑系统安全。

2)、只追求功能的实现,很多技术人员只追求功能的实现而不从安全的角度设计架构软件。

3)、最大的安全威胁是人,只要有人,就会或多或少出现纰漏,让不法分子有机可乘。

2、安全目标:安全人员在保护系统安全时要实现的目标。

1)、先于×××者发现和防止漏洞出现:

· ×××型安全:用×××的手段(×××测试)探测系统的漏洞,再去修补他。

· 防护型安全:将不必要的端口关闭,将系统的×××面降到最低。但这样周期长,投入多,效果不好,因为总有没有防护到的地方。

2)、在保护系统安全时要充分从×××型安全和防护型安全的角度去考虑。

二、×××测试

1、用×××的手段*系统,尝试绕过或打败安全防御机制,发现系统的弱点。

2、×××测试者应不断证明安全问题的存在,不能去破坏系统。

3、×××测试者就是白帽子,白帽子和黑帽子拥有相同的技能,只是用的地方不一样,一个用于守护,一个用于破坏。

· ×××测试和×××的区别在于是否取得目标公司的授权。

4、×××测试标准:简称PETS

1)、前期交互阶段:和客户进行前期沟通。

· 确定×××测试的范围:将大系统划分为一个个子系统(包括系统内所有的设备系统软件)分别去×××测试。

· 确定测试方式:现场测试,远程测试,是否使用社会工程学的手段配合,是否进行直接的DDoS×××型的测试。

· 确定×××投入:花费多少时间,人力。

2)、情报搜集阶段:对目标系统进行信息搜集。

· 被动信息搜集(不与目标系统进行直接交互):邮箱地址,联系人,公司地址,DNS信息,服务器的IP,网站的域名,近期公司动态等。

· 主动信息搜集(对目标系统进行主动探测):主机发现,端口发现,服务发现等。

· 通过搜索引擎和扫描进行情报收集。

3)、威胁建模阶段:通过前期的情报搜集已经对系统有了大概的认识,然后分析情报选取效率最高(用时最短,威胁最大)的手段进行×××测试。

4)、漏洞分析阶段:根据情报分析漏洞。

· 目标服务器版本是否过低,是否有已经公开的漏洞。

· 对一些组件进行逆向分析,发现0day,编写具有针对性的×××脚本。

5)、××××××阶段:漏洞分析完毕后,对漏洞进行××××××,这时候会遇到各种安全防护机制,要想办法绕过防护机制,进入系统拿到权限。

6)、后×××测试阶段:拿到一台服务器的权限后,要继续利用这台服务器向内网×××,想办法控制更多的服务器造成更大的威胁。

7)、×××测试报告:×××人员将漏洞的发现利用到控制整个服务器的过程记录成报告,并附上漏洞的修补方法,提交给目标公司的领导层。

5、×××测试误区:扫描器就是一切。

· 扫描器只能找到技术型的漏洞,对于业务逻辑漏洞无能为力,业务逻辑漏洞需要×××测试人员根据公司的业务逻辑寻找。

Kali linux概述

一、关于kali linux

1、Kali的缘由:

image.png

2、kali linux介绍:

1)、基于Debian的Linux发行版本。

2)、前身是BackTrack(最后更新版本是5.23,之后停止更新),2013年3月发布。

3)、用于×××测试和安全审计。

4)、包含600+安全工具(将之分类,包含×××测试,逆向工程,电子取证等工具)。

5)、采用FHS标准的目录结构(所有linux系统都采用的目录结构,这也是kali取代BT的重要原因)。

6)、定制内核(定制的无线驱动的内核,方便进行无线×××)。

7)、支持ARM和手机平台(有ARM和手机平台的版本,可以在上面安装kali linux)。

8)、开源免费(由一个×××型安全组织Offensive Security Ltd进行开源维护)。

3、kali linux策略:

1)、root用户策略:其他linux平台一般遵循权限最低原则,平常使用普通用户工作,必要时才登陆root用户。但是kali中的安全工具大部分都需要root权限才能使用,而且kali linux使用者要有能力放心的使用root用户,所以一般使用root用户工作。

2)、网络服务策略:kali中的所有网络服务默认关闭,也无自动启动脚本,重启后需要手动开启。

· 如果想要自启动某服务,可以使用命令设置。

3)、更新升级策略:kali是基于debian的再开发,debian的所有更新都会同步到kali上。同时安全工具的更新也会同步到kali上。

4、关于本课程:

image.png

Kali linux安装

一、硬盘安装

1、下载iso安装镜像文件。

· mini版本是最小化版本的kali安装镜像,里面不包含任何安全工具,需要自己安装。

2、验证hash值:排除下载过程中造成的文件损失导致的故障。

· 计算方法:下载一个计算文件sha256sum的工具,再计算iso文件的sha256sum值,将之与官网上给出的sha256sum值比对,相同则下载无损。

image.png

3、制作启动光盘或启动U盘:

1)、制作启动光盘:需要光盘刻录机和光盘介质。

2)、制作启动U盘:使用unetbootin软件将iso文件抽取拷贝到U盘中(U盘应大于4G)。

4、设置BIOS启动顺序:重启电脑设置BIOS启动顺序,让电脑通过U盘启动。

5、启动安装:设置好BIOS启动顺序后,电脑会进入kali linux的安装界面。

image.png

1)、Live(amd64):电脑启动U盘中的系统,不安装。这种属于体验模式(U盘只读),不能安装软件包,也不能升级更新操作系统。

2)、Live(amd64 failsafe):

3)、Live(forensic mode):启动取证模式,可以进行计算机犯罪或电子取证的操作。

4)、Live USB Persistence:启动持久USB中的Live光盘,对U盘内的操作系统可读可写。

5)、Live USB Encrypted Persistence:启动持久加密USB中的Live光盘,对U盘内的操作系统可读可写且操作加密。

· 4、5相当于拥有了一个移动的kali linux操作系统,不需要安装,即插即用。

6)、Install:命令行安装kali。

7)、Graphical install:图形化安装kali。

二、Docker安装

1、在官网上下载一个docker的image文件,再在上面开启容器运行。

image.png

· 可以远程连上Docker,进入里面的容器。

三、基于virtualbox的虚拟机安装

1、下载virtualbox及其扩展功能包,并在全局设定中导入扩展包。

2、创建虚拟机:

1)、新建虚拟电脑。

image.png

2)、设置内存大小,根据自己内存的情况设置,在此设置4096MB内存。

3)、现在创建虚拟硬盘。

4)、设置虚拟硬盘文件类型为VDI。(如果以后要将虚拟硬盘文件用vm虚拟机启动,虚拟硬盘文件类型选择vmdk)

5)、动态分配空间。

6)、设置虚拟硬盘文件的位置和大小,100GB。

7)、虚拟机创建成功。

3、设置虚拟机:

1)、设置核数。

2)、虚拟机不用启用声音。

3)、启用网卡的网络连接,连接方式为NAT模式。

4)、为虚拟机插入iso镜像文件。

image.png

4、启动虚拟机。

5、图形化界面安装kali linux:

1)、设置语言(汉语 or 英语)。

2)、设置主机名(MyKali)。

3)、设置域名(跳过)。

4)、设置root密码(000000)。

5)、磁盘分区:使用整个磁盘——>将/home、/var、/tmp都分别放在单独的分区——>将改动写入磁盘。

6)、安装系统。

7)、更新软件包。

8)、将GRUB启动引导安装到硬盘的MBR上。

6、安装tools(安装虚拟机增强功能):

1)、需要先安装linux内核的头文件,apt-get install linux-headers-$(uname -r)

2)、将光盘中的VBoxLinuxAdditions.run移到桌面,在桌面打开terminal,赋予这个文件执行权限(chmod +x file),再执行该文件(./file)。

3)、安装成功,重启系统。

7、注意:

1)、如果觉得手动安装系统麻烦,可以下载官网配好的虚拟硬盘文件,用VMware虚拟机的硬盘文件在virtualbox中创建虚拟机:创建虚拟硬盘文件时选择使用已有的虚拟硬盘文件——>选择下载的虚拟硬盘文件中的第一个。这样即可直接进入配置好了的kali linux系统,默认root密码是toor。

2)、apt-get update:下载系统中所有软件包最新版本的索引文件,下载好后再用apt-get upgrade将软件包根据索引文件进行升级。

3)、dmesg:查看系统变化。

四、持久加密USB的方式使用kali

1、Live USB Encrypted Persistence这种模式下启动kali要输入保护密码,U盘相当于是一个移动kali linux系统,可读可写,并且写的内容是加密的。

· 将U盘的其余空间进行磁盘级别的加密,并将系统文件目录都转移到加密空间中,且之后对系统的更改都会写入到加密空间中。

· LUKS(linux unifield key setup):Linux磁盘分区加密规范,以前不同的软件开发者对磁盘加密有各自的算法,彼此不兼容,国际标准组织将磁盘加密技术做了一个规范,实现了Linux中磁盘磁盘加密技术的统一。(windows系统也可使用LUKS进行磁盘加密,但是想要查看加密磁盘需要下载DoxBox)

· LUKS进行Linux的磁盘加密是通过dm-crypt和cryptsetup实现的:dm-crypt是后端组件,用于加密解密磁盘数据。cryptsetup是前端组件,是一个命令行工具,用于发出对磁盘进行加密解密的指令。

· 加密技术有文件级别的加密和磁盘级别的加密:

文件级别的加密只是基于操作系统对文件进行加密,可以将文件从磁盘中读出来或取得系统的管理员权限从而打开文件。

磁盘级别的加密会对磁盘中的数据进行加密,要想查看得要有证书或秘钥,更安全。(windows的磁盘加密软件bitlocker)

2、linux系统下制作启动U盘:

1)、将插入的U盘映射到虚拟机中。

2)、将kali linux中的iso文件用unetbootin抽取拷贝到U盘中。

3)、或者使用块复制将iso文件抽取拷贝到U盘中:先卸载删除U盘中的分区(使用工具GParted),再将iso文件抽取拷贝到U盘(dd if=kali-linux-2018.2-amd64.iso of=/dev/sdb bs=1M)。

· if指定输入文件,of指定输出文件,bs指定一次复制的块的大小。

· dd复制iso文件看不到进度,使用命令:watch -n 5 killall -USR1 dd,每五秒输出一次dd复制的进度。

3、为U盘创建额外分区,使用LUKS加密分区,打开并格式化加密分区并设置卷标,挂载加密分区,添加配置文件persistence.conf。

· 创建额外分区使用工具parted:

· print devices:查看现在系统中插入的设备情况。

· select /dev/sdb:选中设备,对其分区。

· print:查看当前设备分区情况。

· mkpart primary 3063(起始位置) 7063(终止位置):给设备新建了一个约4G的主分区。

· 使用LUKS加密分区:

· cryptsetup –verbose –verify-passphrase luksFormat /dev/sdb3:对设备的第三分区进行磁盘加密。

· 输入磁盘加密的保护密码。

· 格式化加密分区并设置卷标:

· cryptsetup luksOpen /dev/sdb3 usb:打开加密分区,将他挂载到/dev/mapper/usb目录下,要输入保护密码。

· mkfs.ext4 /dev/mapper/usb:对加密分区进行格式化。

· e2label /dev/mapper/usb persistence:为加密分区设置卷标,卷标名为persistence。

· 挂载加密分区:

· mount /dev/mapper/usb /mnt/usb/:将设备挂载到/mnt/usb目录下,linux访问一个设备要将其挂载到一个目录中,访问这个目录就是在访问这个设备。

· 添加配置文件:

· echo “/ union” > /mnt/usb/persistence.conf:这个配置文件将在usb以持久加密模式启动系统时被读取,以确认这个分区就是要存放加密信息的分区。

4、卸载设备,关闭加密分区:umount /dev/mapper/usb & cryptsetup luksClose /dev/mapper/usb。

5、U盘配置成功,以后可以用这个U盘打开持久加密的kali linux系统了。

页: [1]
查看完整版本: web安全测试概述