寻找Linux恶意软件的乐趣和旗帜

2021-09-13  本文已影响0人  Threathunter

来源:https://published-prd.lanyonevents.com/published/rsaus20/sessionsFiles/18130/2020_USA20_HT-R07_01_Hunting-Linux-Malware-for-Fun-and-Flags.pdf

https://www.rsaconference.com/library/presentation/usa/2020/hunting-linux-malware-for-fun-and-flags

一、调查的对象

二、文件系统

2.1 常见的文件元数据

1、名称 name

2、大小 Size

3、类型 Type

(1)常规文件 regular file

(2)目录 directory

(3)符号链接 symbolic link

(4)特殊(设备) specific (device)

4、所有者 ower

(1) user 用户

(2)group 组

5、访问权限 access rights

(1)读、写和执行 read、write和execute

(2)所有者、组和其他 Owner, group and others

6、时间戳Timestamps

(1)访问时间Access

(2)最后修改时间Last modification

(3)最后元数据修改时间Last metadata modification

(4)创建时间Creation date

2.2 查找新文件

1、ls -alt | head

列出最近在当前目录中修改的文件

2、stat $FILE

全部文件的细节,所有的时间都可以被篡改

3、find / -newermt 2019-10-28

—查找10月28日以后修改过的文件

—基于可被篡改的相同元数据

4、file $FILE

识别文件类型

5、包的完整性校验
(1) debsums

-基于dpkg的发行版(Debian, Ubuntu)

(2) rpm va

-基于rpm的发行版(RHEL, CentOS, Fedora)

三、日志

3.1使用auditd

1、Linux审计框架提供了一个审计系统,它可靠地收集关于系统上任何安全相关(或非安全相关)事件的信息。

2、内核的一部分

—内核编译时必须启用 或者有一个可加载的内核模块

—在大多数发行版中启用

3、日志系统调用和其他类型的事件

4、日志可以通过网络发送

auditctl:定义要记录的内容

ausearch:在日志文件中搜索

-日志是文本文件,所以grep和其他工具也可以很好地完成这项任务

3.2 离线文件系统

如果您不能访问正在运行的系统,但有分区的映像。

Capture捕捉:dd if=/dev/sda3 of=$IMAGE_FILE

-也可以通过SSH工作!

浏览Browse: mount -o loop,ro $IMAGE_FILE /mnt

四、系统内存

4.1分析活动进程

确定运行的进程:
– ps auxw

– top, htop

列出打开的文件和网络流

- lsof -p $PID

4.2 procfs

1、Procfs提供了很多有用的细节

2、安装在/ proc

3、每个进程在/proc/$PID上包含一个目录

procfs exe magic link

1、找到执行文件的路径:

ls -l /proc/$PID/exe

2、检索可执行文件,即使它已被删除:

cp /proc/$PID/exe malware.elf

procfs environ

1、/proc/$PID/environ包含进程的环境变量,以空字节null分隔

4.3进程停滞

在不破坏进程资源的情况下停止进程。

– kill -SIGSTOP $PID

恢复先前用SIGSTOP停止的进程

– kill -SIGCONT $PID

4.4 进程内存转储

1、获取Acquisition

– gcore $PID and cp /proc/$PID/exe malware.elf

2、其他获取工具

– memfetch from http://lcamtuf.coredump.cx

3、简单分析

– strings

4、深度分析

– gdb malware.elf $PID.core

4.5 内核内存

1、获取Acquisition

– VM snapshot

– LiME (Linux Memory Extractor)

2、分析Analysis

– Volatility Framework

3、仅在内核被恶意内核模块破坏时有用(rootkit)

五、网络

5.1 网络配置

1、转储iptables规则

– iptables-save

– ip6tables-save

5.2 网络捕获

1、获取Acquisition

– tcpdump -i eth0 -s 0 -w capture.pcap

2、分析Analysis

– tshark -r capture.pcap

– Wireshark

– bro -r capture.pcap

注意:bro改名为zeek了

六、恶意代码分析

6.1 两种方法

1、基于脚本的恶意软件
– PHP

– Perl

– Python

2、恶意软件编译

- ELF可执行文件

6.2基于脚本的恶意代码

可以混淆

——删除空格

——变量重命名

6.3逆向基于脚本的恶意软件

1、大多数编程语言都有一个整理代码的工具:

– Perl -> perltidy

– Python -> PythonTidy,https://pypi.org/project/PythonTidy/

– PHP -> php-cs-fixer

2、使用搜索和替换重命名变量

6.4基于脚本的恶意软件

字符串和文字可以打包

6.5逆向基于脚本的恶意软件

1、总是在一个孤立的环境中工作

2、使用交互式提示来评估部分代码

– Perl -> perl -de1

– Python -> ipython

– PHP -> php -a

3、将eval替换为print

6.6.编译的恶意代码

1、ELF可在系统的本机体系结构中执行

2、更难以理解

3、也可以打包

静态分析Statically

– strings

– radare2

– IDA Pro ($),收费

动态分析Dynamically

– strace

– ltrace for dynamically linked binaries

– gdb, or any other debugger you like

– gcore

当玩恶意软件时,总是在一个孤立的环境中工作

上一篇下一篇

猜你喜欢

热点阅读