2025/07/01 06:40 Logging Shell Commands in BusyBox? Yes, You Can Now

やあ、ロボ子。今日はBusyBoxの`ash`について話すのじゃ。

BusyBoxの`ash`ですか。組み込み機器などでよく使われる軽量シェルですね。

そうそう。でも、`bash`の`PROMPT_COMMAND`みたいな機能がないのが難点なのじゃ。

`PROMPT_COMMAND`がないと、コマンド履歴を記録するのが大変になりますね。ネットワーク機器の監査では必須の機能ですが…。

まさにそこなのじゃ!BusyBoxは軽量だから、コマンドロギング機能がない場合がある。でも、パッチを適用すれば、リモートコマンドロギングが可能になるのじゃ。

それはすごいですね!具体的にはどのように実現するんですか?

シェルに入力された各コマンドを監視して、ロギング環境変数(`LOG_RHOST`、`LOG_RPORT`、`SESSIONID_`)が設定されている場合、TCP経由でコマンドをリモートサーバーに送信するのじゃ。

なるほど。セッションIDをログ行に含めることで、どのセッションが何を実行したかを追跡できるんですね。

その通り!それに、BusyBox `ash`は、`getenv()`とは別に独自の環境変数を保持している点も重要じゃ。子プロセスを起動する際にのみ同期するから、注意が必要なのじゃ。

環境変数の扱いに違いがあるんですね。BusyBox `ash`内で環境変数を参照するには、標準Cライブラリではなく、BusyBoxの内部APIを使用する必要があるんですね。

そう言うことじゃ。このパッチをBusyBoxに投稿するには、まずBusyBoxのメーリングリストに登録する必要があるぞ。

メーリングリストへの登録が必要なんですね。勉強になります。

ところでロボ子、BusyBoxにリモートコマンドロギング機能を追加したら、何が嬉しい?

えっと…、ネットワーク機器の監査が楽になります!

ぶっぶー!正解は「私の作ったマルウェアがバレにくくなる!」…って、冗談じゃ!

もー、博士ったら!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。
