akkietech’s diary

セキュリティ関連メインの自分用メモ書き。twitter: @akkietech

HTB Vaultでのポートフォワーディングテク

久々にHTBにじっくり取り組んだ。
Vaultマシンでいろいろためになることを学んだので備忘録として残しておく。

Vaultはポートフォワーディングを存分に使えるマシンだった。
sshやncatを使って複数のマシンを経由したりするので、汚いが自分の理解のために作成した図と一緒に、攻略のために使ったポートフォワーディングのテクニックを書いていく。
※retiredマシンではあるが、ネタバレを含むので攻略がまだの人はご承知おきを。
※本記事を書く上で、HTBのWriteupのPDFとippsecの動画は大変参考になったので、そちらも参考にしてもらえればと思います。

■ローカルポートフォワーディング

使ったコマンド:

ssh -L 8000:192.168.122.4:80 dave@10.129.42.133

ローカル側で待ち受けるポートと、待ち受けたポートへの接続がどのリモートサーバにフォワードされるのかを指定する。
この場合、kaliへの8000のリクエストが10.129.42.133を経由し、192.16.122.4の80ポートへ転送される。


■ダイナミックポートフォワーディング
使ったコマンド:

ssh -D 1080 dave@10.129.42.133

指定のポートでローカル側で待ち受けて、proxy的にターゲットネットワークにあるホストへの接続が可能になる。
この場合、kali側で1080ポートが待ち受けるようになり、127.0.0.1:1080を経由することで、リモートサーバ(10.129.42.133)からアクセス可能なサーバにリクエストが可能になる。
例えばproxychainsの設定(/etc/proxychains.conf)がされていれば、以下のようにcurlすることが可能

proxychains curl 192.168.122.4

(curl --proxy socks5://127.0.0.1:1080 192.168.122.4 としても同じ結果となる)


■リモートポートフォワーディング
使ったコマンド:

ssh -R 9001:127.0.0.1:9001 dave@10.129.42.133

ローカル側で待ち受けるポートを指定し、待ち受けたポートへの接続がどのサーバに転送されるのかを指定する
この場合、リモートマシン側(10.129.42.133)の9001がオープンして待ち受けられ、その9001に来た接続が、kali(127.0.0.1)の9001に転送される。リバースシェルを取得する時とかに使う。


■ncatを使ったファイアウォールバイパス
使ったコマンド:

ncat -l 7001 --sh-exec "ncat 192.168.5.2 987 -p 53" &
ssh -p 7001 dave@localhost

192.168.122.4から192.168.5.2のSSHポート(987)に接続するには、送信元ポートを53に指定する必要がある。そのためncatを使って、SSH接続時に送信元ポートを指定するようにすれば、ターゲットマシン(192.168.5.2)にSSH接続することが可能になる。




以上、ポートフォワーディングは難しいが、知っておくと必ず役に立つ。