ネットワーク列挙のスクリプト作成
Nmap NSEスクリプトとカスタムPythonスキャナーで偵察を自動化します。
「ネットワーク列挙のスクリプト作成」はCoddyKit上の無料Cyber Security Academyレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはCyber Security Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Cyber Security Academyコースには全4レッスンが含まれています。
偵察を自動化する理由
大規模なネットワークでは、手動スキャンは時間がかかり、ミスも起こりやすくなります。スクリプトを使うと、Nmap、Netcatなどのツールを再現可能なパイプラインにまとめ、出力を解析して、さらなる分析に結果を渡せます。
Nmap NSEスクリプトの概要
Nmap Scripting Engine(NSE)は、検出したサービスに対してLuaスクリプトを実行します。スクリプトはauth、brute、default、discovery、exploit、safe、vulnのカテゴリに分類されています。
# Run default safe scripts
nmap -sC 192.168.1.100
# List all scripts
ls /usr/share/nmap/scripts/ | grep http
# Run specific script
nmap --script=http-title 192.168.1.100一般的なNSEスクリプト
列挙に使用する主要なスクリプトは、http-title、http-headers、smb-enum-shares、ftp-anon、dns-brute、ssh-hostkeyです。
nmap --script=smb-enum-shares -p 445 192.168.1.100
nmap --script=ftp-anon -p 21 192.168.1.100
nmap --script=dns-brute --script-args dns-brute.domain=target.com 192.168.1.1vulnカテゴリのスクリプト
vulnカテゴリは、既知の脆弱性を確認します。vulnスクリプトは通信量が多く、サービスをクラッシュさせる可能性があるため、明示的な許可がある場合にのみ使用してください。
sudo nmap --script=vuln 192.168.1.100
# Specific vuln checks:
nmap --script=ms17-010 -p 445 192.168.1.100 # EternalBlue
nmap --script=http-shellshock 192.168.1.100PythonでNmapのXML出力を解析する
Nmapの-oX XML出力は、機械で読み取れる形式です。Pythonのpython-libnmapライブラリを使うと、カスタムレポートの作成や他のツールへのデータ連携のために、XMLを簡単に解析できます。
# Install
pip install python-libnmap
# Parse results
from libnmap.parser import NmapParser
report = NmapParser.parse_fromfile("scan.xml")
for host in report.hosts:
for svc in host.services:
if svc.state == "open":
print(f"{host.address}:{svc.port} {svc.service}")シンプルなPythonポートスキャナー
Pythonのsocketモジュールを使って、最小限のポートスキャナーを作成します。Nmapを利用できない場合や、独自のスキャン方法が必要な場合に役立ちます。
import socket
from concurrent.futures import ThreadPoolExecutor
def scan_port(host, port):
try:
s = socket.socket()
s.settimeout(0.5)
s.connect((host, port))
print(f"Open: {port}")
s.close()
except: pass
with ThreadPoolExecutor(100) as ex:
for p in range(1, 1025):
ex.submit(scan_port, "192.168.1.100", p)Bashの列挙ワンライナー
Bashでは、外部ツールを使わずに/dev/tcp疑似デバイスを利用して、ホストやポートをすばやく列挙できます。
# Check if port is open (bash built-in)
timeout 1 bash -c "echo >/dev/tcp/192.168.1.100/80" && echo open
# Loop over hosts
for i in $(seq 1 254); do
ping -c1 -W1 192.168.1.$i &>/dev/null && echo "192.168.1.$i up"
doneDNS列挙のスクリプト作成
dnsrecon、amass、またはカスタムスクリプトを使ってDNS列挙を自動化します。これらはA、MX、NS、TXT、CNAMEレコードを問い合わせ、サブドメインをブルートフォースで調べます。
dnsrecon -d target.com -t std
amass enum -d target.com
# Manual zone transfer attempt
dig axfr target.com @ns1.target.comenum4linuxによるSMB列挙
enum4linuxは、認証なしでWindowsまたはSambaホストから共有、ユーザー、グループ、パスワードポリシー、OS情報を取得し、SMB列挙を自動化します。
enum4linux -a 192.168.1.100
# -a = all enumeration
# Shows: shares, users, groups,
# password policy, OS versionSNMP列挙
SNMP v1/v2cでは、コミュニティ文字列(多くの場合は「public」)を認証に使用します。SNMPに問い合わせると、システム情報、実行中のプロセス、ネットワークインターフェース、インストール済みソフトウェアが明らかになります。
# Query with default community string
snmpwalk -c public -v2c 192.168.1.100
# Get system info only
snmpget -c public -v2c 192.168.1.100 1.3.6.1.2.1.1.1.0
# Brute force community strings
onesixtyone -c community.txt 192.168.1.100出力の整理
大規模なエンゲージメントでは、構造化された出力が重要です。ターゲットごとにディレクトリを分け、一貫した命名規則(target_service_date)を使用し、tmuxのログ機能などでターミナル出力をすべて記録します。
確認問題
既知の脆弱性に対するチェックを実行するNmap NSEカテゴリはどれですか。
まとめ:列挙のスクリプト作成
スクリプトを使うと、個々のツールコマンドを再現可能な偵察パイプラインに変えられます。NSEスクリプトで対象を絞ったチェックをすばやく実行し、Pythonでカスタム解析と自動化を行い、Bashでホストを高速に発見し、専用ツール(enum4linux、dnsrecon、snmpwalk)でプロトコル固有の列挙を実施します。
よくある質問
「ネットワーク列挙のスクリプト作成」レッスンは無料ですか?
はい。「ネットワーク列挙のスクリプト作成」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Cyber Security Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Cyber Security Academyコースには全4レッスンが含まれています。
「ネットワーク列挙のスクリプト作成」で何を学びますか?
Nmap NSEスクリプトとカスタムPythonスキャナーで偵察を自動化します。 ブラウザで直接実行するハンズオンコードでCyber Security Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Cyber Security Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのCyber Security Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。
「ネットワーク列挙のスクリプト作成」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このCyber Security Academyレッスンでコードを書いて実行できますか?
はい。すべてのCyber Security Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- Nmapによるポートスキャン技法
- サービスとOSのフィンガープリンティング
- Netcat:ネットワークの万能ツール
- ネットワーク列挙のスクリプト作成