不会盗QQ,还当什么程序员?(不会盗qq,还当什么程序员呢)

不会盗QQ,还当什么程序员? 文章目录 前言网络安全SQL注入XSS攻击反射型存储型 CSRF攻击DDoS攻击DNS劫持TCP劫持端口扫描技术 系统安全栈溢出攻击整数溢出攻击空指针攻击释放后使用攻击HOOK权限提升可信计算 密码学对称加密

文章目录

简介网络安全SQL 注入XSS 攻击反射存储类型

CSRF攻击DDoS攻击DNS劫持TCP劫持端口扫描技术

系统安全堆栈溢出攻击整数溢出攻击空指针攻击发布后攻击通过HOOK 加强可信计算

密码技术对称加密非对称加密密钥交换技术信息摘要算法数据加密技术多因素认证技术

学习计划概述组织学习路线图学习计划概述第一阶段:初级网络安全工程师第二阶段:中级或高级网络安全工程师(根据能力) 第三阶段:高级网络安全工程师

数据采集

前言

上面这句话想必很多朋友都看过。对于其他人来说,我们似乎需要能够创建特洛伊木马、爬墙和寻找资源。您需要能够使用计算机来完成此操作。

笑话就是笑话。对于我们程序员来说,了解信息安全的技术知识不仅可以帮助我们理解计算机和网络的底层原理,还可以帮助我们反馈我们的想法。开发工作采用安全思维编程,减少漏洞的发生。

信息安全大致可分为以下三个领域。

网络安全系统的安全加密

下面小编列出了这三个领域中一些常用的黑客技术。有些技术有重叠,因此将它们分为主要类别。

网络安全

SQL注入

Web 安全的三大威胁中的第一个就是众所周知的SQL 注入。

SQL注入攻击的核心是诱骗Web服务器执行攻击者期望检索数据库中感兴趣的数据或对数据库执行读取、修改、删除或插入等操作以制造恶意意图。以达到某种目的。

如何强制Web 服务器执行攻击者的SQL 语句? SQL 注入的传统例程是将SQL 语句放在表单或请求参数中并将其发送到后端服务器。后端服务器不进行输入安全验证,直接检索变量进行数据库查询。很容易被愚弄。

一个例子是:

对于根据用户ID检索用户信息的接口,后端SQL语句通常如下所示:

选择名称,[.] from t_user whereid=$id

这里,$id是前端发送的用户ID,假设你的前端请求是这样的:

获取xx/userinfo?id=1%20or%201=1

如果转义后的请求参数ID变成1或者1=1,并且后端不使用安全过滤器直接发送数据库查询,SQL语句将如下所示:

selectname,[.] from t_user 其中id=1or1=1

结果,用户表中的数据全部被找到,黑客数据泄露的目的就达到了。

上面只是一个非常简单的例子。真正的SQL注入攻击中,参数构造和SQL语句比这复杂得多,但原理是一样的。

防御措施:根据SQL语句的特征检测并阻止输入

重点:前端工程师、Web 后端工程师

XSS攻击

Web 安全的三大威胁中的第二个是跨站点脚本。为了与重复的样式表CSS 区分开来,另一个缩写被更改为XSS。

XSS攻击的核心是将可执行的前端脚本代码(通常是JavaScript)嵌入到网页中。简单来说,这就是强制浏览器执行攻击者编写的JS代码。你怎么做呢?一般来说,XSS分为两种类型:

反射型

1、攻击者在URL中放置JS代码作为请求参数,诱骗用户点击。 例子:

http://localhost:8080/test?name=scriptalert(\’你受到攻击!\’)/script

当今互联网流量的很大一部分是由Web 服务产生的,其中主要是HTTP/HTTPS。 Web 服务开发正在如火如荼地进行,未知的贡献者是其中不可或缺的一部分。那就是域名解析系统。

如果没有DNS,您在浏览Internet 时必须记住每个网站的IP 地址,而不是其域名,但好消息是DNS 在后台自动完成所有这一切,您所需要做的就是记住域名。让DNS 完成剩下的工作。

因为太重要了,不能放过别有用心的人,所以发明了DNS劫持技术。

虽然DNS提供了将域名翻译成IP地址的服务,但早期的协议设计并没有考虑查询端的安全性。

这真的是我请求的DNS 服务器吗?是其他人冒充的吗?查询结果是否被篡改?该IP是否真的属于该网站?

由于DNS协议没有机制保证能够回答这些问题,因此从用户在地址栏中键入域名的那一刻起,DNS劫持就很常见,而且很难防止危险的发生。

本地计算机上的特洛伊木马修改了DNS 数据包的响应。 网络中的节点(例如路由器)修改对DNS 数据包的响应。运营商)修改DNS 数据包内的响应。

后来出现了DNSSEC技术,可以在一定程度上解决上述一些问题,以便在客户端验证收到的DNS响应。但由于多种原因,该技术并未大规模应用,尤其是在中国。

随后,阿里巴巴、腾讯等主要互联网厂商开始推出httpDNS服务。这意味着,虽然该技术的名称中仍然带有三个字母的DNS,但实现方式却与原始DNS 完全不同。该技术使DNS成为一种基于http协议的应用服务。

重点:安全工程师、后端工程师、运维工程师

存储型

TCP是TCP/IP协议族中非常重要的成员,位于传输层。该协议本身不会验证TCP 发送的数据包,因此如果您知道TCP 连接的seq 和ack,您可以轻松伪造发送的数据包,使任何一方都可以伪装成正在与另一方通信。 TCP会话劫持

TCP 劫持是一种非常古老的技术,自1995 年提出以来一直受到黑客的欢迎。但近年来,随着操作系统层面安全机制的加强以及防火墙软件检测能力的提高,这种基本的攻击方式变得更容易被检测到,并逐渐从人们的视线中消失。

重点:安全工程师、运维工程师

CSRF攻击

端口扫描是黑客常用的技术,通常作为网络攻击的第一步,以发现目标启用了哪些服务并对这些服务发起攻击。

当我刚接触网络安全的时候,大家总是拿出工具来扫描,尽管扫描后就没什么可说的了,我记得他们总是愿意在人面前炫耀自己的“黑客”能力。不认识他们。我不明白。

在互联网中,建立在TCP/IP协议族之上,网络服务一直都离不开端口的概念,而应用层则需要端口号来进行网络通信。我们常见的服务端口有:

21: FTP 文件传输服务25: SMTP 邮件服务53: DNS 域名解析系统服务80: HTTP 超文本传输协议服务135: RPC 远程过程调用服务443: HTTPS3389: MSRDP Microsoft 远程桌面连接服务…

端口扫描的原理是,对于基于UDP的服务,它发送相应的服务请求包来检查是否有响应,对于基于TCP的服务,它发起三次握手,发送一个TCP SYN左右发送一个数据包并查看是否有响应。回复。

如果远程服务器有响应,则说明对端服务器上正在运行相应的服务。下一步是进一步调查对端服务器使用的操作系统、其运行的服务器程序的类型和版本等。然后,它针对相应的易受攻击的程序发起网络攻击。

从安全角度来看,您应该尽可能少地向互联网公开信息,并关闭不必要的服务端口。

如何防范:使用防火墙等安全产品立即发现并阻止非法扫描和检测活动。

重点:运维工程师、安全工程师

DDoS攻击

系统安全部分的技术一般是指发生在设备上且与操作系统密切相关的攻击。

DNS劫持

堆栈溢出攻击有着悠久的历史,是发生在系统侧的最基本的攻击之一。

现代计算机基本上是建立在诺依曼系统的基础上的,但该系统最大的问题之一是数据和指令都存储在内存中。

计算机的内存不仅包含运行程序的所有代码指令,还包含运行程序的输入和输出等各种数据。没有强制机制来区分指令和数据。对于计算机来说,它们都是相同的二进制0和1,因此主要由程序根据既定的“规则”来解释和理解内存中的这些0和1。当这些“规则”被误解时,事情就会变得更糟。

现代CPU和操作系统的独特之处在于,无论是x86/x64还是ARM处理器,它们都采用寄存器加堆栈的设计,在程序执行过程中将变量数据等信息存储在每个函数堆栈帧中。它还存储函数调用生成的返回地址。

所谓的堆栈溢出攻击涉及以某种方式渗透堆栈中的缓冲区,突破缓冲区的原始边界,并用指向恶意地址位置的值覆盖存储返回地址的位置。程序执行流程被攻击者准备的代码劫持。

防御方法:现代操作系统对于堆栈溢出攻击都有非常成熟的解决方案,例如Linux平台上的Stack Canary和Windows平台上的GS机制。程序员需要做的就是充分利用这些机制。

重点:C/C++ 工程师

TCP劫持

与堆栈溢出攻击一样,整数溢出攻击也是溢出攻击。不同之处在于溢出的目标是整数而不是堆栈中的缓冲区。

我们知道,计算机值是以二进制补码格式表示和存储的。当表示有符号数时,最高有效位指示该数是正数(0) 还是负数(1)。例如,对于16 位短变量,+1 和-1 表示为:

+1: 0000 0000 0000 0001

-1: 1111 1111 1111 1111

16位short变量表示的范围是-32768到32767。现在考虑当short变量的值为32767时的问题。

32767: 0111 1111 1111 1111

对此执行+1 操作会产生:

1000 0000 0000 0000

这正是-32768 的补码形式。

请尝试想象一下。当变量名称是作为strcpy 参数的长度或作为数组下标的索引时,整数溢出可能会产生可怕的后果,从进程崩溃和服务停机到远程代码执行和控制盗用。

关注对象:所有程序员

端口扫描技术

当指针未初始化、使用new 创建对象或内存分配失败以及粗心的程序员在不检查指针是否为空的情况下尝试访问指针时,通常会出现空指针。

在大多数情况下,这会导致异常的内存地址访问,从而导致程序崩溃并终止,从而导致拒绝服务。

在某些特殊情况下,某些操作系统允许分配内存起始地址为0的内存页。如果攻击者提前在此页面准备攻击代码,则存在恶意代码被执行的风险。

系统安全

Use After Free 意味着访问已释放的内存块。其中大多数表现为针对浏览器JavaScript 引擎的攻击。

一般情况下,一个被释放的对象不能被再次访问,但是如果程序员不小心,在删除该对象后没有立即将指针设置为NULL,那么程序员可以使用该指针来继续访问该对象(例如通过一个东西)。 ) 当虚函数表指针调用虚函数时,会发生内存访问异常。

在上述场景中,如果攻击者删除一个对象并立即创建一个具有相同内存大小的新对象,现代操作系统的堆内存管理算法可能会将这个新对象放置在以下位置:这将是昂贵的。对象位置已被删除。在这种情况下,通过原始对象的指针访问将产生可怕的后果。

养成良好的编程习惯。当对象被删除时,指针立即为空。

重点:C/C++ 工程师

栈溢出攻击

HOOK原本是钩子的意思,常用于计算机编程中,用来改变原程序的执行流程。

在互联网恶意软件盛行的时期,一种用于记录用户键盘输入的键盘记录木马大行其道,QQ一度是受影响最严重的领域之一。

实现这一功能的技术就是HOOK技术,即挂钩键盘点击事件消息。

除了消息HOOK之外,更常用的是程序执行进程级HOOK。恶意代码注入目标程序后,会在函数入口处添加跳转指令,让运行在那里的线程代其执行攻击者的代码,从而修改参数并进行过滤。

HOOK技术除了被黑客利用之外,还被安全软件用来保护整个系统的安全防线。采用HOOK技术,在各处设立一道安全防线,抵御诈骗电话攻击。

另外,HOOK技术也常用于软件补丁技术中。软件厂商发现原程序存在漏洞后,利用HOOK修改现有程序的执行逻辑来修复漏洞。

重点:C/C++ 工程师

整数溢出攻击

现代操作系统为其中运行的进程和线程提供权限管理。这是因为安全攻击是不可避免的,而权限限制可以作为非常有效的屏障,最大限度地减少受攻击程序的影响。

换句话说,即使程序受到漏洞攻击并执行恶意代码,操作系统的权限控制也会限制该恶意代码的操作。

就像硬币总是有正反面一样,当有权限限制时,自然会出现权限升级。如果攻击者想要做更多的事情,他或她必须克服操作系统的限制以获得更高的权限。

在Windows 上,经常调用它来获取管理员权限。

在Linux上,通常会调用它来获取root权限,这也意味着对你的手机进行root。

在iOS 上,这通常称为“越狱”。

如果互联网通信已加密,则需要解密。那么如何将这个密钥传达给对方呢?密钥交换算法解决了这个问题。问题是,“如何才能安全地将密钥发送给对方?”

我们可以通过回顾上面提到的非对称加密来解决这个问题。

服务器负责生成公钥和私钥对。客户端获得公钥后,用其加密并发送对称加密算法密钥。服务器获得此密钥后,将在后续通信中使用,使其通过对称加密进行发送和通信。

上面的例子不仅仅是一个例子。在HTTPS 的早期版本中,密钥交换是通过这种方式执行的。新版本越来越多地使用另一种称为DH 的密钥交换算法及其变体。

DH的正式名称是Diffie-Hellman,由两位数学家的名字组成。该算法的核心是完全通过数学运算来实现密钥交换。

空指针攻击

信息摘要算法实际上并不是加密算法。加密的前提不是保护数据,数据无法被解密和恢复。

在某些情况下,您不会经常听到汇总信息,而是经常听到哈希。

信息汇总算法的目标之一是在数据发布之前使用算法计算汇总值。然后你就可以知道它是否被篡改了。

常用的信息汇总算法有:

MD5SHA1SHA256

释放后使用攻击

严格来说,数据编码技术并不是加密算法。其目的不是加密,只是对数据进行编码以供传输。

最常见的编码算法主要用于对二进制数据进行编码,将不可见字符转换为由64 个常见字符组成的文本。这样方便打印、查看、发送和保存。例如,在电子邮件EML 格式中,附件采用Base64 编码。

除了Base64之外,还有Base58,常用于比特币钱包中的地址编码。 Base系列还包括许多算法,例如base85、base92和base128。它们之间的区别不仅在于编码所包含的字符集不同,还在于算法的执行方式不同。

HOOK

说到认证,最常见的就是登录、支付等场景。传统的认证技术是加密,但随着网络攻击的日益盛行以及互联网渗透到人们生活的方方面面,传统加密的安全性已经跟不上互联网的发展。

多因素认证技术是指除了传统的密码认证之外,引入其他互补的认证技术,并结合两种或多种方法来完成认证。随着人工智能技术的发展,基于生物识别的认证技术取得了巨大的进步。

指纹认证、虹膜认证、人脸认证……

世界上不乏先驱者。幸运的是,许多领先的公司已经建立了认证平台。您只需下载SDK 并调用API 即可。

目前,国内外主流多重认证平台主要分为三大派别。

在国内,FIDO已经应用于支付宝、百度钱包、京东钱包、微众银行等,阿里巴巴在电商领域也聚集了众多支持者。 TUSI、腾讯事业部

权限提升

本文列出了一些常见的信息安全技术,分为三个主要领域:网络安全、系统安全和密码学。

信息安全技术不仅仅是安全工程师的问题。作为一名程序员,了解这些技术将帮助您将世界建设得更美好。

知识就是分享。请转发这篇文章,让更多人看到~

-结尾-

这里我们整合了【282G】网络安全/喇叭技术资料包从零基础入门到高级。想要的朋友可以在文末免费领取并免费分享。

可信计算

密码学

我总共分为六个阶段,但这并不意味着你不学会所有的阶段就找不到工作。对于入门级职位,学习第3 阶段和第4 阶段就足够了。

【帮助您一步步学习网络安全,以下资源全部免费获取】

网络安全学习路线

数百本渗透测试电子书

安全攻防注释第357页

50份安全面试指南

安全红队入侵工具包

硬件网络防护运营经验总结

100个漏洞实例

各大安防厂商内部视频资源

CTF夺旗赛过往题分析

接下来,我们就来分享一下你的学习计划吧!

对称加密 非对称加密

那么,作为初学者,问题又出现了:我应该先学什么,接下来又应该学什么?

既然你诚实地提出了这个问题,我就告诉你,最好从头开始。

什么开始学起:

阶段一:初级网络安全工程师

接下来我将给大家安排一个为期1个月的网络安全初级计划,当你学完后,你基本可以从事一份网络安全相关的工作,比如渗透测试、Web渗透、安全服务、安全分析等岗位;其中,如果你等保模块学的好,还可以从事等保工程师。

综合薪资区间6k~15k

1、网络安全理论知识(2天)
①了解行业相关背景,前景,确定发展方向。
②学习网络安全相关法律法规。
③网络安全运营的概念。
④等保简介、等保规定、流程和规范。(非常重要)

2、渗透测试基础(1周)
①渗透测试的流程、分类、标准
②信息收集技术:主动/被动信息搜集、Nmap工具、Google Hacking
③漏洞扫描、漏洞利用、原理,利用方法、工具(MSF)、绕过IDS和反病毒侦察
④主机攻防演练:MS17-010、MS08-067、MS10-046、MS12-20等

3、操作系统基础(1周)
①Windows系统常见功能和命令
②Kali Linux系统常见功能和命令
③操作系统安全(系统入侵排查/系统加固基础)

4、计算机网络基础(1周)
①计算机网络基础、协议和架构
②网络通信原理、OSI模型、数据转发流程
③常见协议解析(HTTP、TCP/IP、ARP等)
④网络攻击技术与网络安全防御技术
⑤Web漏洞原理与防御:主动/被动攻击、DDOS攻击、CVE漏洞复现

5、数据库基础操作(2天)
①数据库基础
②SQL语言基础
③数据库安全加固

6、Web渗透(1周)
①HTML、CSS和JavaScript简介
②OWASP Top10
③Web漏洞扫描工具
④Web渗透工具:Nmap、BurpSuite、SQLMap、其他(菜刀、漏扫等)

那么,到此为止,已经耗时1个月左右。你已经成功成为了一名“脚本小子”。那么你还想接着往下探索吗?

阶段二:中级or高级网络安全工程师(看自己能力)

综合薪资区间15k~30k

7、脚本编程学习(4周)
在网络安全领域。是否具备编程能力是“脚本小子”和真正网络安全工程师的本质区别。在实际的渗透测试过程中,面对复杂多变的网络环境,当常用工具不能满足实际需求的时候,往往需要对现有工具进行扩展,或者编写符合我们要求的工具、自动化脚本,这个时候就需要具备一定的编程能力。在分秒必争的CTF竞赛中,想要高效地使用自制的脚本工具来实现各种目的,更是需要拥有编程能力。

零基础入门的同学,我建议选择脚本语言Python/PHP/Go/Java中的一种,对常用库进行编程学习
搭建开发环境和选择IDE,PHP环境推荐Wamp和XAMPP,IDE强烈推荐Sublime;

Python编程学习,学习内容包含:语法、正则、文件、 网络、多线程等常用库,推荐《Python核心编程》,没必要看完

用Python编写漏洞的exp,然后写一个简单的网络爬虫

PHP基本语法学习并书写一个简单的博客系统

熟悉MVC架构,并试着学习一个PHP框架或者Python框架 (可选)

了解Bootstrap的布局或者CSS。

阶段三:顶级网络安全工程师

这部分内容对于咱们零基础的同学来说还太过遥远了,由于篇幅问题就不展开细说了,我给大家贴一个学习路线。感兴趣的童鞋可以自行研究一下哦,当然你也可以点击这里加我与我一起互相探讨、交流、咨询哦。

资料领取

上述这份完整版的网络安全学习资料已经上传网盘,朋友们如果需要可以微信扫描下方二维码 即可免费领取↓↓↓
或者
【点此链接】领取

#以上关于不会盗QQ,还当什么程序员?的相关内容来源网络仅供参考,相关信息请以官方公告为准!

原创文章,作者:CSDN,如若转载,请注明出处:https://www.sudun.com/ask/92714.html

(0)
CSDN的头像CSDN
上一篇 2024年6月28日
下一篇 2024年6月28日

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注