The sudoers file, /etc/sudoers, describes which users can run which commands and from which terminals. This also describes which commands users can run as other users or groups. This provides the idea of least privilege such that users are running in their lowest possible permissions for most of the time and only elevate to other users or permissions as needed, typically by prompting for a password. However, the sudoers file can also specify when to not prompt users for passwords with a line like user1 ALL=(ALL) NOPASSWD: ALL (Citation: OSX.Dok Malware).
Adversaries can take advantage of these configurations to execute commands as other users or spawn processes with higher privileges. You must have elevated privileges to edit this file though.
T1169は「Sudo」として定義されていた、LinuxおよびmacOS環境における極めて重要かつ頻出する「特権昇格(Privilege Escalation)」および「防御回避(Defense Evasion)」のテクニックです。
Linuxにおける最も一般的な特権実行コマンドである sudo(superuser do)の、設定ファイル(/etc/sudoers)の不備や、一度パスワードを入れた後に数分間パスワード不要になる「キャッシュ機能」を悪用して、攻撃者がパスワードなしでroot(最高権限)を強奪する手口です。
この手法で攻撃者は、「現在の一般ユーザー権限から、管理者のパスワードを盗み出すことなく、一瞬でOSの最高権限(root)に駆け上がること」を実現します。
認証の完全なバイパス:
本来、sudo を使ってroot権限でコマンドを実行するには、現在のユーザー(または管理者)のパスワード入力が必要です。しかし、攻撃者は「パスワードを要求しない設定」を悪用・捏造するため、防御側に気づかれる前に音を立てずにroot権限のシェル(バックドア)を起動させることができます。
セッションの永続化と悪用:
一度本物の管理者が sudo を実行した直後の端末に侵入した場合、その端末に残っている「認証キャッシュ(一定時間は再入力不要というOSの親切設計)」をそのまま盗むことで、パスワードを知らなくても自動的にroot権限を引き継ぐことができます。
/etc/sudoers)の悪用・改ざん初期侵入と一時的なroot奪取:
他のエクスプロイト等を用いて、Linuxサーバー内で一度 root 権限を確保します。
バックドアの仕込み(永続化/トリガー):
将来、一般ユーザー権限まで落とされたり、別の一般アカウント(www-data などのWebサーバー権限)に切り替わったりした際でも、いつでも簡単にrootに戻れるよう、visudo コマンドやテキスト編集で /etc/sudoers ファイルに「パスワード不要ルール」を1行追記します。
attacker_user ALL=(ALL) NOPASSWD: ALL
(※「attacker_user というアカウントは、すべてのコマンドをパスワードなし(NOPASSWD)でrootとして実行できる」という最凶の裏口設定です)特権の再取得(目的達成):
攻撃者が一般ユーザー attacker_user として再ログインした際、sudo su と叩くだけで、パスワードを一切聞かれることなく一瞬でroot権限のシェルが立ち上がります。
本物のシステム管理者が端末(SSHなど)にログインし、日常業務のために sudo systemctl restart nginx などのコマンドを実行し、自身のパスワードを入力します。
Linuxの仕様により、一度認証が成功すると、デフォルトで 15分間 は再度パスワードを求められないキャッシュ(認証トークン)が /var/run/sudo/ts/ 配下に生成されます。
攻撃者はその15分間の間に、同じユーザーの別セッションからシステムに侵入(あるいはマルウェアを実行)します。
攻撃者が sudo -s を実行すると、OSは「さっきパスワードを入れたばかりだからパス」と判断し、攻撃者に対してパスワードを要求することなく、そのままroot権限の画面を差し出してしまいます。
「過剰な許可設定の禁止」と「キャッシュの生存時間の見直し」が必須です。
NOPASSWD 設定の厳格な制限と監査(最重要):
/etc/sudoers および /etc/sudoers.d/ 配下の設定ファイルを定期的に監査し、NOPASSWD: ALL のような極めて危険なワイルドカード設定が残っていないかをチェックします。特定の運用上どうしても必要な場合は、実行できるコマンドを単一のバイナリ(例: NOPASSWD: /usr/bin/systemctl restart httpd)だけに限定し、シェル(sh や bash)に繋がるコマンドを絶対に許可しないようにします。
Sudoキャッシュタイムアウトの短縮(または無効化):
/etc/sudoers の共通設定(Defaults)において、timestamp_timeout の値をデフォルトの15分から 0(毎回必ずパスワードを求める)、または数分(例: 3 分)に短縮します。
Defaults timestamp_timeout=0 Sudo実行ログの外部転送と監視:
sudo コマンドが実行された際のログ(/var/log/auth.log や /var/log/secure)をリアルタイムで外部のSIEMに転送します。一般ユーザーが普段触らない時間帯や、不自然なコマンドを sudo 経由で実行した履歴(特に sudo -s、sudo su、sudo -i など)を検知してアラート化します。
「GTFOBins」との致命的な化学反応:
もし管理者の設定ミスで、一般ユーザーに対して「NOPASSWD: /usr/bin/find」や「NOPASSWD: /usr/bin/nano」といった、外部コマンドを実行したりファイルを編集したりできる正規ツールが許可されていた場合、攻撃者はそのツールの内部からrootのシェルを簡単に呼び出せてしまいます(GTFOBinsの悪用)。そのため、sudo で許可するコマンドの選定には細心の注意が必要です。
人間の心理の隙を突く:
キャッシュの悪用(パターンB)は、システム管理者が「何度もパスワードを打つのは面倒だから、タイムアウト時間を長めに設定しておこう」という利便性を優先した隙を狙い撃ちにする、人間の心理に寄生した手口です。
CWE-269: Improper Privilege Management(不適切な権限管理)
/etc/sudoers の設定不備により、特定のユーザーに対して必要以上の強力な特権(root実行権限)や、パスワード保護の免除を過剰に与えてしまっている問題。
CWE-592: Authentication Bypass Issues(認証バイパスの問題)
Sudoのキャッシュ仕様を悪用されることで、本来プロセスの実行時に要求されるべき「ユーザー本人の確認(認証)」のステップを完全に飛び越えられてしまう問題。
T1169(Sudoの悪用)は、主に「設定ミス」や「OSの正規の仕様」を逆手に取るポストエクスプロイトの振る舞いですが、ハッカーが sudo コマンドそのもののバグを突いて、パスワードなしで強制的にrootになるという凶悪なエクスプロイト(CVE)と組み合わせて実行されることが非常に多いです。
CVE-2019-14287 (SudoのユーザーID「-1」バイパスの脆弱性):
Sudoコマンドのパラメータ処理に存在した有名なバグです。/etc/sudoers で「特定のコマンドだけroot以外のユーザーとして実行してよい(例: user1 ALL=(ALL, !root) /usr/bin/vi)」と制限されていたとしても、攻撃者が sudo -u#-1 /usr/bin/vi と引数を指定して実行すると、Sudoが「-1」を誤って「0(root)」と解釈してしまい、本来禁止されていたはずのroot権限でコマンドが実行できてしまうという脆弱性です。ハッカーはこれを利用して、制限されたSudo設定を文字通り粉砕(T1548.003の悪用)しました。
CVE-2021-3156 (PwnKit) などの侵入後の足がかり:
Linuxサーバーに侵入したAPT(国家系ハッカー)やボットネットは、まずLPE(ローカル権限昇格)脆弱性でrootを奪ったあと、将来そのバグがパッチで塞がれても再侵入できるように、今回の T1169(/etc/sudoers への NOPASSWD の追記) を行って、自分専用の公式な特権裏口をシステムに固定化する手口を定番化しています。
Linuxサーバーのフォレンジック調査の際、/var/log/auth.log を確認して、「Webアプリケーションのアカウント(www-data や apache など、通常は人間がログインして対話操作しないはずのアカウント)が、突然 sudo コマンドを成功させて root 権限の処理を行っている」というログを見つけた場合、ほぼ100%の確率でWebサイトの脆弱性(SQLインジェクションやRCE)から侵入され、今回の sudoers 改ざんかキャッシュ盗用(T1169)が実行されたことを意味します。
即座に /etc/sudoers のタイムスタンプと中身を検証することが、被害の全容を解明する第一歩となります。
この攻撃手法に関連する CVE は登録されていません。