一击必杀!内网渗透——对不出网目标的精准打击
文章简介
这篇文章使用红日渗透靶场来进行练习对内网不出网机器的渗透,在这里感谢师傅们提供了现成的靶场环境,供我们小白来进行学习和练习。这个靶场设计的比较简单,但是通过这个靶场环境,采用多种手段进行渗透,可以使自己在没有那么多授权的真实环境条件下,通过靶场提高自己的技术。
配置网络
在 VM 虚拟机中按照下边的网络拓扑进行配置网络。网络拓扑图如下:
win7 具有双网卡,其中外网 ip 是 192.168.8.133,内网网段是 52。三台机器彼此互通,但是 win server 2008 和 win2003 不通外网。用我 mac 作为攻击机,来对这个靶场环境进行渗透测试。
外网打点
在 win7 这台靶机上,使用 PHPStudy 让网站可以运行起来。在攻击机上,访问 http://192.168.8.133 可以看到是一个 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 自带的 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 横移必须有目标主机的管理员权限或者说是拥有具有管理员权限的凭据。
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 中添加路由。
小贴士:
漏洞检测方法:use auxiliary/scanner/smb/smb_ms17_010
之后设置一下目标 ip 和线程即可,这里因为已经扫出存在漏洞的机器了,也就不在叙述。漏洞利用常使用的是:
这里的第一个和第三个模块需要目标开启命名管道,并且比较稳定。第二个模块只要存在漏洞即可,但是会有概率把目标打蓝屏,而且杀软拦截也会比较严格,如果有杀软就基本可以放弃这个模块了。在打 ms17010 的时候,不妨使用auxiliary/admin/smb/ms17_010_command
模块探测一下是否可以使用命名管道。
如果命令执行成功的话就可以优先考虑
这两个模块进行利用。
我在上边打得时候因为目标机器没有杀软就直接使用exploit/windows/smb/ms17_010_eternalblue
来打了,期间为了测试打过多次,确实出现了把目标机器打重启的情况。
总结
这个靶场设计的技能点比较基础,外网打点获得 shell 后,直接可以通过 cs 上线,在管理员权限下,抓取密码,新建一个 smb beacon 然后使用 psexec 对内网两台不出网的机器进行横向。借着这个靶场环境,对靶场预设漏洞使用多个手段进行尝试,并在这里做个总结,包括 phpmyadmin 拿 shell 的几种方法,内网不出网机器如何上线,使用多种方法打内网中不出网的 ms17010 以及在打 ms17010 时所要注意的细节。
希望大家点赞加收藏哦
版权声明: 本文为 InfoQ 作者【Thrash】的原创文章。
原文链接:【http://xie.infoq.cn/article/b3852b6800063bba3df976421】。文章转载请联系作者。
评论