メインコンテンツへスキップ

【メモ】セキュリティについて23

    前回は、ネットワークセキュリティおよびFWの概要について書きました。
    今回は、ネットワークスキャン について書きます。

    ■ネットワークスキャンとは
    ・攻撃者があるネットワークの攻撃をする際、その攻撃対象に関する情報を収集する
    ・「ドメイン情報の取得」>「ホストへのスキャン」>「パスワード窃取」
    ・上記をサイバーキルチェーンと呼び、この後は下記のように展開する
    →ラテラルムーブメント:侵入後の横展開
    →攻撃の実施:ランサムウェアによる暗号化、機密情報の窃取や標的型攻撃など
    ・攻撃対象への攻撃を行うまでの大まかなステップに分け、以下書いていく

    ■ドメイン情報の取得
    →whoisを利用し、攻撃対象組織のNW管理者を割り出す
    →nslookupで、攻撃対象組織のNWに関する情報を集める(=FQDNからIPアドレスを正引きする)
    ・nslookupでの情報収集を想定し、DNSサーバは下記のような運用が望ましい
    →不要なDNS情報を保管しない
    →ゾーン転送の制限
    →ドメイン名およびサーバ名に必要以上の情報を与えない(FQDNに「db」といった文字列が含まれている場合、データベースの情報と推測される)
    ・また、社内向けDNSと社外向けDNSサーバを別で用意する(スプリットDNS)場合は、
    →社外DNSから社内DNSには、問い合わせが行かないようにする
    →外部への問い合わせは、社外DNSのみとする(社内DNSは必ず社外DNSを経由する)
    ・もう少し子細に解説する
    →DNSを分ける必要があるのは「社内情報を社外に漏らさないこと」および「外部への窓口を一本化すること」
    →社内向けDNSに入っている情報:社内ポータル、給与システムなど、部外者が知る必要が無い内部サーバのIPアドレスを登録
    →社外向けDNSに入っている情報:公開サーバなど、世界中に公開可能な情報
    →もし上記2つが一つの場合、外部の攻撃者がDNSに繰り返し問い合わせをすることで、社内NWの構成を知られてしまうことがある
    ・もし社外DNSが無い場合、社内DNSは外部のDNSに問い合わせする
    →そうなると、FWが53を解放する必要があり、セキュリティリスクとなる
    →DMZとしてWANポートではない先に社外DNSを置いておけば、LANポートが、53を解放する必要が無く、セキュア(LANポートは53を空けなくていい=DMZとWANポートだけ53を空けていればいい)
    →WAN から LANに向けて53を空けなくていい

    ■ホストへのスキャン
    ・nslookupで攻撃対象NWの大まかな攻勢を把握した後、実際にその中に存在する特定のホストへの攻撃に移行する
    ・その際、攻撃者は自身の身元を隠すために、Tor(The Onion Router)を使用してアプローチしてくる
    ・ホストへのスキャンは下記のような手順で行われることが想定される
    →ICMPによるスキャニングでホストの存在を確認する
    →ホストが存在していた場合、Nmapなどでポートスキャンを行い、ターゲットの情報(OS、サーバのソフトウェア)を取得、既知の脆弱性があるversionかどうかを確認する
    ・通常、社内ホストへのスキャンはFWで破棄している
    →破棄することで、FWそのものの存在自体も攻撃者に知らせない

    ■ICMPスキャンについて
    ・攻撃者は攻撃対象のNWに対し、先ず「pingスイープ」を行う
    →pingスイープ:特定セグメントに対し、すべてのIPアドレスに対しpingを行う
    →反応があったIPアドレスに対し、次ステップのポートスキャンに移る
    →NW管理者は、FWでUDP33434を破棄設定とすることで上記を防げるが、トラブルシューティングの際のICMPによる切り分けもできなくなるため、考慮が必要

    ■ポートスキャンについて
    ・ICMPスキャンで攻撃対象セグメントの大まかな構成を把握、実際に接続可能なホストを特定した後は、特定した攻撃対象となるホストで稼働中のサービスを特定する
    ・ホストのポートに様々な種類のパケットを飛ばし、応答パケットから稼働中のサービスを割り出す
    ・これがポートスキャン
    ・ポートスキャンには、大きく2つの方式が存在する
    ①TCPスキャニング
    →攻撃者が「接続リクエスト(SYN)」を送る
    →サーバーから「OK(SYN/ACK)」が返る
    →攻撃者が「確認(ACK)」を返し3ウェイ・ハンドシェイクを完了させる
    →接続が確立した直後、攻撃者は「切断(RSTまたはFIN)」を送る
    ・接続完了まで確認するため対象ポートが開いているかどうかが確実分かる
    ・一方で、接続を完了までもっていくため攻撃を試みたログを残してしまう
    ②ステルススキャニング
    →攻撃者が「接続リクエスト(SYN)」を送る
    →サーバーから「OK(SYN/ACK)」が返る
    →ここで攻撃者は「ACK」を返さず、代わりに「強制切断(RST)」を送る
    ・接続を完了させないことで、ログが相手側に残ることを防ぐ
    ・ポートスキャンへの対策は、
    →LAN内ホスト:使用していないサービスのポートは停止しておく
    →FW:UDP33434を破棄に設定しておく
    →IDS/IPS:短時間に対象のSYNパケットが届くなど、不審なパケットを検知するようにする

    ■パスワード奪取
    ・ICMPスキャンで疎通が取れるホストの特定、ポートスキャンで攻撃対象ホストのオープンになっているサービスを特定した後は、実際にパスワード奪取を下記の手順で行う
    ①バナーグラビング(サービスの特定):パスワードを奪取する前に、南尾サービスが動いているかを確認する
    →ポートスキャンで確認した開放中のポートにアクセスし、ホストから返ってくる応答(バナー)を読み取る
    →例:22が開いていれば、実際その22で稼働しているSSHのソフトは何なのか というところまで確認する
    →具体的なソフトまで確認し、それが脆弱性を含むソフトだった場合は、攻撃対象となる
    →CVEリストに得たバージョン情報を照合することで判定する
    ②パスワード特定のための攻撃
    ・バナーから脆弱性を確認、攻撃対象を確定したら、下記のような攻撃を行う
    →ブルートフォース:とにかく全文字列で攻撃(自動ツール(Hydraなど)を使用する)
    →ディクショナリ:推測可能な文字列で攻撃
    →パスワードリスト:他社サービスから漏洩した「ID/PW」のセットをそのまま流用する方法
    ・上記攻撃でID/PWを特定、社内ホストに入りこめた後は「管理者権限」への昇格を狙う

    ■どのように防ぐか
    ・上記のキルチェーンを中断するには、下記のような対策が有効
    →MFA:ID/PWだけではサインインできないようにする
    →アカウントロック:一定回数のミスによるアカウントロック
    →IDS/IPS, WAF:振る舞い検知
    →踏み台サーバの用意:重要なサーバへのアクセスは、特定のサーバを経由しないとできないように設定する

    ■shadowファイルについて
    ・LinuxやUNIX系OSで、「ユーザの暗号化されたPWを保存しているファイル」のこと
    ・昔パスワード情報は全て、etc/passwordというフォルダ上にあり、誰でも読み取れる状態にあった
    ・内容は暗号化されているものの、攻撃者によってファイルが奪取されると、攻撃者が自身のローカル環境で時間をかけて解読作業を行うことが可能
    ・そのため、PW部分だけを切り離して保管するように考え出されたものがshadowファイル
    →暗号化されたPWのみではなく、アカウントの有効期限などの情報も記載されている
    ・攻撃者はこのshadowファイルを奪取することを狙う
    →前述の通り、これさえ奪取できればあとはオフラインで解析できるため
    ・対策は、
    →cat /etc/shadow(Linux)には通常のエクスプローラでアクセスすることは不可。sudoでしか入れない
    →Windowsでは管理者権限のcmdで調べる
    →SHA-512のような強力なハッシュ関数に加え、Saltも併用する

    ここまでで、ネットワークスキャン>ホストのセキュリティについては終わりです。
    次回は、セッションハイジャックについて書きます。

    20260306