概要
ペネトレーションテストなどで侵害したLinuxホストから内部のネットワークに対してポートスキャンを実施することがあります。Nmapが無いことはほとんどですが、そのような時はBashの簡単なスクリプトでtimeoutコマンドをかましながら実行していましたが、timeoutコマンドがないことがありましたのでURL(※1)を参考にスクリプトを書いてみました。
スクリプト
portscan.sh
#!/bin/bash
host=$1
for port in {1..65535}; do
(bash -c "echo > /dev/tcp/$host/$port") && echo "$port port is open" & sleep 0.1 ; kill -9 $! > /dev/null 2>&1
done
echo "Done"
使い方
$ bash ./portscan.sh 10.11.xx.xx > portscan.txt
実行するとオープンしているポートがあればportscan.txtファイルに
21 port is open
22 port is open
80 port is open
のように記載されます。