研究人员利用恶意JPEG图片入侵企业内网-RSA2015 (研究人员利用微小海洋生物的化石)

教程大全 2025-07-09 05:06:38 浏览

安全研究人员Marcus Murray在正在旧金山举行的RSA大会上公布了一种利用恶意JPEG图片入侵企业网络内部Windows 服务器 的新方法。

攻击流程及漏洞分析

最近,安全专家兼渗透测试员Marcus Murray发现了一种利用恶意JPEG图片来攻击Windows服务器的新方法,利用该方法还可以在目标网络中进行特权提升。几天前,在旧金山举行的RSA大会上(FreeBuf相关报道),该Marcus现场展示了攻击流程,他利用一个恶意JPEG图片攻击美国某政府机构的服务器,该服务器上运行着一个含有漏洞的网站,并且网站开启了图片上传服务。

Murray将活跃内容注入到JPEG图片的一个属性字段中。一旦成功破坏目标系统,他就可以提升权限并攻击网络中的域控制器。如果成功攻陷了域控制器,那么攻击者就取得了整个企业网络的控制权。例如,攻击者可以安装任何恶意软件来监视系统或窃取敏感数据。

在测试过程中,研究人员利用这种技术上传一个远程访问木马(RAT),该木马基于流行渗透测试工具Metasploit开发。此外,他还利用Windows服务器上运行的其他工具和编译器来完成攻击测试。

Murray解释道:

“我将试着攻击他们的web服务器,然后获取他们的资源文件,最后攻击域控制器。即使在复杂的环境中,控制了域控制器通常代表你已经掌握了那家公司的整个基础设施。这种说法是成立的,因为他们通常会使用Windows客户端来连接公司的linux服务器。从这个角度(获得了域控制器的控制权之后)来说,我们可以做任何事,例如,可以上传域管理工具并像管理自己的网络一样管理它。”

如果客户端缺少必要的输入验证,那么就可以使用这种技术进行攻击。脆弱的上传门户使得攻击者只需将文件扩展名修改为.jpg,就能上传恶意可执行内容。包括Murray攻击的那台服务器在内,这些存在漏洞的服务器并不是通过文件扩展名类型来验证用户提交的图片,这意味着一旦上传成功并进行预览,那么文件就会显示之前插入活跃内容字段的文本内容,而并非是预想的图像。

立即观看POC视频:


RSA2015

学网络工程师最基本学的什么?有什么书推荐?来高手~!

A01 公共课程模块 1、计算机的组成、工作原理、系统的安装、常见硬件故障的检测与排除。 2、行业硬件知识:本行业的常用硬件设备、办公常用设备的应用。 3、基本操作、办公软件的基本应用、互联网的基本应用。 4、基础专业英语:满足相关软件常用命令和操作的学习。 36 2B03 专业基础课程模块 1、网络的基本原理、小型局域网的组建、调试和初级维护2、电信宽带共享和智能楼宇宽带上网技术。 C06 专业课程模块 1、Windows网络管理和网络操作系统2、网络工程设计方案及招/投标方案3、Linux/UNIX系统4、网络数据库5、CISCO路由器设置与维护6、CISCO高级网络管理技术7、基本素质。 390 22D06 增值专业技术模块1、网页的设计与制作2、ASP动态网站技术。 E06 实践课程模块 设置10种典型网络故障,安排学生结合已掌握的技术进行实战排除。 。 穿插

网络安全涉及的内容有哪些?

为了保证企业信息的安全性,企业CIMS网至少应该采取以下几项安全措施:(1)数据加密/解密 数据加密的目的是为了隐蔽和保护具有一定密级的信息,既可以用于信息存储,也可以用于信息传输,使其不被非授权方识别。 数据解密则是指将被加密的信息还原。 通常,用于信息加密和解密的参数,分别称之为加密密钥和解密密钥。 对信息进行加密/解密有两种体制,一种是单密钥体制或对称加密体制(如DES),另一种是双密钥体制或不对称加密体制(如RSA)。 在单密钥体制中,加密密钥和解密密钥相同。 系统的保密性主要取决于密钥的安全性。 双密钥体制又称为公开密钥体制,采用双密钥体制的每个用户都有一对选定的密钥,一个是公开的(可由所有人获取),另一个是秘密的(仅由密钥的拥有者知道)。 公开密钥体制的主要特点是将加密和解密能力分开,因而可以实现多个用户加密的信息只能由一个用户解读,或者实现一个用户加密的消息可以由多个用户解读。 数据加密/解密技术是所有安全技术的基础。 (2)数字签名 数字签名机制提供了一种鉴别方法,以解决伪造、抵赖、冒充等问题。 它与手写签名不同,手写签名反映某个人的个性特征是不变的;而数字签名则随被签的对象而变化,数字签名与被签对象是不可分割的。 数字签名一般采用不对称加密技术(如RSA): 通过对被签对象(称为明文)进行某种变换(如文摘),得到一个值,发送者使用自己的秘密密钥对该值进行加密运算,形成签名并附在明文之后传递给接收者;接收者使用发送者的公开密钥对签名进行解密运算,同时对明文实施相同的变换,如其值和解密结果一致,则签名有效,证明本文确实由对应的发送者发送。 当然,签名也可以采用其它的方式,用于证实接收者确实收到了某份报文。 (3)身份认证 身份认证也称身份鉴别,其目的是鉴别通信伙伴的身份,或者在对方声称自己的身份之后,能够进行验证。 身份认证通常需要加密技术、密钥管理技术、数字签名技术,以及可信机构(鉴别服务站)的支持。 可以支持身份认证的协议很多,如Needham-schroedar鉴别协议、X.509鉴别协议、Kerberos鉴别协议等。 实施身份认证的基本思路是直接采用不对称加密体制,由称为鉴别服务站的可信机构负责用户的密钥分配和管理,通信伙伴通过声明各自拥有的秘密密钥来证明自己的身份。 (4)访问控制 访问控制的目的是保证网络资源不被未授权地访问和使用。 资源访问控制通常采用网络资源矩阵来定义用户对资源的访问权限;对于信息资源,还可以直接利用各种系统(如数据库管理系统)内在的访问控制能力,为不同的用户定义不同的访问权限,有利于信息的有序控制。 同样,设备的使用也属于访问控制的范畴,网络中心,尤其是主机房应当加强管理,严禁外人进入。 对于跨网的访问控制,签证(Visas)和防火墙是企业CIMS网络建设中可选择的较好技术。 (5)防病毒系统 计算机病毒通常是一段程序或一组指令,其目的是要破坏用户的计算机系统。 因此,企业CIMS网必须加强防病毒措施,如安装防病毒卡、驻留防毒软件和定期清毒等,以避免不必要的损失。 需要指出的是,病毒软件也在不断地升级,因此应当注意防毒/杀毒软件的更新换代。 (6)加强人员管理 要保证企业CIMS网络的安全性,除了技术上的措施外,人的因素也很重要,因为人是各种安全技术的实施者。 在CIMS网中,不管所采用的安全技术多么先进,如果人为的泄密或破坏,那么再先进的安全技术也是徒劳的。 因此,在一个CIMS企业中,必须制定安全规则,加强人员管理,避免权力过度集中。 这样,才能确保CIMS网的安全。

在360里升级了Microsoft .NET Framework,升级到3.5,不过发现系统有时候会卡卡的以前没有这样的情况

这是您的硬件不够好导致的,我也发生过这种情况,建议你用360卸载。 这不会对你的程序产生影响,只是如果您从事编程工作会偶尔需要。 如果卸载后您编程的工作受到影响,可以装个Visual basic中文企业版即可 顺便把你要查的给您看看 Microsoft Framework安全概述本文概述了微软 Framework安全结构,包括基于证据的安全,基于角色的安全,认证和授权的概念,以及隔离存储,密码加密和扩展性。 本文还概述了 Framework安全策略带给开发人员,管理员和最终用户的主要好处。 本文假定读者已经基本熟悉了 Framework通用语言运行时和管理代码的概念。 引言目前的安全问题在今天的软件环境中,应用程序的来源很多,它们执行很多任务。 对应用程序代码的信任是一个主要需求,因为我们谁也不想软件或信息遭到破坏。 给予许可的安全策略不会允许对敏感信息的不适当的访问,或将本地机器暴露给恶意的程序或甚至是有平常错误的代码。 过去,安全结构提供了基于用户帐号的隔离和访问控制--在这些限制内给予代码完全访问权,并假定由特定用户可运行的代码具有相同的信任度。 不幸的是,如果所有程序都代表某用户运行,根据用户对代码的隔离对于保护一个程序不被其它用户使用是不够的。 另一种情况,不能被完全信任的代码经常被转移到沙箱模型中执行,在此代码运行于隔离环境,而不会访问大部分的服务。 对今天应用程序的成功的安全解决方案必须能强化两个安全模型间的平衡。 它必须提供对资源的访问,以便以完成有用的工作,它需要对应用程序的安全性作细致的控制以确保代码被识别,检测,并给予合适的安全级别。 Framework就提供了一个这样的安全模型。 Microsoft Framework安全解决方案 Framework安全解决方案基于管理代码的概念,以及由通用语言运行时(CLR)加强的安全规则。 大部分管理代码需要进行验证以确保类型安全及预先定义好的其它属性的行为的安全。 例如,在验证的代码中,声明为接收4字节值的访问将拒绝提供8字节参数的调用,因为不是类型安全的。 验证过程还确保了执行流只传送到已知的位置,如方法入口点--这个过程去除了跳转到任意位置执行的能力。 验证将阻止不是类型安全的代码执行,在它们引起破坏前捕获很多常见的编程错误。 通常的弱点--如缓存溢出,对任意内存或没有初始化的内存的读取,对控件的随意传送--都不再可能出现。 这将使最终用户受益,因为在他们执行代码前对其进行检查。 这也有益于开发人员,他们会发现很多常见错误(过去一直在困绕前开发)现在可以查明,并能阻止它们引起破坏。 CLR也能使非管理代码运行,但非管理代码不能从这些安全措施中受益。 特殊的许可与对非管理代码的调用能力相关,一个强大的安全策略能确保这些许可被恰当地给予。 经过很长时间后,非管理代码到管理代码的移植将减少对非管理代码的调用频率。 微软 Framework安全机制的构件基于证据的安全 Framework引入了基于证据的安全的概念。 在本质上,它是对安全策略暴露出来问题的解答:· 组合从哪个站点获得?组合是 Framework应用程序的构件。 它们组成了部署,版本控制,重用,激活作用域,安全认证的基本单元。 应用程序的组合是从网站上下载到客户端的。 · 组合是从哪个URL获得的?安全策略需要明确的地址,而组合是从这个地址下载的。 · 组合是从哪个区获得的?区是基于代码的位置,对安全标准,如 Internet, intranet和本机等等,的描述。 · 组合的强名(strong name)是什么?强名是由组合的创建者提供了密码强化后的标识符。 尽管它没有提供对创建者的任何证明,但它唯一标识了组合,确保了组合没有被破坏过。 根据对这些问题的回答,及其它证据,安全策略可以对赋予组合垢合适许可进行计算。 从多种来源可以得到证据,包括CLR,浏览器,微软,及外壳--这依赖于代码的来源。 策略驱动的信任模型使用代码证据当组合被调入内存进,CLR策略系统通过收集组合的证据并在策略环境中对证据进行计算,从而决定赋予组合什么样的许可权。 CLR策略系统然后根据评估过的证据和组合作出的许可请求给予组合一组许可。 只有在组合被给予了一组最少的许可后,或组合根本不需要许可权,组合的创建者才能知道组合正确运行。 通过一个或多个对特定许可的请求,这样的附加需求可以被传送室策略系统。 根据许可请求的类型,策略系统可以进一步限制给予组合的许可(删除不必要的许可)或甚至拒绝将组合装入内存(如果运行组合所需的最小许可没有被策略给予)。 在不存在任何许可请求的情况下,组合永远不会被给予多于策略系统将会给予的许可权限,请求只是进一步限制得到的许可。 安全策略包含了许多代码组,这些组包含了根据证据应给予的许可权。 代码组描述的许可可提供给从特定的安全区域获得的组合,或提供给由特定发行商签名过的组合,等等。 尽管随CLR发行了一组默认的代码组(及相关许可),但管理员可以对这些CLR安全的进行定置,以适合他们的特殊需求。 记住,通过定义与证据相关的代码组,任何东西都可以作为证据提交,只要安全策略可以使用它。 创建许可的的过程涉及到对证据的评估,以确定代码组适用于哪个等级:企业,机器,和用户。 策略按上面顺序对这三个等级进行评估,然后创建交插了三个等级的许可设置。 管理员可以将任何一个策略等级标记为终结(final),这样做应付阻止在其它等级上对策略做进一步评估。 例如,管理员可以在机器级别上对组合终止策略,这样就会阻止用户级策略对该组合的应用。 一旦策略完成,许可的最初设置也就创建了。 组合通过从三个方面做出特定的请求可以优化这些许可:· 第一方面是指定为了使组合运行它必须拥有的最小许可设置。 如果这些许可没有给予,那么组合将不同调入到内存,并抛出例外。 · 第二,可以指定一组可选的许可。 尽管组合希望存在这些许可,但如果无法获得这些许可,它仍可以调入到内存。 · 最后,行为特别好的组合实际上会拒绝它们所不需的有风险的许可。 这三个优化选项是调入时作为声明语句实现的。 在运行时,许可是根据代码的执行计算的。 右侧的图总结了这个过程的发生顺序。 组合A3将它的证据和来自主机的证据提供给策略评估器。 策略评估器在创建许可时也要考虑从组合得到的许可请求,G3。 组合A3由组合A2调用,而A2又是由组合A1调用的。 当组合A3执行一个引发安全检查的操作时,A2和A1获得的许可同样也要进行检查,以确保它们拥有A3所请求的许可权限。 在这个过程中,此过程称为堆栈遍历(walking),堆栈中每个组合的许可权限都要进行检查以确定所给予的权限设置是否包含安全检查所需要的许可。 如果堆栈中的每个组合被给予了安全检查所需要的许可,调用将成功。 如何任何组合没有给予所需要的许可,堆栈遍历过程失败,安全例外将被抛出。 图 1.主机和组合为策略评估器提供证据,评估器使用安全策略和许可请求确定组合的许可权限。 应用程序中不同运行组件的许可权限然后用于作出授权决定。 代码访问安全堆栈遍历可以保护代码不受攻击。 在精通的攻击中,恶意代码欺骗受信任代码执行它独自不能运行的操作--有效地利用代码的许可权限实现恶意的目的。 对这类攻击,开发人员很难进行防备--但堆栈遍历确保了如果涉及到了低级信任等级的代码,有效许可将被减少到信任等级最低的代码具有的许可。 结果,代码将从源处获得不同的信任等级,并在适合于特定的代码执行环境的限制下运行。 Framework调用的自由安全性一些活动,如读写文件,显示对话框,读写环境变量,可以通过包含在框架安全构架中的 Framework方法实现。 这就使 Framework能根据安全策略允许或不允许一个操作,而不需要程序员做额外的工作。 尽管暴露了保护资源的管理类的创建者在他们的库中做了明确的安全需求,使用 Framework类库访问受保护资源的开发人员可以自由地利用代码访问安全系统;他们不必作出明确的安全调用。 管理员可以通过决定给予哪些许可来优化安全策略,然后,依靠 Framework处理所有的安全操作。 代码访问安全能阻止大部分的恶意攻击,对代码的验证减少了缓存溢出和其它会导致安全攻击的不期望的行为。 因此,应用程序和组件生来就受到了保护,它们免于大多数安全问题的冲击,而这些安全问题一直困绕着本地代码的实现。 基于角色的安全有时根据已认证的身份或根据与代码执行上下文相关的角色作出认证决定是合适的。 例如,金融和企业软件可以通过评估角色信息的企业逻辑加强策略。 根据作出请求的用户角色可以对金融交易的数据进行限制。 出纳被允许可以处理一定金额的请求,而多于该金额的所有工作需要监督人的角色来处理。 身份可以映射到登录系统的用户,或由应用程序定义。 相应的原则封装了身份和其它相关的角色信息(例如,但并不限于此,用户的组由操作系统定义)。 认证和授权认证是一个过程,它接收来自用户的证书,并对证书的授权进行确认。 如果证书是有效的,那么用户就可以说他拥有已认证的身份。 而授权的过程是:确定认证用户是否能够访问给定的资源。 认证可通过系统或企业逻辑来完成,通过某个API它是或获得的。 认证API是完全可扩展的,因此开发人员根据需要使用自己的企业逻辑。 开发人员可以对他们的认证需求进行编码,也可以修改底层的认证方法而无需对他们的代码作太大变化。 除了微软Windows?操作系统身份认证外,还有的认证方法包括基本HTTP,摘要和 Kerberos,以及微软Passport和基于窗体的认证。 这些认证方法已经完全集成到中了。 在窗体认证中,用户提供证书,并提交窗体。 如果应用程序簦别请求,系统发送一个cookie ,该cookie以某种形式包含包含了证书或包含重新获得身份的关键字。 接下来发送的请求在头中包含了cookie,处理程序通过应用程序所期望的任何有效方法对这些请求认证和授权。 如果请求没有经过认证,HTTP客户端将用于把请求发送到认证窗体,在那里用户可能提供信任证书。 窗体认证有时用于个性化--为已知用户的内容进行定置。 在一些情况下,身份是问题所在而不是认证,因此用户的个性化信息可以简单地通过访问用户或获得。 授权的目的是确定作出请求的身份是否被给予了对给定资源的访问权。 提供了两种类型的授权服务:文件授权和URL授权。 文件授权根据正在作用的方法和作出请求的身份决定用户使用于哪个访问控制列表。 URL授权是URI名称空间和不同用户或角色间的逻辑映射。 隔离存储 Framework提供了一个特殊的功能,隔离存储,用于存储数据,甚至是当不允许对文件进行访问时--例如,当从Internet下载了一个管理控件,并运行它,为它提供了有限的许可权但没有权力读写文件。 隔离存储是一组新的用于支持的用于本地存储的类型和方法。 在本质上,每个组合可以访问磁盘上一断被隔离的存储空间。 它不允许访问其它数据,隔离存储只对为它创建的组合有效。 隔离存储也可被应用程序用于保存活动记录,保存设置,或者将状态数据保存到磁盘上以备将来之用。 因为隔离存储的位置是预先决定好的,所以隔离存储为指定唯一存储空间提供了一种方便的方式,而不需要决定文件路径。 从本地企业局域网获得的代码具有相似的限制,但更少,它可以访问大限额的隔离存储。 最后,从受限站点区域(不信任站点)来的代码没有对隔离存储的访问权。 加密 Framework提供了一组加密对象,它们支持加密算法、数字签名、散列、生成随机数,是通过众所周知的运算法则实现的,如RSA, DSA, Rijndael/AES, Triple DES, DES, 和 RC2, 以及MD5, SHA1, SHA-256, SHA-384 和 SHA-512散列算法。 同时还支持在IETF和W3C开发的XML数字签名规范。 Framework使用加密对象支持内部服务。 这些对象还作为管理代码提供给需要加密支持的开发人员。 如何指定安全性?如果要对组合运行时的行为进行修改,根据程序员的需要,可以作出声明式安全或强迫式安全的修改。 声明式安全声明式安全使程序员可以直接在组合代码的元数据中为组合指定安全需求。 许可请求和所有其它形式的声明式安全是在代码中是作为定置属性指定的。 类,属性和方法的注释用于优化许可。 例如,声明式安全可用于类的调用者在调用方法前检查调用者是否被已知地行商签名过,或有一个特定的强名。 由于声明属性是组合元数据的一部分,所以组合的安全需求易于辨别。 可以使用工具对组合进行扫描,以发现哪些方法需要某些许可,哪些方法断言了某些许可。 当被请求的活动和许可在编译时是知道时,声明式检查可作为选择的解决方案之一。 例如,如果方法总是检查对C:\temp的写访问许可,那么许可检查就会从声明中得到好处。 另一方面,如果被请求的具有访问权的位置发生了变化,那么强迫式安全也许是一个比较好的解决方案。 强迫式安全强迫式安全直接在代码中实现。 程序员通过程序采取安全活动,并且根据安全堆栈的状态决定是给予还是拒绝许可。 例如,当一个方法请求访问一个特定的文件时,如果调用者(或方法的任何一个调用者)没有被给予必需的许可权限,那么请求失败。 因为强迫式安全是通过程序实现的,所以满足了动态需求。 如果你需要对一个特定文件的访问许可,但该许可还要根据其它信息发生变化,那么,强迫式安全就是可选的解决方案。 总结 Framework安全迎合了这种事实:软件向多样化的移动组件发发展,并根据这种事实提供保护。 在一个细化的、可扩展的策略和许可系统下,用户能够运行功能强大的代码,而同时减少相关的风险。 在没有运行时对用户作出信任决定时,管理员可以在各个级别创建强壮的安全策略。 策略是完全可定置的。 开发人员能够集中解决应用程序逻辑,而不用关心核心的安全问题(它由CLR透明地处理)。 然而,开发人员可以在任何时候扩展安全模型 如果好用记着给我点分哦!

本文版权声明本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请联系本站客服,一经查实,本站将立刻删除。

发表评论

热门推荐