linux平台下可疑程序分析
对可疑恶意代码的取证需要在安全和可靠的环境中进行,应将可疑文件放置在隔离环境或者沙箱系统网络中。
检查恶意程序的准则:
建立环境基准
VMware建立模拟环境
分析之前,首先保留受害系统在可疑代码运行前的快照
同时也需要运行一个可对初始化时的系统状态和代码执行后的系统状态进行比较的工具。
- Open Source Tripwire工具:用于监控数据完整性以及在主机系统上指定的文件的变化。
- 需要运行在数据库初始化模式,创建系统最开始的正常或异常状态的快照,使用 tripwire -m -i (或者 –init)命令才能进入数据库初始化模式。
- Advanced Intrusion Detection Environment(AIDE):用于入侵检测的一款文件完整性监控工具,使用数据库存放主机系统的各种文件的属性信息。
- OSIRIS工具:可以监控一个或多个主机系统的改变,更能辨别出导致系统崩溃或错误的改变。
- SAMHAIN工具:是一个跨平台的开源主机入侵检测系统。它的功能包括文件完整性检查,rookit检测,端口监控,检测恶意SUID程序以及隐藏进程等。
- Nagios 工具:它是一个开源的系统和网络监控程序,可以监控用户指定的主机和服务,同时当发现问题或系统改变时报警。
- Another File Integrity Checker(AFICK):用于监控主机系统的变化。
- FCheck:开源的Perl脚本程序,通过比较系统快照能够进行入侵检测和加强Linux/Unix系统安全策略
- Integrity:文件完整性验证方面比tripwire 和aide 更好。
执行前的准备:系统和网络监控
- 需要监控被感染者系统的5个方面:文件系统,系统调用,运行的进程,/proc目录,以及网络行为(IDS)
- 被动的系统和网络监控:Tripwire工具
- 主动的系统和网络监控:部署工具捕获系统调用,进程活动,文件系统活动,以及网络活动
- 系统监视:监控系统和库函数的调用,工具:Strace和Itrace
- 进程活动和相关/proc/\信息:工具:top,ps,pstree等命令
- 文件系统活动:工具:lsof命令
- 捕获网络流量:工具:tcpdump,wireshark
- 网络可视化,显示网络流量的高层图景,全局试图:工具:Etherape一个开源图形界面的网络分析器。
- 端口: 工具netstat命令
- 异常检测和基于事件的入侵检测系统:
- 部署网络入侵检查系统(NIDS):Snort 最为流行。
执行可疑程序
- 当可疑程序运行之后,需要再次计算程序的hash值,因为恶意代码在执行过程中常常会把自身的一个位置移动到另外一个位置,并隐藏新的程序。
进程监视:监控运行库和系统调用
- 使用Strace,Itrace和gdb监控可疑程序
进程评估:监测正在运行的程序
- 使用top评估系统使用情况
- 使用ps检测正在运行的进程
- 使用pstree监测正在运行的进程
- 查看进程内存映射,/proc/\/maps文件
- strings查看内存字符串
监测网络连接和端口
- netstat -an命令显示打开的网络连接,如本地端口,远程主机地址和端口及网络状态
- netstat -anp命令显示网络套接字相关的进程和PID
监测打开的文件和网络套接字
- lsof -p显示进程PID,-i检查被感染系统的所有网络连接
- lsof -iUDP 选项显示所有打开UDP端口相关进程
- lsof -iTCP选项显示所有带卡TCP端口的相关进程。
探测/proc目录
反混淆:从壳中提取样本
再次分析文件特征:重新检查未加壳样本
环境调整
- 可以修改/etc/hosts文件来修改需要解析的主机名和IP间的对应关系。
控制恶意样本
操纵恶意样本
探索并验证样本的功能和目的
事件重现:网络流量捕获,文件完整性和IDS分析
对感染主机进行端口扫描和漏洞扫描
- nmap工具
扫描rookit
- 扫描工具:chkrootkit,rootkithunter或者Rootcheck
- 在样本行为分析阶段对被感染系统进行监控时,不能使用rootkit扫描工具,因为可能导致主机完整性检查系统的监控日志出现误报
附加探索:静态技术
- Objdump工具