内网渗透-代理篇

内网渗透-代理篇,第1张

最近参与内网渗透比较多,认知到自己在会话维持上过于依赖web服务,web服务一旦关闭,便失去了唯一的入口点。
本次以远程桌面连接来进行说明,介绍几种常用的连接方式。
本次目标主机ip为:1721686153

使用条件:服务器通外网,拥有自己的公网ip
msf是我进行内网渗透中用的最多的工具,它内置了很多强大的功能,用起来相当方便。
msf的meterpreter内置了端口转发功能,可以把内网的端口转发到本地。

转发目标主机的3389远程桌面服务端口到本地的8888,使用linux中的rdesktop连接本地的8888端口。

msf内置了socks模块,在session但基础上配置路由,调用即可使用,但是速度和稳定性都很差,不做详细介绍。

使用条件:服务器通外网,拥有自己的公网ip
lcx是一个经典的端口转发工具,直接把3389转发到公网的vps上。
通过大马上传lcxexe,执行系统命令,其中1111是vps的公网ip。

因为我公网vps使用的是linux的系统,lcx对应linux的工具为portmap 。
p1为监听的端口,p2为转发到的端口。

成功监听到转发出的3389端口。

直接使用远程桌面服务连接1111:33889

基于web服务的socks5隧道的优点是,在内网服务器不通外网的情况下也能正常使用。
常用的工具有:reGeorg,reDuh,Tunna和Proxifier。
本次只介绍reGeorg的具体用法。
选择对应脚本的tunnel上传到服务器。

访问上传文件,显示如下表示成功。

打开Proxifier,更改为脚本指定的端口。

本地电脑成功通过socks5带进了目标主机的内网。(若失败,可能是某些防护检测到了异常流量,可采用reDuh)
本地电脑直接远程连接目标主机的内网ip。

使用条件:目标主机通外网,拥有自己的公网ip
选择对应主机 *** 作系统的执行文件。

目标主机为windows系统,选择上传ew_for_Winexe文件。
公网vps使用ew_for_linux64文件。
首先在公网vps上执行:

-l为Proxifier连接的端口,-e为目标主机和vps的通信端口。

然后在目标主机中执行:

socks5隧道建立成功,成功把自己的主机带进目标内网。
使用Proxifier,配置ip和连接端口。

连接远程桌面成功。

传送门
使用条件:目标主机通外网,拥有自己的公网ip
首先需要在公网服务器搭建服务端,搭建方法参考: 传送门
要注意的是,客户端和服务端的版本号要一致,否则无法正常使用。
对frpcini进行配置,为了保证搭建的隧道不对他人恶意利用,加入账户密码进行验证。

上传frpcexe和frpcini到目标服务器上,直接运行frpcexe(在实战中可能会提示找不到配置文件,需要使用-c参数指定配置文件的路径frpcexe -c 文件路径)

公网vps主机上运行frps。

隧道建立成功,连接远程桌面。

类似的工具还有:sSocks,Termite等,不需要每种都掌握,有自己用的顺手的就行。

一般在网站服务的web服务关闭后,服务器重启后,大部门后门都会失效,这时需要用到系统服务封装工具。
以NSSM来进行示例,封装frpc为系统服务,建立持久的socks5隧道。
启动nssm图形化界面。

选择想要组册服务的exe应用。

设置服务的名字。直接点击install service,如下表示注册服务成功。

状态设置为启动,重启电脑进行测试,重启后frpcexe自动运行,成功和frps连接。

本次列举了一些常用的工具,还有很多工具没有列举到,
功能原理都是大同小异,有那么几个用的顺手就好。

frp软件做反向代理来实现内网穿透,这个方案是需要你有一台带公网IP的云服务器的,优点就是完全可控,自己想配置多少个端口的穿透都可以,速度跟你的云服务器带宽有关。

如何安装配置frp:

frp分为frps(server)和frpc(client)两个包 ,其中前者安装到我们的云服务器上,后者安装在需要被外网访问到的各个设备上。

1首先我们上传frpsexe(frp服务器端)以及frpsini(服务器端配置文件)到公网服务器上,然后我们执行 frpsexe -c frpsini 命令,启动frp服务器端,启动前需要修改配置文件,代码如下:
服务器端配置
[common]
# frp监听的端口,默认是7000,可以改成其他的
bind_port = 7000
# 授权码,请改成更复杂的,这个token之后在客户端会用到
token =12345678

# frp管理后台端口,请按自己需求更改
dashboard_port = 7500
# frp管理后台用户名和密码,请改成自己的
dashboard_user = admin
dashboard_pwd = admin
enable_prometheus = true
2可以看到服务器端启动成功,然后我们访问7500端口,输入账号密码,可以看到管理端启动成功。
客户端配置
首先我们上传frpcexe(frp客户端)以及frpcini(客户端配置文件)到内网主机电脑上,启动前需要修改配置文件,代码如下:
# 客户端配置
[common]
server_addr = 服务器ip
# 与frpsini的bind_port一致
server_port = 7000
# 与frpsini的token一致
token = 12345678

# 配置ssh服务, 也可以用来映射其他端口如3389
[ssh]
type = tcp
local_ip = 127001
local_port = 22
# 这个remote_port端口自定义,配置完成后会在公网服务器开启6000端口,来映射内网主机22端口
remote_port = 6000
#socks5代理配置 ,一般这个用途比较多
[socks5]
type=tcp
plugin=socks5
# socks代理账号密码,需要修改不要使用弱口令
plugin_user=admin
plugin_passwd=admin
#映射到共外网服务器的端口
remote_port = 8000
2然后我们配置frpcini中的服务器ip,然后运行 frpcexe -c frpcini 命令,可以看到连接成功
socks5代理配置
1当我们在客户端配置文件中使用了socks5,当我们运行命令连接服务器时,会提示"sock5 start proxy success"
2然后我们安装proxifier(由于软件付费,需要激活码的粉丝可以私信我),安装完成后代开proxifier配置socks代理,首先我们点击"Profile"中的"Proxy Servers"
2然后我们选择添加,然后输入 公网服务器的IP地址和端口,以及frpcini文件中的socks5账号和密码 。
3然后点击"ok",之后会d窗,然后点击"是"
4然后我们就完成了socks5代理配置,现在自己的电脑全部的流量都会通过内网主机代理出去,我们就可以直接访问内网主机的内网,以及配置渗透工具进行内网渗透。可以看到代理检测成功。

Frp的TCP模式问题,这里主要存在2个问题。

试想一下,frp的tcp模式相当于你的设备直接向公网暴露了一个tcp端口。任何设备都可以尝试连接这个端口。这里就会有很大的安全风险。

我的所有请求都需要进行frp的服务器进行中转,这里势必会造成比较大的网络延时。以及耗掉服务器流量,这对我们的服务响应速度和经济价值会造成较大影响。

对于安全问题,frp的思路是,既然这些服务有可能被坏人攻击,那我们只要限制特定设备能够使用这个端口就好了。

那么问题来了,我怎么知道哪些设备是允许使用的呢?

服务端配置?那就又陷入了内网穿透的问题。

最简单的方法是使用密钥验证。这就是frp的Secret TCP(stcp)模式的思路。

如下图所示,frp客户端1需要暴露一个tcp端口。于是他在向服务端注册时,额外传了一个密钥。

所有其他设备期望访问这个端口,必须要先验证这个密钥。

这样一来,我们就需要在发起请求的设备上也配置一个frp客户端,通过这个客户端带着密钥发起请求。
# frpcini 配置:

[common]

# 你的frp服务器的公网ip

server_addr = xxxx

# 你的frp服务器的默认端口

server_port = 7000

[rdp]

type = stcp

# 只有 sk 一致的用户才能访问到此服务

sk = abcdefg

local_ip = 127001

# 远程桌面的本地端口号

local_port = 3389

# frpcini

[common]

# 你的frp服务器的公网ip

server_addr = xxxx

# 你的frp服务器的默认端口

server_port = 7000

[rdp_visitor]

type = stcp

# stcp 的访问者

role = visitor

# 要访问的 stcp 代理的名字

server_name = rdp

# 只有 sk 一致的用户才能访问到此服务

sk = abcdefg

# 绑定本地端口用于访问 远程桌面 服务

bind_addr = 127001

bind_port = 6000

此时,你在客户端2,使用127001:6000即可访问客户端1的远程服务。
思考一下,我们的frp服务器主要目的是为了解决两台设备相互识别的情况。在正式运行时,其实并不需要服务端做什么事情。

frp客户端就好比两个相亲的对象,frp服务端是媒婆。媒婆介绍完之后,就应该有相亲对象自己聊天了。

这个就是点对点模式(p2p)。在frp中,这个可以通过设置xtcp实现。

服务端:配置需要增加一个udp端口 7001,增加完之后就是如下

# frpsini

[common]

bind_port = 7000

bind_udp_port = 7001

# frpcini

[common]

# 你的frp服务器的公网ip

server_addr = xxxx

# 你的frp服务器的默认端口

server_port = 7000

[rdp]

type = xtcp

# 只有 sk 一致的用户才能访问到此服务

sk = abcdefg

local_ip = 127001

# 远程桌面的本地端口号

local_port = 3389

# frpcini

[common]

# 你的frp服务器的公网ip

server_addr = xxxx

# 你的frp服务器的默认端口

server_port = 7000

[rdp_visitor]

type = xtcp

# stcp 的访问者

role = visitor

# 要访问的 stcp 代理的名字

server_name = rdp

# 只有 sk 一致的用户才能访问到此服务

sk = abcdefg

# 绑定本地端口用于访问 远程桌面 服务

bind_addr = 127001

bind_port = 6000
此时,你在客户端2,使用同样的方式,以127001:6000即可访问客户端1的远程服务。

不过需要注意的是,目前frp的p2p服务还不完善,很多nat设备还是不能够穿透的。

此时大家还是需要切换回stcp来使用。

内网穿透从字面上来说就是将本地的服务器映射到外网可访问

设想下

    如果有已知的公网服务器,那内网的本地服务就可以映射到外网了。

    如果没有已知的公网服务器,那只能代理到外网的服务器访问即可。

    ps: 公网服务器与可访问外网的服务器是有区别的。区别在于用户访问某宝服务,先是到公网服务器然后再转发的淘宝服务。所以可访问外网的服务器不等于公网服务器。

换句话说直接将服务器部署在与公网服务器相通的机器上不就可以了,我也是这样想的。所以就有生产环境与测试环境,其实内网穿透还是存在安全隐患的,内网穿透大部分应用于测试环境,比如常用的微信相关开发。

最后我们来聊聊FRP与NGROK

        两者的原理都一样,通过解析过的域名做本地服务端口映射。

        Ngrok相对比较简单,只需要能访问外网的机器即可。可参考 >

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/13444838.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-08-07
下一篇 2023-08-07

发表评论

登录后才能评论

评论列表(0条)

保存