本方案结合Masscan的快速扫描能力、Nmap的深度探测功能以及ELK(Elasticsearch, Logstash, Kibana)的数据分析和可视化能力,构建一个完整的内网资产收集与分析系统。
# 安装Masscan
sudo apt-get install masscan
# 扫描整个内网(假设内网为192.168.1.0/24)
sudo masscan 192.168.1.0/24 -p1-65535 --rate 100000 -oJ masscan_results.json
参数说明:
- -p1-65535
: 扫描所有端口
- --rate 100000
: 设置每秒发送100,000个数据包
- -oJ
: 输出JSON格式结果
# 安装Nmap
sudo apt-get install nmap
# 从Masscan结果中提取IP和端口进行深度扫描
cat masscan_results.json | jq -r '.[] | .ip + " " + (.ports[] | .port | tostring)' | \
while read ip port; do
nmap -sV -sC -p $port -oX nmap_${ip}_${port}.xml $ip
done
参数说明:
- -sV
: 服务版本探测
- -sC
: 使用默认脚本扫描
- -oX
: 输出XML格式结果
# 安装Java
sudo apt-get install openjdk-11-jdk
# 安装Elasticsearch
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.10.2-amd64.deb
sudo dpkg -i elasticsearch-7.10.2-amd64.deb
# 安装Logstash
wget https://artifacts.elastic.co/downloads/logstash/logstash-7.10.2.deb
sudo dpkg -i logstash-7.10.2.deb
# 安装Kibana
wget https://artifacts.elastic.co/downloads/kibana/kibana-7.10.2-amd64.deb
sudo dpkg -i kibana-7.10.2-amd64.deb
创建Logstash配置文件 /etc/logstash/conf.d/nmap.conf
:
input {
file {
path => "/path/to/nmap_results/*.xml"
start_position => "beginning"
sincedb_path => "/dev/null"
codec => multiline {
pattern => "^<nmaprun"
negate => "true"
what => "previous"
}
}
}
filter {
xml {
source => "message"
store_xml => false
xpath => [
"/nmaprun/host/address/@addr", "host_ip",
"/nmaprun/host/ports/port/@portid", "port_id",
"/nmaprun/host/ports/port/state/@state", "port_state",
"/nmaprun/host/ports/port/service/@name", "service_name",
"/nmaprun/host/ports/port/service/@product", "service_product",
"/nmaprun/host/ports/port/service/@version", "service_version"
]
}
mutate {
split => { "host_ip" => "," }
split => { "port_id" => "," }
split => { "port_state" => "," }
split => { "service_name" => "," }
split => { "service_product" => "," }
split => { "service_version" => "," }
}
}
output {
elasticsearch {
hosts => ["localhost:9200"]
index => "nmap_scan_results"
}
}
# 启动Elasticsearch
sudo systemctl start elasticsearch
# 启动Logstash
sudo systemctl start logstash
# 启动Kibana
sudo systemctl start kibana
http://localhost:5601
可以创建自动化脚本定期执行扫描和分析:
#!/bin/bash
# 1. 使用Masscan扫描
echo "[+] Starting Masscan scan..."
sudo masscan 192.168.1.0/24 -p1-65535 --rate 100000 -oJ masscan_results.json
# 2. 使用Nmap深度扫描
echo "[+] Starting Nmap deep scan..."
cat masscan_results.json | jq -r '.[] | .ip + " " + (.ports[] | .port | tostring)' | \
while read ip port; do
echo "Scanning $ip on port $port..."
nmap -sV -sC -p $port -oX nmap_results/nmap_${ip}_${port}.xml $ip
done
# 3. 导入数据到ELK
echo "[+] Importing data to ELK..."
sudo systemctl restart logstash
echo "[+] Scan completed! Access Kibana at http://localhost:5601"
通过这套方案,您可以全面掌握内网资产情况,及时发现潜在风险,并为安全决策提供数据支持。