
DEFCON 30 メインフレーム バッファオーバーフロー ワークショップ コンテナ

このスクリプトは、DEFCON 30 ワークショップ用の MVS 3.8j 仮想メインフレームを構築するために使用します。
DEFCON 30 メインフレームバッファオーバーフローワークショップにご注目いただきありがとうございます。
この docker コンテナには、MVS バッファオーバーフローを学ぶために必要なものがすべて含まれています。
クラスを開始するには、コンテナを起動して http://localhost:8080 にアクセスしてください。
コンテナを実行するには、以下のコマンドを使用してください。$(pwd)/docker はお使いのシステムのフォルダに変更してください。
$(pwd) は docker ボリュームを現在の作業フォルダに配置します。
自己完結型で実行したい場合は、このコマンドを使用してください。⚠️ コンテナを削除して再起動すると、 メインフレーム環境に加えた変更はすべて失われます。
docker run -d \
--name=defcon30 \
-e HUSER=defcon \
-e HPASS=defcon \
-p 2323:3223 \
-p 8888:8888 \
-p 2121-2141:2121-2141 \
-p 8443:8443 \
-p 8080:8080 \
-p 31337-31347:31337-31347 \
-v ~/dumps:/printers \
--restart unless-stopped \
mainframed767/defcon30:latest
ポートの説明:
言及されている Python スクリプトは、こちらにあります: https://github.com/mainframed/DC30_Workshop/tree/main/extra
これにより、より多くのポートが公開され、永続性のあるボリュームを使用できます。Hercules と MVS のコンソール、カードリーダー/ライターなどにアクセスできます。
docker run -d \
--name=defcon30 \
-e HUSER=docker \
-e HPASS=docker \
-p 3221:3221 \
-p 2323:3223 \
-p 3270:3270 \
-p 3505:3505 \
-p 3506:3506 \
-p 8888:8888 \
-p 2121:2121 \
-p 8443:8443 \
-p 8080:8080 \
-p 31337-31347:31337-31347 \
-v $(pwd)/docker/config:/config \
-v $(pwd)/docker/printers:/printers \
-v $(pwd)/docker/punchcards:/punchcards \
-v $(pwd)/docker/logs:/logs \
-v $(pwd)/docker/dasd:/dasd \
-v $(pwd)/docker/certs:/certs \
--restart unless-stopped \
mainframed767/defcon30:latest
ポート
| Port | Description |
|---|---|
| 2323 | TLS 暗号化 TN3270 サーバーポート |
| 3270 | 非暗号化 TN3270 サーバーポート |
| 3221 | 暗号化 FTPD サーバー |
| 2121 | 非暗号化 FTP サーバーポート |
| 8443 | ラボのメインフレームに自動接続する Web ベースの 3270 クライアント https://localhost:8443 |
| 8080 | クラス Wiki https://localhost:8080 |
| 8888 | Hercules Web サーバー/MVS コンソール。ユーザー/パスワード = docker |
| 3505 | パンチカードリーダー。ASCII を EBCDIC に変換します。 |
| 3506 | パンチカードリーダー。EBCDIC ファイルのみ受け付けます。 |
| 31337-32337 | FTP サーバーのパッシブポート範囲 |
ボリューム
| Folder | Description |
|---|---|
| /config | Hercules と web3270 の設定ファイルが含まれます |
| /printers | CLASS=A のプリンタの出力が含まれます |
| /punchcards | CLASS=B のパンチカードライターの出力が含まれます |
| /logs | Hercules のログが含まれます |
| /dasd | MVS/CE のディスクイメージが含まれます |
| /certs | TLS 暗号化に使用される証明書が含まれます |
| Username | Password | Description |
|---|---|---|
| IBMUSER | SYS1 | すべてにアクセスできる管理ユーザー |
| MVSCE01 | CUL8TR | すべてにアクセスできる管理ユーザー |
| MVSCE02 | PASS4U | 一般ユーザー |
| DC0 | DC0 | DEFCON ワークショップユーザー |
| DC1 | DC1 | DEFCON ワークショップユーザー |
| DC2 | DC2 | DEFCON ワークショップユーザー |
| DC3 | DC3 | DEFCON ワークショップユーザー |
| DC4 | DC4 | DEFCON ワークショップユーザー |
| DC5 | DC5 | DEFCON ワークショップユーザー |
| DC6 | DC6 | DEFCON ワークショップユーザー |
| DC7 | DC7 | DEFCON ワークショップユーザー |
| DC8 | DC8 | DEFCON ワークショップユーザー |
| DC9 | DC9 | DEFCON ワークショップユーザー |
| DC10 | DC10 | DEFCON ワークショップユーザー |
| DC11 | DC11 | DEFCON ワークショップユーザー |
| DC12 | DC12 | DEFCON ワークショップユーザー |
| DC13 | DC13 | DEFCON ワークショップユーザー |
| DC14 | DC14 | DEFCON ワークショップユーザー |
| DC15 | DC15 | DEFCON ワークショップユーザー |
| DC16 | DC16 | DEFCON ワークショップユーザー |
| DC17 | DC17 | DEFCON ワークショップユーザー |
| DC18 | DC18 | DEFCON ワークショップユーザー |
| DC19 | DC19 | DEFCON ワークショップユーザー |
| DC20 | DC20 | DEFCON ワークショップユーザー |
| DC21 | DC21 | DEFCON ワークショップユーザー |
| DC22 | DC22 | DEFCON ワークショップユーザー |
| DC23 | DC23 | DEFCON ワークショップユーザー |
⚠️ 現在のセットアップでは、同時接続ユーザー数は最大 24 人です。25 人目のユーザーがログオンすると、次のエラーメッセージが表示されます: IKT00203I ADDRESS SPACE CREATION FAILED。
cp extra/FTPD.MVP MVSCE/MVP/packagesMACLFTPF.jcl を投入する: cat jcl/MACLFTPF.jcl|ncat --send-only -w1 127.0.0.1 3505logon_screen.jcl を投入する: cat jcl/logon_screen.jcl|ncat --send-only -w1 127.0.0.1 3505terminal.jcl を投入する: cat terminal.jcl|ncat --send-only -w1 127.0.0.1 3505git clone https://github.com/jake-mainframe/ARBAUTHupload.py を実行する: ./upload.py motd.txtupload.jcl を投入する: cat upload.jcl|ncat --send-only -w1 127.0.0.1 3505https://github.com/mvslovers/rdrprep を Linux マシンにインストールするhttps://github.com/mvslovers/jcc をこのフォルダにクローンするsudo apt install wine wine32GETSPLOIT/hello.c をコンパイルする:
wine ./jcc/jcc.exe -I./jcc/include -o ./GETSPLOIT/hello.c./jcc/prelink -s ./jcc/objs hello.load hello.objhello.load を ./GETSPLOIT にコピーする: cp hello.load GETSPLOIT./usersjcl.pyrdrprep を使用して users フォルダ内の各ジョブを変換し、1 つずつ投入する:
for i in *.jcl; do echo $i;rdrprep $i;cat reader.jcl|ncat --send-only -w1 172.17.0.3 3506; read; doneprinters/prt00e.txt を確認すると、各ジョブが完了したことを確認できますweb3270.ini を編集するpython3 -u ./server.py --config /path/to/config --certs /path/to/certs で web3270 を起動するGETSPLOIT/hello.c: https://github.com/jake-mainframe/GETSPLOIT の脆弱な C プログラムARBAUTH: https://github.com/jake-mainframe/ARBAUTH からoverflows/LGBT400、overflows/LOC400、overflows/WTO400Dockerfile: docker イメージのビルドに使用されるMACLFTPD.jcl: MVP を使用して MACLIBS と FTPD サーバーをインストールする JCL ファイルlogon_screen.ans/jcl/logon_screen.jcl: NETSOL のログオン画面を置き換える ANSI/JCLupload.py: データセットのプロビジョニング、ファイルのコピー、システムの準備に使用される JCL を生成しますjcl/terminals.jcl: 32 個の新しい端末インターフェースを追加し、VTAM 設定を更新しますusersjcl.py: ./users フォルダに DC00.jcl から DC23.jcl までを作成しますautomation.py: docker へのデプロイに使用される MVS 自動化 Python スクリプトmatrix.txt: 白うさぎを追えrexx/DEBRUIJN.rex: de Bruijn パターンを生成する REXX スクリプトrexx/decodei.rex: MVS の 16 進命令を人間が読める形式にデコードしますmotd.txt: TSO へのログオン時に実行される CLISTmvs.sh: web3270 と hercules を起動するコンテナ実行スクリプト