渗透检测基础知识-龙岩渗透测试

hacker|
144

渗透检测步骤

渗透测试是什么?

渗透测试,是为了证明网络防御按照预期计划正常运行而提供的一种机制。不妨假设,你的公司定期更新安全策略和程序,时时给系统打补丁,并采用了漏洞扫描器等工具,以确保所有补丁都已打上。如果你早已做到了这些,为什么还要请外方进行审查或渗透测试呢?因为,渗透测试能够独立地检查你的网络策略,换句话说,就是给你的系统安了一双眼睛。而且,进行这类测试的,都是寻找网络系统安全漏洞的专业人士。

渗透测试流程是怎样的?

步骤一:明确目标

1、确定范围:规划测试目标的范围,以至于不会出现越界的情况。

2、确定规则:明确说明渗透测试的程度、时间等。

3、确定需求:渗透测试的方向是web应用的漏洞?业务逻辑漏洞?人员权限管理漏洞?还是其他,以免出现越界测试。

步骤二:信息收集

1、基础信息:IP、网段、域名、端口

2、系统信息:操作系统版本

3、应用信息:各端口的应用,例如web应用、邮件应用等等

4、版本信息:所有探测到的东西的版本

5、人员信息:域名注册人员信息,web应用中网站发帖人的id、管理员姓名等

6、防护信息:试着看能否探测到防护的设备,像有没有CDN、waf等

步骤三:漏洞探索

利用上一步中列出的各种系统、应用等等,使用响应的漏洞

方法:

1、漏扫、awvs、IBM appscan等

2、结合漏洞去exploit-db等位置找利用

3、在网上寻找验证poc

步骤四:漏洞验证

将上述中发现有可能可以成功利用的全部漏洞都验证一遍,结合实际情况搭建模拟环境进行实验,成功后再引用于目标。

自动化验证:结合自动化扫描工具提供的结果

手工验证:根据公开的资源进行手工验证

试验验证:自己搭建模拟环境进行验证

登录猜解:可以尝试一下登录口的账号密码的发现

业务逻辑漏洞:如发现业务逻辑漏洞,进行验证

步骤五:信息分析

为下一步实施渗透做准备

1、精准打击:准备好上一步探测到的漏洞的exp,用来精准打击

2、绕过防御机制:是否有防火墙等设备,如何绕过

3、定制攻击路径:最佳工具路径,根据薄弱入口,高内网权限位置,最终目标

4、绕过检测机制:是否有检测机制,流量监控,杀毒软件 ,恶意代码检测等(免杀)

5、攻击代码:经过试验得来的代码,包括不限于XSS代码,SQL注入语句等

步骤六:获取所需

1、实施攻击,根据前几步的结果,进行攻击

2、获取内部信息:基础设施(网络连接,vpn,路由,拓扑等)

3、进一步渗透:内网入侵,敏感目标

4、持续性存在:一般我们对客户做渗透不需要,但真实的环境中,我们会做rookit、后门,添加管理账号。驻扎手法。

5、清理痕迹:清理相关日志(访问,操作),上传文件等

步骤七:信息整理

1、整理渗透工具:整理渗透过程中用到的代码,poc、exp等

2、整理收集信息:整理渗透过程中收集到的一切信息

3、整理漏洞信息:整理渗透过程中遇到的各种漏洞,各种脆弱的位置信息

(为了形成报告,形成测试结果使用)

步骤八:形成报告

1、按需整理:按照之前第一步跟客户确定好的范围和需求来整理资料,并将资料形成报告

2、补充介绍:要对漏洞成因、验证过程和带来的危害进行分析

3、修补建议:当然要对所有产生的问题提出合理高效安全的解决办法

内网渗透--对不出网目标的打法

配置网络

在VM虚拟机中按照下边的网络拓扑进行配置网络。网络拓扑图如下:

win7具有双网卡,其中外网ip是192.168.8.133,内网网段是52。三台机器彼此互通,但是win server 2008和win2003不通外网。用我mac作为攻击机,来对这个靶场环境进行渗透测试。

外网打点

在win7这台靶机上,使用PHPStudy让网站可以运行起来。在攻击机上,访问   可以看到是一个phpStudy 探针。对这网站进行渗透,因为本文主要写在内网渗透过程中对不出网主机的渗透,所以此处外网打点就不写的很详细了。

针对此靶场进行外网渗透拿权限大致有这几种方法:

通过phpmyadmin弱口令,进入phpmyadmin后台。然后知识点就变成了,通过phpmyadmin进行getshell,这个点又分为,得到网站绝对路径后,使用select into outfile的方式写shell和利用日志写shell。在此处,我是使用日志写shell的方法拿到权限。因为secure_file_priv配置为null,禁止修改目录下的文件,也就不能使用into outfile的方式写入shell。

通过目录扫描可以扫出beifen.rar,备份文件。在源码中可以找到登陆后台的账号密码:admin/123456和登陆路径/index.php?r=admin,在前台模板文件中添加一句话木马连接也可获取shell。

获得webshell的信息收集

通过外网打点获得的webshell,可以进行一波信息收集,摸清我是谁?我在哪?有没有内网环境?有没有杀软?通过拿到webshell后的信息收集的结果来评估一下有没有必要继续深入或者初步了解继续深入的话需要哪些手段。

我是谁?

蚁剑已经给出基础信息

我在哪?

使用ipconfig /all 看一下网络信息

目标有两个网卡,并且存在域环境,那么就有打它内网的必要了。

有没有杀软?

tasklist查看一下进程信息

根据进程查一下是否有杀软

目标没有使用杀软,还有域环境那么让它直接cs上线。

内网渗透

cs上线

内网信息收集

信息收集每个人都有自己的习惯,信息收集的顺序和信息收集的项目也都不太一样,只要根据自己的习惯和嗅觉,针对目标具体情况进行收集,以求尽快的拿下目标就好。信息收集的越全面突破口也就会越多,考虑到篇幅和文章内容匹配度等因素,此处并没有写出大量信息收集方法。

使用cs自带的net view查看域信息。

使用cs自带功能进行端口扫描,分别对8和52两个网段进行扫描进行完这两个步骤以后,cs会把扫到的目标列出来。

因为拿到的是管理员权限,可以先抓一波密码。用 cs 的 hashdump 读内存密码,用 mimikatz 读注册表密码:logonpasswords。

此处打码的地方是因为配置靶机登陆时靶机提示重置密码,我给靶机改了个包含个人信息的密码。蠢哭。拿到密码后,目标主机没有开启防火墙,可以使用cs自带的psexec做一波横向,因为抓到很多域中机器密码,域控密码也抓到了。

内网横向(通过登录凭证)

这个靶机设置的比较简单,抓到密码后,因为抓到了域控登陆的凭证,那么使用psexec即可横向内网所有机器。因为,另外两台内网的机器不出网,那么就到了本文着重练习的点了,打不出网的机器。

不出网机器上线一般有以下几种方式:

使用smb beacon

配置listener通过HTTP代理上线

使用pystinger搭建socks4代理

这几种方式之前有师傅也在先知写过 《不出网主机上线方法》 。此处我采用的SMB beacon这个方法。

SMB Beacon使用命名管道通过父级Beacon进行通讯,当两个Beacons链接后,子Beacon从父Beacon获取到任务并发送。因为链接的Beacons使用Windows命名管道进行通信,此流量封装在SMB协议中,所以SMB beacon相对隐蔽。SMB beacon不能直接生成可用载荷, 只能使用 PsExec 或 Stageless Payload 上线。

首先得到内网中一台主机的beacon,抓取密码后进行smb喷射,得到另一台开放445端口的机器上的administrator账户密码,在目标机器不出网的情况下,可以使用Smb beacon使目标主机上线

使用条件

具有 SMB Beacon 的主机必须接受 445 端口上的连接。

只能链接由同一个 Cobalt Strike 实例管理的 Beacon。

利用这种beacon横移必须有目标主机的管理员权限或者说是拥有具有管理员权限的凭据。

使用方法:

1.建立smb的listener

2.在cs中使用psexec进行横向移动,选择现有的beacon作为跳板,这里凭据必须是administrator ,即拥有目标主机管理员权限

3.连接成功,可以看到smb beacon上线的主机右侧有∞∞标识

使用这种方法上线的机器,主要是通过出网机作为一个中间人,不出网主机成功上线后,如果出网机一断开,这个不出网主机也会断。

内网横向(通过ms-17010)

在拿下win7的时候,可以给它传一个fscan,给win7做一个内网大保健。上传fscan后,运行扫一下内网。

发现存在ms17010。

ms17010常见的几种打法:

msf

ladon/ladon_ms17010

从msf分离出的exe

nessus里的exe

cs插件

这几种打法,我在这个环境中都做过尝试。过程就不一一叙述了,直接说我测试的结果。msf是最稳定的,但是打起来有稍许的麻烦因为要设置监听模块和选择攻击模块等配置。ladon_ms17010方便但是不太稳有时候会打不成功。cs插件也不稳,并且在这种不出网网络不稳定的情况下成功率会变的更低。

这个图片的ip可能跟上边配置符不起来,因为我在测试过程中,网断过几次,ip就变了。所以,在打的时候,如果ladon和分离出的exe没有打成,不要轻易放弃,用msf在打打试试,毕竟工具就是工具,不能过分依赖某个工具。

在这种不出网的情况下,可以优先考虑使用从msf分离出的exe和ladon_ms17010来打,打成功会直接通过自定义的dll新建一个用户并加入管理员组,开启3389端口。根据实际情况,可考虑在合适的时间段和条件下直接远程登入,翻一下敏感数据,往往会因为运维人员的很多“好习惯”而给渗透带来很多便利,比如说“密码本.txt”。

msf打不出网机器的ms17010

msf在单兵作战的时候还是很稳定很香的。首先,让出网机器先在msf上线,可以用cs直接传递会话,或者生成个msf马直接运行一下。在这的方法就很多了。win7在msf上线后,因为我们已经提前知道了,存在52这个不出网的段,那么就需要在msf中添加路由。

查看路由

run get_local_subnets

添加路由

run autoroute -s 192.168.52.0/24

查看添加的路由

run autoroute -p

把shell切换到后台,然后使用ms17010模块进行漏洞利用,监听时使用正向监听,即可

小贴士:

漏洞检测方法:

use auxiliary/scanner/smb/smb_ms17_010

之后设置一下目标ip和线程即可,这里因为已经扫出存在漏洞的机器了,也就不在叙述。

漏洞利用常使用的是:

auxiliary/admin/smb/ms17_010_command

exploit/windows/smb/ms17_010_eternalblue

exploit/windows/smb/ms17_010_psexec

这里的第一个和第三个模块需要目标开启命名管道,并且比较稳定。第二个模块只要存在漏洞即可,但是会有概率把目标打蓝屏,而且杀软拦截也会比较严格,如果有杀软就基本可以放弃这个模块了。

在打ms17010的时候,不妨使用auxiliary/admin/smb/ms17_010_command模块探测一下是否可以使用命名管道。

use auxiliary/admin/smb/ms17_010_commandsetrhosts192.168.164.156192.168.164.161setcommandtasklistshow optionsrun

如果命令执行成功的话就可以优先考虑

auxiliary/admin/smb/ms17_010_commandexploit/windows/smb/ms17_010_psexec

这两个模块进行利用。

我在上边打得时候因为目标机器没有杀软就直接使用exploit/windows/smb/ms17_010_eternalblue来打了,期间为了测试打过多次,确实出现了把目标机器打重启的情况。

总结

这个靶场设计的技能点比较基础,外网打点获得shell后,直接可以通过cs上线,在管理员权限下,抓取密码,新建一个smb beacon然后使用psexec对内网两台不出网的机器进行横向。

进行普通渗透测试和高级渗透测试需要花费多少天?

普通网站渗透测试大约3到7天,是由软件去渗透测试扫描漏洞。

如果是高级网站渗透测试的话大约7到15天,是由人工对每个功能和代码进行全面的测试,看杜绝工具扫描。全靠人工实打实的实战经验基础。

有体验过承制科技网络安全渗透测试技术服务的吗?听说不错。

承制的确不错,我们很多项目都是找他们做的,这个公司很低调,技术很牛,那是相当的靠谱。

什么是渗透检测

渗透测试 (penetration test)并没有一个标准的定义,国外一些安全组织达成共识的通用说法是:渗透测试是通过模拟恶意黑客的攻击方法,来评估计算机网络系统安全的一种评估方法。这个过程包括对系统的任何弱点、技术缺陷或漏洞的主动分析,这个分析是从一个攻击者可能存在的位置来进行的,并且从这个位置有条件主动利用安全漏洞。

换句话来说,渗透测试是指渗透人员在不同的位置(比如从内网、从外网等位置)利用各种手段对某个特定网络进行测试,以期发现和挖掘系统中存在的漏洞,然后输出渗透测试报告,并提交给网络所有者。网络所有者根据渗透人员提供的渗透测试报告,可以清晰知晓系统中存在的安全隐患和问题。

我们认为渗透测试还具有的两个显著特点是:渗透测试是一个渐进的并且逐步深入的过程。渗透测试是选择不影响业务系统正常运行的攻击方法进行的测试。

作为网络安全防范的一种新技术,对于网络安全组织具有实际应用价值。但要找到一家合适的公司实施渗透测试并不容易。

0条大神的评论

发表评论