「Golangで行うポートスキャナ自作ではじめるペネトレーションテスト」を見た、ポートスキャンについて学んだ

zenn.dev

自作ってキーワードに惹かれて記事を見た、オライリーの書籍O'Reilly Japan - ポートスキャナ自作ではじめるペネトレーションテストについて紹介されており 書籍に出てくる自作ポートスキャナをGolangに書き換えてみたっていう内容のよう。まずもって、ポートスキャナって何?という状態。

用語から、サーバーに何のポートが空いているのか調べるためのツールかな?と思う。 steamのハッカーシミュレーションゲームで攻撃するときに何のポート空いてるか調べるツールがあった

Steam で 85% オフ:Hacknet

※85%OFFらしい(笑)(2023/11/10時点)

ポートスキャナ調べてみた

ポートスキャナとは - 意味をわかりやすく - IT用語辞典 e-Words

IT用語辞典によると、各ポートにアクセスし、応答があるかどうか・なんのソフトウェアが応答するかを調べて確認できるツールのよう。

ポートスキャンで開放ポートを知られないようにする手段

スキャンの種類

  • TCPスキャン
    • 一番一般的なスキャン方法、TCPコネクションの確立が成功すれば、ポートが開いていると判断する
  • SYNスキャン
    • TCPスキャンの一つ、SYNパケットを送信してサーバーがSYN/ACKまたはRSTどちらを返すかチェックする
    • SYNフラッド攻撃というものもあり、SYNパケットを大量に送信することでサーバーに負荷を掛ける攻撃
  • FINスキャン
    • TCPスキャンの一つ、FINフラグを立てたTCPパケットを送信してターゲットの応答を調べる手法
    • SYNフラッド攻撃と同じく、FINフラッド攻撃もある
  • ACKスキャン
    • ターゲットのポートがフィルタリングされているか確認するためのスキャン
    • TCPパケットのACKフラグだけを立てたパケットを送信することで確認する
  • UDPスキャン
    • UDPプロトコルを使用してポートをスキャンする手法
    • UDPを利用するDNSSNMPなどのサービスの存在を確認するために利用されることが多い
    • ほかにもファイアウォールのポリシーを確認するためにも利用される
    • TCPに比べてUDPの方がスキャンが完了するまで遅くなることがある模様

理解できていない用語/概念

終わりに

ネットワークも、サーバーもどう動いているのか把握しているつもりだったけど、ほとんど理解できていないことが分かった。 ポートスキャナの自作で学べること多そうだし、本買ってみようかな。。。 知らないことを調べるのは疲れるけど、面白い。