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

如何查出黑客所在

如何查出黑客所在    1.用w指令查看系統信息 $w 9:01pm up 10:08, 1 user, load average: 0.08, 0.06, 0.05 User tty login@ idle JCPU PCPU what notes console 10:54am 9days 28:04 23:29 /usr/dt/bin/dtscreen -mode blank notes pts/2 10:54am 10:07 /sbin/sh notes pts/4 10:54am 10:06 /sbin/sh notes pts/5 10:56am 9:59 /sbin/sh    在w顯示信息的最開頭是發出w命令的時間、系統啟動後的時間、及注冊在系統的用戶數。 最後的三個數表示平均負載,即使用系統資源的程度,使用w命令給系統增加了0.08負載。 其他兩個數字分別表示在最後5分鐘及十五分鐘內系統的平均負載量。 注意:當有人在猜passWord時,將會大大增加系統的平均負載。    2.進程記帳    Unix 系統可以通過設置選項來讓核心在每個進程結束時產生一個記錄。這些記錄所產生的報告被稱為進程記帳。它包括進程使用資源的信息,以及所執行的命令名。如果運行 的是調整用戶id程序,則還包括用戶名等。系統管理員可根據進程記帳的CPU時間讓用戶交納上機費,也可用進程記帳來觀察某一用戶執行了哪些命令。 進程記帳和審計是兩碼事,審計是監視對安全性敏感的事件。進程記帳並不記下所執行 命令的參數,所以無法知道某一命令修改了哪個文件,甚至也不知道此命令的執行是否成 功。但系統管理員仍然可以在進程記帳中找出某些線索。 基於System V的系統和基於BSD的系統在進程記帳方面所采納的方法不同,命令也不 一樣。    2.1 System V記帳    在System V 中,進程記帳保存在/usr/adm/pactt文件中。root可運行/usr/lib/acct/startup 來啟動進程記帳。記帳信息的日常處理可用runacct命令來做,它會壓縮pacct文件。每月 的處理由shell程序monacct來完成。這兩個程序都在/usr/lib/acct目錄下。 acctcom 命令可用來搜索pacct中的內容,並產生報告。例如:查找用戶"tommy"在 10:00 至11:30這段時間內所執行的全部命令。見下表: $acctcom -u tommy -s 10:00 -e 11:30 START BEF: Sat Oct 10 11:30:00 1998 END AFTER: Sat Oct 10 10:00:00 1998 COMMAND START END REAL CPU MEAN NAME USER TTYNAME TIME TIME (SECS) (SECS) SIZE(K) cat tommy pts/3 11:01:13 11:01:13 0.02 0.02 492.00 mail tommy pts/3 11:01:13 11:01:13 0.02 0.02 876.00 clear tommy pts/3 11:01:14 11:01:14 0.03 0.01 744.00 ls tommy pts/3 11:01:16 11:01:16 0.03 0.03 776.00 date tommy pts/3 11:01:23 11:01:23 0.01 0.01 664.00    acctcom命令用來告訴系統管理員某一用戶干了些什麼,而不是正在干什麼,而且它指 列出了命令名,沒有參數。所以,從中發現一些線索,如可找出使用大量cpu時間的進程 (典型的是猜口令進程)。    可用shell程序runacct來產生幾個報告。這些報告存放在/usr/adm/acct/sum目錄下, 其文件名格式為rprtMMDD。報告的第一部分包含"變更"信息,如進程記帳啟動及關閉的 時間(關閉記帳可能是由於某人想隱藏某些活動),以及系統時間的改變。第二部分是每個 用戶注冊到系統的時間以及有關每個端口的報告,還包括了每個端口上"接通"和"斷開" 的次數。"接通"表示一次成功的注冊,"斷開"表示退出系統或注冊失敗。    大量的"斷開" 可能意味著有人在試驗"注冊名,口令"序列組試圖侵入系統中。 報告的最後一部分是有關用戶最後一次注冊的信息,這個最後注冊報告是隨著用戶的 不斷注冊、退出而時刻更新的。報告中還包括用戶名及最後的注冊時間,越早退出系統 的帳號排在越前。這個報告對於發現那些死帳號非常有用,管理員可能會在這裡發現一 些奇怪的事情如有人注冊到系統管理的帳號中(如bin或sys)。    2.2 BSD系統的記帳    BSD系統的進程記帳用/usr/etc/accton程序啟動。默認的記帳文件為/usr/adm/acct 只要啟動了進程記帳,該文件會增長得很快。BSD有兩條命令來處理記帳信息。第一條是 /usr/etc/ac,處理在usr/adm/wtmp文件中的注冊信息,第二條是 /usr/etc/sa,產生已用 命令的小結報告,保存在/usr/adm/savacct文件中。


   BSD系統中也有與acctcom類似的命令叫做lastcomm。lastcomm命令反向搜索/usr/adm/acct 文件,產生出與acctcom命令相似的結果。    BSD記帳系統也和System V一樣,有類似的缺陷(從安全性角度講),即不保留命令的參數。 並且,BSD系統沒有最後注冊的報告。    現在針對前面的兩點防衛措施,從攻的角度來看:    1.對與第一點中用w、who、last、ps等命令,hacker完全可以用程序將自己的記錄隱藏 起來,使管理員用以上幾個命令都查看不到。當然此時hacker已經把root的權限得到 手(如何得到,下章討論)。    2.就算最笨的hacker,當他無法隱藏自己時,他也會把整個記錄文件刪除掉,免得管理員 查到用什麼帳號從哪裡登錄進來,運行了些什麼指令。但顯而易見,雖然管理員此時 (沒安裝第三方的審記軟件時)不能知道誰人在哪裡發起攻擊,但也無疑地告訴管理員 "你的系統已經給攻破了"。   3.歷史文件: ksh、csh、sh、bash、zsh都可保存歷史文件。其文件如下: sh: .sh_history (sh 也即Bourne shell) csh: .history ksh: .sh_history bash: .bash_history zsh: .history    在運行sh和ksh的用戶的相應.profile中,加入HISTORY=100,可指定.sh_history 文件保存該用戶最近運行的100條記錄。 對於csh,則在.cshrc文件中加入, set history=100,則可。 用戶可以運行history指令來查看歷史文件中的內容。對於Ksh、sh 也可運行 tail -f .sh_history 來查看,其順序是從最近的運行的指令開始。 而C shell 是在退出才能更新文件,所以不能用tail來觀察Cshell執行了那些命令。 這些歷史文件比進程記帳更為有用,因為命令的參數也被保留下來,所以可通過執行 執行命令的上下文聯系察覺到用戶干了些什麼。但話又說回來,其實這只起到一定作用而 已。 BTW: .profile用於Bourne和Korn shell; .login和.cshrc用於C shell。    4.找出屬主為root且帶s位的程序:    以root身份執行以下的指令, 找出此類文件,看看是否有可疑的程序存在。 #find / -perm -4000 -exec /bin/ls -lab {} ";" 其實在以前post的文章 1284 "系統安全技術的研究" 已有討論過如何得到root shell 當hacker進入系統後,大部份是利用buffer overflow取得root shell 例如:solaris 中帶s位的fdformat,ufsdump,ping等;AIX中xlock;SGI中的xlock; digital中的dop;等等,都給hacker找出其漏洞。 當hacker利用這些big bugs取的root shell後,若其想以後還想入侵此系統的話, 當然是留下root shell的程序,此時hakcer也不關心原來的bugs是否給fix掉,他/她 不再需要利用bug了,只須運行自己留下的root shell即給。 以下給出得到root shell的簡單程序: #cat getrootshell.c void main(void) { setuid(0,0); execl("/bin/sh", "sh",0); } 編譯後得到bin文件。此時,還有重要的步驟沒做,whats it? look the following #cc -o getrootshell getrootshell.c #chmod 4777 getrootshell #chown root:other getrootshell #ls -al getrootshell -rwsrwxrwx 1 root other 5 Oct 12 06:14 getrootshell (注意全過程是在取的rootshell後,才可這樣做) 這樣hacker就在該系統中留下了後門,下次入來後就不需利用還沒fix的 fdformat,xlock,dop等bug 的程序了,直接運行getrootshell程序,就可跳成root了,想 干啥就干啥了。因此,管理員要查清此類型的文件。 現在從攻的角度來看上面兩點防衛措施: 1.對於history文件,當hacker進入系統後可以改變shell類型,來使保存他後來所有指 令的history文件失效。因此,當hacker用crack到的帳號進入系統後,第一條所敲的指令 是改變shell類型的指令. example in digital unix下: c:>telnet XXX.XXX.XXX.XXX Digital UNIX (center) (ttyp5) login: tommy Password: Last login: Sun Oct 11 22:43:51 from HPVC.com Digital UNIX V4.0A (Rev. 464); Sat Feb 7 19:54:12 GMT+0800 1998 The installation software has sUCcessfully installed your system.

There are logfiles that contain a record of your installation. These are: /var/adm/smlogs/install.cdf - configuration description file /var/adm/smlogs/install.log - general log file /var/adm/smlogs/install.FS.log - file system creation logs /var/adm/smlogs/setld.log - log for the setld(8) utility /var/adm/smlogs/fverify.log - verification log file center>chsh Old shell: /bin/sh New shell: ksh 其他系統不在此一一列舉。    2.對於類似getrootshell的bin文件,hacker也不會真的那麼愚蠢到起這個名字,且他們 會將此類型的程序藏在不易察覺的目錄下,如果不是老練的管理員是不會發現的,這會 在下節提到。 (注:一般來說,hacker不會把getrootshell文件刪除的,因為他也不能肯 定下次進入系統時那些bugs還是否可以利用,使其變root)



These are: /var/adm/smlogs/install.cdf - configuration description file /var/adm/smlogs/install.log - general log file /var/adm/smlogs/install.FS.log - file system creation logs /var/adm/smlogs/setld.log - log for the setld(8) utility /var/adm/smlogs/fverify.log - verification log file center>chsh Old shell: /bin/sh New shell: ksh 其他系統不在此一一列舉。    2.對於類似getrootshell的bin文件,hacker也不會真的那麼愚蠢到起這個名字,且他們 會將此類型的程序藏在不易察覺的目錄下,如果不是老練的管理員是不會發現的,這會 在下節提到。 (注:一般來說,hacker不會把getrootshell文件刪除的,因為他也不能肯 定下次進入系統時那些bugs還是否可以利用,使其變root)



Copyright © Linux教程網 All Rights Reserved