网络漏洞扫描系统设计与实现
1. 绪论
1.1 选题背景及意义
1.1.1 网络环境的安全风险
- 计算机网络的广泛应用带来了安全风险,如黑客攻击、网络病毒等。
- 网络环境的开放性使得网络攻击可能造成网络瘫痪、信息数据丢失等严重后果。
- 加强网络安全技术研究,净化网络环境,保护用户个人信息至关重要。
1.1.2 渗透测试的作用
- 渗透测试能够对目标网络系统的安全进行评估,有效预防网络攻击。
- 自动化测试通过自动分析目标网络,发现潜在的脆弱性,降低人工参与程度。
- 研究自动化漏洞扫描系统,有助于加强网络安全保护,提高网络安全技术发展。
1.2 研究目的与意义
- 设计一个基于Python语言的Django框架开发的漏洞扫描系统。
- 系统能够自动扫描和分析应用程序、网络设备、操作系统等信息,发现并报告存在的漏洞。
- 帮助组织和机构更好地保护其网络安全,减少黑客攻击、数据泄露等事件的发生。
- 提高对网络安全的认识和理解,促进网络安全技术的发展和进步。
- 系统具有普适性和可扩展性,可以应用于不同类型的组织和机构,具有广泛的应用前景。
2. 关键技术
2.1 Python编程
- Python是一种高级编程语言,以其简洁的语法和强大的功能被广泛应用于各种领域。
- Python在自动化测试、数据分析、网络爬虫等方面具有明显的优势。
2.2 Django框架
- Django是一个开源的Web应用框架,基于Python语言开发。
- Django具有许多优点,如自带模板引擎、支持多种数据库、自动管理URL等。
- Django可以快速构建Web应用程序,非常适合开发漏洞扫描系统。
2.3 HTML
- HTML是超文本标记语言,用于创建网页和网络应用程序。
- HTML定义了网页的结构和内容,是Web开发的基础。
3. 需求分析
3.1 需求获取
- 通过与网络安全学生交流,了解他们对系统的期望和要求。
- 收集八方网鱼论坛关于网络安全的发言,整理需求和期望。
- 综合调查结果,确定系统的主要功能和设计,满足用户的主要痛点和期望。
3.2 需求分析
- 需求分析结果转化为系统的主要功能和设计要求。
- 功能需求包括支持漏洞信息收集、主机信息收集、域名信息收集、证书信息收集等。
- 非功能需求包括可靠性、安全性、合规性等。
3.3 用例图
- 用例图展示了用户与系统之间的交互,以及系统提供的功能。
- 用户可以通过执行用例与系统交互,实现资产探测、信息收集、漏洞扫描等操作。
4. 系统详细设计与实现
4.1 网站首页
- 网站首页包括资产探测、信息收集、漏洞扫描三个功能分区。
- 资产探测包含C段探测、旁站探测、子域名探测、HTTPS证书查询、端口探测等。
- 信息收集包含IP信息获取、WAF检测、目录扫描、CDN检测、WHOIS查询等。
- 漏洞扫描提供对目标网站的漏洞扫描并生成扫描报告。
4.2 资产探测的实现
4.2.1 C段探测
- C段探测用于获取目标网络中存活的主机IP地址。
- 通过“减D段”操作获取C段IP地址范围,使用Ping操作探测存活主机。
- 遍历IP地址的每个字符,判断字符是否为点号,截取IP地址的前缀部分。
- 使用subprocess库执行ping命令,解码结果检查是否包含'TTL'关键词,将可达主机添加到列表中。
4.2.2 子域名探测
- 子域名探测用于发现目标域名下存在的有效子域名。
- 使用requests库向site.ip138.com发送GET请求,获取指定域名的相关信息。
- 使用BeautifulSoup解析HTML内容,获取所有标签为p的元素。
- 遍历元素,获取名为href的属性值,提取实际域名信息,添加到列表中。
4.2.3 端口探测
- 端口探测用于查看目标网站开放了哪些端口。
- 使用socket.getaddrinfo()函数解析IP地址,获取主机名对应的IP地址。
- 使用Shodan API进行IP地址的信息查询,获取开放端口号列表。
4.3 信息收集的实现
4.3.1 WAF检测
- WAF检测用于确定目标网站是否使用WAF保护其Web应用程序。
- 构造HTTP请求测试目标站点是否存在WAF,分析返回信息与WAF规则进行比较。
- 如果请求正常并且返回头或返回体中包含WAF指纹库中的指纹,则说明存在WAF。
4.3.2 目录扫描
- 目录扫描用于检查目标网站或服务器上公开的目录和文件。
- 读取PHP.txt文件,将后台传入的待查web网址与库中的指纹进行拼接成payload。
- 使用requests库发送HTTP请求,检查响应的状态码是否在预定义的状态码列表中。
4.3.3 CDN查询
- CDN查询用于检测目标站点是否使用CDN。
- 使用socket.getaddrinfo()函数获取域名的IP地址列表。
- 如果返回的IP数量大于1,则说明存在CDN。
4.4 漏洞扫描的实现
- 漏洞扫描用于检测目标系统中可能存在的安全漏洞和弱点。
- 调用AWVS的接口实现漏洞扫描功能,准备扫描任务并生成扫描报告。
- 生成PDF版和HTML版的扫描报告,包含漏洞的严重性、描述、发生的细节和修复建议等。
5. 系统测试
5.1 测试环境
- 软件环境:Windows10操作系统,Google Chrome,Pycharm,Oracle VM VirtualBox。
- 硬件环境:HP Pavilion Gaming Laptop,CPU:Intel(R) Core(TM) i7-9750H CPU @ 2.60GHz,运行内存:16GB。
5.2 测试方法
- 采用黑盒测试方法对系统中的多个功能模块进行测试,包括C段探测、目录扫描和漏洞扫描等。
5.3 测试用例
- 测试用例包括对C段探测、目录扫描和漏洞扫描功能的测试,验证各功能模块是否能够正常使用。
6. 结论
- 本研究的目的是设计一个轻量化的漏洞扫描系统,基于Django框架设计了一个拥有资产探测、信息收集、漏洞扫描的网站。
- 该网站旨在提供一个综合性的渗透测试工具平台,帮助用户识别和解决系统中的潜在安全漏洞。
- 在实现过程中遇到了一些问题,如旁站探测、子域名探测、HTTPS证书查询的限制,以及漏洞扫描功能的单一性。
- 后续将在旁站探测、子域名探测等功能采用多网站采取数据,改进扫描方式和扫描报告,以满足用户需求。
- 通过这个设计开发过程,提升了技术能力,加深了对网络安全的理解和意识。




