Penetration Testingコースの補足資料
Nmapのタイミングテンプレート
-sUを使用したUDPスキャンはかなりの時間がかかるため、テンプレートを使用した方がよい。以下、テンプレート毎の簡単なまとめ。
T0 – Paranoid(偏執的)
IDS回避。何千ものマシンやポートをスキャンするには非常に長い時間がかかる。 そのように長いスキャンを行う場合は、あらかじめ用意された-T0 や -T1の値に頼るよりも、必要に応じて的確なタイミング値を設定するほうが好ましい
(プローブ間隔)
スキャンを連続的に実行して一度に1つのポートしかスキャンされないようにすることと、各プローブを送信する間に5分間待機する
(並行処理)
おこなわない。
T1 – Sneaky(卑怯者)
IDS回避。何千ものマシンやポートをスキャンするには非常に長い時間がかかる。 そのように長いスキャンを行う場合は、あらかじめ用意された-T0 や -T1の値に頼るよりも、必要に応じて的確なタイミング値を設定するほうが好ましい。
(プローブ間隔)
15秒
(並行処理)
おこなわない。
T2 – Polite(礼儀正しい)
テンプレート T2 名称 polite 直訳 礼儀正しい 並行処理 × (特徴)
スキャン処理速度を落とし、帯域幅とターゲットマシンのリソースの使用量を少なくするが、デフォルトスキャンの10倍の時間がかかる。T3でもマシンのクラッシュや帯域幅が問題になることはめったにないので使わなくていい。
(プローブ間隔)
0.4秒
(並行処理)
おこなわない。
T3 – Normal(普通)
デフォルトなので、-T3としても特に何もしない
(並行処理)
おこなう。
T4 – Aggressive(攻撃的)
適度に高速で信頼性の高いネットワークを使用していることを想定して、スキャン速度を上げる。TCPポートに対するスキャン処理の動的な遅延時間が10msを越えないようにすることができる。
(並行処理)
おこなう。
--max-rtt-timeout 1250ms --min-rtt-timeout 100ms --initial-rtt-timeout 500ms --max-retries 6
T5 – Insanse(非常識)
非常に高速なネットワークを使用しているか、速度と引き換えに精度の一部を犠牲にしても構わない場合を想定したモード。TCPポートに対するスキャン処理の動的な遅延時間が5msに制限される。
(並行処理)
おこなう。
--max-rtt-timeout 300ms --min-rtt-timeout 50ms --initial-rtt-timeout 250ms --max-retries 2 --host-timeout 15m --script-timeout 10m --max-scan-delay
Nictoのメッセージの説明
The X-XSS-Protection header is not defined.
現在はこのヘッダは非推奨とされており、モダンなブラウザではCSP(Content Security Policy)によるより効果的なXSS保護が採用されています。
X-XSS-Protection
は、クロスサイトスクリプティング(XSS)攻撃から保護するために、以前のウェブブラウザで使用されていたHTTPレスポンスヘッダの一つです。このヘッダは、ブラウザにXSS攻撃を検出したときの振る舞いを指示します。
X-XSS-Protection
ヘッダが定義されていないということは、そのウェブサイトが古いタイプのXSS保護に依存していないか、もしくは全く保護を提供していない可能性があります。セキュリティのベストプラクティスとしては、CSPを適切に設定してXSS攻撃からの保護を強化することが推奨されています。
(対策)
セCSPの設定を検討し、ウェブサイトのセキュリティを強化することを検討すべきです。また、X-XSS-Protection
ヘッダが必要な古いブラウザをサポートする必要がある場合は、適切な値を設定しておくことが有効です。ただし、これは一時的な対策であり、最終的にはCSPの実装が望ましいです。
使用しているwebサーバー側で、CSPヘッダーを設定する。
Nginxの場合
server {
add_header Content-Security-Policy "default-src 'self'; script-src 'self' https://trustedscripts.example.com; object-src 'none';" always;
}
The X-Content-Type-Options header is not set.
X-Content-Type-Options: nosniff
という形でウェブサーバーから提供されるセキュリティ関連のヘッダーです。このヘッダーを設定することにより、ブラウザはサーバーから送信されるMIMEタイプを信頼し、MIMEタイプのスニッフィング(ブラウザがコンテンツの種類を推測するプロセス)を行わないように指示されます。これにより、次のようなセキュリティリスクを軽減できます:
- ユーザーがアップロードしたファイルが、誤って実行可能なスクリプトとして解釈されるのを防ぎます。
- サーバーが誤って指定したMIMEタイプによるセキュリティリスクを排除します。
- クロスサイトスクリプティング(XSS)攻撃の一種であるMIMEタイプの混乱攻撃を防ぎます。
(対策)
X-Content-Type-Options: nosniff
ヘッダーは、ウェブサーバーの設定を通じて追加できます。たとえば、ApacheやNginxの設定ファイルで以下のように設定します。
Nginxの場合
server {
add_header X-Content-Type-Options "nosniff";
}
Metasploitの構成
metasploitは、rubyで書かれていて、以下のフォルダを見ることにより、モジュールの構成やコードを見ることができます。
/usr/share/metasploit-framewwork/modulews
|- auxiliary
|- encoders
|- evasion
|- exploits
|- nops
|- payloads
|- post
以下は各モジュールの説明です。
フォルダ名 | モジュール名 | 説明 |
---|---|---|
auxiliary | auxiliary | 脆弱性スキャんやフィンガープリンティングなど、攻撃ではなくサポート的な役割のモジュール。 |
encoders | encoder | ペイロードを難読化して、侵入検知システムやウイルス対策ソフトの検出を避けるために使う。 |
evasion | evasion | IDS/IPS、ファイアウォールなどのセキュリティ製品を回避するためのモジュール。 |
exploits | exploit | セキュリティの脆弱性を利用して、ターゲットシステムにアクセスするためのコード。 |
nops | nop | ペイロードのサイズを調整する際に使用する「何もしない」命令のシーケンス。 |
payloads | payload | Exploitによって実行されるコード。例えばシェルやマルウェアなど、攻撃者が望む動作をする。 |
post | post | システム侵入後(権限昇格、永続性の確立など)に使うモジュール。 |
metasploitは、多くのモジュールが存在するため、searchコマンドを使用して、「今何がやりたいのか?」によって、必要とするモジュールを絞り込み、効率よく検索することが重要です。
searchコマンドのヘルプは、search -h
で、いつでも確認が出来ます。
msf6 > search -h
Usage: search [<options>] [<keywords>:<value>]
OPTIONS:
-h, --help Help banner
-I, --ignore Ignore the command if the only match has the same name as the search
-o, --output <filename> Send output to a file in csv format
-r, --sort-descending <column> Reverse the order of search results to descending order
-S, --filter <filter> Regex pattern used to filter search results
-s, --sort-ascending <column> Sort search results by the specified column in ascending order
-u, --use Use module if there is one result
Keywords:
aka : Modules with a matching AKA (also-known-as) name
author : Modules written by this author
arch : Modules affecting this architecture
bid : Modules with a matching Bugtraq ID
cve : Modules with a matching CVE ID
edb : Modules with a matching Exploit-DB ID
check : Modules that support the 'check' method
date : Modules with a matching disclosure date
description : Modules with a matching description
fullname : Modules with a matching full name
mod_time : Modules with a matching modification date
name : Modules with a matching descriptive name
path : Modules with a matching path
platform : Modules affecting this platform
port : Modules with a matching port
rank : Modules with a matching rank (Can be descriptive (ex: 'good') or numeric with comparison operators (ex: 'gte400'))
ref : Modules with a matching ref
reference : Modules with a matching reference
target : Modules affecting this target
type : Modules of a specific type (exploit, payload, auxiliary, encoder, evasion, post, or nop)
よく使うもの
Keyword | 説明 | 使用例 |
---|---|---|
arch | CPUアーキティクチャでの検索 | search arch:x86 [検索文字列] |
cve | CVE番号での検索 | search cve:2021-34527 [検索文字列] |
platform | OSでの検索 | search platform:windows [検索文字列] |
rank | モジュールの信頼性ランクでの検索(excellent, great, goog, normal・・・) | search rank:exellent [検索文字列] |
type | モジュールタイプでの検索(上記テーブルのモジュール名) | search type:exploit [検索文字列] |
リバースシェル図解
