安全场景-软件供应链及物联网安全
供应链及物理网安全
##### 1、APK分析
考察点:逆向分析、文档收集、数据分析
##### 2、软件供应链安全分析
- MaMaDroid【13】
- Drebin 【14】
- AppContext【20】
==考察点:二进制代码分析,二进制函数特征提取,补丁比较,源代码分析==
- 如V. Livshits 等使用静态分析的方法在Java 源代码中进行脆弱性(vulnerability)检测的策略[47]。
- G. Grieco 和G. Grinblat 等使用机器学习方法根据软件的内存错误信息训练测试模型, 检测软件漏洞的研究[49] Toward Large-Scale Vulnerability Discovery Using Machine Learning
- 彭小详等人的研究针对加壳技术, 提出了对恶意程序进行自动脱壳的方法[59]。Research of Malicious Code in Automatic Unpacking
- 「功守道」软件供应链安全大赛·C源代码赛季启示录
##### 3、PowerShell反混淆
考察点:代码分析, 混淆语句定位、还原
- XShell污染
- CCleaner投毒
混淆原理
网上帖子太多了,可以参考下看雪论坛用户发的翻译贴: https://bbs.pediy.com/thread-248034.htm
自动化反混淆工具
Unit42安全团队编写的PowerShellProfiler.py: github地址: https://github.com/pan-unit42/public_tools/tree/master/powershellprofiler 用法及原理参考: https://www.freebuf.com/sectool/219057.html
##### 4、物联网漏洞挖掘
考察点:常见漏洞原理,二进制逆向工程,自动化程序分析
相关论文
DroidMD: an efficient and scalable Android malware detection approach at source code level (2021 C&S)
Detection of Repackaged Android Malware with Code-Heterogeneity Features.(2020 TDSC)
1.1 软件供应链
https://www.cnblogs.com/bonelee/p/13768901.html
1.2 物联网安全
常见恶意行为
*标注为单点确定性恶意行为,**标注为二阶段恶意行为中的上游或下游行为,#标注为复合恶意行为
* 敏感信息异常采集:针对生产环境,最大的威胁不是造成应用执行异常,而是在无形中泄漏关键敏感数据,包括可能造成机器控制权丧失的系统相关配置数据,关键的应用存储的用户数据等。
- 口令与秘钥类型文件直接操作 *
- 系统敏感配置文件绕过API直接读取 *
- 典型服务端应用敏感配置文件直接读取 *
- 系统账户操作历史相关信息读取 **
- 典型服务端应用管理账户和用户数据读取 **
- 系统一般描述性信息采集 **
- 软件供应链上游特定资源数据探测、获取和泄漏(如源码遍历泄漏) #
* 关键数据篡改:任何需要在生产环境上,修改、写入数据或代码从而实现恶意打击的行为,我们统一归纳到这一类里面,较为泛化。
- 覆盖、篡改或插入口令秘钥类型文件用以账户植入 *
- 系统、用户环境变量和关键配置文件修改 **
- 自动执行脚本/用户操作历史篡改 **
- 典型服务端应用配置文件和关键数据文件绕过API方式篡改 *
- 系统/典型应用重要位置的脚本/可执行文件置换 **
- 开发、测试等环境系统默认工具链篡改替换 *
- 开发、测试等环境特定类型源文件/资源文件篡改污染 #
*不可信数据传入渠道:以上两者重点考察了隐形的软件供应链本地恶意行为。在涉及到网络和交互的场景下,通过从供应链上进行污染,一种比较直接且有持续后效的恶意行为就是撕开一个口子,供后续入侵进场。
- 下载敏感类型文件到临时目录 **
- 关键可执行文件(系统应用/关键服务端应用/关键库)下载/释放 **
- 网络传入指令/地址类型数据且无校验执行/访问 *
* 不可信信息外传渠道。对应于上面的传入。敏感数据的采集后,需要搭配对应的下游传出才能形成完整恶意行为链路,常规可能的渠道形式分为两类。
- 上游数据未脱敏形式的网络传出(TCP/UDP/ICMP) **
- 上游数据未脱敏形式的本地确定位置落盘 **
* 其它典型木马后门行为。在上述行为框架之外,在生产环境上具有非单纯破坏效果的恶意行为,划分为此类,包括但不限于:
键盘hook等输入监控行为 *
网络劫持行为 *
全局挂钩注入行为 **
远程控制 #
经典赛题事例
#1:thttpd后门陷阱
从基础软件或应用上面入手,稳定可控的后门是最佳选择。而在一个无关应用中突兀地出现网络连接,隐蔽性总归很差;在thttpd当中,以很袖珍的代码实现稳定的后门,是这里首先要呈现的一个题目。
在thttpd项目,恶意代码嵌入到libhttpd.c文件中,上下游恶意代码相关上下文:
1 | *** /thttpd/libhttpd.c |
后门会根据http头判断是否开启cgi功能,并根据http头Accept-Language决定解析执行文件的路径。上述代码段中,首先通过http头TE:设置开启cgi功能(对应上述代码中,httpd_parse_request函数中插入的else if ( strncasecmp( buf, "TE:", 3 ) == 0) {...}代码块)。而下游代码同样巧妙,指定特殊的Accept-Language: en;q=1.1决定是否执行指定的系统命令(即cgi_child函数插入的if ( strstr( hc->acceptl, "en;q=1.1") != (char*)0 ) {...}代码块)。
本例恶意行为的主要特点:
- 该后门的嵌入,新增代码量极小(共7行),巧妙借用了thttpd处理用户请求、cgi的原本逻辑,借用了execve的调用,没有任何新增的API调用等行为,可以躲避有意识的行为特征匹配检测。
- 该后门在代码中的插入,分布在了存在逻辑关联的上下游两个位置,在源代码分析领域,属于过程间代码扫描问题,对于基于语义的源代码静态扫描方案也提出了很高的要求。