CN110837644B - 一种***渗透测试方法、装置及终端设备 - Google Patents
一种***渗透测试方法、装置及终端设备 Download PDFInfo
- Publication number
- CN110837644B CN110837644B CN201910979970.3A CN201910979970A CN110837644B CN 110837644 B CN110837644 B CN 110837644B CN 201910979970 A CN201910979970 A CN 201910979970A CN 110837644 B CN110837644 B CN 110837644B
- Authority
- CN
- China
- Prior art keywords
- attack
- module
- penetration
- target system
- address
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/577—Assessing vulnerabilities and evaluating computer system security
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/03—Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
- G06F2221/034—Test or assess a computer or a system
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本申请提供了一种***渗透测试方法、装置及终端设备,适用于数据处理技术领域,该方法包括:调用渗透攻击模块对目标***进行攻击;若对目标***攻击失败,搭建与目标***相同的第一模拟***;基于第一模拟***,对渗透攻击模块进行代码更新;调用代码更新后的渗透攻击模块对目标***进行攻击,获取目标***的第一操作权限。本申请实施例在对目标***渗透攻击不成功时,可以主动更新适应当前的目标***,并主动进行更新,进而极大地提高了对Linux***的渗透测试效率。
Description
技术领域
本申请属于***测试技术领域,尤其涉及***渗透测试方法及终端设备。
背景技术
渗透测试是一种通过模拟恶意攻击者对目标***进行攻击,击败目标***安全控制措施,取得目标***访问控制权限,并发现目标***安全隐患的安全测试与评估方式。
渗透测试是一种完全站在攻击者角度对目标***进行的安全性测试,目前渗透测试还主要依赖于一些渗透测试工具进对已知漏洞库进行测试,但实际在对Linux***进行渗透测试时,渗透测试工具往往难以一次就测试成功,从而导致实际对Linux***渗透测试的效率大大降低。
发明内容
有鉴于此,本申请实施例提供了一种***渗透测试方法及终端设备,可解决对Linux***渗透测试效率较低的问题。
本申请实施例的第一方面提供了一种***渗透测试方法,包括:
调用渗透攻击模块对目标***进行攻击;
若对所述目标***攻击失败,搭建与所述目标***相同的第一模拟***;
基于所述第一模拟***,对所述渗透攻击模块进行代码更新;
调用代码更新后的所述渗透攻击模块对所述目标***进行攻击,获取所述目标***的第一操作权限。
在第一方面的第一种可能实现方式中,所述调用渗透攻击模块对目标***进行攻击,包括:
调用端口扫描器对目标***进行端口扫描,查找所述目标***的开放端口以及目标模块;
调用所述渗透攻击模块,通过所述开放端口对所述目标模块进行攻击。
基于第一种可能实现方式,在第一方面的第二种可能实现方式中,所述目标模块为chain_reply.rb模块。
基于第一种可能实现方式,在第一方面的第三种可能实现方式中,所述端口扫描器为nmap端口扫描器,
所述调用端口扫描器对目标***进行端口扫描,包括:
根据nmap-sT-A-P0指令控制所述nmap端口扫描器对目标***进行端口扫描。
基于第一种可能可能实现方式至第三种可能实现方式,在第一方面的第四种可能实现方式中,所述搭建与所述目标***相同的第一模拟***,包括:
查找预先构建的第二模拟***的Samba服务进程,将GDB调试器加载到所述Samba服务进程中,并将所述Samba服务进程在加载所述GDB调试器后创建的进程设置为跟踪子进程;
调用所述渗透攻击模块,对所述第二模拟***的测试模块进行攻击;
若对所述测试模块攻击成功,则将所述第二模拟***作为所述第一模拟***。
基于第四种可能实现方式,在第一方面的第五种可能实现方式中,所述对所述测试模块攻击成功,包括:
在对所述测试模块进行攻击后,若所述第二模拟***返回的ret地址为预设地址,判定对所述测试模块攻击成功。
基于第四种可能实现方式,在第一方面的第六种可能实现方式中,所述基于所述第一模拟***,对所述渗透攻击模块进行代码更新,包括:
调用所述渗透攻击模块,对所述第一模拟***中的所述测试模块进行攻击;
以第一查找模式查找堆内存中有效负荷的第一地址,并以第二查找模式查找堆内存中有效负荷的第二地址;
计算第一地址与第二地址的偏差距离,并根据所述偏差距离设置所述渗透攻击模块中jmp_back机器码的位置参数;
查找出所述渗透攻击模块中用于为distance赋值的第一代码,并将第一代码中的ret值设置为预设值;
利用修改第一代码后的所述渗透攻击模块,对所述第一模拟***中的所述测试模块进行攻击,若对所述测试模块攻击成功,完成对所述渗透攻击模块的代码更新。
基于第六种可能实现方式,在第一方面的第七种可能实现方式中,所述以第一查找模式查找堆内存中有效负荷的第一地址,并以第二查找模式查找堆内存中有效负荷的第二地址,包括:
查找堆内存中由有效负荷前n位字符组成的字符串的地址,得到所述第一地址,其中,n为正整数;
查找堆内存中有效负荷的前4字节数据的地址,得到所述第二地址。
本申请实施例的第二方面提供了一种***渗透测试装置,包括:
第一攻击调用模块,用于调用渗透攻击模块对目标***进行攻击;
***搭建模块,用于若对所述目标***攻击失败,搭建与所述目标***相同的第一模拟***;
代码更新模块,用于基于所述第一模拟***,对所述渗透攻击模块进行代码更新;
第二攻击调用模块,用于调用代码更新后的所述渗透攻击模块对所述目标***进行攻击,获取所述目标***的第一操作权限。
本申请实施例的第三方面提供了一种终端设备,所述终端设备包括存储器、处理器,所述存储器上存储有可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上述第一方面中任一项所述***渗透测试方法的步骤。
本申请实施例的第四方面提供了一种计算机可读存储介质,包括:存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如上述第一方面中任一项所述***渗透测试方法的步骤。
第五方面,本申请实施例提供了一种计算机程序产品,当计算机程序产品在终端设备上运行时,使得终端设备执行上述第一方面中任一项所述***渗透测试方法。
本申请实施例与现有技术相比存在的有益效果是:本申请实施例通过在对目标***渗透攻击失败时,自动搭建一个与目标***相同的模拟***,并基于这个模拟***来对渗透攻击平台中的攻击模块进行代码自动修正更新,再基于更新代码后的攻击模块重新攻击目标***,从而即使在对目标***渗透攻击不成功时,也可以主动更新适应当前的目标***,并主动进行更新,进而极大地提高了对Linux***的渗透测试效率。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例一提供的***渗透测试方法的实现流程示意图;
图2是本申请实施例二提供的***渗透测试方法的实现流程示意图;
图3是本申请实施例三提供的***渗透测试方法的实现流程示意图;
图4是本申请实施例四提供的***渗透测试方法的实现流程示意图;
图5是本申请实施例五提供的***渗透测试方法的实现流程示意图;
图6是本申请实施例六提供的***渗透测试装置的结构示意图;
图7是本申请实施例七提供的终端设备的示意图。
具体实施方式
以下描述中,为了说明而不是为了限定,提出了诸如特定***结构、技术之类的具体细节,以便透彻理解本申请实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本申请。在其它情况中,省略对众所周知的***、装置、电路以及方法的详细说明,以免不必要的细节妨碍本申请的描述。
为了说明本申请所述的技术方案,下面通过具体实施例来进行说明。
为了便于理解本申请,此处先对本申请实施例进行简要说明,由于目前渗透测试还主要依赖于一些渗透测试工具进对已知漏洞库进行测试,但实际在对Linux***进行渗透测试时,渗透测试工具往往难以一次就测试成功,从而导致实际对Linux***渗透测试的效率大大降低。
为了提高对Linux***渗透测试的效率,本申请实施例通过在对目标***渗透攻击失败时,自动搭建一个与目标***相同的模拟***,并基于这个模拟***来对渗透攻击平台中的攻击模块进行代码自动修正更新,再基于更新代码后的攻击模块重新攻击目标***,从而即使在对目标***渗透攻击不成功时,也可以主动更新适应当前的目标***,并主动进行更新,进而极大地提高了对Linux***的渗透测试效率。
同时应当说明地,在本申请实施例中,具体使用的渗透攻击平台和目标***可由技术人员自行选取,此处不予限定,例如渗透攻击平台可以是kali linux***中的Metasploit或者其他渗透攻击平台,Metasploit此平台作为一个渗透攻击研究和代码开发的一个开放资源,我们可以用它对目标***进行渗透,此时,渗透攻击模块是指Metasploit中的渗透攻击模块Exploit,同时,目标***可以是各个版本的Linux***,如可以是ubuntu8.0.4Server***,以下均以渗透攻击平台为Metasploit,渗透攻击模块为Exploit,目标***为ubuntu8.0.4Server***为例进行说明。其中,在本申请实施例中,kali linux***既可以是在终端设备中直接安装,也可以在终端设备的虚拟机中进行安装,此处不予限定。在利用kali linux内置的Metasploit平台进行测试时,在kali linux***里输入msfconsole指令即可调用此平台。
同时,本申请实施例中***渗透测试方法的执行主体为安装有渗透攻击平台的终端设备,其中终端设备的具体硬件形态此处不予限定,包括但不限于如笔记本电脑和个人电脑等。
对本申请实施例详述如下:
图1示出了本申请实施例一提供的***渗透测试方法的实现流程图,详述如下:
S101,调用渗透攻击模块对目标***进行攻击。
在本申请实施例中,会调用渗透攻击平台中的渗透攻击模块对目标***进行攻击,以实现对目标***的尝试攻击,此时会利用渗透攻击模块中现有的目标选项进行攻击。其中,为了实现对真实应用环境的模拟,本申请实施例的目标***可以被安装在一个指定的终端之中,例如可以将ubuntu8.0.4Server***安装在服务器,此时会将服务器作为本申请实施例的测试对象,本申请实施例的执行主体终端设备会调用渗透攻击模块对服务器进行攻击。
作为本申请的一个可选实施例,可以将作为执行主体的终端设备和作为测试对象的终端放置于同一局域网之中,以减小网络环境对测试的影响,提高测试的可靠性和效率,例如上述实例中,可以将作为执行主体的终端设备与服务器置于同一局域网中。
若攻击成功,说明此时已经成功的击败了目标***的安全控制措施,此时可以直接获取目标***的各种所需操作权限,实现了对目标***安全隐患的安全测试与评估。
S102,若对目标***攻击失败,搭建与目标***相同的第一模拟***。
S103,基于第一模拟***,对渗透攻击模块进行代码更新。
若攻击失败,说明此时未击败目标***的安全控制措施,此时需要重新尝试对目标***进行攻击,但如仍直接使用原来的渗透攻击模块配置进行攻击,攻击成功的概率无疑会极小,因此为了提高攻击成功的概率,本申请实施例会构建一个与目标***相同的模拟***,以对渗透攻击模块进行代码更新调试,由于模拟***与目标***相同,从而使得更新后得到的可适应于模拟***的渗透攻击模块,对目标***渗透攻击的成功率大大提高。其中,具体的***搭建方法和渗透攻击模块代码更新方法,此处不予限定,可由技术人员根据实际需求进行选取或者设计,亦可参考本申请实施例三至五。
应当特别说明地,由于单次攻击结果的偶然性极大,因此,在本申请实施例中,S103对攻击是否失败的判定,既可以是单次攻击失败了就直接判定为攻击失败,并进行模拟***搭建和代码更新,也可以是连续多次攻击失败后才判定为攻击失败,其中,具体判定攻击失败的次数阈值,可由技术人员自行设定,此处不予限定,例如可以设置为5次或者10次。
S104,调用代码更新后的渗透攻击模块对目标***进行攻击,获取目标***的第一操作权限。
在完成对渗透攻击模块代码的更新之后,本申请实施例会再基于更新后的渗透攻击模块来重新对目标***进行攻击,以获取对目标***所需的第一操作权限,其中,第一操作权限的具体权限内容此处不予限定,可有技术人员自行设置,例如可以为“使用该攻击模块”、“显示攻击载荷”、“显示载荷选项”、“设置攻击目标”、“exploit”等操作实施权限。
作为本申请实施例一中对目标***进行攻击的一种具体实现方式,如图2所示,本申请实施例二,包括:
S201,调用端口扫描器对目标***进行端口扫描,查找目标***的开放端口以及目标模块。
在本申请实施例中,利用渗透攻击平台中的端口扫描器对目标***进行端口扫描,查找目标***中开发的端口,并利用开发端口来查找出目标***中所需攻击的目标模块,其中,作为本申请的一个可选实施例,目标模块可以为chain_reply.rb模块,此时可以通过search chain_reply.rb来查找出目标模块。
作为本申请的一个可选实施例,端口扫描器可选用Metasploit中的nmap端口扫描器,同时可根据nmap-sT-A-P0指令控制nmap端口扫描器对目标***进行端口扫描。其中,-sT表示TCP连接扫描,-A是高级操作***探测,可以对一个特定服务进行更深入的旗标和指纹攫取。
S202,调用渗透攻击模块,通过开放端口对目标模块进行攻击。
在确定出目标***开发端口以及目标模块之后,本申请实施例会直接调用Metasploit中的渗透攻击模块通过开放端口对目标模块进行攻击。
在上述本申请实施例的基础上,假设渗透攻击模块为Metasploit中的Exploit,目标***为ubuntu8.0.4Server***,端口扫描器为Metasploit中nmap端口扫描器,目标模块为chain_reply.rb模块,对上述本申请实施例的代码实现的一个实例如下:
作为本申请实施例一中搭建第一模拟***的一种具体实现方式,在本申请实施例一和二的基础上,如图3所示,包括:
S301,查找预先构建的第二模拟***的Samba服务进程,将GDB调试器加载到Samba服务进程中,并将Samba服务进程在加载GDB调试器后创建的进程设置为跟踪子进程。
首先查找Samba服务进程号,随后将GDB附加到调试器Samba服务进程中,并设置为跟踪子进程。linux下的服务程序一般采用主进程监听连接,接收到请求后创建子进程来应答的工作模式,Samba服务也是如此。
S302,调用渗透攻击模块,对第二模拟***的测试模块进行攻击。
为方便在模拟***中调试,选择debug目标为对目标模块对应的测试模块。
S303,若对测试模块攻击成功,则将第二模拟***作为第一模拟***。
如果对测试模块攻击成功,即漏洞被成功触发,此时即完成了对第一模拟***的搭建。
作为本申请的判定对测试模块攻击是否成功的一种具体实现方式,包括:
在对测试模块进行攻击后,若第二模拟***返回的ret地址为预设地址,判定对测试模块攻击成功。
如果漏洞被成功触发,那么返回地址Ret为0xAABBCCDD,就是说终端设备向模拟***发送的数据将会使得模拟***中的Samba服务程序执行到该地址。
从上述步骤可以看出,Samba服务新建立的跟踪子进程产生异常,eip被置成了0xaabbccdd。说明模块构造的数据是完全可以触发模拟***中Samba服务安全漏洞的,只是触发后针对模拟***的漏洞利用失败了。所以,只关注模块如何使用targets选项中的参数Ret、Offset2,然后根据模拟***中漏洞触发时的进程上下文***做出调整。
通过上述对测试模块的验证可知,漏洞触发之后程序将执行到Ret处的地址。溢出数据包中,Ret值将重写tc->destructor中的函数指针。该Ret值纸箱指令jmp ecx,该ecx值指向缓存区。因此,漏洞触发之后,程序将执行jmp ecx,跳转到缓存区中。另一个参数Offset2用来计算一个跳转距离,生成相应的回跳指令jmp_back,使得程序跳转回缓存区之后再次执行这段跳转指令,从而回到缓存区中构造的原始输入数据,执行其中的有效负荷。
即漏洞的利用包括两步:
1)利用Ret地址处的指令跳转回缓存区中的jmp_back;
2)执行jmp_back跳转到原始输入数据处的缓存区。
作为本申请实施例一中更新渗透攻击模块的一种具体实现方式,如图4所示,包括:
S401,调用渗透攻击模块,对第一模拟***中的测试模块进行攻击。
作为本申请的一个可选实施例,可以先找到当前模拟***下漏洞触发之后jmp_back指令和Payload的位置,得出前者的机器码和标记Payload,以便后续的地址查找定位。其中,Payload为有效负荷,指渗透攻击成功之后,真正在目标***执行的代码或指令。
设置target为Debugging Target,攻击测试模块。
S402,以第一查找模式查找堆内存中有效负荷的第一地址,并以第二查找模式查找堆内存中有效负荷的第二地址。
作为本申请查找有效负荷的一种具体实现方式,包括:
S501,查找堆内存中由有效负荷前n位字符组成的字符串的地址,得到第一地址,其中,n为正整数。
其中,n的具体值可由技术人员根据实际需求设定。例如在一实例中,发送攻击数据后服务进程中断在地址0xaabbccdd处,由内存空间布局获取堆内存的地址空间,以双字格式查找堆内存中有效负荷开头的字符串“ABCC”,位置为0xb807a71b,得到第一地址,以字节格式查找堆内存中的jmp back机器码,位置为0xb807a6c4,由此得到两者之间的偏差是0xb807a71b-0xb807a6c4=0x57。对比代码清单jmp back与有效负荷之间的数据长度正是0x57。
S502,查找堆内存中有效负荷的前4字节数据的地址,得到第二地址。
修改查找方式,只搜索有效负荷的前4字节数据的地址,找到第二地址0xb807c690。
S403,计算第一地址与第二地址的偏差距离,并根据偏差距离设置渗透攻击模块中jmp_back机器码的位置参数。
利用第一地址减去第二地址,即可得到漏洞利用时jmp back代码的位置,例如上述实例中,用有效负荷第一地址0xb807a71b减去第二地址0xb807c690,得到一个负距离0xb807a71b-0xb807c690=-0x1f75。这个距离和当前targets中的offset2偏差不大,漏洞利用时jmp back代码的位置正式此处。
S404,查找出渗透攻击模块中用于为distance赋值的第一代码,并将第一代码中的ret值设置为预设值。
其中,预设值可由技术人员根据实际需求设定。例如在一实例中,设定一个ret值为0xb7c12063,在源代码中修改,并且只能改变给distance赋值的代码。
S405,利用修改第一代码后的渗透攻击模块,对第一模拟***中的测试模块进行攻击,若对测试模块攻击成功,完成对渗透攻击模块的代码更新。
在代码修改完成之后,尝试对模拟***的测试模块进行攻击,若攻击成功,说明修改后的渗透攻击模块可满足实际测试的需求,可获取模拟***的操作权限,因此即可完成对渗透攻击模块的代码更新。
对上述本申请实施例四的代码实现实例如下:
这样便成功进行了攻击,获取了权限。
在本申请实施例五之中,关键在于:
1、验证smb_off2的代码,它控制了smb_off2的范围,超出范围后函数就会返回。控制了smb_off2的范围,就能控制memmove函数内存移动的目的地址范围,此漏洞利用的内存覆盖操作就被杜绝了。
2、在没有补丁的程序中,溢出发生后,内存中“trans”字符串的前36字节将被memmove函数移动到特定位置,第12-36字节刚好覆盖堆管理结构中talloc_chunk结构的一部分,返回地址Ret覆盖析构函数destructor,当堆释放时会执行析构函数,从而跳转到设定好的返回地址。
3、为了在内存中找到一个talloc_chunk结构进行覆盖,需要在发起攻击时在Session前注册其他会话,此过程会分配一片内存,强制程序在内存中生成talloc chunk。
通过查看渗透攻击模块exploit/linux/samba/chain_reply.rb源码可知,Linux***中,存在一个安全漏洞,该安全漏洞存在于Samba网络服务程序在处理链式响应数据包时,无法使用一个有效偏移来构造数据包的下一部分。源码通过构造这个偏移值来造成程序的内存错误。然后,通过覆盖一个函数指针达到劫持控制流执行Shellcode的目的。值得注意的是,该漏洞利用存在一定的不确定性,随后的溢出发包函数brute_exploit将最多循环发包50次来增加成功的概率。
在上述漏洞的基础上,本申请实施例通过在对目标***渗透攻击失败时,自动搭建一个与目标***相同的模拟***,并基于这个模拟***来对渗透攻击平台中的攻击模块进行代码自动修正更新,再基于更新代码后的攻击模块重新攻击目标***,从而即使在对目标***渗透攻击不成功时,也可以主动更新适应当前的目标***,并主动进行更新,进而极大地提高了对Linux***的渗透测试效率。
此外,上述本申请实施例还具有以下有益效果:
(1)对于具有典型开放端口并具有这一类典型漏洞的所有计算机***均可采用类似方案进行渗透测试,使得本申请实施例可以提高对对不同计算机***渗透测试优化的覆盖能力。
(2)本方案适用于在linux的***下实施对linux计算机设备的渗透,对于企业的服务器等一般采用linux***的计算机设备具有很好的测试效果。
对应于上文实施例的方法,图6示出了本申请实施例提供的***渗透测试装置的结构框图,为了便于说明,仅示出了与本申请实施例相关的部分。图6示例的***渗透测试装置可以是前述实施例一提供的***渗透测试方法的执行主体。
参照图6,该***渗透测试装置包括:
第一攻击调用模块61,用于调用渗透攻击模块对目标***进行攻击。
***搭建模块62,用于若对所述目标***攻击失败,搭建与所述目标***相同的第一模拟***。
代码更新模块63,用于基于所述第一模拟***,对所述渗透攻击模块进行代码更新。
第二攻击调用模块64,用于调用代码更新后的所述渗透攻击模块对所述目标***进行攻击,获取所述目标***的第一操作权限。
进一步地,第一攻击调用模块61,包括:
端口扫描模块,用于调用端口扫描器对目标***进行端口扫描,查找所述目标***的开放端口以及目标模块。
端口攻击模块,用于调用所述渗透攻击模块,通过所述开放端口对所述目标模块进行攻击。
进一步地,所述目标模块为chain_reply.rb模块。
进一步地,端口扫描模块,包括:
根据nmap-sT-A-P0指令控制所述nmap端口扫描器对目标***进行端口扫描。
进一步地,***搭建模块62,包括:
进程设置模块,用于查找预先构建的第二模拟***的Samba服务进程,将GDB调试器加载到所述Samba服务进程中,并将所述Samba服务进程在加载所述GDB调试器后创建的进程设置为跟踪子进程。
第一测试攻击模块,调用所述渗透攻击模块,对所述第二模拟***的测试模块进行攻击。
攻击判定模块,用于若对所述测试模块攻击成功,则将所述第二模拟***作为所述第一模拟***。
进一步地,攻击判定模块,包括:
在对所述测试模块进行攻击后,若所述第二模拟***返回的ret地址为预设地址,判定对所述测试模块攻击成功。
进一步地,代码更新模块63,包括:
第二测试攻击模块,用于调用所述渗透攻击模块,对所述第一模拟***中的所述测试模块进行攻击。
地址查找模块,用于以第一查找模式查找堆内存中有效负荷的第一地址,并以第二查找模式查找堆内存中有效负荷的第二地址。
参数设置模块,用于计算第一地址与第二地址的偏差距离,并根据所述偏差距离设置所述渗透攻击模块中jmp_back机器码的位置参数。
代码修改模块,用于查找出所述渗透攻击模块中用于为distance赋值的第一代码,并将第一代码中的ret值设置为预设值。
测试模块,用于利用修改第一代码后的所述渗透攻击模块,对所述第一模拟***中的所述测试模块进行攻击,若对所述测试模块攻击成功,完成对所述渗透攻击模块的代码更新。
进一步地,地址查找模块,包括:
查找堆内存中由有效负荷前n位字符组成的字符串的地址,得到所述第一地址,其中,n为正整数。
查找堆内存中有效负荷的前4字节数据的地址,得到所述第二地址。
本申请实施例提供的***渗透测试装置中各模块实现各自功能的过程,具体可参考前述图1所示实施例一的描述,此处不再赘述。
应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
应当理解,当在本申请说明书和所附权利要求书中使用时,术语“包括”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在本申请说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
如在本申请说明书和所附权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。
另外,在本申请说明书和所附权利要求书的描述中,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。还应理解的是,虽然术语“第一”、“第二”等在文本中在一些本申请实施例中用来描述各种元素,但是这些元素不应该受到这些术语的限制。这些术语只是用来将一个元素与另一元素区分开。例如,第一表格可以被命名为第二表格,并且类似地,第二表格可以被命名为第一表格,而不背离各种所描述的实施例的范围。第一表格和第二表格都是表格,但是它们不是同一表格。
在本申请说明书中描述的参考“一个实施例”或“一些实施例”等意味着在本申请的一个或多个实施例中包括结合该实施例描述的特定特征、结构或特点。由此,在本说明书中的不同之处出现的语句“在一个实施例中”、“在一些实施例中”、“在其他一些实施例中”、“在另外一些实施例中”等不是必然都参考相同的实施例,而是意味着“一个或多个但不是所有的实施例”,除非是以其他方式另外特别强调。术语“包括”、“包含”、“具有”及它们的变形都意味着“包括但不限于”,除非是以其他方式另外特别强调。
图7是本申请一实施例提供的终端设备的结构示意图。如图7所示,该实施例的终端设备7包括:至少一个处理器70(图7中仅示出一个)、存储器71,所述存储器71中存储有可在所述处理器70上运行的计算机程序72。所述处理器70执行所述计算机程序72时实现上述各个***渗透测试方法实施例中的步骤,例如图1所示的步骤101至104。或者,所述处理器70执行所述计算机程序72时实现上述各装置实施例中各模块/单元的功能,例如图6所示模块61至64的功能。
所述终端设备7可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。所述终端设备可包括,但不仅限于,处理器70、存储器71。本领域技术人员可以理解,图7仅仅是终端设备7的示例,并不构成对终端设备7的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述终端设备还可以包括输入发送设备、网络接入设备、总线等。
所称处理器70可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
所述存储器71在一些实施例中可以是所述终端设备7的内部存储单元,例如终端设备7的硬盘或内存。所述存储器71也可以是所述终端设备7的外部存储设备,例如所述终端设备7上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(SecureDigital,SD)卡,闪存卡(Flash Card)等。进一步地,所述存储器71还可以既包括所述终端设备7的内部存储单元也包括外部存储设备。所述存储器71用于存储操作***、应用程序、引导装载程序(BootLoader)、数据以及其他程序等,例如所述计算机程序的程序代码等。所述存储器71还可以用于暂时地存储已经发送或者将要发送的数据。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现可实现上述各个方法实施例中的步骤。
本申请实施例提供了一种计算机程序产品,当计算机程序产品在移动终端上运行时,使得移动终端执行时实现可实现上述各个方法实施例中的步骤。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实现上述实施例方法中的全部或部分流程,可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质至少可以包括:能够将计算机程序代码携带到拍照装置/终端设备的任何实体或装置、记录介质、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,RandomAccess Memory)、电载波信号、电信信号以及软件分发介质。例如U盘、移动硬盘、磁碟或者光盘等。在某些司法管辖区,根据立法和专利实践,计算机可读介质不可以是电载波信号和电信信号。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
在本申请所提供的实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
以上所述实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使对应技术方案的本质脱离本申请各实施例技术方案的精神和范围,均应包含在本申请的保护范围之内。
Claims (9)
1.一种***渗透测试方法,其特征在于,包括:
调用渗透攻击模块对目标***进行攻击;
若对所述目标***攻击失败,搭建与所述目标***相同的第一模拟***;
基于所述第一模拟***,对所述渗透攻击模块进行代码更新;
调用代码更新后的所述渗透攻击模块对所述目标***进行攻击,获取所述目标***的第一操作权限;
其中,所述搭建与所述目标***相同的第一模拟***,包括:
查找预先构建的第二模拟***的Samba服务进程,将GDB调试器加载到所述Samba服务进程中,并将所述Samba服务进程在加载所述GDB调试器后创建的进程设置为跟踪子进程;
调用所述渗透攻击模块,对所述第二模拟***的测试模块进行攻击;
若对所述测试模块攻击成功,则将所述第二模拟***作为所述第一模拟***。
2.如权利要求1所述的***渗透测试方法,其特征在于,所述调用渗透攻击模块对目标***进行攻击,包括:
调用端口扫描器对目标***进行端口扫描,查找所述目标***的开放端口以及目标模块;
调用所述渗透攻击模块,通过所述开放端口对所述目标模块进行攻击。
3.如权利要求2所述的***渗透测试方法,其特征在于,所述端口扫描器为nmap端口扫描器,
所述调用端口扫描器对目标***进行端口扫描,包括:
根据nmap-sT-A-P0指令控制所述nmap端口扫描器对目标***进行端口扫描。
4.如权利要求1所述的***渗透测试方法,其特征在于,所述对所述测试模块攻击成功,包括:
在对所述测试模块进行攻击后,若所述第二模拟***返回的ret地址为预设地址,判定对所述测试模块攻击成功。
5.如权利要求1所述的***渗透测试方法,其特征在于,所述基于所述第一模拟***,对所述渗透攻击模块进行代码更新,包括:
调用所述渗透攻击模块,对所述第一模拟***中的所述测试模块进行攻击;
以第一查找模式查找堆内存中有效负荷的第一地址,并以第二查找模式查找堆内存中有效负荷的第二地址;
计算第一地址与第二地址的偏差距离,并根据所述偏差距离设置所述渗透攻击模块中jmp_back机器码的位置参数;
查找出所述渗透攻击模块中用于为distance赋值的第一代码,并将第一代码中的ret值设置为预设值;
利用修改第一代码后的所述渗透攻击模块,对所述第一模拟***中的所述测试模块进行攻击,若对所述测试模块攻击成功,完成对所述渗透攻击模块的代码更新。
6.如权利要求5所述的***渗透测试方法,其特征在于,所述以第一查找模式查找堆内存中有效负荷的第一地址,并以第二查找模式查找堆内存中有效负荷的第二地址,包括:
查找堆内存中由有效负荷前n位字符组成的字符串的地址,得到所述第一地址,其中,n为正整数;
查找堆内存中有效负荷的前4字节数据的地址,得到所述第二地址。
7.一种***渗透测试装置,其特征在于,包括:
第一攻击调用模块,用于调用渗透攻击模块对目标***进行攻击;
***搭建模块,用于若对所述目标***攻击失败,搭建与所述目标***相同的第一模拟***;
代码更新模块,用于基于所述第一模拟***,对所述渗透攻击模块进行代码更新;
第二攻击调用模块,用于调用代码更新后的所述渗透攻击模块对所述目标***进行攻击,获取所述目标***的第一操作权限;
其中,***搭建模块,包括:
进程设置模块,用于查找预先构建的第二模拟***的Samba服务进程,将GDB调试器加载到所述Samba服务进程中,并将所述Samba服务进程在加载所述GDB调试器后创建的进程设置为跟踪子进程;
第一测试攻击模块,调用所述渗透攻击模块,对所述第二模拟***的测试模块进行攻击;
攻击判定模块,用于若对所述测试模块攻击成功,则将所述第二模拟***作为所述第一模拟***。
8.一种终端设备,其特征在于,所述终端设备包括存储器、处理器,所述存储器上存储有可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如权利要求1至6任一项所述方法的步骤。
9.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至6任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910979970.3A CN110837644B (zh) | 2019-10-15 | 2019-10-15 | 一种***渗透测试方法、装置及终端设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910979970.3A CN110837644B (zh) | 2019-10-15 | 2019-10-15 | 一种***渗透测试方法、装置及终端设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110837644A CN110837644A (zh) | 2020-02-25 |
CN110837644B true CN110837644B (zh) | 2021-07-30 |
Family
ID=69575211
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910979970.3A Active CN110837644B (zh) | 2019-10-15 | 2019-10-15 | 一种***渗透测试方法、装置及终端设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110837644B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111817908B (zh) * | 2020-05-25 | 2021-09-24 | 北京华云安信息技术有限公司 | 基于强化学习的节点渗透测试方法、设备和存储介质 |
CN114154162B (zh) * | 2020-09-08 | 2024-03-15 | 中国电信股份有限公司 | 渗透测试路径规划方法和装置、计算机可读存储介质 |
CN114244599B (zh) * | 2021-12-15 | 2023-11-24 | 杭州默安科技有限公司 | 一种干扰恶意程序的方法 |
CN116775147B (zh) * | 2023-06-08 | 2024-03-15 | 北京天融信网络安全技术有限公司 | 一种可执行文件处理方法、装置、设备及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102468985A (zh) * | 2010-11-01 | 2012-05-23 | 北京神州绿盟信息安全科技股份有限公司 | 针对网络安全设备进行渗透测试的方法和*** |
CN106295354A (zh) * | 2016-08-08 | 2017-01-04 | 中国科学院信息工程研究所 | 一种Android***堆溢出漏洞验证方法及装置 |
CN107426227A (zh) * | 2017-08-02 | 2017-12-01 | 江苏省邮电规划设计院有限责任公司 | 一种自动化安全渗透测试方法 |
CN108769022A (zh) * | 2018-05-29 | 2018-11-06 | 浙江大学 | 一种用于渗透测试的工业控制***安全实验平台 |
CN110249331A (zh) * | 2017-01-30 | 2019-09-17 | 微软技术许可有限责任公司 | 针对入侵检测的连续学习 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10460112B2 (en) * | 2014-02-07 | 2019-10-29 | Northwestern University | System and method for privacy leakage detection and prevention system without operating system modification |
-
2019
- 2019-10-15 CN CN201910979970.3A patent/CN110837644B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102468985A (zh) * | 2010-11-01 | 2012-05-23 | 北京神州绿盟信息安全科技股份有限公司 | 针对网络安全设备进行渗透测试的方法和*** |
CN106295354A (zh) * | 2016-08-08 | 2017-01-04 | 中国科学院信息工程研究所 | 一种Android***堆溢出漏洞验证方法及装置 |
CN110249331A (zh) * | 2017-01-30 | 2019-09-17 | 微软技术许可有限责任公司 | 针对入侵检测的连续学习 |
CN107426227A (zh) * | 2017-08-02 | 2017-12-01 | 江苏省邮电规划设计院有限责任公司 | 一种自动化安全渗透测试方法 |
CN108769022A (zh) * | 2018-05-29 | 2018-11-06 | 浙江大学 | 一种用于渗透测试的工业控制***安全实验平台 |
Also Published As
Publication number | Publication date |
---|---|
CN110837644A (zh) | 2020-02-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110837644B (zh) | 一种***渗透测试方法、装置及终端设备 | |
US10846402B2 (en) | Security scanning method and apparatus for mini program, and electronic device | |
US9858417B2 (en) | Detecting malicious computer code in an executing program module | |
EP2788912B1 (en) | Predictive heap overflow protection | |
RU2698776C2 (ru) | Способ ведения базы данных и соответствующий сервер | |
US9081967B2 (en) | System and method for protecting computers from software vulnerabilities | |
EP2748751B1 (en) | System and method for day-zero authentication of activex controls | |
KR102271545B1 (ko) | 도메인 생성 알고리즘(dga) 멀웨어 탐지를 위한 시스템 및 방법들 | |
US9372991B2 (en) | Detecting malicious computer code in an executing program module | |
US10055251B1 (en) | Methods, systems, and media for injecting code into embedded devices | |
RU2748518C1 (ru) | Способ противодействия вредоносному программному обеспечению (ВПО) путем имитации проверочной среды | |
US9223974B2 (en) | Anti-viral compiler | |
US20180232518A1 (en) | Protecting computer code against rop attacks | |
CN112685745B (zh) | 一种固件检测方法、装置、设备及存储介质 | |
US8572729B1 (en) | System, method and computer program product for interception of user mode code execution and redirection to kernel mode | |
CN113779562A (zh) | 基于零信任的计算机病毒防护方法、装置、设备及介质 | |
CN110941825B (zh) | 一种应用监控方法及装置 | |
CN112395603A (zh) | 基于指令执行序列特征的漏洞攻击识别方法、装置及计算机设备 | |
CN115455414A (zh) | 一种安全检测方法和装置 | |
KR101053470B1 (ko) | 유해 트래픽 제어 및 해킹을 차단하는 장치 및 방법 | |
CN114640484A (zh) | 网络安全对抗方法、装置和电子设备 | |
EP2835757A1 (en) | System and method protecting computers from software vulnerabilities | |
CN114329540A (zh) | 文件分发的处理方法及装置、存储介质、终端 | |
CN117786692A (zh) | 一种恶意程序的检测方法、设备及储存介质 | |
CN115292707A (zh) | 基于动态类调用序列的可信度判断方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |