揭秘Java反序列化漏洞:攻击者如何利用漏洞入侵系统
一、引言
随着互联网技术的不断发展,软件安全问题日益受到关注。
其中,Java反序列化漏洞作为一种常见的安全漏洞,给企业和个人用户带来了极大的威胁。
攻击者利用Java反序列化漏洞,可以实现对目标系统的入侵,窃取敏感信息,执行恶意代码等。
因此,深入了解Java反序列化漏洞及其攻击方式,对于提高系统安全性具有重要意义。
二、Java反序列化漏洞概述
Java反序列化是指将序列化的Java对象字节流恢复为原始对象的过程。
在此过程中,如果对象包含来自不可信来源的数据,并且没有对数据进行适当的验证和处理,就可能导致安全漏洞。
攻击者利用这些漏洞,可以构造恶意对象,通过反序列化过程入侵系统。
常见的Java反序列化漏洞包括:
1. 远程代码执行漏洞:攻击者通过构造恶意对象,利用反序列化过程在目标系统上执行任意代码。
2. 信息泄露漏洞:攻击者利用反序列化过程中的数据泄露,获取敏感信息。
3. 拒绝服务攻击:攻击者通过构造大量恶意对象,导致反序列化过程消耗大量系统资源,从而造成拒绝服务。
三、攻击者如何利用Java反序列化漏洞入侵系统
1. 构造恶意对象:攻击者首先需要通过各种手段(如社会工程学、钓鱼邮件等)诱骗目标用户下载或接收包含恶意对象的文件。这些文件可能是Java的序列化对象文件(如.ser文件),或者包含Java序列化的数据的任何文件(如XML、JSON等)。
2. 利用漏洞触发反序列化:当目标用户打开或加载包含恶意对象的文件时,Java应用程序会尝试对这些文件进行反序列化。如果应用程序存在反序列化漏洞,攻击者构造的恶意对象就会被触发。
3. 执行恶意代码:一旦恶意对象被触发,攻击者就可以利用漏洞在目标系统上执行任意代码。这些代码可以窃取敏感信息、破坏系统文件、下载并执行其他恶意程序等。
4. 提升权限和横向移动:攻击者还可能会试图提升其在系统中的权限,以便更好地控制目标系统。他们还可能通过横向移动,从一台机器扩散到整个网络的其他部分。
5. 长期控制目标系统:在某些情况下,攻击者可能会建立长期存在的后门,以便在未来随时重新进入目标系统。他们可以通过定期更新后门代码,绕过系统的安全检测和防御措施。
四、防范Java反序列化漏洞的措施
1. 输入验证:对来自不可信来源的数据进行严格的输入验证,确保数据符合预期的格式和类型。
2. 过滤器:使用过滤器来过滤掉可能触发反序列化的恶意数据。
3. 安全编程实践:遵循安全编程实践,确保在编写和反序列化代码时遵循最佳安全原则。
4. 限制反序列化范围:尽可能限制可以反序列化的来源和数据类型。只允许从可信任的来源进行反序列化,并严格限制可以反序列化的数据类型。
5. 定期安全审计和更新:定期对系统进行安全审计,及时发现和修复存在的安全漏洞。同时,保持系统和应用程序的更新,以获取最新的安全补丁和修复程序。
五、总结
Java反序列化漏洞是一种严重的安全威胁,攻击者可以利用这些漏洞入侵系统,执行恶意代码,窃取敏感信息等。
为了防范这些漏洞,我们需要了解Java反序列化漏洞的原理和攻击方式,并采取有效的防范措施。
通过输入验证、过滤器、安全编程实践、限制反序列化范围以及定期安全审计和更新等措施,我们可以提高系统的安全性,降低受到攻击的风险。
黑客攻击的隐藏原理
程序在任务栏的隐藏比较简单,首先要保证程序主界面的隐藏,一般是通过修改应用程序类的初始化实例函数InitInstance()的 ShowWindow()语句的SW_SHOW参数为SW_HIDE来实现的。
主界面隐藏的同时任务栏虽然也会消失,但在程序启动时会闪一下,因此需要修改程序的扩展属性。
一种方法是SDK的写法,即直接利用GetWindowLong()获取到当前的扩展属性然后通过逻辑运算去掉原有的 WS_EX_APPWINDOW属性,并新添加一个WS_EX_TOOLWINDOW属性,这样系统会将其认为是一个工具条窗口而不会再在任务栏中加以显示。
最后需要将修改过的扩展属性通过SetWindowLong()函数将其写回。
这两个函数的声明分别如下:LONG GetWindowLong(HWND hWnd,int nIndex);LONG SetWindowLong(HWND hWnd,int nIndex,LONG dwNewLong);另一种很简便的是MFC的写法:在程序框架类的预创建窗口函数里通过直接对CREATESTRUCT结构对象的逻辑操作而将程序属性进行改变=WS_POPUP;|=WS_EX_TOOLWINDOW;这两种写法虽然表现形式各不相同,其本质都是一样的。
程序在任务列表中的隐藏原理任务列表(Ctrl+Alt+Del时弹出的对话框)显示了当前系统正在运行的一些应用程序,如果实现了上一步,虽然在任务栏看不见程序,但有经验的用户可以通过观察任务列表而发现一些值得怀疑的应用程序而在此将其关闭。
所以大多数黑软也都通过较复杂的手段实现了自身在任务列表中的隐藏,使被发现的机会大大降低。
在Win9x中,一般每个应用程序都要通过一个API(应用程序接口)函数RegisterServiceProcess()向系统申请注册成为一个服务进程,并且也是通过这个函数注销其服务进程来结束这个服务进程的运行。
如果一个进程注册为一个服务进程,通过Ctrl+Alt+Del就可以在任务列表里看见该进程的标题。
而如果一个进程运行了但没有向系统申请注册成为服务进程那么就不会在任务列表里显示。
黑软也正是利用这个原理使自身在运行时能在任务列表中实现隐藏。
该函数存放于系统内核中,具体声明如下:DWORD RegisterServiceProcess(DWORD dwProcessId,DWORD dwType);其第一个参数指定为一个服务进程的进程标识,如果是0则注册当前的进程;第二个参数指出是注册还是注销当前的进程,其状态分别为: RSP_SIMPLE_SERVICE和RSP_UNREGISTER_SERVICE。
黑软一般是在程序启动初始化时首先从动态连接库中将RegisterServiceProcess()函数加载到内存,然后再通过该函数将程序从任务列表中隐藏://从中加载RegisterServiceProcess()HMODULE m_hKernel=::GetModuleHandle(“”);RSP m_rsp=(RSP)::GetProcAddress(m_hKernel,“RegisterServiceProcess”);m_rsp(::GetCurrentProcessId(),1);//此时为隐藏,当第二个参数为0时显示另外,还有一部分黑软是通过ShowWindowAsync()函数启动一个新的线程来显示一个新窗口的。
该函数的原形为:BOOLShowWindowAsync(HWND hWnd,int nCmdShow);而黑软正是钻了该函数的第二个参数可以设置窗体显示状态的空子,在设置成SW_HIDE时就可以使目标窗体(黑软)从任务列表中隐藏。
以上就是Win9x下的黑客程序所具备的一些基本功能,在此基础上我们可以借助于其实现技巧来编写出一些诸如后台监控之类的实用程序。
并且可以通过对黑客类软件的隐藏机理的分析能使广大用户对此类黑软采取一些必要的措施,通过加强防范来使自己的损失防患于未然。
如何抵御针对Silverlight的路过式攻击?
Java和Silverlight之间有很多相似之处:它们都运行在沙箱中,默认情况下只有低权限,以限制对设备的文件系统和其他系统资源的访问。
也就是说,攻击者必须攻破沙箱才能实现攻击。
安全研究人员已经发现Fiesta、Nuclear、RIG和Angler等漏洞利用工具包现在包含针对Silverlight中漏洞的攻击,这些工具包在过去主要针对基于Java的漏洞利用。
这些攻击通常需要吸引用户到攻击者控制的网站,检查其设备是否已经安装了Silverlight,然后试图利用漏洞来感染受害者的系统。
这些路过式攻击也被用来利用其它浏览器插件中的漏洞。
令人沮丧的是,很多这些攻击利用的是供应商已经发出补丁的漏洞。
与往常一样,企业需要确保用户的操作系统和应用软件保持更新,并确保设备运行较旧版本不超过绝对必要的时间范围。
管理员应该为所有网络用户配置Silverlight自动更新,防止用户更改更新设置。
如果Silverlight在你的企业并不是必不可少的因素,你应该禁止使用该插件。
在攻击者能够利用Silverlight漏洞之前,攻击者需要诱骗用户访问包含其攻击代码的网页,这通常是通过让用户点击邮件中的链接或者即时消息来实现。
企业必须教导用户不要点击未知来源的链接;这仍然是安全意识培训中非常重要的方面。
此外,另一种诱骗用户到恶意网页的攻击技术是恶意广告,即感染合法在线广告网络。
保持更新端点反恶意软件应该是企业分层安全战略的重要组成部分,同时要注意的是,虽然很多反恶意软件供应商了解Java漏洞利用的原理,也知道如何利用启发式分析来发现它们,但基于Silverlight的漏洞利用仍然相对较新。
不过,在Silverlight漏洞利用曝光后,修复补丁应该很快会出现。
具有动态URL过滤的Web安全网关也可以帮助阻止对很多新的快速变化恶意网站的意外访问。
有些企业在开发自己的Silverlight应用以供内部使用,这些企业应该确保其开发人员完全了解该应用与其他应用和资源交互的安全隐患,例如本地即时消息或HTML Bridge——管理应用和HTML页面之间的调用。
Silverlight应用加载的任何组件都可能是恶意的,因此,企业应该确保应用只能加载受信任的组件。
总目标应该是尽可能地保持该应用的隔离。
攻击者还将继续利用Silverlight,因为它为攻击者开辟了另一个攻击向量,这同时也是企业还没有做好充分准备的攻击向量。
有针对性的攻击可能瞄准正在旅途中使用企业笔记本观看Netflix的高管,这是企业需要考虑的情况。
管理员应该检查Silverlight是否是必要的插件;如果是,请确保相关人员、流程和技术的安全使用。
黑客攻击的步骤及原理
黑客入侵常用的攻击手法1. 利用系统漏洞进行攻击这是一种最普通的攻击手法,任何一种软件、一种操作系统都有它的漏洞,因而利用操作系统本身的漏洞来入侵、攻击网站也成为了一种最普遍的攻击手法,一方面由于网络安全管理员安全意识低下,没有及时对系统漏洞进行修补或选用默认安装的方式,从而被入侵者攻击得逞;另一方面由于系统漏洞很容易被初学者所掌握。
由于服务器在初次安装完成后,都存在着重大安全隐患,正如米特尼克所说,他可以进入世界任何一台默认安装的服务器。
不光是米特尼克能进入任何一台默认安装的服务器,任何一个稍懂计算机漏洞的人都可以做到。
2. 通过电子邮件进行攻击这属于一种简单的攻击方法,一般有3种情况。
第1种情况:攻击者给受害人发送大量的垃圾信件,导致受害人信箱的容量被完全占用,从而停止正常的收发邮件;第2种情况:非法使用受害服务器的电子邮件服务功能,向第三方发送垃圾邮件,为自己做广告或是宣传产品等,这样就使受害服务器负荷;第3种情况:一般公司的服务器可能把邮件服务器和Web服务器都放在一起,攻击者可以向该服务器发送大量的垃圾邮件,这些邮件可能都塞在一个邮件队列中或者就是坏邮件队列中,直到邮箱被撑破或者把硬盘塞满。
这样,就实现了攻击者的攻击目的。
3. 破解攻击破解攻击是网上攻击最常用的方法,入侵者通过系统常用服务或对网络通信进行监听来搜集账号,当找到主机上的有效账号后,就采用字典穷举法进行攻击,或者他们通过各种方法获取PASSWORD文件,然后用口令猜测,程序破译用户的账号和密码。
4. 后门程序攻击后门程序攻击是指入侵者躲过日志、使自己重返被入侵系统的技术。
后门程序的种类很多,常见的有:调试后门程序、管理后门程序、恶意后门程序、服务后门程序、文件系统后门程序、内核后门程序等。
特洛伊木马就是一种后门程序,伪造合法的程序,偷偷侵入用户系统从而获得系统的控制权。
它提供某些功能作为诱饵,当目标计算机启动时木马程序随之启动,然后在某一特定的端口监听,通过监听端口收到命令后,木马程序会根据命令在目标计算机上执行一些操作,如传送或删除文件,窃取口令、重新启动计算机等。
5. 拒绝服务攻击拒绝服务攻击是入侵者的攻击方法,因为在入侵目标服务器无法得逞时,可以利用拒绝服务攻击使服务器或网络瘫痪。
通过发送大量合法请求,进行恶意攻击导致服务器资源耗尽,不能对正常的服务请求做出响应。
可以说拒绝服务攻击是入侵者的终极手法。
6. 缓冲区溢出攻击溢出攻击可以说是入侵者的最爱,是被入侵者使用最多的攻击漏洞。
因为它是一个非常具有危险性的漏洞,造成溢出后一般可以获取一个Shell,从而计算机就被入侵者完全控制。
接下来认识一下缓冲区溢出攻击。
溢出区是内存中存放数据的地方,在程序试图将数据放到计算机内存中的某一个地方时,因为没有足够的空间就会发生缓冲区溢出,而人为溢出则是攻击者编写一个超出溢出区长度的字符串,然后植入缓冲区,这样就可能导致两种结果。
一是过长的字符串覆盖了相邻的存储单元引起程序运行错误,有时可能导致系统崩溃;另一方面是,通过把字符串植入缓冲区,从而获得系统权限,可以执行任意指令。
Microsoft的Windows NT溢出漏洞最多,比如htr、idq、printer、asp等。