ハーフオープンスキャン
ポートスキャンの やり方だよ
SYNパケットを送って応答を見るよ
スキャンしているのがバレにくい やり方だよ
簡単に書くよ
ハーフオープンスキャン(英:half-open scan)とは
「SYNスキャン」のこと。
用語の中身としては
ポートスキャン
(いろんなポートに片っ端から接続してみて、開いているポートを調べること)の やり方のひとつ
であり
SYNパケット
(SYNフラグに1がセットされたパケット)を送ってみて応答があるか確認することで開いているポート(ネットワークとパソコンの間にあるドア)を探すやり方
です。
詳しく書くよ
順番に見ていきましょう。
まずは予備知識として
・SYNパケット
・ポート
・ポートスキャン
・SYNスキャン
について説明します。
「そんなの説明されなくても知ってるよ!」な人は適当に読み飛ばしてください。
SYNパケットは「こっちから何か送っても、いいかなー?」な質問に相当するデータです。
「3ウェイハンドシェイク」と呼ばれるやり方で通信していて、接続したいときに相手に送ります。
きちんと説明すると長くなるので詳細には触れません。
興味がある方は、用語「SYNパケット」の説明を ご覧ください。
ポートは「ネットワークからパソコンさんに お邪魔するときに通るドア」です。
※話を単純化するために「パソコン」と書きましたが、その他のコンピュータ類でも同じです。
パソコンさんには番号を振られたドアが たくさん付いています。
通信において、データを受け取るときは、ネットワークを通ってきたデータが、たくさんあるドアの どれかを通ってコンピュータに入ってきます。
データを送るときは、コンピュータの中にあるデータが、たくさんあるドアの どれかを通ってネットワークの世界に出ていきます。
コンピュータには たくさんのドアが付いています。
データの種類によって どのドアを通るか決まっている……こともあれば、決まっていないこともあります。
例えば、インターネットのデータは80番のドアとか443番のドアを通ると決まっています。
FTP(インターネットの線を使ってファイルをやり取りする仕組み)のデータは20番とか21番のドアを通ります。
ここでは便宜上、20番のドアを通ることにしておきましょう。
telnet(他のコンピュータを遠隔操作するときに使う仕組み)のやり取りは23番のドアを使うことになっています。
このように「○番のドアは××のデータが通るね」と用途が決まっているドアもあれば「△番のドアは使いたい人が好きに使いなよ」と用途が決まっていないドアもあります。
これらのドアがポートです。
コンピュータとネットワークの間にあるドアです。
ネットワークとコンピュータの間を行き来するデータが通ります。
ここまでの説明のポイントは
・ネットワークとコンピュータをつなぐドア(出入口)がポート
・ポートには番号が付いている
・コンピュータには、たくさんのポートがある
の3つです。
覚えておいてください。
また、これらのドアは必ず通れるとは限りません。
カギが かかっている場合があります。
例えば「俺はtelnetなんて使わないぜ!」な人がパソコンさんの23番ドアにカギをかけたとしましょう。
その場合、そのコンピュータに対してtelnetで接続しようとしても できません。
telnetでパソコンにお邪魔するときに使う23番ドアが通れないからです。
先ほど説明した
・ネットワークとコンピュータをつなぐドア(出入口)がポート
・ポートには番号が付いている
・コンピュータには、たくさんのポートがある
に加えて
・カギが かかっているポートは通れない
も覚えておいてください。
ポートスキャンは「このドアはカギが、かかってないかな~?」と、いろんなドアを片っ端からガチャガチャやってみる行為です。
具体的には、適当な番号を指定してドア(ポート)に接続してみます。
例えば、20番ドアを指定したとしましょう。
接続できれば、20番ドアにカギが かかっていないと分かります。
確か20番ドアはFTP用のドアでした。
ということは、FTP接続できそうですね。
接続できなければ、20番ドアにカギが かかっているっぽいと分かります。
FTP接続できなさそうだと判断できます。
あとは、これの繰り返しです。
片っ端から試すことで開いているポート(カギのかかっていないドア)を探すのがポートスキャンです。
SYNスキャンは「SYNパケットを適当なポートに送りつけて応答を確認することで開いているポートを探す やり方」です。
SYNパケットを送り付ける行為がドアをガチャガチャやる行為に相当します。
ポートスキャンの一種です。
例えば、ピヨ太君が80番ポートにSYNパケットを送りつけたとしましょう。
80番ポートが開いていると「SYN+ACKパケット」と呼ばれるデータが返ってきます。
SYN+ACKパケットは「いいよー」な返事に相当するデータと「こっちからも送って、いいかなー?」な質問に相当するデータが合体したデータです。
SYN+ACKパケットが返ってくればポートは開いています。
何も返ってこなかったり違うのが返ってきたら閉じています。
これでピヨ太君は80番ポートが開いているか分かりました。
目的達成です。
次にピヨ太君は「RSTパケット」と呼ばれているパケットを送ります。
RSTパケットは「お断りの連絡パケット」です。
「あ~、やっぱ接続しなくていいや。さっきのは、なしで!」と連絡したことになります。
少し話がそれますが、なんでRSTパケットを送るかというと痕跡を残さないためです。
ピヨ太君は最終的に接続するのを断りました。
結果として接続されていません。
だから相手コンピュータの「自分に接続した人の記録」に残らないのです。
話を戻します。
ピヨ太君は(痕跡を残さないで)80番ポートが開いているか確認できました。
あとは、これの繰り返しです。
片っ端からSYNパケットを送ってみて応答の有無や内容でポートが開いているか確認するのがSYNスキャンです。
SYNスキャンのメリットは……って、詳しく書いて大丈夫なんですかね。
いろんなところで説明されているので大丈夫だとは思いますが、ちょっと心配です。
とりあえず、スキャンしているのがバレにくいのがメリットです。
あとの詳しいことは他のところで勉強してください。
SYNスキャンをはじめ、ポートスキャンは悪いことに分類される行為です。
他人のコンピュータに対してやると不正行為と見なされかねません。
試してみたい人は自分のコンピュータに対して、やってくださいね。
以上を踏まえて
「SYNスキャン」の別の呼び名
が「ハーフオープンスキャン」です。
推測ですが、接続を途中で止めるから「ハーフオープン(半分 開ける)」なのでしょう。
ちゃんと接続する場合を「フルオープン(全部 開ける)」と見なして、対比させているのだと思います。
一言でまとめるよ
まぁ「ハーフオープンスキャン」って単語が出てきたら「SYNパケット
(SYNフラグに1がセットされたパケット)を送って応答を見ることで有効なポート
(ネットワークとパソコンの間にあるドア)を確認する、ポートスキャン
(いろんなポートに片っ端から接続してみて、開いているポートを調べること)のやり方なんだな~」と お考えください。
おまけ
■訳してみるよ
「half(ハーフ)」の意味は「半分」とか「2分の1」とかです。
「open(オープン)」の意味は「開く」とか「開かれている」とか「始める」とかです。
「scan(スキャン)」の意味は「精査する」とか「走査する」とか「検査する」とかです。
何となく くっつけると
半分開いて検査する
となります。
■検索してみる?






