序文
この記事では、ペネトレーションの観点から、個人がよく使用するいくつかのイントラネット ペネトレーション ツールとイントラネット プロキシ ツールをまとめ、その簡単な原理と使用方法を紹介します。
1.nps-np
1.1 はじめに
nps は、軽量、高性能、強力なイントラネット侵入プロキシ サーバーです。現在、TCP および UDP トラフィック転送をサポートしており、あらゆる TCP および UDP 上位層プロトコル (イントラネット Web サイトへのアクセス、ローカル支払いインターフェイスのデバッグ、SSH アクセス、リモート デスクトップ、イントラネット DNS 解決など) をサポートできます。イントラネット http プロキシ、イントラネット Socks5 プロキシ、p2p などをサポートし、強力な Web 管理ターミナルが付属しています。
-
パブリック IP を持つサーバー (VPS) がサーバー ( NPS )を実行します。
-
クライアント ( NPC )を実行するイントラネット上で実行される 1 つ以上のサーバーまたは PC
1.2 特徴
- Go言語で書かれています
- クロスプラットフォームのサポート
- 複数のプロトコルをサポートするプロキシ
- ウェブ管理端末
1.3 使用方法
https://github.com/ehang-io/nps/releases
1.4 NPS
インストール構成
サーバーの対応するバージョンのサーバーを見つけます。
cd ~ wget https://github.com/cnlh/nps/releases/download/v0.23.2/linux_amd64_server.tar.gz tar xzvf linux_amd64_server.tar.gz cd ~/nps
nps ディレクトリの下には、nps 実行可能ファイル、conf 構成ディレクトリ、Web ページ ディレクトリが存在します。これを変更するだけです
conf/nps.conf
。vim conf/nps.conf
#web
次のパラメータを変更する必要があります。web_host= 服务器IP或者域名 web_username= admin(登录用户名) web_password= 你的密码 web_port=8080(web管理端口)
修正:
#bridge
NPCの接続ポートを変更できるようになりました。たとえば、制限された権限を持つサーバーとファイアウォールを使用する場合、一部のポート (80、443) のみが送信できる可能性があるため、それらのポートを送信ポートに変更する必要があります。##bridge bridge_type=tcp bridge_port=443 # 修改连接端口 bridge_ip=0.0.0.0 ##### 启动 #Mac/Linux ./nps test|start|stop|restart|status 测试配置文件|启动|停止|重启|状态 #Windows nps.exe test|start|stop|restart|status 测试配置文件|启动|停止|重启|状态
1.5 NPC
./npc -server=你的IP:8024 -vkey=唯一验证密码 -type=tcp
新しいクライアントを作成した後、次の場所で+
詳細なクライアント接続コマンドを確認することもできます。
1.6 Web管理端末
クライアント接続は、を介してクライアント インターフェイスに追加でき新增
、各接続の vkey は一意に区別されます。
各クライアントは、接続を確立した後、異なるプロトコルを使用して複数のトンネルを確立でき、これらの各トンネルは異なるプロキシになります。
さまざまなプロトコルとポートを介してエージェントのイントラネット マシンに接続できます。
2.FRP
2.1 はじめに
frp は、イントラネットへの侵入に重点を置いた高性能リバース プロキシ アプリケーションであり、TCP、UDP、HTTP、HTTPS などの複数のプロトコルをサポートしています。イントラネット サービスは、安全かつ便利な方法で、パブリック ネットワーク IP ノードを経由してパブリック ネットワークに公開できます。
2.2 特徴
- クライアント/サーバー通信は、TCP、KCP、Websocket などの複数のプロトコルをサポートします。
- ポートの再利用により、複数のサービスが同じサーバー ポートを通じて公開されます。
- クロスプラットフォームですが、nps よりも少しサポートが少ないです
- 豊富なプラグインで多くの機能を提供
2.3 使用方法
ダウンロード: https://github.com/fatedier/frp/releases
「
次の内容は https://segmentfault.com/a/1190000021876836 から取得したものです。
1). rdp 経由でホームマシンにアクセスします。
- frps.ini ファイルを変更します。セキュリティ上の理由から、ここで認証を構成するのが最善です。
token
サーバーとクライアントの共通構成のパラメータが一致していれば、認証は成功します。
# frps.ini
[common]
bind_port = 7000
# 用于身份验证,请自行修改,要保证服务端与客户端一致
token = abcdefgh
- FRPS を開始します。
./frps -c ./frps.ini
- frps が配置されているサーバーのパブリック IP が xxxx であると仮定して、frpc.ini ファイルを変更します。
# frpc.ini
[common]
server_addr = x.x.x.x
server_port = 7000
# 用于身份验证,请自行修改,要保证服务端与客户端一致
token = abcdefgh
[rdp]
type = tcp
local_ip = 127.0.0.1
local_port = 3389
remote_port = 6000
- frpc を開始します。
./frpc -c ./frpc.ini
- rdp 経由でリモート マシンにアクセスします。アドレスは次のとおりです。
x.x.x.x:6000
起動時に自動的に起動する
Windows システムの場合、使いやすさを考慮して、起動時にサイレントに起動するように構成できます。
- frpc.exe と同じディレクトリに start_frpc.vbs を作成します。
'start_frpc.vbs
'请根据实际情况修改路径
CreateObject("WScript.Shell").Run """D:\Program Files\frp_windows_amd64\frpc.exe""" & "-c" &"""D:\Program Files\frp_windows_amd64\frpc.ini""",0
- start_frpc.vbs ファイルをコピーし、次のディレクトリを開き、次の点に注意してください。
<USER_NAME>
ユーザー名に変更します:
C:\Users\<USER_NAME>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
- 右クリックしてショートカットとして貼り付けます。
**
**
2). SSH 経由で会社のイントラネット マシンにアクセスします。
frps の展開手順は上記と同じです。
- frpc を起動し、次のように設定します。
# frpc.ini
[common]
server_addr = x.x.x.x
server_port = 7000
# 用于身份验证,请自行修改,要保证服务端与客户端一致
token = abcdefgh
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000
- ユーザー名が test であると仮定して、SSH 経由でイントラネット マシンにアクセスします。
ssh -oPort=6000 [email protected]
**
**
3). カスタム ドメイン名を使用してイントラネット上に展開された Web サービスにアクセスする
ローカルで構築した Web サービスに、ドメイン名を使用して他の人がアクセスしたりテストしたりできるようにしたい場合がありますが、ローカル マシンにパブリック IP がないため、ドメイン名をローカル マシンに解決できません。この機能は frp を使用して実現できます。次の例は http サービスで、https サービスの構成方法は同じで、vhost_http_port を vhost_https_port に置き換え、タイプを https に設定します。
- frps.ini ファイルを変更し、http アクセス ポートを 8080 に設定します。
# frps.ini
[common]
bind_port = 7000
vhost_http_port = 8080
# 用于身份验证,请自行修改,要保证服务端与客户端一致
token = abcdefgh
- FRPS を開始します。
./frps -c ./frps.ini
- frps が配置されているサーバーの IP が xxxx、local_port がローカル マシン上の Web サービスに対応するポートであると仮定して、frpc.ini ファイルを変更し、カスタム ドメイン名をバインドします
www.yourdomain.com
。
# frpc.ini
[common]
server_addr = x.x.x.x
server_port = 7000
# 用于身份验证,请自行修改,要保证服务端与客户端一致
token = abcdefgh
[web]
type = http
local_port = 80
custom_domains = www.yourdomain.com
- frpc を開始します。
./frpc -c ./frpc.ini
-
www.yourdomain.com
ドメイン名 A レコードを IP に解決しますx.x.x.x
。サーバーに対応するドメイン名がすでにある場合は、CNAME レコードをサーバーの元のドメイン名に解決することもできます。 -
ブラウザを介してアクセスすることにより、
http://www.yourdomain.com:8080
イントラネット マシン上の Web サービスにアクセスできます。
4). 単純なファイル アクセス サービスを外部に提供する
static_file
単純な HTTP ベースのファイル アクセス サービスは、プラグインを通じて外部に提供できます。
frps の展開手順は上記と同じです。
- frpc を起動し、
static_file
プラグインを有効にして、次のように構成します。
# frpc.ini
[common]
server_addr = x.x.x.x
server_port = 7000
# 用于身份验证,请自行修改,要保证服务端与客户端一致
token = abcdefgh
[test_static_file]
type = tcp
remote_port = 6000
plugin = static_file
# 要对外暴露的文件目录
plugin_local_path = /tmp/file
# 访问 url 中会被去除的前缀,保留的内容即为要访问的文件路径
plugin_strip_prefix = static
plugin_http_user = abc
plugin_http_passwd = abc
- ブラウザからアクセスしてディレクトリ内
http://x.x.x.x:6000/static/
のファイルを表示するには/tmp/file
、設定されているユーザー名とパスワードの入力を求められます。
共通機能
(1) 統計パネル
ブラウザを通じて FRP のステータスとプロキシ統計の表示を確認します。
注: ダッシュボードは、大量のプロキシ データを表示するように最適化されていません。ダッシュボードへのアクセスが遅い場合は、この機能を有効にしないでください。
この機能を有効にするには、frps.ini でダッシュボード サービスで使用されるポートを指定する必要があります。
[common]
dashboard_port = 7500
# dashboard 用户名密码,默认都为 admin
dashboard_user = admin
dashboard_pwd = admin
ブラウザを開いてhttp://[server_addr]:7500
ダッシュボード インターフェイスにアクセスします。デフォルトのユーザー名とパスワードは ですadmin
。
(2) 暗号化と圧縮
これら 2 つの機能はデフォルトでは有効になっていません。frpc.ini の構成を通じて、指定したプロキシの暗号化と圧縮を有効にする必要があります。圧縮アルゴリズムは snappy を使用します。
# frpc.ini
[ssh]
type = tcp
local_port = 22
remote_port = 6000
use_encryption = true
use_compression = true
企業のイントラネット ファイアウォールが、frpc と frps 間の通信内容の暗号化送信を設定することで、SSH プロトコルを無効にするなど、外部ネットワーク アクセス トラフィックを識別してブロックする場合、トラフィックの傍受を効果的に防止できますuse_encryption = true
。
送信メッセージの長さが長い場合、use_compression = true
送信コンテンツの圧縮を設定すると、frpc と frps の間のネットワーク トラフィックが効果的に削減され、トラフィック転送速度が向上しますが、追加の CPU リソースが消費されます。
(3)TLS
バージョン v0.25.0 以降、frpc と frps の間で TLS プロトコルを介した暗号化された送信がサポートされます。frpc.ini
セキュリティを強化するには、common
を設定してこの機能を有効にしますtls_enable = true
。
ポートを再利用する場合、TLS 接続を確立するために frp によって使用される最初のバイトは 0x17 です。
注: この機能を有効にした後は、xtcp 以外の use_encryption を設定する必要はありません。
(4) エージェントの速度制限
現在、クライアントのプロキシ構成でプロキシ レベルの速度制限を設定して、単一のプロキシが占有できる帯域幅を制限することがサポートされています。
# frpc.ini
[ssh]
type = tcp
local_port = 22
remote_port = 6000
bandwidth_limit = 1MB
この機能を有効にするには、プロキシ設定にフィールドを追加しますbandwidth_limit
。現在、MB
と のKB
ユニットのみがサポートされています。
(5) レンジポートマッピング
frpc 構成ファイルでは、複数のポートをマッピングするように指定できます。現在、tcp タイプと udp タイプのみがサポートされています。
この機能はrange:
段落タグによって実装されます。クライアントはこのタグ内の設定を解析し、複数のプロキシに分割します。各プロキシには接尾辞として数字が付けられます。
たとえば、6 つのローカル ポート 6000 ~ 6005、6007 をマッピングする場合、主な設定は次のようになります。
# frpc.ini
[range:test_tcp]
type = tcp
local_ip = 127.0.0.1
local_port = 6000-6006,6007
remote_port = 6000-6006,6007
実際の接続が成功すると、8 つのプロキシが作成され、 という名前が付けられますtest_tcp_0, test_tcp_1 ... test_tcp_7
。
3. えー
3.1 はじめに
「
EW は、SOCKS v5 サービス セットアップとポート転送という 2 つのコア機能を備えたポータブル ネットワーク侵入ツールで、複雑なネットワーク環境でのネットワーク侵入を完了できます。ただし、このツールは更新されなくなりました。。。
3.2 特徴
- 軽量、C言語で書かれています
- マルチレベルプロキシを設定可能
- クロスプラットフォーム
- ただし、Socks5 プロキシのみをサポートします
3.3 使用方法
「
次の使用方法は http://rootkiter.com/EarthWorm/ から引用しています。
以下のすべての例では、特に指定がない限り、プロキシ ポートは 1080 で、サービスは SOCKSv5 プロキシ サービスです。
このツールには 6 つのコマンド形式 (ssocksd、rcsocks、rssocks、lcx_slave、lcx_listen、lcx_tran) があります。
1. SOCKS v5 サーバーを転送する
$ ./ew -s ssocksd -l 1080
2. リバウンド SOCKS v5 サーバー
この操作は 2 つのステップに分かれています。
a) まず、パブリック ネットワーク IP を持つホスト A で次のコマンドを実行します。
$ ./ew -s rcsocks -l 1080 -e 8888
b) ターゲット ホスト B で SOCKS v5 サービスを開始し、パブリック ネットワーク ホストのポート 8888 にバウンスします。
$ ./ew -s rssocks -d 1.1.1.1 -e 8888
成功。
3. マルチレベルカスケード
このツールには 3 つのポート転送命令が付属しており、それらのパラメータ形式は次のとおりです。
$ ./ew -s lcx_listen -l 1080 -e 8888
$ ./ew -s lcx_tran -l 1080 -f 2.2.2.3 -g 9999
$ ./ew -s lcx_slave -d 1.1.1.1 -e 8888 -f 2.2.2.3 -g 9999
これらのポート転送命令を通じて、ネットワークの奥深くにある TCP ベースのサービスを SOCKS v5 などのルートに転送できます。まず、2 つの「セカンダリ カスケード」ローカル SOCKS テスト サンプルが提供されます。
a)lcx_tran
の使用法
$ ./ew -s ssocksd -l 9999
$ ./ew -s lcx_tran -l 1080 -f 127.0.0.1 -g 9999
b) lcx_listen
、lcx_slave
使用法
$ ./ew -s lcx_listen -l 1080 -e 8888
$ ./ew -s ssocksd -l 9999
$ ./ew -s lcx_slave -d 127.0.0.1 -e 8888 -f 127.0.0.1 -g 9999
「3 レベル カスケード」ローカル SOCKS テスト ケースが参考のために提供されています。
$ ./ew -s rcsocks -l 1080 -e 8888
$ ./ew -s lcx_slave -d 127.0.0.1 -e 8888 -f 127.0.0.1 -g 9999
$ ./ew -s lcx_listen -l 9999 -e 7777
$ ./ew -s rssocks -d 127.0.0.1 -e 7777
データフロー:SOCKS v5 -> 1080 -> 8888 -> 9999 -> 7777 -> rssocks
4.いびきをかく
4.1 はじめに
「
ngrok は、パブリック エンドポイントとローカルで実行されている Web サーバーの間に安全なチャネルを確立するリバース プロキシで、イントラネット ホストのサービスを外部ネットワークに公開できるようにします。ngrok は、すべてのチャネルのトラフィックをキャプチャして分析し、後で分析して再生できるため、サーバー側プログラムのテストを簡単に支援できます。
4.2 特徴
- 公式メンテナンス、全体的に比較的安定
- クロスプラットフォーム、クローズドソース
- トラフィックの記録と再送信機能を備えています
4.3 使用方法
- ngrok 公式 Web サイト (https://ngrok.com/) にアクセスし、ngrok アカウントを登録し、ngrok をダウンロードします。
- 公式 Web サイトに記載されている認証コードに従って、次の認証コマンドを実行します。
./ngrok authtoken 1hAotxhmORtzCYvUc3BsxDBPh1H_****
./ngrok http 80
マシンのポート 80 http サービスはパブリック ネットワークに公開でき、パブリック ネットワーク ドメイン名が提供されます。
公式 Web サイトの UI インターフェイスを介してデータ パケット、トラフィックなどを表示できます (ただし、料金を支払う必要があります)
いくつかのコマンドを使用して、イントラネット上のファイルやその他の TCP サービスをパブリック ネットワークに公開することもできます。
認証付きのファイル共有を設定する
ngrok http -auth="user:password" file:///Users/alan/share
許可なしでファイル共有を設定する
ngrok http "file:///C:\Users\alan\Public Folder"
ホストの TCP ポート 3389 をパブリック ネットワークに公開します。
ngrok tcp 3389
使用方法の詳細については、https://ngrok.com/docs を参照してください。
n 1hAotxhmORtzCYvUc3BsxDBPh1H_**** 4.
./ngrok http 80` は、マシンのポート 80 http サービスをパブリック ネットワークに公開し、パブリック ネットワーク ドメイン名を提供します。
[外部リンク画像を転送中...(img-Hy0jSrCW-1693900445840)]
公式 Web サイトの UI インターフェイスを介してデータ パケット、トラフィックなどを表示できます (ただし、料金を支払う必要があります)
[外部リンク画像を転送中...(img-oHS77AKN-1693900445840)]
いくつかのコマンドを使用して、イントラネット上のファイルやその他の TCP サービスをパブリック ネットワークに公開することもできます。
認証付きのファイル共有を設定する
ngrok http -auth="user:password" file:///Users/alan/share
許可なしでファイル共有を設定する
ngrok http "file:///C:\Users\alan\Public Folder"
ホストの TCP ポート 3389 をパブリック ネットワークに公開します。
ngrok tcp 3389
使用方法の詳細については、https://ngrok.com/docs を参照してください。
!!!元のリンク: https://ngrok.com/docs