基于python的自动化渗透工具的设计与实现.docx
《基于python的自动化渗透工具的设计与实现.docx》由会员分享,可在线阅读,更多相关《基于python的自动化渗透工具的设计与实现.docx(40页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、摘 要近些年来网络安全形势变得越来越严峻,全球数百万个政企遭遇过不同程度的网络攻击。渗透测试是一种对目标进行信息安全评估的方法,而目前该行业仍在存在着安全服务行业价格昂贵,安全人才缺口巨大,在渗透测试时步骤繁琐、效率低下等问题。且现阶段的渗透测试工具存在着学习成本高,自动化程度低,功能难以扩展等问题。针对以上问题,本文设计了一款基于Python编程语言的自动化渗透测试工具,面向的主要群体是爱好漏洞挖掘的SRC白帽子们和专业的渗透测试人员。这款工具会自动模拟人工渗透测试的过程,对目标网站进行分步进行信息收集、漏洞检测、报告输出等步骤,并在检测网站安全性的同时,实时打印出相关的信息。最后再按测试人
2、员意愿进行漏洞的利用等操作,可以大大减轻渗透测试人员在渗透测试的各个阶段所需要的工作量,方便测试人员快速地完成典型的渗透测试任务。关键词:自动化 渗透测试 漏洞扫描 ABSTRACTIn recent years, millions of governments and enterprises around the world have encountered different degrees of network attacks, and the situation of network security has become more and more serious. Penetrat
3、ion test is a method to evaluate the information security of the target. At present, there are still many problems in this industry, such as the high price of security service industry, the huge shortage of security talents, the tedious steps and low efficiency in penetration test. At present, the p
4、enetration testing tools still have many problems, such as low automation, learning cost expensively and difficult to expand functions.In order to solve the above problems, this paper designs an automatic penetration testing tool based on python programming language. The main group is SRC white hats
5、 who are fond of vulnerability mining and professional penetration testers. This tool will automatically simulate the process of manual penetration test, and carry out step-by-step information collection, vulnerability detection, report output and other steps for the target website, and at the same
6、time of testing the website security, print out the relevant information in real time. Finally, according to the intention of the testers, the exploitation of the vulnerabilities can greatly reduce the workload of the penetration testers in each stage of the penetration test, and facilitate the test
7、ers to complete the typical penetration test tasks quickly.Key words: automatic penetration test vulnerability scanning目录第一章 绪论11.1 课题背景与意义11.2 国内外发展概况11.3 研究目标及内容21.4 论文结构21.5 本章小结2第二章 开发工具及主要技术32.1 开发工具及环境32.1.1开发语言 Python32.1.2数据库 SQLite42.2 主要技术42.2.1网络爬虫简介42.2.2 Masscan网络扫描工具42.2.3 Nmap网络探测工具52
8、.2.4 Wappalyzer网站指纹识别工具52.2.5 Xray漏洞扫描工具52.3 本章小结5第三章 系统设计63.1 系统需求63.2 系统结构设计63.3 系统功能模块设计73.3.1 信息收集模块73.3.2 漏洞检测模块103.3.3 漏洞利用模块103.3.4 结果输出模块113.3.5 其他工具模块113.3 数据库设计113.4 本章小结12第四章 系统实现134.1系统总体实现134.2系统功能模块实现134.2.1 信息收集模块134.2.2 漏洞检测模块164.2.3 漏洞利用模块204.2.4 结果输出模块214.2.5 其他工具模块224.3 本章小结23第五章
9、系统测试245.1 测试目的245.2 测试环境245.3 测试内容与结果255.3.1 信息收集255.3.2 漏洞检测275.3.3 漏洞利用295.3.4 结果输出30总结与展望33项目总结33未来展望33参考文献34致谢34第一章 绪论1.1 课题背景与意义随着政企机构逐渐拥有各式各样的网络资产,越来越多重要的信息被储存在互联网上,网络安全也逐渐变得越来越重要。由于网络资产的繁多、漏洞更新速度的频繁,暴露在网络上的资产脆弱面也逐渐增多,使用人工进行渗透测试已逐渐无法日常的安全需求。渗透测试是一种模拟黑客对网络资产进行攻击的安全体系评估,要求渗透测试人员需有着不俗的技能与经验。有着强大的
10、知识面与知识链的渗透测试工程师自然是薪资不菲,所以不管在哪里的政企,不管时间还是财力上,信息安全都是一大消耗。在这种情况下,使用自动化渗透工具可以大大地减轻政企的负担。但是目前市面上提供的自动化渗透工具的能力还比较弱,仍然具有非常多的功能可以完善。而在渗透工作的角度来看,在个人层面上,自动化的渗透工具能够大大地提高渗透测试人员的工作效率,而不必花费大量的人力去做重复性的工作。在企业层面上,可以提供到漏洞探测和威胁感知的功能,辅助建立起企业的安全架构,定时对网络进行渗透,一旦出现新的漏洞可以及时地覆盖与发现。1.2 国内外发展概况目前国外的比较出名的自动化渗透工具就是美国的HD Moore等人开
11、发的Metasploit了,它是一个目前比较流行的渗透测试框架1,它拥有可用性高的渗透攻击荷载。它能够给予了渗透测试人员可自定义,灵活多变的检测方法和攻击能力。虽然该平台已经进行了大量的优化,但是使用较为复杂,对测试人员的要求比较高,并且没有集成一体对某个目标一体的扫描并且得出结果,只能算是半自动化。然而国内的自动化渗透工具,一般则为椰树扫描器,啊D扫描器等注入类扫描器,虽然可以有一定的情况下一键获取到服务器的权限,但是工具功能单一,跨平台性差,没有集成到一体,自动化程度低,只能提供于新手使用,不能给高级的渗透测试人提供更为准确的中间参数设置选项,无法更精确地完成任务。通过以上对国内外的渗透测
12、试框架以及工具的研究,可以看到目前市面上的渗透测试工具存在着操作不便,集成度差以及自动化程度低等问题,而且在网络上不能够有效地发现安全风险,所以设计一个操作方便,集成度好,以及自动化程度高的自动化渗透测试平台是非常有必要的。1.3 研究目标及内容为了弥补上面渗透测试工具所出现的缺点,本文要设计一款基于Python开发语言的自动化渗透工具,主要面向的群体是专业的渗透测试工程师以及爱好漏洞挖掘的SRC白帽子们。这款工具会自动模拟人工渗透测试的过程,对目标网站进行分步进行信息收集、漏洞扫描、报告输出等步骤,并在检测网站安全性的同时,实时打印出相关的信息。最后再按测试人员意愿进行漏洞的利用等操作,可以
13、大大减轻渗透测试人员在渗透测试的各个阶段所需要的工作量,方便测试人员快速地完成典型的渗透测试任务。1.4 论文结构本文主要由六个章节构成,现在就每个章节进行简单介绍。第一章:绪论。本章指出了安全行业中的背景与痛点,对比了国内外的自动化渗透工具优缺点,阐述了本文的研究目标与内容,概括了论文的整体结构情况。第二章:开发工具及主要技术。本章简述了安全开发最常用的编程语言Python与数据库SQLite,并介绍了在本工具中使用到的第三方工具。第三章:系统设计。本章的系统的结构设计描述了系统由五大功能模块组成,五大模块下的子模块,在系统功能模块设计中详细描述了每个子模块的功能设计,在最后简述了数据库中五
14、个表的设计。第四章:系统实现。本章根据第三章的设计思路,详细地描述了自动化渗透工具每个功能模块的实现方法。第五章:系统测试。本章对系统进行了简单的测试,描述了本工具的优点与有待完善的地方。第六章:总结与展望。本章主要是本人在做完此次的自动化渗透工具的一些总结,并对工具未来可以完善地方做的阐述。1.5 本章小结介绍了目前渗透测试的背景与痛点,如人工成本高,水平参差不齐等问题,并介绍了国内外自动化渗透工具的发展情况,分析出了目前市面上的渗透测试工具存在着操作不便,集成度差以及自动化程度低等问题。由于存在这些问题,所以本文设计出一款适合于广大渗透测试人员与爱好漏洞挖掘的白帽子们的自动化渗透测工具,从
15、而减轻测试人员在渗透测试的各个阶段所需要的工作量,在最后补充了本文的结构安排。第二章 开发工具及主要技术2.1 开发工具及环境开发环境在Windows 10,版本为1909,开发工具为PyCharm 2019.2.1 (Professional Edition),在实际部署的时候需要部署在装有Masscan、Nmap、Xray等工具的Linux机器上使用。表2-1 软件版本软件版本Python3.7.4PyCharm2019.2.1 (Professional Edition)Masscan1.0.3Nmap7.8Xray0.20.0表2-2 包版本软件版本beautifulsoup44.8.
16、2aiohttp3.6.2gevent1.4.0lxml4.5.0python-docx0.8.10python-nmap0.6.1requests2.23.0urllib31.25.82.1.1开发语言 PythonPython是一门动态的、面向对象的解释型编程语言2,在设计之初就是为了快速地编写出自动化的脚本(Shell)。Python中有许多非常有用的第三方库,使得它能够快速地进行独立、大型的系统开发。Python有2和3的版本,基于程序的灵活性和编写的方便,选择了使用Python 3.7.4作为主要的编程语言。其中大部分的模块都是以插件式地进行编写,每个模块都可以单独拿出来使用,并且可
17、以继续增加新的模块进去。2.1.2数据库 SQLiteSQLite是一个轻量级的SQL数据库引擎,也是一款自给自足、零配置、事务性的SQL数据库引擎3,并且数据库以文件形式存储,非常适合在渗透环境复杂、多变的情况下使用。2.2 主要技术2.2.1网络爬虫简介Web网络爬虫的主要功能是获取网页上的数据,在本工具中就大量地使用了爬虫技术,如获取网站的网页标题,获取网站的ICP备案信息,获取网站注册人的信息等,并且获取网站上敏感信息,如IP地址、手机号、邮箱号、账号、密码等,都为渗透的后续步骤提供了有用的信息。2.2.2 Masscan网络扫描工具Masscan被称之为世界上扫描速度最快的网络端口扫
18、描工具,是一款无状态扫描器的典型代表4。Masscan相比Nmap之所以快很多,是因为Masscan是直接通过驱动程序发送数据包,减少了系统开销造成的延时,并且可以保持巨大的连接数量,采用了异步线程的扫描方式,减轻了线程的时间延迟。Nmap则需要记录TCP/IP的状态。此外,Masscan也极其地灵活,能够Windows、Linux等多个平台下运行,且允许自定义任意地址范围和端口范围进行扫描,在扫描的时候会对目标随机化地发送数据包以免触发目标网络的IDS(入侵检测系统)。 图2-1 无状态扫描本工具使用了Masscan进行网络的快速探测,可以快速地分析出网络中存活主机开放的端口信息,从而为端口
19、探测进行下一步的漏洞探测。2.2.3 Nmap网络探测工具Nmap (Network Mapper) 是一款开源免费的网络探测工具,常用的功能有主机发现、端口扫描、版本侦测、操作系统侦测、防火墙/IDS规避、NSE脚本引擎,它是网络安全工作者必备的工具之一5。本工具使用了Nmap进行操作系统的识别,并且通过接收Masscan扫描获取的端口数据,进一步获取端口的banner信息,如 SSH、FTP等服务的版本号,从而方便进行下一步的漏洞检测。2.2.4 Wappalyzer网站指纹识别工具Wappalyzer可以通过指纹对比分析,能够识别出网站是用什么编程语言开发的,识别出网站的中间件是什么,识
20、别出网站的前后端框架是什么,并且它是开源免费的。在本工具中,使用了Wappalyzer进行对目标网站的识别,以提供对应的漏洞检测。2.2.5 Xray漏洞扫描工具Xray是一款社区免费版的WEB漏洞扫描工具,是从长亭科技研发的核心引擎中提取出来的。Xray扫描速度快、并发能力强,支持多种WEB漏洞类型检测。目前社区版闭源,但提供多个平台编译后的可执行文件使用,可跨平台使用。在本工具中,集成了Xray的webscan漏洞扫描功能,用户可以按照自己所需配置所检测网站的漏洞类型。2.3 本章小结本章主要介绍了自动化渗透工具的开发环境与主要技术。在开发语言上选择了灵活性与编写方便的Python3作为开
21、发语言,考虑到了渗透场景的多变,选择使用的是SQLite这种轻量级的数据库引擎。主要技术使用了Python的网络爬虫来进行获取网页上的信息,使用了Masscan与Nmap相结合来获取系统层面的信息,使用了Wappalyzer进行网站架构的识别,使用了协程技术进行了网络请求的IO操作,调用了Xray安全评估工具来进行WEB层面的漏洞识别,全面地扫描出系统可能存在的脆弱点。第三章 系统设计3.1系统需求在本工具中,由于旨在面对大量资产信息时可以快速获取到对应的信息,即用户拿到大量的目标网络资产,如域名、IP等,只需要放入一个文本内,启动扫描器,即可获取到对应目标的渗透测试信息,以方便渗透测试人员进
22、行下一步的渗透测试步骤。由于工具是提供给专业的渗透测试人员使用的,所以只需要提供命令行的窗口进行信息的交互即可。由于信息繁多复杂,可以在命令行上显示的数据上添加颜色。用户可以等待扫描完成后,获取到扫描结束的渗透报告,里面会总结目标服务器的信息收集情况、漏洞的检测情况、以及可利用的Playload。并且由于扫描的时间一般会比较长,用户可以设置以微信的方式接收到通知,以清晰地知道目标的哪一个资产存在着漏洞的情况。3.2 系统结构设计图3-1系统总体结构根据以上对自动化渗透的需求分析,系统结构设计设计出以下的5个功能模块:信息收集模块、漏洞检测模块、漏洞利用模块、结果输出模块、其他工具模块。在信息收
23、集模块中,又有8个小模块,分别是探测CDN子模块、探测WAF子模块、IP归属地子模块、网站ICP备案子模块、网站Whois信息查询子模块、子域名爆破子模块、WEB信息收集子模块、端口服务信息获取子模块。而在漏洞检测模块中有4个小模块,分别是Xray工具扫描子模块、WEB敏感信息爬取子模块、系统端口检测子模块、目录地址检测子模块。漏洞利用模块则有2个小模块,分别时POC检测子模块和EXP检测子模块。结果输出模块分别有输出显示子模块、报告输出模块和微信通知模块。还有一个其他工具模块,主要是解决数据与网络之间的问题的模块。3.3 系统功能模块设计3.3.1 信息收集模块信息收集是渗透测试的本质,被行
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 python 自动化 渗透 工具 设计 实现
限制150内