项目实习(五)网络渗透实验

这是大学期间进行的生产实习内容,主要是进行一次简单的网络渗透测试。

实习的目的及任务

  1. 实习的目的
    生产实习是实现理论知识和实践相结合的重要环节。通过实习,学生将对于课堂学习的基础和专业理论知识有更深入的掌握。特别是对信息安全技术与工程的最新发展和应用有较深入的了解。同时通过生产实习,进一步锻炼学生理论与实践相结合的能力,提高学习的主动性,为毕业后的社会工作打下良好的基础。
  2. 实习任务要求
    (1)严格遵守企业各项规章制度,学生以真实员工的身份融入得到企业的生产环境和管理方式中。
    (2)了解网络渗透测试、软件开发过程,参与软件项目的管理与开发,了解最新软件技术,熟悉网络渗透测试、软件开发工具,特别是网络安全管理、密码应用、计算机病毒与防护、网络入侵检测等方面的技术与工具在企业信息安全管理中的应用。
    (3)锻炼学生的人际交往和团队精神、集体荣誉感和责任感,使他们日后能较快融入到社会工作中。
    (4)学生通过实习,要认清自己能力,发现理论知识的不足,为后续学习增加动力和明确方向。
    (5)实习结束后,提交实习心得或实习报告。

实习单位及岗位介绍

  1. 实习单位简介
    武汉梦极光科技有限公司成立于2018年5月,是一家提供软件和信息技术服务新型互联网企业。业务范围包括:网络安全产品开发、互联网渗透测试、系统上线测试、应急响应、服务解决方案、安全运维等信息安全服务。目前公司主要的服务对象是公安和政府相关部门。
  2. 实习岗位简介
    网络渗透测试是通过模拟黑客的攻击来评估网络系统安全的一种评估方法,是从攻击者的角度对网络安全进行检测,包括对系统的任何弱点、技术缺陷或漏洞的主动分析。渗透测试可以以更有说服力的方式证明网络安全防御确实有效,或者查出问题,可以帮助阻挡网络未来要面临的攻击。不仅能够有效地检验网络安全防护是否牢固,更重要的是提高企业对网络安全的防护意识,并对企业网络信息资产安全做更深入的风险评估。而网络渗透工程师则是负责以上工作的岗位,其日常工作包括渗透测试技术服务的实施,渗透测试报告的编写;负责渗透测试技术交流、培训;负责代码审计、漏洞检测与验证、漏洞挖掘等方面的内容。

实习内容

  1. 公司制度及安全
    了解公司管理制度以及相应的安全规范,为步入信息安全行业提前打好基础。企业管理制度学习内容包括企业文化学习、企业规章制度学习(如上下班时间、工作内容、如何请假等)、奖惩制度学习等等内容。安全规范学习,由于信息安全行业有其自身特殊性,所以在工作过程中需要特别注意操作规范。安全规范学习目的,一方面是规范的操作可以使甲方系统在测试过程中可以保持稳定运行,再者自己拥有强大的安全意识,才能赢得客户认可。
  2. 企业生产流程
    一套完整规范的生产流程对于企业工作的开展、软件的开发是起着非常重要的作用的,所以需要掌握信息安全企业在渗透测试或者软件开发时需要用到的规范流程。
    一. 渗透测试流程
    (1)甲乙方确定测试对象、范围、时间。确定范围:测试目标的范围,ip,域名,内外网;确定规则:能渗透到什么程度,时间,能否修改上传?能否提权等;确定需求:web应用的漏洞(新上线程序),业务逻辑漏洞(针对业务的),人员权限管理漏洞(针对人员、权限)等等。根据需求和自己技术能力来确定能不能做,能做多少。
    (2)信息收集。在这一部还不会直接对被测目标进行扫描,应当先从网络上搜索一些相关信息,包括Google Hacking, Whois查询, DNS等信息(如果考虑进行社会工程学的话,这里还可以相应从邮件列表/新闻组中获取目标系统中一些边缘信息如内部员工帐号组成,身份识别方式,邮件联系地址等)。
    (3)漏洞探索。这一步主要针对具体系统目标进行。如通过第一步的信息收集,已经得到了目标系统的IP地址分布及对应的域名,并且我们已经通过一些分析过滤出少许的几个攻击目标,这时,我们就可以针对它们进行有针对性的漏洞扫描,探测网站是否存在一些常见的Web漏洞。
    (4)漏洞验证。将上一步中发现的有可能可以成功利用的全部漏洞都验证一遍。结合实际情况,搭建模拟环境进行试验。成功后再应用于目标中。
    (5)信息分析。主要是为下一步实施渗透做准备。
    (6)修复建议。对所有产生的问题提出合理高效安全的解决办法。
    (7)输出报告。报告中应当包含:薄弱点列表清单(按照严重等级排序),薄弱点详细描述(利用方法),解决方法建议,参与人员/测试时间/内网/外网。
    二. 软件开发流程
    (1)产品定义。产品定义是指确定产品需要做哪些事情。通常采用产品需求文档来进行描述,PRD可能包含如下信息:产品的愿景,目标市场,竞争分析,产品功能的详细描述,产品功能的优先级,产品用例,系统需求,性能需求,销售及支持需求等。
    (2)需求分析。指把软件计划期间建立的软件可行性分析进行求精和细化,分析各种可能的解法,并且分配给各个软件元素。
    (3)市场分析。根据已获得的市场调查资料,运用统计原理,分析市场及其销售变化。
    (4)产品定位。针对消费者或用户对某种产品某种属性的重视程度,塑造产品或企业的鲜明个性或特色,树立产品在市场上一定的形象,从而使目标市场上的顾客了解和认识本企业的产品。
    (5)产品规划。通过调查研究,在了解市场、了解客户需求、了解竞争对手、了解外在机会与风险以及市场和技术发展态势的基础上,根据公司自身的情况和发展方向,制定出可以把握市场机会,满足消费者需要的产品的远景目标以及实施该远景目标的战略、战术的过程。
    (6)产品研发。指产品、科技的研究和开发。
    (7)产品运营。指基于企业经营和产品战略,以最优的路径和最高效的执行,建立产品在市场上的竞争优势,并最终取得产品市场成功的过程。
  3. 自己承担的角色
    本次校内生产实习中,作为项目成员参与了整个实习的工作。具体上为早上了解相关技术的具体实施过程及一些相关的基础知识,下午开始自己动手去实验验证早上的理论知识,完成布置下来的任务。晚上回去总结一天的收获,以及准备好下一天的内容。
  4. 实习项目具体内容
    这次实习中,着重讲解并实战练习了一次完整的网络渗透测试。在进行网络渗透测试之前,首先需要了解一些关于网络渗透方面的知识点。
    怎么定义网络渗透呢 ?简单来说,网络渗透测试是通过模拟黑客的攻击来评估网络系统安全的一种评估方法,是从攻击者的角度对网络安全进行检测,包括对系统的任何弱点、技术缺陷或漏洞的主动分析。渗透测试可以以更有说服力的方式证明网络安全防御确实有效,或者查出问题,可以帮助阻挡网络未来要面临的攻击。
    网络渗透有什么目的呢 ?可以让我们了解当前系统的安全性,了解攻击者可能利用的途径。它能够让管理人员非常直观的了解当前系统所面临的问题。
    还需了解几个相关的网络渗透名词。比如端口,端口一般指网络中面向连接服务和无连接服务的通信协议端口,是一种抽象的软件结构,包括一些数据结构和I/O(基本输入输出)缓冲区。比如内网,内网是一个只有组织工作人员才能访问的专用网络,组织内部IT系统提供的大量信息和服务是公众无法从互联网获得的,最简单的形式是使用局域网(LAN)、城域网(MAN)和广域网(WAN)的技术建立内网。比如Windows域,将网络中多台计算机逻辑上组织到一起,进行集中管理,这种区别于工作组的逻辑环境叫做域,域是组织与存储资源的核心管理单元,在域中,至少有一台域控制器,域控制器中保存着整个域的用户帐号和安全数据库。比如Webshell,这是通过Web入侵的一种脚本工具,可以据此对网站服务进行一定程度的控制。比如漏洞,硬件、软件、协议等等的可利用安全缺陷,可能被攻击者利用,对数据进行篡改,控制等。比如后门,这是黑客为了对主机进行长期的控制,在机器上种植的一段程序或留下的一个“入口”。
    网络渗透过程中使用的工具有哪些呢 ?最常用的就有nmap扫描工具,Wireshark网络协议分析器,Metasploit安全漏洞检测工具,BurpSuite web应用程序集成平台,SQLMap sql自动化注入工具等。
    网络渗透的具体过程是什么呢 ?网络渗透一般可以分为以下八个步骤进行:
    1.明确目标;2.信息收集;3.漏洞探测;4.漏洞验证;5.信息分析;6.获取所需;7.信息整理;8.形成报告。各步骤具体操作如下:
    (1)明确目标:确定测试对象、范围、时间。确定范围:测试目标的范围,ip,域名,内外网;确定规则:能渗透到什么程度,时间,能否修改上传?能否提权等;确定需求:web应用的漏洞(新上线程序),业务逻辑漏洞(针对业务的),人员权限管理漏洞(针对人员、权限)等等。根据需求和自己技术能力来确定能不能做,能做多少。
    (2)信息收集:在这步可以通过主动扫描和开放搜索等方式,搜集目标的一些基本信息,如目标IP,网段,域名,端口,或者目标操作系统版本,目标应用信息与其版本信息和服务信息,如果利用社会工程学的话,这里还可以相应从邮件列表/新闻组中获取目标系统中一些边缘信息如目标的域名注册人员信息,web应用中网站发帖人的id和管理员姓名等。最后还可能探测出目标的防护设备。
    (3)漏洞探测:这步则进行有针对性的漏洞扫描,探测网站是否存在一些常见的Web漏洞。常用的方法有漏扫,利用awvs,IBM appscan等工具;结合漏洞去exploit-db等位置找;或者在网上寻找验证poc。通常来说几大漏洞中系统漏洞是因为系统没有及时打补丁,Web应用漏洞则是Web应用开发问题,其它端口服务漏洞则是各种21/8080(st2)/7001/22/3389端口所致。
    (4)漏洞验证:这步将发现的有可能可以成功利用的全部漏洞都验证一遍,为下一步实施渗透做准备。很多情况下我们可以根据目标服务/应用的版本就可以到一些安全网站上获取针对该目标系统的漏洞利用代码,milw0rm,securityfocus等网站,上面都对应有搜索模块。不同的漏洞有不同的利用工具,很多时候,通过一个漏洞我们很难拿到网站的webshell,我们往往需要结合几个漏洞来拿webshell。比如利用Sqlmap工具来进行SQL注入,XSS跨站脚本还有可以使用>Burpsuite工具进行抓包改包等操作,或者利用文件上传漏洞使用一句话木马来获得webshell。结合实际情况,搭建模拟环境进行试验。成功后再应用于目标中。
    (5)信息分析:这步也是为了下一步实施渗透做准备,比如精准打击:准备好上步探测到的漏洞的exp, 用来精准打击;绕过防御机制:探查是否有防火墙等设备,如何绕过等;定制攻击路径:最佳工具路径在哪,根据薄弱入口,搞定内网权限位置,确定最终目标;绕过检测机制:是否有检测机制,是否有流量监控,是否有杀毒软件,恶意代码检测等(免杀);攻击代码:试验经过得来的代码,包括不限于xss代码,sql注入语句等。
    (6)获取所需:这一步则是开始正式进行对目标网站的渗透,获取内部信息,如基础设施(网络连接,,路由,拓扑等),根据需要还可以进行进一步渗透,即内网渗透敏感数据。如有需要还能留下后门,添加管理账号。最后则需清理痕迹,即清理相关日志(访问,操作),上传文件等。
    (7)信息整理:主要整理渗透测试中三个方面的内容,整理渗透工具:整理渗透过程中用到的代码,poc,exp等;整理收集信息:整理渗透过程中收集到的一切信息;整理漏洞信息:整理渗透过程中遇到的各种漏洞,各种脆弱位置信息。为最后形成报告,形成测试结果使用。
    (8)形成报告:渗透测试的最后一步就是形成测试报告,按照之前第一步跟客户确定好的范围,需求来整理资料,并将资料形成报告。内容主要有:补充介绍,要对漏洞成因,验证过程和带来危害进行分析;修补建议,对所有产生的问题提出合理高效安全的解决办法。
    以下为部分渗透过程截图:
    (1)使用namp扫描工具扫描:
    Nmap –sP Ping扫描
    在这里插入图片描述
    Namp –sS TCP SYN扫描
    项目实习(五)网络渗透实验_第1张图片
    在这里插入图片描述
    Namp –A 综合扫描,包括系统探测,版本探测,脚本扫描,路由跟踪
    项目实习(五)网络渗透实验_第2张图片
    项目实习(五)网络渗透实验_第3张图片
    项目实习(五)网络渗透实验_第4张图片
    项目实习(五)网络渗透实验_第5张图片
    项目实习(五)网络渗透实验_第6张图片
    在这里插入图片描述
    (2)编写一个多线程的端口扫描器,扫描结果为 (开放端口 - > 对应服务 );对靶机进行扫描,代码如下:
#!/usr/bin/env python
# -*- encoding: utf-8 -*-
import socket
from concurrent.futures import ThreadPoolExecutor
def scan(port):
    s = socket.socket()
    s.settimeout(0.1)
    if s.connect_ex(('192.168.109.130', port)) == 0:
        print("port: %s => service name : %s" % (port,socket.getservbyport(port)))
if __name__ == '__main__':
    with ThreadPoolExecutor(max_workers=50) as executor:
        executor.map(scan,xrange(1,65536))

扫描结果:
项目实习(五)网络渗透实验_第7张图片
(3)kali下渗透metasploitable靶机
登陆系统
项目实习(五)网络渗透实验_第8张图片
项目实习(五)网络渗透实验_第9张图片
端口渗透:6667——-irc_3281_backdoor,利用metasploit
项目实习(五)网络渗透实验_第10张图片
项目实习(五)网络渗透实验_第11张图片
6200——-vsftpd_234_backdoor,利用metasploit
项目实习(五)网络渗透实验_第12张图片
项目实习(五)网络渗透实验_第13张图片
(4)使用DVWA平台对mysql常用注入语句进行测试。
输入变为“’”时,页面提示错误“You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘’’’’ at line 1”
结果如图。看到这个结果,我们可以欣慰的知道,这个表单存在着注入漏洞
项目实习(五)网络渗透实验_第14张图片
输入1’ and 1=2 union select user(),database() –
可以得到连接数据库的用户为 root@localhost ,数据库名称为dvwa
项目实习(五)网络渗透实验_第15张图片
输入“ 1’ and 1=2 union select version(),database() – ”便得到了版本信息5.5.53
项目实习(五)网络渗透实验_第16张图片
测试连接数据库权限,输入1’ and ord(mid(user(),1,1))=114 –
返回正常说明为root
项目实习(五)网络渗透实验_第17张图片
查询mysql数据库,所有数据库名字:这里利用mysql默认的数据库infromation_scehma,该数据库存储了Mysql所有数据库和表的信息。
输入 1’ and 1=2 union select 1,schema_name from information_ schema.schemata –
项目实习(五)网络渗透实验_第18张图片
爆出数据库中字段的内容 1’ and 1=2 union select first_name,last_name from users – ,这里其实如果是存放管理员账户的表,那么用户名,密码信息字段就可以爆出来了
项目实习(五)网络渗透实验_第19张图片
网络渗透测试中也应该要注意到的几点问题:
(1)在渗透测试中不使用含有拒绝服务的测试策略。(2)渗透测试时间尽量安排在业务量不大的时段或者晚上。(3)在渗透测试过程中如果出现被评估系统没有响应的情况,应当立即停止测试工作,与用户相关人员一起分析情况,在确定原因后,并待正确恢复系统,采取必要的预防措施(比如调整测试策略等)之后,才可以继续进行。(4)测试人员会与用户网站系统和安全管理人员保持良好沟通。随时协商解决出现的各种难题。(5)测试方自控:由渗透测试方对本次测透测试过程中的三方面数据进行完整记录:操作、响应、分析,最终形成完整有效的渗透测试报告提交给用户。
总结:通过模拟的一次简单的网络渗透测试,了解到了(1)应用系统在正式部署上线前应在内网先进行安全测试,通过安全测试后再放至公网;(2)应用系统在开发过程中,应考虑网站应具备的安全功能需求,如:登录框的验证码机制、口令的复杂度限制、口令的加密传输、后台管理页面限定IP访问及上传功能安全机制等方面;(3)建立统一、切实可用的的基础环境规范并落实,如:中间件的安装部署基线、操作系统的安装部署基线等;(4)部署网站防篡改及网页防火墙系统, 保护DMZ 区域内的所有WEB 网站。

实习心得体会

  1. 工程实践对环境与社会可持续发展的影响
    对于我们计算机专业来说,开发就是一个发展的概念。而专业工程实践则更像是一个为我们以后更好的为社会可持续发展做出贡献的先行站,是尝试性的一步。开发性工作能够有效改善社会的可持续发展,其本身应该随着社会的发展而持续、稳定、协调地发展。信息资源是国家的战略性资源,其是否能够可持续地积累和利用显得尤为重要。必须重视开发本身的可持续发展问题。影响开发可持续发展的因素也多种多样,贯穿于开发的各个环节,既需要站在战略高度来认识,又需要技术创新与制度创新并重,在各个环节落实具体措施,才能有利于开发工作的可持续发展,从而为人类社会的可持续发展提供持续的有效支持。
  2. 职业规范
    对于我们计算机从业人员来说,工程伦理的概念也显得格外重要。在平时的工作中,应该把技术人道主义、技术爱国主义、技术公利主义、人与自然的和谐主义以及技术主体内部的平等互惠主义,作为在从事技术活动中应遵循的道德原则、规范与追求的道德价值目标。法律是道德的底线,计算机从业人员职业道德的最基本要求就是遵循国家关于计算机管理理方面的法律法规。如《计算机软件保护条例》和《互联网信息服务管理方法》等,这些法律法规是应当被每一位计算机职业从业人员所牢记的,严格遵守这些法律法规正是计算机专业人员职业道德的最基本要求。
  3. 个人成长和职业发展的感想
    未来一段时期, 我国将会利用国际产业转移的重大机遇, 聚集各种资源, 突破核心技术制约,在集成电路、软件、计算机与信息处理、现代移动通信、信息安全、信息服务和系统集成等技术领域加强创新,促进IT 产品更新换代,推动我国由IT 大国向IT 强国转变,并进而推动国民经济信息化进程,以信息化带动工业化,走出一条新型工业化道路。所以,无论是从大的方向讲,还是从小的方面讲,培养和储备高素质的IT 人才都显得非常重要。所以对于我们计算机从业人员来说,这是个很好的机遇。但同时也该认识到,就目前而言,高校教育的稳定性与计算机产业的急速发展不能相互适应,社会缺乏的是有实际能力,能实际动手操作型的计算机人才。市场需要的是计算机专业人才, 而很多计算机专业毕业的学生都不能满足市场的需求。所以我们打铁还需自身硬,自身而言更需加倍努力,成为社会所需要的人才。

你可能感兴趣的:(项目实习(五)网络渗透实验)