常见软件攻击方式

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

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

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

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

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

6、组件攻击
通过软件引用的开源组件漏洞,进行攻击
比如之前发生的Log4j2漏洞,还有swag ui配置错误

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

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

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

24年的“微软蓝屏”事件,就是其供应商更新了错误的软件配置,导致850万设备蓝屏。
还有一类就是电脑维修人员,也必须做好管控,否则风险巨大。

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

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

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

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

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

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

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

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

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

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