API让天下没有难做的生意,黑客也是这么认为的。在企业数字化转型如火如荼的今天,API已经远远超出了技术范畴,互联网商业创新和传统企业数字化转型都离不开API经济或者API战略。API连接的不仅仅是系统和数据,还包括企业职能部门、客户和合作伙伴,甚至整个商业生态。与此同时,日益严峻的安全威胁,使得API正在成为网络安全的下一个前沿阵地。
API使一切都变得更加容易,从数据共享到系统连接到关键功能的交付,但API也使攻击者(包括恶意机器人)更容易进行攻击。API的应用激增,正刺激网络犯罪分子越来越多地利用API安全漏洞进行欺诈和窃取数据。

以下,我们将探讨容易被黑客利用的五个API漏洞,并分享安全专家们给出的缓解和强化建议。
一、太容易被发现
假如你是黑客,准备攻击一家企业,那么首先要做的第一件事就是识别尽可能多的API。我首先按常规方式使用目标应用程序,在浏览器中打开Web应用程序或者在手机端下载安装移动应用程序,然后使用拦截代理监视通信。
拦截代理能够捕获浏览器或移动应用程序对后端Web 服务器 发出的所有请求,从而使攻击者可以对所有可用的API端点进行分类。例如,大多数API都将API/V1/login作为身份验证端点。
如果目标也是移动应用程序,则将应用程序包拆开,并查看应用程序内部可用的API调用。考虑到所有可能的活动,攻击者可以搜索无法正确保护用户数据的常见配置错误或API。
最后,攻击者寻找API文档。一些组织为第三方发布API文档,但为所有用户使用相同的API端点。
有了一个不错的端点清单,攻击者就可以测试标准用户行为和异常行为测试,可以通过两种方法找到有趣的漏洞。
解决方法:为了使攻击者更加难以发现API,请确保通过仅允许有效用户访问的权限管理来控制对API文档的访问。虽然将证书固定在移动应用程序上并不能完全隐藏API端点,并且也不完美,但确实给攻击增加了额外的步骤。对Web服务器的API请求应尽可能地被混淆和控制。
二、过于详细的错误信息
最近,攻击者接管账户的尝试在不断增加。错误消息过于“详细周到”,往往使此类攻击更加容易。冗长的错误消息会引导攻击者了解他们需要进行哪些更改才能伪装成合法请求。API专为低负载下的高速交易而设计,使攻击者可以使用高性能系统找出有效账户,然后尝试登录并更改密码进行利用。
解决方法:不要拿用户体验作为挡箭牌,有些看起来有利于用户体验的做法,未必有利于安全性。系统返回的错误信息不应该包括错误的用户名或错误的密码,甚至不能包含错误信息的类别(用户名还是密码错误)。用于查询数据的错误消息也是如此,如果查询/搜索格式不正确或由于某种原因而无法执行,则应该返回最“没有营养”的错误信息:“糟糕,哪里出错了”。
三、参数太多
当攻击者通过API调用遍历攻击系统时,他们必须弄清楚可以发送些什么来获取数据。攻击者“信奉”这样的一个事实:即越复杂的系统,出错的地方越多。攻击者识别出API后,他们将对参数进行分类,然后尝试访问管理员(垂直特权升级)或另一个用户(水平特权升级)的数据以收集其他数据。通常,太多不必要的参数被暴露给了用户。
在最近的研究项目中,我们对目标服务的API调用返回了大量数据,很多都是不必要的数据信息,例如付款网关的处理器密钥和可用的折扣信息等。这些“奖励信息”使攻击者可以更好地理解这些API调用的上下文和语法。攻击者不需要太多的想象力就能弄清楚下一步该怎么做。这些额外的参数为攻击者提供了丰富的攻击数据集。
解决方法:如果将用户看到的内容范围限制为必需内容,限制关键数据的传输,并使数据查询结构未知,那么攻击者就很难对他们知道的参数进行暴力破解。
四、数据过多
同样地,由于可用的参数太多,收集数据将成为显而易见的下一步行动。许多企业的系统支持匿名连接,并且倾向泄漏普通用户不需要的额外数据。另外,许多企业倾向于存储可以直接访问的数据。
安全专业人员正在努力应对API请求经常暴露数据存储位置的挑战。例如,当我查看安全摄像机中的视频时,可以看到该信息来自Amazon S3存储库。通常,那些S3存储库的保护并不周全,任何人的数据都可以被检索。
另一个常见的数据挑战是数据过载,很多企业都像入冬前的花栗鼠,存储的数据量远远超出了需要。很多过期客户数据已经没有商业价值和保存价值,但是如果发生泄露,则会给企业带来巨大的品牌和合规风险。
解决方法:对于存储用户数据的企业,不仅仅是PII或PHI,都必须进行彻底的数据审查。在检查了存储的数据之后,应制定数据访问规则并进行测试。确保能够匿名访问的数据不涉及任何敏感数据。
五、安全设计太少
多年以来,应用程序设计总是优先考虑功能性和可用性,很少考虑安全性。很多CISO表示,API安全性尤其不被重视,甚至完全被排除在安全设计流程之外。通常都是开发人员开发和部署完成后,在API投入生产且频繁遭受攻击后才亡羊补牢查找问题。安全性(包括API安全性)需要成为产品设计的一部分,并且应作为首要考虑因素之一加以实现,而不是事后填坑。
解决方法:审查应用程序的安全体系结构是迈向安全系统的重要第一步。请记住,API使攻击者能更高效地攻击或利用您的系统。设计安全性的目标是让API成为用户而非攻击者的高效工具。
以上只列举了一些常见的API漏洞,总之,最重要的是在软件开发生命周期的早期阶段就讨论安全问题。微小的改进就可以带来巨大的好处,避免API遭攻击造成的巨大财务和品牌损失。
戳这里,看该作者更多好文
怎样防止自己的计算机被他人或黑客远程控制
这个问题其实是个很广泛的问题,我感觉应该做到如下几点: 1.系统补丁更新: 很多的系统漏洞往往可以直接获得管理权限。 安装个360安全卫士(360安全卫士下载:应该是目前最好的解决方案。 2.第三方软件漏洞: 你安装的常用软件,往往会存在一些漏洞,导致系统被攻击。 最现实的例子是:(1)adobe flash player执行恶意代码(2)暴风影音出现oday(3)好像是去年(我也忘记是去年还是前年了)qq爆出的场景漏洞等等 3.浏览器漏洞: 如2(1)中提到的,仅仅是插件造成的,其实更大的“市场”是IE浏览器的各种oday,直接导致浏览器下载恶意代码并执行。 建议不要使用ie6.0及其以前的浏览器,而ie7,ie8也不够安全。 如果您不在网上开店,做交易,那么建议使用火狐浏览器(下载地址:)和opera,如果网上交易,可以使用遨游(下载地址:)或者360安全浏览器。 4.安装好杀毒软件和防火墙: 杀毒软件推荐免费的小A(avast!下载,教程和注册码:)和360免费杀毒。 防火墙主要防止黑客或者后门程序连接我们的计算机,也防止我们计算机上的恶意程序向外界传输敏感信息。 更多电脑问题,可以到下面的地址去提问,我们会耐心的为您解决:
木马什么意思
它是一种基于远程控制的黑客工具,具有隐蔽性和非授权性的特点。 所谓隐蔽性是指木马的设计者为了防止木马被发现,会采用多种手段隐藏木马,这样服务端即使发现感染了木马,由于不能确定其具体位置,往往只能望“马”兴叹。 所谓非授权性是指一旦控制端与服务端连接后,控制端将享有服务端的大部分操作权限,包括修改文件,修改注册表,控制鼠标,键盘等等,而这些权力并不是服务端赋予的,而是通过木马程序窃取的。 从木马的发展来看,基本上可以分为两个阶段。 最初网络还处于以UNIX平台为主的时期,木马就产生了,当时的木马程序的功能相对简单,往往是将一段程序嵌入到系统文件中,用跳转指令来执行一些木马的功能,在这个时期木马的设计者和使用者大都是些技术人员,必须具备相当的网络和编程知识。 而后随着WINDOWS平台的日益普及,一些基于图形操作的木马程序出现了,用户界面的改善,使使用者不用懂太多的专业知识就可以熟练的操作木马,相对的木马入侵事件也频繁出现,而且由于这个时期木马的功能已日趋完善,因此对服务端的破坏也更大了。 所以所木马发展到今天,已经无所不用其极,一旦被木马控制,你的电脑将毫无秘密可言。 参考资料:-------------------------------------------------------------------------------- DLL 木马揭秘 相信经常玩木马的朋友们都会知道一些木马的特性,也会有自己最喜爱的木马,不过,很多朋友依然不知道近年兴起的“DLL木马”为何物。 什么是“DLL木马”呢?它与一般的木马有什么不同? 一、从DLL技术说起 要了解DLL木马,就必须知道这个“DLL”是什么意思,所以,让我们追溯到几年前,DOS系统大行其道的日子里。 在那时候,写程序是一件繁琐的事情,因为每个程序的代码都是独立的,有时候为了实现一个功能,就要为此写很多代码,后来随着编程技术发展,程序员们把很多常用的代码集合(通用代码)放进一个独立的文件里,并把这个文件称为“库”(Library),在写程序的时候,把这个库文件加入编译器,就能使用这个库包含的所有功能而不必自己再去写一大堆代码,这个技术被称为“静态链接”(Static Link)。 静态链接技术让劳累的程序员松了口气,一切似乎都很美好。 可是事实证明,美好的事物不会存在太久,因为静态链接就像一个粗鲁的推销员,不管你想不想要宣传单,他都全部塞到你的手上来。 写一个程序只想用到一个库文件包含的某个图形效果,就因为这个,你不得不把这个库文件携带的所有的图形效果都加入程序,留着它们当花瓶摆设,这倒没什么重要,可是这些花瓶却把道路都阻塞了——静态链接技术让最终的程序成了大块头,因为编译器把整个库文件也算进去了。 时代在发展,静态链接技术由于天生的弊端,不能满足程序员的愿望,人们开始寻找一种更好的方法来解决代码重复的难题。 后来,Windows系统出现了,时代的分水岭终于出现。 Windows系统使用一种新的链接技术,这种被称为“动态链接”(Dynamic Link)的新技术同样也是使用库文件,微软称它们为“动态链接库”——Dynamic Link Library,DLL的名字就是这样来的。 动态链接本身和静态链接没什么区别,也是把通用代码写进一些独立文件里,但是在编译方面,微软绕了个圈子,并没有采取把库文件加进程序的方法,而是把库文件做成已经编译好的程序文件,给它们开个交换数据的接口,程序员写程序的时候,一旦要使用某个库文件的一个功能函数,系统就把这个库文件调入内存,连接上这个程序占有的任务进程,然后执行程序要用的功能函数,并把结果返回给程序显示出来,在我们看来,就像是程序自己带有的功能一样。 完成需要的功能后,这个DLL停止运行,整个调用过程结束。 微软让这些库文件能被多个程序调用,实现了比较完美的共享,程序员无论要写什么程序,只要在代码里加入对相关DLL的调用声明就能使用它的全部功能。 最重要的是,DLL绝对不会让你多拿一个花瓶,你要什么它就给你什么,你不要的东西它才不会给你。 这样,写出来的程序就不能再携带一大堆垃圾了——绝对不会让你把吃剩的东西带回家,否则罚款,这是自助餐。 DLL技术的诞生,使编写程序变成一件简单的事情,Windows为我们提供了几千个函数接口,足以满足大多数程序员的需要。 而且,Windows系统自身就是由几千个DLL文件组成,这些DLL相互扶持,组成了强大的Windows系统。 如果Windows使用静态链接技术,它的体积会有多大?我不敢想。 二、应用程序接口API 上面我们对DLL技术做了个大概分析,在里面我提到了“接口”,这又是什么呢?因为DLL不能像静态库文件那样塞进程序里,所以,如何让程序知道实现功能的代码和文件成了问题,微软就为DLL技术做了标准规范,让一个DLL文件像奶酪一样开了许多小洞,每个洞口都注明里面存放的功能的名字,程序只要根据标准规范找到相关洞口就可以取得它要的美味了,这个洞口就是“应用程序接口”(AppliCation Programming Interface),每个DLL带的接口都不相同,尽最大可能的减少了代码的重复。 用Steven的一句话:API就是一个工具箱,你根据需要取出螺丝刀、扳手,用完后再把它们放回原处。 在Windows里,最基本的3个DLL文件是、、。 它们共同构成了基本的系统框架。 三、DLL与木马 DLL是编译好的代码,与一般程序没什么大差别,只是它不能独立运行,需要程序调用。 那么,DLL与木马能扯上什么关系呢?如果你学过编程并且写过DLL,就会发现,其实DLL的代码和其他程序几乎没什么两样,仅仅是接口和启动模式不同,只要改动一下代码入口,DLL就变成一个独立的程序了。 当然,DLL文件是没有程序逻辑的,这里并不是说DLL=EXE,不过,依然可以把DLL看做缺少了main入口的EXE,DLL带的各个功能函数可以看作一个程序的几个函数模块。 DLL木马就是把一个实现了木马功能的代码,加上一些特殊代码写成DLL文件,导出相关的API,在别人看来,这只是一个普通的DLL,但是这个DLL却携带了完整的木马功能,这就是DLL木马的概念。 也许有人会问,既然同样的代码就可以实现木马功能,那么直接做程序就可以,为什么还要多此一举写成DLL呢?这是为了隐藏,因为DLL运行时是直接挂在调用它的程序的进程里的,并不会另外产生进程,所以相对于传统EXE木马来说,它很难被查到。 四、DLL的运行 虽然DLL不能自己运行,可是Windows在加载DLL的时候,需要一个入口函数,就如同EXE的main一样,否则系统无法引用DLL。 所以根据编写规范,Windows必须查找并执行DLL里的一个函数DllMain作为加载DLL的依据,这个函数不作为API导出,而是内部函数。 DllMain函数使DLL得以保留在内存里,有的DLL里面没有DllMain函数,可是依然能使用,这是因为Windows在找不到DllMain的时候,会从其它运行库中找一个不做任何操作的缺省DllMain函数启动这个DLL使它能被载入,并不是说DLL可以放弃DllMain函数。 五、DLL木马技术分析 到了这里,您也许会想,既然DLL木马有那么多好处,以后写木马都采用DLL方式不就好了吗?话虽然是这么说没错,但是DLL木马并不是一些人想象的那么容易写的。 要写一个能用的DLL木马,你需要了解更多知识。 1.木马的主体 千万别把木马模块写得真的像个API库一样,这不是开发WINAPI。 DLL木马可以导出几个辅助函数,但是必须有一个过程负责主要执行代码,否则这个DLL只能是一堆零碎API函数,别提工作了。 如果涉及一些通用代码,可以在DLL里写一些内部函数,供自己的代码使用,而不是把所有代码都开放成接口,这样它自己本身都难调用了,更不可能发挥作用。 DLL木马的标准执行入口为DllMain,所以必须在DllMain里写好DLL木马运行的代码,或者指向DLL木马的执行模块。 2.动态嵌入技术 Windows中,每个进程都有自己的私有内存空间,别的进程是不允许对这个私人领地进行操作的,但是,实际上我们仍然可以利用种种方法进入并操作进程的私有内存,这就是动态嵌入,它是将自己的代码嵌入正在运行的进程中的技术。 动态嵌入有很多种,最常见的是钩子、API以及远程线程技术,现在的大多数DLL木马都采用远程线程技术把自己挂在一个正常系统进程中。 其实动态嵌入并不少见,罗技的MouseWare驱动就挂着每一个系统进程-_- 远程线程技术就是通过在另一个进程中创建远程线程(RemoteThread)的方法进入那个进程的内存地址空间。 在DLL木马的范畴里,这个技术也叫做“注入”,当载体在那个被注入的进程里创建了远程线程并命令它加载DLL时,木马就挂上去执行了,没有新进程产生,要想让木马停止惟有让挂接这个木马DLL的进程退出运行。 但是,很多时候我们只能束手无策——它和挂在一起了,你确定要关闭Windows吗? 3.木马的启动 有人也许会迫不及待的说,直接把这个DLL加入系统启动项目不就可以了。 答案是NO,前面说过,DLL不能独立运行,所以无法在启动项目里直接启动它。 要想让木马跑起来,就需要一个EXE使用动态嵌入技术让DLL搭上其他正常进程的车,让被嵌入的进程调用这个DLL的DllMain函数,激发木马运行,最后启动木马的EXE结束运行,木马启动完毕。 启动DLL木马的EXE是个重要角色,它被称为Loader,如果没有Loader,DLL木马就是破烂一堆,因此,一个算得上成熟的DLL木马会想办法保护它的Loader不会那么容易被毁灭。 记得狼狈为奸的故事吗?DLL木马就是爬在狼Loader上的狈。 Loader可以是多种多样的,Windows的也被一些DLL木马用来做了Loader,这种木马一般不带动态嵌入技术,它直接挂着rundll32进程运行,用rundll32的方法( [DLL名],[函数] [参数])像调用API一样去引用这个DLL的启动函数激发木马模块开始执行,即使你杀了rundll32,木马本体还是在的,一个最常见的例子就是3721中文实名,虽然它不是木马。 注册表的AppInit_DLLs键也被一些木马用来启动自己,如求职信病毒。 利用注册表启动,就是让系统执行DllMain来达到启动木马的目的。 因为它是kernel调入的,对这个DLL的稳定性有很大要求,稍有错误就会导致系统崩溃,所以很少看到这种木马。 有一些更复杂点的DLL木马通过启动,这种DLL木马必须写成NT-Service,入口函数是ServiceMain,一般很少见,但是这种木马的隐蔽性也不错,而且Loader有保障。 4.其它 到这里大家也应该对DLL木马有个了解了,是不是很想写一个?别急,不知道大家想过没有,既然DLL木马这么好,为什么到现在能找到的DLL木马寥寥无几?现在让我来泼冷水,最重要的原因只有一个:由于DLL木马挂着系统进程运行,如果它本身写得不好,例如没有防止运行错误的代码或者没有严格规范用户的输入,DLL就会出错崩溃。 别紧张,一般的EXE也是这样完蛋的,但是DLL崩溃会导致它挂着的程序跟着遭殃,别忘记它挂接的是系统进程哦,结局就是……惨不忍睹。 所以写一个能公布的DLL木马,在排错检查方面做的工作要比一般的EXE木马多,写得多了自己都烦躁…… 六、DLL木马的发现和查杀 经常看看启动项有没有多出莫名其妙的项目,这是Loader的所在,只要杀了狼,狈就不能再狂了。 而DLL木马本体比较难发现,需要你有一定编程知识和分析能力,在Loader里查找DLL名称,或者从进程里看多挂接了什么陌生的DLL,可是对新手来说……总之就是比较难啊比较难,所以,最简单的方法:杀毒软件和防火墙(不是万能药,切忌长期服用)。 还能窃取密码,最狠了
网络安全漏洞及解决方案都有哪些
1、TCP数据包问题:在特定版本的IOS中,存在内存泄漏漏洞,可导致DOS工具,美国CERT的一份安全警报如此写道。 2、IPv6路由数据帧头缺陷:IOS可能不能正确的处理IPv6(互联网协议第六版)数据包的特定格式的路由数据头,可能导致一个DOS攻击或者运行任何恶意代码。 IPv6是一套可以让我们在互联网上获得更多IP地址一套规范。 3、欺骗性的IP选项漏洞:这是一个IOS在处理具有特定的欺骗性的IP选项的IPv4数据包的时候存在的安全漏洞,据CERT说,它也可以导致DOS攻击或运行任意恶毒代码。 CERT表示,所有三个漏洞都可能导致设备重新加载它的操作系统。 这情况下,一种间接的持续性的DOS情况就有可能发生,因为数据包已经不能通过该设备了。 据CERT表示,由于运行IOS的设备可能要针对许多其他的网络来转发数据,因此这种拒绝服务攻击的间接影响所带来的后果可能是 非常严重的。 据思科公司在其安全公告中表示,公司已经发布了针对这些漏洞的补丁软件。 据思科公司补充道:它目前还不未得知有利用这些漏洞的攻击出现。 不过,据IBM公司互联网安全系统的安全战略主管奥尔曼表示,由于这些漏洞的严重性,用户需要尽快安装补丁软件。 据他表示,从他们的监测来看,有许多黑客正在试图利用这些漏洞。 建议使用金山清理专家或360安全卫士,扫描电脑上的漏洞,并修复。
发表评论