🔓

Dynagen でパスワードリカバリの練習

に公開

本エントリについて

Dynagen、Dynamipsを使ってパスワードリカバリの練習の仕方について記載します。

Dynagen、Dynamipsの準備、利用方法については本エントリのスコープ外です。
(自分はAWSのEC2でDynagen、Dynamipsの仮想ラボ環境を作って利用しています。
気が向けばラボ構築についても記載しようかなとも思うけど、現在はGNS3が人気のようで、需要もなさそうなのでモチベーションが上がりません。)

参考サイト

https://www.infraexpert.com/study/ciscoios11.html

事前設定

Dynagen の設定ファイルの準備

以下のような設定ファイルを準備します。

autostart = false
[localhost:7200]
        [[3725]]
                image = イメージファイル
                ram = 160
                idlepc = 0xXXXXXXXX
                ghostios = true
                sparsemem = true

        [[ROUTER r1]]
                model = 3725
                console = 2001

idlepc の値を設定しないと、CPU使用率が上昇します。
設定の仕方は割愛します。

ルータの起動

(いくつもターミナルを開くことになるので、tmux などを利用するとよいと思います)

Dynamips を起動します。
カレントディレクトリに一時ファイルが出力されるので、適切なディレクトリに cd して実行します。

$ sudo dynamips -H 7200

作成した dynagen 設定ファイルを指定して dynagen を実行します。その後、ルータを起動します。
カレントディレクトリに一時ファイルが出力されます。

$ dynagen test.net
=> start r1

console で指定したポートに telnet 接続することで、ルータのコンソールに接続できます。

$ telnet localhost 2001

ルータの設定

r1 のコンソールに接続し、enable パスワードを設定します。
また、比較のためホスト名の設定、インタフェースの設定もしておくとよいでしょう。

> en
# configure terminal
(config)# enable secret cisco
(config)# hostname r1
(config)# int fa0/0
(config-if)# ip address 10.2.0.254 255.255.255.0
(config-if)# no shut
(config-if)# end

コンフィグに enable パスワードが設定されていること、インタフェースは no shut したので、up/up になっていることを確認します。
いったん disable して再度 enable し、パスワードが有効なことを確認します。

# show run | section enable
enable secret 5 $1$COPM$M3ac4G7uFzMOtfyM/kfDT.
# show ip int bri
Interface                  IP-Address      OK? Method Status                Protocol
FastEthernet0/0            10.2.0.254      YES NVRAM  up                    up
FastEthernet0/1            unassigned      YES NVRAM  administratively down down
# disable
> en
password:
# 

確認できたら、コンフィグを保存します。

# copy run start
# show start

再起動して、enable パスワードとインタフェースの設定を確認してみます。

=> reload r1

> show ip int bri
> en
# show run | section enable

現在の confreg の値を確認します。

# show version | begin Config
Configuration register is 0x2102

confreg 設定値の変更

dynagen で ルータを停止し、confreg値を変更します。
変更したら再度ルータを起動します。

=> stop r1
=> confreg r1 0x2142
=> start r1

confreg 値については、下記で詳しく記載されています。
https://www.cisco.com/c/ja_jp/support/docs/routers/10000-series-routers/50421-config-register-use.html

上記サイトより一部抜粋

16進数 意味
0x2000 ネットワーク ブートが失敗した場合は、デフォルト ROM ソフトウェアのブート.
0x0100 Break を無効にする。
0x0040 NVRAM の内容を無視。
0x0002 デフォルトのネットブートファイル名を指定します。デフォルトのnetbootファイル名を上書きするboot systemコマンドを有効にします

パスワードリカバリ

r1 のコンソールに接続します。
confreg値を確認します。先ほど設定した値に変更されているはずです
startup-config を読み込まずに起動しているので、ホスト名はデフォルトのものになっているはずです。
enable コマンドで特権モードに入ります。

> show version | begin Config
Configuration register is 0x2142
> en
# 

コンフィグをロードし、enable パスワードを設定します。
インタフェースが down/down になっているので、no shut します。

# copy start run
# show ip int bri
# configure terminal
(config)# enable secret ccna
(config)# int fa0/0
(config-if)# no shut
(config-if)# end

コンフィグを保存し、設定したパスワードで enable できることを確認します。

# copy run start
# disable
> en
password:
# 

confreg 設定値の戻し

dynagen で ルータを停止し、confreg値を変更します。
変更したら再度ルータを起動します。

=> stop r1
=> confreg r1 0x2102
=> start r1

最終確認

confreg 値が変更されていること、インタフェースがup/up となっていること、設定したパスワードで enable できることを確認します。

> show version | begin Config
Configuration register is 0x2102
> show ip int bri
> en
password: 
# show run

まとめ

以上、Dynagen でパスワードリカバリの練習について記載しました。
かなり実機に近いことを練習できますが、これはあくまで真似事にすぎません。
特に実機とは confreg 値の設定方法が異なりますので、この点には注意してください。

GitHubで編集を提案

Discussion