0Pricing
Cyber Security Academy · レッスン

ネットワーク列挙のスクリプト作成

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.1

vulnカテゴリのスクリプト

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.100

Pythonで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"
done

DNS列挙のスクリプト作成

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.com

enum4linuxによるSMB列挙

enum4linuxは、認証なしでWindowsまたはSambaホストから共有、ユーザー、グループ、パスワードポリシー、OS情報を取得し、SMB列挙を自動化します。

enum4linux -a 192.168.1.100

# -a = all enumeration
# Shows: shares, users, groups,
#        password policy, OS version

SNMP列挙

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フィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. Nmapによるポートスキャン技法
  2. サービスとOSのフィンガープリンティング
  3. Netcat:ネットワークの万能ツール
  4. ネットワーク列挙のスクリプト作成
← Cyber Security Academyに戻る