渗透测试和安全攻防_渗透测试攻防需要哪些工具

hacker|
135

如何对网站进行渗透测试和漏洞扫描

零、前言

渗透测试在未得到被测试方授权之前依据某些地区法律规定是违法行为。 这里我们提供的所有渗透测试 *** 均为(假设为)合法的评估服务,也就是通常所说的道德黑客行为(Ethical hacking),因此我们这里的所有读者应当都是Ethical Hackers,如果您还不是,那么我希望您到过这里后会成为他们中的一员 ;)

这里,我还想对大家说一些话:渗透测试重在实践,您需要一颗永不言败的心和一个有着活跃思维的大脑。不是说您将这一份文档COPY到您网站上或者保存到本地电脑您就会了,即使您将它打印出来沾点辣椒酱吃了也不行,您一定要根据文档一步一步练习才行。而且测试重在用脑,千万别拿上一两个本文中提到的工具一阵乱搞,我敢保证:互联网的安全不为因为这样而更安全。祝您好运。。。

一、简介

什么叫渗透测试?

渗透测试最简单直接的解释就是:完全站在攻击者角度对目标系统进行的安全性测试过程。

进行渗透测试的目的?

了解当前系统的安全性、了解攻击者可能利用的途径。它能够让管理人员非常直观的了解当前系统所面临的问题。为什么说叫直观呢?就像Mitnick书里面提到的那样,安全管理(在这里我们改一下,改成安全评估工作)需要做到面面俱到才算成功,而一位黑客(渗透测试)只要能通过一点进入系统进行破坏,他就算是很成功的了。

渗透测试是否等同于风险评估?

不是,你可以暂时理解成渗透测试属于风险评估的一部分。事实上,风险评估远比渗透测试复杂的多,它除渗透测试外还要加上资产识别,风险分析,除此之外,也还包括了人工审查以及后期的优化部分(可选)。

已经进行了安全审查,还需要渗透测试吗?

如果我对您说:嘿,中国的现有太空理论技术通过计算机演算已经能够证明中国完全有能力实现宇航员太空漫步了,没必要再发射神8了。您能接受吗?

渗透测试是否就是黑盒测试?

否,很多技术人员对这个问题都存在这个错误的理解。渗透测试不只是要模拟外部黑客的入侵,同时,防止内部人员的有意识(无意识)攻击也是很有必要的。这时,安全测试人员可以被告之包括代码片段来内的有关于系统的一些信息。这时,它就满足灰盒甚至白盒测试。

渗透测试涉及哪些内容?

技术层面主要包括 *** 设备,主机,数据库,应用系统。另外可以考虑加入社会工程学(入侵的艺术/THE ART OF INTRUSION)。

渗透测试有哪些不足之处?

主要是投入高,风险高。而且必须是专业的Ethical Hackers才能相信输出的最终结果。

你说的那么好,为什么渗透测试工作在中国开展的不是很火热呢?

我只能说:会的,一定会的。渗透测试的关键在于没法证明你的测试结果就是完善的。用户不知道花了钱证明了系统有问题以后,自己的安全等级到了一个什么程序。但是很显然,用户是相信一个专业且经验丰富的安全团队的,这个在中国问题比较严重。在我接触了一些大型的安全公司进行的一些渗透测试过程来看,测试人员的水平是对不住开的那些价格的,而且从测试过程到结果报表上来看也是不负责的。我估计在三年以后,这种情况会有所改观,到时一方面安全人员的技术力量有很大程度的改观,另一方面各企业对渗透测试会有一个比较深刻的理解,也会将其做为一种IT审计的方式加入到开发流程中去。渗透测试的专业化、商业化会越来越成熟。

二、制定实施方案

实施方案应当由测试方与客户之间进行沟通协商。一开始测试方提供一份简单的问卷调查了解客户对测试的基本接收情况。内容包括但不限于如下:

目标系统介绍、重点保护对象及特性。

是否允许数据破坏?

是否允许阻断业务正常运行?

测试之前是否应当知会相关部门接口人?

接入方式?外网和内网?

测试是发现问题就算成功,还是尽可能的发现多的问题?

渗透过程是否需要考虑社会工程?

。。。

在得到客户反馈后,由测试方书写实施方案初稿并提交给客户,由客户进行审核。在审核完成后,客户应当对测试方进行书面委托授权。这里,两部分文档分别应当包含如下内容:

实施方案部分:

...

书面委托授权部分:

...

三、具体操作过程

1、信息收集过程

*** 信息收集:

在这一部还不会直接对被测目标进行扫描,应当先从 *** 上搜索一些相关信息,包括Google Hacking, Whois查询, DNS等信息(如果考虑进行社会工程学的话,这里还可以相应从邮件列表/新闻组中获取目标系统中一些边缘信息如内部员工帐号组成,身份识别方式,邮件联系地址等)。

1.使用whois查询目标域名的DNS服务器

2.nslookup

set type=all

domain

server ns server

set q=all

ls -d domain

涉及的工具包括:Google,Demon,webhosting.info,Apollo,Athena,GHDB.XML,netcraft,seologs 除此之外,我想特别提醒一下使用Googlebot/2.1绕过一些文件的获取限制。

Google hacking 中常用的一些语法描述

1.搜索指定站点关键字site。你可以搜索具体的站点如site:。使用site:nosec.org可以搜索该域名下的所有子域名的页面。甚至可以使用site:org.cn来搜索中国 *** 部门的网站。

2.搜索在URL网址中的关键字inurl。比如你想搜索带参数的站点,你可以尝试用inurl:asp?id=

3.搜索在网页标题中的关键字intitle。如果你想搜索一些登陆后台,你可以尝试使用intitle:"admin login"

目标系统信息收集:

通过上面一步,我们应当可以简单的描绘出目标系统的 *** 结构,如公司 *** 所在区域,子公司IP地址分布,VPN接入地址等。这里特别要注意一些比较偏门的HOST名称地址,如一些backup开头或者temp开关的域名很可能就是一台备份服务器,其安全性很可能做的不够。

从获取的地址列表中进行系统判断,了解其组织架构及操作系统使用情况。最常用的 *** 的是目标所有IP网段扫描。

端口/服务信息收集:

这一部分已经可以开始直接的扫描操作,涉及的工具包括:nmap,thc-amap

1.我最常使用的参数

nmap -sS -p1-10000 -n -P0 -oX filename.xml --open -T5 ip address

应用信息收集:httprint,SIPSCAN, *** ap

这里有必要将SNMP拿出来单独说一下,因为目前许多运营商、大型企业内部 *** 的维护台通过SNMP进行数据传输,大部分情况是使用了默认口令的,撑死改了private口令。这样,攻击者可以通过它收集到很多有效信息。snmp-gui,HiliSoft MIB Browser,mibsearch,net-snmp都是一些很好的资源。

2、漏洞扫描

这一步主要针对具体系统目标进行。如通过之一步的信息收集,已经得到了目标系统的IP地址分布及对应的域名,并且我们已经通过一些分析过滤出少许的几个攻击目标,这时,我们就可以针对它们进行有针对性的漏洞扫描。这里有几个方面可以进行:

针对系统层面的工具有:ISS, Nessus, SSS, Retina, 天镜, 极光

针对WEB应用层面的工具有:AppScan, Acunetix Web Vulnerability Scanner, WebInspect, Nstalker

针对数据库的工具有:ShadowDatabaseScanner, NGSSQuirreL

针对VOIP方面的工具有:PROTOS c07 sip(在测试中直接用这个工具轰等于找死)以及c07 h225, Sivus, sipsak等。

事实上,每个渗透测试团队或多或少都会有自己的测试工具包,在漏洞扫描这一块针对具体应用的工具也比较个性化。

3、漏洞利用

有时候,通过服务/应用扫描后,我们可以跳过漏洞扫描部分,直接到漏洞利用。因为很多情况下我们根据目标服务/应用的版本就可以到一些安全网站上获取针对该目标系统的漏洞利用代码,如milw0rm, securityfocus,packetstormsecurity等网站,上面都对应有搜索模块。实在没有,我们也可以尝试在GOOGLE上搜索“应用名称 exploit”、“应用名称 vulnerability”等关键字。

当然,大部分情况下你都可以不这么麻烦, *** 中有一些工具可供我们使用,最著名的当属metasploit了,它是一个开源免费的漏洞利用攻击平台。其他的多说无益,您就看它从榜上无名到冲进前五(top 100)这一点来说,也能大概了解到它的威力了。除此之外,如果您(您们公司)有足够的moeny用于购买商用软件的话,CORE IMPACT是相当值得考虑的,虽然说价格很高,但是它却是被业界公认在渗透测试方面的泰山北斗,基本上测试全自动。如果您觉得还是接受不了,那么您可以去购买CANVAS,据说有不少0DAY,不过它跟metasploit一样,是需要手动进行测试的。最后还有一个需要提及一下的Exploitation_Framework,它相当于一个漏洞利用代码管理工具,方便进行不同语言,不同平台的利用代码收集,把它也放在这里是因为它本身也维护了一个exploit库,大家参考着也能使用。

上面提到的是针对系统进行的,在针对WEB方面,注入工具有NBSI, OWASP SQLiX, SQL Power Injector, sqlDumper, sqlninja, sqlmap, Sqlbftools, priamos, ISR-sqlget***等等。

在针对数据库方面的工具有:

数据库 工具列表 Oracle(1521端口): 目前主要存在以下方面的安全问题:

1、TNS监听程序攻击(sid信息泄露,停止服务等)

2、默认账号(default password list)

3、SQL INJECTION(这个与传统的意思还不太一样)

4、缓冲区溢出,现在比较少了。 thc-orakel, tnscmd, oscanner, Getsids, TNSLSNR, lsnrcheck, OAT, Checkpwd, orabf MS Sql Server(1433、1434端口) Mysql(3306端口) DB2(523、50000、50001、50002、50003端口) db2utils Informix(1526、1528端口)

在针对Web服务器方面的工具有:

WEB服务器 工具列表 IIS IISPUTSCANNER Tomcat 想起/admin和/manager管理目录了吗?另外,目录列表也是Tomcat服务器中最常见的问题。比如5.*版本中的;index.jsp

"../manager/html

;cookievalue=%5C%22FOO%3B+Expires%3DThu%2C+1+Jan+2009+00%3A00%3A01+UTC%3B+Path%3D%2F%3B

;cookievalue=%5C%22A%3D%27%3B+Expires%3DThu%2C+1+Jan+2009+00%3A00%3A01+UTC%3B+Path%3D%2Fservlets-examples%2Fservlet+%3B JBOSS jboss的漏洞很少,老版本中8083端口有%符号的漏洞:

GET %. HTTP/1.0可以获取物理路径信息,

GET %server.policy HTTP/1.0可以获取安全策略配置文档。

你也可以直接访问GET %org/xxx/lib.class来获取编译好的java程序,再使用一些反编译工具还原源代码。 Apache Resin

;servletpath=file=WEB-INF/web.xml

;servletpath=file=WEB-INF/classes/com/webapp/app/target.class

[path]/[device].[extension]

.."web-inf

[path]/%20.xtp WebLogic

Web安全测试主要围绕几块进行:

Information Gathering:也就是一般的信息泄漏,包括异常情况下的路径泄漏、文件归档查找等

Business logic testing:业务逻辑处理攻击,很多情况下用于进行业务绕过或者欺骗等等

Authentication Testing:有无验证码、有无次数限制等,总之就是看能不能暴力破解或者说容不容易通过认证,比较直接的就是“默认口令”或者弱口令了

Session Management Testing:会话管理攻击在COOKIE携带认证信息时最有效

Data Validation Testing:数据验证更好理解了,就是SQL Injection和Cross Site Script等等

目前网上能够找到许多能够用于进行Web测试的工具,根据不同的功能分主要有:

枚举(Enumeration): DirBuster, http-dir-enum, wget

基于 *** 测试类工具:paros, webscarab, Burp Suite

针对WebService测试的部分有一些尚不是很成熟的工具,如:w *** ang,wschess,w *** ap,wsdigger,wsfuzzer

这一部分值得一提的是,很多渗透测试团队都有着自己的测试工具甚至是0DAY代码,最常见的是SQL注入工具,现网开发的注入工具(如NBSI等)目前都是针对中小企业或者是个人站点/数据库进行的,针对大型目标系统使用的一些相对比较偏门的数据库系统(如INFORMIX,DB2)等,基本上还不涉及或者说还不够深入。这时各渗透测试团队就开发了满足自身使用习惯的测试工具。

在针对无线环境的攻击有:WifiZoo

4、权限提升

在前面的一些工作中,你或许已经得到了一些控制权限,但是对于进一步攻击来说却还是不够。例如:你可能很容易的能够获取Oracle数据库的访问权限,或者是得到了UNIX(AIX,HP-UX,SUNOS)的一个基本账号权限,但是当你想进行进一步的渗透测试的时候问题就来了。你发现你没有足够的权限打开一些密码存储文件、你没有办法安装一个SNIFFER、你甚至没有权限执行一些很基本的命令。这时候你自然而然的就会想到权限提升这个途径了。

目前一些企业对于补丁管理是存在很大一部分问题的,他们可能压根就没有想过对一些服务器或者应用进行补丁更新,或者是延时更新。这时候就是渗透测试人员的好机会了。经验之谈:有一般权限的Oracle账号或者AIX账号基本上等于root,因为这就是现实生活。

5、密码破解

有时候,目标系统任何方面的配置都是无懈可击的,但是并不是说就完全没办法进入。最简单的说,一个缺少密码完全策略的论证系统就等于你安装了一个不能关闭的防盗门。很多情况下,一些安全技术研究人员对此不屑一顾,但是无数次的安全事故结果证明,往往破坏力更大的攻击起源于最小的弱点,例如弱口令、目录列表、SQL注入绕过论证等等。所以说,对于一些专门的安全技术研究人员来说,这一块意义不大,但是对于一个ethical hacker来说,这一步骤是有必要而且绝大部分情况下是必须的。;)

目前比较好的 *** 密码暴力破解工具有:thc-hydra,brutus

hydra.exe -L users.txt -P passwords.txt -o test.txt -s 2121 ftp

目前 *** 中有一种资源被利用的很广泛,那就是rainbow table技术,说白了也就是一个HASH对应表,有一些网站提供了该种服务,对外宣称存储空间大于多少G,像rainbowcrack更是对外宣称其数据量已经大于1.3T。

针对此种方式对外提供在线服务的有:

网址 描述 rainbowcrack 里面对应了多种加密算法的HASH。 数据量全球之一,如果本站无法破解,那么你只能去拜春哥...

当然,有些单机破解软件还是必不可少的:Ophcrack,rainbowcrack(国人开发,赞一个),cain,L0phtCrack(破解Windows密码),John the Ripper(破解UNIX/LINUX)密码,当然,还少不了一个FindPass...

针对 *** 设备的一些默认帐号,你可以查询和

在渗透测试过程中,一旦有机会接触一些OFFICE文档,且被加了密的话,那么,rixler是您马上要去的地方,他们提供的OFFICE密码套件能在瞬间打开OFFICE文档(2007中我没有试过,大家有机会测试的话请给我发一份测试结果说明,谢谢)。看来微软有理由来个补丁什么的了。对于企业来说,您可以考虑使用铁卷或者RMS了。

6、日志清除

It is not necessary actually.

7、进一步渗透

攻入了DMZ区一般情况下我们也不会获取多少用价值的信息。为了进一步巩固战果,我们需要进行进一步的内网渗透。到这一步就真的算是无所不用其及。最常用且最有效的方式就是Sniff抓包(可以加上ARP欺骗)。当然,最简单的你可以翻翻已入侵机器上的一些文件,很可能就包含了你需要的一些连接帐号。比如说你入侵了一台Web服务器,那么绝大部分情况下你可以在页面的代码或者某个配置文件中找到连接数据库的帐号。你也可以打开一些日志文件看一看。

除此之外,你可以直接回到第二步漏洞扫描来进行。

四、生成报告

报告中应当包含:

薄弱点列表清单(按照严重等级排序)

薄弱点详细描述(利用 *** )

解决 *** 建议

参与人员/测试时间/内网/外网

五、测试过程中的风险及规避

在测试过程中无可避免的可能会发生很多可预见和不可预见的风险,测试方必须提供规避措施以免对系统造成重大的影响。以下一些可供参考:

1. 不执行任何可能引起业务中断的攻击(包括资源耗竭型DoS,畸形报文攻击,数据破坏)。

2. 测试验证时间放在业务量最小的时间进行。

3. 测试执行前确保相关数据进行备份。

4. 所有测试在执行前和维护人员进行沟通确认。

5. 在测试过程中出现异常情况时立即停止测试并及时恢复系统。

6. 对原始业务系统进行一个完全的镜像环境,在镜像环境上进行渗透测试。

一个完整的渗透测试流程,分为那几块,每一块有哪些内容

包含以下几个流程:

信息收集

之一步做的就是信息收集,根据网站URL可以查出一系列关于该网站的信息。通过URL我们可以查到该网站的IP、该网站操作系统、脚本语言、在该服务器上是否还有其他网站等等一些列的信息。

漏洞探测

当我们收集到了足够多的信息之后,我们就要开始对网站进行漏洞探测了。探测网站是否存在一些常见的Web漏洞,比如:SQL注入 。

漏洞利用

探测到了该网站存在漏洞之后,就要对该漏洞进行利用了。不同的漏洞有不同的利用工具,很多时候,通过一个漏洞我们很难拿到网站的webshell,我们往往需要结合几个漏洞来拿webshell。

内网渗透

当我们能跟内网主机进行通信后,我们就要开始进行内网渗透了。可以先使用nmap对内网主机进行扫描,探测在线的主机,并且探测其使用的操作系统、开放的端口等信息。

内网中也有可能存在供内网使用的内网服务器,可以进一步渗透拿下其权限。

痕迹清除

达到了目的之后,有时候只是为了黑入网站挂黑页,炫耀一下;或者在网站留下一个后门,作为肉鸡,没事的时候上去溜达溜达;亦或者挂入挖矿木马。

撰写渗透测试保告

在完成了渗透测试之后,就需要对这次渗透测试撰写渗透测试报告了。明确的写出哪里存在漏洞,以及漏洞修补的 *** 。以便于网站管理员根据我们的渗透测试报告修补这些漏洞和风险,防止被黑客攻击。

渗透测试利器【Cobalt Strike】CDN隐匿

Cobalt Strike是一款漂亮国Red Team开发的渗透测试神器,常被业界人称为CS。成为了渗透测试中不可缺少的利器。其拥有多种协议主机上线方式,集成了提权,凭据导出,端口转发,socket *** ,office攻击,文件捆绑,钓鱼等功能。同时,Cobalt Strike还可以调用Mimikatz等其他知名工具并且可以作为团队服务使用,因此广受 *** 安全人员喜爱。

虽然Cobalt Strike在渗透测试使用过程中非常的方便和强大,但其默认的特征信息使得CS服务端也会很容易被态势感知等监测设备所识别到,并且服务器开启默认端口后也会被情报网站标记为攻击服务器,且如果teamserver密码简单也会被反爆破。

因此就需要对Cobalt Strike的流量、特征等进行隐匿。本文章采用的是CDN+修改特征隐匿的 *** 。

这里使用 平台进行注册,需要登陆,因此提前准备好一个邮箱,国内外邮箱都行。

tips:

1、在选择好域名并注册后,需要登录平台,然后填写相关信息以用于注册(当前ip所处的地址这里必须一致、邮编、手机号等可采用漂亮的虚拟信息);

2、后续要使用cdn平台,因此需要在这个域名平台里面绑定cdn平台的ns记录。

域名注册完成后先不要急着解析,进行第二步的CDN平台配置。

CDN平台建议使用cloudflare

先注册个账号登陆一波,使用邮箱注册,方便起见可以和freenom平台用同一个邮箱。

进入cloudflare平台后,点击左侧的网站,然后添加一个域名,这里添加的域名就是freenom注册的。

站点添加完成后,点击站点进去,在左侧DNS中添加记录。

在添加完成后如果上面出现这样的告警,就代表在freenom平台中还没有修改ns记录,需要去将ns记录修改为cdn平台的。

进入freenom平台修改ns记录,先登录,进入到域名管理处,修改ns名称。这里要填写的ns名称是CDN平台给分配的,参见上面一张图,ns前缀基本都是随机分配的,因此以CDN平台上的为准。

freenom改好ns记录后,再到CDN平台上点击上上图的“检查名称服务器”即可更新完成。此时再去解析域名、ping域名,都会成功返回到CDN的ip地址。

在CDN平台左侧的SSL/TLS-----概述中,将右边的加密模式选择为灵活。

在左侧源服务器中,点击创建证书。源服务器私钥类型选择ECC,密钥格式选择PEM。 一定要将源证书和私钥复制下来!后续要用到。

CDN默认开启缓存,可能会影响后续主机上线、shell命令回显等。因此这里有两种关闭缓存的 *** 建议都开启。

在CDN平台-缓存-配置-开发者模式-开启。

规则-创建页面规则中创建两条规则。以下规则中的域名不需要填写A记录名。

1、 .your dmoain/ ;

2、your dmoain/*;

3、将规则设置为-缓存级别-绕过。

2.生成新的cobaltstrike证书。如果原先的cobaltstrike文件夹内有默认的.store证书,需要先删除掉默认的。使用以下命令生成:

ps:这里的pass密码需要修改,改为复杂的密码,不要使用123456。

ps:这里的所有密码都要和上面的一致。

6.1 修改teamserver默认端口

编辑teamserver配置文件,将CobaltStrike默认的50050端口改成其它端口。

6.2 修改teamserver默认指纹信息

编辑teamserver配置文件,默认的是cobalt strike信息或Microsoft信息。

可将指纹信息改为其它的内容。

启动teamserver的命令需要微调下:

./teamserver 服务器公网IP 密码 C2.profile

连接上teamserver后,创建个监听器和马子。注意监听器的地址要填写CDN绑定的域名,而不是IP地址了

PS:在创建监听器时,建议使用https模式。并且监听器的https上线端口不要使用默认的443,否则可能会无法正常上线。建议监听端口使用CDN支持的其它端口。

先在虚拟机里面打开个wireshark开启抓包模式,然后将马子丢到虚拟机里面执行。

此时在CS里面主机已经上线。然后看wireshark中的数据包,过滤服务器真实地址发现一条都没有,均是和CDN地址的交互数据。

下图筛选服务器地址:

下图筛选CDN地址:

至此CDN隐匿完成。

如何系统学习web安全,web渗透测试

首先得清楚web安全/web渗透是什么:模拟黑客攻击,利用黑客技术,挖掘漏洞,提出修复建议。

涉及到的技术有:数据库/ *** 技术/编程技术/操作系统/渗透技术/攻防技术/逆向技术/SRC漏洞平台/ctf经验。。

岗位能力要求:

1、熟练使用awvs、nessus、metasploit、burpsuite等安全测试工具,并对其原理有一定了解

2、熟悉OWASP中常见的web安全漏洞、业务逻辑漏洞及其原理

3、熟悉渗透测试技术的整体流程,具备独立开展渗透工作的能力;

4、熟悉linux系统操作,了解常见web中间件、数据库、服务器相关漏洞

5、至少掌握一种编程语言,能够开发用于辅助日常工作的脚本

6、具备一定的php或java代码审计能力,能够对公开漏洞进行分析

7、具备良好的逻辑思维、沟通技巧及团队协作能力

8、已取得信息安全等级测评师证书的优先。(NISP)

想要系统的学习web渗透,可以参考企业对人才的要求进行学习。

0条大神的评论

发表评论