最后更新:2020-03-23 11:58:59 手机定位技术交流文章
听说你是程序员,能帮我偷一个QQ号吗?据估计,许多朋友已经看过这篇文章,程序员已经被黑客攻击了无数次。

图片来自Pexels

在其他人的眼中,就好像我们需要写一个特洛伊木马,翻过一个栅栏,建立一台计算机,并找到资源,但我们必须能够做任何接触到计算机的事情。
个笑话变成了笑话,然后进入正题。对我们的程序员来说,多多少少了解一些信息安全的技术知识还是很有帮助的。它不仅能理解一些计算机和网络的基本原理,还能反馈我们的开发工作,用安全的思维编程,减少漏洞的发生。
本文内容:
-网络安全- SQL注入- XSS攻击- CSRF攻击- DDoS攻击- DNS劫持- TCP劫持-端口扫描技术-系统安全-堆栈溢出攻击-整数溢出攻击-空指针攻击-发布后使用攻击- HOOK -特权提升-可信计算-密码学-对称加密& AMP非对称加密-密钥交换技术-信息摘要算法-数据编码技术-多因素认证技术信息安全可大致分为三大分支:
网络安全系统安全加密下面,我将分别列出这三个领域中一些常用的黑客技术。有些技术是交叉的,将被归入主要类别
网络安全
①SQL注入
网络安全三轴之首,著名的SQL注入

SQL注入攻击的核心是让Web服务器执行攻击者所期望的SQL语句,以获取数据库中感兴趣的数据或对数据库进行读取、修改、删除、插入等操作来达到其邪恶的目的。
,网络服务器如何执行攻击者的SQL语句?SQL注入的例行程序是将SQL语句放在表单或请求参数中,并将它们提交给后端服务器。如果后端服务器不进行安全检查,而是直接为数据库查询提取变量,那么很容易获胜。例如,

如下所示。对于根据用户标识获取用户信息的接口,后端的SQL语句一般如下:
选择名称,防御手段:检测输入,用SQL语句特征阻止输入
焦点:前端工程师,网络后端工程师
②XSS攻击
是网络安全三大轴心中的第二个。它的全名是跨站点脚本。为了区别于重叠的样式表CSS,另一个缩写XSS被改变了。

XSS攻击的核心是将可执行的前端脚本代码(通常是JavaScript)嵌入到网页中,这听起来很尴尬。简单来说,这意味着攻击者希望您的浏览器执行他编写的JS代码。
那怎么办?XSS将军分为两种类型:

反射类型如上图所示:
攻击者将JS代码作为请求参数放置在网址中,以诱使用户点击。示例:http://localhost:8080/test?名称= & lt脚本>。注意(‘你被攻击了!')& lt/script>。用户点击后,JS作为请求参数被发送到网络服务器的后端。后端服务器没有检查和过滤,只是将它放入网页的主体,并返回给浏览器。浏览器解析返回的网页并获胜!
的存储类型如上图所示:上述方式的攻击脚本直接从服务器传输,然后返回浏览器触发执行。存储类型和存储类型的区别在于,攻击脚本可以存储在仓库中,攻击脚本可以呈现到网页中,并返回到浏览器,以便在以后查询时触发执行。
的常见例程示例如下:
攻击者的网页回复,将包含JS脚本的回复提交给服务器后,存储到数据库中的其他网民查看帖子,后台查询帖子的回复内容,构建完整的网页,并返回浏览器。网民浏览器返回的网页成功!防御措施:前端和后端都需要做好内容检测工作,过滤掉可执行脚本的入侵
焦点:前端工程师,网络后端工程师
③CSRF攻击
网络安全三轴3。攻击图如下:

核心思想是在打开网站A的同时打开一个标签页来打开一个恶意网站B。此时,在网页B的“煽动”下,浏览器为网站A发起一个HTTP请求
的危害在于两点:
这个HTTP请求不是用户的主动意图,而是b的“煽动”。如果是更有害的请求操作(电子邮件?删除数据?等一下)那就麻烦了因为网站a以前已经被打开过,浏览器有Cookie或其他用于身份验证的信息由a发出。这一次,请求“被教唆”将自动带来这些信息。网站a的后端不清楚这是否是用户的真实愿望。焦点:前端工程师、网络后端工程师
④分布式拒绝服务攻击
分布式拒绝服务全名分布式拒绝服务攻击是拒绝服务攻击的升级版本拒绝攻击服务,顾名思义,使服务不可用。

通常用于攻击向外部世界提供服务的服务器,例如常见的
网络服务邮件服务DNS服务即时消息服务...当早期的互联网技术不那么发达时,发起DoS攻击是一件非常容易的事情:一台功能强大的计算机,编写程序,多线程和不断向服务器请求,服务器不堪重负,最终无法处理正常的请求。对其他普通用户来说,该网站似乎无法访问,这意味着拒绝服务
后来,随着技术的发展,当前的服务器不再像服务器那样简单。当你在www.baidu.com访问一个域名时,背后有无数的CDN节点和无数的网络服务器
在这种情况下,也要靠单台电脑来尝试使网络服务全面,无异于鸡蛋碰石头,对方没趴下,自己先趴下

技术一直是一把双刃剑。分布式技术不仅可以用来提供高可用性的服务,还可以被攻击者用来进行大规模的破坏攻击。

攻击者不再局限于单个计算机的攻击能力,而是通过大规模网络群集发起拒绝服务攻击
拒绝服务攻击实际上是一种技术,可以根据具体的实现方法进一步细分:
SYN泛洪ICMP泛洪UDP泛洪......防御方法:即使是现在,也没有100%确定的防御DDoS的方法,只有一些缓解技术可以将攻击的威力降低到一定的水平。这些技术包括:流量清理、同步Cookie等
焦点:操作工程师和安全工程师
⑤域名系统劫持
在今天的互联网流量中,主要基于HTTP/HTTPS的Web服务产生的流量占了绝大多数。
网络服务发展如火如荼。在这背后,一个未知的主要贡献者是域名解析系统:

。没有域名系统,我们需要记住每个网站的IP地址,而不是他们的域名。这简直是一场灾难。幸运的是,域名系统在背后做了这一切。我们只需要记住一个域名,剩下的交给域名系统来完成
也是因为它的重要性,别有用心的人不会放过它,DNS劫持技术被发明了
域名系统提供将域名转换为IP地址的服务,但是在早期协议的设计中没有考虑到它的安全性。对于查询者来说,
我真的需要一个域名服务器吗?有人伪造了吗?调查结果被篡改了吗?这个知识产权真的来自这个网站吗?
DNS协议中没有机制来确保这些问题能够得到回答,因此DNS劫持非常猖獗。从用户在地址栏中输入域名的那一刻起,一路上的危险就多得无法避免:本地计算机中的
特洛伊木马修改主机文件本地计算机中的特洛伊木马修改响应网络中的节点(例如路由器)在域名系统数据包中修改响应网络中的节点(例如运营商)在域名系统数据包中修改响应...
后来,DNSSEC技术出现了,以验证在客户端收到的域名系统响应,这在一定程度上可以解决上述的一些问题
,但由于某些原因,该技术尚未大规模使用,尤其是在中国,在中国很少部署和应用。

后来,阿里、腾讯等领先的互联网制造商开始提供httpDNS服务,这是一个激进的举措。
虽然这种技术的名称仍然有三个字母的域名,但它的实现与原来有很大的不同,但通过这种技术,域名已成为一种基于http协议的应用服务
专注于安全工程师、后端工程师以及操作和维护工程师
⑥TCP劫持

TCP是TCP/IP协议家族中非常重要的成员,位于传输层该协议本身不认证传输控制协议数据包
,所以只要我们知道TCP连接中的seq和ack,我们就可以很容易地伪造传输数据包,并假装任一方与另一方通信。我们称这个过程为TCP会话劫持

TCP劫持技术是一项非常古老的技术,自1995年提出以来一直受到黑客的青睐然而,近年来,随着操作系统级安全机制的增强和防火墙软件检测能力的增强,这种基本的攻击方式越来越容易被发现,并逐渐淡出人们的视野。
焦点:安全工程师、操作和维护工程师
⑦端口扫描技术
端口扫描是黑客经常使用的技术。它通常被用作网络攻击的早期阶段,以检测目标打开了哪些服务,从而对下一个服务发起攻击。
我记得当我刚刚学习网络安全的时候,每个人总是无事可做地拿出工具来扫它。虽然横扫之后,没有追随者,但我总是喜欢它,并在不懂它的人面前展示我的“黑客”能力。

互联网是用TCP/IP协议族构建的,网络服务总是离不开端口的概念。无论是TCP还是UDP,应用层都需要一个端口号来进行网络通信
和我们的通用服务端口是:
21:文件传输服务25:邮件服务53:域名解析系统服务80:超文本传输协议服务135:远程过程调用服务443: HTTPS 3389: MSRDP微软远程桌面连接服务...端口扫描原理。对于基于UDP的服务,发送相应的服务请求包以查看是否有响应;对于基于TCP的服务,尝试启动三次握手来发送TCP同步数据包,以查看是否有回复
如果远程服务器响应,则表示相应的服务正在另一台服务器上运行。接下来,它进一步确定对方服务器使用的操作系统、正在运行的服务器程序的类型和版本,然后对相应的易受攻击程序发起网络攻击。因此,

表明,为了安全起见,信息应尽可能少地在互联网上公开,不必要的服务端口应关闭。
防御手段:使用防火墙和其他安全产品即时发现并阻止非法扫描和检测行为
焦点:操作工程师和安全工程师
系统安全技术在
系统安全部分,一般指发生在终端上的与操作系统密切相关的攻击
①堆栈溢出攻击
堆栈溢出攻击历史悠久,也是发生在系统端的最基本的攻击
现代计算机基本上是建立在冯·诺依曼系统上的,这个系统最大的问题之一是数据和指令存储在内存中。计算机内存中的

不仅包含程序运行的所有代码指令,还包含程序运行的输入和输出等各种数据。没有强制机制来区分指令和数据。
,因为它们对计算机来说都是相同的二进制0和1,而且大多数时候程序根据既定的“规则”来解释和理解内存中的这些0和1但是一旦这些“规则”被误解,事情就会变得更糟。
是我们现代处理器和操作系统特有的,无论是x86/x64处理器还是ARM处理器,都采用寄存器+堆栈的设计,这个堆栈不仅包含程序操作的每个函数堆栈帧中的变量数据等信息,还包含函数调用生成的返回地址所谓

的堆栈溢出攻击是指通过某种方式进入堆栈中的缓冲区,突破缓冲区的原始边界,用数值覆盖存储返回地址的位置,使其指向攻击者预先安排的恶意代码位置,并劫持程序的执行流程
防御手段:现代操作系统对堆栈溢出攻击有非常成熟的解决方案,如Linux平台上的堆栈加那利,Windows平台上的GS机制等。所有程序员需要做的就是充分利用这些机制
焦点:C/c++工程师
②整数溢出攻击
与堆栈溢出攻击相同。整数溢出攻击也是一种溢出类型的攻击。区别在于溢出目标不是堆栈中的缓冲区,而是一个整数

我们知道计算机值是以补语的形式表达和存储的当表示有符号数时,是用于指示这是正数(0)还是负数(1)的最高位
例如,对于16位短变量,+1和-1表示如下:
+ 1:00000000000001-1:11111111111111111199 16位短变量的范围为-32768到32767。现在考虑一个问题。如果一个短变量的值现在是32767:32767:011111111111111111199,如果您现在对它执行+1运算,它将变成:1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000想象一下,如果变量名是作为strcpy参数的长度,或者是作为数组下标的索引,整数溢出将会导致可怕的后果。如果是轻量级的,进程将崩溃,服务将关闭,如果是轻量级的,远程代码执行将控制。焦点:所有程序员
③空指针攻击
空指针通常发生在指针未初始化时,或者当使用new的对象创建/内存分配失败时,而粗心的程序员不会检查指针是否为空并访问结果攻击

在大多数情况下,这将导致异常的内存地址访问,程序将崩溃并退出,从而导致拒绝服务现象

以及在某些特殊情况下,某些操作系统允许分配内存起始地址为0的内存页面,而攻击者如果提前在页面上准备攻击代码,可能会冒执行恶意代码的风险
④释放后使用攻击
释放后使用自由意味着访问释放的内存块其中大多数出现在对浏览器的JavaScript引擎的攻击中。
在正常情况下,我们不能再访问已释放的对象。但是,如果程序员粗心大意,删除对象后没有立即将指针设置为空,然后继续使用指针访问对象(如通过对象的虚函数表指针调用虚函数),内存访问就会发生异常。

在上述场景中,如果攻击者在删除对象后立即新建一个具有相同内存大小的对象,在现代操作系统的堆内存管理算法中,很有可能将新对象放在刚刚被删除的对象的位置。
也将在此时通过原对象的指针被访问,这将导致“鸠山鹊巢”的出现,带来可怕的后果。养成良好的编程习惯。对象删除后,指针被及时设置为空。
焦点:C/c++工程师
5钩
钩原意钩,常用于计算机编程中,用来改变原程序的执行过程

在那个互联网充斥着流氓软件的时代,键盘记录器的木马很流行,它被用来记录用户的键盘输入,从而窃取密码。QQ曾经是受灾最严重的地区。

和实现该功能的技术是使用HOOK技术来挂接键盘敲击的事件消息。除了消息钩子,
在程序执行过程级别使用了更多的钩子。在目标程序中注入
恶意代码后,在函数入口增加一条跳转指令,使在此执行的线程执行攻击者的代码,从而实现修改参数和过滤参数的目的。

HOOK技术不仅被黑客使用,还被更多的安全软件使用。安全软件需要保护整个系统的安全防线,并通过钩子技术在敏感的应用编程接口位置设置检查,以抵御非法调用攻击。

此外,软件补丁技术中经常使用钩子技术。软件制造商在发现原有程序漏洞后,通过钩子修改现有程序的执行逻辑,从而达到修复漏洞的目的。
焦点:C/c++工程师
⑥权限提升
现代操作系统都为运行在其中的进程和线程提供权限管理,因为安全攻击是不可避免的,权限限制是将程序攻击的影响降至最低的有效屏障
换句话说,即使我们的程序由于漏洞而受到攻击并执行恶意代码,由于操作系统的权限控制,恶意代码也只能做有限的事情。

就像一枚硬币有两面。如果对权力有所限制,权力自然会增加。如果攻击者想要做更多的事情,他必须突破操作系统的限制并获得更高的权限。
,通常需要管理员权限在Linux上,经常调用它来获得Root权限,这也是手机Root的含义。在iOS上,这通常被称为“越狱”

权限以各种方式提升。一般来说,当程序执行时,它所属的进程/线程有一个安全令牌来标识它的安全级别,当访问资源和执行操作时,操作系统内核会对其进行审核。
权限提升的目标是将此安全令牌更改为高级令牌,以便在将来访问敏感资源和执行敏感操作时,它可以通过系统的安全审核。

,改变这个安全令牌的常用技巧是使用操作系统内核漏洞(如堆栈溢出、整数溢出、发布后使用等。)执行攻击者的代码来篡改安全令牌。
焦点:安全工程师
⑦可信计算
安全攻击无处不在,不仅应用环境不可靠,操作系统内核环境也充满风险
如果程序(如支付)必须在极其机密的环境中执行,我该怎么办?安全研究人员提出了

可信计算的概念。根据百科全书的解释,
可信计算(TC)是可信计算集团(trusted computing cluster,原名TCPA)推广和开发的技术可信计算是由基于硬件的安全模块支持的可信计算平台,广泛用于计算和通信系统,以提高系统的整体安全性
焦点:终端系统工程师密码术
密码术
是由于数据传输过程中的信息泄露、篡改和伪造的风险而产生的
①对称加密和非对称加密
具有加密和解密功能。根据加密密钥和解密密钥是否相同,加密算法分为两类:对称加密和非对称加密
最早的加密技术是对称加密:加密密钥与解密密钥相同,具有加密速度快、加密效率高的特点
的常见对称加密算法是:
降级4。这种加密方法的一个关键问题是解密方需要得到密钥来解密它,而密钥通过网络传输将面临不安全的风险,这已经成为一个生蛋和下蛋的问题
这样,一项划时代的通信技术被发明了,这就是不对称加密!

非对称加密:加密密钥与解密密钥不一致,算法复杂但安全性高。非对称加密密钥通常分为公钥和私钥。公钥是公开的,私钥是保密的通常用于数字认证,例如HTTPS握手阶段的服务器认证。
常用的非对称加密算法有:
RSADHECC(椭圆曲线加密)。毫不夸张地说,如果没有不对称加密,互联网永远不会发展到今天的水平
②密钥交换技术
在互联网通信中,有加密和解密,解密自然需要一个密钥,那么如何告诉对方这个密钥呢?密钥交换算法就是要解决这个问题:如何将密钥安全地传输给对方?

回顾一下上面提到的不对称加密,它可以解决这个问题:
服务器负责生成一对公钥和私钥。公钥告诉客户端,在客户端自己保存私钥并获得公钥之后,私钥用于加密对称加密算法密钥,以便在后续通信中使用。收到密钥后,服务器用私钥解密。获得密钥后,双方可以通过对称加密传输通信上述示例不仅仅是一个示例。在HTTPS的早期版本中,密钥交换是通过这种方式进行的在以后的版本中,另一种称为DH及其变体的密钥交换算法被越来越多的使用。

DH全名Diffie-Hellman,是两位数学家的名字,这个算法的核心是完全依靠数学运算来实现密钥交换
③信息摘要算法
信息摘要算法实际上不是一种加密算法,加密的前提是它可以通过解密恢复,信息摘要算法的目的不是保护数据,也不能解密和恢复。
在某些情况下,我们听到的关于信息摘要的信息更少,而关于哈希的信息更多。信息摘要算法的目的之一是检查数据的正确性。该算法是公开的。数据通过算法获得摘要值。收到数据后,我们通过算法计算摘要。通过前后对比,我们知道它是否被篡改了。
常用的信息摘要算法包括
MD5SHA1SHA256④数据编码技术
严格来说,数据编码技术也不是加密算法,因为它的目的不是加密,而是对传输的数据进行编码

最常见的编码算法是base64,它主要用于编码二进制数据。隐形字符被编码并转换成由64个普通字符组成的文本,便于打印、显示、传输和存储。例如,在邮件的eml格式中,附件文件由base64编码

除了base64,还有base58,通常用于比特币钱包地址编码。基本系列也有许多算法,如base85、base92、base128等。它们不仅在编码所涉及的字符集方面不同,而且在算法的执行方面也不同
⑤多因素认证技术
在认证方面,最常见的场景是登录和支付等。传统的认证技术是密码技术,但是随着网络攻击的日益猖獗和互联网渗透到人们生活的各个方面,传统密码技术的安全性已经不足以满足互联网的发展。

多因素认证技术旨在通过引入其他认证技术来补充传统的密码认证,并以两种或多种方式共同完成认证
随着人工智能技术的发展,基于生物特征的认证技术突飞猛进:
指纹认证虹膜认证人脸识别...世界从来不缺少先行者。多因素身份验证看起来非常复杂。幸运的是,许多龙头企业已经建立了认证平台。对于绝大多数企业来说,他们需要做的就是下载软件开发工具包并调用应用编程接口目前,国内外主流多因素认证平台主要有三大派别:国际标准
FIDO。在中国,永安支付、百度钱包、京东钱包和伟众银行都已应用。阿里部门IFAA也凭借阿里在电子商务领域的优势吸引了许多追随者。腾讯TUSI摘要
本文列出了一些常见的信息安全技术,主要分为三个方面:网络安全、系统安全和密码学
信息安全技术不仅是安全工程师的事,作为一名程序员,了解这些技术将有助于我们更好地建设世界!
作者:轩辕之风
编辑:陶家龙
来源:转载自微信公众数字编程技术天地(身份证号:编程天地)
本文由 在线网速测试 整理编辑,转载请注明出处。