在进行内网横向移动的过程中我们可能经常会遇到这样的情况,目标内网中的其他主机不出外网,那么我们使用cs直接生成的reverse shell就没有办法使目标内网中的”断网”主机上线,今天我就和大家一起学习如何上线内网的”断网”主机。
环境准备
1 | OWA2013:192.168.3.144 192.168.5.55 模拟边界机192.168.5.*这个网段使用nat模式,192.168.3.*使用仅主机模式 |
Pivot listener
建立Pivot listener
首先让边界主机OWA2013上线,上线后对着边界机右键,选择pivoting->Listener
配置过程中需要注意,这里的Listen host要选择和内网主机所在一个段所对应的ip,我这里是192.168.3.144
Pivot listener生成好以后,选择Packages->windows executalbe(s)
配置过程中Listener选择我们刚生成的Pivot listener
假设我们这里已经拿到了内网断网主机的密码,使用ipc进行连接。
在文件管理这里将生成的文件上传到断网主机
使用remote exec wmi模块去执行上传的exe
目标主机上线,这里有一个小点需要注意,就是上线的这台断网机只要我们不进行交互默认的last时间就是一直增长的,这里不需要管这个超时时间的问题,需要的时候执行命令就可以了
smb beacon
什么是smb beacon?
SMB Beacon使用命名管道通过父级Beacon进行通讯,当两个Beacons链接后,子Beacon从父Beacon获取到任务并发送。 因为链接的Beacons使用Windows命名管道进行通信,此流量封装在SMB协议中,所以SMB Beacon相对隐蔽,绕防火墙时可能发挥奇效(系统防火墙默认是允许445的端口与外界通信的,其他端口可能会弹窗提醒,会导致远程命令行反弹shell失败)。
什么是命名管道?
“命名管道” 又名 “命名管线”,但是通常都叫命名管道,是一种简单基于 SMB 协议的进程间通信(Internet Process Connection - IPC)机制。 在计算机编程里,命名管道可在同一台计算机的不同进程之间或在跨越一个网络的不同计算机的不同进程之间,支持可靠的、单向或双向的数据通信传输。和一般的管道不同,命名管道可以被不同进程以不同的方式方法调用(可以跨语言、跨平台)。只要程序知道命名管道的名字,任何进程都可以通过该名字打开管道的另一端,根据给定的权限和服务器进程通信。
命名规范
命名管道的命名是采用的 UNC 格式:\Server\Pipe[Path]Name 的。
第一部分\Server指定了服务器的名字,命名管道服务即在此服务器创建,其字符串部分可表示为一个小数点(表示本机)、星号(当前网络字段)、域名或是一个真正的服务;第二部分 pipe 是一个不可变化的硬编码字串,以指出该文件是从属于 NTFS;第三部分[Path]Name则使应用程序可以唯一定义及标识一个命名管道的名字,而且可以设置多级目录。
利用条件
- 目标开放445端口
- 得知目标主机账号密码并建立ipc连接
如何使用smb beacon
首先我们创建一个smb的listener
我们再通过ipc和内网的断网主机192.168.3.73建立连接
建立连接后通过jump命令来让192.168.3.73这台断网主机上线
1 | jump psexec 192.168.3.73 smb |
上线后根据自己的需要执行对应的操作即可
当使用结束后,可以使用unlink命令取消和该内网主机的连接
1 | unlink 192.168.3.73 |
当想再次让该断网主机上线,使用link命令连接即可
1 | link 192.168.3.73 |
Pivot listener和smb beacon在使用上的区别
使用pivot listener可以使用生成executables来上线,也可以使用jumpexec的方式上线
首先创建一个pivot listener test666
配置这里还是要注意应该选择和断网机所在一个C段的ip,我这里是192.168.3.144
使用ipc和目标主机建立连接,使用jump psexec来让目标主机上线,test666为刚刚创建的pivote listener的名字
成功上线
- 使用smb beacon可以使用jumpexec的方式上线,但不能使用生成executables来上线
Attacks->packages->windows executable(s),listener选择smb
将生成的文件上传到目标主机
使用remote-exec来执行beacon.exe
目标主机成功执行beacon.exe,但是并不能上线
总结
最后我总结一下这两种上线方式的使用区别
- pivot listener主要使用端口转发的方式来上线断网主机,这种方式会在我们的边界主机上开放一个端口,如果目标内网存在防火墙,则有可能无法使用这种方式来进行横向移动,但是使用这种方式既可以使用生成exe并执行的方式来上线,也可以使用psexec的方式来上线断网机。
- 使用smb beacon仅仅需要可以和目标的445端口进行通信即可,不需要额外开启其他端口,并且使用smb上线可以规避防火墙。但是这种方式不能使用生成exe并执行的方式上线,只能通过使用psexec的方式上线。
参考文章