安全开发是如何执行的

谈到安全开发,咱们就要先明确一个问题,安全开发的目的是什么呢?

所有做过开发的小伙伴,一定会有一个概念,一个程序的逻辑Bug,一定越早发现,损失越小。
如果能在需求阶段,发现并解决这个Bug,损失可以是最小的。

安全开发也是这样,希望达到的目的就是:
安全风险左移,早发现,早管理,持续改进

在安全开发上面,其实有一些现成的框架可以遵循,比如SSDLC(适合迭代式开发)、DevSecOps(适合DevOps式开发)等。

本文就说一下,我们的SSDLC是如何执行的。

当前,在能执行之前,需要进行相关的建设,包括:
明确安全风险,明确安全基线,指定安全策略,进行安全教育,部署安全工具,进行相关培训等等。
这个每个公司差异比较大,选择的组件和厂商也大不相同,就不详细描述了。
我们重点说一下,一个安全相关的需求,是如何落地的。

1、安全需求
1.1安全需求识别
组织应该达成一个共识,哪些需求比如过安全评审,比如:
a、任何账号、密码相关的
注册、登录、密码验证、验证码、密码修改、账号注销等等
b、任何用户可以发布信息的
留言、灌水、内容发布、即时通讯、提交信息并展示
c、任何上传和下载的
d、任何交易相关的
大促、活动、秒杀、刷单、刷票、业务风险响应
e、任何钱相关的
积分、交易、资金往来、营销、相关接口
f、涉及SQL编写的
g、任何敏感信息存储或展示的
购买、支付、个人信息查询、添加删除信息、充值密码
移动端图片保存、人脸识别、手势密码
h、任何证书相关的
i、任何访问控制相关的
前后端访问控制、系统对接、日志、短信、邮件
j、任何批量操作相关的
查询、导入、导出
k、合规安全相关
隐私政策、个人信息采集、敏感信息传输、生物特征识别、账号注销
等等。
1.2安全需求强制纳入安全评审,安全管理人员可以指定其他需求进入安全评审、
1.3安全小组对需求进行评审,判定是否可以继续推进

2、安全设计
2.1设计人员给出方案
2.2安全小组评审设计方案,判定是否可以继续推进
2.3测试同学,同步书安全测试用例
2.4安全小组评审设测试用例,判定是否可以继续推进

3、安全开发
3.1、开发同学IDE安装好安全组件,组件可规范编码,并进行静态扫描,及时发现代码问题
3.2、开发同学自测后,提交代码库
3.3、开发同学在测试环境,运行流水线
3.4、流水线自动混淆、编译、加固、打包、部署,同步进行各类扫描,包括:黑盒、白盒、组件、镜像、隐私检测等
3.5、流水线给出相关漏洞
3.6、开发同学修复漏洞

4、安全测试
4.1、测试同学进行功能验证
4.2、测试同学进行安全验证:渗透、越权等
4.3、测试同学进行性能验证
4.4、验证通过后,提交相关报告

5、安全验证
5.1、此时可以进行UAT验证
5.2、在版本库相同的情况下,开发同学将代码发布到UAT环境
5.3、流水线门禁根据规则判定,是否可以发布
5.4、测试同学初步验证
5.5、用户验证

6、安全部署
6.1、此时可以把代码部署到生产环境

当然,上面的开发流程,只是整个安全开发体系中的一环。
实施安全开发流程,需要庞大的前期资源投入,以及渡过一个较长的不断改进的过程。

什么是SSDLC

SSDLC(Secure Software Development Life Cycle,安全软件开发生命周期)是一个软件开发框架,它将安全考虑和实践集成到传统的软件开发生命周期(SDLC)的每个阶段。SSDLC的目标是减少软件中的安全漏洞,提高软件产品的安全性,确保从设计到部署的每个步骤都考虑到安全因素。

SSDLC 的主要阶段通常包括:
1、 初始化:确定安全策略和目标,定义项目范围和安全要求。
2、 架构设计:设计软件的安全性,包括威胁建模和风险评估。
3、 详细设计:开发软件的详细设计,包括安全控制和机制。
4、 实现/编码:编写安全的代码,并遵循安全编码标准和最佳实践。
5、 测试:进行安全测试,包括静态代码分析、动态代码分析和渗透测试。
6、 部署:安全地部署软件到生产环境,并确保部署过程本身的安全性。
7、 维护:在软件的整个生命周期内进行持续的安全监控、漏洞管理和补丁应用。

如何实施 SSDLC:

1、 建立安全策略:
定义组织的安全政策和程序,确保它们与SSDLC流程一致。

2、 安全培训:
对开发团队进行安全意识和安全技能的培训。

3、 威胁建模:
在设计阶段使用威胁建模来识别潜在的安全威胁和漏洞。

4、 安全需求分析:
确定软件的安全需求,并将其纳入项目的需求规格中。

5、 安全架构和设计:
设计软件架构以包含安全控制,如身份验证、授权、数据加密等。

6、 安全编码:
遵循安全编码标准和最佳实践,减少安全漏洞。

7、 代码审查和静态分析:
通过代码审查和自动化工具检测代码中的安全问题。

8、 动态分析和测试:
进行动态安全测试,如渗透测试,以发现运行时的安全问题。

9、 安全部署:
确保部署过程安全,包括使用安全的配置和补丁管理。

10、 监控和响应:
实施监控机制来检测和响应安全事件。

11、 持续改进:
根据反馈和安全测试结果,不断改进SSDLC流程。

12、 合规性检查:
确保软件的开发和部署符合相关的法律法规和行业标准。

13、 文档和审计:
记录安全活动和决策,以便于审计和未来的回顾。

实施SSDLC需要组织层面的承诺和支持,以及跨部门的协作。通过在软件开发的每个阶段都集成安全措施,可以有效地减少软件中的安全漏洞,提高整体的安全性。

常见社会工程学攻击方式

1、钓鱼攻击
攻击者通过伪造看似来自受信任来源的电子邮件、短信或电话,诱骗用户点击恶意链接、下载恶意软件或泄露个人信息。例如,假冒银行或电商网站发送验证信息的邮件,要求用户点击链接进行账户验证

网站钓鱼:攻击者创建与真实网站相似的假冒网站,以诱导用户泄露信息
短信钓鱼:攻击者构造中奖、促销等短信,以诱导用户泄露信息
邮件钓鱼:攻击者伪造内外部邮件,以诱导用户泄露信息
扫码钓鱼:攻击者通过提供小礼品、红包等方式,以诱导用户扫码,达到攻击目的
U盘钓鱼:通过散布带有恶意软件的U盘,以诱导用户泄露信息
语音钓鱼:攻击者通过伪装熟人或各类工作人员,以诱导用户泄露信息
视频钓鱼:攻击者通过伪装为熟人或某类较为暴漏的工作人员,以诱导用户泄露信息
鱼叉式攻击:攻击者针对特定目标进行定制化的钓鱼攻击
捕鲸攻击:针对高级管理人员的钓鱼攻击,目的是获取更高级别的访问权限
水坑攻击:研究攻击对象,找到最常访问的网站,攻陷该网站,从而达到攻击受害者的目的

2、伪装身份
攻击者通过伪造身份,冒充公司高管、技术支持人员或朋友,获取用户的信任并诱骗其泄露敏感信息。这种攻击方式在社交网络和即时通讯工具中尤为常见

身份假冒:在社交软件上,假冒高管,达到攻击目的
尾随攻击:攻击者通过在社交媒体上建立信任关系,然后利用这种关系进行攻击
三角诈骗:攻击者通过操纵多个受害者来达到最终的攻击目标
浪漫诈骗:攻击者通过建立虚假的浪漫关系来诱导受害者提供财务信息或其他敏感数据
深度伪造(Deepfake):利用人工智能生成的伪造视频或音频,用于误导或欺诈

3、紧急感诱导
利用用户的紧急心理,如账户被盗、密码泄露等紧急情况,诱骗用户迅速采取行动,如重置密码、转账等。攻击者常常通过制造紧迫的氛围来增加攻击的成功率

技术支持诈骗:攻击者冒充技术支持人员来诱导用户提供访问权限
疫苗接种攻击:攻击者通过提供虚假的安全建议或解决方案来诱导用户执行恶意操作
预载攻击:攻击者通过提供恶意软件的预加载版本来诱导用户下载

4、物理接触
除了线上攻击外,社会工程学还涉及物理接触。攻击者可能通过面对面的方式,如假冒维修人员、快递员等,接近目标并获取敏感信息或执行恶意操作

电视盒子:攻击者通过售卖甚至上门安装有恶意软件的电视盒子(或类似设备),达到攻击目的
面试攻击:通过高薪岗位,让竞对参加面试,获取相关信息
生物识别数据攻击:针对生物识别数据(如指纹、面部识别、虹膜扫描)的攻击

5、尾随攻击
攻击者跟随一个授权用户,在其刷卡或授权进入一个受限制的物理区域时尾随进入。由于人们通常不愿意在门口停留避免妨碍他人,攻击者可趁机一起进入受限区域

逻辑尾随:攻击者尝试通过建立信任关系或模仿其他用户的行为,来获得对系统或数据的访问权限

6、虚假新闻传播
灌水攻击:通过水军,伪造和散布虚假信息,引发客户群体兴奋或群体恐慌,达到攻击的目的

7、身份盗取
攻破受害方的社交账号,冒充受害方在社交媒体上进行活动,达到攻击的目的
比如:发送钓鱼信息,发送恶意言论等

8、云账号劫持
攻击者获取受害方的云账号访问权限,达到攻击的目的

常见硬件攻击方式

1、设备欺骗
WiFi欺骗,攻击者通过设置假冒的WiFi热点,诱使用户连接,从而截获数据
基站欺骗,和上面方式比较一致,只不过是冒充手机的基站
蓝牙攻击,利用蓝牙设备的漏洞,攻击者可以截获通信、传播恶意软件或接管设备

2、信号干扰
通过信号干扰, 进行攻击,比如:
无线电频率(RF)攻击,可以截断基站、wifi、蓝牙、RFID等
电力线通信(PLC)攻击,可截断通过电线进行数据传输的系统,比如电力猫等
卫星通信攻击,针对卫星通信系统的攻击,可能干扰或截获卫星传输的数据
声波攻击,利用声音信号干扰或窃取数据,例如通过扬声器或麦克风进行的攻击
光注入攻击,通过向设备的光学传感器(如摄像头)注入光信号,可能干扰设备操作或进行数据窃取。

3、设备攻击
固件攻击,攻击者通过篡改设备的固件来控制设备或窃取数据
芯片攻击:据传某CPU厂商和某网络厂商,其实都有后门的,所以一直在推广国有化制造
设备加装,通过加装设备,达到数据窃取或数据欺骗的目的
物联网(IoT)攻击,物联网设备通常安全性较差,易于被攻击者利用
车联网(V2X)攻击:针对车联网技术的攻击,可能危及车辆控制或乘客安全

4、移动设备攻击
随着智能手机和平板电脑的普及,针对移动操作系统的攻击也越来越常见
比如:
在移动商店,上架有恶意代码的APP,达到窃取用户信息的目的
引导被攻击者安装,未上架的,有恶意代码的APP
利用越狱或ROOT后的系统漏洞,对受害者进行攻击
利用设备后门进行攻击,一些专用设备可以快速复制指定iPhone中的数据

5、网络设备攻击
把网络设备(无论是路由器、交换机还是基站)拿下,攻击者的收益是很显著的

6、默认设置攻击
不少硬件设备,有一些默认设置,很容易被攻击者使用
比如一些较老的家用路由器,默认用户名密码,很多家庭从来不改,一分钟被攻破

7、侧信道攻击
通过一些非常规数据传输手段,来获取敏感信息
比如:喇叭声音、指示灯、磁盘声音等
有时候,系统功耗、处理时间也有很高的价值

8、真物理攻击
通过物理方式进行破坏
这种攻击方式,比实际大家听到的多得多,不只是挖断光缆这么简单
所以就有专门的硬件加固来进行应对

9、冷启动攻击
比如:关机,拿走硬盘,复制信息

10、硬件木马
在硬件制造过程中植入的恶意组件,用于长期潜伏和数据窃取
比如海湾战争中,伊拉克采购了法国的打印机,在运输途径约旦的时候,被美国情报人员替换了带有病毒的芯片
在战争前期,美军激活了打印机芯片中的病毒,让伊拉克防空部队直接瘫痪,直接丧失了制空权,导致了战争出现了一边倒的情况

11、移动硬件木马炸弹
2024年9月17日~2024年9月18日,以色列对黎巴嫩境内植入爆炸物的寻呼机、对讲机设备进行了引爆,造成了大面积人员伤亡。
据报道,这些设备由匈牙利的套壳公司BAC生产(贴牌台湾金阿波罗公司),增加了塑性炸药和远程引爆装置。而且这批设备至少在五个多月前已经投入了使用。
这是一次典型的社会工程学+硬件供应链+硬件木马炸弹的攻击

小插曲:
早在1996年,以色列特工就通过遥控引爆移动电话炸弹的的方式,暗杀炸死了哈马斯的炸弹工程师叶海亚·阿亚什。
近年来,随着各国情报能力增强,屡次发生通过手机GPS泄露关键目标位置的情况。
为了避免被手机GPS定位,一些黎巴嫩的武装分子弃用了手机,转而用寻呼机、对讲机进行联络,此次攻击十分有针对性。

常见软件攻击方式

1、漏洞攻击
无论是操作系统、中间件还是应用软件,一定都存在漏洞
如果防守方没有及时升级打补丁,就容易被攻击
在爆出漏洞到漏洞补丁推出,到漏洞被修复,这之间有个时间差
在这个时间差之内,利用该类漏洞进行攻击,被大家成为0day攻击

比如:
2022年向日葵远控软件爆出远程代码执行漏洞(Windows平台),攻击者可利用该漏洞获取服务器控制权

2、逆向工程攻击
攻击者通过分析软件的内部结构,寻找漏洞或破解软件的保护机制
比如:虚拟脱壳、动态调试等
当然,业界也有成俗对抗手段,加壳、混淆、反调试、加密狗等

3、缓冲区溢出攻击
通过向程序的缓冲区写入超出其长度的内容,破坏程序的堆栈,使程序转而执行攻击者预设的指令
内核和一些应用软件都曾出现类似漏洞

4、反序列化漏洞攻击
利用现代编程序列化、反序列化的能力,精心构造序列化对象,发送到服务端
服务端反序列化后,执行反序列化后代码,触发恶意代码

5、文件包含漏洞攻击
一些脚本化的编程语言,比如PHP,如果没有做好正确的设置
攻击者就可以通过语言中的,文件包含函数(比如include),读取到服务器上受限制的文件信息,达到攻击目的

6、组件攻击
通过软件引用的各类组件漏洞,进行攻击

比如:2021年爆出的Log4j2漏洞,由于Log4j2提供了“{payload}”解析功能,攻击者可以构造payload,调用JNDI服务,JNDI则会从攻击代码指向的远程服务加载提前部署好的class,并且执行。这样攻击者就可以远程执行任意指令了。

还有:swag-ui如果不做好权限管控,攻击者可以轻易看到代码文档,根据文档构造针对性很强的攻击

7、开源攻击
在开源库中,注入恶意代码
比较出名的包括明尼苏达大学学生向Linux内核源码提交恶意代码,东窗事发后,整个学校被禁止提交Linux源码

8、逻辑炸弹
即使是闭源软件,也有被嵌入恶意代码的情况,当满足特定条件时会自动执行恶意操作
比如,某银行程序员,设置当自己的账号被禁用三个月后,会诱发恶意代码,批量删除数据

9、供应链攻击
软件开发到上线,是一个长长的供应链,包括开源组件引入,外部组件采购,镜像构建,软件本地化,软件编译,软件集成,软件部署等等很多环节
攻击者只需要攻破整个供应链中的某个环节,就可以将恶意软件或漏洞被包含在最终软件中
供应链攻击,再次印证了一个安全守则:安全木桶理论,最短的板,代表了整体安全水平

比如:
2012年,中文版PuTTY被曝出存在后门,该后门会自动窃取管理员输入的SSH用户名和密码,并将其发送至指定服务器。攻击者所作的就是,获取英文版源码,汉化,植入后门,打包发布,甚至做了推广。(利用了国内用户更倾向于使用英文的心理)

2015年爆发的XcodeGhost事件,攻击者利用当时开发者难以通过官方渠道下载Xcode的疏漏,发布了带有病毒的Xcode,导致2500多款通过该Xcode开发的iOS App被植入恶意代码,影响到的iOS用户数达1.28亿。(利用了XCode的下载缓慢,国内用户倾向于寻找替代源的心理)

2024年的“微软蓝屏”事件,就是微软安全供应商CrowdStrike更新了错误的软件配置,导致850万设备蓝屏,全球多地航班停飞、医疗设备瘫痪、金融系统中断。

供应链的下游,还有一类是桌面(电脑维修人员),也必须做好管控,否则风险同样巨大。

10、插件攻击
其实插件攻击,比较像供应链下游的攻击
就是通过利用软件、网站的插件漏洞,达到攻击的目的
更有甚者,可以自己发布一个带隐秘漏洞的插件,从而达到攻击的目的

比如:
2017年,Chrome浏览器内的知名插件User-Agent Switcher被发现内藏恶意代码,会上传用户打开的每一个标签页链接,并会在用户访问部分网站时插入推广代码

11、组件替换及恶意投毒
根据软件的加载规律,替换指定位置的可执行文件、dll、jar包等
让攻击组件优先于默认组件先行加载,达到攻击的目的
最直接的,莫过于直接替换可执行文件了
当然,一些premain的方法,也可以被攻击者利用

这其中,有一类情况叫做“恶意投毒”,攻击者借助Python、Node.js等技术栈的依赖包在安装期间即可执行代码的功能,通过注册相似包名、抢注企业内部包名等方式进行投毒,将病毒木马、挖矿、窃取敏感信息等恶意代码插入安装期间的hook函数或三方组件入口函数内,若企业员工在研发过程中疏忽大意导致拼写错误或是未指定内部软件仓库,就有可能被攻击成功,让攻击者进入办公网络甚至是生产网络。
比如:2022年,攻击者定向收集Ably公司发布的各类产品、代码名称,发布了几十个恶意Node.js依赖包进行投毒​。

同理,直接使用三方源,也很容易遭受投毒攻击,只要同步链路上游被攻破,下游全部会被污染。

12、应用软件攻击
此类攻击,主要针对常用应用软件,在其中注入恶意代码,通过软件厂商的官方渠道分发,达到攻击目的。

比如:
2020年,SolarWinds遭遇攻击,攻击者攻陷了企业内的CI/CD平台,污染了关键产品SolarWinds Origin,进而影响了美国政府等大量下游客户。

13、软件授权攻击
包括:破解补丁、密钥生成器、激活工具等

14、后门攻击
一些软件,为了维护方便,其实留有一些后门,这些后门中,很多并不是因为恶意产生的

我发现过一个后门,是一个资深开发,为了避免数据修改时需要走繁琐的数据修改流程,做了一个接口,通过复杂参数设置,可以推送执行任意SQL
类似后门,被攻击者发现后,后果不堪设想

24年,一位叫Jia Tan的开发者,用了三年时间,获取XZ压缩软件开发者及社区的信任,然后开始后门植入。
他利用m4脚本、shell脚本、测试文件及复杂的混淆技术,在编译期间很隐秘的对XZ软件注入了恶意后门代码,生成liblzma.so
部分发行版中,sshd会链接到systemd,systemd会链接到liblzma,这样就通过XZ,对sshd注入了恶意后门代码
由于被注入的sshd在执行时比较慢,很快就被一些细心的人发现了,避免引发更大的危险
这个历时3年的后门植入攻击事件,才慢慢浮出水面

15、逃逸攻击
包括沙箱逃逸、容器逃逸等,虚拟机逃逸
比如:通过容器逃逸,获取宿主机的访问权限

16、大模型投毒统计
通过在训练数据中植入恶意样本、具有误导性标签或特征的数据,扭曲模型的学习过程,导致模型偏离真实数据的表征。
被攻击后,模型在预测时,会产生错误结果。
导致给出令人不悦的反馈,甚至引导给出错误决策。

17、软件配置错误
24年爆发了严重的“微软蓝屏事件”,导致850万台使用了windows系统的设备出现大规模蓝屏。
是微软的安全供应商CrowdStrike,批量推送了错误的安全规则所致。

18、权限管理问题
大家经常开玩笑说的,从删库到跑路,很多时候就是把过大的权限给到错误的人员,比如
直接给开发同学权限,后台执行批量删除语句,但他由于粗心,执行时没有带上where语句,更没有limit
直接把drop库的权限,给到了基层运维同学,但他因为一言不合,直接删了生产库
直接允许工程师通过自己写的脚本工具,对云服务器进行批量运维,某次紧急事件,紧急执行了脚本年久失修的脚本,导致整个zone崩溃

常见网络攻击方式01

1、SQL注入
对于存在漏洞的网站,精心构建网页提交参数,参数中附带恶意攻击的SQL语句
网站服务器代码,并没有主动过滤这些恶意代码,就会导致攻击者的SQL语句被执行
比如:

--原始语句拼接:
select * from tableA where uid='传入参数'
--把参数设计为:
a'; delete * from tableA; '
--直接替换后就成为:
select * from tableA where uid='a'; delete * from tableA; ''
--这张表的数据就没了

2、跨站脚本攻击XSS
攻击者在网页中注入恶意脚本,当其他用户浏览该网页时,恶意脚本就会在用户的浏览器上执行
包括:反射型XSS、存储型XSS、DOM型XSS、其他XSS
比如:反射型XSS,攻击者在网站A中,放入精心构造的网站B的URL,但这个URL中包含恶意脚本
用户点击这个URL时,恶意脚本会被一同发送到网站B,然后反射到用户浏览器,被用户浏览器执行
从而达到盗取信息、劫持等目的

3、跨站请求伪造CSRF
比如:被攻击者已经登录了网站A,并保留有登录信息
攻击者诱导被攻击者访问网站B,利用网站A的登录信息,向网站A发送精心构造的请求,比如转账请求
网站A收到请求后,判定登录信息有效,执行了转账,后果可想而知

4、XML External Entity攻击XXE
对于一些老旧的网站,上传精心构造的XML,利用XML解析器配置不当,可以执行XML的DTD中的指令
这样再访问这个被上传的XML,就能看到指令的执行结果

5、服务器端请求伪造SSRF
利用服务器端之间的信任,精心构造请求,绕过服务器限制,达到攻击目的
比如攻击者希望获取A网站的一张保密的图片,但没有权限
攻击者又发现B网站与A网站之间有更高的信任关系,而且B网站的留言功能,会主动缓存一些URL的图片资源
攻击者在B网站留言板,输入A网站的图片地址,过几分钟一刷新
B网站已将A网站的图片进行了缓存,攻击者就获取到了这张图片,绕过了A网站的限制

6、JSONP攻击
JSONP技术多用于跨域获取数据,并执行回调,如果没有做好限制,容易被攻击者利用
比如攻击者在网站A上构造一个精心的URL,这个URL指向网站B,同时带有一个回调函数
如果没有防护,网站B会按请求内容进行响应,然后返回数据,被攻击者的浏览器会自动执行回调函数
攻击者可以利用这个回调函数,达到获取信息等非法目的

7、越权攻击
攻击者通过构造访问URL,尝试获取超出账号的权限
传统Web服务,很多页面都可以被越权攻击,甚至访问到管理员页面
包括水平越权和垂直越权
比如一个账户,原本只能看到一个商品的销售信息,但在URL中,通过枚举商品ID,居然可以访问到所有商品销售信息

8、扫描攻击
利用漏洞、弱口令、端口扫描工具,对网络中主机进行批量扫描,根据扫描结果一一攻破,然后偷偷上传木马等控制软件
很多肉鸡就是这样被制造出来的

9、目录遍历
如果网站没有限制不可枚举目录,其实风险是很高的
无论是看到网站源码、配置文件、还是日志,都有可能暴露出新的被攻击点

10、漏洞攻击
利用主机、中间件、各类组件现有的漏洞,然后进行利用

11、零日漏洞攻击
任何软件,在爆出漏洞到漏洞补丁推出,到漏洞被修复,这之间有个时间差
在这个时间差之内,利用该类漏洞进行攻击,被大家成为0day攻击

比如“三角测量”攻击,利用多个零日漏洞,攻破iPhone防护,可安装恶意软件

12、命令注入
有些网站,有命令执行的功能
这样,攻击者可以通过精心构造的请求,将想要执行的脚本,嵌入到请求中
最终达到在服务端执行命令,并返回结果的目的

13、文件上传
有些网站,没有做好上传文件的限制
攻击者甚至可以上传shell脚本
结合上面的命令注入,后果可想而知

14、恶意文件
通过宏、代码嵌入等方式,达到执行恶意代码的目的
比如N年前常见的office宏攻击或VBA攻击,下载一个文件就中招了
还有精心构造的图标、后缀、压缩包,也能达到麻痹被攻击者,执行恶意代码的目的

15、蠕虫病毒攻击
通过系统或某些软件漏洞,自动攻击主机或网络设备,复制,潜伏,然后继续攻击其他电脑
这样也能抓到不少肉鸡
但蠕虫传播很快,肉鸡多了,就成了僵尸网络

16、木马攻击
通过各类攻击手段,在被攻击方的电脑上,安装一个小程序
这个小程序被成为特洛伊木马,会隐藏自己,好一些的在任务管理器都找不到,更厉害的可以获取比内核还高一些的权限
然后攻击者,通过这个木马,获取被攻击者的信息,甚至对电脑进行完全控制
比特币价格好的时候,有人还用攻击的到的电脑挖矿,你能信。。。

17、勒索软件
加密算法的发明人,应该也没想到,自己发明的算法,会被用来开发这类软件
和蠕虫拼命扩散资深、木马拼命隐藏资深,并不一样
勒索软件会在后台,拼命扫描你的各类重要文档(包括数据库文件),然后进行加密
加密之后,会告诉被攻击者:你的资料都被加密了,想要吗?那就给指定地址打几个比特币
然后就会再解密
如果不支付,也可能会被撕票。。。
由于密钥长度一般很长,所以解密几乎不可能,要么交赎金,要么抓到幕后的攻击者

18、钓鱼邮件
将攻击代码或攻击软件,伪装为压缩包等方式,通过邮件,大规模发送给被攻击客户
当客户防护意识不够强的时候,误点了这些代码
就相当于自己安装了木马,或者蠕虫
这些软件既可以从你电脑中偷取资料,严重的时候会让电脑成为肉鸡

19、钓鱼网站
通过伪造网站,让用户误以为自己在官网
填写自己的用户名、密码、严重码信息
殊不知别人在真正的官网,通过这些信息登录成功
已经盗取了你的账号、你的信息、你的金钱

20、会话劫持
被攻击者登录成功后,获取被攻击者的会话识别信息
利用会话预测或会话固定技术,模拟客户,接管会话
客户和网站可能都不知道被劫持了

凭证填充:通过获取的凭证,可以尝试该网站各服务接口,尝试获取有价值的信息

21、邮件轰炸
通过软件,对指定邮箱,发送大量垃圾邮件
随着各类垃圾邮件过滤算法的提升,越来越难了

22、暴力破解
包括密码爆破、验证码爆破、目录爆破等
通过常用弱密码字典、被脱库的第三方密码库,构造程序,不断尝试自动登录
现在这种攻击基本都会被防护,密码错几次后就24小时后才能重试
但被脱库的第三方密码库,还是危害很大的
要定期改密码
这里再补充一个“短链爆破”,由于短链位数少,很容易被遍历,而且几乎没有访问限制,经常被攻击者作为一个突破口

23、密码攻击
除了密码爆破(字典、枚举),还有一些常用的手段
彩虹表攻击:通过已知的hash值,倒退密码,如果不加盐,还是很容易被攻破的
密码喷洒:通过一个防护薄弱的网站,获取被攻击者的密码,用这个密码,尝试各大网站
撞库攻击:通过已经泄露的用户名和密码组合,尝试在其他网站上进行登录,以获取未授权的访问权限
扫号攻击:攻击者利用网站页面或应用程序的接口来检测账号是否存在,为后续攻击手段做好准备

24、流量劫持(主机端)
浏览器劫持:通过改变用户的浏览器设置,如默认搜索引擎和主页,来重定向用户到特定的网站
数据劫持:篡改HTTP页面,注入广告或非法内容,包括HTTP头注入和HTTP内容注入

25、网站劫持
网站被攻破后,上传恶意页面,从而可以
a、页面植入
一般用户是不知道,他们看到的一个页面,可能是由n个页面组成的
在一个可信网站下,嵌入一个带有攻击目的的页面
诱导客户输入敏感信息,进而达到攻击者目的
b、点击劫持
通过视觉欺骗手段隐藏恶意链接,诱使用户进行错误点击
c、网站嵌入
嵌入各类不法网站
d、HTTPS欺骗
在安全网站中,嵌入不安全内容,欺骗客户
e、恶意下载
诱导客户下载恶意程序

26、配置错误攻击
配置错误,比大家认为的多很多,比如:
报错时,debug信息直接throw到页面上
spring boot可以通过env直接把配置信息展示到页面上
swagger ui可以不授权访问
redis等中间件没有设置访问限制
容器部署的时候,没有修改默认管理页面的密码
各类密钥,直接上传到代码库
打Jar包的时候,加入了混淆防护,但Source却包一起上传了maven库
生产环境和测试环境混用,导致删了生产数据
买了防火墙,但网络流量不经过防火墙,你能信?

27、逻辑漏洞攻击
这类攻击也很多,比如:
折扣券可以多次消费
通过带一些参数,直接获得更高的折扣
通过带一些参数,可以直接获得任意用户访问的权限
通过带一些参数,直接绕过验证码的防护
只有你想不到,没有他写不出来的逻辑Bug

28、缓存攻击
针对网站缓存特性,构建大量请求,造成缓存击穿或缓存穿透,从而导致网站崩溃

29、杂烩饭式恶意软件
组合使用多种恶意软件技术,进行恶意攻击,并有效防止被查杀。
比如“熊猫烧香”

30、加密货币攻击
挖矿劫持:利用受害者计算资源,给攻击者挖矿
51%攻击:控制网络超过一半的算力,达到操纵交易的目的,越是小的交易网络,越容易被攻击
智能合约漏洞攻击:利用合约中的逻辑漏洞,达到攻击目的,已经发生过多次,每次被攻击者都损失惨重

31、社会工程学攻击
这个是最难防的
就是有目的的与相关人士沟通,获取信任,进而获取权限
手段包括金钱、心理学、信息不对称等,方法通过聊天、电话、视频、语音、邮件,五花八门

常见的终端攻击方法

1、远程桌面攻击
这种攻击在90年代和00年代是十分流行的,当年大家安全意识淡薄,3389端口毫无防护。
就算现在,远程桌面仍然是被重点照顾的对象,毕竟攻破后,太好用了。
一些第三方的远程桌面攻击,被爆出漏洞后,同样给了攻击者极大的遍历,比如某花。

2、共享文件夹攻击
在一些职场内,共享文件夹仍然可以设置为everyone可以访问,这样问题很大。
一方面,有些不应该被共享的资料,会被非法获取
另一方面,也容易被攻击者,利用共享文件夹投毒,访问的人越多,传播越快

3、移动存储攻击
通过U盘,将资料拷贝走

4、PE攻击
通过BIOS设置,通过U盘系统启动,将资料拷走

5、磁盘攻击
将磁盘挂载到其他电脑,将资料拷走

6、打印机
在打印机,读取刚打印出的机密信息,甚至将材料拿走
用网络设备,模拟打印机,进行中间人攻击,可非法获取很多资料

7、屏幕攻击
通过监视、偷拍使用者的屏幕,获取信息的攻击方式

8、文件发送
通过网站上传、邮件附件、聊天工具、文件传输工具、文件分享工具、代码管理工具等,非法获取信息

如何通俗解释BadUSB攻击

攻击者构建特殊的USB设备,比如USB键盘
该设备有两块芯片,一块就是USB键盘芯片,另一块是攻击芯片

当该USB设备连接电脑后,电脑会识别为键盘,并自动安装好驱动

此时,攻击芯片向电脑发送纯键盘指令
打开命令行,下载指定软件,安装该软件,这台电脑就中木马了

据说某组织,利用类似方法,盗取了不少快递单信息
两人一组,到快递集散中心加装沟通业务
A拉住负责人聊业务
B趁机找电脑插入USB设备,代码运行完成后,再拔出设备
后台木马很有针对性的,盗取快递单信息
被抓时,已经成功攻击了十几家快递站点

记录一个卡券系统漏洞

大概三年前,遇到过这样一个系统需求,被安全团队及时发现,避免了引起大规模的问题。

事情是这样的,我们有一个比较老的外购卡券管理系统,之前都是实体卡直接核销的。
后来逐步上线了各大电商平台,就需要通过虚拟卡的方式,通过短信将激活地址、卡号、卡密直接发送给客户,客户可以直接注册、激活。

但这时遇到了两个问题:
1、客户需要复制卡号、卡密到激活地址,操作比较繁琐
2、卡号、卡密都很长,会造成一个短信无法成功发送,需要拆分成两个短信发送,同样是不方便

业务方希望客户操作更加方便,与供应商沟通,供应商提供了这样一个方案:
1、客户下单完成后,将激活地址+卡号+卡密,一起生成一个短链
2、直接将短链通过短信发给客户
3、客户点击短链,一键绑定

听起来一起都很美好是不是?

但很快就被安全团队质疑了,攻击思路是这样的:
1、暴力枚举短链,批量获取短链实际地址
2、匹配地址,批量抓取卡号卡密
3、申请账号,绑定卡号卡密,攻击成功

于是这个需求被判定为高危风险,直接就被否定了。

一种U盘蠕虫的攻击方法

最近,从做安全的哥们那里,听说了一种利用社会工程方法,实施蠕虫攻击的案例。具体攻击是这样实施的:

攻击者要攻击一个内外网隔离的实验室,但一直无法攻入内部网络。

于是,他们精心设计了一种U盘蠕虫,将蠕虫伪装为容易引发人好奇心的资料“比如小电影”,与其他无关资料一起,拷贝到几个各异的U盘中。

然后故意将U盘散布到实验室工作人员的上班路径中。

然后总有一两个眼神比较好,好奇心比较重的工作人员,点击了伪装的蠕虫(U盘策略为,能进不能出)。

还好他们的其他防护策略做的比较好,最终没有引发严重的问题,但触发了安全警报。

于是开始排查,但投U盘的人都比较贼,而且U盘很小,没能找到。据说最终收缴上来的U盘有好几个。

然后,实验室进一步升级了安全措施,并禁用了U盘的读取权限。

在同步排查外网的时候,才发现,几个月前外网就被人攻破了。

然后又花了大价钱,升级的外网安全防护。

人性的好奇心、贪婪和不够警惕的友善,永远是社会工程攻击的重要途经。