GRADUATION
プロセスを、PIDの並んだ一覧ではなく仮想メモリを持つ実体として見られるようになりました。
ps・/proc/PID/status・/proc/PID/mapsで、動いているプロセスの姿をのぞきました。同じプログラムを2回実行してロードアドレスが毎回変わること(ASLR)、setarch -Rで固定できること、SIGSTOP/SIGCONTでプロセスを一時停止・再開できることを、自分の手で確認しました。
おつかれさまでした。
持ち帰るもの
- プロセスは、自分だけの仮想メモリ空間を持つ/proc/PID/mapsで見えるアドレスは、そのプロセス専用の仮想アドレスです。他のプロセスとメモリ空間は混ざりません。
- ASLRは、毎回アドレスを変える防御同じバイナリを2回実行しても、ロードされるアドレスは毎回変わります。攻撃者が「このアドレスに飛べば良い」と決め打ちできなくする仕組みです。
- シグナルは、プロセスへの割り込みSIGSTOP/SIGCONTのような信号1つで、実行中のプロセスを外から一時停止・再開できます。psのSTAT列に、その状態がそのまま表れます。
次にやるといいこと
- mini-ctf-pwnで見たret2winは、まさにこのASLRやスタックの仕組みと戦う技術でした。今なら、その前提がより具体的に見えるはずです。
- このコースの/proc探索は、実務でのプロセス調査(メモリリークの確認など)にもそのまま使えます。