Privilege Escalation ルーチン
hostname: ターゲットマシンのホスト名を返す.
uname -a→カーネル依存の脆弱性特定につながる
/proc/version:システムのプロセスに関する情報を提供してくれる
/etc/passwd:homeをgrepして、実ユーザーを見つける方法が有用
4. SUIDバイナリ検索: find / -perm -4000 -type f 2>/dev/null
5. 書き込み可能ファイル検索(要注意): find / -writable -type f 2>/dev/null
6. Cron / systemdチェック: ls -la /etc/cron*, cat /etc/crontab, systemctl list-timers --all
7. プロセス/サービス確認:ps aux, ss -tunlp, netstat -tulpen
8. 環境変数・PATHの確認:env, echo $PATH
9. ローカルファイルからの認証情報探索:grep -R "password" /etc 2>/dev/null(やり方は慎重に)
10. 自動支援ツール(出力は鵜呑みにしない): linpeas.sh, pspy, getcap
その他重要な列挙
システムは /etc/issue ファイルを見ることで識別できる場合がある。このファイルは通常 OS に関する情報を含むが、簡単にカスタマイズや変更が可能である。関連して言えば、システム情報を含む任意のファイルはカスタマイズされている可能性があるため、システムをより正確に理解するためにこれらすべてを確認するのが望ましい。
Linux システム上で動作中のプロセスを確認する有効な方法。出力結果は以下の通り
PID:プロセス ID(プロセス固有)
TTY:ユーザーが使っている端末の種類
Time:そのプロセスが使用した CPU 時間(プロセスが起動してからの経過時間ではない)
CMD:実行中のコマンドや実行ファイル(コマンドライン引数は表示されない)
オプション
ps -A:全ての実行中プロセスを表示
ps axjf:プロセスツリーを表示(ツリー構造)
ps aux:a 全ユーザーのプロセス、u プロセスを起動したユーザー表示、x 端末に紐づかないプロセスも表示。ps aux の出力を見ればシステムと潜在的脆弱性の理解が深まる。
環境変数を表示する。コンパイラやスクリプト言語が含まれていれば,それらを使って任意コードを実行したり特権昇格に利用できる可能性がある。
過去に実行されたコマンドを見ると、システムに関する手がかりが得られたりPWやユーザー名が残っていることがある。
ターゲットが別ネットワークへの踏み台(pivot)になっていることがある。ifconfig はシステムのネットワークインターフェース情報を示す。例としてターゲットに eth0, tun0, tun1 の3つのインターフェースがあり、攻撃マシンは eth0 に到達可能だが、他2つのネットワークには直接アクセスできない、という状況がありうる。これは ip route コマンドで存在するルートを確認すれば確かめられる。 現在の接続情報を取得できる。
netstat -a:全てのリッスンポートと確立された接続を表示
netstat -at / netstat -au:TCP / UDP の接続をそれぞれ表示
netstat -l:リッスン中のポートを表示(-t を付ければ TCP のみ)
netstat -s:プロトコル別のネットワーク統計を表示(-t / -u で絞り込み可)
netstat -tp:サービス名と PID 情報付きで接続を表示(root 権限で実行すると PID/プログラム名が確認できる)
netstat -i:インターフェース統計を表示
1. カーネルのバージョンを特定
2. ターゲットシステムのカーネルバージョンに対応したエクスプレイトコードを検索する
3. エクスプロイトの実行
エクスプロイトコードを実行する前に、そのコードがどのように動作するかを必ず理解する。システムに不可逆的な変更を与える可能性がある.本番のペネとレーションテストだとやばいので注意.
時短
whoami:現在実行中のユーザー名を表示
id:現在のユーザID/グループIDを表示
ifconfig:ネットワーク設定を表示
uname -a:カーネル情報やOSのバージョンを表示
ps -ef:実行中のプロセスを全て表示