1. 代理

(1). 正向代理

a. 概念
  • 正向代理即通常所说的代理,用于代表内部网络用户Internet上的服务器(或称外部服务器,通常为Web服务器)发出连接请求并接收响应结果,执行该代理功能的服务器称为代理服务器
  • 使用代理服务器访问外部网络时,客户端必须在局域网设置中指明代理服务器的地址以及要代理的服务的端口号。
b. 特点
  1. 代理客户端
  2. 隐藏真实客户,为客户端收发请求,使真实客户端对服务器不可见
  3. 一个局域网内的所有用户可能被一台服务器做了正向代理,由该服务器负责HTTP请求
c. 数据流向
  • Client <- 代理客户端 -> Proxy Server -> Server

(2). 反向代理

a. 概念
  • 反向代理的方向与正向代理相反,指代表外部网络用户内部服务器发出请求,即接收来自Internet上用户的连接请求,并将这些请求转发给内部网络上的服务器,然后将从内部服务器上得到的响应返回给Internet上请求连接的客户。执行反向代理服务的服务器称为反向代理服务器,反向代理服务器对外部用户表现为一个服务器。
b. 特点
  1. 代理服务器
  2. 隐藏真实的服务器,为服务器收发请求,使真实服务器对客户端不可见
  3. 负载均衡服务器,将用户的请求分发到空闲的服务器
  4. 意味着用户和负载均衡服务器直接通信,即用户解析服务器域名时得到的是负载均衡服务器的IP
c. 数据流向
  • Client -> Proxy Server -> Server

(3). Socks代理

a. Socks代理概述
  • 当通过代理服务器访问一个网址时,socks服务器是起到了一个中间人的身份,他分别与两方(浏览器/被访问的网站)通讯然后将获取到的结果告知另一方。只要配置好socks代理后,就无需指定被访问目标,直接在浏览器的地址栏输入地址就能访问任意网站。
b. 工作原理
  • 因为socks代理中有一个交互协议,当准备访问一个网站并敲击回车时,浏览器会先发送一个被访问目标的基本信息(URL和服务端口)给socks服务端。Socks服务端解析了这个信息后,会代替浏览器去访问目标网站,并将访问结果回复给浏览器端。
c. 代理和端口转发的区别
  • 代理需要socks协议支持,端口转发无需协议支持
  • Socks代理可以理解为增强版的给端口转发,它在服务端监听一个服务端口,当有新的连接请求时会从socks协议中解析出访问目标的URL的目标端口。

2. ReGeorg工具

(1). 概述

  • ReGeorg主要是把内网服务器的端口通过http/https隧道转发到本机,形成一个回路
  • 用于目标服务器在内网或做了端口策略的情况下连接目标服务器内部开放端口
  • 它利用webshell建立一个socks代理进行内网穿透,服务器必须支持aspx、php或jsp这些web程序中的一种。
  • 攻击机通常是客户端,由python编写

(2). 工作原理

其工作原理可简单描述为:python客户端在本地监听一个端口提供socks服务,并将数据通过http/htps协议发送到服务端上,并从服务端上用socket实现转发

实现方法

(3). 使用方法

a. 安装和配置reGeorg
  • 下载地址:https://github.com/sensepost/reGeorg
  • 需要支持urllib3库

b. 使用

  1. 使用neoreg.py生成隧道脚本

    python neoreg.py generate -k password
    
  2. 根据服务器支持的shell语言,上传对应的脚本到服务器端

  3. 使用neoreg.py脚本进行隧道连接

    #可以使用-p来指定本地监听的端口
    python3 neoreg.py -k password -u http://xx/tunnel.php 
    

3. msf route

(1). 使用 MSF 进行路由转发

MSF中自带路由转发功能,在已经获取Meterpreter Shell的基础上添加一条去往“内网”的路由

直接使用MSF访问原本不能直接访问到内网资源,当路由可达了,就可以使用MSF进行探测了。

(2). MSF跳板实现过程

  1. 需要获得一个msf的session会话。
  2. 获取内网地址。
  3. 在msf中添加内网网段的路由。

(3). 路由添加方法

run autoroute -s 内网网段。 #添加去往内网网段的转发路由
run autoroute -p #查看路由的添加情况

4. Proxychains代理

(1). 概述

  • ProxyChains 是一个开源代理工具,可以在Linux下实现全局代理的软件,性能稳定,可以使任何程序通过代理上网
  • ProxyChains 通过一个用户定义的代理列表强制连接指定的应用程序,支持HTTP、SOCKS4、SOCKS5类型
  • 项目地址:https://github.com/rofl0r/proxychains-ng

(2). 使用

  1. 在使用前,需要修改配置文件/etc/proxychains.conf

    #1. 删除dynamic_chain前面的注释
    #2. 在最底部添加要代理的服务器
    [ProxyList]
    socks4 127.0.0.1 9050
    
  2. 测试代理服务器是否能够正常工作

    cp /usr/lib/proxychains3/proxyresolv /usr/bin/
    proxyresolv www.baidu.com
    
  3. 使用proxychains启动任意软件

    proxychains sqlmap -u [url]
    proxychains msfconsole
    proxychains firefox
    

5. Proxifier

(1). 概述

  • Profler是一款功能非常强大的socks5客户端,可以让不支持通过代理服务器工作的网络程序能通过HTTPS或SOCKS代理或代理链
  • 支持socks4,socks5,http代理协议,支持TCP,UDP协议,可以指定端口、IP、域名、程序等运行模式

(2). 使用

  1. 配置代理服务器
  2. 设置IP地址和端口号
  3. 设置代理规则
  4. 指定哪个软件的流量经过代理,不需要代理的设置为direct模式

6. Sockscap

(1). 概述

  • Sockscap64是一款由Taro开发的免费的应用程序外壳,它可以使windows网络应用程序通过 SOCKS 代理服务器访问网络而不需要对这些应用程序做任何修改
  • sockscap64目前支持socks代理和http代理,并且支持tcp和udp

(2). 使用

  1. 点击“代理”添加本地代理,填写相关配置信息
  2. 添加程序,可以通过拖入快捷方式和新建应用程序的方式添加程序
  3. 右键点击想要代理的程序,选择"在隧道中运行所选程序”