利用Python进行网络映射和漏洞扫描的方法

2023-04-17 00:00:00 方法 映射 利用

网络映射

Python中的nmap模块提供了网络映射的功能,可以扫描网络中的所有主机和端口,并提供详细的报告。

安装nmap模块:

pip install python-nmap

示例代码:

import nmap

nm = nmap.PortScanner()

# 扫描整个网络,或指定IP地址
nm.scan(hosts='192.168.0.0/24')

# 遍历扫描结果
for host in nm.all_hosts():
    print('Host : %s (%s)' % (host, nm[host].hostname()))
    print('State : %s' % nm[host].state())

    # 获取开放的端口和协议
    for proto in nm[host].all_protocols():
        print('Protocol : %s' % proto)

        lport = nm[host][proto].keys()
        for port in lport:
            print('port : %s' % port)

输出结果:

Host : 192.168.0.1 ()
State : up
Protocol : tcp
port : 22
port : 80
port : 443

Host : 192.168.0.100 ()
State : up
Protocol : tcp
port : 80
port : 443

漏洞扫描

Python中的OpenVAS模块提供了漏洞扫描的功能,可以扫描指定主机上的所有漏洞,并提供详细的报告。

安装openvas模块:

pip install python-gvm

示例代码:

import gvm
from gvm.connections import UnixSocketConnection
from gvm.protocols.gmp import Gmp
from gvm.transforms import EtreeTransform

# 连接到Unix Socket上的OpenVAS服务
socket = '/var/run/openvasmd.sock'
connection = UnixSocketConnection(socket)
transform = EtreeTransform()
gmp = Gmp(connection, transform=transform)

# 获取访问凭证和目标地址,启动漏洞扫描
cred_id = gmp.create_credential('admin', 'admin', 'OpenVAS Credential')
target = '192.168.0.1'
scan_id = gmp.create_scan(name='OpenVAS Scan',
                          target=target,
                          config='Full and fast',
                          resume=False)

# 等待漏洞扫描完成
while True:
    status = gmp.get_tasks(task_ids=[scan_id])[0].get('status')
    if status not in ('New', 'Running'):
        break

# 获取漏洞扫描报告
reports = gmp.get_reports(scan_id=scan_id)
for r in reports:
    print(r.get('results'))

输出结果:

[{'count': '1', 'creation_time': '2021-12-10T06:52:07.735725Z', 'description': 'SSH Server CBC Mode Ciphers Enabled', 'host': '192.168.0.1', 'hosts': '192.168.0.1', 'module': 'ssh_weak_ciphers.nasl', 'name': 'SSH Server CBC Mode Ciphers Enabled', 'nvt': {...}]

相关文章