专业实习报告
实习情况概述
校内重点实验室背景
天津理工大学是天津市属、以工为主,工理结合,工、理、管、文、艺等学科协调发展的多科性大学,入选“国家大学生创新性实验计划”,也是“卓越工程师教育培养计划”重点建设大学,是国家首批“卓越工程师教育培养计划2.0”、“新工科研究与实践项目”入选高校。
学校始建于1979年,前身为天津理工学院。1996年,与原天津大学分校、天津大学机电分校、天津大学冶金分校三所本科院校合并,组建成新的天津理工学院,2004年更为现名。
截止2015年9月,学校总占地面积160.85万平方米,建筑面积75.01万平方米。藏书170.74万册;设有17个专业学院,62个本科专业,本科以上全日制在校生26482人。
计算机科学与工程学院以本科教育为主,稳步发展研究生教育,同时承担全校计算机公共基础教学和学校校园网管理工作,积极开展中外合作办学。学院现有教职工116人,其中专任教师96人,其中:博士生导师9人,教授20人,副教授35人,具有博士学位教师51人,平均年龄44岁;国家杰出青年1名,教育部新世纪人才1名,天津市特聘讲座教授3名,教育部教学指导委员会委员2名。学院作为天津市地方高校中最早创办计算机本科专业的院系,经过30年的发展建设,现有计算机科学与技术、信息安全、信息与计算科学、物联网工程四个本科专业,与加拿大魁北克大学合作培养本科生;有计算机科学与技术一级学科博士点、博士后科研流动站,计算机科学与技术、软件工程、网络空间安全三个一级学科硕士点和计算机技术工程硕士授予权;计算机科学与技术、网络空间安全、软件工程三个学科为天津市“十三五”重点学科;有”计算机病毒防治技术”国家工程实验室、”计算机视觉与系统”省部共建教育部重点实验室、”智能计算及软件新技术”天津市重点实验室等研究平台;计算机科学与技术专业为教育部特色专业,信息安全专业入选教育部卓越工程师培养计划;《数字图像处理》国家级精品课;计算机科学与技术实验中心、网络与信息安全实验教学中心为天津市高等学校优秀教学实验室。
师资队伍注重科学研究,近三年以来承担国家863项目、国家自然科学基金项目、教育部重点项目和天津市科技计划项目等纵向课题60余项,纵横向科研经费总计6000余万元,获得国家发明专利和软件著作权100余项,获得国家级和省部级科技奖励15项,发表被SCI、EI检索论文300余篇,出版专著和教材26部。学院已培养30届6000余名毕业生,主要分布在天津市和周边地区各大IT企业和金融、公安、政府机关等单位,部分毕业生分布在北京、上海、杭州、广州等地区从事IT工作,为区域信息化建设做出了自己的贡献。作为天津市和周边地区计算机专业人才的培养基地,学院毕业生以就业质量高,专业素质好,”留得住、用得上”而得到社会认可。在天津中国银行、工商银行、建行、农行、人行等金融机构,现有学院毕业生200余名,他们参与并见证了天津金融信息化发展和建设历程,成为各个银行计算机部门的中坚力量。“十三五”期间,学院将以海纳百川的胸怀迎接一流的学术人才加盟学科建设、共促学院发展,为把学院建设成国内外知名学科专业而不懈努力。
在此次十二周实习的过程中,我与各位同学在张健老师的指导下,积极完成张老师分配的各项任务以及配合研究生师兄完成各种工作。在实习的过程中,我担任恶意代码检测系统软件编写的任务。充分利用虚拟机的底层优势,分析恶意代码的行为从而提取出特征。
职业道德规范和工作纪律执行情况
以实习单位为课堂,在具有丰富实践经验的导师以及学长的指导下,认真完成专业实习。在实习过程中,学生应努力做到:
1)自觉遵守国家法律法规和学校的实习纪律,严格按照规定时间进行实习。2)不得提前结束实习,也不得未经批准随意延长实习时间。
3)遵守实习单位的劳动纪律和各项规章制度,树立良好的职业道德和组织纪律观念,与实习指导老师以及实习单位建立良好的关系。
4)对在实习中悉知的商业秘密要严格保密。借阅实习单位提供的各类文件、数据等资料,必须严格按照有关规定妥善保管,用完完整归还。
5)虚心学习,勤奋探索,认真求教;树立良好的精神风貌,维护学校班级名誉,遵守各项职业道德规范,提高职业素养,不得向实习单位提出不恰当的待遇要求。
在实习期间,我严格遵守各职业道德规范,尊师重道、勤恳虚心学习。在实习期间所用的电脑、设备等皆用心爱护保管,并在实习结束后及时完整的归还实验室。在实习期间,树立了良好的精神风貌,尊重实习单位各位老师,认真完成实习任务,并生成规范的实习报告。善于总结并吸取实践工作经验,与学校指导老师保持联系,及时汇报实习进程并向老师寻求实习指导与建议。
3. 实习具体内容及实现
恶意代码系统软件的内容及实现
① 软件概述
恶意代码(Malicious Code)是指没有作用却会带来危险的代码,一个最安全的定义是把所有不必要的代码都看作是恶意的,不必要代码比恶意代码具有更宽泛的含义,包括所有可能与某个组织安全策略相冲突的软件。恶意代码又称恶意软件。这些软件也可称为广告软件(adware)、间谍软件(spyware)、恶意共享软件(malicious shareware)。是指在未明确提示用户或未经用户许可的情况下,在用户计算机或其他终端上安装运行,侵犯用户合法权益的软件。与病毒或蠕虫不同,这些软件很多不是小团体或者个人秘密地编写和散播,反而有很多知名企业和团体涉嫌此类软件。有时也称作流氓软件。恶意代码是指故意编制或设置的、对网络或系统会产生威胁或潜在威胁的计算机代码。最常见的恶意代码有计算机病毒(简称病毒)、特洛伊木马(简称木马)、计算机蠕虫(简称蠕虫)、后门、逻辑炸弹等。
随着恶意代码的诞生,反恶意代码软件(或称反病毒软件)随之诞生。这个时期的恶意代码所采用的技术较为简单,这使得对应的检测技术也较为容易,早期的反病毒软件大都单一的采用特征匹配的方法,简单的利用特征串完成检测。随着恶意代码技术的发展,恶意代码开始在传播过程中进行变形以躲避查杀,此时同一个恶意代码的变种数量急剧提升,形态较本体也发生了较大的变化,反病毒软件已经很难提取出一段代码作为恶意代码的特征码。在这种情况下,广谱特征码随之诞生,广谱特征码将特征码进行了分段,通过掩码字节对需要进行比较的和不需要进行比较的区段进行划分。然而无论是特征码扫描还是广谱特征,都需要在获得恶意代码样本后,进行特征的提取,随后才能进行检测,这使得对恶意代码的查杀具有一定的滞后性,始终走在恶意代码的后面。为了针对变种病毒和未知病毒,启发式扫描应运而生,启发式扫描利用已有的经验和知识对未知的二进制代码进行检测,这种技术抓住了恶意代码具有普通二进制文件所不具有的恶意行为,例如非常规读写文件,终结自身,非常规切入零环等等。启发式扫描的重点和难点在于如何对恶意代码的恶意行为特征进行提取。特征码扫描、查找广谱特征、启发式扫描,这三种查杀方式均没有实际运行二进制文件,因此均可归为恶意代码静态检测的方法。随着反恶意代码技术的逐步发展,主动防御技术、云查杀技术已越来越多的被安全厂商使用,但恶意代码静态检测的方法仍是效率最高,被运用最广泛的恶意代码查杀技术。因此使用python的数据处理功能和C#的界面处理功能,结合了两者各自的优势,使得恶意代码分类直观并且高效,用户可以通过简单的操作根据恶意代码特征对恶意代码进行分类。
软件可行性分析和目标群体
可行性分析
基于以下三个原因,选择Python作为实现数据挖掘算法的编程语言:
Python的语法清晰;
易于操作纯文本文件;
使用广泛,存在大量的开发文档。
Python具有清晰的语法结构,也被称作可执行伪代码(executable pseudo-code)。
默认安装的Python开发环境已经附带了很多高级数据类型,如列表、元组、字典、集合、队列等,无需进一步编程就可以使用这些数据类型的操作。
使用这些数据类型使得实现抽象的数学概念非常简单。此外,还可以使用自己熟悉的编程风格,如面向对象编程、面向过程编程、或者函数式编程。
Python语言处理和操作文本文件非常简单,非常易于处理非数值型数据。Python语言提供了丰富的正则表达式函数以及很多访问Web页面的函数库,使得从HTML中提取数据变得非常简单。
Python语言挖掘的特色
诸如MATLAB和Mathematica等高级程序语言也允许用户执行矩阵操作,MATLAB甚至还有许多内嵌的特征可以轻松地构造数据挖掘应用,而且MATLAB的运算速度也很快。
然而MATLAB的不足之处是软件费用太高,单个软件授权就要花费数千美元。
虽然也有适合MATLAB的第三方插件,但是没有一个有影响力的大型开源项目。
Java和C等强类型程序设计语言也有矩阵数学库,然而对于这些程序设计语言来说,最大的问题是即使完成简单的操作也要编写大量的代码。
程序员首先需要定义变量的类型,对于Java来说,每次封装属性时还需要实现getter和setter方法。另外还要记着实现子类,为了完成一个简单的工作,必须花费大量时间编写了很多无用冗长的代码。
Python语言则与Java和C完全不同,它清晰简练,而且易于理解,即使不是编程人员也能够理解程序的含义,而Java和C对于非编程人员则像天书一样难于理解。Python语言是高级编程语言,可以花费更多的时间处理数据的内在含义,而无须花费太多精力解决计算机如何得到数据结果。Python语言使得很容易表达自己的目的。
C#界面设计优势:
类库多,上手快,利于快速开发。
技术更新速度快,界面功能友好,交互性强。
机器学习算法对恶意代码进行分析:
机器学习是如今数据分析领域的一个热点内容,通过机器学习算法可以很容易对数据集进行分析。机器学习算法种类很多,可以通过使用不同算法对数据集进行测试,综合评价各算法的准确率。进而选择最适合的算法对相应的数据集进行数据挖掘分析。
目标群体
主要针对使用Windows系统的用户。该软件通过调用内部python代码可以绘出数据分析图。可视化界面简洁明了美观,可以使用户直观的获取所要分析数据的分析结果。
软件功能与原型设计
功能概述:
功能简述功能描述
分类模块对输入数据集进行分类
检测模块对测试数据集进行测试
原型设计
实现平台:Windows8
所需工具或软件:python2.7、python.exe、Visual Studio 2017、JetBrains PyCharm Community Edition 2018.2.4 x64
系统开发语言:C#、Python
④软件实现
开发环境搭建
安装了Pycharm、Visual Studio 2017的Windows8系统,并配置相关属性,以管理员身份登入windows8系统。
软硬件安装具体流程:
(1)安装Visual Studio 2017
打开浏览器进入微软官方网站(https://www.microsoft.com),然后点击顶部导航栏中的”产品->适用于开发人员和IT专业人士->Visual Studio”,打开Visual Studio 2017下载页面;
在打开的Visual Studio下载页面中,点击“Download Visual Studio下拉列表”,单击列表中的“Enterprise 2017”,下载“Enterprise 2017版的Visual Studio软件”;
根据安装向导进行安装即可,期间没有需要特别注意的安装过程。
(2)安装Pycharm
首先去Pycharm官网,或者直接输入网址:http://www.jetbrains.com/pycharm/download/#section=windows,下载PyCharm安装包,根据自己电脑的操作系统进行选择,对于windows系统选择下图的框框所包含的安装包。
选择Windows系统的专业版,将其下载到本地;双击下载的安装包,进行安装即可。
(1)在Visual Studio 2017中安装IronPython
解压下载的压缩包,找到“IronPython_2.7.7.1000.msi”,双击运行点击“Next”
勾选“I acceept….”,然后点击“next”。
选择安装的的功能组件以及安装的路径,然后点击“next”。
(2)在pycharm中安装包依赖。
1).打开pycharm
2)打开File->Settings,安装如下依赖包
3)点击OK即可。
(3)分类模块
分类模块是软件用于对恶意代码训练集进行训练的模块,用户可以在此模块对数据进行训练处理。该模块会将训练结果在python.exe中显示出来,并为后续的测试模块提供测试依据。
(4)训练模块
训练模块是软件用于对恶意代码样本进行测试,用户可以在此模块对想要测试的数据进行测试,结果通过python中的绘图库显示出来。
(5)特色分析
系统运行效率高、在windows系统上运行良好。
可视化界面方便用户操作,同时可视化界面能直观显示数据的分类结果。
采用python进行机器学习算法实现,简单方便易实现。
(6)开发及测试环境
开发环境:windows8、Visual Studio 2017、Pycharm。如前所述,安装相关开发软件,相应依赖包。
测试环境:windows操作系统;
4. 实习成果
成果:软件著作权证书
(一)恶意代码检测系统实现流程图:
(二)测试环境
实现平台:Windows8操作系统
软件环境:VS2017&Pycharm
操作系统:Windows8.1专业版
(三)界面展示及使用功能说明
安装MCT软件
点击左侧Browser按钮,选取事先准备好的恶意代码检测样本作为训练集,使用效果如图所示:
点击分类按钮:得训练结果。
点击分类按钮:
即可得训练结果:
点击右侧Browser按钮,对通过训练集所得结果进行测试:
点击Test按钮,得训练结果:
5.总结
(1)实习中遇到的问题:
①训练数据集算法的选择
好的训练算法是成功的一半。在一开始选择训练算法时,有很多经典算法可供选择。如随机森林算法,K均值算法,老师更是推荐了深度学习算法循环卷积神经网络算法。鉴于自身水平以及实验的目的,综合权衡下选择了朴素贝叶斯分类算法。
② 实验环境的搭载
本次实验成功的关键在于实验环境的成功搭载得到所需的训练集。基于VMI(虚拟机自省)的恶意代码检测,核心在于用虚拟技术得到恶意代码运行时的行为特征,将动态转换为静态。须知动静统一的道理。
③ 软件系统的实现
实现软件系统时,需要考虑的因素有:1)在什么平台上运行;2)实现什么样的功能;3)使用什么语言编写;4)做到什么程度;
以这些问题为核心,解决问题的过程便是软件实现的过程。
(2)实习收获:
在整个实习过程中:首先熟悉了基于VMI的恶意代码检测的实现原理;其次通过内存取证进一步了解了恶意代码运行时的种种特征;最后,在整个实习过程中通过交流、查询资料、请教老师学长掌握了解决问题的能力,收获颇丰。
不得不说,简书的编辑功能实在不好使,插图片如此麻烦,实验截图只能另放别处了。