0x01 取证背景

近日,实验室部署的 天穹威胁监测系统
监测到IoT蜜罐系统中的某视摄像头遭受了外部的一次成功攻击。实验室相关人员对该次成功攻击事件展开了取证实践,顺利获取到攻击样本,并以此展开深入取证分析。

0x02 取证过程

1. 取证环境完善

为了进一步获取到有效的线索,我方研究人员通过公司自研的物联网取证系统获取到了该摄像头的Linux Root
Shell。由于该设备自带的Busybox已经过厂商裁剪,部分取证所需命令缺失,于是上传相应架构的完整Busybox用于后续取证。

2. 系统环境检查

首先,针对设备文件系统进行了检查,特别是/tmp目录,均未发现可疑的新增文件。因为物联网设备常用的文件系统如squashfs等属于只读文件系统,攻击者无法将恶意程序上传到此文件系统内,而/tmp目录对应的则是一种临时文件系统tmpfs,该文件系统是一种基于内存的文件系统,可允许写入操作,所以一般
攻击者常见的操作是会将恶意程序放置在此目录然后运行

于是,想到另一种可能即程序在运行起来后会被删除,查看进程信息,找到了如下图所示的可疑进程,查看/proc目录下该进程的exe文件,发现该程序是从/tmp目录启动的,具有非常大的可疑性。

至此,我方研究人员在设备中发现了一个 原始二进制程序被删除且从/tmp目录启动的程序
,该程序具有极大的可疑性,于是立即对此证据进行固定,以便后续展开详细的分析。

3. 可疑证据固定

由于设备存在重启导致进程结束的可能性,也为了进一步对线索展开更深入的分析,需将可疑程序外传至可控环境中。

我们使用 工具nc来实现将证据外传至服务器
,首先在设备端通过nc监听某一端口并将样本程序重定向至该通道,接着在可控服务器端通过nc连接该设备监听的端口并将结果重定向至新文件,最终完成从设备上将可疑证据外传至我方服务器上,为后续证据有效性分析提供环境。

4. 证据有效性确认

虽然通过查看系统进程信息发现一个从可写目录/tmp启动的进程,并且原始二进制程序在启动后被删除,具有较大的可疑性,但还需对该程序做更深入的分析来判断其是否真正具有恶意行为,以及程序的具体行为来协助我们后期对该事件进行溯源。

程序信息

通过file命令查看程序基本信息,发现该程序未被stripped。

静态分析

  • 构造回连C &C的HTTP请求

a.
根据程序启动时外部参数个数不同,构造不同的uri
b.
通过ioctl函数获取设备网卡mac地址,并拼接到uri尾部
c.
获取当前程序运行路径拼接到uri尾部

  • 向C &C发送请求获取响应

a. 构造发送到C&C的HTTP请求


**b.
**发送请求并接收响应

  • 解析响应数据获取下发的命令, 该C &C响应内容有3个字段,通过A、B、C三个字段进行区分,其中A字段为循环请求C&C的睡眠时间;B字段为攻击者指定的反弹shell的地址;C字段为攻击者下发的命令

**a. **提取字段A的内容

**b. **提取字段B的内容,根据后续分析,字段B表示的是反弹目标的IP和端口

**c. **提取字段C的内容,根据后续分析,字段C是攻击者下发的命令

  • 执行攻击者下发的命令

  • 反弹shell到目标地址,shell_func函数的参数v12根据其在栈中的位置推算,与data_paste函数第一个参数v11相差8个字节,而v11+8是在data_paste函数中存储了B字段中的IP内容,v12[10]即v11+8+2x10则是在data_paste函数中存储了B字段中的port内容。

  • 等待攻击者指定的时间后再继续请求任务

动态分析

模拟C&C任务下发服务以及反弹shell监听,实际运行效果与我们静态分析一致。

分析总结

该样本功能较为简单,但基本满足攻击者对受控设备的持久化控制需求,首先通过向C&C服务器获取任务信息,任务分为3块内容, 第一
为程序该次请求到下次请求的等待时间; 第二 是攻击者下发的命令; 第三 则是指定受控设备反弹shell的目标地址。接着会通过sh
-c执行攻击者下发的命令,再反弹shell到指定的地址,最后sleep指定的时间,此后继续循环。

0x03 取证总结

此次取证实践起因是天穹威胁监测系统检测到蜜罐系统中某摄像头遭受到一次成功攻击,我方研究人员利用设备漏洞获取到系统权限,之后检查了系统多种运行环境,发现了一可疑进程,固定了可疑进程的二进制程序进行了深入分析,最终摸清了攻击者所植入的木马的具体行为。

摄像头遭受到一次成功攻击,我方研究人员利用设备漏洞获取到系统权限,之后检查了系统多种运行环境,发现了一可疑进程,固定了可疑进程的二进制程序进行了深入分析,最终摸清了攻击者所植入的木马的具体行为。

接下来我将给各位同学划分一张学习计划表!

学习计划

那么问题又来了,作为萌新小白,我应该先学什么,再学什么?
既然你都问的这么直白了,我就告诉你,零基础应该从什么开始学起:

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

接下来我将给大家安排一个为期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。

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

如果你对网络安全入门感兴趣,那么你需要的话可以点击这里👉网络安全重磅福利:入门&进阶全套282G学习资源包免费分享!

学习资料分享

当然,只给予计划不给予学习资料的行为无异于耍流氓,这里给大家整理了一份【282G】的网络安全工程师从入门到精通的学习资料包,可点击下方二维码链接领取哦。

Logo

数据库是今天社会发展不可缺少的重要技术,它可以把大量的信息进行有序的存储和管理,为企业的数据处理提供了强大的保障。

更多推荐