1.6K Views
April 25, 25
スライド概要
ポートスキャナー入門として、ハンズオン演習を通じてポートスキャンの基本を学びます。演習ではNmapとNetcatを使用し、ホストスキャン、ポートスキャン、サービススキャンの手法を体験します。また、演習管理用Webサーバーを使い、実際のツールを駆使してオープンポートの確認やサービス名の特定を行います。演習を通じて得た知識をもとに、正しい判断ができるよう支援します。
Threat Hunter & App Developer & Security Engineer & Researcher https://www.hacket-engine.com
ポートスキャナー入門 正しく判断するために知っておきたいこと 2025年4⽉ SR分科会 ISACA名古屋⽀部 調査研究担当・CISA教育担当 2025年4⽉19⽇(⼟) 14:00-14:50 理事 ⻑⾕川達也
はじめに • セキュリティリサーチ(SR)分科会へようこそ︕ • リサーチ報告で 広く浅くインプット 本⽇は ハンズオン特化回 • ⼿を動かすハンズオンで アウトプット&エンジニアリング • ディスカッション(交流)で ⼈脈形成 ご都合よろしければ、15:00〜の ISACA⽉例会にもご参加ください
全体概要 タイムテーブル 1. ハンズオン演習説明 2. ハンズオン時間 3. 簡単な解説とまとめ 5分 35分 10分 演習⽤ ”ネットワークレンジ”に対してnmap/netcatツールで各種スキャン I ホストスキャン II ポートスキャン III サービススキャン を⾏うハンズオン演習 背景︓ポートスキャンは攻撃者の偵察に使われるのみならず、死活監視やネットワークの 把握にも活⽤される機会もあるため、広く知っておくべきテクニック 演習⽤サーバーを使って、演習⽤ネットワークレンジ以外へスキャンしないでください。
ハンズオン環境 192.168.8.0/26 参加者 ターゲットA ターゲットB 演習管理用 Webサーバー SlackでURLを共有 ターゲットC 演習管理用Webサーバー越しにターゲットネットワークにのみスキャン
ポートスキャンの⼀般的なプロセス ホストスキャン ネットワーク上の起動ホストを知りたい Reverse DNS、ARP、ICMP、TCP/UDP で IPアドレスを探索 ポートスキャン 起動ホストごとのオープンポートを知りたい TCP/UDP でポート番号ごとにパケット応答を確認 サービス(バージョン)スキャン オープンポートごとの起動サービス名とバージョンを知りたい ポート番号ごとに応答するバナー⽂字列を確認 脆弱性スキャン サービスのバージョン情報やバナー⽂字列だけでなく、脆弱性に該当するかのPoCパケットを送信もしたりする
演習管理⽤Webサーバー(1) ログインページ 演習開始時にPasswordをSlackで共有します。 Passwordを⼊⼒フォームに⼊れて、Loginボタンを教えてください。 以後、セッションCookieでログイン状態を認識します。
演習管理⽤Webサーバー(2) スキャンツール実⾏ページ 利⽤できるツールは、nmapとnetcatのみです。 バージョンやオプション引数等はご⾃⾝でコマンドヘルプをご確認ください。(-h || --help) 管理者権限が必要な場合は、sudoオプションを☑ください。 (nmapのみ可) 時間がかかるScanを実施した際、諦める場合は必ずCancelボタンを押してください。
演習管理⽤Webサーバー(3) スキャンツール実⾏ページ結果 コマンドの結果は、Webページと 開発者ツールのJavaScriptコン ソールにも出⼒されます。 結果から有益な情報を各⾃で記録 してください。結果末尾にコピー ボタンを配置しています。 前⾴の「Go to Answer Page」の ボタンを押すと回答ページに遷移 します。
演習管理⽤Webサーバー(4) 回答ページ Server A,B,Cには 演習管理⽤Webサーバーと 192.168.8.1のGW IPは 含みません Server A,B,CはIPアドレスの第4オクテットの昇順です。 例 “22/tcp|ssh”の形式で、発⾒できたオープンポートらについて “port番号/tcpまたはudp|service名”を⼊⼒し、「Submit」ボタンを押して回答を提出します。
演習管理⽤Webサーバー(5) 回答ページ 結果 各Server内はどこにどのポートを⼊れても正解ポートが含まれていれば反応します。 また過去に⼊⼒した正解のポートは「セッションストレージ」で管理しています。 ぜひ20問全問正解を⽬指してがんばってください︕単純に1問 5%のScoreです。 service名は基本nmap定義に準拠します が、⼀部それだけでは正解にならずCTFのように調査して正しいservice名を探してもらう 問題があります。 作問者の⽬標は全員が
演習管理⽤Webサーバー(6) トラブルシューティング︖もしもこんなエラーが出たら 例: Websocketが過去のセッションを利用しようとしているがすでに存在しないエラー、過去を消去し、リセットするべきトラブル 演習Webサーバーのコマンド実⾏がうまくいかない場合は↓ 1. ツール実⾏中の場合はまず「Cancelボタン」を押してください。 2. 「Cancelボタン」が機能しなければ、ツール実⾏ページをF5リロードしてください。 3. それでも状況が改善しなければ、セッションCookieを削除してください。削除後F5リロードす るとログインページからのやり直しとなり、セッション状況が初期化されますが、セッションス トレージは残存するので過去の正解回答は残ったままです。 4. まだ解決しなければ、演習期間のブラウザーキャッシュを削除し、Webブラウザー再起動してく ださい。 5. 演習管理⽤Webサーバーが機能しなくなった場合に備えて、SOCKSプロキシを併設しています。 SOCKSプロキシを使わなければならない状況になったらアクセス⽅法をお伝えします。+どうし ても⾃分のツール環境から演習に参加したい⽅にはSOCKSプロキシへのアクセス⽅法をお伝えし ますのでSlackでDMください。
ハンズオン演習スタート それでは、わいわいと ポートスキャン演習スタートです。 ご不明点があれば、遠慮なく管理者(⻑⾕川) を会場で捕まえるか、SlackでDMください。 簡単な解説は、終了10分前から⾏います。 時間短縮のヒント︓ Server B と Server C は10000番ポート以下 のみ解答フラグに含みます Good Luck!
コマンド引数のヒント ⚠本演習⽤サーバーにおける内部UNIXシェルへの受け渡しでは、いくつかの無害化処理を施しております nmapコマンド --version コマンドバージョン確認 -h ヘルプ表⽰ -nn DNS名前解決しない -vv very verbose 詳細のデバッグ表⽰(⻑く時間がかかる場合に重宝) -Pn Probe none。⽣きているホストのIPアドレスが⾃明の場合はこれをセットするとホストスキャンをスキップ。 -p 22,80 22番と80番ポートのみに絞ったスキャン -p0-65535のすべてのポートへのスキャン -sV バージョンスキャン(アプリケーションレイヤーのパケットを解析) -sU UDPのポートに対するスキャンに必須 + sudo 権限も必須 sudoオプションを付与するとどうなるかはご⾃⾝でご確認ください。 netcatコマンド -N 標準⼊⼒終了後即時切断 -w 2 2秒後に切断 <<< SOMETHING ヒアストリング機能。この場合、標準⼊⼒で⽂字列SOMETHINGを送信します。またクオート(ʻや””)で 囲むとうまくいかない可能性があります。複雑な⽂字列の⼊⼒は必要としませんし、解答へ向けて環境変数とのバッティング もありません。
簡単な解説
簡単な解説まとめ(正しく判断するために知っておきたいこと) Nmap • ホストスキャン - ⼀般ユーザー権限では、 80/tcp、443/tcp の 2ポートしかスキャンしない😭 - 管理者権限にてようやく、ARP + ICMP でスキャンできる😊 • ポートスキャン - デフォルトではよくサーバーが稼働している1000個のポート番号へのTCPスキャンのみ - sU: UDP (管理者権限が必要)。レアなポート番号には-pでポート番号の指定必須 - ポート番号毎に主たるサービス名がマッチアップされている(例 23/tcp = telnet) • サービス(バージョン)スキャン - sV: 実際に受け取ったバナー⽂字列等によりサービス名とバージョンを判断 Netcat (スキャニング⽤途) • TCP またはUDPのパケットのみ対応、ARPやICMPは送れない • デフォルトTCP (例 -nvw2)、UDPは-uが必要 (例 -nvwu2)
次回のSR分科会は「2025年7⽉19⽇(⼟)」 次回は、ディスカッション回で花⽥先⽣(理事)(SR分科会副査)による 「企業版サイバーポリスゲーム」 「名古屋国際センター第⼆研修室 @国際センター駅」で現地のみの開催です SR分科会へのご参加ありがとうございました。 次回の詳細情報は、Slackで別途ご連絡します。