1. 安全渗透概述
- 目标
- 了解渗透测试的基本概念
- 了解渗透测试从业人员的注意事项
1.1. 写在前面的话
在了解渗透测试之前,我们先看看,信息安全相关的法律是怎么样的
-
中华人民共和国网络安全法
-
《中华人民共和国网络安全法》由全国人民代表大会常务委员会于2016年11月7日发布, 自2017年6月1日起施行 。
-
中华人民共和国网络安全法 – 中国人大网官方版本
-
第四十四条 任何个人和组织不得窃取或者以其他非法方式获取个人信息,不得非法出售或者非法向他人提供个人信息。
-
第六十四条 第二款 违反本法第四十四条规定,窃取或者以其他非法方式获取、非法出售或者非法向他人提供个人信息,尚不构成犯罪的,由公安机关没收违法所得,并处违法所得一倍以上十倍以下罚款,没有违法所得的,处一百万元以下罚款。
-
-
《中华人民共和国刑法》
-
《中华人民共和国刑法(修订)》由1997年3月14日第八届全国人民代表大会第五次会议修订,1997年3月14日中华人民共和国主席令第八十三号公布, 自1997年10月1日起施行 。
-
《中华人民共和国刑法修正案(九)》由2015年8月29日第十二届全国人民代表大会常务委员会第十六次会议通过,自2015年11月1日起施行。(对285条,286条有修订)
-
第二百八十五条: 非法获取计算机信息系统数据罪, 非法获取计算机信息系统数据、非法控制计算机信息系统罪,是指违反国家规定,侵入国家事务、国防建设、尖端科学技术领域以外的计算机信息系统或者采用其他技术手段, 获取该计算机信息系统中存储、处理或者传输的数据 ,情节严重的行为。
-
第二百八十六条:破坏计算机信息系统罪,破坏计算机信息系统罪是指违反国家规定,对计算机信息系统功能或计算机信息系统中存储、处理或者传输的 数据和应用程序进行破坏 ,或者故意制作、传播计算机病毒等破坏性程序, 影响计算机系统正常运行 ,后果严重的行为。
-
1.2. 渗透测试介绍
渗透测试是一门技术,一门用来模拟黑客的攻击方法,对信息系统进行安全评估的测试技术
关于渗透测试(penetration test), 目前并没有一个标准的定义,国外一些安全组织达成共识的通用说法是:
渗透测试是通过模拟恶意黑客的攻击方式,用来评估计算机网络系统安全的一种评估手段 。
我们可以从如下几点进行理解:
- 渗透测试是一门技术
- 渗透测试是一门用来进行安全态势评估的测试技术t渗透测试这门工作包括善用渗透工具(利用现成的)、开发渗透测试程序(脚本)( 开发定制的 )等等。
- 由于是模拟恶意黑客的攻击方法, 所以渗透测试带有某种“破坏性”, 要注意风险规避
- 同样是模拟恶意黑客的攻击行为,往往充满了什么色彩
还有的定义给出:渗透测试(Penetration Testing)是一种通过模拟攻击者的技术与方法,挫败目标系统的安全控制措施并获得控制访问权的安全测试方法
- 如何规避法律风险
很简单,获取渗透测试主机的有效授权。
小结
渗透测试是一门技术,一门用于对信息系统进行安全评估的测试技术。 技术本身没有什么正义、邪恶之分。 关键是看你怎么用。
你被授权进行渗透测试,那你就是在保护地球, 维护世界和平, 主持武林正义。。。。
你没有被授权, 或者是没有这种法律意识, 那么。。。。
1.3. PTES标准中的渗透测试阶段
PTES:Penetration Testing Execution Standard, 渗透测试执行标准,已被安全业界中几个领军企业所采纳。
官网地址:[The Penetration Testing Execution Standard](http://www.pentest-
standard.org/ “The Penetration Testing Execution Standard”)
PTES标准中的渗透测试阶段是用来定义渗透测试过程,并确保客户组织能够以一种标准化的方式来扩展一次渗透测试,而无论是由谁来执行这种类型的评估。
-
前期交互阶段
-
情报搜集阶段
-
威胁建模阶段
-
漏洞分析阶段
-
渗透攻击阶段
-
后渗透攻击阶段
-
报告阶段
我们重点关注 情报搜集和渗透攻击, 其余前期交互就是“聊天”, 威胁建模和漏洞分析就是确定“从哪儿攻击”,
内容“物虚”较多。实操没有。大家作为简单了解该阶段内容即可。
2. Kali Linux
- 目标
- 了解渗透测试人员的工作平台-kali linux
- 知道kali linux的安装方法。
2.1. Kali Linux 介绍
-
Kali Linux是一个基于Debian的Linux发行版,
-
集成了300多个安全和取证方面的相关工具, 专为渗透测试人员准备,
-
Kali Linux的前身是BackTrack Linux发行版。
-
Back Track是基于Ubuntu的一个Linux发行版。(补充: ubuntu也是基于Debian的Linux发型版)
-
它由Offensive Security Ltd维护和资助,最先由Offensive Security的MatiAharoni和Devon Kearns通过重写Back Track来完成。
-
Kali Linux有32位和64位的镜像,可用于x86指令集。同时它还有基于ARM架构的镜像,可用于树莓派和三星的ARM Chromebook。用户可通过硬盘、Live CD或Live USB来运行Kali Linux操作系统。
2.2. 安装Kali Linux
如今Linux的安装过程已经非常“傻瓜”化,只需要轻点几下鼠标,就能够完成整个系统的安装。Kali
Linux操作系统的安装也非常简单。本节将分别介绍安装Kali Linux至硬盘、USB驱动器、树莓派、VMware Workstation和Womuare
Tods的详细过程。
2.2.1. ISO下载
安装到硬盘是最基本的操作之一。该工作的实现可以让用户不使用DVD,而正常的运行Kali
Linux。在安装这个全新的操作系统之前,需要做一些准备工作。例如,从哪里得到Linux?对电脑配置有什么要求?……下面将逐一列出这些要求。
- Kali Linux安装的磁盘空间的最小值是8GB。为了便于使用,这里推荐至少25GB去保存附加程序和文件。
- 内存最好为512MB以上。
- Kali Linux的下载地址,下载界面如图1.1所示。
下载完ISO文件后, 选中安装virtualbox虚拟机管理管理软件。 关于虚拟机安装步骤,本课程就不再详述,课下探讨。
2.2.2. 下载虚拟机镜像
当然也可以直接下载基于virtualbox的虚拟机镜像, 如下图所示:
建议选择64位虚拟机镜像, 如果你选用VMware的话,也可以直接下载VMware虚拟机镜像
2.2.3. 开机界面
Kali Linux系统开机运行后, 界面如下图所示:
点击做上角的 应用程序 , 会列出如下的渗透测试工具, 见下图
2.3. Kali Linux 系统更新
当用户使用一段时间以后,可能对总是在没有任何变化的系统中工作感到不满,而是渴望能像在Windows系统中一样,不断对自己的Linux进行升级。另外,Linux本身就是一个开放的系统,每天都会有新的软件出现,Linux发行套件和内核也在不断更新。在这样的情况下,学会对Linux进行升级就显得非常迫切了。本节将介绍Kali的更新与升级。
更新与升级Kali的具体操作步骤如下所示。
-
执行lsb_release -a命令查看当前操作系统的所有版本信息
root@Kali-Panda:~# lsb_release -a
No LSB modules are available.
Distributor ID: Kali
Description: Kali GNU/Linux Rolling
Release: kali-rolling
Codename: kali-rolling -
配置软件源, 国内建议选择“中科大”的源, (综合来书,中科大的源还是比较靠谱)
root@Kali-Panda:~# cat /etc/apt/sources.list.d/ustc.list
deb https://mirrors.ustc.edu.cn/kali kali-rolling main non-free contrib
deb-src https://mirrors.ustc.edu.cn/kali kali-rolling main non-free contrib -
添加完软件源,需要更新软件包列表后才可以使用。
更新软件包列表,执行命令如下所示:
root@Kali-Panda:~# apt-get update
-
软件更新(软件包升级)
root@Kali-Panda:~# apt-get dist-upgrade
root@Kali-Panda:~# apt-get dist-upgrade
正在读取软件包列表… 完成
正在分析软件包的依赖关系树
正在读取状态信息… 完成
正在计算更新… 完成
下列软件包是自动安装的并且现在不需要了:
acccheck 。。。
使用’apt autoremove’来卸载它(它们)。
y下列软件包将被【卸载】:
gnome-shell-extension-workspacestodock 。。。
下列【新】软件包将被安装:
apt-config-icons bolt clang-6.0
。。。。
您希望继续执行吗? [Y/n]
键入y后,选择升级软件包。
2.4. Kali Linux 基本设置
在前面学习了Kali
Linux操作系统的安装,安装成功后就可以登录到系统了。登录系统后,就可以使用各种的渗透工具对计算机做测试。为了方便后面章节内容的学习,本节将介绍一下Kali
Linux的基本设置。
- 启动默认的服务
Kali Linux自带了几个网络服务,它们是非常有用的。但是默认是禁用的。在这里,将介绍使用各种方法设置并启动每个服务。
- 启动Secure Shell(SSH)服务
启动Secure Shell(SSH)服务。执行命令如下所示:
root@Kali-Panda:~# systemctl start ssh.service
看到以上的输出表示SSH服务已经启动。为了确认服务的端口是否被监听,执行如下所示的命令:
root@Kali-Panda:~# netstat -apn | grep ":22"
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 2507/sshd
tcp6 0 0 :::22 :::* LISTEN 2507/sshd
当然也可以用systemclt查看ssh的状态
root@Kali-Panda:~# systemctl status ssh.service
● ssh.service - OpenBSD Secure Shell server
Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: disabled)
Active:** active (running)** since Mon 2018-07-23 12:28:00 CST; 4min 21s ago
Process: 593 ExecReload=/bin/kill -HUP $MAINPID (code=exited, status=0/SUCCESS)
Process: 591 ExecReload=/usr/sbin/sshd -t (code=exited, status=0/SUCCESS)
Process: 2506 ExecStartPre=/usr/sbin/sshd -t (code=exited, status=0/SUCCESS)
Main PID: 2507 (sshd)
Tasks: 1 (limit: 1916)
Memory: 1.8M
CGroup: /system.slice/ssh.service
└─2507 /usr/sbin/sshd -D
7月 23 12:28:00 Kali-Panda systemd[1]: Starting OpenBSD Secure Shell server...
7月 23 12:28:00 Kali-Panda sshd[2507]: Server listening on 0.0.0.0 port 22.
7月 23 12:28:00 Kali-Panda sshd[2507]: Server listening on :: port 22.
7月 23 12:28:00 Kali-Panda systemd[1]: Started OpenBSD Secure Shell server.
- 停止ssh服务
停止一个服务的语法格式:systemctl stop <servicename>
表示用户想要停止的服务。
停止ssh服务,执行命令如下所示:
root@Kali-Panda:~# systemctl stop ssh.service
可以通过查看ssh.service的状态信息, 已经变为inactive (dead)
, 可以看到ssh服务停止成功。
root@Kali-Panda:~# systemctl status ssh.service
● ssh.service - OpenBSD Secure Shell server
Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: disabled)
Active: inactive (dead) since Mon 2018-07-23 12:35:07 CST; 17s ago
Process: 593 ExecReload=/bin/kill -HUP $MAINPID (code=exited, status=0/SUCCESS)
Process: 591 ExecReload=/usr/sbin/sshd -t (code=exited, status=0/SUCCESS)
Process: 2507 ExecStart=/usr/sbin/sshd -D $SSHD_OPTS (code=exited, status=0/SUCCESS)
Process: 2506 ExecStartPre=/usr/sbin/sshd -t (code=exited, status=0/SUCCESS)
Main PID: 2507 (code=exited, status=0/SUCCESS)
7月 23 12:28:00 Kali-Panda systemd[1]: Starting OpenBSD Secure Shell server...
7月 23 12:28:00 Kali-Panda sshd[2507]: Server listening on 0.0.0.0 port 22.
7月 23 12:28:00 Kali-Panda sshd[2507]: Server listening on :: port 22.
7月 23 12:28:00 Kali-Panda systemd[1]: Started OpenBSD Secure Shell server.
7月 23 12:35:07 Kali-Panda systemd[1]: Stopping OpenBSD Secure Shell server...
7月 23 12:35:07 Kali-Panda sshd[2507]: Received signal 15; terminating.
7月 23 12:35:07 Kali-Panda systemd[1]: Stopped OpenBSD Secure Shell server.
- 设置服务开机启动
设置服务开机启动的语法格式如下所示: systemctl enable <servicename>
表示用户想要开机启动的服务。
设置SSH服务开启自启动:
root@Kali-Panda:~# systemctl enable sshd.service
Synchronizing state of ssh.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable ssh
-
查看当前系统开机自启列表
root@Kali-Panda:~# systemctl list-unit-files | grep enabled
accounts-daemon.service enabled
anacron.service enabled
autovt@.service enabled
binfmt-support.service enabled
console-setup.service enabled
…
ssh.service enabled
sshd.service enabled
2.5. 随堂练习
- 判断题: 传统中所用的渗透测试平台Back Track 现在可以用Kali Linux替代 ()
3. 前期交互阶段
- 目标
- 了解前期交互阶段需要完成的工作
3.1. 前期交互阶段的工作
前期交互阶段通常是由你与客户组织进行讨论,来确定渗透测试的范围和目标。
这个阶段最为关键的是需要让客户组织明确清晰地了解渗透测试将设计哪些目标,而这个阶段 也为你提供了机会,来说服客户走出全范围渗透测试的理想化远景
,选择更加现实可行的渗透测试目标来进行实际实施。
简单的说,就是解决一个问题: 我N月(年、月、日)就干完这N项的活儿,您老到时给钱儿痛快点。
这个阶段的工作把评估项目的每一个需求参数都落实到项目的测试计划、限定因素、业务指标、和进度安排中。
-
收集需求: 以口头交流和书面询问的形式,积累目标环境的有关信息
-
筹划工作: 测试计划的准备工作收许多因素的影响, 包括合同协议、成本分析、资源分配等
-
边界分析: 明确渗透测试任务限制因素的工作
-
明确业务指标: 在渗透测试项目中,该阶段工作使技术目标与业务目标保持一致。
-
项目管理和统筹调度: 此过程旨在使渗透测试过程中的每个步骤与其他步骤形成时间上的配合
学习网络安全技术的方法无非三种:
第一种是报网络安全专业,现在叫网络空间安全专业,主要专业课程:程序设计、计算机组成原理原理、数据结构、操作系统原理、数据库系统、 计算机网络、人工智能、自然语言处理、社会计算、网络安全法律法规、网络安全、内容安全、数字取证、机器学习,多媒体技术,信息检索、舆情分析等。
第二种是自学,就是在网上找资源、找教程,或者是想办法认识一-些大佬,抱紧大腿,不过这种方法很耗时间,而且学习没有规划,可能很长一段时间感觉自己没有进步,容易劝退。
如果你对网络安全入门感兴趣,那么你需要的话可以点击这里👉网络安全重磅福利:入门&进阶全套282G学习资源包免费分享!
第三种就是去找培训。
接下来,我会教你零基础入门快速入门上手网络安全。
网络安全入门到底是先学编程还是先学计算机基础?这是一个争议比较大的问题,有的人会建议先学编程,而有的人会建议先学计算机基础,其实这都是要学的。而且这些对学习网络安全来说非常重要。但是对于完全零基础的人来说又或者急于转行的人来说,学习编程或者计算机基础对他们来说都有一定的难度,并且花费时间太长。
第一阶段:基础准备 4周~6周
这个阶段是所有准备进入安全行业必学的部分,俗话说:基础不劳,地动山摇
第二阶段:web渗透
学习基础 时间:1周 ~ 2周:
① 了解基本概念:(SQL注入、XSS、上传、CSRF、一句话木马、等)为之后的WEB渗透测试打下基础。
② 查看一些论坛的一些Web渗透,学一学案例的思路,每一个站点都不一样,所以思路是主要的。
③ 学会提问的艺术,如果遇到不懂得要善于提问。
配置渗透环境 时间:3周 ~ 4周:
① 了解渗透测试常用的工具,例如(AWVS、SQLMAP、NMAP、BURP、中国菜刀等)。
② 下载这些工具无后门版本并且安装到计算机上。
③ 了解这些工具的使用场景,懂得基本的使用,推荐在Google上查找。
渗透实战操作 时间:约6周:
① 在网上搜索渗透实战案例,深入了解SQL注入、文件上传、解析漏洞等在实战中的使用。
② 自己搭建漏洞环境测试,推荐DWVA,SQLi-labs,Upload-labs,bWAPP。
③ 懂得渗透测试的阶段,每一个阶段需要做那些动作:例如PTES渗透测试执行标准。
④ 深入研究手工SQL注入,寻找绕过waf的方法,制作自己的脚本。
⑤ 研究文件上传的原理,如何进行截断、双重后缀欺骗(IIS、PHP)、解析漏洞利用(IIS、Nignix、Apache)等,参照:上传攻击框架。
⑥ 了解XSS形成原理和种类,在DWVA中进行实践,使用一个含有XSS漏洞的cms,安装安全狗等进行测试。
⑦ 了解一句话木马,并尝试编写过狗一句话。
⑧ 研究在Windows和Linux下的提升权限,Google关键词:提权
以上就是入门阶段
第三阶段:进阶
已经入门并且找到工作之后又该怎么进阶?详情看下图
给新手小白的入门建议:
新手入门学习最好还是从视频入手进行学习,视频的浅显易懂相比起晦涩的文字而言更容易吸收,这里我给大家准备了一套网络安全从入门到精通的视频学习资料包免费领取哦!
如果你对网络安全入门感兴趣,那么你需要的话可以点击这里👉网络安全重磅福利:入门&进阶全套282G学习资源包免费分享!