内存攻击指的是攻击者利用软件安全漏洞,构造恶意输入导致软件在处理输入数据时出现非预期错误,将输入数据写入内存中的某些特定敏感位置,从而劫持软件控制流,转而执行外部输入的指令代码,造成目标系统被获取远程控制或被拒绝服务。内存攻击表面原因是软件编写错误,注入过滤输入的条件设置缺陷、变量类型转换错误等,但根本原因是,现代电子计算机在实现图灵机模型时,没有在内存中严格区分数据和指令,这就存在程序外部输入数据称为指令代码从而被执行的可能。任何操作系统级别的防护措施都不可能完全根除现代计算机体系结构上的这个弊端,只能试图去阻止攻击者利用。
一、 浏览器渗透攻击实例——MS11-050安全漏洞
攻击实践过程
在MSF终端搜索ms11_050,可以找到针对漏洞的攻击模块,名称为ms11_050_mshtml_pcobjectelement。
加载该模块并info查看基本信息。如下图:
设置相关信息。具体操作命令如下:
(1) 设置攻击载荷为Meterpreter中的reverse_http,此载荷会给监听端返回一个遵循HTTP协议的Shell。
(2) 设置监听端IP地址为攻击机的IP地址192.168.1.120。
(3) 将含有渗透代码的网页链接设置为http://192.168.1.120:8080/ms11050。
运行exploit命令生成恶意攻击网页:
在靶机中启动IE浏览器,访问该链接。此时在攻击机的MSF终端中,可以看到如下信息:(此处没有成功,我在考虑是否是靶机浏览器版本问题)
在客户端访问该渗透攻击链接之后,MS11=050渗透模块发送了相关的渗透网页给浏览器,并且成功地植入Meterpreter到进程ID号为2844的notepad.exe中,随后返回给监听端一个会话。由于前面设置了该载荷回连的监听端主机位攻击机IP,所以在攻击机上就能得到返回的会话。
在靶机端,可以看到IE浏览器已经被溢出,查看进程列表,可能植入了Meterpreter的notepad.exe进程。
在Meterpreter的监听端介入会话,具体操作命令如下:
先试用sessions –1命令查看当前监听端的活动会话,然后运行session –i 1命令,选择介入ID号为1的当前靶机回连的会话。随后,输入sysinfo等命令,查看靶机的相关信息。