【情報セキュリティ】攻撃の足場を固める!「シェルの安定化」|情報処理問題1000本ノック
攻撃者がシステムに侵入して最初に手にする「シェル」は、Ctrl+Cで接続が切れたり、タブ補完が効かなかったりと非常に不安定です。これを操作しやすく改造する工程を攻略しましょう。
1. 問題:対話型操作への移行
【 問題 】 リバースシェルなどで取得した、機能が制限された不安定なシェルを、通常の端末(ターミナル)のようにタブ補完や履歴参照が可能で、意図しない切断が起きにくい状態に整える作業を何と呼ぶでしょうか?
ア、シェルの安定化(Shell Stabilization) イ、シェルショック ウ、サンドボックス化 エ、ポートフォワーディング
2. 正解:ペネトレーションテストの工程に関する正解
正解: ア、シェルの安定化(Shell Stabilization)
3. 解説:不完全なシェルを「本物」に育てる
ネットワーク越しに無理やり奪取したシェル(ノン・インタラクティブ・シェル)は、そのままでは「権限昇格」のための複雑なコマンド入力に耐えられません。そのため、以下の手順で安定化を図ります。
【図解:シェルの安定化で行われること】
■ Python等を利用したTTYの取得
・`python -c 'import pty; pty.spawn("/bin/bash")'` などのコマンドを使い、擬似端末(TTY)を生成して対話可能な状態にします。
■ 端末環境の最適化
・環境変数(TERM=xtermなど)を設定し、エディタ(viなど)が崩れずに動くようにします。
■ ショートカットの有効化
・タブ補完や、Ctrl+C(中断)を押しても通信が切れないように、ローカル側の端末設定と同期させます。
■ Python等を利用したTTYの取得
・`python -c 'import pty; pty.spawn("/bin/bash")'` などのコマンドを使い、擬似端末(TTY)を生成して対話可能な状態にします。
■ 端末環境の最適化
・環境変数(TERM=xtermなど)を設定し、エディタ(viなど)が崩れずに動くようにします。
■ ショートカットの有効化
・タブ補完や、Ctrl+C(中断)を押しても通信が切れないように、ローカル側の端末設定と同期させます。
[ なぜ安定化が必要か? ]
★ ミスの防止:複雑なパスワードやパスを打ち間違えないよう、タブ補完が必要になります。
★ 持続性:せっかく侵入したのに、コマンドを一つ間違えてプロセスが終了し、接続が切れるのを防ぎます。
★ 権限昇格への準備:sudoの実行や対話型パスワード入力を受け付けるには、完全なTTYが必要です。
★ ミスの防止:複雑なパスワードやパスを打ち間違えないよう、タブ補完が必要になります。
★ 持続性:せっかく侵入したのに、コマンドを一つ間違えてプロセスが終了し、接続が切れるのを防ぎます。
★ 権限昇格への準備:sudoの実行や対話型パスワード入力を受け付けるには、完全なTTYが必要です。
1. 理解のコツ: 「糸電話のような細い通信(不安定なシェル)」を、「しっかりとした電話回線(安定したシェル)」にアップグレードする作業だと思ってください。攻撃者が次のステップ(権限昇格や横展開)へ進むための必須作業です。
2. 試験対策の視点: 情報処理技術者試験のレベルでは「リバースシェル」の概念までが中心ですが、より実戦的なセキュリティ(登録セキスペの午後問題や実技試験)では、こうした「侵入後の操作性確保」という視点も重要になります。
4. まとめ
「不安定なシェルを対話可能な完全なシェルへ昇格させる」。これがシェルの安定化です。攻撃者が侵入した後に、どれだけ迅速かつ確実に足場を固めようとするかを知ることは、検知と防御を考える上で極めて重要です。
PR