主机安全检测工具设计方案
- 开发平台和工具
- 程序架构设计
- 开发路线
- 目前存在的困难
开发平台和工具
- 使用
Linux
平台。 - 选择
Python
作为主要编程语言。 - 使用第三方库如
socket
、platform
等来简化开发。
程序架构设计
模块划分
1.用户界面模块:
- 处理用户输入,向其他模块传递参数。(初步实现计划)
- 使用
tkinter
库实现图形用户界面(GUI)。(后期改进预期)
2.系统信息模块:
- 使用
platform
模块获取主机的操作系统信息,如操作系统版本、IP地址、操作时间等。 - 调用系统命令获取更详细的系统信息(后期改进计划)。
3.端口扫描模块:
- 使用
socket
模块进行端口扫描。 - 实现多线程或异步操作以提高效率。(具体实现正进一步研究)
4.漏洞检测模块:
- 利用漏洞库或API检测主机上的常见漏洞。
- 自行编写检测逻辑,整合CVE等漏洞数据库。(具体实现正进一步研究)
5.日志记录模块:
- 使用
logging
模块实现日志记录功能。 - 记录每次检测的结果和操作。
组件交互
1.用户界面与其他模块的交互:
- 用户界面接收用户输入,将输入参数传递给系统信息模块、端口扫描模块和漏洞检测模块。
- 显示检测结果,并将结果传递给日志记录模块。
2.系统信息模块与其他模块的交互:
- 将获取到的系统信息传递给用户界面模块显示。
3.端口扫描模块与其他模块的交互:
- 接收用户输入的主机信息,执行端口扫描,将结果传递给用户界面模块和日志记录模块。
4.漏洞检测模块与其他模块的交互:
- 接收用户输入的主机信息,执行漏洞检测,将结果传递给用户界面模块和日志记录模块。
数据流程
- 用户界面模块负责接收用户输入和展示检测结果。
- 系统信息模块、端口扫描模块和漏洞检测模块分别负责处理特定的任务,并将结果返回给用户界面模块。
- 日志记录模块负责记录每次检测的结果和操作。
架构优势
- 模块化设计: 每个功能都被封装在一个模块中,提高了代码的可维护性。
- 可扩展性: 新功能可通过添加新的模块来扩展系统。
- 易测试: 模块化的设计使得单元测试和集成测试更容易进行。
开发路线
确定工具的基本架构
1.选择开发平台、参考程序和编程工具:
- 编辑器/IDE: VSCode, PyCharm,Vim
- 版本发布: GitHub
- 参考工具:GScan、lynis等
2.制定项目目录结构:
(初步规划)
Host Security Tool
----main.py #主程序
----log #日志和结果记录
----lib #模块库文件
-------core #调用库文件
----------common.py #公共库模块
----------globalvar.py #全局参数管理模块
----------option.py #参数管理模块
----------ip ##ip地址定位库
-------malware #恶意特征库
-------plugins #检测插件模块库
----------port_scanner.py #端口检测模块库
----------Host_Info.py #主机信息获取
----------File_Analysis.py #文件类安全检测
----------History_Analysis.py #用户历史操作类
----------Proc_Analysis.py #进程类安全检测
----------Network_Analysis.py #网络类安全检测
----------Backdoor_Analysis.py #后门类检测
----------User_Analysis.py #账户类安全排查
实现基本功能
1主机操作系统的探测(Host_Info.py):
- 使用Python的
platform
库或其他系统调用获取主机的操作系统信息。 - 输出操作系统类型和版本信息。
2 主机端口开放情况的检测(port_scanner.py):
- 使用Python的
socket
库实现端口扫描功能。 - 提供用户输入或配置文件指定的目标主机,扫描常见端口。
- 输出开放端口的信息。
3.主机常见漏洞扫描:
- 基于linux系统,常见漏洞包括:文件类、进程类、网络类、安全配置类、用户历史操作类、后门类、账户类等大类。
- 文件类安全分析:
系统重要文件完整行扫描
系统可执行文件安全扫描
临时目录文件安全扫描
用户目录文件扫描
可疑隐藏文件扫描 - 安全配置类分析:
DNS配置检测
Iptables防火墙配置检测
hosts配置检测 - 日志类安全分析
secure登陆日志
wtmp登陆日志
utmp登陆日志
lastlog登陆日志
项目初步计划实现以上三类漏洞检测分析,由于网络类、后门类等漏洞涉及范围广泛,在项目推进过程中还需进一步研究,积极争取在有余力的情况下涉及更多大类。
人机交互界面
Linux系统不同于Windows系统,程序执行大多采用终端操作,故我们小组前期主要研究方向在“功能实现+终端操作运行”,后期会尝试采用GUI,设计友好的交互界面。
实现高级功能(预期)
扩大主机常见漏洞情况的检查:
- 扩大初期设定范围,使用已有的漏洞数据库或API,检测目标主机是否存在已知漏洞。输出漏洞信息和建议的修复措施。
2.漏洞分析解决能力实现:
- 根据已排查出的漏洞请款,给出排查建议,并根据异常风险生成初步的处理方案,同时提供多样化的排查选择。
测试和优化
1.编写单元测试:
- 使用pytest等工具编写测试用例,确保各个模块的功能正常。
2.进行测试:
- 对工具进行系统测试,确保在各种情况下都能正常工作。
3.优化性能:
- 考虑并发执行、优化算法、减小资源占用等方面对工具进行性能优化。
报告文档和发布
1.撰写文档和报告:
- 编写清晰的项目文档,包括使用说明、代码注释和技术文档。
- 撰写完善全面的项目总结报告。
2.发布版本:
- 将工具打包为可执行文件或发布到代码托管平台GitHub。
目前存在的困难
1.知识体系与研究路线:
- 初次接触此类工具的开发,在研究路线与架构设计方面需要进一步摸索
- 相关知识储备仍有很大欠缺,对于基本和现行的系统漏洞检测和安全问题需要进一步扩充知识储备。
2.编程能力基础:
- 编程能力是程序开发基础,但目前我们的编程能力有很大不足,需要加大训练强度,尽快熟练起来
- C++与python都未进行系统性学习,需要在有限的时间内极大扩充程序语言知识储备。