Socks代理简介

代理简介

正常的HTTP通信是这样的:

image-20230910102815998

  1. 客户端先通过TCP与服务器建立连接。
  2. 连接建立完成后,客户端向服务器发送请求。
  3. 服务器接收到客户端发来的请求,找到所请求的文件,并通过原来的连接发回去。
  4. 客户端接收到服务器传过来的文件,并用浏览器渲染出来给用户看

而通过代理服务器进行HTTP通信则是这样的:

image-20230910120557157

  1. 客户端先与代理服务器建立TCP连接,告诉代理服务器我想要访问某某网站的哪个页面
  2. 代理服务器收到客户端请求,再建立一条到服务端的TCP连接,把这个请求通过这个连接转发到服务端。
  3. 这样在服务器看来,就好像是客户端请求内容一样,然后服务器把所请求的内容响应给代理服务器
  4. 代理服务器再把内容通过与客户端的连接送回客户端

代理服务器作为一个中间人,负责转发客户端请求消息以及服务端响应消息

正向代理

正向代理(Forward Proxy):是一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。客户端必须设置正向代理服务器,当然前提是要知道正向代理服务器的IP 地址,还有代理程序的端口。

  • 隐藏访问者的行踪

image-20230910160707205

  • 访问无法访问的服务器B

比如我们国内访问谷歌,直接访问访问不到,我们可以通过一个正向代理服务器,请求发到能够访问谷歌的代理服务器,这样由代理去谷歌取到返回数据,再返回给我们,这样我们就能访问谷歌了

image-20230910160734776

反向代理

反向代理(Reverse Proxy):正好与正向代理相反,对于客户端而言代理服务器就像是原始服务器,并且客户端不需要进行任何特别的设置。客户端向反向代理发送普通请求,接着反向代理将判断向何处(原始服务器)转交请求,并将获得的内容返回给客户端。

实际运行方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器

  • 保护和隐藏原始资源服务器

image-20230910160818131

正向代理代理客户端,反向代理代理服务器。

透明代理

透明代理的意思是客户端根本不需要知道有代理服务器的存在,它改变你的请求报文,并会传送真实IP。

透明代理实例,很多公司使用的行为管理软件

image-20230910160914380

客户端 A 和客户端 B 并不知道行为管理设备充当透明代理行为,当用户 A 或用户 B 向服务器 A 或服务器 B 提交请求的时候,透明代理设备根据自身策略拦截并修改用户 A 或 B 的报文,并作为实际的请求方,向服务器 A 或 B 发送请求,当接收信息回传,透明代理再根据自身的设置把允许的报文发回至用户 A 或 B,如上图,如果透明代理设置不允许访问服务器 B,那么用户 A 或者用户 B 就不会得到服务器 B 的数据。

参考:https://laravelacademy.org/post/9336

Socks简介

SOCKS是一种网络传输协议,主要用于客户端与外网服务器之间通讯的中间传递。

根据OSI模型,SOCKS是会话层的协议,位于表示层与传输层之间。

使用TCP协议传输数据,因而不提供如传递 ICMP 信息之类的网络层网关服务。

705728-20160424234827195-1493107425

OSI参考模型:https://www.cnblogs.com/qishui/p/5428938.html

现今大多组织的网络架构,利用网络防火墙将组织内部的网络结构与外部网络如 Internet 有效地隔离开来。这些防火墙系统通常以应用层网关的形式工作在网络之间,提供受控的 TELNET、FTP、SMTP 等的接入。

而SOCKS则提供一个通用框架来使这些协议安全透明地穿过防火墙。

Socks代理简介

  1. 被代理端与代理服务器通过 SOCKS4/5 代理协议进行通讯;
  2. SOCKS4:是对HTTP代理协议的加强,它不仅代理HTTP协议,而是对所有向外的连接进行代理,没有协议限制;
  3. SOCKS4a:SOCKS4协议的简单扩展,允许客户端对无法解析域名的目的主机进行访问
  4. SOCKS5:SOCKS5比SOCKS4a多了身份验证、IPv6、UDP支持。创建与SOCKS5服务器的TCP连接后客户端需要先发送请求来确认协议版本及认证方式

使用Socks代理

  1. SOCKS服务器的IP地址
  2. SOCKS服务所在端口
  3. SOCKS服务是否需要身份验证

Socks代理与VPN区别

VPN主要用于从外网访问企业、公司的内部网络,原理是先登录到VPN防火墙、服务器,得到权限,在进入内网。这个过程,用户一直是以自己的身份进行的。而Socks5是一种代理,也就是先所有的交互数据都先经过另一台主机(网卡),这个过程中用户访问其他网络是都是使用的代理服务提供者的身份。

  • 张三在外出差想访问公司内网服务器

image-20230910161215501

Socks代理工具

EarthWorm

http://rootkiter.com/EarthWorm/

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

  • FRP

https://github.com/fatedier/frp

FRP 是一个可用于内网穿透的高性能的反向代理应用

  • ProxyChains

http://proxychains.sourceforge.net/

关于ProxyChains工具:

  1. 它是一个代理工具。
  2. 最新版本:3.1
  3. 专用OS:Linux和其他Unices。
  4. 允许TCP和DNS通过代理隧道。
  5. 支持HTTP、SOCKS4和SOCKS5代理服务器。
  6. 不同的代理类型可以混合在同一链中。
  7. 代理链:用户定义的代理链列表。

可用性:

  1. 通过代理服务器运行任何程序。
  2. 从限制性防火墙后面访问互联网。
  3. 隐藏你的IP
  4. 通过代理服务器运行SSH、telnet、wget、ftp、apt、vnc、nmap。
  5. 从外部通过反向代理访问内联网(192.168.. / 10...* )。
  • Proxifier

https://www.proxifier.com/

Proxifier 是一个程序,它允许不支持通过代理服务器工作的网络应用程序通过 SOCKS 或 HTTPS
代理或代理服务器链进行操作。

  • Stowaway

https://github.com/ph4ntonn/Stowaway

Stowaway是一个利用go语言编写、专为渗透测试工作者制作的多级代理工具
用户可使用此程序将外部流量通过多个节点代理至内网,突破内网访问限制,构造树状节点网络,并轻松实现管理功能

  • iox

端口转发 & 内网代理工具

https://github.com/eddieivan01/iox

特性:
流量加密(可选)
友好的命令行参数
逻辑优化
UDP流量转发
反向代理模式中使用TCP多路复用

  • Chisel

A fast TCP tunnel over HTTP
https://github.com/jpillora/chisel

Chisel是快速的TCP隧道,通过HTTP传输,并通过SSH保护。单个可执行文件,包括客户端和服务器。用Go(golang)编写。尽管Chisel也可用于为您的网络提供安全的端点,但它主要用于穿越防火墙。

  • Other
1
2
3
4
reDuh:https://github.com/sensepost/reDuh
reGeorg:https://github.com/sensepost/reGeorg
sSocks:https://sourceforge.net/projects/ssocks/
SocksCap64:http://www.sockscap64.com