我们遵守一个方法论从事自己的渗透测试工作,这样可以使我们的工作,更加的高效,更加的标准,可以与其它的渗透测试工作者,进行沟通、交流、交换,促进我们对渗透测试工作的理解以及完善
安全问题的根源
工作的方法就是从根源上找到问题,去解决问题
• 分层思想的优劣
• 只追求功能实现
• 最⼤的安全威胁是⼈
分层思想的好处是能够把一个大的问题,简化为多个小的,相对简单的问题,也就是划分成不同的层面,层与层之间制定出标准,然后层与层的工作者,就能够通过标准去进行信息的交换,最后实现整个系统可以正常地工作
但是在分层地过程中,我们每个人都被分到了某个层面里面去,我们都处于大的系统里面的某个层面里面,搞网络的,就会去了解交换机、路由器、防火墙这些设备,做程序开发的,它会了解各种语言,搞数据库的,它会了解各种数据库的安装配置,维护数据的日常管理
每个人都工作在自己所在的层面上,久而久之,他们看待世界、计算机、系统,就会把自己的目光局限在自己的层面上面,于是久而久之,每个人看待这个系统都是片面的,就好比是盲人摸象,这个大的系统,在有些人看来,可能是一根大的柱子,他摸到了大象的腿,有些人看来是一个扇子,摸到了大象的耳朵,由于分层,我们每个人看到的系统,我们以为我们认识的系统其实都是片面的,没有办法从整体的去看待这个系统
这个问题从功能实现的角度上来看,是没有问题的,每个人只要做好自己本职层面的工作,就会实现系统的正常运行,但是从安全的角度来讲,这却是一个非常致命的问题,因为安全从来就没有片面和单一的安全,任何一点的漏洞,都会造成系统的崩溃,所以安全的问题,你必须有能力从全面,从整体去看待这个问题,这样,你才能把安全的工作做好
由于分层的思想,让每一个计算机技术从业者对安全的认识,都很片面,所以造成安全问题根生蒂固,很难去推进
一方面,我们计算机技术从业者久而久之,把自己固守在自己的层面上,看待问题片面,同时,这些技术人员搞技术的时候,还习惯性的,只追求功能的实现
可能是因为我们现在的系统,越做越大,越做越复杂,为了提供工作效率,搞网络的,他会说,我的网络调通了,工作已经完成了,搞数据库的,他说,我的数据库已经安装完成了,可以导入导出数据,进行正常的数据操作了,搞编程开发的,我的页面已经做好了,可以正常提交处理了
技术人员,很少能够从安全的角度,去审视一下自己刚才做过的工作,是不是也能达到相应安全上的要求,在实现了功能之后
安全最终的问题,其实是人,由于安全问题最终是人,所以人没有不犯错误的,每个人都会犯错误,所以,安全问题,是没有办法,彻底的从根源上解决,除非把人变成完美的,不会犯错误的人,这样子是不存在的,包括我们安全从业者,也会犯各种各样的错
安全目标
• 先于攻击者发现和防⽌漏洞出现
• 攻击型安全
• 防护型安全
安全没有百分百,我们只能够通过自己的努力,把安全的风险降到最低,基于这种考虑,长久以来,安全建设都是以防护型建设为主
把不必要的服务,不必要的端口,全部关掉,把我们的供给面,降到最低,从防守的角度,先建设我们的安全,这种防护的弊端是,防护的不够全面,没有办法防护到所有的方面
可能是一个初级的黑客,对你的系统进行攻击的时候,往往因为我们一些小小的疏漏,很小的,没有防护到的方面,通过这些漏洞,就会攻击到我们的系统,甚至控制我们整个系统
防护性安全,投入巨大,建设很长,取得的安全结果,往往非常的脆弱,目前业界提倡,采用攻击型安全,建设我们的系统
所谓攻击型的安全,就是使用攻击型的手段,探测我们的系统,发现这个系统里面,有那些安全漏洞、那些安全隐患,我们需要使用黑客的手段,去探测我们的系统,发现漏洞。这样在系统正式上线,提供对外服务之前,把这些漏洞发现出来,提前修补好
渗透测试
• 尝试挫败安全防御机制,发现系统安全弱点;
• 从攻击者的⾓度思考,测量安全防护有效性;
• 证明安全问题的存在,发现的这些漏洞,可以复现,而非破坏;
• 道德约束
• 法律
我们在做渗透测试的时候,拿下一台服务器之后,初级的渗透测试者,就会认为,我的工作完成了,但其实对一个资深的渗透测试者来讲,这是远远不够的,因为你拿下这一台服务器,你所证明的危害性,只有这一台服务器,有可能这一台服务器,对企业造成的影响,是非常有限的,做为一个渗透测试者,我们要以这一台机器为基础,去向他的内网做进一步的渗透,去不断地证明,不断地放大,所发现地这个漏洞,会给企业造成什么危害,这样才能提升企业管理者对安全地重视程度,同时也证明,我们渗透测试的价值所在
安全测试者,往往走在黑白的分界线上,法律对我们是有约束的,我们不应该去触犯法律,触犯法律,我们就要去坐牢,因为我们在计算机上做的所有的操作,都是可查的,只要,你下足够的功夫,是一定能够查到的,所以,一定要站在白的这边
做为一个安全测试者,当你的能力,越大的时候,你的责任,就越大,最终约束自己的,是自己内心的道德底线
渗透测试标准
• PETS(http://www.pentest-)
• 前期交互阶段
• 情报收集阶段
• 威胁建模阶段
• 漏洞分析阶段
• 渗透攻击阶段
• 后渗透测试阶段
• 渗透测试报告
当我们做一个渗透测试项目的时候,我们首先要跟客户做前期的沟通,我们最主要的目的,是确定我们渗透测试的范围,如果,不划分清晰的工作范围,有可能,我们的工作是永远做不完的
通常,我们会以一个系统,如果这个系统过大,我们会把这个系统,切分成几个小的子系统,对每个小的子系统,来进行渗透测试,每一次,做一个子系统的渗透测试
一个系统,指的是一个应用系统,就像一个电商系统,有他的网络、防火墙、入侵检测、WAF、有它的服务器,上面安装它的操作系统,还有它的各种平台的应用系统、一个应用的所有组件放在一起,组成的一个系统
通常来说,渗透测试会以一个系统做为渗透测试的目标,来鉴定,渗透测试的工作方式,比如你是现场测试,还是远程测试,需不需要使用到社会工程学的测试方式,等等这些都是要在前期确定下来的,甚至你需不需要对系统,做DDOS的攻击
通常来说,渗透测试是不会包含社会工程学、DDOS的,在这个阶段,我们通常要确定下来,我们要投入多少的人,多少时间,完成这样的一个项目
前期交互之后,渗透测试者就可以开始干活了,进行各种的情报收集,邮箱地址、联系人、公司地址、DNS联系人、服务器的IP、域名,以及通过搜索引擎,对公司信息动态的收集,这些都属于被动信息收集,不和目标系统网络,产生直接的联系的收集方式,同时会采用主动的信息收集
对目标系统,进行主动的信息探测,进行主机的发现,对端口服务的发现,等等这些信息的收集,收集下来的信息,用于下一阶段的威胁建模,通过前期的信息收集,我们对目标系统,有一个大概的轮廓认识
通过前期的信息收集,确定一条、两条,效率最高、最快捷,可以渗透进入这些系统的途径,进行分析
查看一下,之前信息收集,目标使用的软件版本,是不是比较低,有已经公开的漏洞,甚至一些软件组键,我们要进行逆向工程的分析,可能发现一些0day,通过这些漏洞,在后阶段可能会攻击进系统,不见得所有的漏洞,都有现成的工具给我们使用,所以漏洞分析阶段,分析完之后,可能会编写个,有漏洞利用的代码
真正的渗透攻击阶段,可能会有很多的安全防护机制,前期的信息收集、威胁建模阶段,所没有发现的,往往在实验环境里面,可以渗透成功的这些漏洞,但是在真实环境里,往往是不成功的,这个时候,就需要,我们重新进行,进一步的情报收集,威胁建模、漏洞分析,在不断的找到,渗透能够攻击进去的这些个途径,所以渗透攻击阶段,往往不像,想象的那么顺利
渗透攻击结束,真的取到了目标服务器的一台权限,这个时候,做为渗透测试人员,你的工作并没有完全结束,我们需要向客户证明,我们通过一个小小的漏洞,控制了一台服务器,我们还可以通过一台服务器,向内网进行进一步的控制,可以取得更多有价值的东西,向客户充分的展示,威胁的成果
黑客控制了某公司的空调服务商的一台电脑,两家公司,是有一些内部的网络连接的,黑客通过控制空调服务商的一台电脑之后,通过这一台电脑,进一步向某公司的内部,进行渗透,发现了某公司外部的一个web服务器上的一个漏洞,渗透进去,在进入之后,通过某公司有漏洞的服务器,进一步向内网渗透,最后,控制了某公司整个的内部网络,活动目录域,管理员权限已经被拿到,相应的数据库里面的数据信息,泄露了很多的信用卡信息
在渗透测试报告里面,我们做为一个内部的渗透测试人员,我们要向我们的客户,去证明,我们的漏洞是怎么发现,利用,如何去攻击,控制整个内部网络,整个漏洞的利用过程,以及这个漏洞,如何进行修复,避免,被真正的黑客所利用,都需要在我们的渗透测试报告里面,完善的体现出来
发现问题,不解决问题,是体现不出我们的价值,渗透测试报告的编写阶段,对渗透测试者,也是有很高要求的一个阶段,如果这个阶段没有写好,即使前面的过程,非常精彩,客户也感受不出来
渗透测试项目
• 渗透测试范围
• 获得授权
• 渗透测试⽅法
• 是否允许社会⼯程学
• 是否允许拒绝服务攻击
你对一个系统进行的是渗透测试,还是攻击,取决于,你是否得到了客户的授权,如果你得到了客户的授权,你去进行测试
、渗透、控制,接触到一些敏感信息的话,那这些就是属于一个合法的操作,当然,你不能通过这些信息去获取黑色利益,这些是不允许的
渗透测试误区
• 扫描器就是⼀切
• 忽视业务逻辑重的漏洞
真正渗透测试的高手,是可以几乎不用扫描器的,就可以攻击、渗透进入你的系统,它靠的是自己的技术能力,去渗透到你的系统,不是靠那个傻瓜式的扫描器
像awvs、xray、nmap这些扫描器,对业务层面的漏洞是完全无能为力的,它只能查出一些技术型的漏洞
我的一个业务系统,是分普通管理员和管理者用户,这两个权限的,现在,我普通员工登录进来,可以查看,操作经理级别,才有的操作,这就是业务逻辑层面,才有的问题
扫描器,只是我们在工作过程中的一个辅助工具的手段,不是必须的,但是初期,我们也是需要这样的扫描器,来帮助我们提高工作的效率
KALI
• Kali(kālī,⾳译为迦梨或迦利,字⾯意思是“⿊⾊的”)是印度教中⼀个重要的⼥神,她是湿婆神妃帕尔⽡蒂产⽣的化⾝,印度神话中最为⿊暗和暴虐的⿊⾊地⺟。她⽪肤黝⿊,⻘⾯獠⽛,额头和湿婆神⼀样有第三只眼睛,四只⼿臂分持武器,戴着蛇和骷髅的项链,⾆头上滴着⾎。有她的传说总是与杀戮和鲜⾎相连,史上曾经⽤过活⼈献祭,是印度教派中最为隐晦和神秘的⼀派。
• 迦梨⼀词也可解释为时间,故中⽂翻译为时⺟。在后期的信仰体系中,时⺟被认为与时间和变化有关,象征着强⼤和新⽣。
• 在⾯对前所未有的强⼤的阿修罗时陷⼊困境,这时候她的⾯孔因为愤怒⽽发⿊,从她脸上的⿊⽓中诞⽣了可怕的迦梨。今⽇印度的都市加尔各答,名字的意思就是“迦梨的沐浴场”。
如果我们把kali用得好得话,他是可以凶狠的
KALI LINUX介绍
• 基于Debian的Linux发⾏版本
• 前⾝是BackTrack,3⽉发布模式,是BT的升级版本;
• ⽤于渗透测试和安全审计;
• 包含600+安全⼯具,有渗透测试用的,有逆向工程用的,电子取证用的,各种各样分类使用的安全相关的工具,进入操作系统,它会有一个菜单,大概是按照功能的分类,把这600种工具,进行了一个简单的分类
• FHS标准目录结构,是所有的linux都遵循的目录结构,比如/etc放配置文件,/var放日志文件,/dev下放所有的设备文件。等等这些的目录标准
• 定制内核,主要指无线驱动的内核,如果你使用的是kali1.09A的时候,你想利用它做一些无线wifi方面的渗透测试,会发现经常报一些奇奇怪怪的错误,这个时候,我们就要下载一些无线内核的补丁,然后手动的安装到系统上,这样才能保证我们在做无线渗透测试的时候,能够正常的工作,现在我们使用的kali,就不存在这个问题,因为官方,已经把补丁内嵌到无线内核里面了
• ⽀持ARM和⼿机平台
树莓单板电脑、手机,把我们的手机和平板变成渗透测试攻击的平台
• 开源免费
KALI LINUX策略
• 普通⽤户策略,会损失效率
• 网络服务策略,默认,所有程序的网络服务都是关闭的,即使你新装了一个服务,它默认,所有的自动启动的脚本,都是关闭的,如果你想让程序跟着操作系统启动,你可以使用update.rc -d,这样的一个命令
• 更新升级策略
kali是基于debain再开发的一个版本,如果说debain上面出现了一些系统漏洞和安全补丁,kali这边会把它直接补充过来
kali上面的600+安全工具,是由官方进行维护的
关于本专栏
• 这是⼀⻔关于渗透测试⽅法的专栏
• 这是⼀⻔关于kali linix基本使⽤的专栏,kali上面有600+的工具,其中有些工具的功能是重复的,我个人的见解,是没有必要每个工具,都去灵活的使用,这一类工具里面,你可以挑一个两个,你使用比较习惯的,去练手,去把它用熟用透,其它工具,当有必要使用的时候,再去现查一下命令去使用
• 不要停留在了解的程度
• 做渗透测试,实践再实践是最好的⽼师,只有通过不断地实践,你才能真正的掌握这个技能,渗透测试是一个实实在在做事的一个过程。实实在在发现安全问题,去攻击,去解决安全问题的这样一个过程
• 这⾥只是起跑线⽽不是终点线
• Kali很强⼤,但不是全部
在渗透测试这么个领域面前,我们都需要不断地去研究,不断地去提升自己的能力